diff --git a/DEPS b/DEPS
index 9129ddc..30566ca0 100644
--- a/DEPS
+++ b/DEPS
@@ -310,19 +310,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': '06033b7da9ca8ad14add7350b989ced3b0848ba6',
+  'skia_revision': '6f86d51c4f64695958fc3e4d576675a830251cf6',
   # 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': 'c6b025877eaae1a082b18be29542b6986c9965d2',
+  'v8_revision': '05abec965ac191a4884daefef5fcf3dd0315b336',
   # 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': '493bab09b564f9cfa6333f92baf3abadcb5a57db',
+  'angle_revision': 'ba3b4515954d90f9242c4da165b064544e08d394',
   # 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': '9e96423f7ed2c22eea3274e3f4c20dd5ca80a18c',
+  'swiftshader_revision': '84c3e65304cf599d20a93b5132e4fe39421a2b10',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -381,7 +381,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': 'fcf15b9b7bb20025fee0cff0c7c4ec8b867faf7a',
+  'catapult_revision': '0a4b3b9b9c23669dfb1a3c8a11d055c1fd2f37c3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -425,11 +425,11 @@
   # 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': 'cd8752b770621084656f8bd514383e3884c2eb2f',
+  'dawn_revision': '21920ec7f739bbf505bb64c8f81fc620fb1e349a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': 'a80d5908299d3d303b7608207e03320662f4d55f',
+  'quiche_revision': 'a88dccbb9493307c870d44d8c008dade6772d240',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
@@ -896,7 +896,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'WRaObXk1GaVFzOjlbAOWop0u9_0vhKYryfBkYVm8gAYC',
+          'version': 'G5AUfDy_uRpdCAqB3iIlTUnBSr-L_FW-SChJxqb_YUsC',
         },
       ],
       'dep_type': 'cipd',
@@ -1103,7 +1103,7 @@
     Var('chromium_git') + '/angle/angle.git' + '@' +  Var('angle_revision'),
 
   'src/third_party/content_analysis_sdk/src':
-    Var('chromium_git') + '/external/github.com/chromium/content_analysis_sdk.git' + '@' + 'c2d02ffaef3e21df65640bb84cde6ac90d45303e',
+    Var('chromium_git') + '/external/github.com/chromium/content_analysis_sdk.git' + '@' + '332ae1cadbcbd46790e1a7f566d01cc18846902a',
 
   'src/third_party/dav1d/libdav1d':
     Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + '87f9a81cd770e49394a45deca7a3df41243de00b',
@@ -1208,7 +1208,7 @@
 
   # For Linux and Chromium OS.
   'src/third_party/cros_system_api': {
-      'url': Var('chromium_git') + '/chromiumos/platform2/system_api.git' + '@' + '6365a697667259c41b193f25b2f05205ebf443d8',
+      'url': Var('chromium_git') + '/chromiumos/platform2/system_api.git' + '@' + 'a37ecce4aa23ec39abdbb14e32ac16ede5671613',
       'condition': 'checkout_linux',
   },
 
@@ -1612,7 +1612,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'c47b09bb32e6126d4022348268830e74b682cf0d',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '3a9f96aecc5ffe0b5a9d6d540653468f0b215842',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1666,7 +1666,7 @@
       'packages': [
           {
               'package': 'chromium/third_party/r8',
-              'version': '9D5mlKXcvEeq8EeDZf3NXnhO5BuGy0eDy5q1hLou4WwC',
+              'version': 'vKZR8R88hGbFuOFG9Z_QBBK7TqYCAub34XjJ2TAwhW4C',
           },
       ],
       'condition': 'checkout_android',
@@ -1797,7 +1797,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'e77a9f259c7e08893b11a1296c3a0b2d7821db42',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'a1d035655eb6e3a73ae5ab16882987327d7bc643',
+    Var('webrtc_git') + '/src.git' + '@' + '56b96ffe6a036d4b6ebb2f4eb9fadb009dbcf08d',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1870,7 +1870,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@6993ddc7be36506f5c59e7ca3fe294617929cd5e',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@bbf67923f54118d3d01be87fe51d16b29567e3a6',
     'condition': 'checkout_src_internal',
   },
 
@@ -1900,7 +1900,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': '7ago_T4m4VlIxt_jm0P5kN2BQ6gJV4hexa6TKZqJo7YC',
+        'version': 'u8ZmJ_5zOA-x4I8vhtIHkXzcQ15IpRNkV1DeWhJkxIUC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/app_list/app_list_metrics.h b/ash/app_list/app_list_metrics.h
index 58b20b3..59aa608 100644
--- a/ash/app_list/app_list_metrics.h
+++ b/ash/app_list/app_list_metrics.h
@@ -30,16 +30,6 @@
 // needed in tests.
 ASH_EXPORT extern const char kContinueSectionFilesRemovedInSessionHistogram[];
 
-// The different ways to create a new page in the apps grid. These values are
-// written to logs. New enum values can be added, but existing enums must never
-// be renumbered or deleted and reused.
-enum class AppListPageCreationType {
-  kDraggingApp = 0,
-  kMovingAppWithKeyboard = 1,
-  kSyncOrInstall = 2,
-  kMaxValue = kSyncOrInstall,
-};
-
 // These are used in histograms, do not remove/renumber entries. If you're
 // adding to this enum with the intention that it will be logged, update the
 // AppListZeroStateSearchResultUserActionType enum listing in
diff --git a/ash/app_list/views/apps_grid_view.h b/ash/app_list/views/apps_grid_view.h
index 66849e9d..4f41e8e2 100644
--- a/ash/app_list/views/apps_grid_view.h
+++ b/ash/app_list/views/apps_grid_view.h
@@ -533,7 +533,6 @@
   }
   const gfx::Point& last_drag_point() const { return last_drag_point_; }
   void set_last_drag_point(const gfx::Point& p) { last_drag_point_ = p; }
-  bool handling_keyboard_move() const { return handling_keyboard_move_; }
 
   AppListViewDelegate* app_list_view_delegate() const {
     return app_list_view_delegate_;
diff --git a/ash/app_list/views/apps_grid_view_unittest.cc b/ash/app_list/views/apps_grid_view_unittest.cc
index 10f3516..849d9e0 100644
--- a/ash/app_list/views/apps_grid_view_unittest.cc
+++ b/ash/app_list/views/apps_grid_view_unittest.cc
@@ -2579,41 +2579,6 @@
   EXPECT_EQ(0, GetPaginationModel()->selected_page());
 }
 
-// Tests that a page can be deleted if a lonely app is moved down or right to
-// another page.
-TEST_F(AppsGridViewTest, ControlArrowUpOrLeftRemovesPage) {
-  base::HistogramTester histogram_tester;
-  // Move an app so it is by itself on page 1.
-  model_->PopulateApps(GetTilesPerPage(0));
-  AppListItemView* moving_item =
-      GetItemViewInTopLevelGrid(GetTilesPerPage(0) - 1);
-  apps_grid_view_->GetFocusManager()->SetFocusedView(moving_item);
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-  histogram_tester.ExpectBucketCount("Apps.AppListPageSwitcherSource", 7, 1);
-  EXPECT_EQ(1, GetPaginationModel()->selected_page());
-  EXPECT_EQ(2, GetPaginationModel()->total_pages());
-
-  // Move the app up, test that the page is deleted.
-  SimulateKeyPress(ui::VKEY_UP, ui::EF_CONTROL_DOWN);
-
-  histogram_tester.ExpectBucketCount("Apps.AppListPageSwitcherSource", 7, 2);
-  EXPECT_EQ(0, GetPaginationModel()->selected_page());
-  EXPECT_EQ(1, GetPaginationModel()->total_pages());
-
-  // Move the app to be by itself again on page 1.
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-  histogram_tester.ExpectBucketCount("Apps.AppListPageSwitcherSource", 7, 3);
-  EXPECT_EQ(1, GetPaginationModel()->selected_page());
-  EXPECT_EQ(2, GetPaginationModel()->total_pages());
-
-  // Move the app left, test that the page is deleted.
-  SimulateKeyPress(ui::VKEY_LEFT, ui::EF_CONTROL_DOWN);
-
-  histogram_tester.ExpectBucketCount("Apps.AppListPageSwitcherSource", 7, 4);
-  EXPECT_EQ(0, GetPaginationModel()->selected_page());
-  EXPECT_EQ(1, GetPaginationModel()->total_pages());
-}
-
 // Tests that moving a lonely app on the last page down is a no-op when there
 // are no pages below.
 TEST_P(AppsGridViewClamshellAndTabletTest,
@@ -2655,47 +2620,6 @@
   }
 }
 
-// Test that moving an item down or right when it is by itself on a page with a
-// page below results in the page deletion.
-TEST_F(AppsGridViewTest, ControlArrowDownOrRightRemovesPage) {
-  // Move an app so it is by itself on page 1, with another app on page 2.
-  model_->PopulateApps(GetTilesPerPage(0));
-  AppListItemView* moving_item =
-      GetItemViewInTopLevelGrid(GetTilesPerPage(0) - 1);
-  apps_grid_view_->GetFocusManager()->SetFocusedView(moving_item);
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-  SimulateKeyPress(ui::VKEY_UP);
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-  SimulateKeyPress(ui::VKEY_UP);
-  // The lonely app is selected on page 1, with a page below it containing one
-  // app.
-  EXPECT_EQ(1, GetPaginationModel()->selected_page());
-  EXPECT_EQ(3, GetPaginationModel()->total_pages());
-
-  // Test that moving the app on page 1 down, deletes the second page and
-  // creates a final page with 2 apps.
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-
-  EXPECT_EQ(1, GetPaginationModel()->selected_page());
-  EXPECT_EQ(2, GetPaginationModel()->total_pages());
-  EXPECT_EQ(2, test_api_->AppsOnPage(1));
-
-  // Create a third page, with an app by itself.
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-  SimulateKeyPress(ui::VKEY_UP);
-  EXPECT_EQ(1, GetPaginationModel()->selected_page());
-  EXPECT_EQ(3, GetPaginationModel()->total_pages());
-
-  // Test that moving the app right moves the selected app to the third page,
-  // and the second page is deleted.
-  SimulateKeyPress(ui::VKEY_RIGHT, ui::EF_CONTROL_DOWN);
-
-  EXPECT_EQ(1, GetPaginationModel()->selected_page());
-  EXPECT_EQ(2, GetPaginationModel()->total_pages());
-  EXPECT_EQ(2, test_api_->AppsOnPage(1));
-}
-
 // Tests that control + shift + arrow puts |selected_item_| into a folder or
 // creates a folder if one does not exist.
 TEST_P(AppsGridViewClamshellAndTabletTest, ControlShiftArrowFoldersItemBasic) {
@@ -4523,36 +4447,6 @@
   EXPECT_EQ(1, GetHapticTickEventsCount());
 }
 
-TEST_F(AppsGridViewTest, CreateANewPageWithKeyboardLogsMetrics) {
-  base::HistogramTester histogram_tester;
-  model_->PopulateApps(2);
-
-  // Select first app and move it with the keyboard down to create a new page.
-  AppListItemView* moving_item = GetItemViewInTopLevelGrid(0);
-  apps_grid_view_->GetFocusManager()->SetFocusedView(moving_item);
-  SimulateKeyPress(ui::VKEY_DOWN, ui::EF_CONTROL_DOWN);
-  SimulateKeyReleased(ui::VKEY_DOWN, ui::EF_NONE);
-
-  ASSERT_EQ(GetPaginationModel()->total_pages(), 2);
-  histogram_tester.ExpectBucketCount(
-      "Apps.AppList.AppsGridAddPage",
-      AppListPageCreationType::kMovingAppWithKeyboard, 1);
-}
-
-TEST_F(AppsGridViewTest, CreateANewPageByAddingAppLogsMetrics) {
-  base::HistogramTester histogram_tester;
-  model_->PopulateApps(GetTilesPerPage(0));
-
-  // Add an item to simulate installing or syncing, the metric should be
-  // recorded.
-  model_->CreateAndAddItem("Extra App");
-
-  ASSERT_EQ(GetPaginationModel()->total_pages(), 2);
-  histogram_tester.ExpectBucketCount("Apps.AppList.AppsGridAddPage",
-                                     AppListPageCreationType::kSyncOrInstall,
-                                     1);
-}
-
 // Test that the background cards remain stacked as the bottom layer during
 // an item drag. The adding of views to the apps grid during a drag (e.g. ghost
 // image view) can cause a reorder of layers.
diff --git a/ash/app_list/views/paged_apps_grid_view.cc b/ash/app_list/views/paged_apps_grid_view.cc
index 2659e93..fe01a41 100644
--- a/ash/app_list/views/paged_apps_grid_view.cc
+++ b/ash/app_list/views/paged_apps_grid_view.cc
@@ -809,32 +809,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 // PaginationModelObserver:
 
-void PagedAppsGridView::TotalPagesChanged(int previous_page_count,
-                                          int new_page_count) {
-  // Don't record from folder.
-  if (IsInFolder())
-    return;
-
-  // Initial setup for the AppList starts with -1 pages. Ignore the page count
-  // change resulting from the initialization of the view.
-  if (previous_page_count <= 0)
-    return;
-
-  // Ignore page count changes after item list has been reset (e.g. during
-  // shutdown).
-  if (!item_list() || !item_list()->item_count())
-    return;
-
-  if (previous_page_count < new_page_count) {
-    AppListPageCreationType type = AppListPageCreationType::kSyncOrInstall;
-    if (handling_keyboard_move())
-      type = AppListPageCreationType::kMovingAppWithKeyboard;
-    else if (IsDragging())
-      type = AppListPageCreationType::kDraggingApp;
-    UMA_HISTOGRAM_ENUMERATION("Apps.AppList.AppsGridAddPage", type);
-  }
-}
-
 void PagedAppsGridView::SelectedPageChanged(int old_selected,
                                             int new_selected) {
   items_container()->layer()->SetTransform(gfx::Transform());
diff --git a/ash/app_list/views/paged_apps_grid_view.h b/ash/app_list/views/paged_apps_grid_view.h
index b9f1c28..9f40e6f1 100644
--- a/ash/app_list/views/paged_apps_grid_view.h
+++ b/ash/app_list/views/paged_apps_grid_view.h
@@ -139,7 +139,6 @@
   base::ScopedClosureRunner LockAppsGridOpacity() override;
 
   // PaginationModelObserver:
-  void TotalPagesChanged(int previous_page_count, int new_page_count) override;
   void SelectedPageChanged(int old_selected, int new_selected) override;
   void TransitionStarting() override;
   void TransitionStarted() override;
diff --git a/ash/components/arc/arc_features.cc b/ash/components/arc/arc_features.cc
index 59a7d8e..1b2cc3756 100644
--- a/ash/components/arc/arc_features.cc
+++ b/ash/components/arc/arc_features.cc
@@ -8,27 +8,32 @@
 
 // Controls ACTION_BOOT_COMPLETED broadcast for third party applications on ARC.
 // When disabled, third party apps will not receive this broadcast.
-const base::Feature kBootCompletedBroadcastFeature{
-    "ArcBootCompletedBroadcast", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kBootCompletedBroadcastFeature,
+             "ArcBootCompletedBroadcast",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls experimental Custom Tabs feature for ARC.
-const base::Feature kCustomTabsExperimentFeature{
-    "ArcCustomTabsExperiment", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCustomTabsExperimentFeature,
+             "ArcCustomTabsExperiment",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to handle files with unknown size.
-const base::Feature kDocumentsProviderUnknownSizeFeature{
-    "ArcDocumentsProviderUnknownSize", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDocumentsProviderUnknownSizeFeature,
+             "ArcDocumentsProviderUnknownSize",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls ARC Nearby Share support.
 // When enabled, Android apps will show the Nearby Share as a share target in
 // its sharesheet.
-const base::Feature kEnableArcNearbyShare{"ArcNearbySharing",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableArcNearbyShare,
+             "ArcNearbySharing",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether files shared to ARC Nearby Share are shared through the
 // FuseBox filesystem, instead of creating a temporary copy.
-const base::Feature kEnableArcNearbyShareFuseBox{
-    "ArcNearbyShareFuseBox", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableArcNearbyShareFuseBox,
+             "ArcNearbyShareFuseBox",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether crosvm for ARCVM does per-VM core scheduling on devices with
 // MDS/L1TF vulnerabilities. When this feature is disabled, crosvm does per-vCPU
@@ -42,45 +47,51 @@
 // 3) Monitor arc.Boot.vm at go/stainless after Chrome is rolled.
 // 4) Ask ARC team (//ash/components/arc/OWNERS) to update arc.CPUSet.vm test
 //    so the Tast test uses the updated ArcEnablePerVmCoreScheduling setting.
-const base::Feature kEnablePerVmCoreScheduling{
-    "ArcEnablePerVmCoreScheduling", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEnablePerVmCoreScheduling,
+             "ArcEnablePerVmCoreScheduling",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether to use ARC TTS caching to optimize ARC boot.
-const base::Feature kEnableTTSCaching{"ArcEnableTTSCaching",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableTTSCaching,
+             "ArcEnableTTSCaching",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to use pregenerated ARC TTS cache to optimize ARC boot and
 // also whether or not TTS cache is used.
-const base::Feature kEnableTTSCacheSetup{"ArcEnableTTSCacheSetup",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableTTSCacheSetup,
+             "ArcEnableTTSCacheSetup",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether we should delegate audio focus requests from ARC to Chrome.
-const base::Feature kEnableUnifiedAudioFocusFeature{
-    "ArcEnableUnifiedAudioFocus", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableUnifiedAudioFocusFeature,
+             "ArcEnableUnifiedAudioFocus",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether ARC handles unmanaged->managed account transition.
-const base::Feature kEnableUnmanagedToManagedTransitionFeature{
-    "ArcEnableUnmanagedToManagedTransitionFeature",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableUnmanagedToManagedTransitionFeature,
+             "ArcEnableUnmanagedToManagedTransitionFeature",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls ARC Unspecialized Application Processes.
 // When enabled, Android creates a pool of processes
 // that will start applications so that zygote doesn't have to wake.
-const base::Feature kEnableUsap{"ArcEnableUsap",
-                                base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableUsap, "ArcEnableUsap", base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to use virtio-blk for Android /data instead of using
 // virtio-fs.
-const base::Feature kEnableVirtioBlkForData{"ArcEnableVirtioBlkForData",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableVirtioBlkForData,
+             "ArcEnableVirtioBlkForData",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to pop up ghost window for ARC app before fixup finishes.
-const base::Feature kFixupWindowFeature{"ArcFixupWindowFeature",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kFixupWindowFeature,
+             "ArcFixupWindowFeature",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Used for overriding config params for the virtio-blk feature above.
-const base::Feature kVirtioBlkDataConfigOverride{
-    "ArcVirtioBlkDataConfigOverride", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVirtioBlkDataConfigOverride,
+             "ArcVirtioBlkDataConfigOverride",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to use the LVM-provided disk as the backend device for
 // Android /data instead of using the concierge-provided disk.
@@ -88,21 +99,23 @@
     &kVirtioBlkDataConfigOverride, "use_lvm", false};
 
 // Indicates whether LVM application containers feature is supported.
-const base::Feature kLvmApplicationContainers{
-    "ArcLvmApplicationContainers", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLvmApplicationContainers,
+             "ArcLvmApplicationContainers",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls experimental file picker feature for ARC.
-const base::Feature kFilePickerExperimentFeature{
-    "ArcFilePickerExperiment", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kFilePickerExperimentFeature,
+             "ArcFilePickerExperiment",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether ARCVM can request resourced make more resources available
 // for a currently-active ARCVM game.
-const base::Feature kGameModeFeature{
-    "ArcGameModeFeature", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kGameModeFeature,
+             "ArcGameModeFeature",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether the guest zram is enabled. This is only for ARCVM.
-const base::Feature kGuestZram{"ArcGuestZram",
-                               base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kGuestZram, "ArcGuestZram", base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls the size of the guest zram.
 const base::FeatureParam<int> kGuestZramSize{&kGuestZram, "size", 0};
@@ -113,12 +126,14 @@
 
 // Enables/disables mlock() of guest memory for ARCVM.
 // Often used in combination with kGuestZram.
-const base::Feature kLockGuestMemory{"ArcLockGuestMemory",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLockGuestMemory,
+             "ArcLockGuestMemory",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Control properties of Logd at boot time. This is only for ARCVM.
-const base::Feature kLogdConfig{"ArcGuestLogdConfig",
-                                base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLogdConfig,
+             "ArcGuestLogdConfig",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls the size in KB of logd. Only a few sizes are supported,
 // see kLogdConfigSize* private constants in arc_vm_client_adapter.cc.
@@ -128,77 +143,90 @@
 const base::FeatureParam<int> kLogdConfigSize{&kLogdConfig, "size", 0};
 
 // Controls keyboard shortcut helper integration feature in ARC.
-const base::Feature kKeyboardShortcutHelperIntegrationFeature{
-    "ArcKeyboardShortcutHelperIntegration", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kKeyboardShortcutHelperIntegrationFeature,
+             "ArcKeyboardShortcutHelperIntegration",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Toggles between native bridge implementations for ARC.
 // Note, that we keep the original feature name to preserve
 // corresponding metrics.
-const base::Feature kNativeBridgeToggleFeature{
-    "ArcNativeBridgeExperiment", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kNativeBridgeToggleFeature,
+             "ArcNativeBridgeExperiment",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, utility processes are spawned to perform hardware decode
 // acceleration on behalf of ARC++/ARCVM instead of using the GPU process.
-const base::Feature kOutOfProcessVideoDecoding{
-    "OutOfProcessVideoDecoding", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOutOfProcessVideoDecoding,
+             "OutOfProcessVideoDecoding",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls ARC picture-in-picture feature. If this is enabled, then Android
 // will control which apps can enter PIP. If this is disabled, then ARC PIP
 // will be disabled.
-const base::Feature kPictureInPictureFeature{"ArcPictureInPicture",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kPictureInPictureFeature,
+             "ArcPictureInPicture",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls ARCVM real time vcpu feature on a device with 2 logical cores
 // online.
 // When you change the default, you also need to change the chromeExtraAgas
 // in tast-tests/src/chromiumos/tast/local/bundles/cros/arc/cpu_set.go to
 // match it to the new default.
-const base::Feature kRtVcpuDualCore{"ArcRtVcpuDualCore",
-                                    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRtVcpuDualCore,
+             "ArcRtVcpuDualCore",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls ARCVM real time vcpu feature on a device with 3+ logical cores
 // online.
 // When you change the default, you also need to modify the chromeExtraAgas
 // in tast-tests/src/chromiumos/tast/local/bundles/cros/arc/cpu_set.go to
 // add ArcRtVcpuQuadCore there. Otherwise, the test will start failing.
-const base::Feature kRtVcpuQuadCore{"ArcRtVcpuQuadCore",
-                                    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRtVcpuQuadCore,
+             "ArcRtVcpuQuadCore",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, tracing raw files are saved in order to help debug failures.
-const base::Feature kSaveRawFilesOnTracing{"ArcSaveRawFilesOnTracing",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSaveRawFilesOnTracing,
+             "ArcSaveRawFilesOnTracing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, unclaimed USB device will be attached to ARCVM by default.
-const base::Feature kUsbDeviceDefaultAttachToArcVm{
-    "UsbDeviceDefaultAttachToArcVm", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUsbDeviceDefaultAttachToArcVm,
+             "UsbDeviceDefaultAttachToArcVm",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls ARC USB Storage UI feature.
 // When enabled, chrome://settings and Files.app will ask if the user wants
 // to expose USB storage devices to ARC.
-const base::Feature kUsbStorageUIFeature{"ArcUsbStorageUI",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUsbStorageUIFeature,
+             "ArcUsbStorageUI",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls ARC dalvik memory profile in ARCVM.
 // When enabled, Android tries to use dalvik memory profile tuned based on the
 // device memory size.
-const base::Feature kUseDalvikMemoryProfile{"ArcUseDalvikMemoryProfile",
-                                            base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUseDalvikMemoryProfile,
+             "ArcUseDalvikMemoryProfile",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether the system/vendor images are mounted without specifying a
 // block size.
-const base::Feature kUseDefaultBlockSize{"ArcVmUseDefaultBlockSize",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUseDefaultBlockSize,
+             "ArcVmUseDefaultBlockSize",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether ARC uses VideoDecoder-backed video decoding.
 // When enabled, GpuArcVideoDecodeAccelerator will use VdVideoDecodeAccelerator
 // to delegate decoding tasks to VideoDecoder implementations, instead of using
 // VDA implementations created by GpuVideoDecodeAcceleratorFactory.
-const base::Feature kVideoDecoder{"ArcVideoDecoder",
-                                  base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kVideoDecoder,
+             "ArcVideoDecoder",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Feature to continuously log PSI memory pressure data to Chrome.
-const base::Feature kVmMemoryPSIReports{"ArcVmMemoryPSIReports",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kVmMemoryPSIReports,
+             "ArcVmMemoryPSIReports",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls how frequently memory pressure data is logged
 const base::FeatureParam<int> kVmMemoryPSIReportsPeriod{&kVmMemoryPSIReports,
@@ -209,8 +237,9 @@
 //  min(max_mib, RAM + shift_mib)
 // If disabled, memory is sized by concierge which, at the time of writing, uses
 // RAM - 1024 MiB.
-const base::Feature kVmMemorySize{"ArcVmMemorySize",
-                                  base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVmMemorySize,
+             "ArcVmMemorySize",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls the amount to "shift" system RAM when sizing ARCVM. The default
 // value of 0 means that ARCVM's memory will be thr same as the system.
@@ -235,8 +264,9 @@
 // we want to stop LMKD killing things out of turn. We do this by making sure
 // ARCVM never has it's kernel page cache drop below the level that LMKD will
 // start killing.
-const base::Feature kVmBalloonPolicy{"ArcVmBalloonPolicy",
-                                     base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kVmBalloonPolicy,
+             "ArcVmBalloonPolicy",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // The maximum amount of kernel page cache ARCVM can have when ChromeOS is under
 // moderate memory pressure. 0 for no limit.
@@ -258,13 +288,15 @@
 
 // Controls experimental key GMS Core and related services protection against to
 // be killed by low memory killer in ARCVM.
-const base::Feature kVmGmsCoreLowMemoryKillerProtection{
-    "ArcVmGmsCoreLowMemoryKillerProtection", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kVmGmsCoreLowMemoryKillerProtection,
+             "ArcVmGmsCoreLowMemoryKillerProtection",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls experimental key to enable pre-ANR handling for BroadcastQueue in
 // ARCVM.
-const base::Feature kVmBroadcastPreNotifyANR{"ArcVmBroadcastPreAnrHandling",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVmBroadcastPreNotifyANR,
+             "ArcVmBroadcastPreAnrHandling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If set, enable responsive balloon sizing. Concierge will listen on a VSOCK
 // for connections from LMKD in Android. When LMKD is about to kill an App, it
diff --git a/ash/components/arc/arc_features.h b/ash/components/arc/arc_features.h
index b200bd13..8ebdeddf 100644
--- a/ash/components/arc/arc_features.h
+++ b/ash/components/arc/arc_features.h
@@ -13,55 +13,55 @@
 namespace arc {
 
 // Please keep alphabetized.
-extern const base::Feature kBootCompletedBroadcastFeature;
-extern const base::Feature kCustomTabsExperimentFeature;
-extern const base::Feature kDocumentsProviderUnknownSizeFeature;
-extern const base::Feature kEnableArcNearbyShare;
-extern const base::Feature kEnableArcNearbyShareFuseBox;
-extern const base::Feature kEnablePerVmCoreScheduling;
-extern const base::Feature kEnableTTSCaching;
-extern const base::Feature kEnableTTSCacheSetup;
-extern const base::Feature kEnableUnifiedAudioFocusFeature;
-extern const base::Feature kEnableUnmanagedToManagedTransitionFeature;
-extern const base::Feature kEnableUsap;
-extern const base::Feature kEnableVirtioBlkForData;
-extern const base::Feature kFixupWindowFeature;
-extern const base::Feature kVirtioBlkDataConfigOverride;
+BASE_DECLARE_FEATURE(kBootCompletedBroadcastFeature);
+BASE_DECLARE_FEATURE(kCustomTabsExperimentFeature);
+BASE_DECLARE_FEATURE(kDocumentsProviderUnknownSizeFeature);
+BASE_DECLARE_FEATURE(kEnableArcNearbyShare);
+BASE_DECLARE_FEATURE(kEnableArcNearbyShareFuseBox);
+BASE_DECLARE_FEATURE(kEnablePerVmCoreScheduling);
+BASE_DECLARE_FEATURE(kEnableTTSCaching);
+BASE_DECLARE_FEATURE(kEnableTTSCacheSetup);
+BASE_DECLARE_FEATURE(kEnableUnifiedAudioFocusFeature);
+BASE_DECLARE_FEATURE(kEnableUnmanagedToManagedTransitionFeature);
+BASE_DECLARE_FEATURE(kEnableUsap);
+BASE_DECLARE_FEATURE(kEnableVirtioBlkForData);
+BASE_DECLARE_FEATURE(kFixupWindowFeature);
+BASE_DECLARE_FEATURE(kVirtioBlkDataConfigOverride);
 extern const base::FeatureParam<bool> kVirtioBlkDataConfigUseLvm;
-extern const base::Feature kFilePickerExperimentFeature;
-extern const base::Feature kGameModeFeature;
-extern const base::Feature kGmsCoreLowMemoryKillerProtection;
-extern const base::Feature kGuestZram;
+BASE_DECLARE_FEATURE(kFilePickerExperimentFeature);
+BASE_DECLARE_FEATURE(kGameModeFeature);
+BASE_DECLARE_FEATURE(kGmsCoreLowMemoryKillerProtection);
+BASE_DECLARE_FEATURE(kGuestZram);
 extern const base::FeatureParam<int> kGuestZramSize;
 extern const base::FeatureParam<int> kGuestZramSwappiness;
-extern const base::Feature kLockGuestMemory;
-extern const base::Feature kLogdConfig;
+BASE_DECLARE_FEATURE(kLockGuestMemory);
+BASE_DECLARE_FEATURE(kLogdConfig);
 extern const base::FeatureParam<int> kLogdConfigSize;
-extern const base::Feature kLvmApplicationContainers;
-extern const base::Feature kKeyboardShortcutHelperIntegrationFeature;
-extern const base::Feature kNativeBridgeToggleFeature;
-extern const base::Feature kOutOfProcessVideoDecoding;
-extern const base::Feature kPictureInPictureFeature;
-extern const base::Feature kRightClickLongPress;
-extern const base::Feature kRtVcpuDualCore;
-extern const base::Feature kRtVcpuQuadCore;
-extern const base::Feature kSaveRawFilesOnTracing;
-extern const base::Feature kUsbDeviceDefaultAttachToArcVm;
-extern const base::Feature kUsbStorageUIFeature;
-extern const base::Feature kUseDalvikMemoryProfile;
-extern const base::Feature kUseDefaultBlockSize;
-extern const base::Feature kVideoDecoder;
-extern const base::Feature kVmMemoryPSIReports;
+BASE_DECLARE_FEATURE(kLvmApplicationContainers);
+BASE_DECLARE_FEATURE(kKeyboardShortcutHelperIntegrationFeature);
+BASE_DECLARE_FEATURE(kNativeBridgeToggleFeature);
+BASE_DECLARE_FEATURE(kOutOfProcessVideoDecoding);
+BASE_DECLARE_FEATURE(kPictureInPictureFeature);
+BASE_DECLARE_FEATURE(kRightClickLongPress);
+BASE_DECLARE_FEATURE(kRtVcpuDualCore);
+BASE_DECLARE_FEATURE(kRtVcpuQuadCore);
+BASE_DECLARE_FEATURE(kSaveRawFilesOnTracing);
+BASE_DECLARE_FEATURE(kUsbDeviceDefaultAttachToArcVm);
+BASE_DECLARE_FEATURE(kUsbStorageUIFeature);
+BASE_DECLARE_FEATURE(kUseDalvikMemoryProfile);
+BASE_DECLARE_FEATURE(kUseDefaultBlockSize);
+BASE_DECLARE_FEATURE(kVideoDecoder);
+BASE_DECLARE_FEATURE(kVmMemoryPSIReports);
 extern const base::FeatureParam<int> kVmMemoryPSIReportsPeriod;
-extern const base::Feature kVmMemorySize;
+BASE_DECLARE_FEATURE(kVmMemorySize);
 extern const base::FeatureParam<int> kVmMemorySizeShiftMiB;
 extern const base::FeatureParam<int> kVmMemorySizeMaxMiB;
-extern const base::Feature kVmBalloonPolicy;
+BASE_DECLARE_FEATURE(kVmBalloonPolicy);
 extern const base::FeatureParam<int> kVmBalloonPolicyModerateKiB;
 extern const base::FeatureParam<int> kVmBalloonPolicyCriticalKiB;
 extern const base::FeatureParam<int> kVmBalloonPolicyReclaimKiB;
-extern const base::Feature kVmBroadcastPreNotifyANR;
-extern const base::Feature kVmGmsCoreLowMemoryKillerProtection;
+BASE_DECLARE_FEATURE(kVmBroadcastPreNotifyANR);
+BASE_DECLARE_FEATURE(kVmGmsCoreLowMemoryKillerProtection);
 extern const base::FeatureParam<bool> kVmBalloonPolicyResponsive;
 extern const base::FeatureParam<int> kVmBalloonPolicyResponsiveTimeoutMs;
 extern const base::FeatureParam<int> kVmBalloonPolicyResponsiveMaxDeflateBytes;
diff --git a/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_impl.cc b/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_impl.cc
index 212e9a3f..7236d9c 100644
--- a/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_impl.cc
+++ b/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_impl.cc
@@ -43,21 +43,21 @@
 constexpr const char* ToString(
     device::BluetoothGattService::GattErrorCode error_code) {
   switch (error_code) {
-    case device::BluetoothGattService::GATT_ERROR_UNKNOWN:
+    case device::BluetoothGattService::GattErrorCode::kUnknown:
       return "GATT_ERROR_UNKNOWN";
-    case device::BluetoothGattService::GATT_ERROR_FAILED:
+    case device::BluetoothGattService::GattErrorCode::kFailed:
       return "GATT_ERROR_FAILED";
-    case device::BluetoothGattService::GATT_ERROR_IN_PROGRESS:
+    case device::BluetoothGattService::GattErrorCode::kInProgress:
       return "GATT_ERROR_IN_PROGRESS";
-    case device::BluetoothGattService::GATT_ERROR_INVALID_LENGTH:
+    case device::BluetoothGattService::GattErrorCode::kInvalidLength:
       return "GATT_ERROR_INVALID_LENGTH";
-    case device::BluetoothGattService::GATT_ERROR_NOT_PERMITTED:
+    case device::BluetoothGattService::GattErrorCode::kNotPermitted:
       return "GATT_ERROR_NOT_PERMITTED";
-    case device::BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED:
+    case device::BluetoothGattService::GattErrorCode::kNotAuthorized:
       return "GATT_ERROR_NOT_AUTHORIZED";
-    case device::BluetoothGattService::GATT_ERROR_NOT_PAIRED:
+    case device::BluetoothGattService::GattErrorCode::kNotPaired:
       return "GATT_ERROR_NOT_PAIRED";
-    case device::BluetoothGattService::GATT_ERROR_NOT_SUPPORTED:
+    case device::BluetoothGattService::GattErrorCode::kNotSupported:
       return "GATT_ERROR_NOT_SUPPORTED";
     default:
       NOTREACHED();
diff --git a/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_unittest.cc b/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_unittest.cc
index 7720de8..1987c3a1 100644
--- a/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_unittest.cc
+++ b/ash/quick_pair/fast_pair_handshake/fast_pair_gatt_service_client_unittest.cc
@@ -208,7 +208,7 @@
                           ErrorCallback error_callback) override {
     if (notify_session_error_) {
       std::move(error_callback)
-          .Run(device::BluetoothGattService::GATT_ERROR_NOT_PERMITTED);
+          .Run(device::BluetoothGattService::GattErrorCode::kNotPermitted);
       return;
     }
 
@@ -228,7 +228,7 @@
                                  ErrorCallback error_callback) override {
     if (write_remote_error_) {
       std::move(error_callback)
-          .Run(device::BluetoothGattService::GATT_ERROR_NOT_PERMITTED);
+          .Run(device::BluetoothGattService::GattErrorCode::kNotPermitted);
       return;
     }
 
diff --git a/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl.cc b/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl.cc
index e54de75..b913b0ff 100644
--- a/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl.cc
+++ b/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl.cc
@@ -50,21 +50,21 @@
 std::string GattErrorToString(
     device::BluetoothGattService::GattErrorCode error_code) {
   switch (error_code) {
-    case device::BluetoothGattService::GATT_ERROR_UNKNOWN:
+    case device::BluetoothGattService::GattErrorCode::kUnknown:
       return "[GATT_ERROR_UNKNOWN]";
-    case device::BluetoothGattService::GATT_ERROR_FAILED:
+    case device::BluetoothGattService::GattErrorCode::kFailed:
       return "[GATT_ERROR_FAILED]";
-    case device::BluetoothGattService::GATT_ERROR_IN_PROGRESS:
+    case device::BluetoothGattService::GattErrorCode::kInProgress:
       return "[GATT_ERROR_IN_PROGRESS]";
-    case device::BluetoothGattService::GATT_ERROR_INVALID_LENGTH:
+    case device::BluetoothGattService::GattErrorCode::kInvalidLength:
       return "[GATT_ERROR_INVALID_LENGTH]";
-    case device::BluetoothGattService::GATT_ERROR_NOT_PERMITTED:
+    case device::BluetoothGattService::GattErrorCode::kNotPermitted:
       return "[GATT_ERROR_NOT_PERMITTED]";
-    case device::BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED:
+    case device::BluetoothGattService::GattErrorCode::kNotAuthorized:
       return "[GATT_ERROR_NOT_AUTHORIZED]";
-    case device::BluetoothGattService::GATT_ERROR_NOT_PAIRED:
+    case device::BluetoothGattService::GattErrorCode::kNotPaired:
       return "[GATT_ERROR_NOT_PAIRED]";
-    case device::BluetoothGattService::GATT_ERROR_NOT_SUPPORTED:
+    case device::BluetoothGattService::GattErrorCode::kNotSupported:
       return "[GATT_ERROR_NOT_SUPPORTED]";
     default:
       NOTREACHED();
diff --git a/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl_unittest.cc b/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl_unittest.cc
index 80fe9f5..548de15 100644
--- a/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl_unittest.cc
+++ b/ash/quick_pair/pairing/fast_pair/fast_pair_pairer_impl_unittest.cc
@@ -1521,7 +1521,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_FAILED);
+      device::BluetoothGattService::GattErrorCode::kFailed);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
@@ -1559,7 +1559,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_UNKNOWN);
+      device::BluetoothGattService::GattErrorCode::kUnknown);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
@@ -1597,7 +1597,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_IN_PROGRESS);
+      device::BluetoothGattService::GattErrorCode::kInProgress);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
@@ -1635,7 +1635,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_INVALID_LENGTH);
+      device::BluetoothGattService::GattErrorCode::kInvalidLength);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
@@ -1673,7 +1673,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_PERMITTED);
+      device::BluetoothGattService::GattErrorCode::kNotPermitted);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
@@ -1711,7 +1711,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_AUTHORIZED);
+      device::BluetoothGattService::GattErrorCode::kNotAuthorized);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
@@ -1749,7 +1749,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_PAIRED);
+      device::BluetoothGattService::GattErrorCode::kNotPaired);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
@@ -1787,7 +1787,7 @@
   EXPECT_EQ(GetPairFailure(), absl::nullopt);
   EXPECT_CALL(account_key_failure_callback_, Run);
   RunWriteAccountKeyCallback(
-      device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_SUPPORTED);
+      device::BluetoothGattService::GattErrorCode::kNotSupported);
   EXPECT_FALSE(IsAccountKeySavedToFootprints());
   histogram_tester().ExpectTotalCount(
       kWriteAccountKeyCharacteristicResultMetric, 1);
diff --git a/ash/services/secure_channel/ble_characteristics_finder_unittest.cc b/ash/services/secure_channel/ble_characteristics_finder_unittest.cc
index 0619cca..3d01f45 100644
--- a/ash/services/secure_channel/ble_characteristics_finder_unittest.cc
+++ b/ash/services/secure_channel/ble_characteristics_finder_unittest.cc
@@ -181,7 +181,8 @@
                 value =
                     correct_eid ? GetCorrectEidValue() : GetIncorrectEidValue();
               } else {
-                error_code = device::BluetoothGattService::GATT_ERROR_FAILED;
+                error_code =
+                    device::BluetoothGattService::GattErrorCode::kFailed;
               }
               base::ThreadTaskRunnerHandle::Get()->PostTask(
                   FROM_HERE,
diff --git a/ash/services/secure_channel/ble_weave_client_connection.cc b/ash/services/secure_channel/ble_weave_client_connection.cc
index aa49dee9..1175ec7 100644
--- a/ash/services/secure_channel/ble_weave_client_connection.cc
+++ b/ash/services/secure_channel/ble_weave_client_connection.cc
@@ -1014,28 +1014,28 @@
     BluetoothRemoteDeviceGattServiceGattErrorCodeToGattServiceOperationResult(
         device::BluetoothGattService::GattErrorCode error_code) {
   switch (error_code) {
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_UNKNOWN:
+    case device::BluetoothGattService::GattErrorCode::kUnknown:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_UNKNOWN;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_FAILED:
+    case device::BluetoothGattService::GattErrorCode::kFailed:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_FAILED;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_IN_PROGRESS:
+    case device::BluetoothGattService::GattErrorCode::kInProgress:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_IN_PROGRESS;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_INVALID_LENGTH:
+    case device::BluetoothGattService::GattErrorCode::kInvalidLength:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_INVALID_LENGTH;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_PERMITTED:
+    case device::BluetoothGattService::GattErrorCode::kNotPermitted:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_NOT_PERMITTED;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_AUTHORIZED:
+    case device::BluetoothGattService::GattErrorCode::kNotAuthorized:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_NOT_AUTHORIZED;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_PAIRED:
+    case device::BluetoothGattService::GattErrorCode::kNotPaired:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_NOT_PAIRED;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_SUPPORTED:
+    case device::BluetoothGattService::GattErrorCode::kNotSupported:
       return GattServiceOperationResult::
           GATT_SERVICE_OPERATION_RESULT_GATT_ERROR_NOT_SUPPORTED;
     default:
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 64f1836f..6b0e6ef 100644
--- a/ash/services/secure_channel/ble_weave_client_connection_unittest.cc
+++ b/ash/services/secure_channel/ble_weave_client_connection_unittest.cc
@@ -927,7 +927,7 @@
   ASSERT_FALSE(notify_session_error_callback_.is_null());
 
   std::move(notify_session_error_callback_)
-      .Run(device::BluetoothGattService::GATT_ERROR_UNKNOWN);
+      .Run(device::BluetoothGattService::GattErrorCode::kUnknown);
 
   VerifyGattNotifySessionResult(false);
 
@@ -964,7 +964,7 @@
     ASSERT_FALSE(write_remote_characteristic_error_callback_.is_null());
     EXPECT_FALSE(write_remote_characteristic_success_callback_.is_null());
     std::move(write_remote_characteristic_error_callback_)
-        .Run(device::BluetoothGattService::GATT_ERROR_UNKNOWN);
+        .Run(device::BluetoothGattService::GattErrorCode::kUnknown);
     task_runner_->RunUntilIdle();
     VerifyGattWriteCharacteristicResult(false /* success */,
                                         i + 1 /* num_writes */);
@@ -1130,7 +1130,7 @@
     ASSERT_FALSE(write_remote_characteristic_error_callback_.is_null());
     EXPECT_FALSE(write_remote_characteristic_success_callback_.is_null());
     std::move(write_remote_characteristic_error_callback_)
-        .Run(device::BluetoothGattService::GATT_ERROR_UNKNOWN);
+        .Run(device::BluetoothGattService::GattErrorCode::kUnknown);
     task_runner_->RunUntilIdle();
     VerifyGattWriteCharacteristicResult(false /* success */,
                                         i + 1 /* num_writes */);
@@ -1346,7 +1346,7 @@
     }
 
     std::move(write_remote_characteristic_error_callback_)
-        .Run(device::BluetoothGattService::GATT_ERROR_UNKNOWN);
+        .Run(device::BluetoothGattService::GattErrorCode::kUnknown);
     task_runner_->RunUntilIdle();
     VerifyGattWriteCharacteristicResult(false /* success */,
                                         i + 1 /* num_writes */);
diff --git a/ash/shelf/shelf_app_button.cc b/ash/shelf/shelf_app_button.cc
index 8d2be51f..4bf68d6 100644
--- a/ash/shelf/shelf_app_button.cc
+++ b/ash/shelf/shelf_app_button.cc
@@ -618,8 +618,11 @@
   // the shelf when there is a non-zero padding between the app icon and the
   // end of scrollable shelf.
   if (TabletModeController::Get()->InTabletMode() && padding > 0) {
-    const size_t current_index =
-        shelf_view_->view_model()->GetIndexOfView(this).value();
+    // Note that `current_index` may be nullopt while the button is fading out
+    // after it's been removed from the model - for example, see
+    // https://crbug.com/1355561.
+    const absl::optional<size_t> current_index =
+        shelf_view_->view_model()->GetIndexOfView(this);
     int left_padding =
         (shelf_view_->visible_views_indices().front() == current_index)
             ? padding
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc
index fd38706..78dd7d7 100644
--- a/ash/shelf/shelf_view.cc
+++ b/ash/shelf/shelf_view.cc
@@ -2128,6 +2128,9 @@
   if (view.get() == shelf_->tooltip()->GetCurrentAnchorView())
     shelf_->tooltip()->Close();
 
+  // Disable the view while it's fading out to prevent it from getting events.
+  view->SetEnabled(false);
+
   if (view->GetVisible() && view->layer()->opacity() > 0.0f) {
     UpdateShelfItemViewsVisibility();
 
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 9727e81e..f196d05 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -2430,6 +2430,60 @@
   EXPECT_FALSE(shelf_app_button->state() & ShelfAppButton::STATE_NOTIFICATION);
 }
 
+TEST_F(ShelfViewTest, TapOnItemDuringFadeOut) {
+  const ShelfID test_item_id = AddApp();
+
+  Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true);
+
+  views::View* const test_item_button = GetButtonByID(test_item_id);
+  ASSERT_TRUE(test_item_button);
+  const gfx::Point test_item_location =
+      test_item_button->GetBoundsInScreen().CenterPoint();
+
+  // Enable animations, as the test verifies behavior while a fade out animation
+  // is in progress.
+  ui::ScopedAnimationDurationScaleMode regular_animations(
+      ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
+
+  // Simulate test app getting uninstalled.
+  model_->RemoveItemAt(model_->ItemIndexByID(test_item_id));
+
+  // Tap on the removed item bounds (which will remain in place during fadeout
+  // animation).
+  GetEventGenerator()->GestureTapAt(test_item_location);
+
+  test_api_->RunMessageLoopUntilAnimationsDone();
+  VerifyShelfItemBoundsAreValid();
+}
+
+TEST_F(ShelfViewTest, SwipeOnItemDuringFadeOut) {
+  const ShelfID test_item_id = AddApp();
+
+  Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true);
+
+  views::View* const test_item_button = GetButtonByID(test_item_id);
+  ASSERT_TRUE(test_item_button);
+  const gfx::Point test_item_location =
+      test_item_button->GetBoundsInScreen().CenterPoint();
+
+  // Enable animations, as the test verifies behavior while a fade out animation
+  // is in progress.
+  ui::ScopedAnimationDurationScaleMode regular_animations(
+      ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
+
+  // Simulate test app getting uninstalled.
+  model_->RemoveItemAt(model_->ItemIndexByID(test_item_id));
+
+  // Swipe from the removed item bounds (which will remain in place during
+  // fadeout animation).
+  GetEventGenerator()->GestureScrollSequence(
+      test_item_location, test_item_location + gfx::Vector2d(0, -50),
+      base::Milliseconds(100), 3);
+
+  test_api_->RunMessageLoopUntilAnimationsDone();
+  VerifyShelfItemBoundsAreValid();
+}
+
 class GhostImageShelfViewTest : public ShelfViewTest {
  public:
   GhostImageShelfViewTest() = default;
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_af.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_af.xtb
index a7e37cc..475da45 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_af.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_af.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">komma</translation>
 <translation id="3976863468609830880">Klik die laaste ikoon op jou rak</translation>
 <translation id="3994783594793697310">Stel aansigzoemvlak terug</translation>
+<translation id="4026837045671473537">Skakel kleuromkeringmodus aan</translation>
 <translation id="4026843240379844265">Skuif aktiewe venster tussen vertoonskerms</translation>
 <translation id="4035482366624727273">Selekteer alles op die bladsy</translation>
 <translation id="4060703249685950734">Maak die oortjie of venster wat jy laaste toegemaak het, weer oop</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_bs.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_bs.xtb
index b0a0b24..f56ca2d 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_bs.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_bs.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">zarez</translation>
 <translation id="3976863468609830880">Klikanje na posljednju ikonu na polici</translation>
 <translation id="3994783594793697310">Poništavanje nivoa zumiranja ekrana</translation>
+<translation id="4026837045671473537">Uključi način inverzije boja</translation>
 <translation id="4026843240379844265">Premjesti aktivni prozor između ekrana</translation>
 <translation id="4035482366624727273">Odabir svega na stranici</translation>
 <translation id="4060703249685950734">Ponovo otvorite zadnju karticu ili prozor koji ste koristili</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_cs.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_cs.xtb
index 60d5778..7088109 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_cs.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_cs.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">čárka</translation>
 <translation id="3976863468609830880">Kliknout na poslední ikonu na poličce</translation>
 <translation id="3994783594793697310">Resetovat úroveň přiblížení zobrazení</translation>
+<translation id="4026837045671473537">Zapnout režim převrácení barev</translation>
 <translation id="4026843240379844265">Přesunout aktivní okno mezi obrazovkami</translation>
 <translation id="4035482366624727273">Vybrat veškerý obsah stránky</translation>
 <translation id="4060703249685950734">Znovu otevřít naposledy zavřenou kartu</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_el.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_el.xtb
index e4a2931..1203e0f 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_el.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_el.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">κόμμα</translation>
 <translation id="3976863468609830880">Κλικ στο τελευταίο εικονίδιο στο ράφι σας</translation>
 <translation id="3994783594793697310">Επαναφορά επιπέδου εστίασης οθόνης</translation>
+<translation id="4026837045671473537">Ενεργοποίηση λειτουργίας αντιστροφής χρωμάτων</translation>
 <translation id="4026843240379844265">Μετακίνηση ενεργού παραθύρου μεταξύ οθονών</translation>
 <translation id="4035482366624727273">Επιλογή όλων στη σελίδα</translation>
 <translation id="4060703249685950734">Εκ νέου άνοιγμα της τελευταίας καρτέλας ή του παραθύρου που κλείσατε</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_es.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_es.xtb
index 42063bd..3371ae1 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_es.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_es.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">coma</translation>
 <translation id="3976863468609830880">Hacer clic en el último icono de la estantería</translation>
 <translation id="3994783594793697310">Restablecer el nivel de zoom de la pantalla</translation>
+<translation id="4026837045671473537">Activar el modo Inversión de colores</translation>
 <translation id="4026843240379844265">Mover ventana activa de una pantalla a otra</translation>
 <translation id="4035482366624727273">Seleccionar todo el contenido de la página</translation>
 <translation id="4060703249685950734">Volver a abrir la última pestaña o ventana que se ha cerrado</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_fa.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_fa.xtb
index ddb1d5c..c65ae83 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_fa.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_fa.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">کاما</translation>
 <translation id="3976863468609830880">کلیک کردن آخرین نماد در قفسه</translation>
 <translation id="3994783594793697310">بازنشانی میزان بزرگ‌نمایی صفحه‌نمایش</translation>
+<translation id="4026837045671473537">حالت «وارونگی رنگ» روشن می‌شود</translation>
 <translation id="4026843240379844265">جابه‌جایی پنجره فعال بین نمایشگرها</translation>
 <translation id="4035482366624727273">انتخاب همه چیز در صفحه</translation>
 <translation id="4060703249685950734">دوباره باز کردن آخرین برگه یا پنجره‌ای که بسته بودید</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb
index b9e9b705..af10a2c 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">kuwit</translation>
 <translation id="3976863468609830880">I-click ang huling icon sa iyong shelf</translation>
 <translation id="3994783594793697310">I-reset ang pagpapakita ng antas ng pag-zoom</translation>
+<translation id="4026837045671473537">I-on ang color inversion mode</translation>
 <translation id="4026843240379844265">Ilipat ang aktibong window sa pagitan ng mga display</translation>
 <translation id="4035482366624727273">Piliin ang lahat ng nasa page</translation>
 <translation id="4060703249685950734">Buksang muli ang huling tab o window na isinara mo</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_hr.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_hr.xtb
index 67d54e4..aa16082a 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_hr.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_hr.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">zarez</translation>
 <translation id="3976863468609830880">Klik na posljednju ikonu na polici</translation>
 <translation id="3994783594793697310">Vraćanje razine zumiranja prikaza na zadano</translation>
+<translation id="4026837045671473537">Uključi način inverzije boja</translation>
 <translation id="4026843240379844265">Premještanje aktivnog prozora s jednog zaslona na drugi</translation>
 <translation id="4035482366624727273">Odabir svega na stranici</translation>
 <translation id="4060703249685950734">Ponovno otvaranje zadnje zatvorene kartice ili prozora</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_km.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_km.xtb
index 39489b4b..8c552a0 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_km.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_km.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">ក្បៀស</translation>
 <translation id="3976863468609830880">ចុច​រូប​តំណាង​ចុង​ក្រោយ​នៅលើ​ធ្នើ​របស់អ្នក</translation>
 <translation id="3994783594793697310">កំណត់​កម្រិតពង្រីកបង្រួមនៃ​ការបង្ហាញ​ឡើងវិញ</translation>
+<translation id="4026837045671473537">បើក​មុខងារ​បញ្ច្រាស​ពណ៌</translation>
 <translation id="4026843240379844265">ផ្លាស់ទី​វិនដូ​សកម្ម​ពី​ផ្ទាំង​អេក្រង់​មួយ​ទៅ​ផ្ទាំង​អេក្រង់​មួយ​ទៀត</translation>
 <translation id="4035482366624727273">ជ្រើសរើស​អ្វី​គ្រប់​យ៉ាង​នៅលើ​ទំព័រ</translation>
 <translation id="4060703249685950734">បើក​ផ្ទាំង​ ឬ​វិនដូ​ចុងក្រោយ​ដែល​អ្នក​បាន​បិទឡើងវិញ</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_mk.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_mk.xtb
index 7783231..576ba3b 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_mk.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_mk.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">запирка</translation>
 <translation id="3976863468609830880">Кликнете на последната икона на полицата</translation>
 <translation id="3994783594793697310">Ресетирајте го нивото на зумирање на екранот</translation>
+<translation id="4026837045671473537">Вклучете го режимот за инверзија на боите</translation>
 <translation id="4026843240379844265">Премести го активниот прозорец помеѓу екраните</translation>
 <translation id="4035482366624727273">Изберете сѐ на страницата</translation>
 <translation id="4060703249685950734">Повторно отворете ја последната картичка или прозорец што го затворивте</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_mn.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_mn.xtb
index 382444f..f197624 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_mn.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_mn.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">таслал</translation>
 <translation id="3976863468609830880">Тавиур дээрх сүүлийн зүйлийг дарах</translation>
 <translation id="3994783594793697310">Дэлгэцийн томруулалтын түвшинг шинэчлэх</translation>
+<translation id="4026837045671473537">Өнгө урвуулах горимыг асаана уу</translation>
 <translation id="4026843240379844265">Идэвхтэй цонхыг дэлгэц хооронд зөөх</translation>
 <translation id="4035482366624727273">Хуудасны бүх зүйлийг сонгох</translation>
 <translation id="4060703249685950734">Сүүлд хаасан таб эсвэл цонхоо дахин нээх</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_my.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_my.xtb
index 4357b68..8390665e 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_my.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_my.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">ကော်မာ</translation>
 <translation id="3976863468609830880">သင်၏ စင်ပေါ်ရှိ နောက်ဆုံးသင်္ကေတကို နှိပ်ရန်</translation>
 <translation id="3994783594793697310">မျက်နှာပြင် ဇူးမ်ချဲ့ချုံ့အဆင့်ကို ပြန်ညှိရန်</translation>
+<translation id="4026837045671473537">အရောင်ပြောင်းပြန်ပြုလုပ်သည့်မုဒ်ကို ဖွင့်သည်</translation>
 <translation id="4026843240379844265">လက်ရှိဝင်းဒိုးကို မျက်နှာပြင်ပြသမှုများအကြား ရွှေ့ရန်</translation>
 <translation id="4035482366624727273">စာမျက်နှာပေါ်ရှိ အားလုံးကို ရွေးရန်</translation>
 <translation id="4060703249685950734">သင်နောက်ဆုံးပိတ်လိုက်သည့် ဝဘ် သို့မဟုတ် ဝင်းဒိုးကို ပြန်ဖွင့်ရန်</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_nl.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_nl.xtb
index ec04f67..c6a4c806 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_nl.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_nl.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">komma</translation>
 <translation id="3976863468609830880">Klikken op het laatste icoon op de plank</translation>
 <translation id="3994783594793697310">Zoomniveau scherm resetten</translation>
+<translation id="4026837045671473537">Modus voor kleurinversie aanzetten</translation>
 <translation id="4026843240379844265">Actief venster verplaatsen tussen schermen</translation>
 <translation id="4035482366624727273">Alles op de pagina selecteren</translation>
 <translation id="4060703249685950734">Het laatste tabblad of venster dat je hebt gesloten, opnieuw openen</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_or.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_or.xtb
index 4655d797..57ab9eb 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_or.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_or.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">କମା</translation>
 <translation id="3976863468609830880">ଆପଣଙ୍କର ସେଲ୍ଫର ଶେଷ ଆଇକନ୍‌ରେ କ୍ଲିକ୍‌ କରନ୍ତୁ</translation>
 <translation id="3994783594793697310">ଡିସ୍‌ପ୍ଲେ ଜୁମ୍ ସ୍ତର ପୁନଃସେଟ୍ କରନ୍ତୁ</translation>
+<translation id="4026837045671473537">କଲର ଇନଭର୍ସନ ମୋଡ ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="4026843240379844265">ସକ୍ରିୟ ୱିଣ୍ଡୋକୁ ଡିସ୍‌ପ୍ଲେଗୁଡ଼ିକ ମଧ୍ୟକୁ ନିଅନ୍ତୁ</translation>
 <translation id="4035482366624727273">ପୃଷ୍ଠାରେ ଥିବା ସବୁକିଛିକୁ ଚୟନ କରନ୍ତୁ</translation>
 <translation id="4060703249685950734">ଆପଣ ବନ୍ଦ କରିସାରିଥିବା ଶେଷ ଟାବ୍‍ କିମ୍ବା ୱିଣ୍ଡୋ ପୁଣିଖୋଲି ଦେଖନ୍ତୁ</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_pt-BR.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_pt-BR.xtb
index ff8d0d8..4473fc5 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_pt-BR.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_pt-BR.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">vírgula</translation>
 <translation id="3976863468609830880">Clicar no último ícone da estante</translation>
 <translation id="3994783594793697310">Redefinir nível de zoom da tela</translation>
+<translation id="4026837045671473537">Ativar o modo de inversão de cores</translation>
 <translation id="4026843240379844265">Mover janela ativa entre telas</translation>
 <translation id="4035482366624727273">Selecionar tudo na página</translation>
 <translation id="4060703249685950734">Reabrir a última guia ou janela que você fechou</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb
index 3eab73c2..1e8e478 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">vejica</translation>
 <translation id="3976863468609830880">Klik zadnje ikone na polici</translation>
 <translation id="3994783594793697310">Ponastavitev stopnje povečave prikaza</translation>
+<translation id="4026837045671473537">Vklop načina inverzije barv</translation>
 <translation id="4026843240379844265">Premikanje aktivnega okna med zasloni</translation>
 <translation id="4035482366624727273">Izbira vse vsebine strani</translation>
 <translation id="4060703249685950734">Vnovično odpiranje nazadnje zaprtega zavihka ali okna</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb
index f313af1..a7627bc 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_vi.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">dấu phẩy</translation>
 <translation id="3976863468609830880">Nhấp vào biểu tượng cuối cùng trên giá</translation>
 <translation id="3994783594793697310">Đặt lại mức thu phóng màn hình</translation>
+<translation id="4026837045671473537">Bật chế độ đảo màu</translation>
 <translation id="4026843240379844265">Di chuyển cửa sổ đang hoạt động giữa các màn hình</translation>
 <translation id="4035482366624727273">Chọn mọi nội dung trên trang</translation>
 <translation id="4060703249685950734">Mở lại cửa sổ hoặc thẻ mà bạn đã đóng gần đây nhất</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_zh-TW.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_zh-TW.xtb
index b30fc092..23896656 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_zh-TW.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_zh-TW.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">逗號</translation>
 <translation id="3976863468609830880">點選檔案櫃中的最後一個圖示</translation>
 <translation id="3994783594793697310">重設畫面縮放比例</translation>
+<translation id="4026837045671473537">開啟色彩反轉模式</translation>
 <translation id="4026843240379844265">在不同畫面間移動使用中的視窗</translation>
 <translation id="4035482366624727273">選取網頁上的所有項目</translation>
 <translation id="4060703249685950734">重新開啟最後關閉的分頁或視窗</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_zu.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_zu.xtb
index a0c1d54..460b5188 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_zu.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_zu.xtb
@@ -93,6 +93,7 @@
 <translation id="3949671998904569433">ikhoma</translation>
 <translation id="3976863468609830880">Chofoza isithonjana sokugcina kushelufu lakho</translation>
 <translation id="3994783594793697310">Setha kabusha ileveli yokusondeza yesiboniso</translation>
+<translation id="4026837045671473537">Vula imodi yokuguqulwa kombala</translation>
 <translation id="4026843240379844265">Hambisa iwindi elisebenzayo phakathi kwezibonisi</translation>
 <translation id="4035482366624727273">Khetha yonke into kukhasi</translation>
 <translation id="4060703249685950734">Phinda uvule ithebhu yokugcina noma iwindi oye walivala</translation>
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb
index 2c73376..0aeb609 100644
--- a/ash/strings/ash_strings_af.xtb
+++ b/ash/strings/ash_strings_af.xtb
@@ -1156,6 +1156,7 @@
 <translation id="7633755430369750696">Wys Nabydeling-instellings.</translation>
 <translation id="7634648064048557203">Kamera is geglip na hoek onder regs</translation>
 <translation id="7641938616688887143">Neem op</translation>
+<translation id="7642106959537987271">kleuromkeringmodus</translation>
 <translation id="7642647758716480637">Maak instellings oop vir <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (eienaar)</translation>
 <translation id="7647488630410863958">Ontsluit toestel om kennisgewings te bekyk</translation>
@@ -1261,6 +1262,7 @@
 <translation id="8209010265547628927">Stel terug</translation>
 <translation id="8214996719228530800">Kanarie-kanaal</translation>
 <translation id="8219451629189078428">Jou Chromebook moet in hierdie tyd aangeskakel bly en aan krag gekoppel wees. Maak seker dat die laaier of kragprop se drade behoorlik by sowel jou Chromebook as die kragpunt ingeprop is. Moenie jou Chromebook afskakel nie.</translation>
+<translation id="8230305195727960608">Kleuromkeringmodus</translation>
 <translation id="8236042855478648955">Tyd vir 'n blaaskans</translation>
 <translation id="8246282815785366524">Welkom terug, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, seinsterkte <ph name="SIGNAL_STRENGTH" />, foonbattery <ph name="BATTERY_STATUS" /></translation>
@@ -1387,6 +1389,7 @@
 <translation id="8982906748181120328">Naby-sigbaarheid</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Gebruik tans <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Kleuromkeringmodus is geaktiveer. Druk weer Ctrl+Search+H om dit af te skakel.</translation>
 <translation id="899350903320462459">Ontsluit toestel as <ph name="LOGIN_ID" /> om die kennisgewinghandeling uit te voer</translation>
 <translation id="9000771174482730261">BESTUUR BERGING</translation>
 <translation id="9017320285115481645">Voer die Family Link-ouertoegangskode in.</translation>
@@ -1435,6 +1438,7 @@
 <translation id="921989828232331238">Jou ouer het jou toestel vir die dag gesluit</translation>
 <translation id="9220525904950070496">Verwyder rekening</translation>
 <translation id="923686485342484400">Druk Ctrl Shift Q twee keer om af te meld.</translation>
+<translation id="92580429198593979">Jy het die sleutelbordkortpad vir kleuromkering gedruk? Wil jy dit aanskakel?</translation>
 <translation id="925832987464884575">Versteek voorskoue</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> vereis dat jy onmiddellik jou <ph name="DEVICE_TYPE" /> opdateer</translation>
 <translation id="938963181863597773">Wat is op my kalender?</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index b685868..bcd8e61 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Tam ekranı çəkin</translation>
 <translation id="2135456203358955318">Daxili miqyas</translation>
 <translation id="2148716181193084225">Bu gün</translation>
+<translation id="2161132820593978283">Video zənglərdə ekranın mərkəzində olmaq üçün kamera çərçivəsini sınayın. Sürətli Ayarlarda sınayın.</translation>
 <translation id="2170530631236737939">İcmaldan çıxmaq üçün üç barmaq ilə aşağı çəkin</translation>
 <translation id="219905428774326614">Başladıcı, bütün tətbiqlər</translation>
 <translation id="2201071101391734388">Son foto <ph name="INDEX" />/<ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Qoşulmayıb</translation>
 <translation id="2408955596600435184">PİN kodunuzu daxil edin</translation>
 <translation id="2412593942846481727">Güncəlləmə əlçatandır</translation>
+<translation id="2426051945783024481">Kamera çərçivəsi avtomatik mərkəzə keçirilib</translation>
 <translation id="2427507373259914951">Sol düymə</translation>
 <translation id="2429753432712299108">Bluetooth cihazı "<ph name="DEVICE_NAME" />" cütlənmək üçün icazə istəyir. Qəbul etmədən öncə bu parolun həmin cihazda göstərildiyini təsdiq edin: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Parol görünsün</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Aktiv edilməyib. Operatorunuz ilə əlaqə saxlayın.</translation>
 <translation id="6961121602502368900">İş profilində telefonun səssiz edilməsi əlçatan deyil</translation>
 <translation id="6961840794482373852">Alt + Yuxarı Ox klaviatura qısayolu dəyişib. Səhifənin Yuxarısına Keç düyməsindən istifadə etmək üçün <ph name="LAUNCHER_KEY_NAME" /> + Yuxarı Ox düyməsini basın.</translation>
+<translation id="696267987219125751">Kamera çərçivəsi deaktivdir.</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6972754398087986839">Başlayın</translation>
 <translation id="6979158407327259162">Google Disk</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Təqvim, <ph name="DATE" /> həftəsi, hazırda <ph name="SELECTED_DATE" /> seçilib.</translation>
 <translation id="7514365320538308">Endirmə</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Kamera çərçivəsi aktivdir.</translation>
 <translation id="7526573455193969409">Şəbəkəyə nəzarət edilə bilər</translation>
 <translation id="7536035074519304529">IP ünvanı: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux tətbiqləri və Anonim pəncərələr hazırda dəstəklənmir. Digər tətbiqlər yadda saxlanılacaq.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Durduruldu</translation>
 <translation id="7609951632080598826">Təqvim baxışı, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kamera yenidən qoşuldu.</translation>
+<translation id="761736749114493194">Kamera çərçivəsini keçirin. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Yaxındakılarla Paylaşma ayarlarını göstərin.</translation>
 <translation id="7634648064048557203">Kamera aşağı sağ küncə çəkildi</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Mövcud masadan pəncərələri göstərin, radio düyməsi seçilib</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> cihazınız aktiv olan zaman elektrik yığmaya bilər.</translation>
 <translation id="8535393432370007982">Rəng üzrə çeşidləmə sırasını ləğv edin</translation>
+<translation id="8541078764854166027">Kamera çərçivəsi</translation>
 <translation id="8542053257095774575">Yadda saxlanmış masa və ya şablon yoxdur</translation>
 <translation id="8546059259582788728">Çeşidləmənin ləğvi uğurlu oldu</translation>
 <translation id="8551588720239073785">Tarix və vaxt ayarları</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb
index fc2c0e07..81f31b2 100644
--- a/ash/strings/ash_strings_be.xtb
+++ b/ash/strings/ash_strings_be.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Запіс усяго экрана</translation>
 <translation id="2135456203358955318">Прыстыкаваная лупа</translation>
 <translation id="2148716181193084225">Сёння</translation>
+<translation id="2161132820593978283">Апрабуйце функцыю кадравання – яна дазволіць вам заставацца ў цэнтры экрана падчас відэавыклікаў. Яе можна ўключыць у хуткіх наладах.</translation>
 <translation id="2170530631236737939">Каб выйсці з рэжыму Агляду, правядзіце трыма пальцамі ўніз</translation>
 <translation id="219905428774326614">Панэль запуску, усе праграмы</translation>
 <translation id="2201071101391734388">Нядаўняе фота <ph name="INDEX" /> з <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Не падключана</translation>
 <translation id="2408955596600435184">Увядзіце PIN-код</translation>
 <translation id="2412593942846481727">Ёсць абнаўленне</translation>
+<translation id="2426051945783024481">Камера адцэнтравана аўтаматычна</translation>
 <translation id="2427507373259914951">Націсканне левай кнопкай мышы</translation>
 <translation id="2429753432712299108">Прылада Bluetooth "<ph name="DEVICE_NAME" />" запытвае дазволу на спалучэнне. Перш чым пагадзіцца, упэўніцеся, што на прыладзе паказаны гэты ключ доступу: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Паказаць пароль</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Сетка не актывавана. Звярніцеся да аператара.</translation>
 <translation id="6961121602502368900">Функцыя "Тэлефон без гуку" недаступная пры выкарыстанні працоўнага профілю</translation>
 <translation id="6961840794482373852">Змянілася прызначэнне спалучэння клавіш Alt + стрэлка ўверх. Каб выканаць дзеянне клавішы Page Up, націсніце <ph name="LAUNCHER_KEY_NAME" /> + стрэлка ўверх.</translation>
+<translation id="696267987219125751">Кадраванне выключана.</translation>
 <translation id="6965382102122355670">ОК</translation>
 <translation id="6972754398087986839">Пачатак працы</translation>
 <translation id="6979158407327259162">Google Дыск</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Каляндар, тыдзень з <ph name="DATE" />, дата, якая цяпер выбрана, – <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Спампаваць</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Кадраванне ўключана.</translation>
 <translation id="7526573455193969409">За сеткай могуць сачыць</translation>
 <translation id="7536035074519304529">IP-адрас: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Вокны ў рэжыме інкогніта і праграмы Linux зараз не падтрымліваюцца. Іншыя праграмы будуць захаваны.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Прыпынена</translation>
 <translation id="7609951632080598826">Каляндар, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Камера зноў падключана.</translation>
+<translation id="761736749114493194">Уключыць/выключыць кадраванне. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7633755430369750696">Паказаць налады функцыі "Абагульванне паблізу".</translation>
 <translation id="7634648064048557203">Акно перадпрагляду камеры прывязана да правага ніжняга вугла</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Паказ вокнаў бягучага працоўнага стала, выбраны пераключальнік</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> можа не зараджацца ва ўключаным стане.</translation>
 <translation id="8535393432370007982">Адрабіць сартаванне па колеры</translation>
+<translation id="8541078764854166027">Кадраванне</translation>
 <translation id="8542053257095774575">Няма захаваных працоўных сталоў і шаблонаў</translation>
 <translation id="8546059259582788728">Сартаванне адроблена</translation>
 <translation id="8551588720239073785">Налады даты і часу</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index c696044..b9a60def 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -214,7 +214,7 @@
 <translation id="2132302418721800944">Snimanje cijelog ekrana</translation>
 <translation id="2135456203358955318">Priključeno povećalo</translation>
 <translation id="2148716181193084225">Danas</translation>
-<translation id="2161132820593978283">Isprobajte okvir kamere da biste se prikazivali u središtu zaslona tijekom videopoziva. Uključite ga u Brzim postavkama.</translation>
+<translation id="2161132820593978283">Isprobajte kadriranje kamere da budete na sredini ekrana prilikom video poziva. Uključite ga u Brzim postavkama.</translation>
 <translation id="2170530631236737939">Prevucite nadolje s tri prsta da izađete iz Pregleda</translation>
 <translation id="219905428774326614">Pokretač, sve aplikacije</translation>
 <translation id="2201071101391734388"><ph name="INDEX" />. nedavna fotografija od <ph name="TOTAL_COUNT" />.</translation>
@@ -253,7 +253,7 @@
 <translation id="2405664212338326887">Nije povezano</translation>
 <translation id="2408955596600435184">Unesite PIN</translation>
 <translation id="2412593942846481727">Ažuriranje je dostupno</translation>
-<translation id="2426051945783024481">Okvir kamere automatski je centriran</translation>
+<translation id="2426051945783024481">Kadriranje kamere je automatski centrirano</translation>
 <translation id="2427507373259914951">Lijevi klik</translation>
 <translation id="2429753432712299108">Bluetooth uređaj "<ph name="DEVICE_NAME" />" traži dopuštenje za uparivanje. Prije prihvaćanja provjerite prikazuje li se na njemu ovaj pristupni ključ: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Prikaži lozinku</translation>
@@ -1040,7 +1040,7 @@
 <translation id="6960565108681981554">Nije aktivirano. Kontaktirajte mobilnog operatera.</translation>
 <translation id="6961121602502368900">Utišavanje telefona nije dostupno na radnom profilu</translation>
 <translation id="6961840794482373852">Prečica na tastaturi Alt + strelica nagore je promijenjena. Da koristite tipku Page Up, pritisnite tipku <ph name="LAUNCHER_KEY_NAME" /> + strelicu nagore.</translation>
-<translation id="696267987219125751">Okvir kamere je isključen.</translation>
+<translation id="696267987219125751">Kadriranje kamere je isključeno.</translation>
 <translation id="6965382102122355670">Uredu</translation>
 <translation id="6972754398087986839">Započnite</translation>
 <translation id="6979158407327259162">Google Disk</translation>
@@ -1131,7 +1131,7 @@
 <translation id="7513922695575567867">Kalendar, sedmica <ph name="DATE" />, trenutno je odabran datum <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Preuzmi</translation>
 <translation id="7515998400212163428">Android</translation>
-<translation id="7519206258459640379">Okvir kamere je uključen.</translation>
+<translation id="7519206258459640379">Kadriranje kamere je uključeno.</translation>
 <translation id="7526573455193969409">Mreža može biti nadzirana</translation>
 <translation id="7536035074519304529">IP adresa: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux aplikacije i anonimni prozori trenutno nisu podržani. Druge aplikacije će se sačuvati.</translation>
@@ -1150,11 +1150,12 @@
 <translation id="7607002721634913082">Pauzirano</translation>
 <translation id="7609951632080598826">Prikaz kalendara, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kamera je ponovo povezana.</translation>
-<translation id="761736749114493194">Uključite ili isključite okvir kamere. <ph name="STATE_TEXT" /></translation>
+<translation id="761736749114493194">Uključite/isključite kadriranje kamere. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Vidite postavke Dijeljenja u blizini.</translation>
 <translation id="7634648064048557203">Kamera se uklopila u donji desni ugao</translation>
 <translation id="7641938616688887143">Snimaj</translation>
+<translation id="7642106959537987271">način inverzije boja</translation>
 <translation id="7642647758716480637">Otvaranje postavki mreže <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (vlasnik)</translation>
 <translation id="7647488630410863958">Otključajte uređaj da vidite obavještenja</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">Vrati na zadano</translation>
 <translation id="8214996719228530800">Canary kanal</translation>
 <translation id="8219451629189078428">Za to vrijeme vaš Chromebook mora ostati uključen i priključen na napajanje. Provjerite jesu li kablovi punjača ili adaptera dobro priključeni u Chromebook i utičnicu. Nemojte isključivati Chromebook.</translation>
+<translation id="8230305195727960608">Način inverzije boja</translation>
 <translation id="8236042855478648955">Vrijeme je za odmor</translation>
 <translation id="8246282815785366524">Dobro došli nazad, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />, baterija telefona <ph name="BATTERY_STATUS" /></translation>
@@ -1311,7 +1313,7 @@
 <translation id="851458219935658693">Prikazivanje prozora s trenutne radne površine, odabrano je dugme za izbor</translation>
 <translation id="8517041960877371778">Moguće je da se vaš uređaj <ph name="DEVICE_TYPE" /> neće puniti dok je uključen.</translation>
 <translation id="8535393432370007982">Poništavanje načina sortiranja po boji</translation>
-<translation id="8541078764854166027">Okvir kamere</translation>
+<translation id="8541078764854166027">Kadriranje kamere</translation>
 <translation id="8542053257095774575">Nema sačuvanih radnih površina ili šablona</translation>
 <translation id="8546059259582788728">Poništavanje sortiranja je uspjelo</translation>
 <translation id="8551588720239073785">Postavke datuma i vremena</translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">Vid. u blizini</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Koristi se <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Omogućen je način inverzije boja. Ponovo pritisnite Ctrl + Search + H da biste ga isključili.</translation>
 <translation id="899350903320462459">Otključajte uređaj kao <ph name="LOGIN_ID" /> da izvršite radnju obavještenja</translation>
 <translation id="9000771174482730261">UPRAVLJAJTE POHRANOM</translation>
 <translation id="9017320285115481645">Unesite kôd za pristup roditelja za Family Link.</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">Roditelj je zaključao uređaj za danas</translation>
 <translation id="9220525904950070496">Ukloni račun</translation>
 <translation id="923686485342484400">Dvaput pritisnite Control Shift Q da se odjavite.</translation>
+<translation id="92580429198593979">Pritisnuli ste tipkovni prečac za inverziju boja. Želite li je uključiti?</translation>
 <translation id="925832987464884575">Sakrij preglede</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> zahtijeva da odmah ažurirate uređaj <ph name="DEVICE_TYPE" /></translation>
 <translation id="938963181863597773">Šta ima u mom kalendaru?</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index fcc3ec03..a7e3117 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -1150,6 +1150,7 @@
 <translation id="7633755430369750696">Zobrazit nastavení sdílení nablízko</translation>
 <translation id="7634648064048557203">Kamera byl připnuta do pravého dolního rohu</translation>
 <translation id="7641938616688887143">Zaznamenat</translation>
+<translation id="7642106959537987271">režim převrácení barev</translation>
 <translation id="7642647758716480637">Otevřít nastavení sítě <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (vlastník)</translation>
 <translation id="7647488630410863958">Chcete-li zobrazit oznámení, odemkněte zařízení</translation>
@@ -1255,6 +1256,7 @@
 <translation id="8209010265547628927">Resetovat</translation>
 <translation id="8214996719228530800">Verze Canary</translation>
 <translation id="8219451629189078428">Chromebook po tuto dobu musí zůstat zapnutý a připojený ke zdroji napájení. Kabely adaptéru nebo nabíječky musí být správně zapojeny do Chromebooku i do zásuvky. Chromebook nevypínejte.</translation>
+<translation id="8230305195727960608">Režim převrácení barev</translation>
 <translation id="8236042855478648955">Čas na přestávku</translation>
 <translation id="8246282815785366524">Vítejte zpět, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, síla signálu: <ph name="SIGNAL_STRENGTH" />, baterie telefonu: <ph name="BATTERY_STATUS" /></translation>
@@ -1380,6 +1382,7 @@
 <translation id="8982906748181120328">Viditelnost nablízko</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Metoda zadávání: <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Převrácení barev je povoleno. Vypnete ho opětovným stisknutím kombinace kláves Ctrl + vyhledávací tlačítko + H.</translation>
 <translation id="899350903320462459">Chcete-li provést akci s oznámením, odemkněte zařízení jako <ph name="LOGIN_ID" /></translation>
 <translation id="9000771174482730261">SPRAVOVAT ÚLOŽIŠTĚ</translation>
 <translation id="9017320285115481645">Zadejte svůj rodičovský přístupový kód služby Family Link.</translation>
@@ -1428,6 +1431,7 @@
 <translation id="921989828232331238">Rodič zařízení na celý den uzamkl</translation>
 <translation id="9220525904950070496">Odebrat účet</translation>
 <translation id="923686485342484400">Odhlásíte se dvojitým stisknutím kombinace kláves Control Shift Q.</translation>
+<translation id="92580429198593979">Stiskli jste klávesovou zkratku pro převrácení barev. Chcete ho zapnout?</translation>
 <translation id="925832987464884575">Skrýt náhledy</translation>
 <translation id="937214777182567951">Organizace <ph name="MANAGER" /> vyžaduje, abyste toto zařízení <ph name="DEVICE_TYPE" /> okamžitě aktualizovali.</translation>
 <translation id="938963181863597773">Co mám v kalendáři?</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index cfae2980..bd71360 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Η Μεγέθυνση πλήρους οθόνης ενεργοποιήθηκε. Πατήστε Ctrl+Search+M ξανά για να τον απενεργοποιήσετε.</translation>
 <translation id="2302092602801625023">Αυτός ο λογαριασμός είναι διαχειριζόμενος από το Family Link</translation>
 <translation id="2303600792989757991">Επισκόπηση εναλλαγής παραθύρων</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: Πρόσφατες καταγραφές οθόνης, λήψεις και καρφιτσωμένα αρχεία</translation>
 <translation id="2318576281648121272">Σήμερα <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" /> , κατηγορία αποτελέσματος αναζήτησης</translation>
 <translation id="2322173485024759474">Πίσω ανά γράμμα</translation>
@@ -1155,6 +1156,7 @@
 <translation id="7633755430369750696">Εμφάνιση ρυθμίσεων της λειτουργίας Κοινοποίηση κοντά.</translation>
 <translation id="7634648064048557203">Η προεπισκόπηση κάμερας τοποθετήθηκε στην κάτω δεξιά γωνία</translation>
 <translation id="7641938616688887143">Εγγραφή</translation>
+<translation id="7642106959537987271">λειτουργία αντιστροφής χρωμάτων</translation>
 <translation id="7642647758716480637">Άνοιγμα ρυθμίσεων για το δίκτυο <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (κάτοχος)</translation>
 <translation id="7647488630410863958">Ξεκλειδώστε τη συσκευή για να δείτε τις ειδοποιήσεις σας</translation>
@@ -1260,6 +1262,7 @@
 <translation id="8209010265547628927">Επαναφορά</translation>
 <translation id="8214996719228530800">Κανάλι Canary</translation>
 <translation id="8219451629189078428">Το Chromebook πρέπει να παραμείνει ενεργοποιημένο και συνδεδεμένο σε παροχή ρεύματος. Βεβαιωθείτε ότι τα καλώδια του φορτιστή ή του μετασχηματιστή είναι συνδεδεμένα σωστά, τόσο στο Chromebook όσο και στην πρίζα. Μην απενεργοποιήσετε το Chromebook.</translation>
+<translation id="8230305195727960608">Λειτουργία αντιστροφής χρωμάτων</translation>
 <translation id="8236042855478648955">Ώρα για διάλειμμα</translation>
 <translation id="8246282815785366524">Καλώς ορίσατε και πάλι, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, Ισχύς σήματος <ph name="SIGNAL_STRENGTH" />, Μπαταρία τηλεφώνου <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1389,7 @@
 <translation id="8982906748181120328">Ορατότ. κοντά</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Χρήση <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Η λειτουργία αντιστροφής χρωμάτων ενεργοποιήθηκε. Πατήστε ξανά Ctrl+Search+H για να την απενεργοποιήσετε.</translation>
 <translation id="899350903320462459">Ξεκλειδώστε τη συσκευή ως <ph name="LOGIN_ID" /> για εκτέλεση της ενέργειας ειδοποίησης</translation>
 <translation id="9000771174482730261">ΔΙΑΧΕΙΡΙΣΗ ΑΠΟΘΗΚΕΥΤΙΚΟΥ ΧΩΡΟΥ</translation>
 <translation id="9017320285115481645">Εισαγάγετε τον κωδικό πρόσβασης γονέα του Family Link.</translation>
@@ -1434,6 +1438,7 @@
 <translation id="921989828232331238">Ο γονέας σας κλείδωσε τη συσκευή σας για σήμερα</translation>
 <translation id="9220525904950070496">Κατάργηση λογαριασμού</translation>
 <translation id="923686485342484400">Πατήστε Ctrl + Shift + Q δύο φορές για να αποσυνδεθείτε.</translation>
+<translation id="92580429198593979">Πατήσατε τη συντόμευση πληκτρολογίου για την αντιστροφή χρωμάτων. Θέλετε να την απενεργοποιήσετε;</translation>
 <translation id="925832987464884575">Απόκρυψη προεπισκοπήσεων</translation>
 <translation id="937214777182567951">Ο τομέας <ph name="MANAGER" /> απαιτεί να ενημερώσετε άμεσα τη συσκευή <ph name="DEVICE_TYPE" /></translation>
 <translation id="938963181863597773">Τι υπάρχει στο ημερολόγιό μου;</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 0d0fcf7db..f905ade 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -896,6 +896,7 @@
 <translation id="6064463340679478396">Done using the file</translation>
 <translation id="6073451960410192870">Stop recording</translation>
 <translation id="6074087755403037157">Beta channel</translation>
+<translation id="6095008505822982596">Speech rate</translation>
 <translation id="6099678161144790572">Edited in the past month</translation>
 <translation id="6103838137565245112">system</translation>
 <translation id="6114505516289286752"><ph name="LANGUAGE" /> speech files downloaded</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index e002adff..7ff6759a 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Grabar pantalla completa</translation>
 <translation id="2135456203358955318">Lupa con vista acoplada</translation>
 <translation id="2148716181193084225">Hoy</translation>
+<translation id="2161132820593978283">Prueba el encuadre de la cámara para estar en el centro de la pantalla en las videollamadas. Actívalo en la Configuración rápida.</translation>
 <translation id="2170530631236737939">Para salir de la Vista general, desliza tres dedos hacia abajo.</translation>
 <translation id="219905428774326614">Launcher, todas las apps</translation>
 <translation id="2201071101391734388">Foto reciente <ph name="INDEX" /> de <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">No conectado</translation>
 <translation id="2408955596600435184">Ingresa tu PIN</translation>
 <translation id="2412593942846481727">Actualización disponible</translation>
+<translation id="2426051945783024481">El encuadre de la cámara se centró automáticamente</translation>
 <translation id="2427507373259914951">Clic con botón izquierdo</translation>
 <translation id="2429753432712299108">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para sincronizarse. Antes de aceptar, debes confirmar que aparece la siguiente clave de contraseña en el dispositivo: <ph name="PASSKEY" />.</translation>
 <translation id="2435457462613246316">Mostrar contraseña</translation>
@@ -1039,6 +1041,7 @@
 <translation id="6960565108681981554">No está activada. Comunícate con tu proveedor.</translation>
 <translation id="6961121602502368900">La opción Silenciar teléfono no está disponible en los perfiles de trabajo</translation>
 <translation id="6961840794482373852">Se modificó la combinación de teclas Alt + flecha hacia arriba. Para usar la tecla Re Pág, presiona la tecla <ph name="LAUNCHER_KEY_NAME" /> + flecha hacia arriba.</translation>
+<translation id="696267987219125751">El encuadre de la cámara está desactivado.</translation>
 <translation id="6965382102122355670">Aceptar</translation>
 <translation id="6972754398087986839">Comenzar</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1129,6 +1132,7 @@
 <translation id="7513922695575567867">Calendario, semana del <ph name="DATE" />, se seleccionó <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Descargar</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">El encuadre de la cámara está activado.</translation>
 <translation id="7526573455193969409">Es posible que la red esté supervisada</translation>
 <translation id="7536035074519304529">Dirección IP: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Por el momento, las apps de Linux y las ventanas de incógnito no son compatibles. Se guardarán las demás apps.</translation>
@@ -1147,6 +1151,7 @@
 <translation id="7607002721634913082">Detenido</translation>
 <translation id="7609951632080598826">Vista del calendario, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Se volvió a conectar la cámara.</translation>
+<translation id="761736749114493194">Activa o desactiva el encuadre de la cámara. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7633755430369750696">Mostrar la configuración de Compartir con Nearby</translation>
 <translation id="7634648064048557203">Se ajustó la cámara a la esquina inferior derecha</translation>
@@ -1307,6 +1312,7 @@
 <translation id="851458219935658693">Está seleccionado el botón que muestra las ventanas del escritorio actual</translation>
 <translation id="8517041960877371778">Tu <ph name="DEVICE_TYPE" /> podría no cargarse si el dispositivo está encendido.</translation>
 <translation id="8535393432370007982">Deshacer el orden por color</translation>
+<translation id="8541078764854166027">Encuadre</translation>
 <translation id="8542053257095774575">No hay escritorios ni plantillas guardados</translation>
 <translation id="8546059259582788728">Se deshizo el orden correctamente</translation>
 <translation id="8551588720239073785">Configuración de fecha y hora</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index f3fd621..0b84d2bbf 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -1156,6 +1156,7 @@
 <translation id="7633755430369750696">Muestra los ajustes de Compartir con Nearby.</translation>
 <translation id="7634648064048557203">Cámara ajustada a la esquina inferior derecha</translation>
 <translation id="7641938616688887143">Grabar</translation>
+<translation id="7642106959537987271">modo Inversión de colores</translation>
 <translation id="7642647758716480637">Abrir la configuración de <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (propietario)</translation>
 <translation id="7647488630410863958">Desbloquear el dispositivo para ver las notificaciones</translation>
@@ -1261,6 +1262,7 @@
 <translation id="8209010265547628927">Reiniciar</translation>
 <translation id="8214996719228530800">Canal Canary</translation>
 <translation id="8219451629189078428">Mientras tanto, tu Chromebook debe estar encendido y conectado a la corriente. Asegúrate de que los cables del cargador o del adaptador estén enchufados correctamente al Chromebook y a la toma de corriente. No apagues el Chromebook.</translation>
+<translation id="8230305195727960608">Modo Inversión de colores</translation>
 <translation id="8236042855478648955">Es hora de descansar</translation>
 <translation id="8246282815785366524">Te damos la bienvenida de nuevo, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, intensidad de la señal: <ph name="SIGNAL_STRENGTH" />, batería del teléfono: <ph name="BATTERY_STATUS" /></translation>
@@ -1387,6 +1389,7 @@
 <translation id="8982906748181120328">Visibilidad Nearby</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Estás usando <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Modo Inversión de colores habilitado. Pulsa Ctrl + tecla de búsqueda + H para desactivarla.</translation>
 <translation id="899350903320462459">Desbloquea el dispositivo como <ph name="LOGIN_ID" /> para hacer lo que indica la notificación</translation>
 <translation id="9000771174482730261">GESTIONAR ALMACENAMIENTO</translation>
 <translation id="9017320285115481645">Introduce el código de acceso parental de Family Link.</translation>
@@ -1435,6 +1438,7 @@
 <translation id="921989828232331238">Tu padre, madre o tutor/a han bloqueado tu dispositivo todo el día</translation>
 <translation id="9220525904950070496">Quitar cuenta</translation>
 <translation id="923686485342484400">Pulsa Control Mayús Q dos veces para cerrar sesión.</translation>
+<translation id="92580429198593979">Has pulsado la combinación de teclas para invertir los colores. ¿Quieres activar la función?</translation>
 <translation id="925832987464884575">Ocultar vistas previas</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> requiere que actualices tu <ph name="DEVICE_TYPE" /> inmediatamente</translation>
 <translation id="938963181863597773">¿Qué tengo en el calendario?</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 69e7cf4..f4d8a8c 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -1078,7 +1078,7 @@
 <translation id="7144942256906679589">وضعیت باتری</translation>
 <translation id="7165278925115064263">Alt+Shift+K</translation>
 <translation id="7168224885072002358">برگرداندن به وضوح قدیمی در <ph name="TIMEOUT_SECONDS" /></translation>
-<translation id="7180611975245234373">بازخوانی</translation>
+<translation id="7180611975245234373">بازآوری</translation>
 <translation id="7188494361780961876">منو به گوشه راست بالای صفحه منتقل شد.</translation>
 <translation id="7189412385142492784">‏How far is Venus (فاصله سیاره ناهید از ما چقدر است)</translation>
 <translation id="7198435252016571249">دوربین به گوشه پایین سمت راست چسبید. تداخلی با سطح سیستم روی داد.</translation>
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">نمایش تنظیمات «هم‌رسانی با اطراف».</translation>
 <translation id="7634648064048557203">دوربین به گوشه پایین سمت راست چسبید</translation>
 <translation id="7641938616688887143">ضبط</translation>
+<translation id="7642106959537987271">حالت وارونگی رنگ</translation>
 <translation id="7642647758716480637">باز کردن تنظیمات <ph name="NETWORK_NAME" />، <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (مالک)</translation>
 <translation id="7647488630410863958">برای مشاهده اعلان‌هایتان، قفل دستگاه را باز کنید</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">بازنشانی</translation>
 <translation id="8214996719228530800">‏کانال Canary</translation>
 <translation id="8219451629189078428">‏Chromebook باید در این مدت روشن بماند و به برق متصل باشد. مطمئن شوید سیم شارژر یا آداپتور کاملاً متصل باشد، هم به Chromebook و هم به پریز برق. Chromebook را خاموش نکنید.</translation>
+<translation id="8230305195727960608">حالت وارونگی رنگ</translation>
 <translation id="8236042855478648955">وقت استراحت</translation>
 <translation id="8246282815785366524"><ph name="GIVEN_NAME" />، دوباره خوش آمدید</translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />، قدرت سیگنال <ph name="SIGNAL_STRENGTH" />، باتری تلفن<ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">نمایان برای اطراف</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">درحال استفاده از <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">‏حالت «وارونگی رنگ» فعال شد. برای خاموش کردن آن، Ctrl+Search+H را دوباره فشار دهید.</translation>
 <translation id="899350903320462459">به‌عنوان <ph name="LOGIN_ID" />، قفل دستگاه را باز کنید تا کنش اعلان اجرا شود</translation>
 <translation id="9000771174482730261">مدیریت فضای ذخیره‌سازی</translation>
 <translation id="9017320285115481645">‏کد دسترسی ولی Family Link را وارد کنید</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">پدر یا مادرتان دستگاهتان را برای تمام روز قفل کرده‌ است</translation>
 <translation id="9220525904950070496">حذف حساب</translation>
 <translation id="923686485342484400">‏برای خروج از سیستم Control Shift Q را دو بار فشار دهید.</translation>
+<translation id="92580429198593979">میان‌بر صفحه‌کلید مربوط به «وارونگی رنگ» را فشار دادید. آیا می‌خواهید آن را روشن کنید؟</translation>
 <translation id="925832987464884575">پنهان کردن پیش‌نمایش‌ها</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> از شما می‌خواهد <ph name="DEVICE_TYPE" /> را فوراً به‌روزرسانی کنید</translation>
 <translation id="938963181863597773">‏?What's on my calendar (در تقویم من چه رویدادی هست؟)</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index ae89f9ae..5fb8f8ef 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Tallenna koko näyttö</translation>
 <translation id="2135456203358955318">Kiinnitetty suurennus</translation>
 <translation id="2148716181193084225">Tänään</translation>
+<translation id="2161132820593978283">Kokeile kameran kehystystä, jotta näyt näytön keskellä videopuheluissa. Voit laittaa sen päälle pika-asetuksista.</translation>
 <translation id="2170530631236737939">Poistu Viimeisimmät-osiosta pyyhkäisemällä kolmella sormella alaspäin</translation>
 <translation id="219905428774326614">Käynnistysohjelma, kaikki sovellukset</translation>
 <translation id="2201071101391734388">Viimeisin kuva <ph name="INDEX" />/<ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Ei yhdistetty</translation>
 <translation id="2408955596600435184">Lisää PIN-koodi</translation>
 <translation id="2412593942846481727">Päivitys saatavilla</translation>
+<translation id="2426051945783024481">Kameran kehys keskitetty automaattisesti</translation>
 <translation id="2427507373259914951">Ykköspainikkeen klikkaus</translation>
 <translation id="2429753432712299108">Bluetooth-laite <ph name="DEVICE_NAME" /> pyytää lupaa laiteparin muodostamiseen. Ennen kuin hyväksyt pyynnön, varmista, että laitteella näkyy tämä avain: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Näytä salasana</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Ei aktivoitu. Ota yhteyttä operaattoriin.</translation>
 <translation id="6961121602502368900">Puhelimen hiljentäminen ei ole käytettävissä työprofiililla</translation>
 <translation id="6961840794482373852">Pikanäppäinyhdistelmä Alt + ylänuoli on muuttunut. Jos haluat käyttää Page Up ‑näppäintä, paina <ph name="LAUNCHER_KEY_NAME" /> + ylänuoli.</translation>
+<translation id="696267987219125751">Kameran kehystys on pois päältä.</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6972754398087986839">Aloitusopas</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Kalenteri, viikko johon kuuluu <ph name="DATE" />, <ph name="SELECTED_DATE" /> on valittuna.</translation>
 <translation id="7514365320538308">Lataa</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Kameran kehystys on päällä.</translation>
 <translation id="7526573455193969409">Verkkoa saatetaan valvoa</translation>
 <translation id="7536035074519304529">IP-osoite: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux-sovelluksia ja incognito-ikkunoita ei tällä hetkellä tueta. Muut sovellukset tallennetaan.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Keskeytetty</translation>
 <translation id="7609951632080598826">Kalenterinäkymä, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kamera yhdistetty uudelleen.</translation>
+<translation id="761736749114493194">Laita kameran kehystys päälle tai pois päältä. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7633755430369750696">Näytä lähijakamisen asetukset.</translation>
 <translation id="7634648064048557203">Kamera kohdistettu oikeaan alakulmaan</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Näytä ikkunat nykyiseltä työpöydältä, valintanappi valittu</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> ei välttämättä lataudu, kun se on käynnissä.</translation>
 <translation id="8535393432370007982">Kumoa värin mukaan lajittelu</translation>
+<translation id="8541078764854166027">Kamerakehystys</translation>
 <translation id="8542053257095774575">Ei tallennettuja virtuaalityöpöytiä tai malleja</translation>
 <translation id="8546059259582788728">Lajittelun kumoaminen ei onnistunut</translation>
 <translation id="8551588720239073785">Aika- ja päivämääräasetukset</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index af080cb..e1572664 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">Ipakita ang mga setting ng Nearby Share.</translation>
 <translation id="7634648064048557203">Nag-snap ang camera sa kanang sulok sa ibaba</translation>
 <translation id="7641938616688887143">I-record</translation>
+<translation id="7642106959537987271">color inversion mode</translation>
 <translation id="7642647758716480637">Buksan ang mga setting para sa <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (may-ari)</translation>
 <translation id="7647488630410863958">I-unlock ang device upang tingnan ang iyong mga notification</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">I-reset</translation>
 <translation id="8214996719228530800">Canary Channel</translation>
 <translation id="8219451629189078428">Kailangang manatiling naka-on at nakasaksak ang iyong Chromebook sa panahong ito. Tiyaking nakasaksak nang maayos ang charger o mga adapter cable, sa iyong Chromebook at sa saksakan. Huwag i-off ang iyong Chromebook.</translation>
+<translation id="8230305195727960608">Color Inversion Mode</translation>
 <translation id="8236042855478648955">Oras na para magpahinga</translation>
 <translation id="8246282815785366524">Maligayang pagbabalik, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, Lakas ng Signal <ph name="SIGNAL_STRENGTH" />, Baterya ng Telepono <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">Visible Nearby</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Gamit ang <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Naka-enable ang Color Inversion Mode. Pindutin ulit ang Ctrl+Search+H para i-off ito.</translation>
 <translation id="899350903320462459">I-unlock ang device bilang <ph name="LOGIN_ID" /> para maisagawa ang pagkilos sa notification</translation>
 <translation id="9000771174482730261">PAMAHALAAN ANG STORAGE</translation>
 <translation id="9017320285115481645">Ilagay ang access code ng magulang sa Family Link.</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">Ni-lock ng iyong magulang ang device mo para sa araw na ito</translation>
 <translation id="9220525904950070496">Alisin ang account</translation>
 <translation id="923686485342484400">Pindutin ang Control Shift Q nang dalawang beses upang mag-sign out.</translation>
+<translation id="92580429198593979">Napindot mo ang keyboard shortcut para sa pag-invert ng kulay. Gusto mo ba itong i-on?</translation>
 <translation id="925832987464884575">Itago ang mga preview</translation>
 <translation id="937214777182567951">Hinihiling sa iyo ng <ph name="MANAGER" /> na i-update kaagad ang <ph name="DEVICE_TYPE" /> mo</translation>
 <translation id="938963181863597773">Ano'ng nakaiskedyul sa kalendaryo ko?</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index d2ce87b..dccaa59 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Enregistrer tout l'écran</translation>
 <translation id="2135456203358955318">Loupe ancrée</translation>
 <translation id="2148716181193084225">Aujourd'hui</translation>
+<translation id="2161132820593978283">Essayez le cadrage de la caméra pour être au centre de l'écran lors d'appels vidéo. Activez-le dans les Réglages rapides.</translation>
 <translation id="2170530631236737939">Balayez l'écran vers le bas avec trois doigts pour quitter l'Aperçu</translation>
 <translation id="219905428774326614">Lanceur d'applications, toutes les applications</translation>
 <translation id="2201071101391734388">Photo récente <ph name="INDEX" /> sur <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Non connecté</translation>
 <translation id="2408955596600435184">Saisissez votre code.</translation>
 <translation id="2412593942846481727">Mise à jour disponible</translation>
+<translation id="2426051945783024481">Cadre de la caméra centré automatiquement</translation>
 <translation id="2427507373259914951">Clic gauche</translation>
 <translation id="2429753432712299108">L'appareil Bluetooth "<ph name="DEVICE_NAME" />" demande l'autorisation de s'associer. Avant d'accepter, veuillez confirmer que le code d'authentification suivant s'affiche sur l'appareil : <ph name="PASSKEY" />.</translation>
 <translation id="2435457462613246316">Afficher le mot de passe</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Désactivé. Contactez votre opérateur.</translation>
 <translation id="6961121602502368900">Couper le son du téléphone n'est pas disponible dans le profil professionnel</translation>
 <translation id="6961840794482373852">Le raccourci clavier Alt+Flèche vers le haut a été modifié. Pour utiliser la touche Page précédente, appuyez sur la touche du <ph name="LAUNCHER_KEY_NAME" />+Flèche vers le haut.</translation>
+<translation id="696267987219125751">Le cadrage de la caméra est désactivé.</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6972754398087986839">Démarrer</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Agenda, semaine du <ph name="DATE" />, le <ph name="SELECTED_DATE" /> est actuellement sélectionné.</translation>
 <translation id="7514365320538308">Télécharger</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Le cadrage de la caméra est activé.</translation>
 <translation id="7526573455193969409">Il est possible que le réseau soit surveillé</translation>
 <translation id="7536035074519304529">Adresse IP : <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Les applis Linux et les fenêtres de navigation privée ne sont pas prises en charge pour le moment. Les autres applis seront enregistrées.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Suspendu</translation>
 <translation id="7609951632080598826">Vue de l'agenda, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Appareil photo reconnecté.</translation>
+<translation id="761736749114493194">Activer/Désactiver le cadrage de la caméra. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7633755430369750696">Afficher les paramètres du Partage à proximité.</translation>
 <translation id="7634648064048557203">Appareil photo aligné sur l'angle inférieur droit</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Afficher les fenêtres du bureau actuel, case d'option cochée</translation>
 <translation id="8517041960877371778">Il est possible que votre appareil <ph name="DEVICE_TYPE" /> ne se recharge pas lorsqu'il est allumé.</translation>
 <translation id="8535393432370007982">Annuler le tri par couleur</translation>
+<translation id="8541078764854166027">Cadrage caméra</translation>
 <translation id="8542053257095774575">Aucun bureau ni modèle enregistré</translation>
 <translation id="8546059259582788728">Le tri a bien été annulé</translation>
 <translation id="8551588720239073785">Paramètres de date et d'heure</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb
index 305d870..fa59ab84 100644
--- a/ash/strings/ash_strings_gl.xtb
+++ b/ash/strings/ash_strings_gl.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Gravar pantalla completa</translation>
 <translation id="2135456203358955318">Lupa ancorada</translation>
 <translation id="2148716181193084225">Hoxe</translation>
+<translation id="2161132820593978283">Proba o zoom automático para aparecer no centro da pantalla durante as videochamadas. Actívao en Configuración rápida.</translation>
 <translation id="2170530631236737939">Para saír do modo Visión xeral, pasa tres dedos cara abaixo</translation>
 <translation id="219905428774326614">Menú de aplicacións, todas as aplicacións</translation>
 <translation id="2201071101391734388">Foto recente <ph name="INDEX" /> de <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Función non conectada</translation>
 <translation id="2408955596600435184">Introduce o PIN</translation>
 <translation id="2412593942846481727">Hai unha actualización dispoñible</translation>
+<translation id="2426051945783024481">O encadramento da cámara centrouse automaticamente</translation>
 <translation id="2427507373259914951">Clic co botón esquerdo do rato</translation>
 <translation id="2429753432712299108">O dispositivo Bluetooth "<ph name="DEVICE_NAME" />" quere recibir permiso para sincronizarse. Antes de aceptalo, confirma que se mostra esta clave de acceso nese dispositivo: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Mostrar contrasinal</translation>
@@ -1039,6 +1041,7 @@
 <translation id="6960565108681981554">Non activada. Contacta co teu operador.</translation>
 <translation id="6961121602502368900">A opción Silenciar teléfono non está dispoñible no perfil de traballo</translation>
 <translation id="6961840794482373852">O atallo Alt + Frecha arriba cambiou. Para usar a tecla Retroceder páxina, preme <ph name="LAUNCHER_KEY_NAME" /> + Frecha arriba.</translation>
+<translation id="696267987219125751">O zoom automático está desactivado.</translation>
 <translation id="6965382102122355670">Aceptar</translation>
 <translation id="6972754398087986839">Introdución</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1129,6 +1132,7 @@
 <translation id="7513922695575567867">Calendario, semana do <ph name="DATE" />; nestes momentos está seleccionada a data <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Descargar</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">O zoom automático está activado.</translation>
 <translation id="7526573455193969409">É posible que se controle a rede</translation>
 <translation id="7536035074519304529">Enderezo IP: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">As aplicacións de Linux e as ventás do modo de incógnito agora mesmo non son compatibles. Gardaranse outras aplicacións.</translation>
@@ -1147,6 +1151,7 @@
 <translation id="7607002721634913082">En pausa</translation>
 <translation id="7609951632080598826">Vista de calendario, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Reconectouse a cámara.</translation>
+<translation id="761736749114493194">Activar/desactivar zoom automático. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7633755430369750696">Mostrar a configuración da función Compartir por Nearby.</translation>
 <translation id="7634648064048557203">Cámara axustada á esquina inferior dereita</translation>
@@ -1307,6 +1312,7 @@
 <translation id="851458219935658693">Seleccionouse o botón de opción para mostrar as ventás do escritorio actual</translation>
 <translation id="8517041960877371778">É posible que o teu <ph name="DEVICE_TYPE" /> non cargue mentres estea acendido.</translation>
 <translation id="8535393432370007982">Desfacer orde de clasificación por cor</translation>
+<translation id="8541078764854166027">Zoom automát.</translation>
 <translation id="8542053257095774575">Non hai modelos nin escritorios gardados</translation>
 <translation id="8546059259582788728">A orde desfíxose correctamente</translation>
 <translation id="8551588720239073785">Configuración de data e hora</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index a7ca825..6efd2ba 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">પૂર્ણ-સ્ક્રીન મૅગ્નિફાયર ચાલુ કર્યું. ટૉગલ કરીને તેને બંધ કરવા માટે ફરીથી Ctrl+Search+M દબાવો.</translation>
 <translation id="2302092602801625023">આ એકાઉન્ટ Family Link દ્વારા મેનેજ થાય છે</translation>
 <translation id="2303600792989757991">ટોગલ વિન્ડો વિહંગાવલોકન</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: તાજેતરના સ્ક્રીન કૅપ્ચર, ડાઉનલોડ અને પિન કરેલી ફાઇલો</translation>
 <translation id="2318576281648121272">આજે <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" /> , શોધ પરિણામની કૅટેગરી</translation>
 <translation id="2322173485024759474">એક અક્ષર પાછળ જાઓ</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index 02e61e23..90248e4 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">Prikaži postavke dijeljenja u blizini.</translation>
 <translation id="7634648064048557203">Kamera je poravnata s donjim desnim kutom</translation>
 <translation id="7641938616688887143">Snimaj</translation>
+<translation id="7642106959537987271">način inverzije boja</translation>
 <translation id="7642647758716480637">Otvorite postavke mreže za <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (vlasnik)</translation>
 <translation id="7647488630410863958">Otključajte uređaj da biste vidjeli obavijesti</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">Poništi</translation>
 <translation id="8214996719228530800">Canary kanal</translation>
 <translation id="8219451629189078428">Chromebook u međuvremenu mora ostati uključen i spojen na napajanje. Provjerite je li kabel punjača ili adaptera pravilno priključen u Chromebook i utičnicu. Nemojte isključivati Chromebook.</translation>
+<translation id="8230305195727960608">Način inverzije boja</translation>
 <translation id="8236042855478648955">Vrijeme je za pauzu</translation>
 <translation id="8246282815785366524">Dobro došli natrag, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />, telefonska baterija <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">Vidljivost uređaja</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Upotrebljava se <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Omogućen je način inverzije boja. Ponovo pritisnite Ctrl + Search + H da biste ga isključili.</translation>
 <translation id="899350903320462459">Otključajte uređaj kao <ph name="LOGIN_ID" /> za izvršenje radnje obavijesti.</translation>
 <translation id="9000771174482730261">UPRAVLJAJTE POHRANOM</translation>
 <translation id="9017320285115481645">Unesite kôd za roditeljski pristup Family Linka.</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">Tvoj je roditelj zaključao ovaj uređaj za danas</translation>
 <translation id="9220525904950070496">Uklanjanje računa</translation>
 <translation id="923686485342484400">Pritisnite Ctrl, Shift i Q dvaput da biste se odjavili.</translation>
+<translation id="92580429198593979">Pritisnuli ste tipkovni prečac za inverziju boja. Želite li je uključiti?</translation>
 <translation id="925832987464884575">Sakrij preglede</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> zahtijeva da odmah ažurirate svoj uređaj <ph name="DEVICE_TYPE" /></translation>
 <translation id="938963181863597773">Što je na mojem kalendaru?</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb
index 6e4f1761..76adba2 100644
--- a/ash/strings/ash_strings_hy.xtb
+++ b/ash/strings/ash_strings_hy.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Տեսագրել լիաէկրան ռեժիմում</translation>
 <translation id="2135456203358955318">Ամրացված խոշորացույց</translation>
 <translation id="2148716181193084225">Այսօր</translation>
+<translation id="2161132820593978283">Տեսազանգերում փորձեք օգտագործել տեսախցիկի կադրավորումը էկրանի կենտրոնով։ Միացրեք այն Արագ կարգավորումներում։</translation>
 <translation id="2170530631236737939">Համատեսքը փակելու համար երեք մատով սահեցրեք վար</translation>
 <translation id="219905428774326614">Գործարկիչ, բոլոր հավելվածները</translation>
 <translation id="2201071101391734388">Վերջին լուսանկար <ph name="INDEX" />/<ph name="TOTAL_COUNT" />։</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Միացված չէ</translation>
 <translation id="2408955596600435184">Մուտքագրեք ձեր PIN կոդը</translation>
 <translation id="2412593942846481727">Հասանելի է նոր տարբերակը</translation>
+<translation id="2426051945783024481">Տեսախցիկն ավտոմատ կերպով կենտրոնաբերվեց</translation>
 <translation id="2427507373259914951">Ձախ սեղմում</translation>
 <translation id="2429753432712299108">«<ph name="DEVICE_NAME" />» Bluetooth սարքը զուգավորման թույլտվություն է խնդրում: Նախքան ընդունելը հաստատեք, որ սարքի վրա ցուցադրվում է այս կոդը` <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Ցույց տալ գաղտնաբառը</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Ակտիվացված չէ։ Դիմեք ձեր կապի օպերատորին։</translation>
 <translation id="6961121602502368900">«Ծանուցումների անջատում հեռախոսում» գործառույթը հասանելի չէ աշխատանքային պրոֆիլում</translation>
 <translation id="6961840794482373852">«Alt + վեր սլաք» ստեղնային դյուրանցումը փոփոխվել է։ Page Up ստեղնի գործողություններն օգտագործելու համար սեղմեք «<ph name="LAUNCHER_KEY_NAME" /> + վեր սլաք» ստեղնային դյուրանցումը։</translation>
+<translation id="696267987219125751">Տեսախցիկի կադրավորումն անջատված է</translation>
 <translation id="6965382102122355670">Եղավ</translation>
 <translation id="6972754398087986839">Սկսել աշխատանքը</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1127,6 +1130,7 @@
 <translation id="7513922695575567867">Օրացույց, <ph name="DATE" /> ամսաթվի շաբաթը, այժմ ընտրված է՝ <ph name="SELECTED_DATE" />։</translation>
 <translation id="7514365320538308">Ներբեռնել</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Տեսախցիկի կադրավորումը միացված է։</translation>
 <translation id="7526573455193969409">Ցանցը կարող է վերահսկվել</translation>
 <translation id="7536035074519304529">IP հասցե՝ <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Լինուքսի հավելվածներն ու ինկոգնիտո պատուհանները ներկայումս չեն աջակցվում։ Մյուս հավելվածները կպահվեն։</translation>
@@ -1145,6 +1149,7 @@
 <translation id="7607002721634913082">Դադարեցված է</translation>
 <translation id="7609951632080598826">Օրացույցի դիտակերպ, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Տեսախցիկը նորից միացվեց։</translation>
+<translation id="761736749114493194">Միացնել/անջատել տեսախցիկի կադրավորումը։ <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Ցուցադրել «Փոխանակում մոտակա սարքերի հետ» գործառույթի կարգավորումները։</translation>
 <translation id="7634648064048557203">Տեսախցիկի պատկերն ամրացված է ներքևի աջ անկյունում</translation>
@@ -1305,6 +1310,7 @@
 <translation id="851458219935658693">Ընթացիկ աշխատասեղանի պատուհանների ցուցադրում, ընտրված է կետակոճակը</translation>
 <translation id="8517041960877371778">Որպեսզի ձեր <ph name="DEVICE_TYPE" /> սարքը լիցքավորվի, անհրաժեշտ է անջատել այն:</translation>
 <translation id="8535393432370007982">Ըստ գույնի դասավորումը հետարկվեց</translation>
+<translation id="8541078764854166027">Կադրավորում</translation>
 <translation id="8542053257095774575">Պահված աշխատասեղաններ կամ ձևանմուշներ չկան</translation>
 <translation id="8546059259582788728">Դասավորումը հետարկվեց</translation>
 <translation id="8551588720239073785">Ամսաթվի և ժամի կարգավորումներ</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb
index 3fb3114..e880f4a 100644
--- a/ash/strings/ash_strings_is.xtb
+++ b/ash/strings/ash_strings_is.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Taka upp á öllum skjánum</translation>
 <translation id="2135456203358955318">Stækkunargler í föstum glugga</translation>
 <translation id="2148716181193084225">Í dag</translation>
+<translation id="2161132820593978283">Prófaðu myndavélarramma svo þú sért á miðjum skjánum í myndsímtölum. Kveiktu á honum í flýtistillingum.</translation>
 <translation id="2170530631236737939">Strjúktu niður með þremur fingrum til að loka Yfirliti.</translation>
 <translation id="219905428774326614">Ræsiforrit, öll forrit</translation>
 <translation id="2201071101391734388">Nýleg mynd <ph name="INDEX" /> af <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Ekki tengt</translation>
 <translation id="2408955596600435184">Sláðu inn PIN-númerið þitt</translation>
 <translation id="2412593942846481727">Uppfærsla í boði</translation>
+<translation id="2426051945783024481">Myndavélarrammi miðjusettur sjálfkrafa</translation>
 <translation id="2427507373259914951">Vinstrismella</translation>
 <translation id="2429753432712299108">Bluetooth-tækið „<ph name="DEVICE_NAME" />“ vill fá heimild til að parast. Áður en þú samþykkir skaltu staðfesta að þessi aðgangslykill birtist á því tæki: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Sýna aðgangsorð</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Ekki virkt. Hafðu samband við símafyrirtækið.</translation>
 <translation id="6961121602502368900">Ekki er hægt að slökkva á hljóði símans í vinnusniði</translation>
 <translation id="6961840794482373852">Flýtilyklinum „Alt + ör upp“ hefur verið breytt. Ýttu á <ph name="LAUNCHER_KEY_NAME" />-lykilinn + ör upp til að nota Page Up-lykilinn.</translation>
+<translation id="696267987219125751">Slökkt er á myndavélarramma.</translation>
 <translation id="6965382102122355670">Í lagi</translation>
 <translation id="6972754398087986839">Byrja</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Dagatal, vikan <ph name="DATE" />, núverandi val er <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Sækja</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Kveikt er á myndavélarramma.</translation>
 <translation id="7526573455193969409">Hugsanlega er fylgst með netinu</translation>
 <translation id="7536035074519304529">IP-tala: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux forrit og huliðsgluggar eru ekki studdir eins og er. Önnur forrit verða vistuð.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Hlé</translation>
 <translation id="7609951632080598826">Dagatalsyfirlit, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Myndavél tengd aftur.</translation>
+<translation id="761736749114493194">Kveikja/slökkva á myndavélarramma. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Sýna stillingar nærdeilingar.</translation>
 <translation id="7634648064048557203">Myndavél fest við neðra horn hægra megin</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Sýna glugga á núverandi skrifborði, hringhnappur valinn</translation>
 <translation id="8517041960877371778">Ekki er víst að <ph name="DEVICE_TYPE" /> hlaðist á meðan kveikt er á tölvunni.</translation>
 <translation id="8535393432370007982">Afturkalla röðun eftir lit</translation>
+<translation id="8541078764854166027">Myndavélarrammi</translation>
 <translation id="8542053257095774575">Engin vistuð skrifborð eða sniðmát</translation>
 <translation id="8546059259582788728">Röðun var afturkölluð</translation>
 <translation id="8551588720239073785">Dagsetningar- og tímastillingar</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index a0fc870..cc9ea42 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">ეკრანის სრულად ჩაწერა</translation>
 <translation id="2135456203358955318">ჩამაგრებული ლუპა</translation>
 <translation id="2148716181193084225">დღეს</translation>
+<translation id="2161132820593978283">ცადეთ კამერის კადრირება, რის მეშვეობითაც, ვიდეოზარების დროს, ეკრანის ცენტრში იქნებით მოქცეული. მისი ჩართვა შეგიძლიათ სწრაფი პარამეტრებიდან.</translation>
 <translation id="2170530631236737939">მიმოხილვიდან გასასვლელად გადაფურცლეთ ქვემოთ სამი თითით</translation>
 <translation id="219905428774326614">გამშვები, ყველა აპი</translation>
 <translation id="2201071101391734388">ბოლოდროინდელი ფოტო <ph name="INDEX" /> / <ph name="TOTAL_COUNT" />-დან.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">არ არის დაკავშირებული</translation>
 <translation id="2408955596600435184">შეიყვანეთ თქვენი PIN-კოდი</translation>
 <translation id="2412593942846481727">ხელმისაწვდომია განახლება</translation>
+<translation id="2426051945783024481">კამერის კადრი ავტომატურად ექცევა ცენტრში</translation>
 <translation id="2427507373259914951">მარცხენა დაწკაპუნება</translation>
 <translation id="2429753432712299108">Bluetooth მოწყობილობა „<ph name="DEVICE_NAME" />“ მოითხოვს ნებართვას დაწყვილებისთვის. დათანხმებამდე, დაადასტურეთ, რომ ეს კოდი მითითებულია მოწყობილობაში: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">პაროლის ჩვენება</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">არ არის გააქტიურებული. დაუკავშირდით თქვენს ოპერატორს.</translation>
 <translation id="6961121602502368900">ტელეფონის ჩაჩუმება მიუწვდომელია სამსახურის პროფილში</translation>
 <translation id="6961840794482373852">კლავიატურის მალსახმობი „Alt + ზემოთ მიმართული ისარი“ შეიცვალა. Page Up კლავიშით სარგებლობისთვის დააჭირეთ კლავიშს <ph name="LAUNCHER_KEY_NAME" /> + ზემოთ მიმართულ ისარს.</translation>
+<translation id="696267987219125751">კამერის კადრირება გამორთულია.</translation>
 <translation id="6965382102122355670">კარგი</translation>
 <translation id="6972754398087986839">დაწყება</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">კალენდარი, <ph name="DATE" />-ის კვირა, ამჟამად არჩეულია <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">ჩამოტვირთვა</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">კამერის კადრირება ჩართულია.</translation>
 <translation id="7526573455193969409">ქსელზე შესაძლოა ხორციელდებოდეს მონიტორინგი</translation>
 <translation id="7536035074519304529">IP მისამართი: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux აპები და ინკოგნიტო ფანჯრები ამჟამად მხარდაუჭერელია. სხვა აპები შეინახება.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">დაპაუზებული</translation>
 <translation id="7609951632080598826">კალენდრის ხედი, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">კამერა ხელახლა დაკავშირდა.</translation>
+<translation id="761736749114493194">კამერის კადრირების გადართვა. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />°F</translation>
 <translation id="7633755430369750696">მახლობლად გაზიარების პარამეტრების ჩვენება.</translation>
 <translation id="7634648064048557203">კამერა მიზიდულია ქვედა მარჯვენა კუთხეში</translation>
@@ -1308,6 +1313,7 @@
 <translation id="851458219935658693">ამჟამინდელი სამუშაო მაგიდის ფანჯრების ჩვენება, არჩეულია არჩევანის ღილაკი</translation>
 <translation id="8517041960877371778">თქვენი <ph name="DEVICE_TYPE" /> შეიძლება არ დაიტენოს, როცა ის ჩართულია.</translation>
 <translation id="8535393432370007982">ფერის მიხედვით დალაგების გაუქმება</translation>
+<translation id="8541078764854166027">კამერის კადრირება</translation>
 <translation id="8542053257095774575">სამუშაო მაგიდები ან შაბლონები არ არის შენახული</translation>
 <translation id="8546059259582788728">დალაგება წარმატებით გაუქმდა</translation>
 <translation id="8551588720239073785">თარიღისა და დროის პარამეტრები</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb
index 7f7ed9a9..42ef75b 100644
--- a/ash/strings/ash_strings_kk.xtb
+++ b/ash/strings/ash_strings_kk.xtb
@@ -450,7 +450,7 @@
 <translation id="3600061223661453002">Өшіру</translation>
 <translation id="3604801046548457007"><ph name="DESK_TITILE" /> үстелі жасалды.</translation>
 <translation id="3606978283550408104">Брайль дисплейі қосылды.</translation>
-<translation id="3615926715408477684">Мобильдік деректерді қоссаңыз, Bluetooth та қосылады.</translation>
+<translation id="3615926715408477684">Мобильдік интернетті қоссаңыз, Bluetooth та қосылады.</translation>
 <translation id="3616883743181209306">Мәзір экранның жоғарғы оң жақ бұрышына жылжытылды.</translation>
 <translation id="3619536907358025872">Скриншот параметрлері</translation>
 <translation id="3621202678540785336">Енгізу</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb
index f3f7d82..cba6f49a 100644
--- a/ash/strings/ash_strings_km.xtb
+++ b/ash/strings/ash_strings_km.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">បង្ហាញ​ការកំណត់​ការចែករំលែកនៅជិត។</translation>
 <translation id="7634648064048557203">បានតម្រៀប​កាមេរ៉ាទៅ​ជ្រុងខាងស្ដាំ​ផ្នែកខាងក្រោម</translation>
 <translation id="7641938616688887143">ថតវីដេអូ</translation>
+<translation id="7642106959537987271">មុខងារ​បញ្ច្រាស​ពណ៌</translation>
 <translation id="7642647758716480637">បើក​ការកំណត់​សម្រាប់ <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ម្ចាស់)</translation>
 <translation id="7647488630410863958">ដោះសោឧបករណ៍ដើម្បីមើលការជូនដំណឹងរបស់អ្នក</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">កំណត់​ឡើងវិញ</translation>
 <translation id="8214996719228530800">បណ្តាញ Canary</translation>
 <translation id="8219451629189078428">Chromebook របស់អ្នកត្រូវបន្តបើក និងភ្ជាប់ទៅថាមពលនៅអំឡុងពេលនេះ។ ត្រូវប្រាកដថា ខ្សែសាក ឬឆ្នាំងសាកត្រូវបានដោតត្រឹមត្រូវ ទាំងនៅលើ Chromebook របស់អ្នក និង​ព្រីភ្លើង។ សូមកុំបិទ Chromebook ​របស់អ្នក។</translation>
+<translation id="8230305195727960608">មុខងារ​បញ្ច្រាស​ពណ៌</translation>
 <translation id="8236042855478648955">ដល់​ពេល​សម្រាក​ហើយ</translation>
 <translation id="8246282815785366524">សូមស្វាគមន៍​សម្រាប់ការវិលត្រឡប់មកវិញ <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, កម្លាំង​រលកសញ្ញា <ph name="SIGNAL_STRENGTH" />, ថ្មទូរសព្ទ <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">លទ្ធភាពមើលឃើញនៅជិត</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">កំពុងប្រើ <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">បាន​បើក​មុខងារ​បញ្ច្រាស​ពណ៌។ ចុចគ្រាប់ចុច Ctrl+ស្វែងរក+H ម្ដងទៀត ដើម្បីបិទ​មុខងារនេះ។</translation>
 <translation id="899350903320462459">ដោះសោ​ឧបករណ៍ជា <ph name="LOGIN_ID" /> ដើម្បី​ធ្វើសកម្មភាព​ជូន​ដំណឹង</translation>
 <translation id="9000771174482730261">គ្រប់គ្រងទំហំផ្ទុក</translation>
 <translation id="9017320285115481645">បញ្ចូលលេខកូដ​ចូលប្រើប្រាស់​របស់មាតាបិតា​សម្រាប់ Family Link ។</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">មាតា​បិតា​របស់អ្នក​បាន​ចាក់​សោ​ឧបករណ៍​របស់អ្នក​ពេញ​មួយ​ថ្ងៃ</translation>
 <translation id="9220525904950070496">ដកគណនីចេញ</translation>
 <translation id="923686485342484400">ចុច Control Shift Q ពីរដងដើម្បីចាកចេញ។</translation>
+<translation id="92580429198593979">អ្នក​បាន​ចុច​ផ្លូវកាត់​ក្ដារចុច​សម្រាប់​ការបញ្ច្រាស​ពណ៌។ តើអ្នក​ចង់​បើក​វា​ដែរឬទេ?</translation>
 <translation id="925832987464884575">លាក់​ការមើល​សាកល្បង</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> តម្រូវឱ្យអ្នក​ដំឡើងកំណែ <ph name="DEVICE_TYPE" /> របស់អ្នក​ភ្លាមៗ</translation>
 <translation id="938963181863597773">តើ​មានអ្វី​នៅលើ​ប្រតិទិន​របស់ខ្ញុំ?</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb
index bf15254..9f4b108 100644
--- a/ash/strings/ash_strings_ky.xtb
+++ b/ash/strings/ash_strings_ky.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Толук экран режиминде жаздыруу</translation>
 <translation id="2135456203358955318">Жалгаштырылган лупа</translation>
 <translation id="2148716181193084225">Бүгүн</translation>
+<translation id="2161132820593978283">Видео чалуу учурунда сиз экрандын борборунда болгудай кылып камеранын алкагын колдонуп көрүңүз. Аны Ыкчам параметрлерден колдонуп көрүңүз.</translation>
 <translation id="2170530631236737939">Жалпы маалыматтан чыгуу үчүн үч манжаңыз менен ылдый сүрүп коюңуз</translation>
 <translation id="219905428774326614">Жүргүзгүч, бардык колдонмолор</translation>
 <translation id="2201071101391734388">Акыркы сүрөт (<ph name="TOTAL_COUNT" /> ичинен <ph name="INDEX" />).</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Туташкан жок</translation>
 <translation id="2408955596600435184">PIN кодуңузду киргизиңиз</translation>
 <translation id="2412593942846481727">Жаңы версия бар</translation>
+<translation id="2426051945783024481">Камеранын алкагы автоматтык түрдө ортого коюлду</translation>
 <translation id="2427507373259914951">Сол баскычын чыкылдатуу</translation>
 <translation id="2429753432712299108">"<ph name="DEVICE_NAME" />" Bluetooth түзмөгү жупташуу үчүн уруксат суроодо. Уруксат берүүдөн мурун, төмөнкү купуя сөз айкашы түзмөгүңүздө көрүнүп тургандыгын ырастаңыз: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Сырсөздү көрсөтүү</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Жандырылган эмес. Байланыш операторуңузга кайрылыңыз.</translation>
 <translation id="6961121602502368900">Жумуш профилинде телефондун үнүн басууга болбойт</translation>
 <translation id="6961840794482373852">Alt + өйдө жебе ыкчам баскычы өзгөртүлдү. Барактын өйдө жагына жылдыруу баскычын колдонуу үчүн <ph name="LAUNCHER_KEY_NAME" /> баскычын + өйдө жебени басыңыз.</translation>
+<translation id="696267987219125751">Камеранын алкагы өчүк.</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6972754398087986839">Баштоо</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Жылнаама, <ph name="DATE" /> аптасы, учурда <ph name="SELECTED_DATE" /> тандалып турат.</translation>
 <translation id="7514365320538308">Жүктөп алуу</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Камеранын алкагы күйүк.</translation>
 <translation id="7526573455193969409">Тармак көзөмөлдөнүшү мүмкүн</translation>
 <translation id="7536035074519304529">IP дареги: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux колдонмолору жана жашыруун терезелер учурда колдоого алынбайт. Башка колдонмолор сакталат.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Бир азга токтотулду</translation>
 <translation id="7609951632080598826">Жылнаама, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Камера кайра туташтырылды.</translation>
+<translation id="761736749114493194">Камеранын алкагын өчүрүү/күйгүзүү. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Nearby Share жөндөөлөрү көрүнсүн.</translation>
 <translation id="7634648064048557203">Камера төмөнкү оң бурчка кадалды</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Учурдагы иш тактадагы терезелерди көрсөтүү, радио баскычы тандалды</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> түзмөгүңүз өчүп турганда кубатталбай калышы мүмкүн.</translation>
 <translation id="8535393432370007982">Түсү боюнча иреттөө тартибин артка кайтаруу</translation>
+<translation id="8541078764854166027">Камера алкагы</translation>
 <translation id="8542053257095774575">Сакталган иш такталар же үлгүлөр жок</translation>
 <translation id="8546059259582788728">Иреттөө токтотулду</translation>
 <translation id="8551588720239073785">Күн менен убакыт жөндөөлөрү</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb
index 864301ab..6244ad7 100644
--- a/ash/strings/ash_strings_lo.xtb
+++ b/ash/strings/ash_strings_lo.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">ບັນທຶກໜ້າຈໍເຕັມ</translation>
 <translation id="2135456203358955318">ແວ່ນຂະຫຍາຍທີ່ຕັ້ງໄວ້ແລ້ວ</translation>
 <translation id="2148716181193084225">ມື້​ນີ້</translation>
+<translation id="2161132820593978283">ລອງໃຊ້ການວາງເຟຣມກ້ອງຖ່າຍຮູບເພື່ອໃຫ້ທ່ານຢູ່ກາງຈໍໃນເວລາໂທວິດີໂອ ເປີດໃຊ້ມັນໃນການຕັ້ງຄ່າດ່ວນ.</translation>
 <translation id="2170530631236737939">ໃຊ້ສາມນິ້ວມືປັດລົງເພື່ອອອກຈາກພາບຮວມ</translation>
 <translation id="219905428774326614">ຕົວເປີດນຳໃຊ້, ແອັບທັງໝົດ</translation>
 <translation id="2201071101391734388">ຮູບຫຼ້າສຸດທີ <ph name="INDEX" /> ຈາກທັງໝົດ <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">ບໍ່ໄດ້ເຊື່ອມຕໍ່</translation>
 <translation id="2408955596600435184">​ປ້ອນ​ລະ​ຫັດ PIN ຂອງ​ທ່ານ</translation>
 <translation id="2412593942846481727">ມີການອັບເດດໃໝ່</translation>
+<translation id="2426051945783024481">ວາງເຟຣມກ້ອງຖ່າຍຮູບໄວ້ທາງກາງອັດຕະໂນມັດແລ້ວ</translation>
 <translation id="2427507373259914951">ຄລິກຊ້າຍ</translation>
 <translation id="2429753432712299108">ອຸປະກອນ Bluetooth "<ph name="DEVICE_NAME" />" ຢາກໄດ້ການອະນຸຍາດຈັບຄູ່. ກ່ອນຍອມຮັບ, ກະລຸນາຢືນຢັນວ່າ ປຸ່ມຜ່ານສະແດງຂຶ້ນຢູ່ອຸປະກອນນັ້ນແລ້ວ: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">ສະ​ແດງ​ລະ​ຫັດ​ຜ່ານ</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">ບໍ່ໄດ້ເປີດນຳໃຊ້. ກະລຸນາຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການຂອງທ່ານ.</translation>
 <translation id="6961121602502368900">ປິດສຽງໂທລະສັບບໍ່ສາມາດໃຊ້ໄດ້ໃນໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ</translation>
 <translation id="6961840794482373852">ຄີລັດ Alt + ລູກສອນຂຶ້ນຖືກປ່ຽນແປງແລ້ວ. ເພື່ອໃຊ້ປຸ່ມ Page Up, ໃຫ້ກົດປຸ່ມ <ph name="LAUNCHER_KEY_NAME" /> + ລູກສອນຂຶ້ນ.</translation>
+<translation id="696267987219125751">ການວາງເຟຣມກ້ອງຖ່າຍຮູບປິດຢູ່</translation>
 <translation id="6965382102122355670">ຕົກລົງ</translation>
 <translation id="6972754398087986839">ເລີ່ມຕົ້ນ</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">ປະຕິທິນ, ອາທິດຂອງ <ph name="DATE" />, ຕອນນີ້ເລືອກ <ph name="SELECTED_DATE" /> ຢູ່.</translation>
 <translation id="7514365320538308">ດາວ​ໂຫລດ</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">ເປີດໃຊ້ການວາງເຟຣມກ້ອງຖ່າຍຮູບແລ້ວ.</translation>
 <translation id="7526573455193969409">ອາດມີການຕິດຕາມເບິ່ງເຄືອຂ່າຍ</translation>
 <translation id="7536035074519304529">ທີ່ຢູ່ IP: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">ຕອນນີ້ບໍ່ຮອງຮັບແອັບ Linux ແລະ ໜ້າຈໍທີ່ບໍ່ເປີດເຜີຍຕົວຕົນເທື່ອ. ແອັບອື່ນໆຈະຖືກບັນທຶກໄວ້.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">ຢຸດແລ້ວ</translation>
 <translation id="7609951632080598826">ມຸມມອງປະຕິທິນ, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">ເຊື່ອມຕໍ່ກ້ອງຖ່າຍຮູບຄືນໃໝ່ແລ້ວ.</translation>
+<translation id="761736749114493194">ສະຫຼັບການວາງເຟຣມກ້ອງຖ່າຍຮູບ. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">ສະແດງການຕັ້ງຄ່າການແບ່ງປັນໃກ້ຄຽງ.</translation>
 <translation id="7634648064048557203">ແນບກ້ອງຖ່າຍຮູບໄປໃສ່ມຸມຂວາລຸ່ມແລ້ວ</translation>
@@ -1308,6 +1313,7 @@
 <translation id="851458219935658693">ສະແດງໜ້າຈໍຈາກໂຕະປັດຈຸບັນ, ເລືອກປຸ່ມວິທະຍຸແລ້ວ</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> ຂອງ​ທ່ານ​ບໍ່ອາດ​ສາກ​ໄດ້ໃນ​ຂະ​ນະ​ທີ່​ມັນ​ເປີດ.</translation>
 <translation id="8535393432370007982">ຍົກເລີກການຈັດຮຽງລຳດັບຕາມສີ</translation>
+<translation id="8541078764854166027">ການວາງເຟຣມກ້ອງຖ່າຍຮູບ</translation>
 <translation id="8542053257095774575">ບໍ່ມີໂຕະ ຫຼື ແມ່ແບບທີ່ບັນທຶກໄວ້</translation>
 <translation id="8546059259582788728">ຍົກເລີກການຈັດຮຽງສຳເລັດແລ້ວ</translation>
 <translation id="8551588720239073785">ການຕັ້ງຄ່າວັນທີ ແລະ ເວລາ</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index be1ea3b4..6c85b5f 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Ierakstīt visu ekrānu</translation>
 <translation id="2135456203358955318">Dokota lupa</translation>
 <translation id="2148716181193084225">Šodien</translation>
+<translation id="2161132820593978283">Izmēģiniet kameras kadrēšanu, lai videozvanu laikā jūs būtu ekrāna centrā. Varat to ieslēgt ātrajos iestatījumos.</translation>
 <translation id="2170530631236737939">Lai aizvērtu pārskatu, ar trim pirkstiem velciet lejup</translation>
 <translation id="219905428774326614">Palaišanas programma, visas lietotnes</translation>
 <translation id="2201071101391734388"><ph name="INDEX" />. jaunākais fotoattēls no <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Nav savienojuma</translation>
 <translation id="2408955596600435184">Ievadiet PIN kodu</translation>
 <translation id="2412593942846481727">Ir pieejams atjauninājums</translation>
+<translation id="2426051945783024481">Kameras kadrs tiek automātiski centrēts</translation>
 <translation id="2427507373259914951">Noklikšķināt ar peles kreiso pogu</translation>
 <translation id="2429753432712299108">Bluetooth ierīce “<ph name="DEVICE_NAME" />” vēlas saņemt atļauju, lai izveidotu savienojumu pārī. Pirms piekrītat, lūdzu, pārliecinieties, vai ierīcē tiek parādīta šī ieejas atslēga: <ph name="PASSKEY" />.</translation>
 <translation id="2435457462613246316">Rādīt paroli</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Nav aktivizēts. Sazinieties ar mobilo sakaru operatoru.</translation>
 <translation id="6961121602502368900">Darba profilā tālruņa skaņu nevar izslēgt.</translation>
 <translation id="6961840794482373852">Šie īsinājumtaustiņi ir mainījušies: Alt + augšupvērstais bulttaustiņš. Lai izmantotu augšupšķiršanas taustiņu, nospiediet šos taustiņus: <ph name="LAUNCHER_KEY_NAME" /> + augšupvērstais bulttaustiņš.</translation>
+<translation id="696267987219125751">Kameras kadrēšana ir izslēgta.</translation>
 <translation id="6965382102122355670">Labi</translation>
 <translation id="6972754398087986839">Sākt darbu</translation>
 <translation id="6979158407327259162">Google disks</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Kalendārs, nedēļa, kas sākas datumā <ph name="DATE" />, pašlaik atlasītais datums ir <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Lejupielādēt</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Kameras kadrēšana ir ieslēgta.</translation>
 <translation id="7526573455193969409">Var tikt pārraudzītas tīklā veiktās darbības</translation>
 <translation id="7536035074519304529">IP adrese: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux lietotnes un inkognito režīma logi pašlaik netiek atbalstīti. Citas lietotnes tiks saglabātas.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Apturēta</translation>
 <translation id="7609951632080598826">Kalendāra skats, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kamera atkal pievienota.</translation>
+<translation id="761736749114493194">Pārslēgt kameras kadrēšanu. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Rādīt funkcijas “Kopīgošana tuvumā” iestatījumus.</translation>
 <translation id="7634648064048557203">Kamera pārnesta uz labo apakšējo stūri</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Atlasīta poga “Rādīt pašreizējās darbvietas logus”</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> ierīce, iespējams, netiks uzlādēta, kamēr tā būs ieslēgta.</translation>
 <translation id="8535393432370007982">Atsaukt kārtošanu pēc krāsas</translation>
+<translation id="8541078764854166027">Kadrēšana</translation>
 <translation id="8542053257095774575">Nav saglabātu darbvietu vai veidņu</translation>
 <translation id="8546059259582788728">Kārtošana sekmīgi atsaukta</translation>
 <translation id="8551588720239073785">Datuma un laika iestatījumi</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index 9667b57b..770ad75 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Овозможена е лупата за цел екран. Притиснете Ctrl+Search+M повторно за да ја исклучите.</translation>
 <translation id="2302092602801625023">Оваа сметка е управувана од Family Link</translation>
 <translation id="2303600792989757991">Префрли преглед во прозорец</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: неодамнешни снимања на екранот, преземања и закачени датотеки</translation>
 <translation id="2318576281648121272">Денес <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" />, категорија на резултати од пребарување</translation>
 <translation id="2322173485024759474">Назад за една буква</translation>
@@ -1156,6 +1157,7 @@
 <translation id="7633755430369750696">Прикажи поставки за „Споделување во близина“.</translation>
 <translation id="7634648064048557203">Камерата е поставена во долниот десен агол</translation>
 <translation id="7641938616688887143">Снимајте</translation>
+<translation id="7642106959537987271">режим за инверзија на боите</translation>
 <translation id="7642647758716480637">Отвори ги поставките за <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (сопственик)</translation>
 <translation id="7647488630410863958">Отклучете го уредот за приказ на известувањата</translation>
@@ -1261,6 +1263,7 @@
 <translation id="8209010265547628927">Ресетирај</translation>
 <translation id="8214996719228530800">Canary Channel</translation>
 <translation id="8219451629189078428">Вашиот Chromebook треба да остане вклучен и поврзан на струја во текот на ова време. Проверете дали каблите на полначот или адаптерот се целосно приклучени во вашиот Chromebook и во штекерот. Не исклучувајте го вашиот Chromebook.</translation>
+<translation id="8230305195727960608">Режим за инверзија на боите</translation>
 <translation id="8236042855478648955">Време за пауза</translation>
 <translation id="8246282815785366524">Добре дојдовте назад, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, јачина на сигналот: <ph name="SIGNAL_STRENGTH" />, батерија на телефонот: <ph name="BATTERY_STATUS" /></translation>
@@ -1387,6 +1390,7 @@
 <translation id="8982906748181120328">Видливост во близина</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Се користи <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Овозможен е режимот за инверзија на боите. Притиснете Ctrl+Search+H повторно за да го вклучите/исклучите.</translation>
 <translation id="899350903320462459">Отклучете го уредот како <ph name="LOGIN_ID" /> за да се изврши дејството од известувањето</translation>
 <translation id="9000771174482730261">УПРАВУВАЈТЕ СО КАПАЦИТЕТОТ</translation>
 <translation id="9017320285115481645">Внесете го кодот за пристап на родители на Family Link.</translation>
@@ -1435,6 +1439,7 @@
 <translation id="921989828232331238">Вашиот родител го заклучи уредот за денес</translation>
 <translation id="9220525904950070496">Отстрани сметка</translation>
 <translation id="923686485342484400">Притиснете Control Shift Q двапати за да се одјавите.</translation>
+<translation id="92580429198593979">Притиснавте кратенка од тастатурата за инверзија на боите. Дали сакате да ја вклучите?</translation>
 <translation id="925832987464884575">Сокриј ги прегледите</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> бара веднаш да го ажурирате вашиот <ph name="DEVICE_TYPE" /></translation>
 <translation id="938963181863597773">Што има во мојот календар?</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb
index 77eb8d2..0ecbbed 100644
--- a/ash/strings/ash_strings_mn.xtb
+++ b/ash/strings/ash_strings_mn.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Бүтэн дэлгэц томруулагчийг идэвхжүүлсэн. Үүнийг унтраахын тулд Ctrl+Хайх+M-г дахин дарна уу.</translation>
 <translation id="2302092602801625023">Энэ бүртгэлийг Family Link-р удирддаг</translation>
 <translation id="2303600792989757991">Цонхыг тоймлож харах</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: сүүлийн үеийн дэлгэцийн зураг, татаж авсан файл болон бэхэлсэн файл</translation>
 <translation id="2318576281648121272">Өнөөдөр <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" /> , хайлтын илэрцийн ангилал</translation>
 <translation id="2322173485024759474">Нэг үсгээр буцаах</translation>
@@ -1156,6 +1157,7 @@
 <translation id="7633755430369750696">Ойролцоо хуваалцах тохиргоог харуулна.</translation>
 <translation id="7634648064048557203">Камерыг баруун доод булан руу зэрэгцүүлсэн</translation>
 <translation id="7641938616688887143">Бичих</translation>
+<translation id="7642106959537987271">өнгө урвуулах горим</translation>
 <translation id="7642647758716480637"><ph name="CONNECTION_STATUS" /> статустай <ph name="NETWORK_NAME" />-н тохиргоог нээх</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (эзэмшигч)</translation>
 <translation id="7647488630410863958">Мэдэгдлээ харахын тулд төхөөрөмжийн түгжээг тайлна уу</translation>
@@ -1261,6 +1263,7 @@
 <translation id="8209010265547628927">Шинэчлэх</translation>
 <translation id="8214996719228530800">Канар суваг</translation>
 <translation id="8219451629189078428">Энэ хугацаанд Chromebook тань асаалттай, мөн тэжээлд залгаатай байх шаардлагатай. Цэнэглэгчийн эсвэл адаптерын утас Chromebook, цахилгааны залгуур хоёрт хоёуланд нь бүрэн залгаатай байгаа эсэхийг шалгаарай. Chromebook-ээ унтрааж болохгүй.</translation>
+<translation id="8230305195727960608">Өнгө урвуулах горим</translation>
 <translation id="8236042855478648955">Завсарлах цаг</translation>
 <translation id="8246282815785366524">Дахин тавтай морилно уу, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, дохионы хүч <ph name="SIGNAL_STRENGTH" />, утасны батарей <ph name="BATTERY_STATUS" /></translation>
@@ -1388,6 +1391,7 @@
 <translation id="8982906748181120328">Ойролцоо харагдац</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" />-г ашиглаж байна</translation>
+<translation id="8991617137207906966">Өнгө урвуулах горимыг идэвхжүүлсэн. Үүнийг унтраахын тулд Ctrl+Search+H дээр дахин дарна уу.</translation>
 <translation id="899350903320462459">Мэдэгдлийн үйлдлийг гүйцэтгэхийн тулд төхөөрөмжийн түгжээг <ph name="LOGIN_ID" />-р тайлна уу</translation>
 <translation id="9000771174482730261">ХАДГАЛАХ САНГ УДИРДАХ</translation>
 <translation id="9017320285115481645">Family Link-н эцэг эхийн нэвтрэх кодоо оруулна уу.</translation>
@@ -1436,6 +1440,7 @@
 <translation id="921989828232331238">Таны эцэг эх таны төхөөрөмжийг өдрийн турш түгжсэн байна</translation>
 <translation id="9220525904950070496">Бүртгэлийг хасах</translation>
 <translation id="923686485342484400">Гарахын тулд Control Shift Q дээр хоёр удаа дарна уу.</translation>
+<translation id="92580429198593979">Та өнгө урвуулах горимын товчлуурын шууд холбоосыг дарсан байна. Та үүнийг асаахыг хүсэж байна уу?</translation>
 <translation id="925832987464884575">Урьдчилан үзэлтийг нуух</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> таныг өөрийн <ph name="DEVICE_TYPE" />-г нэн даруй шинэчлэхийг шаардаж байна</translation>
 <translation id="938963181863597773">Миний календарьд юу байна вэ?</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 86393a9..de60d38 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Rakam skrin penuh</translation>
 <translation id="2135456203358955318">Penggadang didok</translation>
 <translation id="2148716181193084225">Hari ini</translation>
+<translation id="2161132820593978283">Cuba pembingkaian kamera supaya anda berada di tengah-tengah skrin semasa membuat panggilan video. Hidupkan autozum dalam Tetapan Pantas.</translation>
 <translation id="2170530631236737939">Leret ke bawah dengan tiga jari untuk keluar daripada Ikhtisar</translation>
 <translation id="219905428774326614">Pelancar, semua apl</translation>
 <translation id="2201071101391734388">Foto baru-baru ini <ph name="INDEX" /> daripada <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Tidak disambungkan</translation>
 <translation id="2408955596600435184">Masukkan PIN anda</translation>
 <translation id="2412593942846481727">Kemas kini tersedia</translation>
+<translation id="2426051945783024481">Bingkai kamera dipusatkan secara automatik</translation>
 <translation id="2427507373259914951">Klik kiri</translation>
 <translation id="2429753432712299108">Peranti Bluetooth "<ph name="DEVICE_NAME" />" ingin kebenaran untuk berpasangan. Sebelum menerimanya, sila sahkan bahawa kekunci laluan ini dipaparkan pada peranti tersebut: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Paparkan kata laluan</translation>
@@ -1039,6 +1041,7 @@
 <translation id="6960565108681981554">Tidak diaktifkan. Hubungi pembawa anda.</translation>
 <translation id="6961121602502368900">Ciri Senyapkan telefon tidak tersedia pada profil kerja</translation>
 <translation id="6961840794482373852">Pintasan papan kekunci Alt + Anak Panah ke Atas telah berubah. Untuk menggunakan kekunci Page Up, tekan kekunci <ph name="LAUNCHER_KEY_NAME" /> + Anak Panah ke Atas.</translation>
+<translation id="696267987219125751">Pembingkaian kamera dimatikan.</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6972754398087986839">Bermula</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1129,6 +1132,7 @@
 <translation id="7513922695575567867">Kalendar, minggu <ph name="DATE" />, <ph name="SELECTED_DATE" /> dipilih pada masa ini.</translation>
 <translation id="7514365320538308">Muat Turun</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Pembingkaian kamera dihidupkan.</translation>
 <translation id="7526573455193969409">Rangkaian mungkin dipantau</translation>
 <translation id="7536035074519304529">Alamat IP: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Apl Linux dan tetingkap inkognito tidak disokong pada masa ini. Apl lain akan disimpan.</translation>
@@ -1147,6 +1151,7 @@
 <translation id="7607002721634913082">Dijeda</translation>
 <translation id="7609951632080598826">Paparan kalendar, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kamera disambung semula.</translation>
+<translation id="761736749114493194">Togol pembingkaian kamera. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Paparkan tetapan Kongsi Berdekatan.</translation>
 <translation id="7634648064048557203">Kamera diautojajar ke penjuru kanan sebelah bawah</translation>
@@ -1307,6 +1312,7 @@
 <translation id="851458219935658693">Tunjukkan tetingkap daripada meja semasa, butang radio dipilih</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> anda mungkin tidak akan dicas semasa dihidupkan.</translation>
 <translation id="8535393432370007982">Buat asal tertib isihan mengikut warna</translation>
+<translation id="8541078764854166027">Bingkai kamera</translation>
 <translation id="8542053257095774575">Tiada meja atau templat yang disimpan</translation>
 <translation id="8546059259582788728">Isih buat asal berjaya</translation>
 <translation id="8551588720239073785">Tetapan tarikh dan masa</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index 26f8e231..a3d06db3 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ဆက်တင်များ ပြပေးသည်။</translation>
 <translation id="7634648064048557203">ကင်မရာကို အောက်ညာဘက်ထောင့်သို့ ကပ်ထားသည်</translation>
 <translation id="7641938616688887143">ရိုက်ကူးရန်</translation>
+<translation id="7642106959537987271">အရောင်ပြောင်းပြန်ပြုလုပ်သည့်မုဒ်</translation>
 <translation id="7642647758716480637"><ph name="NETWORK_NAME" />၊ <ph name="CONNECTION_STATUS" /> အတွက် ဆက်တင်များကို ဖွင့်ရန်</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ပိုင်ရှင်)</translation>
 <translation id="7647488630410863958">အကြောင်းကြားချက်များကို ကြည့်ရန် စက်ပစ္စည်းကို လော့ခ်ဖွင့်ပါ</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">ပြင်ဆင်သတ်မှတ်ရန်</translation>
 <translation id="8214996719228530800">Canary ချန်နယ်</translation>
 <translation id="8219451629189078428">ဤအချိန်အတွင်းတွင် သင့် Chromebook ကို ဖွင့်ထားပြီး ပါဝါချိတ်ဆက်ထားရန် လိုအပ်ပါသည်။ အားသွင်းကိရိယာ သို့မဟုတ် ကြားခံကိရိယာကြိုးများကို သင့် Chromebook နှင့် ပလတ်ပေါက် နှစ်ခုစလုံးတွင် တပ်ထားကြောင်း သေချာပါစေ။ သင့် Chromebook ကို မပိတ်ပါနှင့်။</translation>
+<translation id="8230305195727960608">အရောင်ပြောင်းပြန်ပြုလုပ်သည့်မုဒ်</translation>
 <translation id="8236042855478648955">နားချိန် ရောက်ပါပြီ</translation>
 <translation id="8246282815785366524">ပြန်လည်ကြိုဆိုပါသည် <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />၊ လိုင်းဆွဲအား <ph name="SIGNAL_STRENGTH" />၊ ဖုန်းဘက်ထရီ <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">အနီးတစ်ဝိုက် မြင်နိုင်မှု</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> ကို အသုံးပြုနေသည်</translation>
+<translation id="8991617137207906966">‘အရောင်ပြောင်းပြန်ပြုလုပ်သည့်မုဒ်’ ဖွင့်ထားသည်။ ၎င်းကိုပိတ်ရန် Ctrl+Search+H ကို ပြန်နှိပ်ပါ။</translation>
 <translation id="899350903320462459">အကြောင်းကြားခြင်း လုပ်ဆောင်ရန်အတွက် <ph name="LOGIN_ID" /> အဖြစ် စက်ပစ္စည်းကို လော့ခ်ဖွင့်ပါ</translation>
 <translation id="9000771174482730261">သိုလှောင်ခန်း စီမံခန့်ခွဲရန်</translation>
 <translation id="9017320285115481645">Family Link မိဘသုံးကုဒ် ထည့်ပါ။</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">သင်၏စက်ကို သင့်မိဘက ဤနေ့အဖို့ လော့ခ်ချထားပါပြီ</translation>
 <translation id="9220525904950070496">အကောင့်ကို ဖယ်ရှားရန်</translation>
 <translation id="923686485342484400">ထွက်ခွာရန် Control Shift Q နှစ်ကြိမ် နှိပ်ပါ။</translation>
+<translation id="92580429198593979">အရောင်ပြောင်းပြန်ပြုလုပ်ခြင်းအတွက် လက်ကွက်ဖြတ်လမ်းကို နှိပ်လိုက်သည်။ ၎င်းကို ဖွင့်လိုပါသလား။</translation>
 <translation id="925832987464884575">အစမ်းကြည့်ရှုခြင်းများ ဖျောက်ရန်</translation>
 <translation id="937214777182567951">သင့် <ph name="DEVICE_TYPE" /> ကို ချက်ချင်း အပ်ဒိတ်လုပ်ရန် <ph name="MANAGER" /> ကသတ်မှတ်ထားသည်</translation>
 <translation id="938963181863597773">ကျွန်ုပ်၏ ပြက္ခဒိန်မှာ ဘာတွေရှိလဲ။</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb
index 54ebaee9..94e6fa2 100644
--- a/ash/strings/ash_strings_ne.xtb
+++ b/ash/strings/ash_strings_ne.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">फुल स्क्रिनको भिडियो रेकर्ड गर्नुहोस्</translation>
 <translation id="2135456203358955318">डक गरिएको म्याग्निफायर</translation>
 <translation id="2148716181193084225">आज</translation>
+<translation id="2161132820593978283">भिडियो कल गर्दा आफूलाई स्क्रिनको बिचमा राखिराख्न क्यामेरा फ्रेमिङ प्रयोग गरी हेर्नुहोस्। "द्रुत सेटिङ" मा गई यो सुविधा अन गर्नुहोस्।</translation>
 <translation id="2170530631236737939">हालैका स्क्रिन देखाइने मोड बन्द गर्न तीनवटा औँलाले तलतिर स्वाइप गर्नुहोस्</translation>
 <translation id="219905428774326614">लन्चर, सबै एपहरू</translation>
 <translation id="2201071101391734388">हालसालैका <ph name="TOTAL_COUNT" /> वटा फोटोमध्ये <ph name="INDEX" /> औँ फोटो।</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">कनेक्ट गरिएको छैन</translation>
 <translation id="2408955596600435184">आफ्नो PIN प्रविष्टि गर्नुहोस्</translation>
 <translation id="2412593942846481727">अद्यावधिक उपलब्ध छ</translation>
+<translation id="2426051945783024481">क्यामेराको फ्रेम स्वतः बिच भागमा पारियो</translation>
 <translation id="2427507373259914951">बायाँ क्लिक गर्नुहोस्</translation>
 <translation id="2429753432712299108">ब्लुतुथ यन्त्र "<ph name="DEVICE_NAME" />" ले मेल गर्न अनुमति चाहन्छ। स्वीकार गर्नुअघि, कृपया पक्का गर्नुहोस् की यो पासकुञ्जी त्यो यन्त्रमा देखाइएको छ: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">पासवर्ड देखाउनुहोस्</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">सक्रिय गरिएको छैन। आफ्नो सेवा प्रदायकमा सम्पर्क गर्नुहोस्।</translation>
 <translation id="6961121602502368900">कार्य प्रोफाइल प्रयोग गरिएका बेला फोन साइलेन्ट बनाउने सुविधा उपलब्ध हुँदैन</translation>
 <translation id="6961840794482373852">Alt + अप एरो किबोर्ड सर्टकट परिवर्तन गरिएको छ। Page Up की प्रयोग गर्न <ph name="LAUNCHER_KEY_NAME" /> की + अप एरो की थिच्नुहोस्।</translation>
+<translation id="696267987219125751">क्यामेरा फ्रेमिङ अफ छ।</translation>
 <translation id="6965382102122355670">ठिक छ</translation>
 <translation id="6972754398087986839">सुरु गर्नुहोस्</translation>
 <translation id="6979158407327259162">Google ड्राइभ</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">पात्रो, <ph name="DATE" /> को हप्ता, हाल चयन गरिएको मिति: <ph name="SELECTED_DATE" />।</translation>
 <translation id="7514365320538308">डाउनलोड गर्नुहोस्</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">क्यामेरा फ्रेमिङ अन छ।</translation>
 <translation id="7526573455193969409">नेटवर्कको अनुगमन गरिने सम्भावना छ</translation>
 <translation id="7536035074519304529">IP एड्रेस: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux एप र इन्कोग्निटो विन्डो हाल प्रयोग गर्न मिल्दैन। अन्य एपहरू सेभ गरिने छन्।</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">रोकिएको छ</translation>
 <translation id="7609951632080598826">पात्रोको भ्यू, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">क्यामेरा पुनः कनेक्ट गरियो।</translation>
+<translation id="761736749114493194">क्यामेरा फ्रेमिङ टगल गर्नुहोस्। <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">नजिकैका डिभाइससँग सेयर गर्ने सुविधासम्बन्धी सेटिङ देखाउनुहोस्।</translation>
 <translation id="7634648064048557203">क्यामेरा पुछारको दायाँ कुनामा स्न्याप गरियो</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">हालको डेस्कमा भएका विन्डोहरू देखाइयोस्, रेडियो बटन चयन गरियो</translation>
 <translation id="8517041960877371778">खुला हुँदा तपाईँको <ph name="DEVICE_TYPE" /> चार्ज नहुन सक्छ।</translation>
 <translation id="8535393432370007982">रङअनुसार क्रमबद्ध गर्ने कार्य अन्डू गर्नुहोस्</translation>
+<translation id="8541078764854166027">क्यामेरा फ्रेमिङ</translation>
 <translation id="8542053257095774575">कुनै पनि डेस्क वा टेम्प्लेट सेभ गरिएको छैन</translation>
 <translation id="8546059259582788728">क्रमबद्ध गर्ने कार्य अन्डू गरियो</translation>
 <translation id="8551588720239073785">मिति र समयसम्बन्धी सेटिङ</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index eba0ba1..1b1382c 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Vergrootglas voor volledig scherm staat aan. Druk nog een keer op Ctrl+Zoeken+M om dit uit te zetten.</translation>
 <translation id="2302092602801625023">Dit account wordt beheerd door Family Link</translation>
 <translation id="2303600792989757991">Overzicht aan/uit</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: recente schermopnamen, downloads en vastgezette bestanden</translation>
 <translation id="2318576281648121272">Vandaag <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" />, zoekresultaatcategorie</translation>
 <translation id="2322173485024759474">Terug per letter</translation>
@@ -1152,6 +1153,7 @@
 <translation id="7633755430369750696">Instellingen bekijken voor Dichtbij delen.</translation>
 <translation id="7634648064048557203">Camera uitgelijnd op de rechterbenedenhoek</translation>
 <translation id="7641938616688887143">Opnemen</translation>
+<translation id="7642106959537987271">modus voor kleurinversie</translation>
 <translation id="7642647758716480637">Instellingen openen voor <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (eigenaar)</translation>
 <translation id="7647488630410863958">Ontgrendel het apparaat om je meldingen te bekijken</translation>
@@ -1257,6 +1259,7 @@
 <translation id="8209010265547628927">Resetten</translation>
 <translation id="8214996719228530800">Canary-kanaal</translation>
 <translation id="8219451629189078428">Je Chromebook moet ondertussen aan blijven en zijn aangesloten op een stopcontact. Zorg dat de kabels van de oplader of adapter goed zijn aangesloten, zowel op je Chromebook als op het stopcontact. Zet je Chromebook niet uit.</translation>
+<translation id="8230305195727960608">Modus voor kleurinversie</translation>
 <translation id="8236042855478648955">Tijd voor een pauze</translation>
 <translation id="8246282815785366524">Welkom terug, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, signaalsterkte <ph name="SIGNAL_STRENGTH" />, telefoonbatterij <ph name="BATTERY_STATUS" /></translation>
@@ -1383,6 +1386,7 @@
 <translation id="8982906748181120328">Dichtbij aan</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> gebruiken</translation>
+<translation id="8991617137207906966">Modus voor kleurinversie aangezet. Druk nogmaals op Ctrl+Zoeken+H om dit uit te zetten.</translation>
 <translation id="899350903320462459">Ontgrendel het apparaat als <ph name="LOGIN_ID" /> om de meldingsactie uit te voeren</translation>
 <translation id="9000771174482730261">OPSLAG BEHEREN</translation>
 <translation id="9017320285115481645">Geef de Family Link-toegangscode voor ouders op.</translation>
@@ -1431,6 +1435,7 @@
 <translation id="921989828232331238">Je ouder heeft je apparaat de hele dag vergrendeld</translation>
 <translation id="9220525904950070496">Account verwijderen</translation>
 <translation id="923686485342484400">Druk twee keer op Control+Shift+Q om uit te loggen.</translation>
+<translation id="92580429198593979">Je hebt op de sneltoets voor kleurinversie gedrukt. Wil je dit aanzetten?</translation>
 <translation id="925832987464884575">Voorbeelden verbergen</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> vereist dat je je <ph name="DEVICE_TYPE" /> onmiddellijk updatet</translation>
 <translation id="938963181863597773">Wat staat er in mijn agenda?</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index fc4aad4..c1357d3 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Ta opp hele skjermen</translation>
 <translation id="2135456203358955318">Dokket lupe</translation>
 <translation id="2148716181193084225">I dag</translation>
+<translation id="2161132820593978283">Prøv kamerainnramming, så du er midt på skjermen i videosamtaler. Slå det på i hurtiginnstillingene.</translation>
 <translation id="2170530631236737939">Sveip ned med tre fingre for å lukke Oversikt</translation>
 <translation id="219905428774326614">Appoversikt, alle apper</translation>
 <translation id="2201071101391734388">Nylig bilde <ph name="INDEX" /> av <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Ikke tilkoblet</translation>
 <translation id="2408955596600435184">Skriv inn PIN-koden din</translation>
 <translation id="2412593942846481727">En oppdatering er tilgjengelig</translation>
+<translation id="2426051945783024481">Kamerarammen er midtstilt automatisk</translation>
 <translation id="2427507373259914951">Venstreklikk</translation>
 <translation id="2429753432712299108">Bluetooth-enheten «<ph name="DEVICE_NAME" />» ber om tillatelse til å koble til. Før du godtar dette, må du bekrefte at denne tilgangskoden vises på den aktuelle enheten: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Vis passord</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Ikke aktivert. Kontakt operatøren din.</translation>
 <translation id="6961121602502368900">Demp telefonen er ikke tilgjengelig for jobbprofiler</translation>
 <translation id="6961840794482373852">Hurtigtasten Alt + oppoverpil er endret. For å bruke Page Up-tasten, trykk på <ph name="LAUNCHER_KEY_NAME" />-tasten + oppoverpilen.</translation>
+<translation id="696267987219125751">Kamerainnramming er av.</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6972754398087986839">Kom i gang</translation>
 <translation id="6979158407327259162">Google Disk</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Kalender – uken som inneholder <ph name="DATE" />. For øyeblikket er <ph name="SELECTED_DATE" /> valgt.</translation>
 <translation id="7514365320538308">Last ned</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Kamerainnramming er på.</translation>
 <translation id="7526573455193969409">Nettverket kan være overvåket</translation>
 <translation id="7536035074519304529">IP-adresse: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux-apper og inkognitovinduer støttes ikke for øyeblikket. Andre apper blir lagret.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Satt på pause</translation>
 <translation id="7609951632080598826">Kalendervisning, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kameraet er koblet til igjen.</translation>
+<translation id="761736749114493194">Slå av/på kamerainnramming. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Vis innstillinger for nærdeling.</translation>
 <translation id="7634648064048557203">Kameraet er festet til nedre høyre hjørne</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Vis vinduer fra det gjeldende skrivebordet – alternativknappen er valgt</translation>
 <translation id="8517041960877371778">Det kan hende at din <ph name="DEVICE_TYPE" /> ikke lader når den er slått på.</translation>
 <translation id="8535393432370007982">Angre sortering etter farge</translation>
+<translation id="8541078764854166027">Kamerainnramming</translation>
 <translation id="8542053257095774575">Ingen lagrede skrivebord eller maler</translation>
 <translation id="8546059259582788728">Sorteringen ble angret</translation>
 <translation id="8551588720239073785">Innstillinger for dato og klokkeslett</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index 0e2da2a..0ac75dee 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -1154,6 +1154,7 @@
 <translation id="7633755430369750696">Nearby Share ସେଟିଂସ୍ ଦେଖାନ୍ତୁ।</translation>
 <translation id="7634648064048557203">କ୍ୟାମେରାକୁ ନିମ୍ନ ଡାହାଣପାର୍ଶ୍ୱ କୋଣକୁ ସ୍ନାପ କରାଯାଇଛି</translation>
 <translation id="7641938616688887143">ରେକର୍ଡ କରନ୍ତୁ</translation>
+<translation id="7642106959537987271">କଲର ଇନଭର୍ସନ ମୋଡ</translation>
 <translation id="7642647758716480637"><ph name="NETWORK_NAME" /> ପାଇଁ ସେଟିଂସ୍ ଖୋଲନ୍ତୁ, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ମାଲିକ)</translation>
 <translation id="7647488630410863958">ଆପଣଙ୍କର ବିଜ୍ଞପ୍ତି ଦେଖିବାକୁ ଡିଭାଇସ୍‌ ଅନ୍‌ଲକ୍‌ କରନ୍ତୁ</translation>
@@ -1259,6 +1260,7 @@
 <translation id="8209010265547628927">ରିସେଟ କରନ୍ତୁ</translation>
 <translation id="8214996719228530800">କାନାରି ଚ୍ୟାନେଲ</translation>
 <translation id="8219451629189078428">ଏହି ସମୟରେ ଆପଣଙ୍କ Chromebook ଚାଲୁ ରହି ପାୱାର୍ ସହିତ ସଂଯୁକ୍ତ ରହିବା ଆବଶ୍ୟକ। ଆପଣଙ୍କର ଉଭୟ Chromebook ଓ ପାୱାର୍ ଆଉଟଲେଟ୍ ସହ ଚାର୍ଜର କିମ୍ବା ଆଡପ୍ଟର କେବୁଲଗୁଡ଼ିକ ସମ୍ପୂର୍ଣ୍ଣ ରୂପେ ପ୍ଲଗ୍ ଇନ୍ ହୋଇଥିବା ନିଶ୍ଚିତ କରନ୍ତୁ। ଆପଣଙ୍କ Chromebookକୁ ବନ୍ଦ କରନ୍ତୁ ନାହିଁ।</translation>
+<translation id="8230305195727960608">କଲର ଇନଭର୍ସନ ମୋଡ</translation>
 <translation id="8236042855478648955">ବିରତିର ସମୟ ହୋଇଛି</translation>
 <translation id="8246282815785366524">ଆପଣଙ୍କୁ ପୁଣି ସ୍ୱାଗତ, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, ସିଗ୍‍ନାଲ୍‍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />, ଫୋନ୍ ବ୍ୟାଟେରୀ <ph name="BATTERY_STATUS" /></translation>
@@ -1385,6 +1387,7 @@
 <translation id="8982906748181120328">Nearby ଭିଜିବିଲିଟୀ</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> ବ୍ୟବହାର କରି</translation>
+<translation id="8991617137207906966">କଲର ଇନଭର୍ସନ ମୋଡକୁ ସକ୍ଷମ କରାଯାଇଛି। ଏହାକୁ ଟୋଗଲ କରି ବନ୍ଦ କରିବା ପାଇଁ ପୁଣି Ctrl+Search+H ଦବାନ୍ତୁ।</translation>
 <translation id="899350903320462459">ବିଜ୍ଞପ୍ତି କାର୍ଯ୍ୟ ସମ୍ପାଦନ କରିବାକୁ ଡିଭାଇସ୍‌କୁ <ph name="LOGIN_ID" /> ଭାବେ ଅନ୍‌ଲକ୍‌ କରନ୍ତୁ</translation>
 <translation id="9000771174482730261">ଷ୍ଟୋରେଜ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="9017320285115481645">Family Linkର ପ୍ୟାରେଣ୍ଟ ଆକ୍ସେସ୍ କୋଡ୍ ଲେଖନ୍ତୁ।</translation>
@@ -1433,6 +1436,7 @@
 <translation id="921989828232331238">ଆପଣଙ୍କ ମାତା-ପିତା ଆଜି ପାଇଁ ଆପଣଙ୍କର ଡିଭାଇସ୍‌କୁ ଲକ୍ କରିଦେଇଛନ୍ତି</translation>
 <translation id="9220525904950070496">ଆକାଉଣ୍ଟ କାଢ଼ିଦିଅନ୍ତୁ</translation>
 <translation id="923686485342484400">ସାଇନ୍‍ ଆଉଟ୍‍ ହେବାକୁ ଦୁଇଥର Control Shift Q ଦବାନ୍ତୁ।</translation>
+<translation id="92580429198593979">କଲର ଇନଭର୍ସନ ପାଇଁ ଆପଣ କୀବୋର୍ଡ ସର୍ଟକଟ ଦବାଇଛନ୍ତି। ଆପଣ ଏହାକୁ ଚାଲୁ କରିବାକୁ ଚାହୁଁଛନ୍ତି?</translation>
 <translation id="925832987464884575">ପ୍ରିଭ୍ୟୁଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> ପାଇଁ ଆପଣ ତୁରନ୍ତ ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />କୁ ଅପଡେଟ କରିବା ଆବଶ୍ୟକ</translation>
 <translation id="938963181863597773">ମୋ କ୍ୟାଲେଣ୍ଡରରେ କ’ଣ ଅଛି?</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index acb85bc1..ebe0aa6 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -895,6 +895,7 @@
 <translation id="6064463340679478396">Nie używam już tego pliku</translation>
 <translation id="6073451960410192870">Zatrzymaj nagrywanie</translation>
 <translation id="6074087755403037157">Wersja beta</translation>
+<translation id="6095008505822982596">Prędkość mowy</translation>
 <translation id="6099678161144790572">Edytowane w zeszłym miesiącu</translation>
 <translation id="6103838137565245112">system</translation>
 <translation id="6114505516289286752">Pliki z mową w języku: <ph name="LANGUAGE" /> zostały pobrane</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index 6eb71aad..a450f96 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">Mostrar configurações de Compartilhar por proximidade.</translation>
 <translation id="7634648064048557203">Câmera alinhada ao canto direito de baixo</translation>
 <translation id="7641938616688887143">Gravar</translation>
+<translation id="7642106959537987271">modo de inversão de cores</translation>
 <translation id="7642647758716480637">Abrir configurações da rede <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (proprietário)</translation>
 <translation id="7647488630410863958">Desbloquear dispositivo para ver as notificações</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">Redefinir</translation>
 <translation id="8214996719228530800">Canal Canary</translation>
 <translation id="8219451629189078428">O Chromebook precisa ficar ligado e conectado à energia durante esse período. Verifique se os cabos do carregador ou adaptador estão completamente conectados, tanto ao Chromebook quanto à tomada. Não desligue o Chromebook.</translation>
+<translation id="8230305195727960608">Modo de inversão de cores</translation>
 <translation id="8236042855478648955">Hora de fazer uma pausa</translation>
 <translation id="8246282815785366524">Que bom que você voltou, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, intensidade do sinal em <ph name="SIGNAL_STRENGTH" />, bateria do smartphone em <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">Visibilidade por perto</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Usando <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Modo de inversão de cores ativado. Pressione Ctrl + Pesquisa + H novamente para desativar.</translation>
 <translation id="899350903320462459">Desbloqueie o dispositivo com a conta <ph name="LOGIN_ID" /> para executar a ação de notificação</translation>
 <translation id="9000771174482730261">GERENCIE O ARMAZENAMENTO</translation>
 <translation id="9017320285115481645">Insira o código de acesso do familiar responsável do Family Link.</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">Seu pai/mãe bloqueou o dispositivo por hoje</translation>
 <translation id="9220525904950070496">Remover conta</translation>
 <translation id="923686485342484400">Pressione Control+Shift+Q duas vezes para sair.</translation>
+<translation id="92580429198593979">Você pressionou o atalho de teclado para inversão de cores. Quer ativar o recurso?</translation>
 <translation id="925832987464884575">Ocultar visualizações</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> precisa que você atualize seu <ph name="DEVICE_TYPE" /> imediatamente</translation>
 <translation id="938963181863597773">O que tem na minha agenda?</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index 845e0bb..378f211 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Lupa de ecrã inteiro ativada. Prima Ctrl + Pesquisa + M novamente para a desativar.</translation>
 <translation id="2302092602801625023">Esta conta é gerida pelo Family Link</translation>
 <translation id="2303600792989757991">Ativar/desativar vista geral das janelas</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: capturas de ecrã, transferências e ficheiros fixados recentes</translation>
 <translation id="2318576281648121272">Hoje, <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" />, categoria de resultados da pesquisa</translation>
 <translation id="2322173485024759474">Recuar por letra</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index 53647e8..c3927e3 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Запись видео со всего экрана</translation>
 <translation id="2135456203358955318">Закрепленная лупа</translation>
 <translation id="2148716181193084225">Сегодня</translation>
+<translation id="2161132820593978283">Используйте автомасштабирование, чтобы во время видеовстреч оставаться в центре экрана. Эту функцию можно включить в быстрых настройках.</translation>
 <translation id="2170530631236737939">Чтобы выйти из режима обзора, проведите тремя пальцами вниз.</translation>
 <translation id="219905428774326614">Панель запуска, все приложения</translation>
 <translation id="2201071101391734388">Недавнее фото <ph name="INDEX" /> из <ph name="TOTAL_COUNT" /></translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Не подключено</translation>
 <translation id="2408955596600435184">Введите PIN-код</translation>
 <translation id="2412593942846481727">Доступно обновление</translation>
+<translation id="2426051945783024481">Центрировано автоматически.</translation>
 <translation id="2427507373259914951">Нажатие на левую кнопку мыши</translation>
 <translation id="2429753432712299108">Устройству <ph name="DEVICE_NAME" /> требуется разрешение на подключение через Bluetooth. Проверьте, отображается ли на нем код: <ph name="PASSKEY" />.</translation>
 <translation id="2435457462613246316">Показать пароль</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Сеть не активирована. Свяжитесь с оператором.</translation>
 <translation id="6961121602502368900">Отключение звука на телефоне недоступно в рабочем профиле</translation>
 <translation id="6961840794482373852">Функция сочетания клавиш Alt + Стрелка вверх изменилась. Чтобы выполнить действие клавиши Page Up, нажмите <ph name="LAUNCHER_KEY_NAME" /> + Стрелка вверх.</translation>
+<translation id="696267987219125751">Автомасштабирование отключено</translation>
 <translation id="6965382102122355670">ОК</translation>
 <translation id="6972754398087986839">Начать</translation>
 <translation id="6979158407327259162">Google Диск</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Календарь, неделя с <ph name="DATE" />, сейчас выбрано <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Скачать</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Автомасштабирование включено</translation>
 <translation id="7526573455193969409">Сеть может отслеживаться</translation>
 <translation id="7536035074519304529">IP-адрес: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Приложения для Linux и окна в режиме инкогнито пока не поддерживаются. Остальные приложения будут сохранены.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Приостановлен</translation>
 <translation id="7609951632080598826">Календарь: <ph name="TIME" />, <ph name="DATE" /></translation>
 <translation id="7611213136657090146">Камера переподключена.</translation>
+<translation id="761736749114493194">Включить или отключить автомасштабирование. <ph name="STATE_TEXT" />.</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7633755430369750696">Показать настройки Обмена с окружением</translation>
 <translation id="7634648064048557203">Окно предварительного просмотра камеры привязано к правому нижнему углу</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Показ окон текущего рабочего стола. Выбран переключатель.</translation>
 <translation id="8517041960877371778">Не удается зарядить устройство <ph name="DEVICE_TYPE" />, пока оно включено.</translation>
 <translation id="8535393432370007982">Отменить упорядочивание по цвету</translation>
+<translation id="8541078764854166027">Автомасштабир.</translation>
 <translation id="8542053257095774575">Нет сохраненных шаблонов или рабочих столов.</translation>
 <translation id="8546059259582788728">Действие "Сортировать" отменено</translation>
 <translation id="8551588720239073785">Настройки даты и времени</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb
index c88eddc..e7fabf8 100644
--- a/ash/strings/ash_strings_si.xtb
+++ b/ash/strings/ash_strings_si.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">පූර්ණ තිරය පටිගත කරන්න</translation>
 <translation id="2135456203358955318">ඈඳන ලද විශාලකය</translation>
 <translation id="2148716181193084225">අද</translation>
+<translation id="2161132820593978283">ඔබ වීඩියෝ ඇමතුම්වල තිරයෙහි මැද සිටිනු ඇති පරිදි කැමරා රාමු කිරීමට උත්සාහ කරන්න. ඉක්මන් සැකසීම් තුළ එය ක්‍රියාත්මක කරන්න.</translation>
 <translation id="2170530631236737939">දළ විශ්ලේෂණයෙන් පිටවීමට ඇඟිලි තුනකින් පහළට ස්වයිප් කරන්න</translation>
 <translation id="219905428774326614">දියත්කරණය, සියලු යෙදුම්</translation>
 <translation id="2201071101391734388"><ph name="TOTAL_COUNT" />කින් <ph name="INDEX" />වන ඡායාරූපය</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">සම්බන්ධ නැත</translation>
 <translation id="2408955596600435184">ඔබගේ PIN එක ඇතුළු කරන්න</translation>
 <translation id="2412593942846481727">යාවත්කාලීනයක් ඇත</translation>
+<translation id="2426051945783024481">කැමරා රාමුව ස්වයංක්‍රීයව මධ්‍යගත වේ</translation>
 <translation id="2427507373259914951">වම්පස ක්ලික් කිරීම</translation>
 <translation id="2429753432712299108">"<ph name="DEVICE_NAME" />" බ්ලූටූත් උපාංගය යුගල කිරීමට අවසර පතයි. අනුමත කිරීමට පෙර, මෙම මුරවදන එම උපාංගයේ දිස් වූ බව තහවුරු කරගන්න: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">මුරපදය පෙන්වන්න</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">සක්‍රිය කර නැත. ඔබගේ වාහකය අමතන්න.</translation>
 <translation id="6961121602502368900">කාර්යාල පැතිකඩෙහි දුරකථනය නිහඬ කිරීම ලබා ගත නොහැකිය</translation>
 <translation id="6961840794482373852">Alt + ඉහළට ඊතලය යතුරු පුවරු කෙටි මග වෙනස් වී ඇත. Page Up යතුර භාවිත කිරීමට, <ph name="LAUNCHER_KEY_NAME" /> යතුර + ඉහළට ඊතලය ඔබන්න.</translation>
+<translation id="696267987219125751">කැමරා රාමු කිරීම ක්‍රියා විරහිතයි.</translation>
 <translation id="6965382102122355670">හරි</translation>
 <translation id="6972754398087986839">අරඹන්න</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">දින දර්ශනය, <ph name="DATE" /> හි සතිය, දැනට <ph name="SELECTED_DATE" /> තෝරා ඇත.</translation>
 <translation id="7514365320538308">බාගන්න</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">කැමරා රාමු කිරීම ක්‍රියාත්මකයි.</translation>
 <translation id="7526573455193969409">ජාලය නිරීක්ෂණය විය හැක</translation>
 <translation id="7536035074519304529">IP ලිපිනය: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux යෙදුම් සහ අප්‍රසිද්ධ කවුළු දැනට සහාය නොදක්වයි. වෙනත් යෙදුම් සුරකිනු ඇත.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">අත්හිටුවන ලදි</translation>
 <translation id="7609951632080598826">දින දර්ශන දසුන, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">කැමරාව යළි සම්බන්ධ කරන ලදි.</translation>
+<translation id="761736749114493194">කැමරා රාමු කිරීම ටොගල් කරන්න. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">ළඟ බෙදා ගැනීමේ සැකසීම් පෙන්වන්න.</translation>
 <translation id="7634648064048557203">කැමරාව පහළ දකුණු කෙළවරට සවි කර ඇත</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">වත්මන් මේසයෙන් කවුළු පෙන්වයි, රේඩියෝ බොත්තම තෝරා ගන්නා ලදී</translation>
 <translation id="8517041960877371778">ඔබගේ <ph name="DEVICE_TYPE" /> සක්‍රියව පවතින විට එය ආරෝපණය නොවනු ඇත.</translation>
 <translation id="8535393432370007982">වර්ණය අනුව අනුපිළිවෙලට සැකසීමේ පිළිවෙළ පසුගමනය කරන්න</translation>
+<translation id="8541078764854166027">කැමරා රාමුව</translation>
 <translation id="8542053257095774575">සුරැකි මේස හෝ අච්චු නැත</translation>
 <translation id="8546059259582788728">අනුපිළිවෙළට සැකසීම පසුගමනය සාර්ථකයි</translation>
 <translation id="8551588720239073785">දිනය සහ වේලාව සැකසීම්</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index f6687ad..643ce29 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Bola zapnutá lupa na celú obrazovku. Vypnete ju opätovným stlačením kombinácie klávesov Ctrl+Hľadať+M.</translation>
 <translation id="2302092602801625023">Tento účet spravuje aplikácia Family Link</translation>
 <translation id="2303600792989757991">Prepnúť prehľad okien</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: nedávne záznamy obrazovky, stiahnuté a pripnuté súbory</translation>
 <translation id="2318576281648121272">Dnes o <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" />, kategória výsledkov vyhľadávania</translation>
 <translation id="2322173485024759474">Dozadu o písmeno</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 59d2a4e8..a945f45a 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">Prikaz nastavitev deljenja v bližini.</translation>
 <translation id="7634648064048557203">Fotoaparat je pripet v spodnji desni kot</translation>
 <translation id="7641938616688887143">Snemaj</translation>
+<translation id="7642106959537987271">način inverzije barv</translation>
 <translation id="7642647758716480637">Odpiranje nastavitev za omrežje <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (lastnik)</translation>
 <translation id="7647488630410863958">Če si želite ogledati obvestila, odklenite napravo</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">Ponastavi</translation>
 <translation id="8214996719228530800">Kanal Canary</translation>
 <translation id="8219451629189078428">Chromebook mora medtem ostati vklopljen in priklopljen na vir napajanja. Poskrbite, da so kabli polnilnika ali napajalnika do konca priklopljeni v Chromebook in električno vtičnico. Chromebooka ne izklopite.</translation>
+<translation id="8230305195727960608">Način inverzije barv</translation>
 <translation id="8236042855478648955">Čas je za premor</translation>
 <translation id="8246282815785366524">Dobrodošli nazaj, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, moč signala je <ph name="SIGNAL_STRENGTH" />, stanje baterije telefona je <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">Vidnost v bližini</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Uporaba tega: <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Način inverzije barv je omogočen. Če ga želite izklopiti, znova pritisnite Ctrl + tipko za iskanje + H.</translation>
 <translation id="899350903320462459">Odklenite napravo kot <ph name="LOGIN_ID" />, da izvedete dejanje v obvestilu</translation>
 <translation id="9000771174482730261">UPRAVLJANJE PROSTORA ZA SHRANJEVANJE</translation>
 <translation id="9017320285115481645">Vnesite kodo za dostop starša za Family Link.</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">Tvoj starš je zaklenil napravo za ves dan</translation>
 <translation id="9220525904950070496">Odstranitev računa</translation>
 <translation id="923686485342484400">Dvakrat pritisnite Control Shift Q, če se želite odjaviti.</translation>
+<translation id="92580429198593979">Pritisnili ste bližnjično tipko za inverzijo barv. Ali jo želite vklopiti?</translation>
 <translation id="925832987464884575">Skrivanje predogledov</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> zahteva, da takoj posodobite napravo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="938963181863597773">Kaj je v mojem koledarju?</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb
index 62f1c5f..689f7c72 100644
--- a/ash/strings/ash_strings_sq.xtb
+++ b/ash/strings/ash_strings_sq.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Regjistro ekranin e plotë</translation>
 <translation id="2135456203358955318">Zmadhuesi i stacionuar</translation>
 <translation id="2148716181193084225">Sot</translation>
+<translation id="2161132820593978283">Provo inkuadrimin e kamerës që të shfaqesh në qendër të ekranit në videotelefonata. Aktivizoje te "Cilësimet e shpejta".</translation>
 <translation id="2170530631236737939">Rrëshqit shpejt poshtë me tre gishta për të dalë nga "Përmbledhja"</translation>
 <translation id="219905428774326614">Launcher, të gjitha aplikacionet</translation>
 <translation id="2201071101391734388">Fotografia e fundit <ph name="INDEX" /> nga <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Nuk është i lidhur</translation>
 <translation id="2408955596600435184">Fut kodin PIN</translation>
 <translation id="2412593942846481727">Ka përditësim</translation>
+<translation id="2426051945783024481">Kuadri i kamerës u vendos automatikisht në qendër</translation>
 <translation id="2427507373259914951">Klikimi me butonin majtas</translation>
 <translation id="2429753432712299108">Pajisja me Bluetooth, "<ph name="DEVICE_NAME" />" kërkon leje për çiftim. Përpara se të pranosh, konfirmo që ky çelës kalimi shfaqet në atë pajisje: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Shfaq fjalëkalimin</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Nuk është aktivizuar. Kontakto me operatorin celular.</translation>
 <translation id="6961121602502368900">"Vendose telefonin në heshtje" nuk ofrohet në profilin e punës</translation>
 <translation id="6961840794482373852">Shkurtorja e tastierës për Alt + Shigjeta lart është ndryshuar. Për të përdorur tastin Page Up, shtyp tastin <ph name="LAUNCHER_KEY_NAME" /> + Shigjeta lart.</translation>
+<translation id="696267987219125751">Inkuadrimi i kamerës është joaktiv.</translation>
 <translation id="6965382102122355670">Në rregull</translation>
 <translation id="6972754398087986839">Fillo</translation>
 <translation id="6979158407327259162">Disku i Google</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Kalendari, java e datës <ph name="DATE" />, aktualisht është zgjedhur <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Shkarko</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Inkuadrimi i kamerës është aktiv.</translation>
 <translation id="7526573455193969409">Rrjeti mund të jetë i monitoruar</translation>
 <translation id="7536035074519304529">Adresa IP: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Aplikacionet për Linux dhe dritaret "E fshehta" nuk mbështeten aktualisht. Aplikacionet e tjera do të ruhen.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Ndërprerë</translation>
 <translation id="7609951632080598826">Pamja e kalendarit, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kamera u rilidh.</translation>
+<translation id="761736749114493194">Aktivizo/çaktivizo inkuadrimin e kamerës. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Shfaq cilësimet e "Ndarjes në afërsi".</translation>
 <translation id="7634648064048557203">Pamja paraprake e kamerës ka kaluar në këndin e poshtëm djathtas</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Shfaq dritaret nga tavolina aktuale e punës, butoni i radios i zgjedhur</translation>
 <translation id="8517041960877371778">Pajisja jote <ph name="DEVICE_TYPE" /> mund të mos ngarkohet kur është e ndezur.</translation>
 <translation id="8535393432370007982">Zhbëj mënyrën e renditjes sipas ngjyrës</translation>
+<translation id="8541078764854166027">Inkuadrimi i kamerës</translation>
 <translation id="8542053257095774575">Nuk ka asnjë tavolinë pune apo shabllon të ruajtur</translation>
 <translation id="8546059259582788728">Mënyra e renditjes u zhbë me sukses</translation>
 <translation id="8551588720239073785">Cilësimet e datës dhe orës</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index 6246c0c..463031b 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Lupa za ceo ekran je omogućena. Ponovo pritisnite Ctrl + taster za pretragu + M da biste je isključili.</translation>
 <translation id="2302092602801625023">Ovim nalogom upravlja Family Link</translation>
 <translation id="2303600792989757991">Uključi/isključi pregled prozora</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: nedavni snimci ekrana, preuzimanja i zakačeni fajlovi</translation>
 <translation id="2318576281648121272">Danas <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" />, kategorija rezultata pretrage</translation>
 <translation id="2322173485024759474">Slovo unazad</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index b185524..8edcb5e 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">Лупа за цео екран је омогућена. Поново притисните Ctrl + тастер за претрагу + M да бисте је искључили.</translation>
 <translation id="2302092602801625023">Овим налогом управља Family Link</translation>
 <translation id="2303600792989757991">Укључи/искључи преглед прозора</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: недавни снимци екрана, преузимања и закачени фајлови</translation>
 <translation id="2318576281648121272">Данас <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" />, категорија резултата претраге</translation>
 <translation id="2322173485024759474">Слово уназад</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index 6b91b35..ae47f443 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Spela in hela skärmen</translation>
 <translation id="2135456203358955318">Dockad skärmförstoring</translation>
 <translation id="2148716181193084225">Idag</translation>
+<translation id="2161132820593978283">Testa kamerainramning så att du hamnar i mitten av skärmen i videosamtal. Aktivera det i snabbinställningarna.</translation>
 <translation id="2170530631236737939">Stäng översikten genom att svepa nedåt med tre fingrar</translation>
 <translation id="219905428774326614">Startprogram, alla appar</translation>
 <translation id="2201071101391734388">Foto <ph name="INDEX" /> av <ph name="TOTAL_COUNT" /> nya foton.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Inte ansluten</translation>
 <translation id="2408955596600435184">Ange din pinkod</translation>
 <translation id="2412593942846481727">Det finns en uppdatering</translation>
+<translation id="2426051945783024481">Kameraramen har centrerats automatiskt</translation>
 <translation id="2427507373259914951">Vänsterklicka</translation>
 <translation id="2429753432712299108">Bluetooth-enheten <ph name="DEVICE_NAME" /> har begärt tillstånd för koppling. Innan du godkänner bekräftar du att den här lösenordsnyckeln visas på den enheten: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Visa lösenord</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Inte aktiverat. Kontakta operatören.</translation>
 <translation id="6961121602502368900">Funktionen Inga telefonljud är inte tillgänglig i jobbprofilen</translation>
 <translation id="6961840794482373852">Kortkommandot Alt + uppåtpil har ändrats. Tryck på <ph name="LAUNCHER_KEY_NAME" />-tangenten + uppåtpil för att använda Page Up-tangenten.</translation>
+<translation id="696267987219125751">Kamerainramning är av.</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6972754398087986839">Komma igång</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Kalender, veckan med den <ph name="DATE" />, just nu är <ph name="SELECTED_DATE" /> markerat.</translation>
 <translation id="7514365320538308">Ladda ned</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Kamerainramning är på.</translation>
 <translation id="7526573455193969409">Nätverket kan vara övervakat</translation>
 <translation id="7536035074519304529">IP-adress: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Linux-appar och inkognitofönster stöds inte för närvarande. Andra appar sparas.</translation>
@@ -1146,6 +1150,7 @@
 <translation id="7607002721634913082">Pausad</translation>
 <translation id="7609951632080598826">Kalendervy: <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kameran har återanslutits.</translation>
+<translation id="761736749114493194">Aktivera och inaktivera kamerainramning. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7633755430369750696">Visa inställningar för Närdelning</translation>
 <translation id="7634648064048557203">Kameran har fästs i det nedre högra hörnet</translation>
@@ -1306,6 +1311,7 @@
 <translation id="851458219935658693">Visa fönster från det aktuella skrivbordet, alternativknapp har markerats</translation>
 <translation id="8517041960877371778">Din <ph name="DEVICE_TYPE" /> laddas eventuellt inte så länge den är på.</translation>
 <translation id="8535393432370007982">Ångra sortering efter färg</translation>
+<translation id="8541078764854166027">Inramning</translation>
 <translation id="8542053257095774575">Det finns inga sparade skrivbord eller mallar</translation>
 <translation id="8546059259582788728">Sorteringen har ångrats.</translation>
 <translation id="8551588720239073785">Inställningar för datum och tid</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index 86c57117..85d57c5a 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">Rekodi skrini nzima</translation>
 <translation id="2135456203358955318">Kikuzaji kilichofungwa</translation>
 <translation id="2148716181193084225">Leo</translation>
+<translation id="2161132820593978283">Jaribu kutumia kipengele cha kukuza picha kiotomatiki ili uonekane katikati ya skrini wakati wa simu za video. Washa kipengele cha kukuza kiotomatiki kwenye Mipangilio ya Haraka.</translation>
 <translation id="2170530631236737939">Telezesha vidole vitatu chini ili ufunge Muhtasari</translation>
 <translation id="219905428774326614">Kifungua Programu, programu zote</translation>
 <translation id="2201071101391734388">Picha ya hivi majuzi ya <ph name="INDEX" /> kati ya <ph name="TOTAL_COUNT" />.</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">Haijaunganishwa</translation>
 <translation id="2408955596600435184">Weka PIN yako</translation>
 <translation id="2412593942846481727">Sasisho linapatikana</translation>
+<translation id="2426051945783024481">Fremu ya kamera imewekwa katikati kiotomatiki</translation>
 <translation id="2427507373259914951">Mbofyo wa kushoto</translation>
 <translation id="2429753432712299108">Kifaa cha Bluetooth cha "<ph name="DEVICE_NAME" />" kinaomba idhini ya kuoanisha. Kabla hujakubali, tafadhali thibitisha kwamba nenosiri hili linaonyeshwa kwenye kifaa hicho: <ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">Onyesha nenosiri</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">Haijawashwa. Wasiliana na mtoa huduma wako.</translation>
 <translation id="6961121602502368900">Kipengele cha kuzima mlio wa simu hakipatikani kwenye wasifu wa kazini</translation>
 <translation id="6961840794482373852">Mikato ya kibodi ya Alt + Kishale cha Juu imebadilika. Ili utumie kitufe cha Page Up, bonyeza kitufe cha <ph name="LAUNCHER_KEY_NAME" /> pamoja na Kishale cha Juu.</translation>
+<translation id="696267987219125751">Kipengele cha kukuza picha kiotomatiki kimezimwa.</translation>
 <translation id="6965382102122355670">Sawa</translation>
 <translation id="6972754398087986839">Anza</translation>
 <translation id="6979158407327259162">Hifadhi ya Google</translation>
@@ -1128,6 +1131,7 @@
 <translation id="7513922695575567867">Kalenda, wiki ya <ph name="DATE" />, kwa sasa umechagua <ph name="SELECTED_DATE" />.</translation>
 <translation id="7514365320538308">Pakua</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">Kipengele cha kukuza picha kiotomatiki kimewashwa.</translation>
 <translation id="7526573455193969409">Huenda mtandao unafuatiliwa</translation>
 <translation id="7536035074519304529">Anwani ya IP: <ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">Programu za Linux pamoja na madirisha fiche hayawezi kutumika kwa sasa. Programu nyingine zitahifadhiwa.</translation>
@@ -1147,6 +1151,7 @@
 <translation id="7607002721634913082">Imepumzishwa</translation>
 <translation id="7609951632080598826">Mwonekano wa kalenda, <ph name="DATE" />, <ph name="TIME" /></translation>
 <translation id="7611213136657090146">Kamera imeunganishwa upya.</translation>
+<translation id="761736749114493194">Washa au zima kipengele cha kukuza picha kiotomatiki. <ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7633755430369750696">Onyesha mipangilio ya kipengele cha Uhamishaji wa Karibu.</translation>
 <translation id="7634648064048557203">Onyesho la kukagua kamera limelinganishwa kwenye kona ya chini kulia</translation>
@@ -1307,6 +1312,7 @@
 <translation id="851458219935658693">Onyesha madirisha yaliyo kwenye eneokazi la sasa, umechagua kitufe cha mviringo</translation>
 <translation id="8517041960877371778">Huenda kifaa chako cha <ph name="DEVICE_TYPE" /> kisichaji kikiwa kimewashwa.</translation>
 <translation id="8535393432370007982">Tendua utaratibu wa kupanga kulingana na rangi</translation>
+<translation id="8541078764854166027">Kipengele cha kukuza picha kiotomatiki</translation>
 <translation id="8542053257095774575">Hakuna maeneokazi au violezo vilivyohifadhiwa</translation>
 <translation id="8546059259582788728">Imefanikiwa kutendua upangaji</translation>
 <translation id="8551588720239073785">Mipangilio ya saa na tarehe</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index fffcf94..bb277d58 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -235,6 +235,7 @@
 <translation id="2298170939937364391">పూర్తి-స్క్రీన్ మాగ్నిఫైయర్ ఎనేబుల్ చేయబడింది. దాన్ని ఆఫ్‌కు టోగుల్ చేయడానికి మళ్లీ Ctrl+Search+Mని నొక్కండి.</translation>
 <translation id="2302092602801625023">ఈ ఖాతా Family Link ద్వారా నిర్వహించబడుతుంది</translation>
 <translation id="2303600792989757991">విండో స్థూలదృష్టిని టోగుల్ చేయి</translation>
+<translation id="2315005022200073389"><ph name="HOLDING_SPACE_TITLE" />: ఇటీవలి స్క్రీన్ క్యాప్చర్‌లు, డౌన్‌లోడ్‌లు, ఇంకా పిన్ చేయబడిన ఫైళ్లు</translation>
 <translation id="2318576281648121272">ఈ రోజు <ph name="TODAY_DATE" /></translation>
 <translation id="2322065293366551060"><ph name="CATEGORY" /> , సెర్చ్ ఫలితం కేటగిరీ</translation>
 <translation id="2322173485024759474">ఒక అక్షరం వెనుకకు</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index a9dc689..f521c24a 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">Hiện tùy chọn cài đặt Chia sẻ lân cận.</translation>
 <translation id="7634648064048557203">Máy ảnh đang bám theo góc dưới bên phải</translation>
 <translation id="7641938616688887143">Ghi hình</translation>
+<translation id="7642106959537987271">chế độ đảo màu</translation>
 <translation id="7642647758716480637">Mở phần cài đặt <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (chủ sở hữu)</translation>
 <translation id="7647488630410863958">Mở khóa thiết bị để xem thông báo của bạn</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">Đặt lại</translation>
 <translation id="8214996719228530800">Kênh Canary</translation>
 <translation id="8219451629189078428">Bạn cần phải luôn bật và kết nối Chromebook với nguồn điện trong thời gian này. Hãy đảm bảo bạn đã cắm chắc chắn cáp bộ sạc hoặc bộ đổi nguồn vào cả Chromebook lẫn ổ cắm điện. Không tắt Chromebook.</translation>
+<translation id="8230305195727960608">Chế độ đảo màu</translation>
 <translation id="8236042855478648955">Giờ nghỉ giải lao</translation>
 <translation id="8246282815785366524"><ph name="GIVEN_NAME" /> thân mến, chào mừng bạn quay lại!</translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, Cường độ tín hiệu <ph name="SIGNAL_STRENGTH" />, Pin điện thoại <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">Chế độ hiển thị lân cận</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Đang dùng <ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Đã bật Chế độ đảo màu. Nhấn tổ hợp phím Ctrl+Search+H một lần nữa để tắt chế độ này.</translation>
 <translation id="899350903320462459">Mở khóa thiết bị bằng <ph name="LOGIN_ID" /> để thực hiện hành động thông báo</translation>
 <translation id="9000771174482730261">QUẢN LÝ BỘ NHỚ</translation>
 <translation id="9017320285115481645">Nhập mã truy cập dành cho cha mẹ của Family Link.</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">Cha mẹ đã khóa thiết bị của bạn cả ngày</translation>
 <translation id="9220525904950070496">Xóa tài khoản</translation>
 <translation id="923686485342484400">Nhấn Control Shift Q hai lần để đăng xuất.</translation>
+<translation id="92580429198593979">Bạn đã nhấn phím tắt cho chế độ đảo màu. Bạn có muốn bật chế độ này không?</translation>
 <translation id="925832987464884575">Ẩn bản xem trước</translation>
 <translation id="937214777182567951">Theo yêu cầu của <ph name="MANAGER" />, bạn phải cập nhật thiết bị <ph name="DEVICE_TYPE" /> của mình ngay lập tức</translation>
 <translation id="938963181863597773">Trên lịch của tôi có sự kiện gì?</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 54a3f56..67c5c56 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">录制整个屏幕</translation>
 <translation id="2135456203358955318">停靠的放大镜</translation>
 <translation id="2148716181193084225">今天</translation>
+<translation id="2161132820593978283">试用相机取景功能,使自己在视频通话过程中位于屏幕中央。您可在“快捷设置”中开启此功能。</translation>
 <translation id="2170530631236737939">若要退出“概览”模式,请用三根手指向下滑动</translation>
 <translation id="219905428774326614">启动器,所有应用</translation>
 <translation id="2201071101391734388">近期照片中的第 <ph name="INDEX" /> 张,共 <ph name="TOTAL_COUNT" /> 张。</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">未连接</translation>
 <translation id="2408955596600435184">输入您的 PIN 码</translation>
 <translation id="2412593942846481727">有可用的更新</translation>
+<translation id="2426051945783024481">相机取景画面已自动居中</translation>
 <translation id="2427507373259914951">点击鼠标左键</translation>
 <translation id="2429753432712299108">蓝牙设备“<ph name="DEVICE_NAME" />”需要配对许可。在接受之前,请确保该设备上显示以下配对密钥:<ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">显示密码</translation>
@@ -1038,6 +1040,7 @@
 <translation id="6960565108681981554">未激活。请联系您的运营商。</translation>
 <translation id="6961121602502368900">工作资料不支持“将手机设为静音”功能</translation>
 <translation id="6961840794482373852">键盘快捷键“Alt + 向上键”已更改。若要使用 Page Up 键,请按<ph name="LAUNCHER_KEY_NAME" />键 + 向上键。</translation>
+<translation id="696267987219125751">相机取景功能已关闭。</translation>
 <translation id="6965382102122355670">确定</translation>
 <translation id="6972754398087986839">开始使用</translation>
 <translation id="6979158407327259162">Google 云端硬盘</translation>
@@ -1125,6 +1128,7 @@
 <translation id="7513922695575567867">日历,<ph name="DATE" />这周,目前所选日期为 <ph name="SELECTED_DATE" />。</translation>
 <translation id="7514365320538308">下载</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">相机取景功能已开启。</translation>
 <translation id="7526573455193969409">网络可能受到了监控</translation>
 <translation id="7536035074519304529">IP 地址:<ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">目前不支持 Linux 应用和无痕式窗口。其他应用会被保存。</translation>
@@ -1143,6 +1147,7 @@
 <translation id="7607002721634913082">已暂停</translation>
 <translation id="7609951632080598826">日历视图,<ph name="DATE" /> <ph name="TIME" /></translation>
 <translation id="7611213136657090146">已重新连接相机。</translation>
+<translation id="761736749114493194">开启/关闭相机取景功能。<ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> 华氏度</translation>
 <translation id="7633755430369750696">显示“附近分享”设置。</translation>
 <translation id="7634648064048557203">相机已对准右下角</translation>
@@ -1303,6 +1308,7 @@
 <translation id="851458219935658693">显示当前桌面中的窗口,已选中单选按钮</translation>
 <translation id="8517041960877371778">您的 <ph name="DEVICE_TYPE" /> 在开启时可能无法充电。</translation>
 <translation id="8535393432370007982">撤消按颜色排序</translation>
+<translation id="8541078764854166027">相机取景</translation>
 <translation id="8542053257095774575">尚未保存任何桌面或模板</translation>
 <translation id="8546059259582788728">已成功撤消排序</translation>
 <translation id="8551588720239073785">日期和时间设置</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index bf7fba6..1cacdb9 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -214,6 +214,7 @@
 <translation id="2132302418721800944">錄製全螢幕畫面</translation>
 <translation id="2135456203358955318">停駐放大鏡</translation>
 <translation id="2148716181193084225">今天</translation>
+<translation id="2161132820593978283">試用相機取景功能,讓你在視訊通話時處於畫面中央。你可以在「快速設定」中開啟這項功能。</translation>
 <translation id="2170530631236737939">以三指向下滑動即可結束「總覽」</translation>
 <translation id="219905428774326614">啟動器,所有應用程式</translation>
 <translation id="2201071101391734388">第 <ph name="INDEX" /> 張近期相片,共 <ph name="TOTAL_COUNT" /> 張。</translation>
@@ -252,6 +253,7 @@
 <translation id="2405664212338326887">未連線</translation>
 <translation id="2408955596600435184">請輸入你的 PIN 碼</translation>
 <translation id="2412593942846481727">有可用的更新</translation>
+<translation id="2426051945783024481">相機鏡頭會自動置中</translation>
 <translation id="2427507373259914951">按左鍵</translation>
 <translation id="2429753432712299108">藍牙裝置「<ph name="DEVICE_NAME" />」要求配對權限。接受要求前,請確認裝置顯示以下密碼金鑰:<ph name="PASSKEY" /></translation>
 <translation id="2435457462613246316">顯示密碼</translation>
@@ -1037,6 +1039,7 @@
 <translation id="6960565108681981554">未啟用。請與你的電信業者聯絡。</translation>
 <translation id="6961121602502368900">工作資料夾不支援將手機設為靜音</translation>
 <translation id="6961840794482373852">「Alt + 向上鍵」的鍵盤快速鍵已變更。如要使用 Page Up 鍵,請按下<ph name="LAUNCHER_KEY_NAME" />鍵 + 向上鍵。</translation>
+<translation id="696267987219125751">已關閉相機取景功能。</translation>
 <translation id="6965382102122355670">確定</translation>
 <translation id="6972754398087986839">開始使用</translation>
 <translation id="6979158407327259162">Google 雲端硬碟</translation>
@@ -1127,6 +1130,7 @@
 <translation id="7513922695575567867">日曆,<ph name="DATE" />當週,目前已選取 <ph name="SELECTED_DATE" /> 日。</translation>
 <translation id="7514365320538308">下載</translation>
 <translation id="7515998400212163428">Android</translation>
+<translation id="7519206258459640379">已開啟相機取景功能。</translation>
 <translation id="7526573455193969409">網路可能會受到監控</translation>
 <translation id="7536035074519304529">IP 位址:<ph name="ADDRESS" /></translation>
 <translation id="7543399541175347147">目前不支援 Linux 應用程式和無痕式視窗。系統將儲存其他應用程式。</translation>
@@ -1145,10 +1149,12 @@
 <translation id="7607002721634913082">已暫停</translation>
 <translation id="7609951632080598826">日曆檢視畫面,<ph name="DATE" /> <ph name="TIME" /></translation>
 <translation id="7611213136657090146">已重新連接攝影機。</translation>
+<translation id="761736749114493194">切換相機取景功能。<ph name="STATE_TEXT" /></translation>
 <translation id="7624117708979618027">華氏 <ph name="TEMPERATURE_F" />°</translation>
 <translation id="7633755430369750696">顯示鄰近分享設定。</translation>
 <translation id="7634648064048557203">攝影機已對齊右下角</translation>
 <translation id="7641938616688887143">錄影</translation>
+<translation id="7642106959537987271">色彩反轉模式</translation>
 <translation id="7642647758716480637">開啟「<ph name="NETWORK_NAME" />」設定,<ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (擁有者)</translation>
 <translation id="7647488630410863958">解鎖裝置即可查看通知</translation>
@@ -1254,6 +1260,7 @@
 <translation id="8209010265547628927">重設</translation>
 <translation id="8214996719228530800">Canary 版</translation>
 <translation id="8219451629189078428">在這段期間內,你的 Chromebook 需要保持開啟並接上電源。請確認充電器或變壓器電源線已完全插入 Chromebook 和電源插座。請勿將 Chromebook 關機。</translation>
+<translation id="8230305195727960608">色彩反轉模式</translation>
 <translation id="8236042855478648955">休息時間到了</translation>
 <translation id="8246282815785366524">歡迎回來,<ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />,訊號強度 <ph name="SIGNAL_STRENGTH" />,手機電量:<ph name="BATTERY_STATUS" /></translation>
@@ -1305,6 +1312,7 @@
 <translation id="851458219935658693">顯示目前桌面的視窗,已點選圓形按鈕</translation>
 <translation id="8517041960877371778"><ph name="DEVICE_TYPE" /> 在開啟時可能無法充電。</translation>
 <translation id="8535393432370007982">復原依顏色排列順序</translation>
+<translation id="8541078764854166027">相機取景</translation>
 <translation id="8542053257095774575">沒有已儲存的桌面或範本</translation>
 <translation id="8546059259582788728">已成功復原排列順序</translation>
 <translation id="8551588720239073785">日期和時間設定</translation>
@@ -1379,6 +1387,7 @@
 <translation id="8982906748181120328">鄰近分享瀏覽權限</translation>
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">目前使用<ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">色彩反轉模式已啟用,再次按下 Ctrl 鍵 + 搜尋鍵 + H 鍵即可停用。</translation>
 <translation id="899350903320462459">以 <ph name="LOGIN_ID" /> 帳戶解鎖裝置,即可執行通知動作</translation>
 <translation id="9000771174482730261">管理儲存空間</translation>
 <translation id="9017320285115481645">請輸入 Family Link 家長存取碼。</translation>
@@ -1427,6 +1436,7 @@
 <translation id="921989828232331238">你的家長今天已鎖定這部裝置</translation>
 <translation id="9220525904950070496">移除帳戶</translation>
 <translation id="923686485342484400">按兩下 Ctrl+Shift+Q 鍵即可登出。</translation>
+<translation id="92580429198593979">你已按下色彩反轉模式的鍵盤快速鍵。要開啟這項功能嗎?</translation>
 <translation id="925832987464884575">隱藏預覽</translation>
 <translation id="937214777182567951"><ph name="MANAGER" /> 要求你立即更新 <ph name="DEVICE_TYPE" /></translation>
 <translation id="938963181863597773">我的日曆上有什麼活動?</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb
index 5942d043..055eff3 100644
--- a/ash/strings/ash_strings_zu.xtb
+++ b/ash/strings/ash_strings_zu.xtb
@@ -1155,6 +1155,7 @@
 <translation id="7633755430369750696">Bonisa Amasethingi Okuthumela Eduze.</translation>
 <translation id="7634648064048557203">Ikhamera iqondaniswe ekhoneni elingezansi ngakwesokudla</translation>
 <translation id="7641938616688887143">Rekhoda</translation>
+<translation id="7642106959537987271">imodi yokuguqulwa kombala</translation>
 <translation id="7642647758716480637">Vula izilungiselelo ze-<ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (umnikazi)</translation>
 <translation id="7647488630410863958">Vula idivayisi ukuze ubuke izaziso zakho</translation>
@@ -1260,6 +1261,7 @@
 <translation id="8209010265547628927">Setha kabusha</translation>
 <translation id="8214996719228530800">Isiteshi se-Canary</translation>
 <translation id="8219451629189078428">I-Chromebook kudingeka ihlale ivuliwe futhi ixhunywe emandleni phakathi nalesi sikhathi. Qiniseka ukuthi amakhebuli weshaja noma we-adaptha axhunywe ngokuphelele, kokubili ku-Chromebook yakho nalapho kuphuma khona amandla. Ungayivali i-Chromebook yakho.</translation>
+<translation id="8230305195727960608">Imodi Yokuguqulwa Kombala</translation>
 <translation id="8236042855478648955">Isikhathi sekhefu</translation>
 <translation id="8246282815785366524">Siyakwamukela futhi, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781">I-<ph name="CONNECTION_STATUS" />, Amandla esignali angu-<ph name="SIGNAL_STRENGTH" />, iphethwe umlawuli wakho <ph name="BATTERY_STATUS" /></translation>
@@ -1386,6 +1388,7 @@
 <translation id="8982906748181120328">Ukubonakala Eduze</translation>
 <translation id="8983038754672563810">I-HSPA</translation>
 <translation id="8990809378771970590">Usebenzisa i-<ph name="IME_NAME" /></translation>
+<translation id="8991617137207906966">Imodi Yokuguqulwa Kombala inikwe amandla. Cindezela okuthi Ctrl+Search+H futhi ukuze uyivale.</translation>
 <translation id="899350903320462459">Vula amadivayisi njenge-<ph name="LOGIN_ID" /> ukuze wenze isenzo sesaziso</translation>
 <translation id="9000771174482730261">LAWULA ISITOREJI</translation>
 <translation id="9017320285115481645">Faka ikhodi yokufinyelela yomzali ye-Family Link.</translation>
@@ -1434,6 +1437,7 @@
 <translation id="921989828232331238">Umzali wakho ukhiyele idivayisi yakho usuku</translation>
 <translation id="9220525904950070496">Susa i-akhawunti</translation>
 <translation id="923686485342484400">Cindezela u-Control Shift Q kabili ukuze uphume ngemvume.</translation>
+<translation id="92580429198593979">Ucindezele isinqamuleli sekhibhodi sokuguqulwa kombala. Ingabe ufuna ukuyivula?</translation>
 <translation id="925832987464884575">Fihla ukubuka kuqala</translation>
 <translation id="937214777182567951">I-<ph name="MANAGER" /> idinga ukuba ubuyekeze i-<ph name="DEVICE_TYPE" /> yakho ngokushesha</translation>
 <translation id="938963181863597773">Yini okukukhalenda yami?</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb
index fea63b38..8a02035 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Kopieer skakeladres</translation>
 <translation id="4281620174117014503">Mediumresolusie</translation>
 <translation id="4329152592498422850">Wissel om vierkantige foto te neem</translation>
+<translation id="4340659173795395806">Jy kan nou multi-blad-PDF's skep</translation>
 <translation id="4383571725254449280">Drukwerkverrigtingloglêers</translation>
 <translation id="4445542136948522167">Hou op om foto te neem</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapieksel</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb
index 0f5c032..168baaa 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">የአገናኝ አድራሻ ቅዳ</translation>
 <translation id="4281620174117014503">መካከለኛ ጥራት</translation>
 <translation id="4329152592498422850">የካሬ ፎቶን ለማንሳት ይቀይሩ</translation>
+<translation id="4340659173795395806">አሁን ላይ ባለብዙ ገጽ PDFን መፍጠር ይችላሉ</translation>
 <translation id="4383571725254449280">የህትመት አፈጻጸም መዝገቦች</translation>
 <translation id="4445542136948522167">ፎቶን ማንሳት አቁም</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> ሜጋ ፒክሴል</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb
index 7eebd1a8..a7f3adf 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Heç nə çəkilməyib</translation>
+<translation id="169335673490251151">Əlavə səhifələri skan edin</translation>
 <translation id="1838104802459806957">Yuxarı əyin</translation>
 <translation id="1851169887664797861">Əlavə kamera nizamlayıcıları əlçatandır</translation>
 <translation id="1851616744363735765">DURDURULUB</translation>
@@ -78,6 +79,7 @@
 <translation id="4269820728363426813">Link ünvanını kopyalayın</translation>
 <translation id="4281620174117014503">Orta ayırdetmə dəqiqliyi</translation>
 <translation id="4329152592498422850">Kvadrat foto çəkmək üçün keçid edin</translation>
+<translation id="4340659173795395806">İndi çoxsəhifəli PDF yarada bilərsiniz</translation>
 <translation id="4383571725254449280">Performans jurnallarını çap edin</translation>
 <translation id="4445542136948522167">Foto çəkməyi dayandırın</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> meqa piksel</translation>
@@ -98,6 +100,7 @@
 <translation id="5317780077021120954">Yadda saxlayın</translation>
 <translation id="5320594929574852403">Sol tərəfə daşınır</translation>
 <translation id="5444515100983837161">Sənədin bütün kənarlarını çərçivənin daxilinə yerləşdirin. Sənəd və arxa fon fərqli rənglərdə olduqda skanlama daha keyfiyyətli olur.</translation>
+<translation id="5662366948659129155">Səhifə <ph name="COUNT" /> skanlanır</translation>
 <translation id="5671277269877808209">Kvadrat</translation>
 <translation id="5746169159649715125">PDF olaraq saxlayın</translation>
 <translation id="5753488212459587150">Ekspert rejimini aktiv edin</translation>
@@ -105,6 +108,7 @@
 <translation id="5775960006311140197">Ekspert rejimi</translation>
 <translation id="5860033963881614850">Deaktiv</translation>
 <translation id="5869546221129391014">Şəbəkə</translation>
+<translation id="5903928279335207406">Səhifəni silin</translation>
 <translation id="5916664084637901428">Aktiv</translation>
 <translation id="5975083100439434680">Kiçildin</translation>
 <translation id="5976160379964388480">Digərləri</translation>
@@ -156,6 +160,7 @@
 <translation id="8167081290930651932">Foto olaraq yadda saxlayın</translation>
 <translation id="8239780215768881278">Video snepşotu çəkin</translation>
 <translation id="8261506727792406068">Silin</translation>
+<translation id="839162370397157884">Səhifə seçin</translation>
 <translation id="8425673304802773841">Aşağı əyin</translation>
 <translation id="8428213095426709021">Ayarlar</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb
index 72dbe64..5996f23 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Камера</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Даныя не запісаны</translation>
+<translation id="169335673490251151">Адсканіраваць больш старонак</translation>
 <translation id="1838104802459806957">Нахіліць уверх</translation>
 <translation id="1851169887664797861">Дадатковыя элементы кіравання камерай даступныя</translation>
 <translation id="1851616744363735765">ПРЫПЫНЕНА</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Капіраваць спасылку</translation>
 <translation id="4281620174117014503">Сярэдняя раздзяляльнасць</translation>
 <translation id="4329152592498422850">Пераключыць на здымку квадратных фота</translation>
+<translation id="4340659173795395806">Цяпер вы можаце ствараць PDF-файлы з мноствам старонак</translation>
 <translation id="4383571725254449280">Журналы прадукцыйнасці друку</translation>
 <translation id="4445542136948522167">Спыніць фотаздымку</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> Мпікс</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Захаваць</translation>
 <translation id="5320594929574852403">Перамяшчаецца ўлева</translation>
 <translation id="5444515100983837161">Памясціце ўсе краі дакумента ўнутр рамкі. Якасць сканіравання будзе лепшай, калі дакумент і фон, на якім ён знаходзіцца, маюць розны колер.</translation>
+<translation id="5662366948659129155">Сканіруецца старонка <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Квадрат</translation>
 <translation id="5746169159649715125">Захаваць як PDF</translation>
 <translation id="5753488212459587150">Уключыць экспертны рэжым</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Экспертны рэжым</translation>
 <translation id="5860033963881614850">Выключана</translation>
 <translation id="5869546221129391014">Сетка</translation>
+<translation id="5903928279335207406">Выдаліць старонку</translation>
 <translation id="5916664084637901428">Уключана</translation>
 <translation id="5975083100439434680">Паменшыць</translation>
 <translation id="5976160379964388480">Іншыя</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Захаваць як фота</translation>
 <translation id="8239780215768881278">Зрабіць здымак экрана</translation>
 <translation id="8261506727792406068">Выдаліць</translation>
+<translation id="839162370397157884">Выбраць старонку</translation>
 <translation id="8425673304802773841">Нахіліць уніз</translation>
 <translation id="8428213095426709021">Налады</translation>
 <translation id="8629662593426079630">360p</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 f63e4af..604739a 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
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Kopiraj adresu linka</translation>
 <translation id="4281620174117014503">Srednja rezolucija</translation>
 <translation id="4329152592498422850">Pređi na snimanje kvadratne fotografije</translation>
+<translation id="4340659173795395806">Sada možete kreirati PDF s više stranica</translation>
 <translation id="4383571725254449280">Zapisnici o radu štampača</translation>
 <translation id="4445542136948522167">Zaustavi fotografiranje</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapiksela</translation>
@@ -101,7 +102,7 @@
 <translation id="5317780077021120954">Sačuvaj</translation>
 <translation id="5320594929574852403">Pomjeranje ulijevo</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 stranice <ph name="COUNT" /></translation>
+<translation id="5662366948659129155">Skeniranje <ph name="COUNT" />. stranice</translation>
 <translation id="5671277269877808209">Kvadrat</translation>
 <translation id="5746169159649715125">Sačuvaj kao PDF</translation>
 <translation id="5753488212459587150">Omogući način rada za stručnjake</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_cs.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_cs.xtb
index dd6350d..5b48d1b 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_cs.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_cs.xtb
@@ -80,6 +80,7 @@
 <translation id="4269820728363426813">Zkopírovat adresu odkazu</translation>
 <translation id="4281620174117014503">Střední rozlišení</translation>
 <translation id="4329152592498422850">Přepnout na pořízení čtvercové fotky</translation>
+<translation id="4340659173795395806">Teď můžete vytvořit vícestránkový soubor PDF</translation>
 <translation id="4383571725254449280">Vytisknout protokoly výkonu</translation>
 <translation id="4445542136948522167">Zastavit focení</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" /> : <ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> Mpx</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb
index 425020a..d32c0349 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Cámara</translation>
 <translation id="1627744224761163218">4 × 4</translation>
 <translation id="1664224225747386870">No se grabaron datos</translation>
+<translation id="169335673490251151">Escanear más páginas</translation>
 <translation id="1838104802459806957">Inclinar hacia arriba</translation>
 <translation id="1851169887664797861">Controles adicionales de cámara disponibles</translation>
 <translation id="1851616744363735765">DETENIDA</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Copiar dirección del vínculo</translation>
 <translation id="4281620174117014503">Resolución media</translation>
 <translation id="4329152592498422850">Cambiar al modo para tomar fotos cuadradas</translation>
+<translation id="4340659173795395806">Ahora puedes crear archivos PDF de varias páginas</translation>
 <translation id="4383571725254449280">Registros de rendimiento de impresión</translation>
 <translation id="4445542136948522167">Detener foto</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapíxel</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Guardar</translation>
 <translation id="5320594929574852403">Se está moviendo hacia la izquierda</translation>
 <translation id="5444515100983837161">Coloca todos los bordes del documento dentro del cuadro. El escaneado funciona mejor si el documento tiene un color diferente al del fondo.</translation>
+<translation id="5662366948659129155">Escaneando página <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Cuadrado</translation>
 <translation id="5746169159649715125">Guardar como PDF</translation>
 <translation id="5753488212459587150">Habilitar el modo experto</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Modo experto</translation>
 <translation id="5860033963881614850">Desactivado</translation>
 <translation id="5869546221129391014">Cuadrícula</translation>
+<translation id="5903928279335207406">Borrar página</translation>
 <translation id="5916664084637901428">Activado</translation>
 <translation id="5975083100439434680">Alejar</translation>
 <translation id="5976160379964388480">Otros</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Guardar como foto</translation>
 <translation id="8239780215768881278">Tomar una instantánea del video</translation>
 <translation id="8261506727792406068">Borrar</translation>
+<translation id="839162370397157884">Seleccionar página</translation>
 <translation id="8425673304802773841">Inclinar hacia abajo</translation>
 <translation id="8428213095426709021">Configuración</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_es.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_es.xtb
index 22128b3..9673ef9 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_es.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_es.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Copiar la dirección del enlace</translation>
 <translation id="4281620174117014503">Resolución media</translation>
 <translation id="4329152592498422850">Cambiar para hacer una foto cuadrada</translation>
+<translation id="4340659173795395806">Ahora puedes crear PDFs de varias páginas</translation>
 <translation id="4383571725254449280">Imprimir registros de rendimiento</translation>
 <translation id="4445542136948522167">Detener foto</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapíxeles</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb
index 138ab65..fe2f7968c3 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Kopeeri lingi aadress</translation>
 <translation id="4281620174117014503">Keskmine eraldusvõime</translation>
 <translation id="4329152592498422850">Vaheta ruudukujulise foto jäädvustamiseks</translation>
+<translation id="4340659173795395806">Nüüd saate luua mitme lehega PDF-e</translation>
 <translation id="4383571725254449280">Printimise toimivuslogid</translation>
 <translation id="4445542136948522167">Peata foto jäädvustamine</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" /> : <ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapikslit</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 bf12740..d86c421 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
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4x4</translation>
 <translation id="1664224225747386870">Mitään ei kuvattu</translation>
+<translation id="169335673490251151">Skannaa lisää sivuja</translation>
 <translation id="1838104802459806957">Kallista ylöspäin</translation>
 <translation id="1851169887664797861">Lisää kameran säätimiä käytettävissä</translation>
 <translation id="1851616744363735765">KESKEYTETTY</translation>
@@ -101,6 +102,7 @@
 <translation id="5317780077021120954">Tallenna</translation>
 <translation id="5320594929574852403">Siirretään vasemmalle</translation>
 <translation id="5444515100983837161">Aseta dokumentti niin, että kaikki reunat ovat kehyksen sisällä. Skannaus toimii parhaiten, kun dokumentti ja tausta ovat erivärisiä</translation>
+<translation id="5662366948659129155">Skannataan sivua <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Neliö</translation>
 <translation id="5746169159649715125">Tallenna PDF-muodossa</translation>
 <translation id="5753488212459587150">Ota asiantuntijatila käyttöön</translation>
@@ -108,6 +110,7 @@
 <translation id="5775960006311140197">Asiantuntija-tila</translation>
 <translation id="5860033963881614850">Pois päältä</translation>
 <translation id="5869546221129391014">Ruudukko</translation>
+<translation id="5903928279335207406">Poista sivu</translation>
 <translation id="5916664084637901428">Päällä</translation>
 <translation id="5975083100439434680">Loitonna</translation>
 <translation id="5976160379964388480">Muut</translation>
@@ -159,6 +162,7 @@
 <translation id="8167081290930651932">Tallenna kuvana</translation>
 <translation id="8239780215768881278">Ota kuvakaappaus videosta</translation>
 <translation id="8261506727792406068">Poista</translation>
+<translation id="839162370397157884">Valitse sivu</translation>
 <translation id="8425673304802773841">Kallista alaspäin</translation>
 <translation id="8428213095426709021">Asetukset</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb
index 8f55b9d2..76a040a 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Copier l'adresse du lien</translation>
 <translation id="4281620174117014503">Résolution moyenne</translation>
 <translation id="4329152592498422850">Bouton permettant de prendre une photo carrée</translation>
+<translation id="4340659173795395806">Vous pouvez maintenant créer un PDF multipage</translation>
 <translation id="4383571725254449280">Imprimer les journaux de performance</translation>
 <translation id="4445542136948522167">Ne pas prendre la photo</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> mégapixels</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb
index 57ffe98..575d379 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Caméra</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Aucune donnée enregistrée</translation>
+<translation id="169335673490251151">Scanner d'autres pages</translation>
 <translation id="1838104802459806957">Redresser</translation>
 <translation id="1851169887664797861">D'autres commandes sont disponibles pour la caméra</translation>
 <translation id="1851616744363735765">SUSPENDU</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Copier l'adresse du lien</translation>
 <translation id="4281620174117014503">Résolution moyenne</translation>
 <translation id="4329152592498422850">Bouton permettant de prendre une photo carrée</translation>
+<translation id="4340659173795395806">Vous pouvez désormais créer des PDF de plusieurs pages</translation>
 <translation id="4383571725254449280">Imprimer les journaux concernant les performances</translation>
 <translation id="4445542136948522167">Arrêter de prendre la photo</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> mégapixels</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Enregistrer</translation>
 <translation id="5320594929574852403">Déplacement vers la gauche</translation>
 <translation id="5444515100983837161">Placez le document dans le cadre. L'image scannée sera de meilleure qualité si les couleurs du document et de l'arrière-plan sont différentes.</translation>
+<translation id="5662366948659129155">Numérisation de la page <ph name="COUNT" />…</translation>
 <translation id="5671277269877808209">Carré</translation>
 <translation id="5746169159649715125">Enregistrer au format PDF</translation>
 <translation id="5753488212459587150">Activer le mode Expert</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Mode Expert</translation>
 <translation id="5860033963881614850">Désactivé</translation>
 <translation id="5869546221129391014">Grille</translation>
+<translation id="5903928279335207406">Supprimer la page</translation>
 <translation id="5916664084637901428">Activé</translation>
 <translation id="5975083100439434680">Zoom arrière</translation>
 <translation id="5976160379964388480">Autres</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Enregistrer en tant que photo</translation>
 <translation id="8239780215768881278">Prendre un instantané vidéo</translation>
 <translation id="8261506727792406068">Supprimer</translation>
+<translation id="839162370397157884">Sélectionner la page</translation>
 <translation id="8425673304802773841">Incliner</translation>
 <translation id="8428213095426709021">Paramètres</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb
index 7773abc..6a7a318 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Cámara</translation>
 <translation id="1627744224761163218">4 × 4</translation>
 <translation id="1664224225747386870">Non se gravou nada</translation>
+<translation id="169335673490251151">Escanear máis páxinas</translation>
 <translation id="1838104802459806957">Inclinar cara arriba</translation>
 <translation id="1851169887664797861">Hai dispoñibles novos controis da cámara</translation>
 <translation id="1851616744363735765">EN PAUSA</translation>
@@ -101,6 +102,7 @@
 <translation id="5317780077021120954">Gardar</translation>
 <translation id="5320594929574852403">Desprazándose cara á esquerda</translation>
 <translation id="5444515100983837161">Coloca todos os bordos do documento no marco. O escaneado funciona mellor se o documento e o fondo son de cores diferentes.</translation>
+<translation id="5662366948659129155">Escaneando páxina <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Cadrado</translation>
 <translation id="5746169159649715125">Gardar como PDF</translation>
 <translation id="5753488212459587150">Activar modo experto</translation>
@@ -108,6 +110,7 @@
 <translation id="5775960006311140197">Modo experto</translation>
 <translation id="5860033963881614850">Non</translation>
 <translation id="5869546221129391014">Grade</translation>
+<translation id="5903928279335207406">Eliminar páxina</translation>
 <translation id="5916664084637901428">Si</translation>
 <translation id="5975083100439434680">Afastar</translation>
 <translation id="5976160379964388480">Outros</translation>
@@ -159,6 +162,7 @@
 <translation id="8167081290930651932">Gardar como foto</translation>
 <translation id="8239780215768881278">Crear instantánea do vídeo</translation>
 <translation id="8261506727792406068">Eliminar</translation>
+<translation id="839162370397157884">Seleccionar páxina</translation>
 <translation id="8425673304802773841">Inclinar cara abaixo</translation>
 <translation id="8428213095426709021">Configuración</translation>
 <translation id="8629662593426079630">360 p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb
index dbbb96c..d6cbc2e 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Kopiraj adresu veze</translation>
 <translation id="4281620174117014503">Razlučivost za medije</translation>
 <translation id="4329152592498422850">Prijeđi na snimanje kvadratne fotografije</translation>
+<translation id="4340659173795395806">Sada možete izrađivati PDF s više stranica</translation>
 <translation id="4383571725254449280">Ispis zapisnika o izvedbi</translation>
 <translation id="4445542136948522167">Zaustavi snimanje fotografije</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapiksel</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 118b0dd9..359f605 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
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Link másolása</translation>
 <translation id="4281620174117014503">Közepes felbontás</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>
 <translation id="4445542136948522167">Fotókészítés leállítása</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapixel</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hy.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hy.xtb
index 8e3be3c..84d281c 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hy.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hy.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Տեսախցիկ</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Տեսագրություն չկա</translation>
+<translation id="169335673490251151">Սկանավորել լրացուցիչ էջեր</translation>
 <translation id="1838104802459806957">Թեքել վերև</translation>
 <translation id="1851169887664797861">Հասանելի են տեսախցիկի լրացուցիչ կարգավորումներ</translation>
 <translation id="1851616744363735765">ԴԱԴԱՐԵՑՎԱԾ Է</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Պատճենել հղման հասցեն</translation>
 <translation id="4281620174117014503">Միջին լուծաչափ</translation>
 <translation id="4329152592498422850">Անցնել քառակուսի լուսանկարների ռեժիմին</translation>
+<translation id="4340659173795395806">Այժմ դուք կարող եք ստեղծել մի քանի էջից կազմված PDF ֆայլ</translation>
 <translation id="4383571725254449280">Տպման վիճակագրության մատյաններ</translation>
 <translation id="4445542136948522167">Դադարեցնել լուսանկարումը</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> մեգապիքսել</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Պահել</translation>
 <translation id="5320594929574852403">Տեղափոխվում է ձախ</translation>
 <translation id="5444515100983837161">Փաստաթուղթը դրեք շրջանակի մեջ։ Սկանավորումը լավագույնս աշխատում է, երբ փաստաթղթի և ֆոնի գույները տարբեր են։</translation>
+<translation id="5662366948659129155">Սկանավորվում է էջ <ph name="COUNT" />-ը</translation>
 <translation id="5671277269877808209">Քառակուսի</translation>
 <translation id="5746169159649715125">Պահել որպես PDF</translation>
 <translation id="5753488212459587150">Միացնել փորձագետի ռեժիմը</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Փորձագետի ռեժիմ</translation>
 <translation id="5860033963881614850">Անջատ.</translation>
 <translation id="5869546221129391014">Ցանց</translation>
+<translation id="5903928279335207406">Ջնջել էջը</translation>
 <translation id="5916664084637901428">Միացնել</translation>
 <translation id="5975083100439434680">Փոքրացնել</translation>
 <translation id="5976160379964388480">Այլ</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Պահել որպես լուսանկար</translation>
 <translation id="8239780215768881278">Լուսանկարել տեսանյութի կադր</translation>
 <translation id="8261506727792406068">Ջնջել</translation>
+<translation id="839162370397157884">Ընտրել էջը</translation>
 <translation id="8425673304802773841">Թեքել ներքև</translation>
 <translation id="8428213095426709021">Կարգավորումներ</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb
index 04447676..5b24e513 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Myndavél</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Ekkert var tekið upp</translation>
+<translation id="169335673490251151">Skanna fleiri síður</translation>
 <translation id="1838104802459806957">Halla upp</translation>
 <translation id="1851169887664797861">Viðbótarstýringar tiltækar fyrir myndavél</translation>
 <translation id="1851616744363735765">HLÉ</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Afrita slóð tengils</translation>
 <translation id="4281620174117014503">Miðlungsupplausn</translation>
 <translation id="4329152592498422850">Skipta yfir í töku ferningslaga mynda</translation>
+<translation id="4340659173795395806">Nú geturðu búið til PDF með mörgum síðum</translation>
 <translation id="4383571725254449280">Prenta afkastaannála</translation>
 <translation id="4445542136948522167">Hætta að taka mynd</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapixlar</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Vista</translation>
 <translation id="5320594929574852403">Færist til vinstri</translation>
 <translation id="5444515100983837161">Settu öll horn skjalsins í rammann. Skönnun virkar betur ef skjalið og bakgrunnurinn eru í mismunandi litum.</translation>
+<translation id="5662366948659129155">Skannar síðu <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Ferningur</translation>
 <translation id="5746169159649715125">Vista sem PDF</translation>
 <translation id="5753488212459587150">Nota ítarlegar stillingar</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Ítarlegar stillingar</translation>
 <translation id="5860033963881614850">Slökkt</translation>
 <translation id="5869546221129391014">Tafla</translation>
+<translation id="5903928279335207406">Eyða síðu</translation>
 <translation id="5916664084637901428">Kveikt</translation>
 <translation id="5975083100439434680">Minnka aðdrátt</translation>
 <translation id="5976160379964388480">Annað</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Vista sem mynd</translation>
 <translation id="8239780215768881278">Taka skyndimynd í upptöku</translation>
 <translation id="8261506727792406068">Eyða</translation>
+<translation id="839162370397157884">Velja síðu</translation>
 <translation id="8425673304802773841">Halla niður</translation>
 <translation id="8428213095426709021">Stillingar</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb
index e868f64..4fe21c0 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">Copia indirizzo link</translation>
 <translation id="4281620174117014503">Media risoluzione</translation>
 <translation id="4329152592498422850">Passa alla modalità foto quadrata</translation>
+<translation id="4340659173795395806">Ora puoi creare un PDF di più pagine</translation>
 <translation id="4383571725254449280">Log relativi alle prestazioni di stampa</translation>
 <translation id="4445542136948522167">Interrompi acquisizione foto</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapixel</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ka.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ka.xtb
index 2f8c63d..86b09ad 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ka.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ka.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">კამერა</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">ჩაწერილი არაფერია</translation>
+<translation id="169335673490251151">დამატებითი გვერდების სკანირება</translation>
 <translation id="1838104802459806957">ზემოთკენ დახრა</translation>
 <translation id="1851169887664797861">ხელმისაწვდომია კამერის მართვის დამატებითი საშუალებები</translation>
 <translation id="1851616744363735765">დაპაუზებული</translation>
@@ -101,6 +102,7 @@
 <translation id="5317780077021120954">შენახვა</translation>
 <translation id="5320594929574852403">გადატანა ხდება მარცხენა მიმართულებით</translation>
 <translation id="5444515100983837161">მოათავსეთ დოკუმენტის ყველა კიდე ჩარჩოში. საუკეთესო შედეგების მისაღებად დოკუმენტისა და ფონის ფერები განსხვავებული უნდა იყოს.</translation>
+<translation id="5662366948659129155">სკანირდება გვერდი <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">კვადრატი</translation>
 <translation id="5746169159649715125">შენახვა PDF-ის სახით</translation>
 <translation id="5753488212459587150">ექსპერტის რეჟიმის ჩართვა</translation>
@@ -108,6 +110,7 @@
 <translation id="5775960006311140197">ექსპერტთა რეჟიმი</translation>
 <translation id="5860033963881614850">გამორთვა</translation>
 <translation id="5869546221129391014">ბადე</translation>
+<translation id="5903928279335207406">გვერდის წაშლა</translation>
 <translation id="5916664084637901428">ჩართვა</translation>
 <translation id="5975083100439434680">დაშორება</translation>
 <translation id="5976160379964388480">სხვა</translation>
@@ -159,6 +162,7 @@
 <translation id="8167081290930651932">ფოტოს სახით შენახვა</translation>
 <translation id="8239780215768881278">ვიდეოსნეპშოტის გადაღება</translation>
 <translation id="8261506727792406068">წაშლა</translation>
+<translation id="839162370397157884">გვერდის არჩევა</translation>
 <translation id="8425673304802773841">ქვემოთკენ დახრა</translation>
 <translation id="8428213095426709021">პარამეტრები</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb
index e3ac75a..4815446 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb
@@ -80,6 +80,7 @@
 <translation id="4269820728363426813">Сілтеме мекенжайын көшіру</translation>
 <translation id="4281620174117014503">Орташа ажыратымдылық</translation>
 <translation id="4329152592498422850">Шаршы сурет түсіруге ауысу</translation>
+<translation id="4340659173795395806">Енді көп бетті PDF файлын жасай аласыз.</translation>
 <translation id="4383571725254449280">Жұмысты тіркеу журналдарын басып шығару</translation>
 <translation id="4445542136948522167">Фотосуретке түсіруді тоқтату</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> мегапиксел</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ky.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ky.xtb
index 2e0ae89..b405b07 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ky.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ky.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Камера</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Эч нерсе жаздырылган жок</translation>
+<translation id="169335673490251151">Кошумча беттерди скандоо</translation>
 <translation id="1838104802459806957">Өйдө кыйшайтуу</translation>
 <translation id="1851169887664797861">Камераны көзөмөлдөй турган кошумча каражаттар бар</translation>
 <translation id="1851616744363735765">ТЫНДЫРЫЛДЫ</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Шилтеме дарегин көчүрүү</translation>
 <translation id="4281620174117014503">Орточо резолюция</translation>
 <translation id="4329152592498422850">Чарчы сүрөт тартуу режимине которулуу</translation>
+<translation id="4340659173795395806">Эми бир нече беттен турган PDF файлын түзө аласыз</translation>
 <translation id="4383571725254449280">Басып чыгаруу майнаптуулугунун таржымалы</translation>
 <translation id="4445542136948522167">Сүрөткө тартууну токтотуу</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> мега-пиксель</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Сактоо</translation>
 <translation id="5320594929574852403">Сол жакка жылууда</translation>
 <translation id="5444515100983837161">Документтин бардык бурчтары алкактын ичинде болгондой кылып түздөңүз. Документ жана фон ар кандай түстө болсо, скан жакшыраак иштейт.</translation>
+<translation id="5662366948659129155"><ph name="COUNT" /> бет скандалууда</translation>
 <translation id="5671277269877808209">Чарчы</translation>
 <translation id="5746169159649715125">PDF катары сактоо</translation>
 <translation id="5753488212459587150">Адис режимин иштетүү</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Адис режими</translation>
 <translation id="5860033963881614850">Өчүк</translation>
 <translation id="5869546221129391014">Тор</translation>
+<translation id="5903928279335207406">Баракты өчүрүү</translation>
 <translation id="5916664084637901428">Күйүк</translation>
 <translation id="5975083100439434680">Кичирейтүү</translation>
 <translation id="5976160379964388480">Башкалар</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Сүрөт катары сактоо</translation>
 <translation id="8239780215768881278">Видео жаздыруу учурунда сүрөткө тартып алуу</translation>
 <translation id="8261506727792406068">Жок кылуу</translation>
+<translation id="839162370397157884">Баракты тандоо</translation>
 <translation id="8425673304802773841">Төмөн кыйшайтуу</translation>
 <translation id="8428213095426709021">Жөндөөлөр</translation>
 <translation id="8629662593426079630">360p</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 64e1e32..9aa53b1 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
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">ກ້ອງ​ຖ່າຍ​ຮູບ</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">ບໍ່ໄດ້ບັນທຶກຫຍັງໄວ້</translation>
+<translation id="169335673490251151">ສະແກນໜ້າເພີ່ມເຕີມ</translation>
 <translation id="1838104802459806957">ອຽງຂຶ້ນ</translation>
 <translation id="1851169887664797861">ສາມາດໃຊ້ການຄວບຄຸມກ້ອງຖ່າຍຮູບເພີ່ມເຕີມໄດ້</translation>
 <translation id="1851616744363735765">ຢຸດໄວ້ຊົ່ວຄາວແລ້ວ</translation>
@@ -101,6 +102,7 @@
 <translation id="5317780077021120954">ບັນທຶກ</translation>
 <translation id="5320594929574852403">ກຳລັງຍ້າຍໄປທາງຊ້າຍ</translation>
 <translation id="5444515100983837161">ວາງຂອບທັງໝົດຂອງເອກະສານໄວ້ພາຍໃນເຟຣມ. ການສະແກນເຮັດວຽກໄດ້ດີທີ່ສຸດຫາກເອກະສານ ແລະ ພື້ນຫຼັງເປັນຄົນລະສີກັນ.</translation>
+<translation id="5662366948659129155">ກຳລັງສະແກນໜ້າ <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">ສີ່ຫຼ່ຽມ</translation>
 <translation id="5746169159649715125">ບັນທຶກເປັນ PDF</translation>
 <translation id="5753488212459587150">ເປີດການນຳໃຊ້ໂໝດຜູ້ຊ່ຽວຊານ</translation>
@@ -108,6 +110,7 @@
 <translation id="5775960006311140197">ໂໝດຜູ້ຊ່ຽວຊານ</translation>
 <translation id="5860033963881614850">ປິດ</translation>
 <translation id="5869546221129391014">ຕາຂ່າຍ</translation>
+<translation id="5903928279335207406">ລຶບຫນ້າ</translation>
 <translation id="5916664084637901428">ເປີດ</translation>
 <translation id="5975083100439434680">ຊູມອອກ</translation>
 <translation id="5976160379964388480">ອື່ນໆ</translation>
@@ -159,6 +162,7 @@
 <translation id="8167081290930651932">ບັນທຶກເປັນຮູບພາບ</translation>
 <translation id="8239780215768881278">ຖ່າຍພາບວິດີໂອໄວ</translation>
 <translation id="8261506727792406068">ລຶບ</translation>
+<translation id="839162370397157884">ເລືອກໜ້າ</translation>
 <translation id="8425673304802773841">ອຽງລົງ</translation>
 <translation id="8428213095426709021">ການ​ຕັ້ງຄ່າ</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb
index 8cfea6f7..a9caf7c4 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Nekas nav ierakstīts</translation>
+<translation id="169335673490251151">Skenēt papildu lapas</translation>
 <translation id="1838104802459806957">Pavirzīt augšup</translation>
 <translation id="1851169887664797861">Ir pieejamas papildu kameras vadīklas</translation>
 <translation id="1851616744363735765">APTURĒTA</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Kopēt saites adresi</translation>
 <translation id="4281620174117014503">Vidēja izšķirtspēja</translation>
 <translation id="4329152592498422850">Pārslēgt uz kvadrātveida fotoattēlu uzņemšanu</translation>
+<translation id="4340659173795395806">Tagad varat izveidot PDF failu ar vairākām lapām.</translation>
 <translation id="4383571725254449280">Drukāt veiktspējas žurnālus</translation>
 <translation id="4445542136948522167">Pārtraukt fotoattēla uzņemšanu</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapikseļi</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Saglabāt</translation>
 <translation id="5320594929574852403">Pārvietojas pa kreisi</translation>
 <translation id="5444515100983837161">Novietojiet visas dokumenta malas kadrā. Skenēšana darbojas vislabāk, ja dokuments un fons ir atšķirīgā krāsā.</translation>
+<translation id="5662366948659129155">Notiek <ph name="COUNT" />. lapas skenēšana</translation>
 <translation id="5671277269877808209">Kvadrāts</translation>
 <translation id="5746169159649715125">Saglabāt kā PDF failu</translation>
 <translation id="5753488212459587150">Iespējot eksperta režīmu</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Eksperta režīms</translation>
 <translation id="5860033963881614850">Izsl.</translation>
 <translation id="5869546221129391014">Režģis</translation>
+<translation id="5903928279335207406">Dzēst lapu</translation>
 <translation id="5916664084637901428">Iesl.</translation>
 <translation id="5975083100439434680">Tālināt</translation>
 <translation id="5976160379964388480">Citi</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Saglabāt kā fotoattēlu</translation>
 <translation id="8239780215768881278">Uzņemt video momentuzņēmumu</translation>
 <translation id="8261506727792406068">Dzēst</translation>
+<translation id="839162370397157884">Atlasīt lapu</translation>
 <translation id="8425673304802773841">Pavirzīt lejup</translation>
 <translation id="8428213095426709021">Iestatījumi</translation>
 <translation id="8629662593426079630">360p</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 cdceb46..f4335e2 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
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Tiada apa-apa yang dirakamkan</translation>
+<translation id="169335673490251151">Imbas halaman tambahan</translation>
 <translation id="1838104802459806957">Condongkan ke atas</translation>
 <translation id="1851169887664797861">Kawalan kamera tambahan tersedia</translation>
 <translation id="1851616744363735765">DIJEDA</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Salin alamat pautan</translation>
 <translation id="4281620174117014503">Peleraian sederhana</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>
 <translation id="4445542136948522167">Berhenti mengambil foto</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapiksel</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Simpan</translation>
 <translation id="5320594929574852403">Bergerak ke arah kiri</translation>
 <translation id="5444515100983837161">Pastikan keempat-empat sisi dokumen berada dalam bingkai. Pengimbasan berfungsi pada tahap terbaik jika warna dokumen dan latar belakang adalah berbeza.</translation>
+<translation id="5662366948659129155">Mengimbas halaman <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Segi empat sama</translation>
 <translation id="5746169159649715125">Simpan sebagai PDF</translation>
 <translation id="5753488212459587150">Dayakan mod pakar</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Mod pakar</translation>
 <translation id="5860033963881614850">Dimatikan</translation>
 <translation id="5869546221129391014">Grid</translation>
+<translation id="5903928279335207406">Padamkan halaman</translation>
 <translation id="5916664084637901428">Hidupkan</translation>
 <translation id="5975083100439434680">Zum keluar</translation>
 <translation id="5976160379964388480">Lain-lain</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Simpan sebagai Foto</translation>
 <translation id="8239780215768881278">Ambil gambar video</translation>
 <translation id="8261506727792406068">Padam</translation>
+<translation id="839162370397157884">Pilih halaman</translation>
 <translation id="8425673304802773841">Condongkan ke bawah</translation>
 <translation id="8428213095426709021">Tetapan</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb
index 180d05c..669b1362 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">क्यामेरा</translation>
 <translation id="1627744224761163218">४ x ४</translation>
 <translation id="1664224225747386870">केही पनि रेकर्ड गरिएन</translation>
+<translation id="169335673490251151">अतिरिक्त पेजहरू स्क्यान गर्नुहोस्</translation>
 <translation id="1838104802459806957">माथितिर ढल्काइयोस्</translation>
 <translation id="1851169887664797861">क्यामेरासम्बन्धी थप कन्ट्रोलहरू उपलब्ध छन्</translation>
 <translation id="1851616744363735765">रोकियो</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">लिङ्क ठेगाना कपी गर्नुहोस्</translation>
 <translation id="4281620174117014503">मध्यम रिजोल्युसन</translation>
 <translation id="4329152592498422850">वर्गाकार तस्बिर खिच्न थाल्नुहोस्</translation>
+<translation id="4340659173795395806">तपाईं अब एकभन्दा बढी पेज भएको PDF बनाउन सक्नुहुन्छ</translation>
 <translation id="4383571725254449280">प्रिन्ट सम्पादनका लगहरू</translation>
 <translation id="4445542136948522167">तस्बिर खिच्न छाड्नुहोस्‌</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> मेगा पिक्सेल</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">बचत गर्नुहोस्</translation>
 <translation id="5320594929574852403">बायाँतिर सारिँदै छ</translation>
 <translation id="5444515100983837161">डकुमेन्टका सबै किनारा फ्रेमभित्र पार्नुहोस्। डकुमेन्ट र पृष्ठभूमि बेग्लाबेग्लै रङका भएका खण्डमा स्क्यान गर्ने सुविधाले सबैभन्दा राम्ररी काम गर्छ।</translation>
+<translation id="5662366948659129155">पेज <ph name="COUNT" /> स्क्यान गरिँदै छ</translation>
 <translation id="5671277269877808209">वर्गाकार</translation>
 <translation id="5746169159649715125">पीडीएपको रूपमा बचत गर्नुहोस्</translation>
 <translation id="5753488212459587150">विशेषज्ञ मोड अन गर्नुहोस्</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">विशेषज्ञ मोड</translation>
 <translation id="5860033963881614850">बन्द</translation>
 <translation id="5869546221129391014">ग्रिड</translation>
+<translation id="5903928279335207406">पेज मेट्नुहोस्</translation>
 <translation id="5916664084637901428">अन</translation>
 <translation id="5975083100439434680">जुम आउट</translation>
 <translation id="5976160379964388480">अन्य</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">फोटोका रूपमा सेभ गर्नुहोस्</translation>
 <translation id="8239780215768881278">भिडियो स्न्यापसट खिच्नुहोस्</translation>
 <translation id="8261506727792406068">मेट्नुहोस्</translation>
+<translation id="839162370397157884">पेज चयन गर्नुहोस्</translation>
 <translation id="8425673304802773841">तलतिर ढल्काइयोस्</translation>
 <translation id="8428213095426709021">सेटिङहरू</translation>
 <translation id="8629662593426079630">३६० पिक्सेल</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 82b2be5..8868163 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
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Ingenting er tatt opp</translation>
+<translation id="169335673490251151">Skann flere sider</translation>
 <translation id="1838104802459806957">Vipp opp</translation>
 <translation id="1851169887664797861">Flere kamerakontroller er tilgjengelige</translation>
 <translation id="1851616744363735765">SATT PÅ PAUSE</translation>
@@ -101,6 +102,7 @@
 <translation id="5317780077021120954">Lagre</translation>
 <translation id="5320594929574852403">Beveger seg mot venstre</translation>
 <translation id="5444515100983837161">Plassér alle hjørnene av dokumentet innenfor rammen. Skanning fungerer best hvis dokumentet og bakgrunnen har ulik farge.</translation>
+<translation id="5662366948659129155">Skanner side <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Kvadrat</translation>
 <translation id="5746169159649715125">Lagre som PDF</translation>
 <translation id="5753488212459587150">Slå på ekspertmodus</translation>
@@ -108,6 +110,7 @@
 <translation id="5775960006311140197">Ekspertmodus</translation>
 <translation id="5860033963881614850">Av</translation>
 <translation id="5869546221129391014">Rutenett</translation>
+<translation id="5903928279335207406">Slett siden</translation>
 <translation id="5916664084637901428">På</translation>
 <translation id="5975083100439434680">Zoom ut</translation>
 <translation id="5976160379964388480">Andre</translation>
@@ -159,6 +162,7 @@
 <translation id="8167081290930651932">Lagre som bilde</translation>
 <translation id="8239780215768881278">Ta øyeblikksbilde av videoen</translation>
 <translation id="8261506727792406068">Slett</translation>
+<translation id="839162370397157884">Velg side</translation>
 <translation id="8425673304802773841">Vipp ned</translation>
 <translation id="8428213095426709021">Innstillinger</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb
index 96b94ef..d3d2f95 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Камера</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Ничего не записано.</translation>
+<translation id="169335673490251151">Сканировать ещё страницы</translation>
 <translation id="1838104802459806957">Наклонить вверх</translation>
 <translation id="1851169887664797861">Доступны дополнительные настройки камеры</translation>
 <translation id="1851616744363735765">ПРИОСТАНОВЛЕНО</translation>
@@ -101,6 +102,7 @@
 <translation id="5317780077021120954">Сохранить</translation>
 <translation id="5320594929574852403">Перемещение влево</translation>
 <translation id="5444515100983837161">Расположите документ внутри рамки. Для повышения качества отсканированного изображения цвета документа и фона должны различаться.</translation>
+<translation id="5662366948659129155">Сканирование страницы <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Квадрат</translation>
 <translation id="5746169159649715125">Сохранить как PDF</translation>
 <translation id="5753488212459587150">Включить режим эксперта</translation>
@@ -108,6 +110,7 @@
 <translation id="5775960006311140197">Режим эксперта</translation>
 <translation id="5860033963881614850">ВЫКЛ</translation>
 <translation id="5869546221129391014">Сетка</translation>
+<translation id="5903928279335207406">Удалить страницу</translation>
 <translation id="5916664084637901428">ВКЛ</translation>
 <translation id="5975083100439434680">Уменьшить</translation>
 <translation id="5976160379964388480">Другое</translation>
@@ -159,6 +162,7 @@
 <translation id="8167081290930651932">Сохранить как фото</translation>
 <translation id="8239780215768881278">Сделать снимок</translation>
 <translation id="8261506727792406068">Удалить</translation>
+<translation id="839162370397157884">Выбрать страницу</translation>
 <translation id="8425673304802773841">Наклонить вниз</translation>
 <translation id="8428213095426709021">Настройки</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_si.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_si.xtb
index e3237c7..2060d1b 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_si.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_si.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">කැමරාව</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">කිසිවක් පටිගත නොකිරීම</translation>
+<translation id="169335673490251151">අතිරේක පිටු ස්කෑන් කරන්න</translation>
 <translation id="1838104802459806957">ඉහළට ඇල කරන්න</translation>
 <translation id="1851169887664797861">අතිරේක කැමරා පාලන ලබා ගත හැකිය</translation>
 <translation id="1851616744363735765">විරාම කළා</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">ලින්ක් ලිපිනය පිටපත් කරන්න</translation>
 <translation id="4281620174117014503">මධ්‍යම විභේදනය</translation>
 <translation id="4329152592498422850">කොටු ඡායාරූපය ලබා ගැනීමට මාරු වන්න</translation>
+<translation id="4340659173795395806">ඔබට දැන් බහු පිටු PDF තැනීමට හැක</translation>
 <translation id="4383571725254449280">මුද්‍රණ කාර්ය සාධන සටහන්</translation>
 <translation id="4445542136948522167">ඡායාරූප ගැනීම නවත්වන්න</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) මෙගා පික්සල් <ph name="MEGAPIXEL" /></translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">සුරකින්න</translation>
 <translation id="5320594929574852403">වම් දිශාවට ගෙන යමින්</translation>
 <translation id="5444515100983837161">ලේඛනයේ සියලු මායිම් රාමුව තුළ තබන්න. ලේඛනය සහ පසුබිම විවිධ වර්ණවලින් යුතු නම් ස්කෑන් කිරීම වඩාත්ම හොඳින් ක්‍රියා කරයි.</translation>
+<translation id="5662366948659129155"><ph name="COUNT" /> පිටුව ස්කෑන් කරමින්</translation>
 <translation id="5671277269877808209">සමචතුරස්‍රය</translation>
 <translation id="5746169159649715125">PDF ලෙස සුරකින්න</translation>
 <translation id="5753488212459587150">විශේෂඥ ප්‍රකාරය සබල කරන්න</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">ප්‍රවීණ ප්‍රකාරය</translation>
 <translation id="5860033963881614850">අක්‍රීය</translation>
 <translation id="5869546221129391014">ජාලය</translation>
+<translation id="5903928279335207406">පිටුව මකන්න</translation>
 <translation id="5916664084637901428">ක්‍රියාත්මකයි</translation>
 <translation id="5975083100439434680">විශාලනය අඩු කරන්න</translation>
 <translation id="5976160379964388480">වෙනත්</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">ඡායාරූපයක් ලෙස සුරකින්න</translation>
 <translation id="8239780215768881278">වීඩියෝ සැණ රුවක් ගන්න</translation>
 <translation id="8261506727792406068">මකන්න</translation>
+<translation id="839162370397157884">පිටුව තෝරන්න</translation>
 <translation id="8425673304802773841">පහළට ඇල කරන්න</translation>
 <translation id="8428213095426709021">සැකසුම්</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb
index d986a9a0..da82881 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Nuk u regjistrua asgjë</translation>
+<translation id="169335673490251151">Skano faqe të tjera</translation>
 <translation id="1838104802459806957">Ano për lart</translation>
 <translation id="1851169887664797861">Ofrohen kontrolle shtesë të kamerës</translation>
 <translation id="1851616744363735765">NË PAUZË</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Kopjo adresën e lidhjes</translation>
 <translation id="4281620174117014503">Rezolucion mesatar</translation>
 <translation id="4329152592498422850">Ndërroje për të nxjerrë një fotografi katrore</translation>
+<translation id="4340659173795395806">Tani mund të krijosh skedarë PDF me shumë faqe</translation>
 <translation id="4383571725254449280">Evidencat për cilësinë e funksionimit të printimit</translation>
 <translation id="4445542136948522167">Ndalo nxjerrjen e fotografive</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapiksel</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Ruaj</translation>
 <translation id="5320594929574852403">Po zhvendoset majtas</translation>
 <translation id="5444515100983837161">Vendos të gjitha anët e dokumentit brenda kuadrit Skanimi funksionon më mirë nëse dokumenti dhe sfondi kanë ngjyra të ndryshme.</translation>
+<translation id="5662366948659129155">Po skanohet faqja <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Katror</translation>
 <translation id="5746169159649715125">Ruaj si PDF</translation>
 <translation id="5753488212459587150">Aktivizo modalitetin e ekspertit</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Modaliteti i ekspertëve</translation>
 <translation id="5860033963881614850">Çaktivizuar</translation>
 <translation id="5869546221129391014">Rrjetë</translation>
+<translation id="5903928279335207406">Fshi faqen</translation>
 <translation id="5916664084637901428">Aktiv</translation>
 <translation id="5975083100439434680">Zvogëlo</translation>
 <translation id="5976160379964388480">Të tjera</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Ruaje si fotografi</translation>
 <translation id="8239780215768881278">Shkrep një pamje të çastit të videos</translation>
 <translation id="8261506727792406068">Fshi</translation>
+<translation id="839162370397157884">Zgjidh faqen</translation>
 <translation id="8425673304802773841">Ano për poshtë</translation>
 <translation id="8428213095426709021">Cilësimet</translation>
 <translation id="8629662593426079630">360p</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 13b3ad1..e82d2d9 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
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 × 4</translation>
 <translation id="1664224225747386870">Ingenting spelades in</translation>
+<translation id="169335673490251151">Skanna ytterligare sidor</translation>
 <translation id="1838104802459806957">Vrid uppåt</translation>
 <translation id="1851169887664797861">Ytterligare kamerakontroller tillgängliga</translation>
 <translation id="1851616744363735765">PAUSAD</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Kopiera länkadress</translation>
 <translation id="4281620174117014503">Medelhög upplösning</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>
 <translation id="4445542136948522167">Sluta ta foton</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> megapixel</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Spara</translation>
 <translation id="5320594929574852403">Flyttas åt vänster</translation>
 <translation id="5444515100983837161">Placera dokumentets kanter i ramen. Skanning fungerar bäst om dokumentet och bakgrunden har olika färger.</translation>
+<translation id="5662366948659129155">Skannar sida <ph name="COUNT" />.</translation>
 <translation id="5671277269877808209">Kvadratiskt</translation>
 <translation id="5746169159649715125">Spara som PDF</translation>
 <translation id="5753488212459587150">Aktivera expertläge</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Expertläge</translation>
 <translation id="5860033963881614850">Av</translation>
 <translation id="5869546221129391014">Rutnät</translation>
+<translation id="5903928279335207406">Radera sidan</translation>
 <translation id="5916664084637901428">På</translation>
 <translation id="5975083100439434680">Zooma ut</translation>
 <translation id="5976160379964388480">Övriga</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Spara som foto</translation>
 <translation id="8239780215768881278">Spela in en ögonblicksvideo</translation>
 <translation id="8261506727792406068">Radera</translation>
+<translation id="839162370397157884">Välj sida</translation>
 <translation id="8425673304802773841">Vrid nedåt</translation>
 <translation id="8428213095426709021">Inställningar</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb
index c6e2d362..1ce4ab0 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Haijarekodi chochote</translation>
+<translation id="169335673490251151">Changanua kurasa za ziada</translation>
 <translation id="1838104802459806957">Inamisha juu</translation>
 <translation id="1851169887664797861">Vidhibiti vya ziada vya kamera vinapatikana</translation>
 <translation id="1851616744363735765">IMESITISHWA</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">Nakili anwani ya kiungo</translation>
 <translation id="4281620174117014503">Ubora wa wastani</translation>
 <translation id="4329152592498422850">Badili ili upige picha ya mraba</translation>
+<translation id="4340659173795395806">Sasa unaweza kuanzisha faili ya PDF yenye kurasa nyingi</translation>
 <translation id="4383571725254449280">Chapisha kumbukumbu za utendaji</translation>
 <translation id="4445542136948522167">Acha kupiga picha</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) megapikseli <ph name="MEGAPIXEL" /></translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">Hifadhi</translation>
 <translation id="5320594929574852403">Inasogezwa upande wa kushoto</translation>
 <translation id="5444515100983837161">Weka kingo zote za hati ndani ya fremu. Kipengele cha kuchanganua hufanya kazi vizuri zaidi ikiwa rangi ya hati ni tofauti na ya mandharinyuma.</translation>
+<translation id="5662366948659129155">Inachanganua ukurasa wa <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Mraba</translation>
 <translation id="5746169159649715125">Hifadhi kama PDF</translation>
 <translation id="5753488212459587150">Washa hali ya mtaalamu</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">Hali ya wataalamu</translation>
 <translation id="5860033963881614850">Kimezimwa</translation>
 <translation id="5869546221129391014">Gridi</translation>
+<translation id="5903928279335207406">Futa ukurasa</translation>
 <translation id="5916664084637901428">Imewashwa</translation>
 <translation id="5975083100439434680">Fifiza</translation>
 <translation id="5976160379964388480">Wengine </translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">Hifadhi ikiwa Picha</translation>
 <translation id="8239780215768881278">Rekodi muhtasari wa video</translation>
 <translation id="8261506727792406068">Futa</translation>
+<translation id="839162370397157884">Chagua ukurasa</translation>
 <translation id="8425673304802773841">Inamisha chini</translation>
 <translation id="8428213095426709021">Mipangilio</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb
index 511c150..3d007ab 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">இணைப்பு முகவரியை நகலெடு</translation>
 <translation id="4281620174117014503">நடுத்தரத் தெளிவுத்திறன்</translation>
 <translation id="4329152592498422850">சதுர வடிவத்தில் படமெடுக்குமாறு மாற்றவும்</translation>
+<translation id="4340659173795395806">இப்போது நீங்கள் பல பக்கங்கள் உள்ள PDFஐ உருவாக்கலாம்</translation>
 <translation id="4383571725254449280">பிரிண்ட் செயல்திறன் பதிவுகள்</translation>
 <translation id="4445542136948522167">படமெடுப்பதை நிறுத்து</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> மெகாபிக்சல்</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 76e5ea0..0b3e68c 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
@@ -81,6 +81,7 @@
 <translation id="4269820728363426813">คัดลอกที่อยู่ลิงก์</translation>
 <translation id="4281620174117014503">ความละเอียดปานกลาง</translation>
 <translation id="4329152592498422850">เปลี่ยนเป็นถ่ายภาพแบบสี่เหลี่ยมจัตุรัส</translation>
+<translation id="4340659173795395806">คุณสร้าง PDF แบบหลายหน้าได้แล้ว</translation>
 <translation id="4383571725254449280">พิมพ์บันทึกประสิทธิภาพ</translation>
 <translation id="4445542136948522167">หยุดถ่ายภาพ</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> เมกะพิกเซล</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
index ce2c17a73..cbbcd290 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">摄像头</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">未记录任何数据</translation>
+<translation id="169335673490251151">扫描更多页面</translation>
 <translation id="1838104802459806957">向上倾斜</translation>
 <translation id="1851169887664797861">已推出新的相机控件</translation>
 <translation id="1851616744363735765">已暂停</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">复制链接地址</translation>
 <translation id="4281620174117014503">中等分辨率</translation>
 <translation id="4329152592498422850">切换到正方形照片拍摄模式</translation>
+<translation id="4340659173795395806">现在您可以创建多页 PDF</translation>
 <translation id="4383571725254449280">打印性能日志</translation>
 <translation id="4445542136948522167">停止拍照</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> 百万像素</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">保存</translation>
 <translation id="5320594929574852403">正在向左移动</translation>
 <translation id="5444515100983837161">请将文件的各个边置于框内。当文件的颜色与背景的颜色不同时,扫描效果最佳。</translation>
+<translation id="5662366948659129155">正在扫描第 <ph name="COUNT" /> 页</translation>
 <translation id="5671277269877808209">方形</translation>
 <translation id="5746169159649715125">另存为 PDF</translation>
 <translation id="5753488212459587150">启用专家模式</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">专家模式</translation>
 <translation id="5860033963881614850">关闭</translation>
 <translation id="5869546221129391014">网格</translation>
+<translation id="5903928279335207406">删除页面</translation>
 <translation id="5916664084637901428">启用</translation>
 <translation id="5975083100439434680">缩小</translation>
 <translation id="5976160379964388480">其他</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">另存为照片</translation>
 <translation id="8239780215768881278">拍摄视频快照</translation>
 <translation id="8261506727792406068">删除</translation>
+<translation id="839162370397157884">选择页面</translation>
 <translation id="8425673304802773841">向下倾斜</translation>
 <translation id="8428213095426709021">设置</translation>
 <translation id="8629662593426079630">360p</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 555ec62..1427efcc 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
@@ -20,6 +20,7 @@
 <translation id="1620510694547887537">攝影機</translation>
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">未錄製任何內容</translation>
+<translation id="169335673490251151">掃描其他頁面</translation>
 <translation id="1838104802459806957">向上傾斜</translation>
 <translation id="1851169887664797861">已推出新的相機控制項</translation>
 <translation id="1851616744363735765">已暫停</translation>
@@ -80,6 +81,7 @@
 <translation id="4269820728363426813">複製連結網址</translation>
 <translation id="4281620174117014503">中等解析度</translation>
 <translation id="4329152592498422850">切換為正方形相片拍攝模式</translation>
+<translation id="4340659173795395806">你現在可以建立多頁 PDF 檔案</translation>
 <translation id="4383571725254449280">列印效能記錄</translation>
 <translation id="4445542136948522167">停止拍照</translation>
 <translation id="4497569853498380347">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" />) <ph name="MEGAPIXEL" /> 百萬像素</translation>
@@ -100,6 +102,7 @@
 <translation id="5317780077021120954">儲存</translation>
 <translation id="5320594929574852403">向左移動</translation>
 <translation id="5444515100983837161">將鏡頭對準文件,確認各邊都在方框內。如要獲得最佳的掃描效果,請將文件與背景的顏色區分開來。</translation>
+<translation id="5662366948659129155">正在掃描第 <ph name="COUNT" /> 頁</translation>
 <translation id="5671277269877808209">正方形</translation>
 <translation id="5746169159649715125">另存為 PDF</translation>
 <translation id="5753488212459587150">啟用專家模式</translation>
@@ -107,6 +110,7 @@
 <translation id="5775960006311140197">專家模式</translation>
 <translation id="5860033963881614850">關閉</translation>
 <translation id="5869546221129391014">格線</translation>
+<translation id="5903928279335207406">刪除頁面</translation>
 <translation id="5916664084637901428">開啟</translation>
 <translation id="5975083100439434680">縮小</translation>
 <translation id="5976160379964388480">其他</translation>
@@ -158,6 +162,7 @@
 <translation id="8167081290930651932">儲存為相片</translation>
 <translation id="8239780215768881278">拍攝影片快照</translation>
 <translation id="8261506727792406068">刪除</translation>
+<translation id="839162370397157884">選取頁面</translation>
 <translation id="8425673304802773841">向下傾斜</translation>
 <translation id="8428213095426709021">設定</translation>
 <translation id="8629662593426079630">360p</translation>
diff --git a/ash/webui/common/resources/BUILD.gn b/ash/webui/common/resources/BUILD.gn
index 158629f2..cf9a0ae 100644
--- a/ash/webui/common/resources/BUILD.gn
+++ b/ash/webui/common/resources/BUILD.gn
@@ -32,6 +32,10 @@
   "multidevice_setup/setup_succeeded_page.js",
   "multidevice_setup/start_setup_page.js",
   "multidevice_setup/ui_page.js",
+  "network_health/network_diagnostics.js",
+  "network_health/network_health_container.js",
+  "network_health/network_health_summary.js",
+  "network_health/routine_group.js",
   "smb_shares/add_smb_share_dialog.js",
   "traffic_counters/traffic_counters.js",
   "quick_unlock/pin_keyboard.js",
@@ -47,6 +51,8 @@
   "multidevice_setup/multidevice_setup_browser_proxy.js",
   "multidevice_setup/multidevice_setup_delegate.js",
   "multidevice_setup/ui_page_container_behavior.js",
+  "network_health/mojo_interface_provider.js",
+  "network_health/network_diagnostics_types.js",
   "post_message_api/post_message_api_client.js",
   "post_message_api/post_message_api_request_handler.js",
   "post_message_api/post_message_api_server.js",
@@ -134,6 +140,11 @@
     "multidevice_setup/all_set_1x_light.svg",
     "multidevice_setup/all_set_2x_dark.svg",
     "multidevice_setup/all_set_2x_light.svg",
+    "network_health/test_canceled.png",
+    "network_health/test_failed.png",
+    "network_health/test_not_run.png",
+    "network_health/test_passed.png",
+    "network_health/test_warning.png",
   ]
   input_files_base_dir = rebase_path(".", "//")
   public_deps = [ ":preprocess" ]
@@ -195,6 +206,7 @@
     ":closure_compile_local",
     "cr_picture:closure_compile_module",
     "multidevice_setup:closure_compile_module",
+    "network_health:closure_compile_module",
     "post_message_api:closure_compile",
     "quick_unlock:closure_compile_module",
     "smb_shares:closure_compile_module",
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/BUILD.gn b/ash/webui/common/resources/network_health/BUILD.gn
similarity index 87%
rename from ui/webui/resources/cr_components/chromeos/network_health/BUILD.gn
rename to ash/webui/common/resources/network_health/BUILD.gn
index 5b7580b..5019d5b 100644
--- a/ui/webui/resources/cr_components/chromeos/network_health/BUILD.gn
+++ b/ash/webui/common/resources/network_health/BUILD.gn
@@ -3,9 +3,8 @@
 # found in the LICENSE file.
 
 import("//third_party/closure_compiler/compile_js.gni")
-import("//tools/polymer/html_to_js.gni")
 
-assert(is_chromeos, "Only ChromeOS components belong here.")
+assert(is_chromeos_ash, "Only ChromeOS components belong here.")
 
 js_type_check("closure_compile_module") {
   is_polymer3 = true
@@ -63,12 +62,3 @@
     "//ui/webui/resources/cr_elements:i18n_behavior",
   ]
 }
-
-html_to_js("web_components") {
-  js_files = [
-    "network_diagnostics.js",
-    "network_health_container.js",
-    "network_health_summary.js",
-    "routine_group.js",
-  ]
-}
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/mojo_interface_provider.js b/ash/webui/common/resources/network_health/mojo_interface_provider.js
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/mojo_interface_provider.js
rename to ash/webui/common/resources/network_health/mojo_interface_provider.js
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.html b/ash/webui/common/resources/network_health/network_diagnostics.html
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.html
rename to ash/webui/common/resources/network_health/network_diagnostics.html
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.js b/ash/webui/common/resources/network_health/network_diagnostics.js
similarity index 98%
rename from ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.js
rename to ash/webui/common/resources/network_health/network_diagnostics.js
index 6b27275d..e5cceda0 100644
--- a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.js
+++ b/ash/webui/common/resources/network_health/network_diagnostics.js
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import '../../../cr_elements/cr_button/cr_button.js';
+import 'chrome://resources/cr_elements/cr_button/cr_button.js';
 import './routine_group.js';
 
 import {loadTimeData} from '//resources/js/load_time_data.m.js';
-import {html, Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {ArcDnsResolutionProblem, ArcHttpProblem, ArcPingProblem, CaptivePortalProblem, DnsLatencyProblem, DnsResolutionProblem, DnsResolverPresentProblem, GatewayCanBePingedProblem, HasSecureWiFiConnectionProblem, HttpFirewallProblem, HttpsFirewallProblem, HttpsLatencyProblem, RoutineProblems, RoutineType, RoutineVerdict, SignalStrengthProblem, VideoConferencingProblem} from 'chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_diagnostics.mojom-webui.js';
 
-import {I18nBehavior} from '../../../cr_elements/i18n_behavior.js';
-
 import {getNetworkDiagnosticsService} from './mojo_interface_provider.js';
+import {getTemplate} from './network_diagnostics.html.js';
 import {Routine, RoutineGroup, RoutineResponse} from './network_diagnostics_types.js';
 
 /**
@@ -40,7 +40,7 @@
 }
 
 Polymer({
-  _template: html`{__html_template__}`,
+  _template: getTemplate(),
   is: 'network-diagnostics',
 
   behaviors: [
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.js b/ash/webui/common/resources/network_health/network_diagnostics_types.js
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.js
rename to ash/webui/common/resources/network_health/network_diagnostics_types.js
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_health_container.html b/ash/webui/common/resources/network_health/network_health_container.html
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/network_health_container.html
rename to ash/webui/common/resources/network_health/network_health_container.html
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_health_container.js b/ash/webui/common/resources/network_health/network_health_container.js
similarity index 84%
rename from ui/webui/resources/cr_components/chromeos/network_health/network_health_container.js
rename to ash/webui/common/resources/network_health/network_health_container.js
index 28ea7024..166ae886 100644
--- a/ui/webui/resources/cr_components/chromeos/network_health/network_health_container.js
+++ b/ash/webui/common/resources/network_health/network_health_container.js
@@ -5,7 +5,9 @@
 import '//resources/polymer/v3_0/iron-icon/iron-icon.js';
 import '//resources/cr_elements/icons.html.js';
 
-import {html, Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {getTemplate} from './network_health_container.html.js';
 
 /**
  * @fileoverview Polymer element for a container used in displaying network
@@ -13,7 +15,7 @@
  */
 
 Polymer({
-  _template: html`{__html_template__}`,
+  _template: getTemplate(),
   is: 'network-health-container',
 
   properties: {
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.html b/ash/webui/common/resources/network_health/network_health_summary.html
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.html
rename to ash/webui/common/resources/network_health/network_health_summary.html
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.js b/ash/webui/common/resources/network_health/network_health_summary.js
similarity index 93%
rename from ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.js
rename to ash/webui/common/resources/network_health/network_health_summary.js
index 057d306..1053bad6 100644
--- a/ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.js
+++ b/ash/webui/common/resources/network_health/network_health_summary.js
@@ -2,17 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import '../../../cr_elements/cr_shared_style.css.js';
+import 'chrome://resources/cr_elements/cr_shared_style.css.js';
 import '../network/network_shared_css.js';
 
-import {html, Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {assertNotReached} from 'chrome://resources/js/assert.m.js';
 import {NetworkType, PortalState} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js';
 import {Network, NetworkHealthService, NetworkHealthServiceRemote, NetworkHealthState, NetworkState, UInt32Value} from 'chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_health.mojom-webui.js';
 
-import {assertNotReached} from '../../../js/assert.m.js';
-import {I18nBehavior} from '../../../cr_elements/i18n_behavior.js';
 import {OncMojo} from '../network/onc_mojo.js';
 
+import {getTemplate} from './network_health_summary.html.js';
+
 const TechnologyIcons = {
   CELLULAR: 'cellular_0.svg',
   ETHERNET: 'ethernet.svg',
@@ -24,7 +26,7 @@
  * @fileoverview Polymer element for displaying NetworkHealth properties.
  */
 Polymer({
-  _template: html`{__html_template__}`,
+  _template: getTemplate(),
   is: 'network-health-summary',
 
   behaviors: [
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/routine_group.html b/ash/webui/common/resources/network_health/routine_group.html
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/routine_group.html
rename to ash/webui/common/resources/network_health/routine_group.html
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/routine_group.js b/ash/webui/common/resources/network_health/routine_group.js
similarity index 93%
rename from ui/webui/resources/cr_components/chromeos/network_health/routine_group.js
rename to ash/webui/common/resources/network_health/routine_group.js
index 1cd1965..4063ce8 100644
--- a/ui/webui/resources/cr_components/chromeos/network_health/routine_group.js
+++ b/ash/webui/common/resources/network_health/routine_group.js
@@ -9,15 +9,15 @@
 import '//resources/polymer/v3_0/paper-spinner/paper-spinner-lite.js';
 import './network_health_container.js';
 
-import {html, Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {Polymer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {RoutineResult, RoutineVerdict} from 'chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_diagnostics.mojom-webui.js';
 
-import {I18nBehavior} from '../../../cr_elements/i18n_behavior.js';
-
 import {Icons, Routine} from './network_diagnostics_types.js';
+import {getTemplate} from './routine_group.html.js';
 
 Polymer({
-  _template: html`{__html_template__}`,
+  _template: getTemplate(),
   is: 'routine-group',
 
   behaviors: [
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/test_canceled.png b/ash/webui/common/resources/network_health/test_canceled.png
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/test_canceled.png
rename to ash/webui/common/resources/network_health/test_canceled.png
Binary files differ
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/test_failed.png b/ash/webui/common/resources/network_health/test_failed.png
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/test_failed.png
rename to ash/webui/common/resources/network_health/test_failed.png
Binary files differ
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/test_not_run.png b/ash/webui/common/resources/network_health/test_not_run.png
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/test_not_run.png
rename to ash/webui/common/resources/network_health/test_not_run.png
Binary files differ
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/test_passed.png b/ash/webui/common/resources/network_health/test_passed.png
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/test_passed.png
rename to ash/webui/common/resources/network_health/test_passed.png
Binary files differ
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/test_warning.png b/ash/webui/common/resources/network_health/test_warning.png
similarity index 100%
rename from ui/webui/resources/cr_components/chromeos/network_health/test_warning.png
rename to ash/webui/common/resources/network_health/test_warning.png
Binary files differ
diff --git a/ash/webui/connectivity_diagnostics/resources/BUILD.gn b/ash/webui/connectivity_diagnostics/resources/BUILD.gn
index f49c4a6..f474b56 100644
--- a/ash/webui/connectivity_diagnostics/resources/BUILD.gn
+++ b/ash/webui/connectivity_diagnostics/resources/BUILD.gn
@@ -21,9 +21,9 @@
 
 js_library("connectivity_diagnostics") {
   deps = [
+    "//ash/webui/common/resources/network_health:network_diagnostics",
+    "//ash/webui/common/resources/network_health:network_health_summary",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_health_summary",
     "//ui/webui/resources/cr_elements:cr_container_shadow_behavior",
     "//ui/webui/resources/cr_elements:i18n_behavior",
   ]
diff --git a/ash/webui/connectivity_diagnostics/resources/connectivity_diagnostics.js b/ash/webui/connectivity_diagnostics/resources/connectivity_diagnostics.js
index 49a52e7..e732c961 100644
--- a/ash/webui/connectivity_diagnostics/resources/connectivity_diagnostics.js
+++ b/ash/webui/connectivity_diagnostics/resources/connectivity_diagnostics.js
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'chrome://resources/cr_components/chromeos/network_health/network_diagnostics.js';
-import 'chrome://resources/cr_components/chromeos/network_health/network_health_summary.js';
+import 'chrome://resources/ash/common/network_health/network_diagnostics.js';
+import 'chrome://resources/ash/common/network_health/network_health_summary.js';
 import 'chrome://resources/cr_elements/cr_shared_style.css.js';
 import './strings.m.js';
 
 import {CrContainerShadowBehavior} from 'chrome://resources/cr_elements/cr_container_shadow_behavior.js';
-import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
 import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
 import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
diff --git a/ash/webui/diagnostics_ui/resources/battery_status_card.js b/ash/webui/diagnostics_ui/resources/battery_status_card.js
index a078c26..34b3387 100644
--- a/ash/webui/diagnostics_ui/resources/battery_status_card.js
+++ b/ash/webui/diagnostics_ui/resources/battery_status_card.js
@@ -12,10 +12,10 @@
 import './routine_section.js';
 import './strings.m.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {BatteryChargeStatus, BatteryChargeStatusObserverInterface, BatteryChargeStatusObserverReceiver, BatteryHealth, BatteryHealthObserverInterface, BatteryHealthObserverReceiver, BatteryInfo, BatteryState, ExternalPowerSource, RoutineType, SystemDataProviderInterface} from './diagnostics_types.js';
 import {getDiagnosticsIcon} from './diagnostics_utils.js';
@@ -45,107 +45,127 @@
  * @fileoverview
  * 'battery-status-card' shows information about battery status.
  */
-Polymer({
-  is: 'battery-status-card',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const BatteryStatusCardElementBase =
+    mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class BatteryStatusCardElement extends BatteryStatusCardElementBase {
+  static get is() {
+    return 'battery-status-card';
+  }
 
-  /**
-   * @private {?SystemDataProviderInterface}
-   */
-  systemDataProvider_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * Receiver responsible for observing battery charge status.
-   * @private {?BatteryChargeStatusObserverReceiver}
-   */
-  batteryChargeStatusObserverReceiver_: null,
+  static get properties() {
+    return {
+      /** @private {!BatteryChargeStatus} */
+      batteryChargeStatus_: {
+        type: Object,
+      },
 
-  /**
-   * Receiver responsible for observing battery health.
-   * @private {
-   *  ?BatteryHealthObserverReceiver}
-   */
-  batteryHealthObserverReceiver_: null,
+      /** @private {!BatteryHealth} */
+      batteryHealth_: {
+        type: Object,
+      },
 
-  properties: {
-    /** @private {!BatteryChargeStatus} */
-    batteryChargeStatus_: {
-      type: Object,
-    },
+      /** @private {!BatteryInfo} */
+      batteryInfo_: {
+        type: Object,
+      },
 
-    /** @private {!BatteryHealth} */
-    batteryHealth_: {
-      type: Object,
-    },
+      /** @private {!Array<!RoutineType>} */
+      routines_: {
+        type: Array,
+        computed:
+            'getCurrentPowerRoutines_(batteryChargeStatus_.powerAdapterStatus)',
+      },
 
-    /** @private {!BatteryInfo} */
-    batteryInfo_: {
-      type: Object,
-    },
+      /** @protected {string} */
+      powerTimeString_: {
+        type: String,
+        computed: 'getPowerTimeString_(batteryChargeStatus_.powerTime)',
+      },
 
-    /** @private {!Array<!RoutineType>} */
-    routines_: {
-      type: Array,
-      computed:
-          'getCurrentPowerRoutines_(batteryChargeStatus_.powerAdapterStatus)',
-    },
+      /** @type {!TestSuiteStatus} */
+      testSuiteStatus: {
+        type: Number,
+        value: TestSuiteStatus.kNotRunning,
+        notify: true,
+      },
 
-    /** @protected {string} */
-    powerTimeString_: {
-      type: String,
-      computed: 'getPowerTimeString_(batteryChargeStatus_.powerTime)',
-    },
+      /** @type {string} */
+      batteryIcon: {
+        type: String,
+        computed: 'getBatteryIcon_(batteryChargeStatus_.powerAdapterStatus,' +
+            'batteryChargeStatus_.chargeNowMilliampHours,' +
+            'batteryHealth_.chargeFullNowMilliampHours)',
+      },
 
-    /** @type {!TestSuiteStatus} */
-    testSuiteStatus: {
-      type: Number,
-      value: TestSuiteStatus.kNotRunning,
-      notify: true,
-    },
+      /** @type {string} */
+      iconClass: {
+        type: String,
+        computed:
+            'updateIconClassList_(batteryChargeStatus_.powerAdapterStatus)',
+      },
 
-    /** @type {string} */
-    batteryIcon: {
-      type: String,
-      computed: 'getBatteryIcon_(batteryChargeStatus_.powerAdapterStatus,' +
-          'batteryChargeStatus_.chargeNowMilliampHours,' +
-          'batteryHealth_.chargeFullNowMilliampHours)',
-    },
+      /** @type {boolean} */
+      isActive: {
+        type: Boolean,
+      },
 
-    /** @type {string} */
-    iconClass: {
-      type: String,
-      computed: 'updateIconClassList_(batteryChargeStatus_.powerAdapterStatus)',
-    },
-
-    /** @type {boolean} */
-    isActive: {
-      type: Boolean,
-    },
-  },
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+
+    /**
+     * @private {?SystemDataProviderInterface}
+     */
+    this.systemDataProvider_ = null;
+
+    /**
+     * Receiver responsible for observing battery charge status.
+     * @private {?BatteryChargeStatusObserverReceiver}
+     */
+    this.batteryChargeStatusObserverReceiver_ = null;
+
+    /**
+     * Receiver responsible for observing battery health.
+     * @private {
+     *  ?BatteryHealthObserverReceiver}
+     */
+    this.batteryHealthObserverReceiver_ = null;
+
     this.systemDataProvider_ = getSystemDataProvider();
     this.fetchBatteryInfo_();
     this.observeBatteryChargeStatus_();
     this.observeBatteryHealth_();
-  },
+  }
 
   /** @override */
-  detached() {
+  disconnectedCallback() {
+    super.disconnectedCallback();
+
     this.batteryChargeStatusObserverReceiver_.$.close();
     this.batteryHealthObserverReceiver_.$.close();
-  },
+  }
 
   /** @private */
   fetchBatteryInfo_() {
     this.systemDataProvider_.getBatteryInfo().then((result) => {
       this.onBatteryInfoReceived_(result.batteryInfo);
     });
-  },
+  }
 
   /**
    * @param {!BatteryInfo} batteryInfo
@@ -153,7 +173,7 @@
    */
   onBatteryInfoReceived_(batteryInfo) {
     this.batteryInfo_ = batteryInfo;
-  },
+  }
 
   /** @private */
   observeBatteryChargeStatus_() {
@@ -166,7 +186,7 @@
 
     this.systemDataProvider_.observeBatteryChargeStatus(
         this.batteryChargeStatusObserverReceiver_.$.bindNewPipeAndPassRemote());
-  },
+  }
 
   /**
    * Implements BatteryChargeStatusObserver.onBatteryChargeStatusUpdated()
@@ -174,7 +194,7 @@
    */
   onBatteryChargeStatusUpdated(batteryChargeStatus) {
     this.batteryChargeStatus_ = batteryChargeStatus;
-  },
+  }
 
   /** @private */
   observeBatteryHealth_() {
@@ -186,7 +206,7 @@
 
     this.systemDataProvider_.observeBatteryHealth(
         this.batteryHealthObserverReceiver_.$.bindNewPipeAndPassRemote());
-  },
+  }
 
   /**
    * Get an array of currently relevant routines based on power adaptor status
@@ -198,7 +218,7 @@
     return powerAdapterStatus === ExternalPowerSource.kDisconnected ?
         [RoutineType.kBatteryDischarge] :
         [RoutineType.kBatteryCharge];
-  },
+  }
 
   /**
    * Get power time string from battery status.
@@ -224,7 +244,7 @@
     return charging ?
         loadTimeData.getStringF('batteryChargingStatusText', timeValue) :
         loadTimeData.getStringF('batteryDischargingStatusText', timeValue);
-  },
+  }
 
   /**
    * Implements BatteryHealthObserver.onBatteryHealthUpdated()
@@ -232,13 +252,13 @@
    */
   onBatteryHealthUpdated(batteryHealth) {
     this.batteryHealth_ = batteryHealth;
-  },
+  }
 
   /** @protected */
   getDesignedFullCharge_() {
     return loadTimeData.getStringF(
         'batteryChipText', this.batteryHealth_.chargeFullDesignMilliampHours);
-  },
+  }
 
   /** @protected */
   getBatteryHealth_() {
@@ -246,13 +266,13 @@
     const batteryWearPercentage =
         Math.min(this.batteryHealth_.batteryWearPercentage, MAX_PERCENTAGE);
     return loadTimeData.getStringF('batteryHealthText', batteryWearPercentage);
-  },
+  }
 
   /** @protected */
   getCurrentNow_() {
     return loadTimeData.getStringF(
         'currentNowText', this.batteryChargeStatus_.currentNowMilliamps);
-  },
+  }
 
   /** @protected */
   getRunTestsButtonText_() {
@@ -261,7 +281,7 @@
                 ExternalPowerSource.kDisconnected ?
             'runBatteryDischargeTestText' :
             'runBatteryChargeTestText');
-  },
+  }
 
   /** @protected */
   getRunTestsAdditionalMessage() {
@@ -281,13 +301,13 @@
     return percentage >= disableRunButtonThreshold ?
         loadTimeData.getString('batteryChargeTestFullMessage') :
         '';
-  },
+  }
 
   /** @protected */
   getEstimateRuntimeInMinutes_() {
     // Power routines will always last <= 1 minute.
     return 1;
-  },
+  }
 
   /**
    * Use the current battery percentage to determine which icon to show the
@@ -336,7 +356,7 @@
     }
 
     assertNotReached();
-  },
+  }
 
   /**
    * @protected
@@ -352,7 +372,7 @@
     }
 
     return this.getBatteryIconForChargePercentage_();
-  },
+  }
 
   /**
    * Use the power adapter status to determine if we need to overwrite the value
@@ -367,5 +387,7 @@
                 ExternalPowerSource.kAc) ?
         'remove-stroke' :
         '';
-  },
-});
+  }
+}
+
+customElements.define(BatteryStatusCardElement.is, BatteryStatusCardElement);
diff --git a/ash/webui/diagnostics_ui/resources/cellular_info.js b/ash/webui/diagnostics_ui/resources/cellular_info.js
index 54fe4263..8e4aaf6 100644
--- a/ash/webui/diagnostics_ui/resources/cellular_info.js
+++ b/ash/webui/diagnostics_ui/resources/cellular_info.js
@@ -5,9 +5,9 @@
 import './data_point.js';
 import './diagnostics_shared_css.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assertNotReached} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {LockType, Network, RoamingState} from './diagnostics_types.js';
 import {getLockType, getSignalStrength} from './diagnostics_utils.js';
@@ -17,19 +17,33 @@
  * 'cellular-info' is responsible for displaying data points related
  * to a Cellular network.
  */
-Polymer({
-  is: 'cellular-info',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const CellularInfoElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class CellularInfoElement extends CellularInfoElementBase {
+  static get is() {
+    return 'cellular-info';
+  }
 
-  properties: {
-    /** @type {!Network} */
-    network: {
-      type: Object,
-    },
-  },
+  static get template() {
+    return html`{__html_template__}`;
+  }
+
+  static get properties() {
+    return {
+      /** @type {!Network} */
+      network: {
+        type: Object,
+      },
+
+    };
+  }
 
   /**
    * Get correct display text for known cellular network technology.
@@ -67,7 +81,7 @@
         assertNotReached();
         return '';
     }
-  },
+  }
 
   /**
    * @protected
@@ -94,7 +108,7 @@
 
     assertNotReached();
     return '';
-  },
+  }
 
   /**
    * @protected
@@ -109,7 +123,7 @@
     return (simLocked && lockType !== LockType.kNone) ?
         this.i18n('networkSimLockedText', getLockType(lockType)) :
         this.i18n('networkSimUnlockedText');
-  },
+  }
 
   /**
    * @protected
@@ -121,5 +135,7 @@
           this.network.typeProperties.cellular.signalStrength);
     }
     return '';
-  },
-});
+  }
+}
+
+customElements.define(CellularInfoElement.is, CellularInfoElement);
diff --git a/ash/webui/diagnostics_ui/resources/connectivity_card.js b/ash/webui/diagnostics_ui/resources/connectivity_card.js
index c2bf3ed..ebaae57 100644
--- a/ash/webui/diagnostics_ui/resources/connectivity_card.js
+++ b/ash/webui/diagnostics_ui/resources/connectivity_card.js
@@ -9,104 +9,123 @@
 import './network_info.js';
 import './routine_section.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {Network, NetworkHealthProviderInterface, NetworkStateObserverInterface, NetworkStateObserverReceiver, NetworkType, RoutineType} from './diagnostics_types.js';
 import {filterNameServers, formatMacAddress, getNetworkCardTitle, getNetworkState, getNetworkType, getRoutineGroups} from './diagnostics_utils.js';
 import {getNetworkHealthProvider} from './mojo_interface_provider.js';
 import {RoutineGroup} from './routine_group.js';
 import {TestSuiteStatus} from './routine_list_executor.js';
-
+import {RoutineSectionElement} from './routine_section.js';
 
 /**
  * @fileoverview
  * 'connectivity-card' runs network routines and displays network health data.
  */
-Polymer({
-  is: 'connectivity-card',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const ConnectivityCardElementBase =
+    mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class ConnectivityCardElement extends ConnectivityCardElementBase {
+  static get is() {
+    return 'connectivity-card';
+  }
 
-  /**
-   * @private {?NetworkHealthProviderInterface}
-   */
-  networkHealthProvider_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * Receiver responsible for observing a single active network connection.
-   * @private {?NetworkStateObserverReceiver}
-   */
-  networkStateObserverReceiver_: null,
+  static get properties() {
+    return {
+      /** @type {!TestSuiteStatus} */
+      testSuiteStatus: {
+        type: Number,
+        value: TestSuiteStatus.kNotRunning,
+        notify: true,
+      },
 
-  properties: {
-    /** @type {!TestSuiteStatus} */
-    testSuiteStatus: {
-      type: Number,
-      value: TestSuiteStatus.kNotRunning,
-      notify: true,
-    },
+      /** @private {!Array<!RoutineGroup>} */
+      routineGroups_: {
+        type: Array,
+        value: () => [],
+      },
 
-    /** @private {!Array<!RoutineGroup>} */
-    routineGroups_: {
-      type: Array,
-      value: () => [],
-    },
+      /** @type {string} */
+      activeGuid: {
+        type: String,
+        value: '',
+        observer: 'activeGuidChanged_',
+      },
 
-    /** @type {string} */
-    activeGuid: {
-      type: String,
-      value: '',
-      observer: 'activeGuidChanged_',
-    },
+      /** @type {boolean} */
+      isActive: {
+        type: Boolean,
+        observer: 'isActiveChanged_',
+      },
 
-    /** @type {boolean} */
-    isActive: {
-      type: Boolean,
-      observer: 'isActiveChanged_',
-    },
+      /** @type {!Network} */
+      network: {
+        type: Object,
+      },
 
-    /** @type {!Network} */
-    network: {
-      type: Object,
-    },
+      /** @private {string} */
+      networkType_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private {string} */
-    networkType_: {
-      type: String,
-      value: '',
-    },
+      /** @private {string} */
+      networkState_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private {string} */
-    networkState_: {
-      type: String,
-      value: '',
-    },
+      /** @protected {string} */
+      macAddress_: {
+        type: String,
+        value: '',
+      },
 
-    /** @protected {string} */
-    macAddress_: {
-      type: String,
-      value: '',
-    },
-  },
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+    /**
+     * @private {?NetworkHealthProviderInterface}
+     */
+    this.networkHealthProvider_ = null;
+
+    /**
+     * Receiver responsible for observing a single active network connection.
+     * @private {?NetworkStateObserverReceiver}
+     */
+    this.networkStateObserverReceiver_ = null;
+
     this.networkHealthProvider_ = getNetworkHealthProvider();
-  },
+  }
 
   /** @private */
   getRoutineSectionElem_() {
-    return /** @type {!RoutineSectionElement} */ (this.$$('routine-section'));
-  },
+    return /** @type {!RoutineSectionElement} */ (
+        this.shadowRoot.querySelector('routine-section'));
+  }
 
   /** @override */
-  detached() {
+  disconnectedCallback() {
+    super.disconnectedCallback();
+
     this.getRoutineSectionElem_().stopTests();
-  },
+  }
 
   /**
    * @protected
@@ -114,7 +133,7 @@
    */
   hasRoutines_() {
     return this.routineGroups_ && this.routineGroups_.length > 0;
-  },
+  }
 
   /** @private */
   observeNetwork_() {
@@ -132,7 +151,7 @@
     this.networkHealthProvider_.observeNetwork(
         this.networkStateObserverReceiver_.$.bindNewPipeAndPassRemote(),
         this.activeGuid);
-  },
+  }
 
   /**
    * Implements NetworkStateObserver.onNetworkStateChanged
@@ -153,18 +172,18 @@
     // Remove '0.0.0.0' (if present) from list of name servers.
     filterNameServers(network);
     this.set('network', network);
-  },
+  }
 
   /** @protected */
   getEstimateRuntimeInMinutes_() {
     // Connectivity routines will always last <= 1 minute.
     return 1;
-  },
+  }
 
   /** @protected */
   getNetworkCardTitle_() {
     return getNetworkCardTitle(this.networkType_, this.networkState_);
-  },
+  }
 
   /**
    * @protected
@@ -180,7 +199,7 @@
     }
     this.getRoutineSectionElem_().stopTests();
     this.observeNetwork_();
-  },
+  }
 
   /**
    * @protected
@@ -194,7 +213,7 @@
     if (this.routineGroups_.length > 0) {
       this.getRoutineSectionElem_().runTests();
     }
-  },
+  }
 
   /**
    * @protected
@@ -205,5 +224,7 @@
       return '';
     }
     return formatMacAddress(this.macAddress_);
-  },
-});
+  }
+}
+
+customElements.define(ConnectivityCardElement.is, ConnectivityCardElement);
diff --git a/ash/webui/diagnostics_ui/resources/cpu_card.js b/ash/webui/diagnostics_ui/resources/cpu_card.js
index 769753e..311a28773 100644
--- a/ash/webui/diagnostics_ui/resources/cpu_card.js
+++ b/ash/webui/diagnostics_ui/resources/cpu_card.js
@@ -12,9 +12,9 @@
 import './routine_section.js';
 import './strings.m.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {CpuUsage, CpuUsageObserverInterface, CpuUsageObserverReceiver, RoutineType, SystemDataProviderInterface, SystemInfo} from './diagnostics_types.js';
 import {getSystemDataProvider} from './mojo_interface_provider.js';
@@ -24,73 +24,90 @@
  * @fileoverview
  * 'cpu-card' shows information about the CPU.
  */
-Polymer({
-  is: 'cpu-card',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const CpuCardElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class CpuCardElement extends CpuCardElementBase {
+  static get is() {
+    return 'cpu-card';
+  }
 
-  /**
-   * @private {?SystemDataProviderInterface}
-   */
-  systemDataProvider_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * Receiver responsible for observing CPU usage.
-   * @private {?CpuUsageObserverReceiver}
-   */
-  cpuUsageObserverReceiver_: null,
-
-  properties: {
-    /** @private {!Array<!RoutineType>} */
-    routines_: {
-      type: Array,
-      value: () => {
-        return [
-          RoutineType.kCpuStress,
-          RoutineType.kCpuCache,
-          RoutineType.kCpuFloatingPoint,
-          RoutineType.kCpuPrime,
-        ];
+  static get properties() {
+    return {
+      /** @private {!Array<!RoutineType>} */
+      routines_: {
+        type: Array,
+        value: () => {
+          return [
+            RoutineType.kCpuStress,
+            RoutineType.kCpuCache,
+            RoutineType.kCpuFloatingPoint,
+            RoutineType.kCpuPrime,
+          ];
+        },
       },
-    },
 
-    /** @private {!CpuUsage} */
-    cpuUsage_: {
-      type: Object,
-    },
+      /** @private {!CpuUsage} */
+      cpuUsage_: {
+        type: Object,
+      },
 
-    /** @private {string} */
-    cpuChipInfo_: {
-      type: String,
-      value: '',
-    },
+      /** @private {string} */
+      cpuChipInfo_: {
+        type: String,
+        value: '',
+      },
 
-    /** @type {!TestSuiteStatus} */
-    testSuiteStatus: {
-      type: Number,
-      value: TestSuiteStatus.kNotRunning,
-      notify: true,
-    },
+      /** @type {!TestSuiteStatus} */
+      testSuiteStatus: {
+        type: Number,
+        value: TestSuiteStatus.kNotRunning,
+        notify: true,
+      },
 
-    /** @type {boolean} */
-    isActive: {
-      type: Boolean,
-    },
-  },
+      /** @type {boolean} */
+      isActive: {
+        type: Boolean,
+      },
+
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+    /**
+     * @private {?SystemDataProviderInterface}
+     */
+    this.systemDataProvider_ = null;
+
+    /**
+     * Receiver responsible for observing CPU usage.
+     * @private {?CpuUsageObserverReceiver}
+     */
+    this.cpuUsageObserverReceiver_ = null;
+
     this.systemDataProvider_ = getSystemDataProvider();
     this.observeCpuUsage_();
     this.fetchSystemInfo_();
-  },
+  }
 
   /** @override */
-  detached() {
+  disconnectedCallback() {
+    super.disconnectedCallback();
+
     this.cpuUsageObserverReceiver_.$.close();
-  },
+  }
 
   /** @private */
   observeCpuUsage_() {
@@ -102,7 +119,7 @@
 
     this.systemDataProvider_.observeCpuUsage(
         this.cpuUsageObserverReceiver_.$.bindNewPipeAndPassRemote());
-  },
+  }
 
   /**
    * Implements CpuUsageObserver.onCpuUsageUpdated.
@@ -110,7 +127,7 @@
    */
   onCpuUsageUpdated(cpuUsage) {
     this.cpuUsage_ = cpuUsage;
-  },
+  }
 
   /** @protected */
   getCurrentlyUsing_() {
@@ -119,14 +136,14 @@
         (this.cpuUsage_.percentUsageSystem + this.cpuUsage_.percentUsageUser),
         MAX_PERCENTAGE);
     return loadTimeData.getStringF('cpuUsageText', usagePercentage);
-  },
+  }
 
   /** @private */
   fetchSystemInfo_() {
     this.systemDataProvider_.getSystemInfo().then((result) => {
       this.onSystemInfoReceived_(result.systemInfo);
     });
-  },
+  }
 
   /**
    * @param {!SystemInfo} systemInfo
@@ -136,18 +153,18 @@
     this.cpuChipInfo_ = loadTimeData.getStringF(
         'cpuChipText', systemInfo.cpuModelName, systemInfo.cpuThreadsCount,
         this.convertKhzToGhz_(systemInfo.cpuMaxClockSpeedKhz));
-  },
+  }
 
   /** @protected */
   getCpuTemp_() {
     return loadTimeData.getStringF(
         'cpuTempText', this.cpuUsage_.averageCpuTempCelsius);
-  },
+  }
 
   /** @protected */
   getCpuUsageTooltipText_() {
     return loadTimeData.getString('cpuUsageTooltipText');
-  },
+  }
 
   /**
    * @param {number} num
@@ -156,18 +173,20 @@
    */
   convertKhzToGhz_(num) {
     return parseFloat(num / 1000000).toFixed(2);
-  },
+  }
 
   /** @protected */
   getCurrentCpuSpeed_() {
     return loadTimeData.getStringF(
         'currentCpuSpeedText',
         this.convertKhzToGhz_(this.cpuUsage_.scalingCurrentFrequencyKhz));
-  },
+  }
 
   /** @protected */
   getEstimateRuntimeInMinutes_() {
     // Each routine runs for a minute
     return this.routines_.length;
-  },
-});
+  }
+}
+
+customElements.define(CpuCardElement.is, CpuCardElement);
\ No newline at end of file
diff --git a/ash/webui/diagnostics_ui/resources/data_point.js b/ash/webui/diagnostics_ui/resources/data_point.js
index 48e565d9..2dfcdcc 100644
--- a/ash/webui/diagnostics_ui/resources/data_point.js
+++ b/ash/webui/diagnostics_ui/resources/data_point.js
@@ -7,7 +7,7 @@
 import './diagnostics_shared_css.js';
 import './icons.js';
 
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
  * @fileoverview
@@ -15,48 +15,59 @@
  *  consists of a header, value, and tooltip that provides context about the
  *  item.
  */
-Polymer({
-  is: 'data-point',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class DataPointElement extends PolymerElement {
+  static get is() {
+    return 'data-point';
+  }
 
-  properties: {
-    /** @type {string} */
-    header: {
-      type: String,
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /** @type {string} */
-    value: {
-      type: String,
-      value: '',
-    },
+  static get properties() {
+    return {
+      /** @type {string} */
+      header: {
+        type: String,
+      },
 
-    /** @type {string} */
-    tooltipText: {
-      type: String,
-      value: '',
-    },
+      /** @type {string} */
+      value: {
+        type: String,
+        value: '',
+      },
 
-    /** @type {boolean} */
-    warningState: {
-      type: Boolean,
-      value: false,
-    },
+      /** @type {string} */
+      tooltipText: {
+        type: String,
+        value: '',
+      },
 
-    /**
-     * The alignment of the data point on the screen (vertical or horizontal).
-     *  @type {string}
-     */
-    orientation: {
-      type: String,
-      value: 'vertical',
-      reflectToAttribute: true,
-    },
-  },
+      /** @type {boolean} */
+      warningState: {
+        type: Boolean,
+        value: false,
+      },
+
+      /**
+       * The alignment of the data point on the screen (vertical or horizontal).
+       *  @type {string}
+       */
+      orientation: {
+        type: String,
+        value: 'vertical',
+        reflectToAttribute: true,
+      },
+
+    };
+  }
 
   /** @protected */
   getValueClass_() {
     return this.warningState ? 'value text-red' : 'value';
-  },
-});
+  }
+}
+
+customElements.define(DataPointElement.is, DataPointElement);
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_app.js b/ash/webui/diagnostics_ui/resources/diagnostics_app.js
index a2362ec..95617ed 100644
--- a/ash/webui/diagnostics_ui/resources/diagnostics_app.js
+++ b/ash/webui/diagnostics_ui/resources/diagnostics_app.js
@@ -12,9 +12,9 @@
 import './strings.m.js';
 import './system_page.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {DiagnosticsBrowserProxy, DiagnosticsBrowserProxyImpl} from './diagnostics_browser_proxy.js';
 import {ConnectedDevicesObserverInterface, ConnectedDevicesObserverReceiver, InputDataProviderInterface, KeyboardInfo, TouchDeviceInfo} from './diagnostics_types.js';
@@ -27,80 +27,95 @@
  * the main page for viewing telemetric system information and running
  * diagnostic tests.
  */
-Polymer({
-  is: 'diagnostics-app',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const DiagnosticsAppElementBase =
+    mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class DiagnosticsAppElement extends DiagnosticsAppElementBase {
+  static get is() {
+    return 'diagnostics-app';
+  }
 
-  /** @private {?DiagnosticsBrowserProxy} */
-  browserProxy_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /** @private {?InputDataProviderInterface} */
-  inputDataProvider_: null,
+  static get properties() {
+    return {
+      /**
+       * Used in navigation-view-panel to set show-banner when banner is
+       * expected to be shown.
+       * @protected
+       * @type {string}
+       */
+      bannerMessage_: {
+        type: Boolean,
+        value: '',
+      },
 
-  /** @private {number} */
-  numKeyboards_: -1,
+      /** @protected {boolean} */
+      saveSessionLogEnabled_: {
+        type: Boolean,
+        value: true,
+      },
 
-  properties: {
-    /**
-     * Used in navigation-view-panel to set show-banner when banner is expected
-     * to be shown.
-     * @protected
-     * @type {string}
-     */
-    bannerMessage_: {
-      type: Boolean,
-      value: '',
-    },
+      /** @private {boolean} */
+      showNavPanel_: {
+        type: Boolean,
+        computed: 'computeShowNavPanel_(isNetworkingEnabled_, isInputEnabled_)',
+      },
 
-    /** @protected {boolean} */
-    saveSessionLogEnabled_: {
-      type: Boolean,
-      value: true,
-    },
+      /** @private {boolean} */
+      isNetworkingEnabled_: {
+        type: Boolean,
+        value: loadTimeData.getBoolean('isNetworkingEnabled'),
+      },
 
-    /** @private {boolean} */
-    showNavPanel_: {
-      type: Boolean,
-      computed: 'computeShowNavPanel_(isNetworkingEnabled_, isInputEnabled_)',
-    },
+      /** @private {boolean} */
+      isInputEnabled_: {
+        type: Boolean,
+        value: loadTimeData.getBoolean('isInputEnabled'),
+      },
 
-    /** @private {boolean} */
-    isNetworkingEnabled_: {
-      type: Boolean,
-      value: loadTimeData.getBoolean('isNetworkingEnabled'),
-    },
+      /**
+       * Whether a user is logged in or not.
+       * Note: A guest session is considered a logged-in state.
+       * @protected {boolean}
+       */
+      isLoggedIn_: {
+        type: Boolean,
+        value: loadTimeData.getBoolean('isLoggedIn'),
+      },
 
-    /** @private {boolean} */
-    isInputEnabled_: {
-      type: Boolean,
-      value: loadTimeData.getBoolean('isInputEnabled'),
-    },
+      /** @private {string} */
+      toastText_: {
+        type: String,
+        value: '',
+      },
 
-    /**
-     * Whether a user is logged in or not.
-     * Note: A guest session is considered a logged-in state.
-     * @protected {boolean}
-     */
-    isLoggedIn_: {
-      type: Boolean,
-      value: loadTimeData.getBoolean('isLoggedIn'),
-    },
-
-    /** @private {string} */
-    toastText_: {
-      type: String,
-      value: '',
-    },
-  },
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+    /** @private {?DiagnosticsBrowserProxy} */
+    this.browserProxy_ = null;
+
+    /** @private {?InputDataProviderInterface} */
+    this.inputDataProvider_ = null;
+
+    /** @private {number} */
+    this.numKeyboards_ = -1;
     this.browserProxy_ = DiagnosticsBrowserProxyImpl.getInstance();
     this.browserProxy_.initialize();
-  },
+  }
 
   /**
    * Implements ConnectedDevicesObserver.OnKeyboardConnected.
@@ -111,7 +126,7 @@
       this.$.navigationPanel.addSelectorItem(this.createInputSelector_());
     }
     this.numKeyboards_++;
-  },
+  }
 
   /**
    * Implements ConnectedDevicesObserver.OnKeyboardDisconnected.
@@ -122,36 +137,38 @@
     if (this.numKeyboards_ === 0) {
       this.$.navigationPanel.removeSelectorById('input');
     }
-  },
+  }
 
   /**
    * Implements ConnectedDevicesObserver.OnTouchDeviceConnected.
    * @param {!TouchDeviceInfo} newTouchDevice
    */
-  onTouchDeviceConnected(newTouchDevice) {},
+  onTouchDeviceConnected(newTouchDevice) {}
 
   /**
    * Implements ConnectedDevicesObserver.OnTouchDeviceDisconnected.
    * @param {number} id
    */
-  onTouchDeviceDisconnected(id) {},
+  onTouchDeviceDisconnected(id) {}
 
   /** @private */
   computeShowNavPanel_(isNetworkingEnabled, isInputEnabled) {
     return isNetworkingEnabled || isInputEnabled;
-  },
+  }
 
   /** @private */
   createInputSelector_() {
     return this.$.navigationPanel.createSelectorItem(
         loadTimeData.getString('inputText'), 'input-list',
         getDiagnosticsIcon('keyboard'), 'input');
-  },
+  }
 
   /** @override */
-  attached() {
+  connectedCallback() {
+    super.connectedCallback();
+
     if (this.showNavPanel_) {
-      const navPanel = this.$$('#navigationPanel');
+      const navPanel = this.shadowRoot.querySelector('#navigationPanel');
       // Note: When adding a new page, update the DiagnosticsPage enum located
       // in chrome/browser/ui/webui/chromeos/diagnostics_dialog.h.
       const pages = [navPanel.createSelectorItem(
@@ -186,7 +203,7 @@
       }
       navPanel.addSelectors(pages);
     }
-  },
+  }
 
   /** @protected */
   onSessionLogClick_() {
@@ -208,5 +225,7 @@
         .finally(() => {
           this.saveSessionLogEnabled_ = true;
         });
-  },
-});
+  }
+}
+
+customElements.define(DiagnosticsAppElement.is, DiagnosticsAppElement);
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_card.js b/ash/webui/diagnostics_ui/resources/diagnostics_card.js
index 19593b6..5faaa66 100644
--- a/ash/webui/diagnostics_ui/resources/diagnostics_card.js
+++ b/ash/webui/diagnostics_ui/resources/diagnostics_card.js
@@ -5,33 +5,42 @@
 import './diagnostics_card_frame.js';
 import './diagnostics_shared_css.js';
 
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
  * @fileoverview
  * 'diagnostics-card' is a styling wrapper for each component's diagnostic
  * card.
  */
-Polymer({
-  is: 'diagnostics-card',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class DiagnosticsCardElement extends PolymerElement {
+  static get is() {
+    return 'diagnostics-card';
+  }
 
-  properties: {
-    /** @type {boolean} */
-    hideDataPoints: {
-      type: Boolean,
-      value: false,
-      reflectToAttribute: true,
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /** @type {boolean} */
-    isNetworkingCard: {
-      type: Boolean,
-      value: false,
-      reflectToAttribute: true,
-    },
-  },
+  static get properties() {
+    return {
+      /** @type {boolean} */
+      hideDataPoints: {
+        type: Boolean,
+        value: false,
+        reflectToAttribute: true,
+      },
+
+      /** @type {boolean} */
+      isNetworkingCard: {
+        type: Boolean,
+        value: false,
+        reflectToAttribute: true,
+      },
+
+    };
+  }
 
   /**
    * @return {string}
@@ -39,7 +48,7 @@
    */
   getTopSectionClassName_() {
     return `top-section${this.isNetworkingCard ? '-networking' : ''}`;
-  },
+  }
 
   /**
    * @return {string}
@@ -47,5 +56,7 @@
    */
   getBodyClassName_() {
     return `data-points${this.isNetworkingCard ? '-column' : ''}`;
-  },
-});
+  }
+}
+
+customElements.define(DiagnosticsCardElement.is, DiagnosticsCardElement);
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.js b/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.js
index e740a24..7dcf4cee 100644
--- a/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.js
+++ b/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.js
@@ -4,16 +4,24 @@
 
 import './diagnostics_shared_css.js';
 
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
  * @fileoverview
  * 'diagnostics-card-frame' is a styling wrapper for each component's diagnostic
  * card.
  */
-Polymer({
-  is: 'diagnostics-card-frame',
 
-  _template: html`{__html_template__}`,
-});
+/** @polymer */
+class DiagnosticsCardFrameElement extends PolymerElement {
+  static get is() {
+    return 'diagnostics-card-frame';
+  }
 
+  static get template() {
+    return html`{__html_template__}`;
+  }
+}
+
+customElements.define(
+    DiagnosticsCardFrameElement.is, DiagnosticsCardFrameElement);
diff --git a/ash/webui/diagnostics_ui/resources/ethernet_info.js b/ash/webui/diagnostics_ui/resources/ethernet_info.js
index 380ea4d..6271ff3 100644
--- a/ash/webui/diagnostics_ui/resources/ethernet_info.js
+++ b/ash/webui/diagnostics_ui/resources/ethernet_info.js
@@ -5,50 +5,63 @@
 import './data_point.js';
 import './diagnostics_shared_css.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assertNotReached} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {AuthenticationType, Network} from './diagnostics_types.js';
 
-
 /**
  * @fileoverview
  * 'ethernet-info' is responsible for displaying data points related
  * to an Ethernet network.
  */
-Polymer({
-  is: 'ethernet-info',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const EthernetInfoElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class EthernetInfoElement extends EthernetInfoElementBase {
+  static get is() {
+    return 'ethernet-info';
+  }
 
-  properties: {
-    /**
-     * @protected
-     * @type {string}
-     */
-    authentication_: {
-      type: String,
-      computed: 'computeAuthentication_(network.typeProperties.ethernet.' +
-          'authentication)',
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /**
-     * @protected
-     * @type {string}
-     */
-    ipAddress_: {
-      type: String,
-      computed: 'computeIpAddress_(network.ipConfig.ipAddress)',
-    },
+  static get properties() {
+    return {
+      /**
+       * @protected
+       * @type {string}
+       */
+      authentication_: {
+        type: String,
+        computed: 'computeAuthentication_(network.typeProperties.ethernet.' +
+            'authentication)',
+      },
 
-    /** @type {!Network} */
-    network: {
-      type: Object,
-    },
-  },
+      /**
+       * @protected
+       * @type {string}
+       */
+      ipAddress_: {
+        type: String,
+        computed: 'computeIpAddress_(network.ipConfig.ipAddress)',
+      },
+
+      /** @type {!Network} */
+      network: {
+        type: Object,
+      },
+
+    };
+  }
 
   /**
    * @protected
@@ -70,7 +83,7 @@
       }
     }
     return '';
-  },
+  }
 
   /**
    * @protected
@@ -81,5 +94,7 @@
       return this.network.ipConfig.ipAddress;
     }
     return '';
-  },
-});
+  }
+}
+
+customElements.define(EthernetInfoElement.is, EthernetInfoElement);
diff --git a/ash/webui/diagnostics_ui/resources/input_card.js b/ash/webui/diagnostics_ui/resources/input_card.js
index 53c7ebd..d466e5b 100644
--- a/ash/webui/diagnostics_ui/resources/input_card.js
+++ b/ash/webui/diagnostics_ui/resources/input_card.js
@@ -7,9 +7,9 @@
 import './diagnostics_card_frame.js';
 import './icons.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {ConnectionType, KeyboardInfo, TouchDeviceInfo} from './diagnostics_types.js';
 
@@ -29,32 +29,45 @@
   kTouchscreen: 'touchscreen',
 };
 
-Polymer({
-  is: 'input-card',
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const InputCardElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class InputCardElement extends InputCardElementBase {
+  static get is() {
+    return 'input-card';
+  }
 
-  behaviors: [I18nBehavior],
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  properties: {
-    /**
-     * The type of input device to be displayed. Valid values are 'keyboard',
-     * 'touchpad', and 'touchscreen'.
-     * @type {!InputCardType}
-     */
-    deviceType: String,
+  static get properties() {
+    return {
+      /**
+       * The type of input device to be displayed. Valid values are 'keyboard',
+       * 'touchpad', and 'touchscreen'.
+       * @type {!InputCardType}
+       */
+      deviceType: String,
 
-    /** @type {!Array<!KeyboardInfo|!TouchDeviceInfo>} */
-    devices: {
-      type: Array,
-      value: () => [],
-    },
+      /** @type {!Array<!KeyboardInfo|!TouchDeviceInfo>} */
+      devices: {
+        type: Array,
+        value: () => [],
+      },
 
-    deviceIcon_: {
-      type: String,
-      computed: 'computeDeviceIcon_(deviceType)',
-    },
-  },
+      deviceIcon_: {
+        type: String,
+        computed: 'computeDeviceIcon_(deviceType)',
+      },
+
+    };
+  }
 
   computeDeviceIcon_(deviceType) {
     return {
@@ -62,7 +75,7 @@
       [InputCardType.kTouchpad]: 'diagnostics:touchpad',
       [InputCardType.kTouchscreen]: 'diagnostics:touchscreen',
     }[deviceType];
-  },
+  }
 
   /**
    * Fetches the description string for a device based on its connection type
@@ -87,7 +100,7 @@
     }[this.deviceType];
     return loadTimeData.getString(
         'inputDescription' + connectionTypeString + deviceTypeString);
-  },
+  }
 
   /**
    * @param {!PointerEvent} e
@@ -98,5 +111,7 @@
         parseInt(e.target.closest('.device').getAttribute('data-evdev-id'), 10);
     this.dispatchEvent(new CustomEvent(
         'test-button-click', {composed: true, detail: {evdevId: evdevId}}));
-  },
-});
+  }
+}
+
+customElements.define(InputCardElement.is, InputCardElement);
diff --git a/ash/webui/diagnostics_ui/resources/input_list.js b/ash/webui/diagnostics_ui/resources/input_list.js
index c53db69..5135636 100644
--- a/ash/webui/diagnostics_ui/resources/input_list.js
+++ b/ash/webui/diagnostics_ui/resources/input_list.js
@@ -6,13 +6,14 @@
 import './input_card.js';
 import './keyboard_tester.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {DiagnosticsBrowserProxy, DiagnosticsBrowserProxyImpl} from './diagnostics_browser_proxy.js';
 import {ConnectedDevicesObserverInterface, ConnectedDevicesObserverReceiver, InputDataProviderInterface, KeyboardInfo, TouchDeviceInfo, TouchDeviceType} from './diagnostics_types.js';
+import {KeyboardTesterElement} from './keyboard_tester.js';
 import {getInputDataProvider} from './mojo_interface_provider.js';
 
 /**
@@ -20,74 +21,86 @@
  * 'input-list' is responsible for displaying keyboard, touchpad, and
  * touchscreen cards.
  */
-Polymer({
-  is: 'input-list',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const InputListElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class InputListElement extends InputListElementBase {
+  static get is() {
+    return 'input-list';
+  }
 
-  /** @private {?DiagnosticsBrowserProxy} */
-  browserProxy_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /** @private {?InputDataProviderInterface} */
-  inputDataProvider_: null,
+  static get properties() {
+    return {
+      /** @private {!Array<!KeyboardInfo>} */
+      keyboards_: {
+        type: Array,
+        value: () => [],
+      },
 
-  /** @private {?ConnectedDevicesObserverReceiver} */
-  connectedDevicesObserverReceiver_: null,
+      /** @private {!Array<!TouchDeviceInfo>} */
+      touchpads_: {
+        type: Array,
+        value: () => [],
+      },
 
-  /** @private {?KeyboardTesterElement} */
-  keyboardTester_: null,
+      /** @private {!Array<!TouchDeviceInfo>} */
+      touchscreens_: {
+        type: Array,
+        value: () => [],
+      },
 
-  properties: {
-    /** @private {!Array<!KeyboardInfo>} */
-    keyboards_: {
-      type: Array,
-      value: () => [],
-    },
+      /** @protected */
+      showTouchpads_: {
+        type: Boolean,
+        computed: 'computeShowTouchpads_(touchpads_.length)',
+      },
 
-    /** @private {!Array<!TouchDeviceInfo>} */
-    touchpads_: {
-      type: Array,
-      value: () => [],
-    },
+      /** @protected */
+      showTouchscreens_: {
+        type: Boolean,
+        computed: 'computeShowTouchscreens_(touchscreens_.length)',
+      },
 
-    /** @private {!Array<!TouchDeviceInfo>} */
-    touchscreens_: {
-      type: Array,
-      value: () => [],
-    },
-
-    /** @protected */
-    showTouchpads_: {
-      type: Boolean,
-      computed: 'computeShowTouchpads_(touchpads_.length)',
-    },
-
-    /** @protected */
-    showTouchscreens_: {
-      type: Boolean,
-      computed: 'computeShowTouchscreens_(touchscreens_.length)',
-    },
-  },
+    };
+  }
 
   computeShowTouchpads_(numTouchpads) {
     return numTouchpads > 0 && loadTimeData.getBoolean('isTouchpadEnabled');
-  },
+  }
 
   computeShowTouchscreens_(numTouchscreens) {
     return numTouchscreens > 0 &&
         loadTimeData.getBoolean('isTouchscreenEnabled');
-  },
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+
+    /** @private {?ConnectedDevicesObserverReceiver} */
+    this.connectedDevicesObserverReceiver_ = null;
+
+    /** @private {?KeyboardTesterElement} */
+    this.keyboardTester_ = null;
+
+    /** @private {DiagnosticsBrowserProxy} */
     this.browserProxy_ = DiagnosticsBrowserProxyImpl.getInstance();
     this.browserProxy_.initialize();
+    /** @private {InputDataProviderInterface} */
     this.inputDataProvider_ = getInputDataProvider();
     this.loadInitialDevices_();
     this.observeConnectedDevices_();
-  },
+  }
 
   /** @private */
   loadInitialDevices_() {
@@ -98,7 +111,7 @@
       this.touchscreens_ = devices.touchDevices.filter(
           (device) => device.type === TouchDeviceType.kDirect);
     });
-  },
+  }
 
   /** @private */
   observeConnectedDevices_() {
@@ -107,7 +120,7 @@
         /** @type {!ConnectedDevicesObserverInterface} */(this));
     this.inputDataProvider_.observeConnectedDevices(
       this.connectedDevicesObserverReceiver_.$.bindNewPipeAndPassRemote());
-  },
+  }
 
   /**
    * Implements ConnectedDevicesObserver.OnKeyboardConnected.
@@ -115,7 +128,7 @@
    */
   onKeyboardConnected(newKeyboard) {
     this.push('keyboards_', newKeyboard);
-  },
+  }
 
   /**
    * Removes the device with the given evdev ID from one of the device list
@@ -129,7 +142,7 @@
     if (index !== -1) {
       this.splice(path, index, 1);
     }
-  },
+  }
 
   /**
    * Implements ConnectedDevicesObserver.OnKeyboardDisconnected.
@@ -145,7 +158,7 @@
       // explicitly close the dialog when this happens.
       this.keyboardTester_.close();
     }
-  },
+  }
 
   /**
    * Implements ConnectedDevicesObserver.OnTouchDeviceConnected.
@@ -157,7 +170,7 @@
     } else {
       this.push('touchscreens_', newTouchDevice);
     }
-  },
+  }
 
   /**
    * Implements ConnectedDevicesObserver.OnTouchDeviceDisconnected.
@@ -166,7 +179,7 @@
   onTouchDeviceDisconnected(id) {
     this.removeDeviceById_('touchpads_', id);
     this.removeDeviceById_('touchscreens_', id);
-  },
+  }
 
   /**
    * @param {!CustomEvent} e
@@ -183,7 +196,7 @@
     this.keyboardTester_.keyboard = assert(
         this.keyboards_.find((keyboard) => keyboard.id === e.detail.evdevId));
     this.keyboardTester_.show();
-  },
+  }
 
   /**
    * 'navigation-view-panel' is responsible for calling this function when
@@ -197,5 +210,7 @@
       // to avoid duplicate code in all navigatable pages.
       this.browserProxy_.recordNavigation('input');
     }
-  },
-});
+  }
+}
+
+customElements.define(InputListElement.is, InputListElement);
diff --git a/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.js b/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.js
index a597033..0e19fc77 100644
--- a/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.js
+++ b/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.js
@@ -6,9 +6,9 @@
 import './diagnostics_shared_css.js';
 import 'chrome://resources/cr_elements/cr_expand_button/cr_expand_button.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {DiagnosticsBrowserProxy, DiagnosticsBrowserProxyImpl} from './diagnostics_browser_proxy.js';
 import {Network} from './diagnostics_types.js';
@@ -19,71 +19,88 @@
  * 'ip-config-info-drawer' displays standard IP related configuration data in a
  * collapsible drawer.
  */
-Polymer({
-  is: 'ip-config-info-drawer',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const IpConfigInfoDrawerElementBase =
+    mixinBehaviors([I18nBehavior], PolymerElement);
 
-  /**  @private {?DiagnosticsBrowserProxy} */
-  browserProxy_: null,
+/** @polymer */
+export class IpConfigInfoDrawerElement extends IpConfigInfoDrawerElementBase {
+  static get is() {
+    return 'ip-config-info-drawer';
+  }
 
-  behaviors: [I18nBehavior],
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  properties: {
-    /**
-     * @protected
-     * @type {boolean}
-     */
-    expanded_: {
-      type: Boolean,
-      value: false,
-    },
+  static get properties() {
+    return {
+      /**
+       * @protected
+       * @type {boolean}
+       */
+      expanded_: {
+        type: Boolean,
+        value: false,
+      },
 
-    /**
-     * @protected
-     * @type {string}
-     */
-    gateway_: {
-      type: String,
-      computed: 'computeGateway_(network.ipConfig.gateway)',
-    },
+      /**
+       * @protected
+       * @type {string}
+       */
+      gateway_: {
+        type: String,
+        computed: 'computeGateway_(network.ipConfig.gateway)',
+      },
 
-    /**
-     * @protected
-     * @type {string}
-     */
-    nameServers_: {
-      type: String,
-      computed: 'computeNameServers_(network.ipConfig.nameServers)',
-    },
+      /**
+       * @protected
+       * @type {string}
+       */
+      nameServers_: {
+        type: String,
+        computed: 'computeNameServers_(network.ipConfig.nameServers)',
+      },
 
-    /** @type {!Network} */
-    network: {
-      type: Object,
-    },
+      /** @type {!Network} */
+      network: {
+        type: Object,
+      },
 
-    /**
-     * @protected
-     * @type {string}
-     */
-    subnetMask_: {
-      type: String,
-      computed: 'computeSubnetMask_(network.ipConfig.routingPrefix)',
-    },
+      /**
+       * @protected
+       * @type {string}
+       */
+      subnetMask_: {
+        type: String,
+        computed: 'computeSubnetMask_(network.ipConfig.routingPrefix)',
+      },
 
-    /** @protected {string} */
-    nameServersHeader_: {
-      type: String,
-      value: '',
-    },
-  },
+      /** @protected {string} */
+      nameServersHeader_: {
+        type: String,
+        value: '',
+      },
 
-  observers: ['getNameServersHeader_(network.ipConfig.nameServers)'],
+    };
+  }
+
+  static get observers() {
+    return ['getNameServersHeader_(network.ipConfig.nameServers)'];
+  }
+
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+
     this.browserProxy_ = DiagnosticsBrowserProxyImpl.getInstance();
-  },
+  }
 
   /**
    * @protected
@@ -94,7 +111,7 @@
       return this.network.ipConfig.gateway;
     }
     return '';
-  },
+  }
 
   /**
    * @protected
@@ -112,7 +129,7 @@
     }
 
     return this.network.ipConfig.nameServers.join(', ');
-  },
+  }
 
   /**
    * @protected
@@ -127,7 +144,7 @@
           this.network.ipConfig.routingPrefix);
     }
     return '';
-  },
+  }
 
   /**
    * @protected
@@ -139,5 +156,7 @@
         .then(localizedString => {
           this.nameServersHeader_ = localizedString;
         });
-  },
-});
+  }
+}
+
+customElements.define(IpConfigInfoDrawerElement.is, IpConfigInfoDrawerElement);
diff --git a/ash/webui/diagnostics_ui/resources/keyboard_tester.js b/ash/webui/diagnostics_ui/resources/keyboard_tester.js
index 44b8347..b48074d 100644
--- a/ash/webui/diagnostics_ui/resources/keyboard_tester.js
+++ b/ash/webui/diagnostics_ui/resources/keyboard_tester.js
@@ -8,9 +8,9 @@
 
 import {MechanicalLayout as DiagramMechanicalLayout, PhysicalLayout as DiagramPhysicalLayout, TopRightKey as DiagramTopRightKey, TopRowKey as DiagramTopRowKey} from 'chrome://resources/ash/common/keyboard_diagram.js';
 import {KeyboardKeyState} from 'chrome://resources/ash/common/keyboard_key.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {InputDataProviderInterface, KeyboardInfo, KeyboardObserverInterface, KeyboardObserverReceiver, KeyEvent, KeyEventType, MechanicalLayout, NumberPadPresence, PhysicalLayout, TopRightKey, TopRowKey} from './diagnostics_types.js';
 
@@ -89,23 +89,91 @@
   111,  // KEY_DELETE
 ]);
 
-Polymer({
-  is: 'keyboard-tester',
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const KeyboardTesterElementBase =
+    mixinBehaviors([I18nBehavior], PolymerElement);
 
-  created: function() {
+/** @polymer */
+export class KeyboardTesterElement extends KeyboardTesterElementBase {
+  static get is() {
+    return 'keyboard-tester';
+  }
+
+  static get template() {
+    return html`{__html_template__}`;
+  }
+
+  static get properties() {
+    return {
+      /**
+       * The keyboard being tested, or null if none is being tested at the
+       * moment.
+       * @type {?KeyboardInfo}
+       */
+      keyboard: KeyboardInfo,
+
+      /** @private */
+      layoutIsKnown_: {
+        type: Boolean,
+        computed: 'computeLayoutIsKnown_(keyboard)',
+      },
+
+      // TODO(crbug.com/1257138): use the proper type annotation instead of
+      // string.
+      /** @private {?string} */
+      diagramMechanicalLayout_: {
+        type: String,
+        computed: 'computeDiagramMechanicalLayout_(keyboard)',
+      },
+
+      // TODO(crbug.com/1257138): use the proper type annotation instead of
+      // string.
+      /** @private {?string} */
+      diagramPhysicalLayout_: {
+        type: String,
+        computed: 'computeDiagramPhysicalLayout_(keyboard)',
+      },
+
+      // TODO(crbug.com/1257138): use the proper type annotation instead of
+      // string.
+      /** @protected {?string} */
+      diagramTopRightKey_: {
+        type: String,
+        computed: 'computeDiagramTopRightKey_(keyboard)',
+      },
+
+      /** @private */
+      showNumberPad_: {
+        type: Boolean,
+        computed: 'computeShowNumberPad_(keyboard)',
+      },
+
+      // TODO(crbug.com/1257138): use the proper type annotation instead of
+      // Object.
+      /** @private {!Array<!Object>} */
+      topRowKeys_: {
+        type: Array,
+        computed: 'computeTopRowKeys_(keyboard)',
+      },
+    };
+  }
+
+  /** @override */
+  constructor() {
+    super();
+    /** @private {?KeyboardObserverReceiver} */
+    this.receiver_ = null;
+
+    /** @private {?InputDataProviderInterface} */
+    this.inputDataProvider_ = null;
+
     this.addEventListener('keydown', this.onKeyDown.bind(this));
     this.addEventListener('keyup', this.onKeyUp.bind(this));
-  },
-
-  _template: html`{__html_template__}`,
-
-  behaviors: [I18nBehavior],
-
-  /** @private {?KeyboardObserverReceiver} */
-  receiver_: null,
-
-  /** @private {?InputDataProviderInterface} */
-  inputDataProvider_: null,
+  }
 
   /**
    * Set the InputDataProvider to get events from.
@@ -113,59 +181,7 @@
    */
   setInputDataProvider(provider) {
     this.inputDataProvider_ = provider;
-  },
-
-  properties: {
-    /**
-     * The keyboard being tested, or null if none is being tested at the moment.
-     * @type {?KeyboardInfo}
-     */
-    keyboard: KeyboardInfo,
-
-    /** @private */
-    layoutIsKnown_: {
-      type: Boolean,
-      computed: 'computeLayoutIsKnown_(keyboard)',
-    },
-
-    // TODO(crbug.com/1257138): use the proper type annotation instead of
-    // string.
-    /** @private {?string} */
-    diagramMechanicalLayout_: {
-      type: String,
-      computed: 'computeDiagramMechanicalLayout_(keyboard)',
-    },
-
-    // TODO(crbug.com/1257138): use the proper type annotation instead of
-    // string.
-    /** @private {?string} */
-    diagramPhysicalLayout_: {
-      type: String,
-      computed: 'computeDiagramPhysicalLayout_(keyboard)',
-    },
-
-    // TODO(crbug.com/1257138): use the proper type annotation instead of
-    // string.
-    /** @protected {?string} */
-    diagramTopRightKey_: {
-      type: String,
-      computed: 'computeDiagramTopRightKey_(keyboard)',
-    },
-
-    /** @private */
-    showNumberPad_: {
-      type: Boolean,
-      computed: 'computeShowNumberPad_(keyboard)',
-    },
-
-    // TODO(crbug.com/1257138): use the proper type annotation instead of
-    // Object.
-    /** @private {!Array<!Object>} */
-    topRowKeys_: {
-      type: Array,
-      computed: 'computeTopRowKeys_(keyboard)',
-    },
-  },
+  }
 
   /**
    * @param {?KeyboardInfo} keyboard
@@ -180,7 +196,7 @@
         keyboard.mechanicalLayout !== MechanicalLayout.kUnknown;
     // Number pad presence can be unknown, as we can adapt on the fly if we get
     // a number pad event we weren't expecting.
-  },
+  }
 
   /**
    * @param {?KeyboardInfo} keyboardInfo
@@ -198,7 +214,7 @@
       [MechanicalLayout.kIso]: DiagramMechanicalLayout.kIso,
       [MechanicalLayout.kJis]: DiagramMechanicalLayout.kJis,
     }[keyboardInfo.mechanicalLayout];
-  },
+  }
 
   /**
    * @param {?KeyboardInfo} keyboardInfo
@@ -218,7 +234,7 @@
       [PhysicalLayout.kChromeOSDellEnterpriseDrallion]:
           DiagramPhysicalLayout.kChromeOSDellEnterpriseDrallion,
     }[keyboardInfo.physicalLayout];
-  },
+  }
 
   /**
    * @param {?KeyboardInfo} keyboardInfo
@@ -236,7 +252,7 @@
       [TopRightKey.kLock]: DiagramTopRightKey.kLock,
       [TopRightKey.kControlPanel]: DiagramTopRightKey.kControlPanel,
     }[keyboardInfo.topRightKey];
-  },
+  }
 
   /**
    * @param {?KeyboardInfo} keyboard
@@ -246,7 +262,7 @@
   computeShowNumberPad_(keyboard) {
     return !!keyboard &&
         keyboard.numberPadPresent === NumberPadPresence.kPresent;
-  },
+  }
 
 
   /**
@@ -259,7 +275,7 @@
       return [];
     }
     return keyboard.topRowKeys.map((keyId) => topRowKeyMap[keyId]);
-  },
+  }
 
   /** Shows the tester's dialog. */
   show() {
@@ -269,12 +285,12 @@
     this.inputDataProvider_.observeKeyEvents(
         this.keyboard.id, this.receiver_.$.bindNewPipeAndPassRemote());
     this.$.dialog.showModal();
-  },
+  }
 
   onKeyUp(e) {
     e.preventDefault();
     e.stopPropagation();
-  },
+  }
 
   onKeyDown(e) {
     e.preventDefault();
@@ -284,7 +300,7 @@
     if (e.altKey && e.key === 'Escape') {
       this.close();
     }
-  },
+  }
 
   /**
    * Returns whether the tester is currently open.
@@ -292,18 +308,18 @@
    */
   isOpen() {
     return this.$.dialog.open;
-  },
+  }
 
   close() {
-    this.$$('#diagram').clearPressedKeys();
+    this.shadowRoot.querySelector('#diagram').clearPressedKeys();
     this.$.dialog.close();
-  },
+  }
 
   handleClose() {
     if (this.receiver_) {
       this.receiver_.$.close();
     }
-  },
+  }
 
   /**
    * Returns whether a key is part of the number pad on this keyboard layout.
@@ -320,14 +336,14 @@
     }
 
     return numberPadCodes.has(evdevCode);
-  },
+  }
 
   /**
    * Implements KeyboardObserver.OnKeyEvent.
    * @param {!KeyEvent} keyEvent
    */
   onKeyEvent(keyEvent) {
-    const diagram = this.$$('#diagram');
+    const diagram = this.shadowRoot.querySelector('#diagram');
     const state = keyEvent.type === KeyEventType.kPress ?
         KeyboardKeyState.kPressed :
         KeyboardKeyState.kTested;
@@ -363,16 +379,16 @@
 
       diagram.setKeyState(keyEvent.keyCode, state);
     }
-  },
+  }
 
   /**
    * Implements KeyboardObserver.OnKeyEventsPaused.
    */
   onKeyEventsPaused() {
     console.log('Key events paused');
-    this.$$('#diagram').clearPressedKeys();
+    this.shadowRoot.querySelector('#diagram').clearPressedKeys();
     this.$.lostFocusToast.show();
-  },
+  }
 
   /**
    * Implements KeyboardObserver.OnKeyEventsResumed.
@@ -380,5 +396,7 @@
   onKeyEventsResumed() {
     console.log('Key events resumed');
     this.$.lostFocusToast.hide();
-  },
-});
+  }
+}
+
+customElements.define(KeyboardTesterElement.is, KeyboardTesterElement);
diff --git a/ash/webui/diagnostics_ui/resources/memory_card.js b/ash/webui/diagnostics_ui/resources/memory_card.js
index 9381e40..0fd289e 100644
--- a/ash/webui/diagnostics_ui/resources/memory_card.js
+++ b/ash/webui/diagnostics_ui/resources/memory_card.js
@@ -12,9 +12,9 @@
 import './routine_section.js';
 import './strings.m.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {MemoryUsage, MemoryUsageObserverInterface, MemoryUsageObserverReceiver, RoutineType, SystemDataProviderInterface} from './diagnostics_types.js';
 import {convertKibToGibDecimalString, convertKibToMib} from './diagnostics_utils.js';
@@ -25,63 +25,81 @@
  * @fileoverview
  * 'memory-card' shows information about system memory.
  */
-Polymer({
-  is: 'memory-card',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const MemoryCardElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class MemoryCardElement extends MemoryCardElementBase {
+  static get is() {
+    return 'memory-card';
+  }
 
-  /**
-   * @private {?SystemDataProviderInterface}
-   */
-  systemDataProvider_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * Receiver responsible for observing memory usage.
-   * @private {?MemoryUsageObserverReceiver}
-   */
-  memoryUsageObserverReceiver_: null,
-
-  properties: {
-    /** @private {!Array<!RoutineType>} */
-    routines_: {
-      type: Array,
-      value: () => {
-        return [
-          RoutineType.kMemory,
-        ];
+  static get properties() {
+    return {
+      /** @private {!Array<!RoutineType>} */
+      routines_: {
+        type: Array,
+        value: () => {
+          return [
+            RoutineType.kMemory,
+          ];
+        },
       },
-    },
 
-    /** @private {!MemoryUsage} */
-    memoryUsage_: {
-      type: Object,
-    },
+      /** @private {!MemoryUsage} */
+      memoryUsage_: {
+        type: Object,
+      },
 
-    /** @type {!TestSuiteStatus} */
-    testSuiteStatus: {
-      type: Number,
-      value: TestSuiteStatus.kNotRunning,
-      notify: true,
-    },
+      /** @type {!TestSuiteStatus} */
+      testSuiteStatus: {
+        type: Number,
+        value: TestSuiteStatus.kNotRunning,
+        notify: true,
+      },
 
-    /** @type {boolean} */
-    isActive: {
-      type: Boolean,
-    },
-  },
+      /** @type {boolean} */
+      isActive: {
+        type: Boolean,
+      },
+
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+
+    /**
+     * @private {?SystemDataProviderInterface}
+     */
+    this.systemDataProvider_ = null;
+
+    /**
+     * Receiver responsible for observing memory usage.
+     * @private {?MemoryUsageObserverReceiver}
+     */
+    this.memoryUsageObserverReceiver_ = null;
+
     this.systemDataProvider_ = getSystemDataProvider();
     this.observeMemoryUsage_();
-  },
+  }
 
   /** @override */
-  detached() {
+  disconnectedCallback() {
+    super.disconnectedCallback();
+
     this.memoryUsageObserverReceiver_.$.close();
-  },
+  }
 
   /** @private */
   observeMemoryUsage_() {
@@ -93,7 +111,7 @@
 
     this.systemDataProvider_.observeMemoryUsage(
         this.memoryUsageObserverReceiver_.$.bindNewPipeAndPassRemote());
-  },
+  }
 
   /**
    * Implements MemoryUsageObserver.onMemoryUsageUpdated()
@@ -101,7 +119,7 @@
    */
   onMemoryUsageUpdated(memoryUsage) {
     this.memoryUsage_ = memoryUsage;
-  },
+  }
 
   /**
    * Calculates total used memory from MemoryUsage object.
@@ -111,7 +129,7 @@
    */
   getTotalUsedMemory_(memoryUsage) {
     return memoryUsage.totalMemoryKib - memoryUsage.availableMemoryKib;
-  },
+  }
 
   /**
    * Calculates total available memory from MemoryUsage object.
@@ -125,7 +143,7 @@
         'memoryAvailable',
         convertKibToGibDecimalString(this.memoryUsage_.availableMemoryKib, 2),
         convertKibToGibDecimalString(this.memoryUsage_.totalMemoryKib, 2));
-  },
+  }
 
   /**
    * Estimate the total runtime in minutes with kMicrosecondsPerByte = 0.2
@@ -138,7 +156,7 @@
     return this.memoryUsage_ ?
         Math.ceil(this.memoryUsage_.totalMemoryKib / 300000) :
         0;
-  },
+  }
 
   /**
    * @return {string}
@@ -148,5 +166,7 @@
     return convertKibToMib(this.memoryUsage_.availableMemoryKib) >= 500 ?
         '' :
         loadTimeData.getString('notEnoughAvailableMemoryMessage');
-  },
-});
+  }
+}
+
+customElements.define(MemoryCardElement.is, MemoryCardElement);
diff --git a/ash/webui/diagnostics_ui/resources/network_card.js b/ash/webui/diagnostics_ui/resources/network_card.js
index 679aa50..beec50b8 100644
--- a/ash/webui/diagnostics_ui/resources/network_card.js
+++ b/ash/webui/diagnostics_ui/resources/network_card.js
@@ -9,8 +9,8 @@
 import './network_info.js';
 import './network_troubleshooting.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.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 {Network, NetworkHealthProviderInterface, NetworkState, NetworkStateObserverInterface, NetworkStateObserverReceiver, NetworkType, TroubleshootingInfo} from './diagnostics_types.js';
 import {filterNameServers, formatMacAddress, getNetworkCardTitle, getNetworkState, getNetworkType, isConnectedOrOnline, isNetworkMissingNameServers} from './diagnostics_utils.js';
@@ -34,110 +34,130 @@
  * @fileoverview
  * 'network-card' is a styling wrapper for a network-info element.
  */
-Polymer({
-  is: 'network-card',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const NetworkCardElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class NetworkCardElement extends NetworkCardElementBase {
+  static get is() {
+    return 'network-card';
+  }
 
-  /**
-   * @private {?NetworkHealthProviderInterface}
-   */
-  networkHealthProvider_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * Receiver responsible for observing a single active network connection.
-   * @private {?NetworkStateObserverReceiver}
-   */
-  networkStateObserverReceiver_: null,
+  static get properties() {
+    return {
+      /** @type {string} */
+      guid: {
+        type: String,
+        value: '',
+      },
 
-  properties: {
-    /** @type {string} */
-    guid: {
-      type: String,
-      value: '',
-    },
+      /** @private {string} */
+      networkType_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private {string} */
-    networkType_: {
-      type: String,
-      value: '',
-    },
+      /** @private {string} */
+      networkState_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private {string} */
-    networkState_: {
-      type: String,
-      value: '',
-    },
+      /** @type {!Network} */
+      network: {
+        type: Object,
+      },
 
-    /** @type {!Network} */
-    network: {
-      type: Object,
-    },
+      /** @protected {boolean} */
+      showNetworkDataPoints_: {
+        type: Boolean,
+        computed: 'computeShouldShowNetworkDataPoints_(network.state,' +
+            ' unableToObtainIpAddress_, isMissingNameServers_)',
+      },
 
-    /** @protected {boolean} */
-    showNetworkDataPoints_: {
-      type: Boolean,
-      computed: 'computeShouldShowNetworkDataPoints_(network.state,' +
-          ' unableToObtainIpAddress_, isMissingNameServers_)',
-    },
+      /** @protected {boolean} */
+      showTroubleshootingCard_: {
+        type: Boolean,
+        value: false,
+      },
 
-    /** @protected {boolean} */
-    showTroubleshootingCard_: {
-      type: Boolean,
-      value: false,
-    },
+      /** @protected {string} */
+      macAddress_: {
+        type: String,
+        value: '',
+      },
 
-    /** @protected {string} */
-    macAddress_: {
-      type: String,
-      value: '',
-    },
+      /** @protected {boolean} */
+      unableToObtainIpAddress_: {
+        type: Boolean,
+        value: false,
+      },
 
-    /** @protected {boolean} */
-    unableToObtainIpAddress_: {
-      type: Boolean,
-      value: false,
-    },
+      /** @protected {TroubleshootingInfo} */
+      troubleshootingInfo_: {
+        type: Object,
+        computed: 'computeTroubleshootingInfo_(network.*,' +
+            ' unableToObtainIpAddress_, isMissingNameServers_)',
+      },
 
-    /** @protected {TroubleshootingInfo} */
-    troubleshootingInfo_: {
-      type: Object,
-      computed: 'computeTroubleshootingInfo_(network.*,' +
-          ' unableToObtainIpAddress_, isMissingNameServers_)',
-    },
+      /** @private */
+      timerId_: {
+        type: Number,
+        value: -1,
+      },
 
-    /** @private */
-    timerId_: {
-      type: Number,
-      value: -1,
-    },
+      /** @private */
+      timeoutInMs_: {
+        type: Number,
+        value: 30000,
+      },
 
-    /** @private */
-    timeoutInMs_: {
-      type: Number,
-      value: 30000,
-    },
+      /** @protected {boolean} */
+      isMissingNameServers_: {
+        type: Boolean,
+        value: false,
+      },
 
-    /** @protected {boolean} */
-    isMissingNameServers_: {
-      type: Boolean,
-      value: false,
-    },
-  },
+    };
+  }
 
-  observers: ['observeNetwork_(guid)'],
+  static get observers() {
+    return ['observeNetwork_(guid)'];
+  }
+
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+    /**
+     * @private {?NetworkHealthProviderInterface}
+     */
+    this.networkHealthProvider_ = null;
+
+    /**
+     * Receiver responsible for observing a single active network connection.
+     * @private {?NetworkStateObserverReceiver}
+     */
+    this.networkStateObserverReceiver_ = null;
+
     this.networkHealthProvider_ = getNetworkHealthProvider();
-  },
+  }
 
   /** @override */
-  detached() {
+  disconnectedCallback() {
+    super.disconnectedCallback();
+
     this.resetTimer_();
-  },
+  }
 
   /** @private */
   observeNetwork_() {
@@ -166,7 +186,7 @@
     this.networkHealthProvider_.observeNetwork(
         this.networkStateObserverReceiver_.$.bindNewPipeAndPassRemote(),
         this.guid);
-  },
+  }
 
   /**
    * Implements NetworkStateObserver.onNetworkStateChanged
@@ -197,7 +217,7 @@
         this.unableToObtainIpAddress_ = true;
       }, this.timeoutInMs_);
     }
-  },
+  }
 
   /**
    * @protected
@@ -205,7 +225,7 @@
    */
   getNetworkCardTitle_() {
     return getNetworkCardTitle(this.networkType_, this.networkState_);
-  },
+  }
 
   /**
    * @protected
@@ -231,7 +251,7 @@
       default:
         return false;
     }
-  },
+  }
 
   /**
    * @protected
@@ -239,7 +259,7 @@
    */
   isNetworkDisabled_() {
     return this.network.state === NetworkState.kDisabled;
-  },
+  }
 
   /**
    * @protected
@@ -250,7 +270,7 @@
       return '';
     }
     return formatMacAddress(this.macAddress_);
-  },
+  }
 
   /**
    * @private
@@ -266,7 +286,7 @@
       linkText,
       url: SETTINGS_URL,
     };
-  },
+  }
 
   /**
    * @private
@@ -278,7 +298,7 @@
       linkText: this.i18n('troubleConnecting'),
       url: BASE_SUPPORT_URL,
     };
-  },
+  }
 
   /**
    * @private
@@ -330,7 +350,7 @@
     this.showTroubleshootingCard_ = true;
     return this.getInfoProperties_(
         /** @type {!TroubleshootingState} */ (troubleshootingState));
-  },
+  }
 
   /**
    * @private
@@ -342,7 +362,7 @@
       linkText: this.i18n('visitSettingsToConfigureLinkText'),
       url: SETTINGS_URL,
     };
-  },
+  }
 
   /**
    * @private
@@ -354,7 +374,7 @@
       linkText: this.i18n('visitSettingsToConfigureLinkText'),
       url: SETTINGS_URL,
     };
-  },
+  }
 
   /**
    * @private
@@ -378,7 +398,7 @@
           url: '',
         };
     }
-  },
+  }
 
   /** @private */
   resetTimer_() {
@@ -386,5 +406,7 @@
       clearTimeout(this.timerId_);
       this.timerId_ = -1;
     }
-  },
-});
+  }
+}
+
+customElements.define(NetworkCardElement.is, NetworkCardElement);
diff --git a/ash/webui/diagnostics_ui/resources/network_info.js b/ash/webui/diagnostics_ui/resources/network_info.js
index 8a0bbb4..0308dde 100644
--- a/ash/webui/diagnostics_ui/resources/network_info.js
+++ b/ash/webui/diagnostics_ui/resources/network_info.js
@@ -7,7 +7,7 @@
 import './ethernet_info.js';
 import './wifi_info.js';
 
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {Network, NetworkType} from './diagnostics_types.js';
 
@@ -16,17 +16,26 @@
  * 'network-info' is responsible for displaying specialized data points for a
  * supported network type (Ethernet, WiFi, Cellular).
  */
-Polymer({
-  is: 'network-info',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class NetworkInfoElement extends PolymerElement {
+  static get is() {
+    return 'network-info';
+  }
 
-  properties: {
-    /** @type {!Network} */
-    network: {
-      type: Object,
-    },
-  },
+  static get template() {
+    return html`{__html_template__}`;
+  }
+
+  static get properties() {
+    return {
+      /** @type {!Network} */
+      network: {
+        type: Object,
+      },
+
+    };
+  }
 
   /**
    * @protected
@@ -34,7 +43,7 @@
    */
   isWifiNetwork_() {
     return this.network.type === NetworkType.kWiFi;
-  },
+  }
 
   /**
    * @protected
@@ -42,7 +51,7 @@
    */
   isCellularNetwork_() {
     return this.network.type === NetworkType.kCellular;
-  },
+  }
 
   /**
    * @protected
@@ -50,5 +59,7 @@
    */
   isEthernetNetwork_() {
     return this.network.type === NetworkType.kEthernet;
-  },
-});
+  }
+}
+
+customElements.define(NetworkInfoElement.is, NetworkInfoElement);
diff --git a/ash/webui/diagnostics_ui/resources/network_list.js b/ash/webui/diagnostics_ui/resources/network_list.js
index 012ab839..68d18022 100644
--- a/ash/webui/diagnostics_ui/resources/network_list.js
+++ b/ash/webui/diagnostics_ui/resources/network_list.js
@@ -7,9 +7,9 @@
 import './icons.js';
 import './network_card.js';
 
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {afterNextRender, html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {afterNextRender, html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {DiagnosticsBrowserProxy, DiagnosticsBrowserProxyImpl} from './diagnostics_browser_proxy.js';
 import {NetworkHealthProviderInterface, NetworkListObserverInterface, NetworkListObserverReceiver} from './diagnostics_types.js';
@@ -21,71 +21,88 @@
  * 'network-list' is responsible for displaying Ethernet, Cellular,
  *  and WiFi networks.
  */
-Polymer({
-  is: 'network-list',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const NetworkListElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class NetworkListElement extends NetworkListElementBase {
+  static get is() {
+    return 'network-list';
+  }
 
-  /** @private {?DiagnosticsBrowserProxy} */
-  browserProxy_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * @private {?NetworkHealthProviderInterface}
-   */
-  networkHealthProvider_: null,
+  static get properties() {
+    return {
+      /** @type {!TestSuiteStatus} */
+      testSuiteStatus: {
+        type: Number,
+        value: TestSuiteStatus.kNotRunning,
+      },
 
-  /**
-   * Receiver responsible for observing active network guids.
-   * @private {?NetworkListObserverReceiver}
-   */
-  networkListObserverReceiver_: null,
+      /** @private {Array<?string>} */
+      otherNetworkGuids_: {
+        type: Array,
+        value: () => [],
+      },
 
-  properties: {
-    /** @type {!TestSuiteStatus} */
-    testSuiteStatus: {
-      type: Number,
-      value: TestSuiteStatus.kNotRunning,
-    },
+      /** @private {string} */
+      activeGuid_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private {Array<?string>} */
-    otherNetworkGuids_: {
-      type: Array,
-      value: () => [],
-    },
+      /** @type {boolean} */
+      isActive: {
+        type: Boolean,
+        value: true,
+      },
 
-    /** @private {string} */
-    activeGuid_: {
-      type: String,
-      value: '',
-    },
+      /** @protected {boolean} */
+      isLoggedIn_: {
+        type: Boolean,
+        value: loadTimeData.getBoolean('isLoggedIn'),
+      },
 
-    /** @type {boolean} */
-    isActive: {
-      type: Boolean,
-      value: true,
-    },
-
-    /** @protected {boolean} */
-    isLoggedIn_: {
-      type: Boolean,
-      value: loadTimeData.getBoolean('isLoggedIn'),
-    },
-  },
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+    /** @private {?DiagnosticsBrowserProxy} */
+    this.browserProxy_ = null;
+
+    /**
+     * @private {?NetworkHealthProviderInterface}
+     */
+    this.networkHealthProvider_ = null;
+
+    /**
+     * Receiver responsible for observing active network guids.
+     * @private {?NetworkListObserverReceiver}
+     */
+    this.networkListObserverReceiver_ = null;
+
     this.browserProxy_ = DiagnosticsBrowserProxyImpl.getInstance();
     this.browserProxy_.initialize();
     this.networkHealthProvider_ = getNetworkHealthProvider();
     this.observeNetworkList_();
-  },
+  }
 
   /** @override */
-  detached() {
+  disconnectedCallback() {
+    super.disconnectedCallback();
+
     this.networkListObserverReceiver_.$.close();
-  },
+  }
 
   /** @private */
   observeNetworkList_() {
@@ -98,7 +115,7 @@
 
     this.networkHealthProvider_.observeNetworkList(
         this.networkListObserverReceiver_.$.bindNewPipeAndPassRemote());
-  },
+  }
 
   /**
    * Implements NetworkListObserver.onNetworkListChanged
@@ -111,7 +128,7 @@
     // a network-card for it.
     this.otherNetworkGuids_ = networkGuids.filter(guid => guid !== activeGuid);
     this.activeGuid_ = activeGuid;
-  },
+  }
 
   /**
    * 'navigation-view-panel' is responsible for calling this function when
@@ -127,10 +144,14 @@
       // fallback to focusing the element's main container.
       afterNextRender(this, () => {
         if (this.activeGuid_) {
-          this.$$('connectivity-card').$$('#cardTitle').focus();
+          this.shadowRoot.querySelector('connectivity-card')
+              .shadowRoot.querySelector('#cardTitle')
+              .focus();
           return;
         } else if (this.otherNetworkGuids_.length > 0) {
-          this.$$('network-card').$$('#cardTitle').focus();
+          this.shadowRoot.querySelector('network-card')
+              .shadowRoot.querySelector('#cardTitle')
+              .focus();
           return;
         }
         this.$.networkListContainer.focus();
@@ -139,10 +160,12 @@
       // to avoid duplicate code in all navigatable pages.
       this.browserProxy_.recordNavigation('connectivity');
     }
-  },
+  }
 
   /** @protected */
   getSettingsString_() {
     return this.i18nAdvanced('settingsLinkText');
-  },
-});
+  }
+}
+
+customElements.define(NetworkListElement.is, NetworkListElement);
diff --git a/ash/webui/diagnostics_ui/resources/overview_card.js b/ash/webui/diagnostics_ui/resources/overview_card.js
index d3794402..c7e484c2 100644
--- a/ash/webui/diagnostics_ui/resources/overview_card.js
+++ b/ash/webui/diagnostics_ui/resources/overview_card.js
@@ -5,54 +5,59 @@
 import './diagnostics_shared_css.js';
 
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {SystemDataProviderInterface, SystemInfo} from './diagnostics_types.js';
 import {getSystemDataProvider} from './mojo_interface_provider.js';
 
-
 /**
  * @fileoverview
  * 'overview-card' shows an overview of system information such
  * as CPU type, version, board name, and memory.
  */
-Polymer({
-  is: 'overview-card',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class OverviewCardElement extends PolymerElement {
+  static get is() {
+    return 'overview-card';
+  }
 
-  /**
-   * @private {?SystemDataProviderInterface}
-   */
-  systemDataProvider_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  properties: {
-    /** @private {!SystemInfo} */
-    systemInfo_: {
-      type: Object,
-    },
+  static get properties() {
+    return {
+      /** @private {!SystemInfo} */
+      systemInfo_: {
+        type: Object,
+      },
 
-    /** @private {string} */
-    deviceInfo_: {
-      type: String,
-      value: '',
-      computed: 'getDeviceInfo_(systemInfo_.versionInfo.fullVersionString,' +
-          'systemInfo_.boardName)',
-    },
-  },
+      /** @private {string} */
+      deviceInfo_: {
+        type: String,
+        value: '',
+        computed: 'getDeviceInfo_(systemInfo_.versionInfo.fullVersionString,' +
+            'systemInfo_.boardName)',
+      },
+
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+
     this.systemDataProvider_ = getSystemDataProvider();
     this.fetchSystemInfo_();
-  },
+  }
 
   /** @private */
   fetchSystemInfo_() {
     this.systemDataProvider_.getSystemInfo().then((result) => {
       this.onSystemInfoReceived_(result.systemInfo);
     });
-  },
+  }
 
   /**
    * @param {!SystemInfo} systemInfo
@@ -60,7 +65,7 @@
    */
   onSystemInfoReceived_(systemInfo) {
     this.systemInfo_ = systemInfo;
-  },
+  }
 
   /** @private */
   getDeviceInfo_() {
@@ -80,7 +85,7 @@
             'boardAndVersionInfo', this.systemInfo_.boardName, version) :
         loadTimeData.getStringF('versionInfo', version);
     return marketingNameValid ? `(${deviceInfo})` : deviceInfo;
-  },
+  }
 
   /**
    * @protected
@@ -89,5 +94,7 @@
   shouldHideMarketingName_() {
     return this.systemInfo_.marketingName === 'TBD' ||
         this.systemInfo_.marketingName === '';
-  },
-});
+  }
+}
+
+customElements.define(OverviewCardElement.is, OverviewCardElement);
diff --git a/ash/webui/diagnostics_ui/resources/percent_bar_chart.js b/ash/webui/diagnostics_ui/resources/percent_bar_chart.js
index 4fdd9d62..2783369 100644
--- a/ash/webui/diagnostics_ui/resources/percent_bar_chart.js
+++ b/ash/webui/diagnostics_ui/resources/percent_bar_chart.js
@@ -9,36 +9,45 @@
 import './strings.m.js';
 
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
  * @fileoverview
  * 'percent-bar-chart' is a styling wrapper for paper-progress used to display a
  * percentage based bar chart.
  */
-Polymer({
-  is: 'percent-bar-chart',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class PercentBarChartElement extends PolymerElement {
+  static get is() {
+    return 'percent-bar-chart';
+  }
 
-  properties: {
-    /** @type {string} */
-    header: {
-      type: String,
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /** @type {number} */
-    value: {
-      type: Number,
-      value: 0,
-    },
+  static get properties() {
+    return {
+      /** @type {string} */
+      header: {
+        type: String,
+      },
 
-    /** @type {number} */
-    max: {
-      type: Number,
-      value: 100,
-    },
-  },
+      /** @type {number} */
+      value: {
+        type: Number,
+        value: 0,
+      },
+
+      /** @type {number} */
+      max: {
+        type: Number,
+        value: 100,
+      },
+
+    };
+  }
 
   /**
    * Get adjusted value clamped to max value. paper-progress breaks for a while
@@ -48,5 +57,7 @@
    */
   getAdjustedValue_() {
     return this.value <= this.max ? this.value : this.max;
-  },
-});
+  }
+}
+
+customElements.define(PercentBarChartElement.is, PercentBarChartElement);
diff --git a/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.js b/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.js
index 2ec5ad0..450bf17 100644
--- a/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.js
+++ b/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.js
@@ -6,143 +6,158 @@
 import './diagnostics_shared_css.js';
 import './strings.m.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {isNavEnabled} from './diagnostics_utils.js';
 
 /**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const RealtimeCpuChartElementBase =
+    mixinBehaviors([I18nBehavior], PolymerElement);
+
+/**
  * @fileoverview
  * 'realtime-cpu-chart' is a moving stacked area graph component used to display
  * a realtime cpu usage information.
  */
-Polymer({
-  is: 'realtime-cpu-chart',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class RealtimeCpuChartElement extends RealtimeCpuChartElementBase {
+  static get is() {
+    return 'realtime-cpu-chart';
+  }
 
-  behaviors: [I18nBehavior],
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * Helper function to map range of x coordinates to graph width.
-   * @private {?d3.LinearScale}
-   */
-  xAxisScaleFn_: null,
+  static get properties() {
+    return {
+      /** @type {number} */
+      user: {
+        type: Number,
+        value: 0,
+      },
 
-  /**
-   * Helper function to map range of y coordinates to graph height.
-   * @private {?d3.LinearScale}
-   */
-  yAxisScaleFn_: null,
+      /** @type {number} */
+      system: {
+        type: Number,
+        value: 0,
+      },
 
-  /** @private {!Array<!Object>} */
-  data_: [],
+      /** @private {number} */
+      numDataPoints_: {
+        type: Number,
+        value: 50,
+      },
 
-  /**
-   * DOMHighResTimeStamp of last graph render.
-   * @private {number}
-   */
-  lastRender_: 0,
+      /**
+       * @private {number}
+       */
+      dataRefreshPerSecond_: {
+        type: Number,
+        value: 2,
+      },
 
-  /**
-   * Current render frame out of this.framesPerSecond_.
-   * @private {number}
-   */
-  currentFrame_: 0,
+      /**
+       * Chart rendering frames per second.
+       * Strongly preferred to be multiples of dataRefreshPerSecond_. If not,
+       * there will be a small (hard to notice) jittering at every data refresh.
+       * @private {number}
+       */
+      framesPerSecond_: {
+        type: Number,
+        value: 30,
+      },
 
-  /**
-   * Y-Values where we should mark ticks for the y-axis on the left.
-   * @private {!Array<number>}
-   */
-  yAxisTicks_: [0, 25, 50, 75, 100],
+      /**
+       * Duration of each frame in milliseconds
+       * @private {number}
+       */
+      frameDuration_: {
+        readOnly: true,
+        type: Number,
+        computed: 'getFrameDuration_(dataRefreshPerSecond_, framesPerSecond_)',
+      },
 
-  properties: {
-    /** @type {number} */
-    user: {
-      type: Number,
-      value: 0,
-    },
+      /** @private {number} */
+      width_: {
+        type: Number,
+        value: 560,
+      },
 
-    /** @type {number} */
-    system: {
-      type: Number,
-      value: 0,
-    },
+      /** @private {number} */
+      height_: {
+        type: Number,
+        value: 114,
+      },
 
-    /** @private {number} */
-    numDataPoints_: {
-      type: Number,
-      value: 50,
-    },
+      /** @private {!Object} */
+      padding_: {
+        type: Object,
+        value: {top: 10, right: 5, bottom: 8, left: 50, tick: 10},
+      },
 
-    /**
-     * @private {number}
-     */
-    dataRefreshPerSecond_: {
-      type: Number,
-      value: 2,
-    },
+      /** @private {number} */
+      graphWidth_: {
+        readOnly: true,
+        type: Number,
+        computed: 'getGraphDimension_(width_, padding_.left, padding_.right)',
+      },
 
-    /**
-     * Chart rendering frames per second.
-     * Strongly preferred to be multiples of dataRefreshPerSecond_. If not,
-     * there will be a small (hard to notice) jittering at every data refresh.
-     * @private {number}
-     */
-    framesPerSecond_: {
-      type: Number,
-      value: 30,
-    },
+      /** @private {number} */
+      graphHeight_: {
+        readOnly: true,
+        type: Number,
+        computed: 'getGraphDimension_(height_, padding_.top, padding_.bottom)',
+      },
 
-    /**
-     * Duration of each frame in milliseconds
-     * @private {number}
-     */
-    frameDuration_: {
-      readOnly: true,
-      type: Number,
-      computed: 'getFrameDuration_(dataRefreshPerSecond_, framesPerSecond_)',
-    },
-
-    /** @private {number} */
-    width_: {
-      type: Number,
-      value: 560,
-    },
-
-    /** @private {number} */
-    height_: {
-      type: Number,
-      value: 114,
-    },
-
-    /** @private {!Object} */
-    padding_: {
-      type: Object,
-      value: {top: 10, right: 5, bottom: 8, left: 50, tick: 10},
-    },
-
-    /** @private {number} */
-    graphWidth_: {
-      readOnly: true,
-      type: Number,
-      computed: 'getGraphDimension_(width_, padding_.left, padding_.right)',
-    },
-
-    /** @private {number} */
-    graphHeight_: {
-      readOnly: true,
-      type: Number,
-      computed: 'getGraphDimension_(height_, padding_.top, padding_.bottom)',
-    },
-  },
-
-  observers: ['setScaling_(graphWidth_)'],
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+    /**
+     * Helper function to map range of x coordinates to graph width.
+     * @private {?d3.LinearScale}
+     */
+    this.xAxisScaleFn_ = null;
+
+    /**
+     * Helper function to map range of y coordinates to
+     * graph height.
+     * @private {?d3.LinearScale}
+     */
+    this.yAxisScaleFn_ = null;
+
+    /** @private {!Array<!Object>} */
+    this.data_ = [];
+
+    /**
+     * DOMHighResTimeStamp of last graph render.
+     * @private {number}
+     */
+    this.lastRender_ = 0;
+
+    /**
+     * Current render frame out of this.framesPerSecond_.
+     * @private {number}
+     */
+    this.currentFrame_ = 0;
+
+    /**
+     * Y-Values where we should mark ticks for the y-axis on the left.
+     * @private {!Array<number>}
+     */
+    this.yAxisTicks_ = [0, 25, 50, 75, 100];
+
     // Initialize the data array with data outside the chart boundary.
     // Note that with side nav DOM manipulation, created() isn't guaranteed to
     // be called only once.
@@ -150,25 +165,31 @@
     for (let i = 0; i < this.numDataPoints_; ++i) {
       this.data_.push({user: -1, system: -1});
     }
-  },
+  }
+
+  static get observers() {
+    return ['setScaling_(graphWidth_)'];
+  }
 
   /** @override */
   ready() {
+    super.ready();
     this.setScaling_();
     this.initializeChart_();
     window.addEventListener('resize', () => this.updateChartWidth_());
 
     // Set the initial chart width.
     this.updateChartWidth_();
-  },
+  }
 
   /** @private */
   updateChartWidth_() {
     // parseFloat() is used to convert the string returned by
     // getComputedStyleValue() into a number ("642px" --> 642).
     const chartVar = isNavEnabled() ? '--chart-width-nav' : '--chart-width';
-    this.width_ = parseFloat(this.getComputedStyleValue(chartVar));
-  },
+    this.width_ =
+        parseFloat(window.getComputedStyle(this).getPropertyValue(chartVar));
+  }
 
   /**
    * Calculate the duration of each frame in milliseconds.
@@ -180,7 +201,7 @@
     assert(this.framesPerSecond_ > 0);
     assert(this.framesPerSecond_ % this.dataRefreshPerSecond_ === 0);
     return 1000 / (this.framesPerSecond_ / this.dataRefreshPerSecond_);
-  },
+  }
 
   /**
    * Get actual graph dimensions after accounting for margins.
@@ -191,7 +212,7 @@
    */
   getGraphDimension_(base, ...margins) {
     return margins.reduce(((acc, margin) => acc - margin), base);
-  },
+  }
 
   /**
    * Sets scaling functions that convert data -> svg coordinates.
@@ -215,7 +236,7 @@
 
     // Draw the y-axis legend and also draw the horizontal gridlines by
     // reversing the ticks back into the chart body.
-    const chartGroup = d3.select(this.$$('#chartGroup'));
+    const chartGroup = d3.select(this.shadowRoot.querySelector('#chartGroup'));
     chartGroup.select('#gridLines')
         .call(
             d3.axisLeft(/** @type {!d3.LinearScale} */ (this.yAxisScaleFn_))
@@ -225,18 +246,18 @@
                 .tickSize(-this.graphWidth_),  // Extend the ticks into the
                                                // entire graph as gridlines.
         );
-  },
+  }
 
   /** @private */
   initializeChart_() {
-    const chartGroup = d3.select(this.$$('#chartGroup'));
+    const chartGroup = d3.select(this.shadowRoot.querySelector('#chartGroup'));
 
     // Position chartGroup inside the margin.
     chartGroup.attr(
         'transform',
         'translate(' + this.padding_.left + ',' + this.padding_.top + ')');
 
-    const plotGroup = d3.select(this.$$('#plotGroup'));
+    const plotGroup = d3.select(this.shadowRoot.querySelector('#plotGroup'));
 
     // Feed data array to the plot group.
     plotGroup.datum(this.data_);
@@ -256,7 +277,7 @@
     // Draw initial data and kick off the rendering process.
     this.getDataSnapshotAndRedraw_();
     this.render_(0);
-  },
+  }
 
   /**
    * @param {string} areaClass class string for <path> element.
@@ -276,7 +297,7 @@
         .y1(data => this.yAxisScaleFn_(
                 areaClass === 'system-area' ? data.system :
                                               data.system + data.user));
-  },
+  }
 
   /**
    * Takes a snapshot of current CPU readings and appends to the data array for
@@ -287,11 +308,12 @@
     this.data_.push({user: this.user, system: this.system});
     this.data_.shift();
 
-    const userArea = assert(this.$$(`path.user-area`));
-    const systemArea = assert(this.$$(`path.system-area`));
+    const userArea = assert(this.shadowRoot.querySelector(`path.user-area`));
+    const systemArea =
+        assert(this.shadowRoot.querySelector(`path.system-area`));
     d3.select(userArea).attr('d', this.getAreaDefinition_('user-area'));
     d3.select(systemArea).attr('d', this.getAreaDefinition_('system-area'));
-  },
+  }
 
   /**
    * @param {number} timeStamp Current time based on DOMHighResTimeStamp.
@@ -310,8 +332,9 @@
         this.getDataSnapshotAndRedraw_();
       }
 
-      const userArea = assert(this.$$(`path.user-area`));
-      const systemArea = assert(this.$$(`path.system-area`));
+      const userArea = assert(this.shadowRoot.querySelector(`path.user-area`));
+      const systemArea =
+          assert(this.shadowRoot.querySelector(`path.system-area`));
 
       // Calculate the new position. Use this.currentFrame_ + 1 since on frame
       // 0, it is already at position 0.
@@ -327,7 +350,7 @@
 
     // Request another frame.
     requestAnimationFrame((timeStamp) => this.render_(timeStamp));
-  },
+  }
 
   /**
    * @param {number} value of percentage.
@@ -336,5 +359,7 @@
    */
   getPercentageLabel_(value) {
     return loadTimeData.getStringF('percentageLabel', value);
-  },
-});
+  }
+}
+
+customElements.define(RealtimeCpuChartElement.is, RealtimeCpuChartElement);
diff --git a/ash/webui/diagnostics_ui/resources/routine_result_entry.js b/ash/webui/diagnostics_ui/resources/routine_result_entry.js
index da7873c..3dd8106 100644
--- a/ash/webui/diagnostics_ui/resources/routine_result_entry.js
+++ b/ash/webui/diagnostics_ui/resources/routine_result_entry.js
@@ -9,7 +9,7 @@
 import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {RoutineResult, RoutineType, StandardRoutineResult} from './diagnostics_types.js';
 import {getRoutineFailureMessage} from './diagnostics_utils.js';
@@ -101,70 +101,83 @@
  * @fileoverview
  * 'routine-result-entry' shows the status of a single test routine or group.
  */
-Polymer({
-  is: 'routine-result-entry',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class RoutineResultEntryElement extends PolymerElement {
+  static get is() {
+    return 'routine-result-entry';
+  }
 
-  properties: {
-    /**
-     * Added to support testing of announce behavior.
-     * @private
-     * @type {string}
-     */
-    announcedText_: {
-      type: String,
-      value: '',
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /** @type {RoutineGroup|ResultStatusItem} */
-    item: {
-      type: Object,
-    },
+  static get properties() {
+    return {
+      /**
+       * Added to support testing of announce behavior.
+       * @private
+       * @type {string}
+       */
+      announcedText_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private */
-    routineType_: {
-      type: String,
-      computed: 'getRunningRoutineString_(item.*)',
-    },
+      /** @type {RoutineGroup|ResultStatusItem} */
+      item: {
+        type: Object,
+      },
 
-    /** @protected {!BadgeType} */
-    badgeType_: {
-      type: String,
-      value: BadgeType.QUEUED,
-    },
+      /** @private */
+      routineType_: {
+        type: String,
+        computed: 'getRunningRoutineString_(item.*)',
+      },
 
-    /** @protected {string} */
-    badgeText_: {
-      type: String,
-      value: '',
-    },
+      /** @protected {!BadgeType} */
+      badgeType_: {
+        type: String,
+        value: BadgeType.QUEUED,
+      },
 
-    /** @protected {boolean} */
-    testCompleted_: {
-      type: Boolean,
-      value: false,
-    },
+      /** @protected {string} */
+      badgeText_: {
+        type: String,
+        value: '',
+      },
 
-    /** @type {boolean} */
-    hideVerticalLines: {
-      type: Boolean,
-      value: false,
-    },
+      /** @protected {boolean} */
+      testCompleted_: {
+        type: Boolean,
+        value: false,
+      },
 
-    /** @type {boolean} */
-    usingRoutineGroups: {
-      type: Boolean,
-      value: false,
-    },
-  },
+      /** @type {boolean} */
+      hideVerticalLines: {
+        type: Boolean,
+        value: false,
+      },
 
-  observers: ['entryStatusChanged_(item.*)'],
+      /** @type {boolean} */
+      usingRoutineGroups: {
+        type: Boolean,
+        value: false,
+      },
+
+    };
+  }
+
+  static get observers() {
+    return ['entryStatusChanged_(item.*)'];
+  }
 
   /** @override */
-  attached() {
+  connectedCallback() {
+    super.connectedCallback();
+
     IronA11yAnnouncer.requestAvailability();
-  },
+  }
 
   /**
    * Get the localized string name for the routine.
@@ -177,7 +190,7 @@
 
     return loadTimeData.getStringF(
         'routineEntryText', getRoutineType(this.item.routine));
-  },
+  }
 
   /**
    * @private
@@ -231,7 +244,7 @@
       default:
         assertNotReached();
     }
-  },
+  }
 
   /**
    * @param {!BadgeType} badgeType
@@ -240,16 +253,24 @@
    */
   setBadgeTypeAndText_(badgeType, badgeText) {
     this.setProperties({badgeType_: badgeType, badgeText_: badgeText});
-  },
+  }
 
   /** @override */
-  created() {},
+  constructor() {
+    super();
+  }
 
   /** @private */
   announceRoutineStatus_() {
     this.announcedText_ = this.routineType_ + ' - ' + this.badgeText_;
-    this.fire('iron-announce', {text: `${this.announcedText_}`});
-  },
+    this.dispatchEvent(new CustomEvent('iron-announce', {
+      bubbles: true,
+      composed: true,
+      detail: {
+        text: this.announcedText_,
+      },
+    }));
+  }
 
   /**
    * @protected
@@ -277,7 +298,7 @@
         return '';
     }
     return `line animation-${num} ${lineColor}`;
-  },
+  }
 
   /**
    * @protected
@@ -285,7 +306,7 @@
    */
   shouldHideLines_() {
     return this.hideVerticalLines || !this.testCompleted_;
-  },
+  }
 
   /**
    * @protected
@@ -297,5 +318,7 @@
     }
 
     return getRoutineFailureMessage(this.item.failedTest);
-  },
-});
+  }
+}
+
+customElements.define(RoutineResultEntryElement.is, RoutineResultEntryElement);
diff --git a/ash/webui/diagnostics_ui/resources/routine_result_list.js b/ash/webui/diagnostics_ui/resources/routine_result_list.js
index cee581b..d4d0848 100644
--- a/ash/webui/diagnostics_ui/resources/routine_result_list.js
+++ b/ash/webui/diagnostics_ui/resources/routine_result_list.js
@@ -7,7 +7,8 @@
 import './routine_result_entry.js';
 
 import {assert} from 'chrome://resources/js/assert.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
 import {RoutineType} from './diagnostics_types.js';
 import {RoutineGroup} from './routine_group.js';
 import {ExecutionProgress, ResultStatusItem} from './routine_list_executor.js';
@@ -16,45 +17,54 @@
  * @fileoverview
  * 'routine-result-list' shows a list of routine result entries.
  */
-Polymer({
-  is: 'routine-result-list',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class RoutineResultListElement extends PolymerElement {
+  static get is() {
+    return 'routine-result-list';
+  }
 
-  properties: {
-    /** @private {!Array<RoutineGroup|ResultStatusItem>} */
-    results_: {
-      type: Array,
-      value: () => [],
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /** @type {boolean} */
-    hidden: {
-      type: Boolean,
-      value: false,
-    },
+  static get properties() {
+    return {
+      /** @private {!Array<RoutineGroup|ResultStatusItem>} */
+      results_: {
+        type: Array,
+        value: () => [],
+      },
 
-    /** @type {boolean} */
-    hideVerticalLines: {
-      type: Boolean,
-      value: false,
-    },
+      /** @type {boolean} */
+      hidden: {
+        type: Boolean,
+        value: false,
+      },
 
-    /** @type {boolean} */
-    usingRoutineGroups: {
-      type: Boolean,
-      value: false,
-    },
+      /** @type {boolean} */
+      hideVerticalLines: {
+        type: Boolean,
+        value: false,
+      },
 
-    /**
-     * Only used with routine groups.
-     * @type {boolean}
-     */
-    ignoreRoutineStatusUpdates: {
-      type: Boolean,
-      value: false,
-    },
-  },
+      /** @type {boolean} */
+      usingRoutineGroups: {
+        type: Boolean,
+        value: false,
+      },
+
+      /**
+       * Only used with routine groups.
+       * @type {boolean}
+       */
+      ignoreRoutineStatusUpdates: {
+        type: Boolean,
+        value: false,
+      },
+
+    };
+  }
 
   /**
    * Resets the list and creates a new list with all routines in the unstarted
@@ -69,14 +79,14 @@
     } else {
       this.addRoutines_(routines);
     }
-  },
+  }
 
   /**
    * Removes all the routines from the list.
    */
   clearRoutines() {
     this.splice('results_', 0, this.results_.length);
-  },
+  }
 
   /**
    * Creates a list of unstarted routines.
@@ -86,7 +96,7 @@
     for (const routine of routines) {
       this.push('results_', new ResultStatusItem(routine));
     }
-  },
+  }
 
   /**
    * Updates the routine's status in the results_ list.
@@ -97,7 +107,7 @@
   updateRoutineStatus_(index, status) {
     assert(index < this.results_.length);
     this.splice('results_', index, 1, status);
-  },
+  }
 
   /**
    * Receives the callback from RoutineListExecutor whenever the status of a
@@ -130,7 +140,7 @@
         return;
       }
     });
-  },
+  }
 
   /**
    * @protected
@@ -140,7 +150,7 @@
   shouldHideVerticalLines_({value}) {
     return this.hideVerticalLines ||
         value === this.results_[this.results_.length - 1];
-  },
+  }
 
   /**
    * When a test in a routine group fails, we stop sending status updates to the
@@ -154,15 +164,14 @@
         this.updateRoutineStatus_(i, routineGroup.clone());
       }
     });
-  },
+  }
 
   /**
    * Called from 'routine-section' after all routines have finished running.
    */
   resetIgnoreStatusUpdatesFlag() {
     this.ignoreRoutineStatusUpdates = false;
-  },
+  }
+}
 
-  /** @override */
-  created() {},
-});
+customElements.define(RoutineResultListElement.is, RoutineResultListElement);
diff --git a/ash/webui/diagnostics_ui/resources/routine_section.js b/ash/webui/diagnostics_ui/resources/routine_section.js
index a7fa2dc..b6d7297 100644
--- a/ash/webui/diagnostics_ui/resources/routine_section.js
+++ b/ash/webui/diagnostics_ui/resources/routine_section.js
@@ -12,221 +12,246 @@
 import './text_badge.js';
 import './strings.m.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {PowerRoutineResult, RoutineType, StandardRoutineResult, SystemRoutineControllerInterface} from './diagnostics_types.js';
 import {getSystemRoutineController} from './mojo_interface_provider.js';
 import {RoutineGroup} from './routine_group.js';
 import {ExecutionProgress, ResultStatusItem, RoutineListExecutor, TestSuiteStatus} from './routine_list_executor.js';
 import {getRoutineType, getSimpleResult} from './routine_result_entry.js';
+import {RoutineResultListElement} from './routine_result_list.js';
 import {BadgeType} from './text_badge.js';
-
 /**
  * @fileoverview
  * 'routine-section' has a button to run tests and displays their results. The
  * parent element eg. a CpuCard binds to the routines property to indicate
  * which routines this instance will run.
  */
-Polymer({
-  is: 'routine-section',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const RoutineSectionElementBase =
+    mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class RoutineSectionElement extends RoutineSectionElementBase {
+  static get is() {
+    return 'routine-section';
+  }
 
-  /**
-   * @private {?RoutineListExecutor}
-   */
-  executor_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * Boolean whether last run had at least one failure,
-   * @type {?RoutineType}
-   * @private
-   */
-  failedTest_: null,
+  static get properties() {
+    return {
+      /**
+       * Added to support testing of announce behavior.
+       * @private
+       * @type {string}
+       */
+      announcedText_: {
+        type: String,
+        value: '',
+      },
 
-  /** @private {?SystemRoutineControllerInterface} */
-  systemRoutineController_: null,
+      /** @type {!Array<RoutineGroup|RoutineType>} */
+      routines: {
+        type: Array,
+        value: () => [],
+      },
 
-  properties: {
+      /**
+       * Total time in minutes of estimate runtime based on routines array.
+       * @type {number}
+       */
+      routineRuntime: {
+        type: Number,
+        value: 0,
+      },
+
+      /**
+       * Timestamp of when routine test started execution in milliseconds.
+       * @private {number}
+       */
+      routineStartTimeMs_: {
+        type: Number,
+        value: -1,
+      },
+
+      /**
+       * Overall ExecutionProgress of the routine.
+       * @type {!ExecutionProgress}
+       * @private
+       */
+      executionStatus_: {
+        type: Number,
+        value: ExecutionProgress.kNotStarted,
+      },
+
+      /**
+       * Name of currently running test
+       * @private {string}
+       */
+      currentTestName_: {
+        type: String,
+        value: '',
+      },
+
+      /** @type {!TestSuiteStatus} */
+      testSuiteStatus: {
+        type: Number,
+        value: TestSuiteStatus.kNotRunning,
+        notify: true,
+      },
+
+      /** @type {boolean} */
+      isPowerRoutine: {
+        type: Boolean,
+        value: false,
+      },
+
+      /** @private {?PowerRoutineResult} */
+      powerRoutineResult_: {
+        type: Object,
+        value: null,
+      },
+
+      /** @type {string} */
+      runTestsButtonText: {
+        type: String,
+        value: '',
+      },
+
+      /** @type {string} */
+      additionalMessage: {
+        type: String,
+        value: '',
+      },
+
+      /** @type {string} */
+      learnMoreLinkSection: {
+        type: String,
+        value: '',
+      },
+
+      /** @private {!BadgeType} */
+      badgeType_: {
+        type: String,
+        value: BadgeType.RUNNING,
+      },
+
+      /** @private {string} */
+      badgeText_: {
+        type: String,
+        value: '',
+      },
+
+      /** @private {string} */
+      statusText_: {
+        type: String,
+        value: '',
+      },
+
+      /** @private {boolean} */
+      isLoggedIn_: {
+        type: Boolean,
+        value: loadTimeData.getBoolean('isLoggedIn'),
+      },
+
+      /** @type {string} */
+      bannerMessage: {
+        type: Boolean,
+        value: '',
+      },
+
+      /** @type {boolean} */
+      isActive: {
+        type: Boolean,
+      },
+
+      /**
+       * Used to reset run button text to its initial state
+       * when a navigation page change event occurs.
+       *  @private {string}
+       */
+      initialButtonText_: {
+        type: String,
+        value: '',
+        computed: 'getInitialButtonText_(runTestsButtonText)',
+      },
+
+      /** @type {boolean} */
+      hideRoutineStatus: {
+        type: Boolean,
+        value: false,
+        reflectToAttribute: true,
+      },
+
+      /** @type {boolean} */
+      opened: {
+        type: Boolean,
+        value: false,
+      },
+
+      /** @type {boolean} */
+      hideVerticalLines: {
+        type: Boolean,
+        value: false,
+      },
+
+      /** @type {boolean} */
+      usingRoutineGroups: {
+        type: Boolean,
+        value: false,
+        computed: 'getUsingRoutineGroupsVal_(routines.*)',
+      },
+
+    };
+  }
+
+  static get observers() {
+    return [
+      'routineStatusChanged_(executionStatus_, currentTestName_,' +
+          'additionalMessage)',
+      'onActivePageChanged_(isActive)',
+
+    ];
+  }
+  /** @override */
+  constructor() {
+    super();
     /**
-     * Added to support testing of announce behavior.
-     * @private
-     * @type {string}
+     * @private {?RoutineListExecutor}
      */
-    announcedText_: {
-      type: String,
-      value: '',
-    },
-
-    /** @type {!Array<RoutineGroup|RoutineType>} */
-    routines: {
-      type: Array,
-      value: () => [],
-    },
+    this.executor_ = null;
 
     /**
-     * Total time in minutes of estimate runtime based on routines array.
-     * @type {number}
-     */
-    routineRuntime: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * Timestamp of when routine test started execution in milliseconds.
-     * @private {number}
-     */
-    routineStartTimeMs_: {
-      type: Number,
-      value: -1,
-    },
-
-    /**
-     * Overall ExecutionProgress of the routine.
-     * @type {!ExecutionProgress}
+     * Boolean whether last run had at least one failure,
+     * @type {?RoutineType}
      * @private
      */
-    executionStatus_: {
-      type: Number,
-      value: ExecutionProgress.kNotStarted,
-    },
+    this.failedTest_ = null;
 
-    /**
-     * Name of currently running test
-     * @private {string}
-     */
-    currentTestName_: {
-      type: String,
-      value: '',
-    },
-
-    /** @type {!TestSuiteStatus} */
-    testSuiteStatus: {
-      type: Number,
-      value: TestSuiteStatus.kNotRunning,
-      notify: true,
-    },
-
-    /** @type {boolean} */
-    isPowerRoutine: {
-      type: Boolean,
-      value: false,
-    },
-
-    /** @private {?PowerRoutineResult} */
-    powerRoutineResult_: {
-      type: Object,
-      value: null,
-    },
-
-    /** @type {string} */
-    runTestsButtonText: {
-      type: String,
-      value: '',
-    },
-
-    /** @type {string} */
-    additionalMessage: {
-      type: String,
-      value: '',
-    },
-
-    /** @type {string} */
-    learnMoreLinkSection: {
-      type: String,
-      value: '',
-    },
-
-    /** @private {!BadgeType} */
-    badgeType_: {
-      type: String,
-      value: BadgeType.RUNNING,
-    },
-
-    /** @private {string} */
-    badgeText_: {
-      type: String,
-      value: '',
-    },
-
-    /** @private {string} */
-    statusText_: {
-      type: String,
-      value: '',
-    },
-
-    /** @private {boolean} */
-    isLoggedIn_: {
-      type: Boolean,
-      value: loadTimeData.getBoolean('isLoggedIn'),
-    },
-
-    /** @type {string} */
-    bannerMessage: {
-      type: Boolean,
-      value: '',
-    },
-
-    /** @type {boolean} */
-    isActive: {
-      type: Boolean,
-    },
-
-    /**
-     * Used to reset run button text to its initial state
-     * when a navigation page change event occurs.
-     *  @private {string}
-     */
-    initialButtonText_: {
-      type: String,
-      value: '',
-      computed: 'getInitialButtonText_(runTestsButtonText)',
-    },
-
-    /** @type {boolean} */
-    hideRoutineStatus: {
-      type: Boolean,
-      value: false,
-      reflectToAttribute: true,
-    },
-
-    /** @type {boolean} */
-    opened: {
-      type: Boolean,
-      value: false,
-    },
-
-    /** @type {boolean} */
-    hideVerticalLines: {
-      type: Boolean,
-      value: false,
-    },
-
-    /** @type {boolean} */
-    usingRoutineGroups: {
-      type: Boolean,
-      value: false,
-      computed: 'getUsingRoutineGroupsVal_(routines.*)',
-    },
-  },
-
-  observers: [
-    'routineStatusChanged_(executionStatus_, currentTestName_,' +
-        'additionalMessage)',
-    'onActivePageChanged_(isActive)',
-  ],
+    /** @private {?SystemRoutineControllerInterface} */
+    this.systemRoutineController_ = null;
+    this.hasTestFailure_ = false;
+    this.ignoreRoutineStatusUpdates = false;
+  }
 
   /** @override */
-  attached() {
+  connectedCallback() {
+    super.connectedCallback();
+
     IronA11yAnnouncer.requestAvailability();
-  },
+  }
 
   /**
    * @param {string} buttonText
@@ -235,7 +260,7 @@
    */
   getInitialButtonText_(buttonText) {
     return this.initialButtonText_ || buttonText;
-  },
+  }
 
   /**
    * @return {boolean}
@@ -246,13 +271,13 @@
       return false;
     }
     return this.routines[0] instanceof RoutineGroup;
-  },
+  }
 
   /** @private */
   getResultListElem_() {
     return /** @type {!RoutineResultListElement} */ (
-        this.$$('routine-result-list'));
-  },
+        this.shadowRoot.querySelector('routine-result-list'));
+  }
 
 
   /**
@@ -266,7 +291,7 @@
         routine =>
             supported.routines.includes(/** @type {!RoutineType} */ (routine)));
     return filteredRoutineTypes;
-  },
+  }
 
   /**
    *  @private
@@ -284,7 +309,7 @@
       }
     }
     return filteredRoutineGroups;
-  },
+  }
 
   async runTests() {
     // Do not attempt to run tests when no routines available to run.
@@ -342,14 +367,20 @@
         clearInterval(remainingTimeUpdaterId);
       }
     }
-  },
+  }
 
   /** @private */
   announceRoutinesComplete_() {
     this.announcedText_ =
         loadTimeData.getString('testOnRoutinesCompletedText');
-    this.fire('iron-announce', {text: `${this.announcedText_}`});
-  },
+    this.dispatchEvent(new CustomEvent('iron-announce', {
+      bubbles: true,
+      composed: true,
+      detail: {
+        text: this.announcedText_,
+      },
+    }));
+  }
 
   /** @param {!ExecutionProgress} status */
   handleRoutinesCompletedStatus_(status) {
@@ -369,7 +400,7 @@
           loadTimeData.getString('testSucceededBadgeText');
       this.announceRoutinesComplete_();
     }
-  },
+  }
 
   /**
    * @param {!ResultStatusItem} status
@@ -400,7 +431,7 @@
     this.executionStatus_ = status.progress;
 
     resultListElem.onStatusUpdate.call(resultListElem, status);
-  },
+  }
 
   /** @private */
   cleanUp_() {
@@ -414,19 +445,19 @@
     }
 
     this.systemRoutineController_ = null;
-  },
+  }
 
   stopTests() {
     if (this.executor_) {
       this.executor_.cancel();
     }
-  },
+  }
 
   /** @private */
   onToggleReportClicked_() {
     // Toggle report list visibility
     this.$.collapse.toggle();
-  },
+  }
 
   /** @protected */
   onLearnMoreClicked_() {
@@ -435,24 +466,24 @@
     assert(this.learnMoreLinkSection);
 
     window.open(baseSupportUrl + this.learnMoreLinkSection);
-  },
+  }
 
   /** @protected */
   isResultButtonHidden_() {
     return this.shouldHideReportList_() ||
         this.executionStatus_ === ExecutionProgress.kNotStarted;
-  },
+  }
 
   /** @protected */
   isLearnMoreHidden_() {
     return !this.shouldHideReportList_() || !this.isLoggedIn_ ||
         this.executionStatus_ !== ExecutionProgress.kCompleted;
-  },
+  }
 
   /** @protected */
   isStatusHidden_() {
     return this.executionStatus_ === ExecutionProgress.kNotStarted;
-  },
+  }
 
   /**
    * @param {boolean} opened Whether the section is expanded or not.
@@ -461,7 +492,7 @@
    */
   getReportToggleButtonText_(opened) {
     return loadTimeData.getString(opened ? 'hideReportText' : 'seeReportText');
-  },
+  }
 
   /**
    * Sets status texts for remaining runtime while the routine runs.
@@ -490,7 +521,7 @@
     this.badgeText_ = timeRemainingInMin <= 1 ?
         loadTimeData.getString('routineRemainingMinFinal') :
         loadTimeData.getStringF('routineRemainingMin', timeRemainingInMin);
-  },
+  }
 
   /** @protected */
   routineStatusChanged_() {
@@ -525,7 +556,7 @@
       default:
         assertNotReached();
     }
-  },
+  }
 
   /**
    * @private
@@ -540,7 +571,7 @@
         'percentageLabel', this.powerRoutineResult_.percentChange.toFixed(2));
     return loadTimeData.getStringF(
         stringId, percentText, this.powerRoutineResult_.timeElapsedSeconds);
-  },
+  }
 
   /**
    * @param {!BadgeType} badgeType
@@ -552,7 +583,7 @@
       badgeType_: badgeType,
       statusText_: statusText,
     });
-  },
+  }
 
   /**
    * @protected
@@ -560,7 +591,7 @@
    */
   isTestRunning_() {
     return this.testSuiteStatus === TestSuiteStatus.kRunning;
-  },
+  }
 
   /**
    * @protected
@@ -569,7 +600,7 @@
   isRunTestsButtonHidden_() {
     return this.isTestRunning_() &&
         this.executionStatus_ === ExecutionProgress.kRunning;
-  },
+  }
 
   /**
    * @protected
@@ -577,7 +608,7 @@
    */
   isStopTestsButtonHidden_() {
     return this.executionStatus_ !== ExecutionProgress.kRunning;
-  },
+  }
 
   /**
    * @protected
@@ -585,7 +616,7 @@
    */
   isRunTestsButtonDisabled_() {
     return this.isTestRunning_() || this.additionalMessage != '';
-  },
+  }
 
   /**
    * @protected
@@ -593,7 +624,7 @@
    */
   shouldHideReportList_() {
     return this.routines.length < 2;
-  },
+  }
 
   /**
    * @protected
@@ -601,7 +632,7 @@
    */
   isAdditionalMessageHidden_() {
     return this.additionalMessage == '';
-  },
+  }
 
   /**
    * @private
@@ -612,13 +643,13 @@
       composed: true,
       detail: {message: this.bannerMessage},
     }));
-  },
+  }
 
   /** @private */
   dismissCautionBanner_() {
     this.dispatchEvent(new CustomEvent(
         'dismiss-caution-banner', {bubbles: true, composed: true}));
-  },
+  }
 
   /** @private */
   resetRoutineState_() {
@@ -630,7 +661,7 @@
     this.executionStatus_ = ExecutionProgress.kNotStarted;
     this.$.collapse.hide();
     this.ignoreRoutineStatusUpdates = false;
-  },
+  }
 
   /**
    * If the page is active, check if we should run the routines
@@ -644,7 +675,7 @@
       this.resetRoutineState_();
       return;
     }
-  },
+  }
 
   /**
    * @protected
@@ -652,15 +683,14 @@
    */
   isLearnMoreButtonHidden_() {
     return !this.isLoggedIn_ || this.hideRoutineStatus;
-  },
+  }
 
   /** @override */
-  detached() {
+  disconnectedCallback() {
+    super.disconnectedCallback();
+
     this.cleanUp_();
-  },
-
-  /** @override */
-  created() {},
+  }
 
   /**
    * @protected
@@ -668,5 +698,7 @@
    */
   hideRoutineSection() {
     return this.routines.length === 0;
-  },
-});
+  }
+}
+
+customElements.define(RoutineSectionElement.is, RoutineSectionElement);
diff --git a/ash/webui/diagnostics_ui/resources/system_page.js b/ash/webui/diagnostics_ui/resources/system_page.js
index 14122e4..d1328022 100644
--- a/ash/webui/diagnostics_ui/resources/system_page.js
+++ b/ash/webui/diagnostics_ui/resources/system_page.js
@@ -13,10 +13,10 @@
 import './memory_card.js';
 import './overview_card.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {DiagnosticsBrowserProxy, DiagnosticsBrowserProxyImpl} from './diagnostics_browser_proxy.js';
 import {SystemDataProviderInterface, SystemInfo} from './diagnostics_types.js';
@@ -28,93 +28,99 @@
  * 'system-page' is the main page for viewing telemetric system information
  * and running diagnostic tests.
  */
-Polymer({
-  is: 'system-page',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const SystemPageElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class SystemPageElement extends SystemPageElementBase {
+  static get is() {
+    return 'system-page';
+  }
 
-  /**
-   * @private {?SystemDataProviderInterface}
-   */
-  systemDataProvider_: null,
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-  /**
-   * @private {?DiagnosticsBrowserProxy}
-   */
-  browserProxy_: null,
+  static get properties() {
+    return {
+      /** @protected {boolean} */
+      saveSessionLogEnabled_: {
+        type: Boolean,
+        value: true,
+      },
 
-  properties: {
-    /** @protected {boolean} */
-    saveSessionLogEnabled_: {
-      type: Boolean,
-      value: true,
-    },
+      /** @private {boolean} */
+      showBatteryStatusCard_: {
+        type: Boolean,
+        value: false,
+      },
 
-    /** @private {boolean} */
-    showBatteryStatusCard_: {
-      type: Boolean,
-      value: false,
-    },
+      /** @type {!TestSuiteStatus} */
+      testSuiteStatus: {
+        type: Number,
+        value: TestSuiteStatus.kNotRunning,
+      },
 
-    /** @type {!TestSuiteStatus} */
-    testSuiteStatus: {
-      type: Number,
-      value: TestSuiteStatus.kNotRunning,
-    },
+      /** @type {boolean} */
+      systemInfoReceived_: {
+        type: Boolean,
+        value: false,
+      },
 
-    /** @type {boolean} */
-    systemInfoReceived_: {
-      type: Boolean,
-      value: false,
-    },
+      /** @private {string} */
+      toastText_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private {string} */
-    toastText_: {
-      type: String,
-      value: '',
-    },
+      /** @private {boolean} */
+      isLoggedIn_: {
+        type: Boolean,
+        value: loadTimeData.getBoolean('isLoggedIn'),
+      },
 
-    /** @private {boolean} */
-    isLoggedIn_: {
-      type: Boolean,
-      value: loadTimeData.getBoolean('isLoggedIn'),
-    },
+      /** @type {string} */
+      bannerMessage: {
+        type: String,
+        value: '',
+      },
 
-    /** @type {string} */
-    bannerMessage: {
-      type: String,
-      value: '',
-    },
+      /** @private {string} */
+      scrollingClass_: {
+        type: String,
+        value: '',
+      },
 
-    /** @private {string} */
-    scrollingClass_: {
-      type: String,
-      value: '',
-    },
+      /** @private {number} */
+      scrollTimerId_: {
+        type: Number,
+        value: -1,
+      },
 
-    /** @private {number} */
-    scrollTimerId_: {
-      type: Number,
-      value: -1,
-    },
+      /** @type {boolean} */
+      isActive: {
+        type: Boolean,
+        value: true,
+      },
 
-    /** @type {boolean} */
-    isActive: {
-      type: Boolean,
-      value: true,
-    },
+      /** @type {boolean} */
+      isNetworkingEnabled: {
+        type: Boolean,
+        value: loadTimeData.getBoolean('isNetworkingEnabled'),
+      },
 
-    /** @type {boolean} */
-    isNetworkingEnabled: {
-      type: Boolean,
-      value: loadTimeData.getBoolean('isNetworkingEnabled'),
-    },
-  },
+    };
+  }
 
   /** @override */
-  created() {
+  constructor() {
+    super();
+
     this.systemDataProvider_ = getSystemDataProvider();
     this.fetchSystemInfo_();
     this.browserProxy_ = DiagnosticsBrowserProxyImpl.getInstance();
@@ -124,7 +130,7 @@
     if (!this.isNetworkingEnabled) {
       this.addCautionBannerEventListeners_();
     }
-  },
+  }
 
   /** @private */
   fetchSystemInfo_() {
@@ -132,7 +138,7 @@
       this.onSystemInfoReceived_(result.systemInfo);
     });
     setTimeout(() => this.recordLateSystemInfo_(), 3000);
-  },
+  }
 
   /**
    * @param {!SystemInfo} systemInfo
@@ -141,7 +147,7 @@
   onSystemInfoReceived_(systemInfo) {
     this.systemInfoReceived_ = true;
     this.showBatteryStatusCard_ = systemInfo.deviceCapabilities.hasBattery;
-  },
+  }
 
   /**
    * @private
@@ -150,7 +156,7 @@
     if (!this.systemInfoReceived_) {
       console.warn('system info not received within three seconds.');
     }
-  },
+  }
 
   /** @protected */
   onSessionLogClick_() {
@@ -172,7 +178,7 @@
         .finally(() => {
           this.saveSessionLogEnabled_ = true;
         });
-  },
+  }
 
   /** @private */
   addCautionBannerEventListeners_() {
@@ -201,7 +207,7 @@
       this.scrollTimerId_ =
           window.setTimeout(() => this.scrollingClass_ = '', 300);
     });
-  },
+  }
 
   /**
    * 'navigation-view-panel' is responsible for calling this function when
@@ -213,12 +219,14 @@
     this.isActive = isActive;
     if (isActive) {
       // Focus the topmost system page element.
-      this.$$('#overviewCard').$$('#overviewCardContainer').focus();
+      this.shadowRoot.querySelector('#overviewCard')
+          .shadowRoot.querySelector('#overviewCardContainer')
+          .focus();
       // TODO(ashleydp): Remove when a call can be made at a higher component
       // to avoid duplicate code in all navigatable pages.
       this.browserProxy_.recordNavigation('system');
     }
-  },
+  }
 
   /**
    * @protected
@@ -227,5 +235,7 @@
   getCardContainerClass_() {
     const cardContainer = 'diagnostics-cards-container';
     return `${cardContainer}${this.isNetworkingEnabled ? '-nav' : ''}`;
-  },
-});
+  }
+}
+
+customElements.define(SystemPageElement.is, SystemPageElement);
diff --git a/ash/webui/diagnostics_ui/resources/text_badge.js b/ash/webui/diagnostics_ui/resources/text_badge.js
index e5f6bab5..e570a1a 100644
--- a/ash/webui/diagnostics_ui/resources/text_badge.js
+++ b/ash/webui/diagnostics_ui/resources/text_badge.js
@@ -4,7 +4,7 @@
 
 import './diagnostics_shared_css.js';
 
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
  * Badge style class type.
@@ -24,28 +24,39 @@
  * @fileoverview
  * 'text-badge' displays a text-based rounded badge.
  */
-Polymer({
-  is: 'text-badge',
 
-  _template: html`{__html_template__}`,
+/** @polymer */
+export class TextBadgeElement extends PolymerElement {
+  static get is() {
+    return 'text-badge';
+  }
 
-  properties: {
-    /** @type {!BadgeType} */
-    badgeType: {
-      type: String,
-      value: BadgeType.QUEUED,
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /** @type {string} */
-    value: {
-      type: String,
-      value: '',
-    },
+  static get properties() {
+    return {
+      /** @type {!BadgeType} */
+      badgeType: {
+        type: String,
+        value: BadgeType.QUEUED,
+      },
 
-    /** @type {boolean} */
-    hidden: {
-      type: Boolean,
-      value: false,
-    },
-  },
-});
+      /** @type {string} */
+      value: {
+        type: String,
+        value: '',
+      },
+
+      /** @type {boolean} */
+      hidden: {
+        type: Boolean,
+        value: false,
+      },
+
+    };
+  }
+}
+
+customElements.define(TextBadgeElement.is, TextBadgeElement);
diff --git a/ash/webui/diagnostics_ui/resources/wifi_info.js b/ash/webui/diagnostics_ui/resources/wifi_info.js
index 3523a53..a945f7ec 100644
--- a/ash/webui/diagnostics_ui/resources/wifi_info.js
+++ b/ash/webui/diagnostics_ui/resources/wifi_info.js
@@ -5,10 +5,10 @@
 import './data_point.js';
 import './diagnostics_shared_css.js';
 
+import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {assertNotReached} from 'chrome://resources/js/assert.m.js';
-import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {Network, SecurityType} from './diagnostics_types.js';
 import {getSignalStrength, getSubnetMaskFromRoutingPrefix} from './diagnostics_utils.js';
@@ -19,38 +19,52 @@
  * 'wifi-info' is responsible for displaying data points related
  * to a WiFi network.
  */
-Polymer({
-  is: 'wifi-info',
 
-  _template: html`{__html_template__}`,
+/**
+ * @constructor
+ * @extends {PolymerElement}
+ * @implements {I18nBehaviorInterface}
+ */
+const WifiInfoElementBase = mixinBehaviors([I18nBehavior], PolymerElement);
 
-  behaviors: [I18nBehavior],
+/** @polymer */
+export class WifiInfoElement extends WifiInfoElementBase {
+  static get is() {
+    return 'wifi-info';
+  }
 
-  properties: {
-    /** @type {!Network} */
-    network: {
-      type: Object,
-    },
+  static get template() {
+    return html`{__html_template__}`;
+  }
 
-    /**
-     * @protected
-     * @type {string}
-     */
-    security_: {
-      type: String,
-      computed: 'computeSecurity_(network.typeProperties.wifi.security)',
-    },
+  static get properties() {
+    return {
+      /** @type {!Network} */
+      network: {
+        type: Object,
+      },
 
-    /**
-     * @protected
-     * @type {string}
-     */
-    signalStrength_: {
-      type: String,
-      computed:
-          'computeSignalStrength_(network.typeProperties.wifi.signalStrength)',
-    },
-  },
+      /**
+       * @protected
+       * @type {string}
+       */
+      security_: {
+        type: String,
+        computed: 'computeSecurity_(network.typeProperties.wifi.security)',
+      },
+
+      /**
+       * @protected
+       * @type {string}
+       */
+      signalStrength_: {
+        type: String,
+        computed: 'computeSignalStrength_(network.typeProperties.wifi.' +
+            'signalStrength)',
+      },
+
+    };
+  }
 
   /**
    * Builds channel text based frequency conversion. If value of frequency is
@@ -69,7 +83,7 @@
     const channel = convertFrequencyToChannel(frequency);
     const ghz = (frequency / 1000).toFixed(3);
     return `${channel || '?'} (${ghz} GHz)`;
-  },
+  }
 
   /**
    * @protected
@@ -95,7 +109,7 @@
         assertNotReached();
         return '';
     }
-  },
+  }
 
   /**
    * @return {string}
@@ -105,5 +119,7 @@
       return getSignalStrength(this.network.typeProperties.wifi.signalStrength);
     }
     return '';
-  },
-});
+  }
+}
+
+customElements.define(WifiInfoElement.is, WifiInfoElement);
diff --git a/ash/webui/network_ui/network_diagnostics_resource_provider.cc b/ash/webui/network_ui/network_diagnostics_resource_provider.cc
index 5d90717..9ada553 100644
--- a/ash/webui/network_ui/network_diagnostics_resource_provider.cc
+++ b/ash/webui/network_ui/network_diagnostics_resource_provider.cc
@@ -140,16 +140,11 @@
 };
 
 constexpr WebUiResource kResources[] = {
-    {"test_canceled.png",
-     IDR_CR_COMPONENTS_CHROMEOS_NETWORK_HEALTH_TEST_CANCELED_PNG},
-    {"test_failed.png",
-     IDR_CR_COMPONENTS_CHROMEOS_NETWORK_HEALTH_TEST_FAILED_PNG},
-    {"test_not_run.png",
-     IDR_CR_COMPONENTS_CHROMEOS_NETWORK_HEALTH_TEST_NOT_RUN_PNG},
-    {"test_passed.png",
-     IDR_CR_COMPONENTS_CHROMEOS_NETWORK_HEALTH_TEST_PASSED_PNG},
-    {"test_warning.png",
-     IDR_CR_COMPONENTS_CHROMEOS_NETWORK_HEALTH_TEST_WARNING_PNG},
+    {"test_canceled.png", IDR_ASH_COMMON_NETWORK_HEALTH_TEST_CANCELED_PNG},
+    {"test_failed.png", IDR_ASH_COMMON_NETWORK_HEALTH_TEST_FAILED_PNG},
+    {"test_not_run.png", IDR_ASH_COMMON_NETWORK_HEALTH_TEST_NOT_RUN_PNG},
+    {"test_passed.png", IDR_ASH_COMMON_NETWORK_HEALTH_TEST_PASSED_PNG},
+    {"test_warning.png", IDR_ASH_COMMON_NETWORK_HEALTH_TEST_WARNING_PNG},
 };
 
 struct StringMap {
diff --git a/base/allocator/partition_allocator/page_allocator_constants.h b/base/allocator/partition_allocator/page_allocator_constants.h
index f2eea974..de43af7 100644
--- a/base/allocator/partition_allocator/page_allocator_constants.h
+++ b/base/allocator/partition_allocator/page_allocator_constants.h
@@ -77,7 +77,7 @@
   // compiled for 64kB are likely to work on 4kB systems, 64kB is a good choice
   // here.
   return 16;  // 64kB
-#elif defined(_MIPS_ARCH_LOONGSON)
+#elif defined(_MIPS_ARCH_LOONGSON) || defined(ARCH_CPU_LOONG64)
   return 14;  // 16kB
 #elif BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)
   return static_cast<size_t>(vm_page_shift);
diff --git a/base/allocator/partition_allocator/partition_alloc_constants.h b/base/allocator/partition_allocator/partition_alloc_constants.h
index cbd5270..0e4c9d6 100644
--- a/base/allocator/partition_allocator/partition_alloc_constants.h
+++ b/base/allocator/partition_allocator/partition_alloc_constants.h
@@ -80,7 +80,7 @@
 // other constant values, we pack _all_ `PartitionRoot::Alloc` sizes perfectly
 // up against the end of a system page.
 
-#if defined(_MIPS_ARCH_LOONGSON)
+#if defined(_MIPS_ARCH_LOONGSON) || defined(ARCH_CPU_LOONG64)
 PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR PA_ALWAYS_INLINE size_t
 PartitionPageShift() {
   return 16;  // 64 KiB
diff --git a/base/ios/ios_util.mm b/base/ios/ios_util.mm
index 42b585f4..c13fa47 100644
--- a/base/ios/ios_util.mm
+++ b/base/ios/ios_util.mm
@@ -14,15 +14,6 @@
 
 namespace {
 
-// Return a 3 elements array containing the major, minor and bug fix version of
-// the OS.
-const int32_t* OSVersionAsArray() {
-  int32_t* digits = new int32_t[3];
-  base::SysInfo::OperatingSystemVersionNumbers(
-      &digits[0], &digits[1], &digits[2]);
-  return digits;
-}
-
 std::string* g_icudtl_path_override = nullptr;
 
 }  // namespace
@@ -51,13 +42,27 @@
 }
 
 bool IsRunningOnOrLater(int32_t major, int32_t minor, int32_t bug_fix) {
-  static const int32_t* current_version = OSVersionAsArray();
-  int32_t version[] = {major, minor, bug_fix};
-  for (size_t i = 0; i < std::size(version); i++) {
-    if (current_version[i] != version[i])
-      return current_version[i] > version[i];
-  }
-  return true;
+  static const class OSVersion {
+   public:
+    OSVersion() {
+      SysInfo::OperatingSystemVersionNumbers(
+          &current_version_[0], &current_version_[1], &current_version_[2]);
+    }
+
+    bool IsRunningOnOrLater(int32_t version[3]) const {
+      for (size_t i = 0; i < std::size(current_version_); ++i) {
+        if (current_version_[i] != version[i])
+          return current_version_[i] > version[i];
+      }
+      return true;
+    }
+
+   private:
+    int32_t current_version_[3];
+  } kOSVersion;
+
+  int32_t version[3] = {major, minor, bug_fix};
+  return kOSVersion.IsRunningOnOrLater(version);
 }
 
 bool IsInForcedRTL() {
diff --git a/base/message_loop/message_pump_win.cc b/base/message_loop/message_pump_win.cc
index 646dcfb..8744621f 100644
--- a/base/message_loop/message_pump_win.cc
+++ b/base/message_loop/message_pump_win.cc
@@ -770,7 +770,8 @@
                           item.handler->io_handler_location())));
       });
 
-  item.handler->OnIOCompleted(item.context, item.bytes_transfered, item.error);
+  item.handler.ExtractAsDangling()->OnIOCompleted(
+      item.context.ExtractAsDangling(), item.bytes_transfered, item.error);
 
   return true;
 }
diff --git a/base/rand_util.h b/base/rand_util.h
index 16fd612..a701698 100644
--- a/base/rand_util.h
+++ b/base/rand_util.h
@@ -30,6 +30,10 @@
 void ConfigureBoringSSLBackedRandBytesFieldTrial();
 #endif
 
+// Returns a random double in range [0, 1). For use in allocator shim to avoid
+// infinite recursion. Thread-safe.
+BASE_EXPORT double RandDoubleAvoidAllocation();
+
 }  // namespace internal
 
 // Returns a random number in range [0, UINT64_MAX]. Thread-safe.
diff --git a/base/rand_util_fuchsia.cc b/base/rand_util_fuchsia.cc
index 9c7a824..953d9caf 100644
--- a/base/rand_util_fuchsia.cc
+++ b/base/rand_util_fuchsia.cc
@@ -50,4 +50,15 @@
   zx_cprng_draw(output, output_length);
 }
 
+namespace internal {
+
+double RandDoubleAvoidAllocation() {
+  uint64_t number;
+  zx_cprng_draw(&number, sizeof(number));
+  // This transformation is explained in rand_util.cc.
+  return (number >> 11) * 0x1.0p-53;
+}
+
+}  // namespace internal
+
 }  // namespace base
diff --git a/base/rand_util_posix.cc b/base/rand_util_posix.cc
index 120eeb8d..10a9f7f 100644
--- a/base/rand_util_posix.cc
+++ b/base/rand_util_posix.cc
@@ -171,10 +171,12 @@
 
 }  // namespace internal
 
-void RandBytes(void* output, size_t output_length) {
+namespace {
+
+void RandBytes(void* output, size_t output_length, bool avoid_allocation) {
 #if !BUILDFLAG(IS_NACL)
   // The BoringSSL experiment takes priority over everything else.
-  if (internal::UseBoringSSLForRandBytes()) {
+  if (!avoid_allocation && internal::UseBoringSSLForRandBytes()) {
     // Ensure BoringSSL is initialized so it can use things like RDRAND.
     CRYPTO_library_init();
     // BoringSSL's RAND_bytes always returns 1. Any error aborts the program.
@@ -185,7 +187,7 @@
 #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
      BUILDFLAG(IS_ANDROID)) &&                        \
     !BUILDFLAG(IS_NACL)
-  if (UseGetrandom()) {
+  if (avoid_allocation || UseGetrandom()) {
     // On Android it is mandatory to check that the kernel _version_ has the
     // support for a syscall before calling. The same check is made on Linux and
     // ChromeOS to avoid making a syscall that predictably returns ENOSYS.
@@ -212,6 +214,23 @@
   CHECK(success);
 }
 
+}  // namespace
+
+namespace internal {
+
+double RandDoubleAvoidAllocation() {
+  uint64_t number;
+  RandBytes(&number, sizeof(number), /*avoid_allocation=*/true);
+  // This transformation is explained in rand_util.cc.
+  return (number >> 11) * 0x1.0p-53;
+}
+
+}  // namespace internal
+
+void RandBytes(void* output, size_t output_length) {
+  RandBytes(output, output_length, /*avoid_allocation=*/false);
+}
+
 int GetUrandomFD() {
   static NoDestructor<URandomFd> urandom_fd;
   return urandom_fd->fd();
diff --git a/base/rand_util_win.cc b/base/rand_util_win.cc
index 0a81ed63..da7e2ca 100644
--- a/base/rand_util_win.cc
+++ b/base/rand_util_win.cc
@@ -50,8 +50,10 @@
 
 }  // namespace internal
 
-void RandBytes(void* output, size_t output_length) {
-  if (internal::UseBoringSSLForRandBytes()) {
+namespace {
+
+void RandBytes(void* output, size_t output_length, bool avoid_allocation) {
+  if (!avoid_allocation && internal::UseBoringSSLForRandBytes()) {
     // Ensure BoringSSL is initialized so it can use things like RDRAND.
     CRYPTO_library_init();
     // BoringSSL's RAND_bytes always returns 1. Any error aborts the program.
@@ -71,4 +73,21 @@
   }
 }
 
+}  // namespace
+
+void RandBytes(void* output, size_t output_length) {
+  RandBytes(output, output_length, /*avoid_allocation=*/false);
+}
+
+namespace internal {
+
+double RandDoubleAvoidAllocation() {
+  uint64_t number;
+  RandBytes(&number, sizeof(number), /*avoid_allocation=*/true);
+  // This transformation is explained in rand_util.cc.
+  return (number >> 11) * 0x1.0p-53;
+}
+
+}  // namespace internal
+
 }  // namespace base
diff --git a/base/sampling_heap_profiler/poisson_allocation_sampler.cc b/base/sampling_heap_profiler/poisson_allocation_sampler.cc
index 3cbead8..36c8ae17e9 100644
--- a/base/sampling_heap_profiler/poisson_allocation_sampler.cc
+++ b/base/sampling_heap_profiler/poisson_allocation_sampler.cc
@@ -254,7 +254,9 @@
   // between samples.
   // Let u be a uniformly distributed random number between 0 and 1, then
   // next_sample = -ln(u) / λ
-  double uniform = RandDouble();
+  // The allocator shim uses the PoissonAllocationSampler, hence avoid
+  // allocation to avoid infinite recursion.
+  double uniform = internal::RandDoubleAvoidAllocation();
   double value = -log(uniform) * interval;
   size_t min_value = sizeof(intptr_t);
   // We limit the upper bound of a sample interval to make sure we don't have
diff --git a/base/system/sys_info_ios.mm b/base/system/sys_info_ios.mm
index 4adb0db..78816a8 100644
--- a/base/system/sys_info_ios.mm
+++ b/base/system/sys_info_ios.mm
@@ -72,20 +72,11 @@
 void SysInfo::OperatingSystemVersionNumbers(int32_t* major_version,
                                             int32_t* minor_version,
                                             int32_t* bugfix_version) {
-  @autoreleasepool {
-    std::string system_version = OperatingSystemVersion();
-    if (!system_version.empty()) {
-      // Try to parse out the version numbers from the string.
-      int num_read = sscanf(system_version.c_str(), "%d.%d.%d", major_version,
-                            minor_version, bugfix_version);
-      if (num_read < 1)
-        *major_version = 0;
-      if (num_read < 2)
-        *minor_version = 0;
-      if (num_read < 3)
-        *bugfix_version = 0;
-    }
-  }
+  NSOperatingSystemVersion version =
+      [[NSProcessInfo processInfo] operatingSystemVersion];
+  *major_version = saturated_cast<int32_t>(version.majorVersion);
+  *minor_version = saturated_cast<int32_t>(version.minorVersion);
+  *bugfix_version = saturated_cast<int32_t>(version.patchVersion);
 }
 
 // static
diff --git a/base/system/sys_info_mac.mm b/base/system/sys_info_mac.mm
index eed4959..c1e6378 100644
--- a/base/system/sys_info_mac.mm
+++ b/base/system/sys_info_mac.mm
@@ -58,9 +58,9 @@
                                             int32_t* bugfix_version) {
   NSOperatingSystemVersion version =
       [[NSProcessInfo processInfo] operatingSystemVersion];
-  *major_version = static_cast<int32_t>(version.majorVersion);
-  *minor_version = static_cast<int32_t>(version.minorVersion);
-  *bugfix_version = static_cast<int32_t>(version.patchVersion);
+  *major_version = saturated_cast<int32_t>(version.majorVersion);
+  *minor_version = saturated_cast<int32_t>(version.minorVersion);
+  *bugfix_version = saturated_cast<int32_t>(version.patchVersion);
 }
 
 // static
diff --git a/base/task/thread_pool/thread_group_impl.cc b/base/task/thread_pool/thread_group_impl.cc
index 799de7e..b72cebb9 100644
--- a/base/task/thread_pool/thread_group_impl.cc
+++ b/base/task/thread_pool/thread_group_impl.cc
@@ -354,6 +354,7 @@
 
   DCHECK(!replacement_thread_group_);
 
+  in_start().no_worker_reclaim = FeatureList::IsEnabled(kNoWorkerThreadReclaim);
   in_start().may_block_threshold =
       may_block_threshold ? may_block_threshold.value()
                           : (thread_type_hint_ == ThreadType::kDefault
@@ -373,7 +374,6 @@
   DCHECK_LE(in_start().initial_max_tasks, kMaxNumberOfWorkers);
   max_best_effort_tasks_ = max_best_effort_tasks;
   in_start().suggested_reclaim_time = suggested_reclaim_time;
-  in_start().no_worker_reclaim = FeatureList::IsEnabled(kNoWorkerThreadReclaim);
   in_start().worker_environment = worker_environment;
   in_start().service_thread_task_runner = std::move(service_thread_task_runner);
   in_start().worker_thread_observer = worker_thread_observer;
diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
index 2f361c5d9..cfa800eb 100644
--- a/base/trace_event/builtin_categories.h
+++ b/base/trace_event/builtin_categories.h
@@ -60,6 +60,7 @@
   X("cast.mdns")                                                         \
   X("cast.mdns.socket")                                                  \
   X("cast.stream")                                                       \
+  X("catan_investigation")                                               \
   X("cc")                                                                \
   X("cc.debug")                                                          \
   X("cdp.perf")                                                          \
@@ -101,7 +102,6 @@
   X("ime")                                                               \
   X("IndexedDB")                                                         \
   X("input")                                                             \
-  X("catan_investigation")                                               \
   X("io")                                                                \
   X("ipc")                                                               \
   X("Java")                                                              \
diff --git a/build/util/generate_wrapper.py b/build/util/generate_wrapper.py
index df93b80..b45f5f3 100755
--- a/build/util/generate_wrapper.py
+++ b/build/util/generate_wrapper.py
@@ -44,8 +44,10 @@
     import os
     import re
     import shlex
+    import signal
     import subprocess
     import sys
+    import time
 
     _WRAPPED_PATH_RE = re.compile(r'@WrappedPath\(([^)]+)\)')
     _PATH_TO_OUTPUT_DIR = '{path_to_output_dir}'
@@ -142,6 +144,39 @@
           i += 1
       return rargs
 
+    def ForwardSignals(proc):
+      def _sig_handler(sig, _):
+        if proc.poll() is not None:
+          return
+        # SIGBREAK is defined only for win32.
+        # pylint: disable=no-member
+        if sys.platform == 'win32' and sig == signal.SIGBREAK:
+          print("Received signal(%d), sending CTRL_BREAK_EVENT to process %d" % (sig, proc.pid))
+          proc.send_signal(signal.CTRL_BREAK_EVENT)
+        else:
+          print("Forwarding signal(%d) to process %d" % (sig, proc.pid))
+          proc.send_signal(sig)
+        # pylint: enable=no-member
+      if sys.platform == 'win32':
+        signal.signal(signal.SIGBREAK, _sig_handler) # pylint: disable=no-member
+      else:
+        signal.signal(signal.SIGTERM, _sig_handler)
+        signal.signal(signal.SIGINT, _sig_handler)
+
+    def Popen(*args, **kwargs):
+      assert 'creationflags' not in kwargs
+      if sys.platform == 'win32':
+        # Necessary for signal handling. See crbug.com/733612#c6.
+        kwargs['creationflags'] = subprocess.CREATE_NEW_PROCESS_GROUP
+      return subprocess.Popen(*args, **kwargs)
+
+    def RunCommand(cmd):
+      process = Popen(cmd)
+      ForwardSignals(process)
+      while process.poll() is None:
+        time.sleep(0.1)
+      return process.returncode
+
 
     def main(raw_args):
       executable_path = ExpandWrappedPath('{executable_path}')
@@ -153,7 +188,7 @@
       cmd = [executable_path] + executable_args + remaining_args
       if executable_path.endswith('.py'):
         cmd = [sys.executable] + cmd
-      return subprocess.call(cmd)
+      return RunCommand(cmd)
 
 
     if __name__ == '__main__':
diff --git a/chrome/VERSION b/chrome/VERSION
index 9a2941e6..aeb9dbe 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=108
 MINOR=0
-BUILD=5312
+BUILD=5313
 PATCH=0
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni
index e0b4448..3916b4a 100644
--- a/chrome/android/chrome_junit_test_java_sources.gni
+++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -233,6 +233,7 @@
   "junit/src/org/chromium/chrome/browser/survey/ChromeSurveyControllerFlowTest.java",
   "junit/src/org/chromium/chrome/browser/survey/ChromeSurveyControllerTest.java",
   "junit/src/org/chromium/chrome/browser/survey/SurveyHttpClientBridgeUnitTest.java",
+  "junit/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtilsTest.java",
   "junit/src/org/chromium/chrome/browser/tab/RequestDesktopUtilsUnitTest.java",
   "junit/src/org/chromium/chrome/browser/tab/TabAttributesTest.java",
   "junit/src/org/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelperTest.java",
diff --git a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
index 9d7ad4b..05dd639 100644
--- a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
@@ -33,6 +33,7 @@
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.DisableIf;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper;
@@ -94,6 +95,7 @@
 
     @Test
     @SmallTest
+    @DisabledTest(message = "crbug/1365613")
     public void testPasswordSheetDisplaysOptions() throws TimeoutException {
         mHelper.loadTestPage(false);
 
@@ -131,6 +133,7 @@
 
     @Test
     @SmallTest
+    @DisabledTest(message = "crbug/1365613")
     public void testDisplaysEmptyStateMessageWithoutSavedPasswords() throws TimeoutException {
         mHelper.loadTestPage(false);
         // Mark the origin as denylisted to have a reason to show the accessory in the first place.
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java
index f1e9985c..2de5c75 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout.java
@@ -71,9 +71,9 @@
 
     // Duration of the transition animation
     public static final long ZOOMING_DURATION = 300;
-    private static final int TRANSLATE_DURATION_MS = 400;
+    private static final int TRANSLATE_DURATION_MS = 300;
     private static final int BACKGROUND_FADING_DURATION_MS = 150;
-    private static final int SCRIM_FADE_DURATION_MS = 450;
+    private static final int SCRIM_FADE_DURATION_MS = 350;
 
     private static final String TRACE_SHOW_TAB_SWITCHER = "StartSurfaceLayout.Show.TabSwitcher";
     private static final String TRACE_HIDE_TAB_SWITCHER = "StartSurfaceLayout.Hide.TabSwitcher";
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogView.java
index 6517b64..f40bb72a 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogView.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogView.java
@@ -57,8 +57,8 @@
     private static final int DIALOG_UNGROUP_ALPHA_ANIMATION_DURATION = 200;
     private static final int DIALOG_ALPHA_ANIMATION_DURATION = 150;
     private static final int CARD_FADE_ANIMATION_DURATION = 50;
-    private static final int Y_TRANSLATE_DURATION_MS = 400;
-    private static final int SCRIM_FADE_DURATION_MS = 450;
+    private static final int Y_TRANSLATE_DURATION_MS = 300;
+    private static final int SCRIM_FADE_DURATION_MS = 350;
 
     private static Callback<RectF> sSourceRectCallbackForTesting;
 
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherLayout.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherLayout.java
index a4a59b7..a29bb78 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherLayout.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherLayout.java
@@ -67,9 +67,9 @@
 
     // Duration of the transition animation
     public static final long ZOOMING_DURATION = 300;
-    private static final int TRANSLATE_DURATION_MS = 450;
+    private static final int TRANSLATE_DURATION_MS = 300;
     private static final int BACKGROUND_FADING_DURATION_MS = 150;
-    private static final int SCRIM_FADE_DURATION_MS = 450;
+    private static final int SCRIM_FADE_DURATION_MS = 350;
 
     private static final String TRACE_SHOW_TAB_SWITCHER = "TabSwitcherLayout.Show.TabSwitcher";
     private static final String TRACE_HIDE_TAB_SWITCHER = "TabSwitcherLayout.Hide.TabSwitcher";
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
index aa1a445..b338027d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
@@ -873,6 +873,7 @@
 
             if (!HttpUtil.isAllowedHeader(key, value)) {
                 Log.w(TAG, "Ignoring forbidden header " + key + " in EXTRA_HEADERS.");
+                continue;
             }
 
             // Strip the custom header that can only be added by ourselves.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
index b7d06d4..89d84fc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
@@ -116,6 +116,7 @@
                 add(ChromeFeatureList.sQueryTilesOnStart);
                 add(ChromeFeatureList.sReadLater);
                 add(ChromeFeatureList.sStartSurfaceAndroid);
+                add(ChromeFeatureList.sStartSurfaceReturnTime);
                 add(ChromeFeatureList.sStartSurfaceRefactor);
                 add(ChromeFeatureList.sStoreHoursAndroid);
                 add(ChromeFeatureList.sSwapPixelFormatToFixConvertFromTranslucent);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtils.java
index 83409a9..21f6d397 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtils.java
@@ -14,9 +14,12 @@
 
 import org.chromium.base.IntentUtils;
 import org.chromium.base.Log;
+import org.chromium.base.TimeUtils;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.preferences.Pref;
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
+import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
 import org.chromium.chrome.browser.sync.SyncService;
 import org.chromium.chrome.browser.sync.TrustedVaultClient;
@@ -24,8 +27,10 @@
 import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils;
 import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils.SyncError;
 import org.chromium.components.browser_ui.settings.SettingsLauncher;
+import org.chromium.components.prefs.PrefService;
 import org.chromium.components.signin.base.CoreAccountInfo;
 import org.chromium.components.sync.TrustedVaultUserActionTriggerForUMA;
+import org.chromium.components.user_prefs.UserPrefs;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -43,6 +48,10 @@
     public static final long MINIMAL_DURATION_BETWEEN_UI_MS =
             TimeUnit.MILLISECONDS.convert(24, TimeUnit.HOURS);
 
+    @VisibleForTesting
+    public static final long MINIMAL_DURATION_TO_PWM_ERROR_UI_MS =
+            TimeUnit.MILLISECONDS.convert(30, TimeUnit.MINUTES);
+
     @IntDef({SyncErrorPromptType.NOT_SHOWN, SyncErrorPromptType.AUTH_ERROR,
             SyncErrorPromptType.PASSPHRASE_REQUIRED, SyncErrorPromptType.SYNC_SETUP_INCOMPLETE,
             SyncErrorPromptType.CLIENT_OUT_OF_DATE,
@@ -156,12 +165,26 @@
         }
         long lastShownTime =
                 SharedPreferencesManager.getInstance().readLong(SYNC_ERROR_PROMPT_SHOWN_AT_TIME, 0);
-        return System.currentTimeMillis() - lastShownTime > MINIMAL_DURATION_BETWEEN_UI_MS;
+
+        if (ChromeFeatureList.isEnabled(
+                    ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES)) {
+            // Since the password manager error and the sync error can be related,
+            // the sync error should be shown only if at least MINIMAL_DURATION_TO_PWM_ERROR_UI_MS
+            // have passed since the last password manager error. This condition is mirrored
+            // for the password manager error.
+            long currentTime = TimeUtils.currentTimeMillis();
+            PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile());
+            long upmErrorShownTime =
+                    Long.valueOf(prefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP));
+            return currentTime - lastShownTime > MINIMAL_DURATION_BETWEEN_UI_MS
+                    && currentTime - upmErrorShownTime > MINIMAL_DURATION_TO_PWM_ERROR_UI_MS;
+        }
+        return TimeUtils.currentTimeMillis() - lastShownTime > MINIMAL_DURATION_BETWEEN_UI_MS;
     }
 
     public static void updateLastShownTime() {
         SharedPreferencesManager.getInstance().writeLong(
-                SYNC_ERROR_PROMPT_SHOWN_AT_TIME, System.currentTimeMillis());
+                SYNC_ERROR_PROMPT_SHOWN_AT_TIME, TimeUtils.currentTimeMillis());
     }
 
     public static void resetLastShownTime() {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/IntentHandlerUnitTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/IntentHandlerUnitTest.java
index 961e202..ccacc41 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/IntentHandlerUnitTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/IntentHandlerUnitTest.java
@@ -481,6 +481,18 @@
 
     @Test
     @SmallTest
+    @UiThreadTest
+    @Feature({"Android-AppBase"})
+    public void testIgnoreHeaderNewLineInValue() {
+        Bundle bundle = new Bundle();
+        bundle.putString("sec-ch-ua-full", "\nCookie: secret=cookie");
+        Intent headersIntent = new Intent(Intent.ACTION_VIEW);
+        headersIntent.putExtra(Browser.EXTRA_HEADERS, bundle);
+        Assert.assertNull(IntentHandler.getExtraHeadersFromIntent(headersIntent));
+    }
+
+    @Test
+    @SmallTest
     @Feature({"Android-AppBase"})
     public void testmaybeAddAdditionalContentHeaders() {
         String contentUrl = "content://com.example.org/document/1";
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java
index 1978d4a1..3bc9126 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java
@@ -26,7 +26,6 @@
 import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
 import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
 import org.chromium.chrome.browser.autofill.PersonalDataManager.ValueWithStatus;
-import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.video_tutorials.test.TestImageFetcher;
 import org.chromium.chrome.test.ChromeBrowserTestRule;
 import org.chromium.chrome.test.util.browser.Features;
@@ -268,11 +267,7 @@
     @Test
     @SmallTest
     @Feature({"Autofill"})
-    @Features.
-    EnableFeatures({ChromeFeatureList.AUTOFILL_ENABLE_SUPPORT_FOR_MORE_STRUCTURE_IN_ADDRESSES,
-            ChromeFeatureList.AUTOFILL_ENABLE_SUPPORT_FOR_MORE_STRUCTURE_IN_NAMES})
-    public void
-    testRespectVerificationStatuses() throws TimeoutException {
+    public void testRespectVerificationStatuses() throws TimeoutException {
         AutofillProfile profileWithDifferentStatuses = new AutofillProfile("" /* guid */,
                 "" /* origin */, true,
                 new ValueWithStatus("" /* honorific prefix */, VerificationStatus.NO_STATUS),
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/SkipTosDialogPolicyListenerUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/SkipTosDialogPolicyListenerUnitTest.java
index cd067b0..0ad3402 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/SkipTosDialogPolicyListenerUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/SkipTosDialogPolicyListenerUnitTest.java
@@ -18,7 +18,6 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.Spy;
-import org.mockito.internal.util.reflection.FieldSetter;
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 import org.robolectric.annotation.Config;
@@ -363,7 +362,8 @@
     }
 
     @Test
-    public void testCreateAndOwnPolicyLoadListener() throws NoSuchFieldException {
+    public void testCreateAndOwnPolicyLoadListener()
+            throws NoSuchFieldException, IllegalAccessException {
         FirstRunAppRestrictionInfo mockAppRestrictionInfo =
                 Mockito.mock(FirstRunAppRestrictionInfo.class);
         OneshotSupplier<PolicyService> mockSupplier =
@@ -378,9 +378,10 @@
 
         PolicyLoadListener spyListener =
                 Mockito.spy(targetListener.getPolicyLoadListenerForTesting());
-        FieldSetter.setField(targetListener,
-                SkipTosDialogPolicyListener.class.getDeclaredField("mPolicyLoadListener"),
-                spyListener);
+
+        var field = SkipTosDialogPolicyListener.class.getDeclaredField("mPolicyLoadListener");
+        field.setAccessible(true);
+        field.set(targetListener, spyListener);
 
         targetListener.destroy();
         Mockito.verify(spyListener).destroy();
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtilsTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtilsTest.java
new file mode 100644
index 0000000..4cf18e5
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/sync/ui/SyncErrorPromptUtilsTest.java
@@ -0,0 +1,154 @@
+// 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.sync.ui;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import org.junit.After;
+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.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+import org.chromium.base.FakeTimeTestRule;
+import org.chromium.base.TimeUtils;
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.base.test.util.Features;
+import org.chromium.base.test.util.Features.DisableFeatures;
+import org.chromium.base.test.util.Features.EnableFeatures;
+import org.chromium.base.test.util.JniMocker;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+import org.chromium.chrome.browser.preferences.Pref;
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.sync.ui.SyncErrorPromptUtils.SyncErrorPromptType;
+import org.chromium.components.prefs.PrefService;
+import org.chromium.components.user_prefs.UserPrefs;
+import org.chromium.components.user_prefs.UserPrefsJni;
+
+/**
+ * Unit tests for the sync prompt utils.
+ * */
+@RunWith(BaseRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class SyncErrorPromptUtilsTest {
+    @Rule
+    public JniMocker mJniMocker = new JniMocker();
+
+    @Rule
+    public FakeTimeTestRule mFakeTimeTestRule = new FakeTimeTestRule();
+
+    @Rule
+    public TestRule mProcessor = new Features.JUnitProcessor();
+
+    @Mock
+    private Profile mProfile;
+
+    @Mock
+    private PrefService mPrefService;
+
+    @Mock
+    private UserPrefs.Natives mUserPrefsJniMock;
+
+    private SharedPreferencesManager mSharedPrefsManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Profile.setLastUsedProfileForTesting(mProfile);
+        mJniMocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsJniMock);
+        when(mUserPrefsJniMock.get(mProfile)).thenReturn(mPrefService);
+        mSharedPrefsManager = SharedPreferencesManager.getInstance();
+    }
+
+    @After
+    public void tearDown() {
+        mSharedPrefsManager.removeKey(ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME);
+        mFakeTimeTestRule.resetTimes();
+    }
+
+    @Test
+    @DisableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES)
+    public void testNotEnoughTimeSinceLastSyncErrorUINoPwm() {
+        final long timeOfFirstSyncPrompt = TimeUtils.currentTimeMillis();
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfFirstSyncPrompt);
+        mFakeTimeTestRule.advanceMillis(SyncErrorPromptUtils.MINIMAL_DURATION_BETWEEN_UI_MS);
+        assertFalse(SyncErrorPromptUtils.shouldShowPrompt(SyncErrorPromptType.AUTH_ERROR));
+    }
+
+    @Test
+    @DisableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES)
+    public void testEnoughTimeSinceLastSyncErrorUINoPwm() {
+        final long timeOfFirstSyncPrompt = TimeUtils.currentTimeMillis();
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfFirstSyncPrompt);
+        mFakeTimeTestRule.advanceMillis(SyncErrorPromptUtils.MINIMAL_DURATION_BETWEEN_UI_MS + 1);
+        assertTrue(SyncErrorPromptUtils.shouldShowPrompt(SyncErrorPromptType.AUTH_ERROR));
+    }
+
+    @Test
+    @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES)
+    public void testNotEnoughTimeSinceLastSyncErrorUI() {
+        final long timeOfFirstSyncPrompt = TimeUtils.currentTimeMillis();
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfFirstSyncPrompt);
+        // Make sure not enough time passed since the time of the first sync error prompt.
+        mFakeTimeTestRule.advanceMillis(SyncErrorPromptUtils.MINIMAL_DURATION_BETWEEN_UI_MS);
+
+        // Pretend enough time has passed since the last password manager prompt.
+        final long timeOfPwmPrompt = TimeUtils.currentTimeMillis()
+                - SyncErrorPromptUtils.MINIMAL_DURATION_TO_PWM_ERROR_UI_MS - 1;
+        when(mPrefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP))
+                .thenReturn(Long.toString(timeOfPwmPrompt));
+
+        assertFalse(SyncErrorPromptUtils.shouldShowPrompt(SyncErrorPromptType.AUTH_ERROR));
+    }
+
+    @Test
+    @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES)
+    public void testNotEnoughTimeSinceLastPwmUI() {
+        final long timeOfFirstSyncPrompt = TimeUtils.currentTimeMillis();
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfFirstSyncPrompt);
+        // Make sure enough time passed since the last sync error UI.
+        mFakeTimeTestRule.advanceMillis(SyncErrorPromptUtils.MINIMAL_DURATION_BETWEEN_UI_MS + 1);
+
+        // Pretend not enough time passed since last password manager UI.
+        final long timeOfPwmPrompt = TimeUtils.currentTimeMillis()
+                - SyncErrorPromptUtils.MINIMAL_DURATION_TO_PWM_ERROR_UI_MS;
+        when(mPrefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP))
+                .thenReturn(Long.toString(timeOfPwmPrompt));
+
+        assertFalse(SyncErrorPromptUtils.shouldShowPrompt(SyncErrorPromptType.AUTH_ERROR));
+    }
+
+    @Test
+    @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES)
+    public void testEnoughTimeSinceBothUis() {
+        final long timeOfFirstSyncPrompt = TimeUtils.currentTimeMillis();
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfFirstSyncPrompt);
+
+        // Make sure enough time passed since the last sync error UI.
+        mFakeTimeTestRule.advanceMillis(SyncErrorPromptUtils.MINIMAL_DURATION_BETWEEN_UI_MS + 1);
+
+        // Pretend enough time passed since the last password manager error UI.
+        final long timeOfPwmPrompt = TimeUtils.currentTimeMillis()
+                - SyncErrorPromptUtils.MINIMAL_DURATION_TO_PWM_ERROR_UI_MS - 1;
+
+        when(mPrefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP))
+                .thenReturn(Long.toString(timeOfPwmPrompt));
+
+        assertTrue(SyncErrorPromptUtils.shouldShowPrompt(SyncErrorPromptType.AUTH_ERROR));
+    }
+}
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index e1b515d5..8814518d 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -3030,6 +3030,21 @@
   <message name="IDS_TPM_CHECK_SUBTITLE" desc="The subtitle of loading dialog shown during TPM status check.">
     Checking TPM status...
   </message>
+
+    <!-- Skip Enrollment confirmation dialog -->
+  <message name="IDS_SKIP_ENROLLMENT_DIALOG_TITLE" desc="The title for the modal dialog shown when skipping enrollment. Only displayed if the device is License Packaged device.">
+    Skip enterprise enrollment?
+  </message>
+  <message name="IDS_SKIP_ENROLLMENT_DIALOG_TEXT" desc="The message for the modal dialog shown when skipping enrollment. Only displayed if the device is License Packaged device.">
+    You will have to factory reset this device to use enterprise features.
+  </message>
+   <message name="IDS_SKIP_ENROLLMENT_DIALOG_GO_BACK_BUTTON" desc="Cancel button for skipping enrollment">
+    Go back
+  </message>
+   <message name="IDS_SKIP_ENROLLMENT_DIALOG_SKIP_BUTTON" desc="Confirmation button for skipping enrollment">
+    Skip
+  </message>
+
   <!-- Administrator facing strings for Active Directory screens. -->
   <message name="IDS_AD_DEVICE_NAME_INPUT_LABEL" desc="Admin-facing. Label for device name input field on the Active Directory domain join screen. User should tell us the name of their device.">
     Chromebook device name
diff --git a/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_GO_BACK_BUTTON.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_GO_BACK_BUTTON.png.sha1
new file mode 100644
index 0000000..52d4a80
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_GO_BACK_BUTTON.png.sha1
@@ -0,0 +1 @@
+1d26e2ab4e8a1f6dfdbae44ea377c7cebfab0b69
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_SKIP_BUTTON.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_SKIP_BUTTON.png.sha1
new file mode 100644
index 0000000..52d4a80
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_SKIP_BUTTON.png.sha1
@@ -0,0 +1 @@
+1d26e2ab4e8a1f6dfdbae44ea377c7cebfab0b69
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_TEXT.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_TEXT.png.sha1
new file mode 100644
index 0000000..52d4a80
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_TEXT.png.sha1
@@ -0,0 +1 @@
+1d26e2ab4e8a1f6dfdbae44ea377c7cebfab0b69
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_TITLE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_TITLE.png.sha1
new file mode 100644
index 0000000..52d4a80
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_SKIP_ENROLLMENT_DIALOG_TITLE.png.sha1
@@ -0,0 +1 @@
+1d26e2ab4e8a1f6dfdbae44ea377c7cebfab0b69
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb
index ab60f96a..2d4d701 100644
--- a/chrome/app/resources/chromium_strings_ar.xtb
+++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -298,7 +298,6 @@
 <translation id="7682601070171973634">‏يعمل Chromium على استكشاف ميزات جديدة تتيح للمواقع الإلكترونية توفير تجربة التصفّح نفسها باستخدام قدر أقل من البيانات.</translation>
 <translation id="7686590090926151193">‏Chromium ليس متصفحك التلقائي.</translation>
 <translation id="7689606757190482937">‏يمكنك مزامنة Chromium وتخصيصه على جميع أجهزتك.</translation>
-<translation id="7714577916146996629">‏عند تفعيل هذا الإعداد، يستعيد Chromium الذاكرة من علامات التبويب غير النشطة. يؤدي هذا إلى توفير بعض موارد جهاز الكمبيوتر لتنفيذ مهام أخرى والحفاظ على سرعة الأداء في Chromium. وتظهر علامات التبويب غير النشطة فارغة وتتم إعادة تحميلها تلقائيًا عند النقر عليها. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /> أو <ph name="BEGIN_LINK_2" />إرسال ملاحظات<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">‏سيؤدي هذا إلى حذف بيانات التصفح من هذا الجهاز. لاسترداد بياناتك لاحقًا، سجّل الدخول إلى Chromium كـ <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">تعذر على أداة المثبِّت إنشاء دليل مؤقت. يُرجى التحقق من وجود مساحة خالية على القرص وتوفر الإذن اللازم لتثبيت البرنامج.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb
index 8c428b3..19f2d8e 100644
--- a/chrome/app/resources/chromium_strings_as.xtb
+++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">Chromiumএ নতুন সুবিধাসমূহ অন্বেষণ কৰি আছে, যিবোৰে ছাইটসমূহক আপোনাৰ ডেটা কমকৈ ব্যৱহাৰ কৰি একেই ব্ৰাউজিঙৰ অভিজ্ঞতা প্ৰদান কৰিবলৈ দিয়ে</translation>
 <translation id="7686590090926151193">Chromium আপোনাৰ ডিফ'ল্ট ব্ৰাউজাৰ নহয়</translation>
 <translation id="7689606757190482937">আপোনাৰ সমগ্ৰ ডিভাইচতে Chromiumক ছিংক কৰি ব্যক্তিকৃত কৰক</translation>
-<translation id="7714577916146996629">অন কৰা থকিলে, Chromiumএ আপুনি সক্ৰিয়ভাৱে ব্যৱহাৰ কৰি নথকা টেবসমূহৰ পৰা মেম’ৰী পুনৰুদ্ধাৰ কৰে। ই আপোনাৰ কম্পিউটাৰৰ সম্পদসমূহ আন কাৰ্যসমূহৰ বাবে খালী কৰে আৰু Chromiumক দ্ৰুত কৰি ৰাখে। নিষ্ক্ৰিয় টেবসমূহ খালী হৈ থকা দেখা পোৱা যায় আৰু আপুনি সেইসমূহত ক্লিক কৰিলে সেইসমূহ স্বয়ংক্ৰিয়ভাৱে পুনৰ ল’ড হয়। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /> অথবা <ph name="BEGIN_LINK_2" />মতামত পঠিয়াওক<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">এই কাৰ্যই এই ডিভাইচটোৰ পৰা আপোনাৰ ব্ৰাউজিং ডেটা মচি পেলাব। আপোনাৰ ডেটা পাছত পুনৰুদ্ধাৰ কৰিবলৈ Chromiumত <ph name="USER_EMAIL" /> হিচাপে ছাইন ইন কৰক।</translation>
 <translation id="7747138024166251722">ইনষ্টলাৰটোৱে কোনো অস্থায়ী ডাইৰেক্ট'ৰী সৃষ্টি কৰিব নোৱাৰিলে। ছফ্টৱেৰ ইনষ্টল কৰিবলৈ অনুগ্ৰহ কৰি খালী ঠাই আৰু লগতে অনুমতি আছেনে নাই পৰীক্ষা কৰক।</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb
index fa1020f4..318a979 100644
--- a/chrome/app/resources/chromium_strings_az.xtb
+++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -328,6 +328,7 @@
 <translation id="8453117565092476964">Quraşdırıcı arxivi zədələnib və ya yanlışdır. Lütfən, Chromium'u yenidən endirin.</translation>
 <translation id="8463672209299734063">İstəyə görə: Diaqnostika və istifadəçi datasını avtomatik Google'a göndərməklə ChromiumOS funksiyalarını təkmilləşdirməyə yardım edin.</translation>
 <translation id="8493179195440786826">Chromium'um vaxtı keçib</translation>
+<translation id="8522220489792889625">Lazım olduqda, Chromium aktiv istifadə etmədiyiniz tablardan yaddaşı geri alır. Bunu istənilən zaman ayarlarda dəyişə bilərsiniz.</translation>
 <translation id="8550334526674375523">Bu iş profili şəxsi profilinizdən tamamilə ayrıdır.</translation>
 <translation id="8558383651099478961">Valideyniniz Chromium üçün "Saytlar, tətbiqlər və artırmalar üçün icazələri" deaktiv edib. Bu <ph name="EXTENSION_TYPE_PARAMETER" /> artırmasının əlavə edilməsinə icazə verilmir.</translation>
 <translation id="8561285221328166383">Chromium güncəlləmələrini əldə etmək üçün macOS 10.13 və ya daha yeni versiya tələb olunur. Bu kompüter macOS 10.12 istifadə edir.</translation>
diff --git a/chrome/app/resources/chromium_strings_be.xtb b/chrome/app/resources/chromium_strings_be.xtb
index 987820a..0bd1c3e9 100644
--- a/chrome/app/resources/chromium_strings_be.xtb
+++ b/chrome/app/resources/chromium_strings_be.xtb
@@ -332,6 +332,7 @@
 <translation id="8453117565092476964">Архіў усталёўшчыка пашкоджаны або мае няправільны фармат. Спампуйце Chromium зноў.</translation>
 <translation id="8463672209299734063">Дапамагаць паляпшаць функцыі і прадукцыйнасць Chromium OS шляхам аўтаматычнай адпраўкі ў Google даных пра выкарыстанне і дыягностыку (неабавязкова).</translation>
 <translation id="8493179195440786826">Chromium састарэў</translation>
+<translation id="8522220489792889625">Па меры неабходнасці Chromium перастае трымаць у аператыўнай памяці ўкладкі, якімі вы актыўна не карыстаецеся. Гэты параметр можна змяніць у любы час у наладах.</translation>
 <translation id="8550334526674375523">Гэты працоўны профіль і ваш асабісты профіль з'яўляюцца поўнасцю асобнымі профілямі.</translation>
 <translation id="8558383651099478961">Бацькі выключылі "Дазволы для сайтаў, праграм і пашырэнняў" для Chromium. Дадаванне гэтага элемента (<ph name="EXTENSION_TYPE_PARAMETER" />) забаронена.</translation>
 <translation id="8561285221328166383">Каб атрымліваць наступныя абнаўленні Chromium, вам патрэбная версія macOS 10.13 ці пазнейшая. На гэтым камп'ютары выкарыстоўваецца macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb
index c830ae651..578f3365 100644
--- a/chrome/app/resources/chromium_strings_bg.xtb
+++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -296,7 +296,6 @@
 <translation id="7682601070171973634">Chromium проучва нови функции, с чиято помощ сайтовете осигуряват същата практическа работа при сърфиране, използвайки по-малко данни</translation>
 <translation id="7686590090926151193">Chromium не е браузърът ви по подразбиране</translation>
 <translation id="7689606757190482937">Синхронизирайте и персонализирайте Chromium на всичките си устройства</translation>
-<translation id="7714577916146996629">Когато настройката е включена, Chromium освобождава паметта от разделите, които не използвате активно. Така ресурсите на компютъра ви са свободни за други задачи и Chromium не се забавя. Неактивните раздели са празни и се презареждат автоматично, когато кликнете върху тях. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /> или <ph name="BEGIN_LINK_2" />изпратете отзиви<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Данните за сърфирането ви ще се изтрият от това устройство. За да ги извлечете по-късно, влезте в Chromium като <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Инсталационната програма не можа да създаде временна директория. Моля, проверете дали има свободно дисково пространство и разрешение за инсталиране на софтуер.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb
index 2a98386e..515d035c 100644
--- a/chrome/app/resources/chromium_strings_bn.xtb
+++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -300,7 +300,6 @@
 <translation id="7682601070171973634">Chromium নতুন ফিচার এক্সপ্লোর করছে যা সাইটগুলিকে আপনার কম ডেটা ব্যবহার করে একই ব্রাউজিং অভিজ্ঞতা প্রদান করতে দেয়</translation>
 <translation id="7686590090926151193">Chromium আপনার ডিফল্ট ব্রাউজার নয়</translation>
 <translation id="7689606757190482937">আপনার সব ডিভাইস জুড়ে Chromium সিঙ্ক করুন এবং নিজের মতো সাজিয়ে নিন</translation>
-<translation id="7714577916146996629">চালু থাকলে, আপনি সক্রিয়ভাবে ব্যবহার করছেন না এমন ট্যাব থেকে Chromium মেমরি পুনরুদ্ধার করে। এর ফলে আপনার কম্পিউটারের রিসোর্স অন্যান্য কাজের জন্য খালি থাকে এবং Chromium দ্রুত কাজ করতে পারে। অ্যাক্টিভ না থাকা ট্যাব খালি দেখায় ও আপনি এগুলিতে ক্লিক করলে অটোমেটিক আবার লোড হয়। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /> বা <ph name="BEGIN_LINK_2" />মতামত পাঠান<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">এটি এই ডিভাইস থেকে আপনার ব্রাউজিং ডেটা মুছে ফেলবে। আপনার ডেটা পরে পুনরুদ্ধার করার জন্য, Chromium-এ <ph name="USER_EMAIL" /> হিসেবে সাইন-ইন করুন।</translation>
 <translation id="7747138024166251722">ইনস্টলারটি অস্থায়ী ডাইরেক্টরি তৈরি করতে পারে নি৷ অনুগ্রহ করে খালি ডিস্ক স্পেশ এবং সফটওয়্যারটি ইনস্টল করার অনুমতি যাচাই করে নিন৷</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb
index 1eef6e66..3dfe80e 100644
--- a/chrome/app/resources/chromium_strings_bs.xtb
+++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -333,7 +333,7 @@
 <translation id="8453117565092476964">Arhiva alata za instaliranje je oštećena ili nevažeća. Ponovo preuzmite Chromium.</translation>
 <translation id="8463672209299734063">Nije obavezno: Pomozite nam da poboljšamo funkcije i performanse ChromiumOS-a automatskim slanjem podataka o dijagnostici i korištenju Googleu.</translation>
 <translation id="8493179195440786826">Chromium nije ažuriran</translation>
-<translation id="8522220489792889625">Chromium prema potrebi vraća memoriju s kartica koje ne upotrebljavate aktivno. To uvijek možete promijeniti u postavkama.</translation>
+<translation id="8522220489792889625">Chromium po potrebi preuzima memorijski prostor od kartica koje ne koristite aktivno. Ovo možete promijeniti bilo kada u postavkama.</translation>
 <translation id="8550334526674375523">Ovaj radni profil je u potpunosti odvojen od vašeg ličnog profila.</translation>
 <translation id="8558383651099478961">Tvoj roditelj je isključio "Odobrenja za web lokacije, aplikacije i ekstenzije" za Chromium. Dodavanje ove stavke (<ph name="EXTENSION_TYPE_PARAMETER" />) nije dozvoljeno.</translation>
 <translation id="8561285221328166383">Da primate buduća ažuriranja za Chromium, trebat će vam macOS 10.13 ili novija verzija. Ovaj računar koristi macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb
index df260b4..b93aa7ab 100644
--- a/chrome/app/resources/chromium_strings_ca.xtb
+++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -302,7 +302,6 @@
 <translation id="7682601070171973634">Chromium està explorant noves funcions que permetin als llocs web oferir la mateixa experiència de navegació utilitzant menys dades</translation>
 <translation id="7686590090926151193">Chromium no és el navegador predeterminat</translation>
 <translation id="7689606757190482937">Sincronitza i personalitza Chromium en tots els teus dispositius</translation>
-<translation id="7714577916146996629">Quan aquesta opció està activada, Chromium es reapropia de la memòria de les pestanyes que no estàs utilitzant activament. Així, s'alliberen els recursos de l'ordinador per a altres tasques i es manté l'agilitat de Chromium. Les pestanyes inactives es mostren buides i es tornen a carregar automàticament quan hi fas clic. <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="7745317241717453663">Amb aquesta acció, se suprimiran les teves dades de navegació d'aquest dispositiu. Per recuperar les teves dades més endavant, inicia la sessió a Chromium com a <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">L'instal·lador no ha pogut crear un directori temporal. Comprova que hi ha espai lliure al disc i que tens permís per instal·lar el programari.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_cy.xtb b/chrome/app/resources/chromium_strings_cy.xtb
index 5eba2a1..93c39a65 100644
--- a/chrome/app/resources/chromium_strings_cy.xtb
+++ b/chrome/app/resources/chromium_strings_cy.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">Mae Chromium yn archwilio nodweddion newydd sy'n caniatáu i wefannau ddarparu'r un profiad pori drwy ddefnyddio llai o'ch data</translation>
 <translation id="7686590090926151193">Nid Chromium yw eich porwr diofyn</translation>
 <translation id="7689606757190482937">Cysoni â phersonoleiddio Chromium ar draws eich dyfeisiau</translation>
-<translation id="7714577916146996629">Pan fydd ymlaen, mae Chromium yn adfer cof o dabiau nad ydych yn eu defnyddio'n weithredol. Mae hyn yn rhyddhau adnoddau eich cyfrifiadur ar gyfer tasgau eraill ac yn cadw Chromium yn gyflym. Mae tabiau anweithredol yn ymddangos yn wag ac yn ail-lwytho'n awtomatig pan fyddwch yn clicio arnynt. <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="7745317241717453663">Bydd hyn yn dileu eich data pori o'r ddyfais hon. I adfer eich data yn nes ymlaen, mewngofnodwch i Chromium fel <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Ni allai'r gosodwr greu cyfeiriadur dros dro. Gwnewch yn siŵr bod gennych ddigon o le storio ar gael a bod gennych y caniatâd i osod meddalwedd.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb
index 63524d6..59dacdc 100644
--- a/chrome/app/resources/chromium_strings_da.xtb
+++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -302,7 +302,6 @@
 <translation id="7682601070171973634">Chromium afprøver nye funktioner, der giver websites mulighed for at levere den samme browseroplevelse med færre af dine data</translation>
 <translation id="7686590090926151193">Chromium er ikke din standardbrowser</translation>
 <translation id="7689606757190482937">Synkroniser og tilpas Chromium på alle dine enheder</translation>
-<translation id="7714577916146996629">Når indstillingen er aktiveret, bruger Chromium hukommelse fra faner, du ikke aktivt bruger. Dette frigør din computers ressourcer til andre opgaver og sørger for, at Chromium er hurtigt. Inaktive faner fremstår som tomme og genindlæses automatisk, når du klikker på 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="7745317241717453663">Denne handling sletter dine browserdata på denne enhed. Hvis du senere vil hente dine data igen, skal du logge ind på Chromium som <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Installationsprogrammet kunne ikke oprette en midlertidig mappe. Tjek, om der er tilstrækkelig diskplads, og om der er tilladelse til at installere software.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_de.xtb b/chrome/app/resources/chromium_strings_de.xtb
index e642b786..6b6d6e3 100644
--- a/chrome/app/resources/chromium_strings_de.xtb
+++ b/chrome/app/resources/chromium_strings_de.xtb
@@ -301,7 +301,6 @@
 <translation id="7682601070171973634">In Chromium werden neue Funktionen ausprobiert, mit denen Websites bei gleichbleibender Nutzererfahrung beim Surfen weniger Nutzerdaten verwenden</translation>
 <translation id="7686590090926151193">Chromium ist nicht als dein Standardbrowser festgelegt</translation>
 <translation id="7689606757190482937">Chromium wird auf allen deinen Geräten synchronisiert und personalisiert</translation>
-<translation id="7714577916146996629">Wenn diese Option aktiviert ist, gibt Chromium den für Tabs genutzten Arbeitsspeicher wieder frei, wenn du sie gerade nicht aktiv verwendest. Dadurch werden die Ressourcen deines Computers für andere Aufgaben frei und Chromium wird schneller. Inaktive Tabs erscheinen leer und werden automatisch aktualisiert, wenn du sie anklickst. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /> oder <ph name="BEGIN_LINK_2" />Feedback senden<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Dadurch werden deine Browserdaten von diesem Gerät gelöscht. Wenn du deine Daten später abrufen möchtest, melde dich als <ph name="USER_EMAIL" /> in Chromium an.</translation>
 <translation id="7747138024166251722">Das Installationsprogramm konnte kein temporäres Verzeichnis erstellen. Überprüfe, ob freier Speicherplatz und die Rechte zum Installieren von Software vorhanden sind.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb
index 937cde28..099ef4f 100644
--- a/chrome/app/resources/chromium_strings_el.xtb
+++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -61,6 +61,7 @@
 <translation id="2583187216237139145">Τυχόν δεδομένα Chromium που δημιουργούνται κατά τη χρήση αυτού του προφίλ (όπως η δημιουργία σελιδοδεικτών, ιστορικού, κωδικών πρόσβασης και άλλων ρυθμίσεων) μπορούν να καταργηθούν από τον διαχειριστή του προφίλ εργασίας. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Παρουσιάστηκε σφάλμα στο λειτουργικό σύστημα κατά την εγκατάσταση. Κατεβάστε το Chromium ξανά.</translation>
 <translation id="2661879430930417727">Εάν χρησιμοποιείτε μια συσκευή από κοινού με άλλα άτομα, οι φίλοι και τα μέλη της οικογένειάς σας μπορούν να περιηγούνται αυτόνομα και να ρυθμίζουν το Chromium ακριβώς όπως θέλουν.</translation>
+<translation id="2669853942967761236">Το Chromium απέκλεισε αυτό το αρχείο επειδή μπορεί να κρύβει κάποιο κακόβουλο πρόγραμμα.</translation>
 <translation id="268602741124540128">Καλώς ήρθατε στο Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Καρτέλα Chromium</translation>
 <translation id="2718390899429598676">Για επιπλέον ασφάλεια, το Chromium θα κρυπτογραφήσει τα δεδομένα σας.</translation>
@@ -302,7 +303,6 @@
 <translation id="7682601070171973634">Το Chromium εξερευνά νέες λειτουργίες που επιτρέπουν στους ιστοτόπους να προσφέρουν την ίδια εμπειρία περιήγησης χρησιμοποιώντας λιγότερα από τα δεδομένα σας</translation>
 <translation id="7686590090926151193">Το Chromium δεν είναι το προεπιλεγμένο πρόγραμμα περιήγησης</translation>
 <translation id="7689606757190482937">Συγχρονίστε και εξατομικεύστε το Chromium στις συσκευές σας</translation>
-<translation id="7714577916146996629">Όταν είναι ενεργή, το Chromium ανακτά τη μνήμη από καρτέλες που δεν χρησιμοποιείτε ενεργά. Αυτό αποδεσμεύει τους πόρους του υπολογιστή σας για άλλες εργασίες και διατηρεί το Chromium γρήγορο. Οι ανενεργές καρτέλες εμφανίζονται κενές και φορτώνονται εκ νέου αυτόματα όταν κάνετε κλικ σε αυτές. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /> ή <ph name="BEGIN_LINK_2" />στείλτε σχόλια<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Με αυτήν την ενέργεια θα διαγραφούν τα δεδομένα περιήγησης από αυτήν τη συσκευή. Για να ανακτήσετε τα δεδομένα σας αργότερα, συνδεθείτε στο Chromium ως <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Δεν ήταν δυνατή η δημιουργία ενός προσωρινού καταλόγου από το πρόγραμμα εγκατάστασης. Ελέγξτε τον κενό χώρο του δίσκου και το δικαίωμα εγκατάστασης του λογισμικού.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb
index 9f58407..4137606 100644
--- a/chrome/app/resources/chromium_strings_en-GB.xtb
+++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -55,6 +55,7 @@
 <translation id="2359808026110333948">Continue</translation>
 <translation id="2384373936468275798">Chromium OS could not sync your data because your account sign-in details are out of date.</translation>
 <translation id="2396765026452590966">The extension "<ph name="EXTENSION_NAME" />" has changed the page that is shown when you start Chromium.</translation>
+<translation id="2400844369696905771">When on, Chromium reclaims memory from tabs that you aren't actively using. This frees up your computer's resources for other tasks and keeps Chromium speedy. Inactive tabs appear empty and automatically reload when you click them. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="2401032172288869980">Chromium needs camera and microphone permissions for this site</translation>
 <translation id="2483889755041906834">In Chromium</translation>
 <translation id="2485422356828889247">Uninstall</translation>
@@ -145,6 +146,7 @@
 <translation id="4285930937574705105">Installation failed due to unspecified error. If Google Chrome is currently running, please close it and try again.</translation>
 <translation id="4304713468139749426">Password Manager</translation>
 <translation id="4334294535648607276">Download complete.</translation>
+<translation id="437317747729858884">To make your browsing faster, Chromium reclaims memory from tabs that you aren't using.</translation>
 <translation id="439358628917130594"><ph name="MANAGER" /> requires that you read and accept the following Terms of Service before using this device. These terms do not expand, modify or limit the Chromium OS terms.</translation>
 <translation id="4407044323746248786">Exit Chromium anyway?</translation>
 <translation id="4415566066719264597">Let Chromium Run in the Background</translation>
@@ -304,7 +306,6 @@
 <translation id="7682601070171973634">Chromium is exploring new features that allow sites to deliver the same browsing experience using less of your data</translation>
 <translation id="7686590090926151193">Chromium isn't your default browser</translation>
 <translation id="7689606757190482937">Sync and personalise Chromium across your devices</translation>
-<translation id="7714577916146996629">When on, Chromium reclaims memory from tabs that you aren't actively using. This frees up your computer's resources for other tasks and keeps Chromium speedy. Inactive tabs appear empty and automatically reload when you click them. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /> or <ph name="BEGIN_LINK_2" />send feedback<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">This will delete your browsing data from this device. To retrieve your data later, sign in to Chromium as <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">The installer couldn't create a temporary directory. Please check for free disk space and permission to install software.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
@@ -314,6 +315,7 @@
 <translation id="7872446069773932638">Downloading… <ph name="SECONDS" /> second(s) remaining</translation>
 <translation id="7877292582355102282"><ph name="BEGIN_BOLD" />How you can manage your data:<ph name="END_BOLD" /> To protect your privacy, we auto-delete your interests that are older than four weeks. As you keep browsing, an interest might appear on the list again. Or you can remove interests that you don’t want Chromium to consider.</translation>
 <translation id="7937630085815544518">You were signed in to Chromium as <ph name="USER_EMAIL_ADDRESS" />. Please use the same account to sign in again.</translation>
+<translation id="7947085610734123927">Chromium turned on Memory Saver</translation>
 <translation id="7975919845073681630">This is a secondary installation of Chromium, and cannot be made your default browser.</translation>
 <translation id="7997934263947464652">Extensions, apps and themes from unknown sources can harm your device. Chromium recommends only installing them from the <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation>
 <translation id="8013436988911883588">Once Chromium has access, websites will be able to ask you for access.</translation>
@@ -339,6 +341,7 @@
 <translation id="8558383651099478961">Your parent has turned off 'Permissions for sites, apps and extensions' for Chromium. Adding this <ph name="EXTENSION_TYPE_PARAMETER" /> is not allowed.</translation>
 <translation id="8561285221328166383">To get future Chromium updates, you'll need macOS 10.13 or later. This computer is using macOS 10.12.</translation>
 <translation id="8568283329061645092">Chromium can check your passwords when you sign in with your Google Account</translation>
+<translation id="8574036838419011058">When on, Chromium conserves battery power by limiting background activity and visual effects, such as smooth scrolling and video frame rates. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. All rights reserved.</translation>
 <translation id="8608079656141766906"><ph name="BEGIN_BOLD" />How we use this data:<ph name="END_BOLD" /> Sites can store information with Chromium about your interests. For example, if you visit a site to buy shoes for a marathon, the site might define your interest as running marathons. Later, if you visit a different site to register for a race, that site can show you an ad for running shoes based on your interests.</translation>
 <translation id="8619360774459241877">Launching Chromium...</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb
index f5467ff7..7d9f1ac 100644
--- a/chrome/app/resources/chromium_strings_es-419.xtb
+++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -325,6 +325,7 @@
 <translation id="8453117565092476964">El instalador está dañado o no es válido. Descarga Chromium nuevamente.</translation>
 <translation id="8463672209299734063">Opcional: Para ayudarnos a mejorar las funciones y el rendimiento de Chromium OS, envía automáticamente datos de uso y diagnóstico a Google.</translation>
 <translation id="8493179195440786826">Chromium no actualizado</translation>
+<translation id="8522220489792889625">Según sea necesario, Chromium recupera la memoria de las pestañas que no estás usando activamente. Puedes cambiar este parámetro cuando lo desees en Configuración.</translation>
 <translation id="8550334526674375523">Este perfil de trabajo está totalmente separado de tu perfil personal.</translation>
 <translation id="8558383651099478961">Tu padre o madre desactivaron la opción "Permisos para sitios, apps y extensiones" para Chromium. No se permite agregar esta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">Para obtener próximas actualizaciones de Chromium, necesitarás macOS 10.13 o versiones posteriores. Esta computadora usa macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb
index 946059b..6c6cb7b30 100644
--- a/chrome/app/resources/chromium_strings_eu.xtb
+++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -303,7 +303,6 @@
 <translation id="7682601070171973634">Chromium eginbide berriak probatzen ari da; haiei esker, datu gutxiago erabilita sarea modu berean arakatzeko aukera eskainiko dute webguneek</translation>
 <translation id="7686590090926151193">Chromium ez da zure arakatzaile lehenetsia</translation>
 <translation id="7689606757190482937">Sinkronizatu eta pertsonalizatu Chromium gailu guzietan</translation>
-<translation id="7714577916146996629">Aktibatuta dagoenean, aktiboki erabiltzen ari ez zaren fitxen memoria berreskuratzen du Chromium-ek, behar den moduan. Horrela, ordenagailuaren baliabideak libre geratzen dira beste zeregin batzuetarako, eta Chromium-ek abiadura egokian funtzionatzen jarraitzen du. Inaktibo dauden fitxak hutsik agertzen dira eta automatikoki kargatzen dira berriro sakatzen dituzunean. <ph name="BEGIN_LINK" />Lortu informazio gehiago<ph name="END_LINK" /> edo <ph name="BEGIN_LINK_2" />bidali oharrak<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Gailuko arakatze-datuak ezabatuko dira. Geroago datuak eskuratu nahi izanez gero, hasi saioa Chromium-en <ph name="USER_EMAIL" /> gisa.</translation>
 <translation id="7747138024166251722">Instalatzaileak ezin izan du sortu behin behineko direktoriorik. Softwarea instalatzeko, egiaztatu diskoan duzun espazio librea eta baimena.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb
index 1dc9b54..3b49497b 100644
--- a/chrome/app/resources/chromium_strings_fa.xtb
+++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -300,7 +300,6 @@
 <translation id="7682601070171973634">‏Chromium ویژگی‌های جدیدی را کاوش می‌کند که به سایت‌ها اجازه می‌دهد با مصرف داده کمتر، همان تجربه مرور را ارائه دهند</translation>
 <translation id="7686590090926151193">‏Chromium مرورگر پیش‌فرض شما نیست</translation>
 <translation id="7689606757190482937">‏Chromium را در همه دستگاه‌هایتان همگام‌سازی و شخصی‌سازی کنید</translation>
-<translation id="7714577916146996629">‏وقتی روشن باشد، Chromium حافظه را از برگه‌هایی که به‌طور فعال از آن‌ها استفاده نمی‌کنید بازپس می‌گیرد. این کار منابع رایانه را برای وظایف دیگر آزاد می‌کند و موجب می‌شود Chromium همچنان با سرعت بالا اجرا شود. برگه‌های غیرفعال خالی به‌نظر می‌رسند و وقتی روی آن‌ها کلیک کنید به‌طور خودکار مجدداً بار می‌شوند. <ph name="BEGIN_LINK" />اطلاعات بیشتری کسب کنید<ph name="END_LINK" /> یا <ph name="BEGIN_LINK_2" />بازخورد ارسال کنید<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">‏این کار داده‌های محصول مرورتان را از این دستگاه حذف می‌کند. برای بازیابی داده‌هایتان در فرصتی دیگر، با <ph name="USER_EMAIL" /> به سیستم Chromium وارد شوید.</translation>
 <translation id="7747138024166251722">نصب‌کننده نتوانست دایرکتوری موقت ایجاد کند. لطفاً فضای خالی دیسک و اجازه نصب نرم‌افزار را بررسی کنید.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb
index 08f898a..4dd6f71 100644
--- a/chrome/app/resources/chromium_strings_fi.xtb
+++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -302,7 +302,6 @@
 <translation id="7682601070171973634">Chromium kokeilee uusia ominaisuuksia, joiden avulla sivustot voivat tarjota saman selauskokemuksen vähemmällä datalla</translation>
 <translation id="7686590090926151193">Chromium ei ole oletusselain.</translation>
 <translation id="7689606757190482937">Voit synkronoida Chromiumin ja tehdä siitä yksilöllisemmän kaikilla laitteilla.</translation>
-<translation id="7714577916146996629">Kun asetus on päällä, Chromium vapauttaa muistia välilehdiltä, joita et käytä aktiivisesti. Näin tietokoneesi resurssit vapautuvat muihin tehtäviin ja Chromium pysyy nopeana. Ei-aktiiviset välilehdet näyttävät tyhjiltä ja latautuvat automaattisesti uudelleen, kun klikkaat niitä. <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="7745317241717453663">Tämä poistaa selaustiedot pysyvästi laitteelta. Jos haluat palauttaa tiedot myöhemmin, kirjaudu Chromiumiin käyttäjänä <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Asennusohjelma ei pystynyt luomaan väliaikaista hakemistoa. Tarkista, että käytettävissä on riittävästi levytilaa ja että sinulla on oikeus asentaa ohjelmia.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
@@ -332,6 +331,7 @@
 <translation id="8453117565092476964">Asennusarkisto on virheellinen. Lataa Chromium uudelleen.</translation>
 <translation id="8463672209299734063">Valinnainen: Auta parantamaan Chromium-käyttöjärjestelmän ominaisuuksia ja suorituskykyä lähettämällä diagnostiikka- ja käyttödataa Googlelle automaattisesti.</translation>
 <translation id="8493179195440786826">Chromium on vanhentunut</translation>
+<translation id="8522220489792889625">Chromium vapauttaa tarvittaessa muistia välilehdiltä, joita et käytä aktiivisesti. Voit muuttaa valintasi milloin tahansa asetuksista.</translation>
 <translation id="8550334526674375523">Tämä työprofiili on täysin erillinen henkilökohtaisesta profiilistasi.</translation>
 <translation id="8558383651099478961">Vanhempasi ovat laittaneet Chromiumin sivustojen, sovellusten ja laajennusten käyttöluvat pois päältä. Lisäämistä (<ph name="EXTENSION_TYPE_PARAMETER" />) ei sallita.</translation>
 <translation id="8561285221328166383">Jotta saat tulevia Chromiumin päivityksiä, sinulla on oltava macOS 10.13 tai uudempi. Tällä tietokoneella on macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb
index ae8ad8bd..cda039f 100644
--- a/chrome/app/resources/chromium_strings_fil.xtb
+++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">Nag-e-explore ang Chromium ng mga bagong feature na nagbibigay-daan sa mga site na ihatid ang parehong karanasan sa pag-browse nang hindi gaanong gumagamit ng iyong data</translation>
 <translation id="7686590090926151193">Hindi Chromium ang iyong default na browser</translation>
 <translation id="7689606757190482937">I-sync at i-personalize ang Chromium sa lahat ng iyong device</translation>
-<translation id="7714577916146996629">Kapag naka-on, binabawi ng Chromium ang memory mula sa mga tab na hindi mo aktibong ginagamit. Binabakante nito ang mga resource ng iyong computer para sa iba pang gawain at pinapanatili nitong mabilis ang Chromium. Mukhang walang laman ang mga hindi aktibong tab at awtomatikong nagre-reload ang mga ito kapag na-click mo ang 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="7745317241717453663">Ide-delete nito ang iyong data sa pag-browse sa device na ito. Upang makuha ang iyong data sa ibang pagkakataon, mag-sign in sa Chromium bilang <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Hindi makalikha ng pansamantalang direktoryo ang installer. Paki-suri para sa puwang sa disk na walang laman at pahintulot upang i-install ang software.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb
index 97220b7..6ea6629c 100644
--- a/chrome/app/resources/chromium_strings_fr.xtb
+++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -332,6 +332,7 @@
 <translation id="8453117565092476964">L'archive du programme d'installation est corrompue ou n'est pas valide. Veuillez télécharger Chromium à nouveau.</translation>
 <translation id="8463672209299734063">Facultatif : contribuez à améliorer les fonctionnalités et les performances de Chromium OS en envoyant automatiquement des données de diagnostic et d'utilisation à Google.</translation>
 <translation id="8493179195440786826">Version de Chromium obsolète</translation>
+<translation id="8522220489792889625">Au besoin, Chromium récupère la mémoire des onglets que vous n'utilisez pas activement. Vous pouvez modifier cette option à tout moment dans les paramètres.</translation>
 <translation id="8550334526674375523">Ce profil professionnel est parfaitement séparé de votre profil personnel.</translation>
 <translation id="8558383651099478961">Ton parent a désactivé l'option "Autorisations des sites, applications et extensions" pour Chromium. Tu ne peux pas ajouter cette <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">Vous devez disposer de macOS 10.13 ou d'une version ultérieure pour recevoir les futures mises à jour de Chromium. Or, c'est la version macOS 10.12 qui est installée sur cet ordinateur.</translation>
diff --git a/chrome/app/resources/chromium_strings_gl.xtb b/chrome/app/resources/chromium_strings_gl.xtb
index 12408a2..802505a 100644
--- a/chrome/app/resources/chromium_strings_gl.xtb
+++ b/chrome/app/resources/chromium_strings_gl.xtb
@@ -303,7 +303,6 @@
 <translation id="7682601070171973634">Chromium está explorando novas funcións que lles permiten aos sitios ofrecer a mesma experiencia de navegación usando menos datos</translation>
 <translation id="7686590090926151193">Chromium non é o teu navegador predeterminado</translation>
 <translation id="7689606757190482937">Sincroniza e personaliza Chromium nos teus dispositivos</translation>
-<translation id="7714577916146996629">Se activas esta opción, Chromium recuperará a memoria das pestanas que non esteas a usar de maneira activa. Deste xeito libéranse os recursos do ordenador para outras tarefas e mantense a rapidez de Chromium. As pestanas inactivas aparecen baleiras e volven cargar automaticamente ao facer clic nelas. Consulta <ph name="BEGIN_LINK" />máis información<ph name="END_LINK" /> ou <ph name="BEGIN_LINK_2" />envía os teus comentarios<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Esta acción eliminará os teus datos de navegación deste dispositivo. Para recuperar os teus datos máis tarde, inicia sesión en Chromium como <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">O programa de instalación non puido crear un directorio temporal. Comproba se hai espazo libre no disco e se tes autorización para instalar o software.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> (versión experimental de Chromium)</translation>
@@ -333,6 +332,7 @@
 <translation id="8453117565092476964">O arquivo do instalador está danado ou non é válido. Volve descargar Chromium.</translation>
 <translation id="8463672209299734063">Opcional: Axuda a mellorar as funcións e o rendemento de Chromium OS enviando automaticamente datos de uso e diagnóstico a Google.</translation>
 <translation id="8493179195440786826">Chromium está desactualizado</translation>
+<translation id="8522220489792889625">Chromium recuperará, segundo sexa necesario, a memoria das pestanas que non esteas a usar de maneira activa. Podes cambiar esta opción en calquera momento en Configuración.</translation>
 <translation id="8550334526674375523">Este perfil de traballo é totalmente independente do teu perfil persoal.</translation>
 <translation id="8558383651099478961">O teu pai ou nai desactivou esta opción en Chromium: Permisos para sitios, aplicacións e extensións. Non está permitido engadir esta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">Se queres recibir actualizacións de Chromium no futuro, debes instalar o sistema operativo macOS 10.13 ou unha versión posterior. Este ordenador ten macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb
index b56e5b6..cefbdc9 100644
--- a/chrome/app/resources/chromium_strings_gu.xtb
+++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -63,6 +63,7 @@
 <translation id="2583187216237139145">આ પ્રોફાઇલના ઉપયોગ (જેમકે બુકમાર્ક, ઇતિહાસ, પાસવર્ડ બનાવવા અને અન્ય સેટિંગ ગોઠવવા) દરમિયાન જનરેટ થયેલા કોઈપણ Chromium ડેટાને ઑફિસની પ્રોફાઇલના વ્યવસ્થાપક કાઢી નાખી શકે છે. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">ઇન્સ્ટૉલેશન દરમિયાન ઓપરેટિંગ સિસ્ટમ ભૂલ આવી. કૃપા કરીને ફરીથી Chromium ડાઉનલોડ કરો.</translation>
 <translation id="2661879430930417727">જો તમે ડિવાઇસ શેર કરતા હો, તો મિત્રો અને કુટુંબીજનો અલગ-અલગ બ્રાઉઝ કરી શકે છે અને તેઓ તેમને જોઈએ તે પ્રમાણે Chromiumનું સેટઅપ કરી શકે છે</translation>
+<translation id="2669853942967761236">Chromium દ્વારા આ આર્કાઇવ ફાઇલ બ્લૉક કરવામાં આવી કારણ કે તેમાં માલવેર છુપાવેલા હોઈ શકે છે</translation>
 <translation id="268602741124540128">Chromiumમાં સ્વાગત છે, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Chromium ટૅબ</translation>
 <translation id="2718390899429598676">ઉમેરેલી સુરક્ષા માટે, Chromium તમારા ડેટાને એન્ક્રિપ્ટ કરશે.</translation>
@@ -304,7 +305,6 @@
 <translation id="7682601070171973634">Chromium એવી સુવિધાઓની શોધખોળ કરી રહ્યું છે જે તમારા ડેટાના મર્યાદિત ઉપયોગ વડે પણ સાઇટને બ્રાઉઝિંગનો પહેલાં જેવો જ અનુભવ પ્રદાન કરી શકે</translation>
 <translation id="7686590090926151193">Chromium તમારું ડિફૉલ્ટ બ્રાઉઝર નથી</translation>
 <translation id="7689606757190482937">તમારા બધા ડિવાઇસ પર Chromiumને સિંક કરો અને મનગમતું બનાવો</translation>
-<translation id="7714577916146996629">જ્યારે ચાલુ હોય, તમે જે ટૅબનો સક્રિય રીતે ઉપયોગ ન કરતા હો, Chromium એ ટૅબમાંથી મેમરી પાછી લઈ લે છે. આ તમારા કમ્પ્યુટરના સંસાધનોને અન્ય કાર્યો માટે ઉપલબ્ધ કરે છે અને Chromiumની કામગીરી ઝડપી રાખે છે. નિષ્ક્રિય ટૅબ ખાલી દેખાય છે અને જ્યારે તમે તેના પર ક્લિક કરો, ત્યારે તે ઑટોમૅટિક રીતે ફરીથી લોડ થાય છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /> અથવા <ph name="BEGIN_LINK_2" />પ્રતિસાદ મોકલો<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">આ તમારા બ્રાઉઝિંગ ડેટાને આ ડિવાઇસમાંથી ડિલીટ કરશે. પછીથી તમારો ડેટા ફરીથી મેળવવા માટે, Chromium માં <ph name="USER_EMAIL" /> તરીકે સાઇન ઇન કરો.</translation>
 <translation id="7747138024166251722">ઇન્સ્ટૉલર અસ્થાયી ડિરેક્ટરી બનાવી શક્યું નથી. કૃપા કરીને ખાલી ડિસ્ક સ્પેસ માટે અને સૉફ્ટવેર ઇન્સ્ટૉલ કરવાની પરવાનગી માટે તપાસો.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb
index aa28b812..2a4c739 100644
--- a/chrome/app/resources/chromium_strings_hi.xtb
+++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -302,7 +302,6 @@
 <translation id="7682601070171973634">Chromium पर ऐसी नई सुविधाएं एक्सप्लोर की जा रही हैं जिनसे साइटें, उपयोगकर्ता का कम डेटा इस्तेमाल करके उन्हें पहले जैसा अनुभव दे सकती हैं</translation>
 <translation id="7686590090926151193">क्रोमियम आपका डिफ़ॉल्ट ब्राउज़र नहीं है</translation>
 <translation id="7689606757190482937">क्रोमियम को अपने सभी डिवाइस पर सिंक करें और मनमुताबिक बनाएं</translation>
-<translation id="7714577916146996629">इस सेटिंग के चालू होने पर, Chromium उन टैब की मेमोरी को रिकवर करता है जिन्हें आपने पिछले कुछ समय से इस्तेमाल नहीं किया है. इससे आपके कंप्यूटर के रिसॉर्स, अन्य कामों में इस्तेमाल किए जा सकते हैं. साथ ही, Chromium तेज़ी से काम करता रहता है. इनएक्टिव टैब खाली दिखते हैं. इन पर क्लिक करने के बाद, ये अपने-आप फिर से लोड हो जाते हैं. <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /> या <ph name="BEGIN_LINK_2" />सुझाव, शिकायत या राय भेजें<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ऐसा करने से इस डिवाइस से आपका ब्राउज़िंग डेटा मिट जाएगा. बाद में अपना डेटा पाने के लिए, Chromium में <ph name="USER_EMAIL" /> के रूप में साइन इन करें.</translation>
 <translation id="7747138024166251722">इंस्टॉलर अस्थायी डायरेक्टरी नहीं बना सका. कृपया डिस्क में खाली जगह और सॉफ़्टवेयर इंस्टॉल करने की अनुमति जांचें.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - क्रोमियम कैनरी</translation>
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb
index e58d4ab4..9fb3f3ba 100644
--- a/chrome/app/resources/chromium_strings_hy.xtb
+++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -332,6 +332,7 @@
 <translation id="8453117565092476964">Տեղադրիչի արխիվը վնասված է կամ անվավեր: Նորից ներբեռնեք Chromium-ը:</translation>
 <translation id="8463672209299734063">Ըստ ցանկության. օգնեք բարելավել ChromiumOS-ի գործառույթներն ու աշխատանքը՝ Google-ին ավտոմատ կերպով ուղարկելով օգտագործման և դիագնոստիկ տվյալները։</translation>
 <translation id="8493179195440786826">Chromium-ը հնացած է</translation>
+<translation id="8522220489792889625">Ըստ անհրաժեշտության՝ Chromium-ը դադարում է օգտագործել հիշողությունն այն ներդիրների համար, որոնք դուք ակտիվորեն չեք օգտագործում։ Այս գործառույթը ցանկացած ժամանակ կարող եք փոփոխել կարգավորումներում։</translation>
 <translation id="8550334526674375523">Այս աշխատանքային պրոֆիլն ամբողջովին առանձնացված է ձեր անձնական պրոֆիլից։</translation>
 <translation id="8558383651099478961">Ձեր ծնողն անջատել է «Թույլտվություններ կայքերի, հավելվածների և ընդլայնումների համար» պարամետրը Chromium-ում։ Այս <ph name="EXTENSION_TYPE_PARAMETER" />ն արգելափակված է և չի կարող ավելացվել։</translation>
 <translation id="8561285221328166383">Chromium-ի հետագա թարմացումները ստանալու համար ձեզ անհրաժեշտ է macOS 10.13 կամ ավելի նոր տարբերակ։ Այս համակարգիչն օգտագործում է macOS 10.12 տարբերակը։</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb
index 03ba4754..58c8b29 100644
--- a/chrome/app/resources/chromium_strings_id.xtb
+++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -302,7 +302,6 @@
 <translation id="7682601070171973634">Chromium sedang menjelajahi fitur baru yang memungkinkan situs memberikan pengalaman penjelajahan yang sama dengan menggunakan lebih sedikit data Anda</translation>
 <translation id="7686590090926151193">Chromium bukan browser default</translation>
 <translation id="7689606757190482937">Menyinkronkan dan mempersonalisasi Chromium di perangkat Anda</translation>
-<translation id="7714577916146996629">Jika diaktifkan, Chromium menggunakan kembali memori dari tab yang tidak digunakan secara aktif. Tindakan ini akan membebaskan resource komputer Anda untuk melakukan tugas-tugas lain dan menjaga Chromium tetap cepat. Tab yang tidak aktif tampak kosong dan otomatis dimuat ulang saat Anda mengkliknya. <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="7745317241717453663">Tindakan ini akan menghapus data browsing dari perangkat. Untuk mengambil data nanti, login ke Chromium sebagai <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Pemasang tidak dapat membuat direktori sementara. Periksa kapasitas kosong pada disk dan izin untuk memasang software.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb
index 7c61669..457e0c3 100644
--- a/chrome/app/resources/chromium_strings_is.xtb
+++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -333,6 +333,7 @@
 <translation id="8453117565092476964">Uppsetningarsafnskráin er skemmd eða ógild. Sæktu Chromium aftur.</translation>
 <translation id="8463672209299734063">Valfrjálst: Hjálpa til við að bæta eiginleika og afköst ChromiumOS með því að senda greiningar- og notkunargögn sjálfkrafa til Google.</translation>
 <translation id="8493179195440786826">Chromium er úrelt</translation>
+<translation id="8522220489792889625">Chromium endurheimtir minni úr flipum sem eru ekki í virkri notkun eftir þörfum. Þú getur breytt þessu hvenær sem er í stillingunum.</translation>
 <translation id="8550334526674375523">Þessi vinnuprófíll er algjörlega aðskilinn þínum eigin prófíl.</translation>
 <translation id="8558383651099478961">Foreldrar þínir hafa slökkt á „Heimildum fyrir vefsvæði, forrit og viðbætur" fyrir Chromium. Ekki er leyfilegt að bæta við þessu <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">Til að fá frekari uppfærslur á Chromium þarftu macOS 10.13 eða nýrri útgáfu. Þessi tölva notar macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb
index ea6fb597..8173d8c0 100644
--- a/chrome/app/resources/chromium_strings_iw.xtb
+++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -299,7 +299,6 @@
 <translation id="7682601070171973634">‏אנחנו בודקים תכונות חדשות ב-Chromium שמאפשרות לאתרים להציג את אותה חוויית הגלישה תוך שימוש בפחות נתונים.</translation>
 <translation id="7686590090926151193">‏Chromium אינו דפדפן ברירת המחדל שלך</translation>
 <translation id="7689606757190482937">‏סנכרון והתאמה אישית של Chromium בכל המכשירים שברשותך</translation>
-<translation id="7714577916146996629">‏כשההגדרה מופעלת, מערכת Chromium משתמשת בזיכרון מכרטיסיות שאינן בשימוש באופן פעיל. כך המשאבים של המחשב מתפנים למשימות אחרות, ומערכת Chromium ממשיכה לפעול במהירות. כרטיסיות לא פעילות מופיעות ריקות ונטענות מחדש באופן אוטומטי כשלוחצים עליהן. אפשר <ph name="BEGIN_LINK" />לקבל מידע נוסף<ph name="END_LINK" /> או <ph name="BEGIN_LINK_2" />לשלוח משוב<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">‏פעולה זו תמחק את נתוני הגלישה מהמכשיר. כדי לשחזר את הנתונים מאוחר יותר, יש להיכנס אל Chromium עם <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">המתקין לא הצליח ליצור ספרייה זמנית. יש לבדוק את המקום הפנוי בדיסק ואת האישור להתקנת תוכנה.</translation>
 <translation id="7790626492778995050">‏<ph name="PAGE_TITLE" /> – Chromium בגרסת Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb
index 164026db..25b2a33 100644
--- a/chrome/app/resources/chromium_strings_ka.xtb
+++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -303,7 +303,6 @@
 <translation id="7682601070171973634">Chromium მუშაობს ახალ ფუნქციებზე, რომელთა მეშვეობითაც საიტებს იგივე ფუნქციონალი ექნება თქვენი ნაკლები მონაცემის გამოყენებით.</translation>
 <translation id="7686590090926151193">Chromium არ არის თქვენი ნაგულისხმევი ბრაუზერი</translation>
 <translation id="7689606757190482937">მოახდინეთ Chromium-ის სინქრონიზაცია და პერსონალიზება თქვენს ყველა მოწყობილობას შორის</translation>
-<translation id="7714577916146996629">ჩართვის შემთხვევაში, Chromium დაიბრუნებს მეხსიერებას ჩანართებიდან, რომლებსაც აქტიურად არ იყენებთ. აღნიშნული გამოათავისუფლებს თქვენი კომპიუტერის რესურსებს სხვა ამოცანებისთვის და Chromium-ის უფრო სწრაფი მუშაობისთვის. არააქტიური ჩანართები ცარიელად გამოჩნდება და ავტომატურად გადაიტვირთება, როცა მათზე დააწკაპუნებთ. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /> ან <ph name="BEGIN_LINK_2" />გამოგვეხმაურეთ<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ეს მოქმედება წაშლის თქვენს დათვალიერების მონაცემებს ამ მოწყობილობიდან. თქვენი მონაცემების მოგვიანებით მისაღებად, შედით Chromium-ში, როგორც <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">ინსტალერმა ვერ შექმნა დროებითი დირექტორია. გთხოვთ, გადაამოწმოთ დისკზე თავისუფალი სივრცე და პროგრამული უზრუნველყოფის დაყენების ნებართვა.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> — Chromium Canary</translation>
@@ -333,6 +332,7 @@
 <translation id="8453117565092476964">ინსტალაციის პროგრამის არქივი დაზიანებულია ან არასწორია. ხელახლა ჩამოტვირთეთ Chromium.</translation>
 <translation id="8463672209299734063">არასავალდებულო: ChromiumOS-ის ფუნქციებისა და წარმადობის გაუმჯობესების ხელშეწყობა დიაგნოსტიკური და გამოყენების მონაცემების Google-ისთვის ავტომატურად გაგზავნის მეშვეობით.</translation>
 <translation id="8493179195440786826">Chromium მოძველდა</translation>
+<translation id="8522220489792889625">საჭიროებისამებრ, Chromium დაიბრუნებს მეხსიერებას ჩანართებიდან, რომლებსაც აქტიურად არ იყენებთ. ამის შეცვლა ნებისმიერ დროს შეგიძლიათ პარამეტრებიდან.</translation>
 <translation id="8550334526674375523">სამსახურის ეს პროფილი თქვენი პირადი პროფილისგან სრულიად დამოუკიდებლად ფუნქციონირებს.</translation>
 <translation id="8558383651099478961">თქვენმა მშობელმა გამორთო „ნებართვები საიტებისთვის, აპებისა და გაფართოებებისთვის“ Chromium-ისთვის. ეს <ph name="EXTENSION_TYPE_PARAMETER" /> ვერ დაემატება.</translation>
 <translation id="8561285221328166383">Chromium-ის მომავალი განახლებების მისაღებად დაგჭირდებათ macOS 10.13 ან უფრო ახალი ვერსია. ეს კომპიუტერი იყენებს macOS 10.12-ს.</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb
index 83084a52..53ccc1d 100644
--- a/chrome/app/resources/chromium_strings_km.xtb
+++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -305,7 +305,6 @@
 <translation id="7682601070171973634">Chromium កំពុងរុករក​មុខងារថ្មីៗដែលអនុញ្ញាត​ឱ្យគេហទំព័រផ្ដល់​បទពិសោធន៍រុករក​តែមួយ ដោយប្រើ​ទិន្នន័យរបស់អ្នក​កាន់តែតិច</translation>
 <translation id="7686590090926151193">Chromium មិនមែន​ជា​កម្មវិធីរុករក​តាមអ៊ីនធឺណិត​លំនាំដើម​របស់អ្នក​ទេ</translation>
 <translation id="7689606757190482937">ធ្វើ​សមកាលកម្ម និង​កំណត់ Chromium ឱ្យ​ស្រប​នឹង​អ្នក​នៅលើ​ឧបករណ៍​នានា</translation>
-<translation id="7714577916146996629">នៅពេល​បើក នោះ Chromium ប្រើឡើងវិញនូវអង្គចងចាំ​ពី​ផ្ទាំង​ដែល​អ្នក​មិន​កំពុង​ប្រើប្រាស់​យ៉ាងសកម្ម។ សកម្មភាព​នេះ​សម្អាត​ឱ្យសល់ធនធាន​កុំព្យូទ័រ​របស់អ្នក​សម្រាប់​កិច្ចការ​ផ្សេងទៀត និង​ជួយឱ្យ Chromium មានល្បឿនលឿន។ ផ្ទាំង​អសកម្ម​បង្ហាញ​ឡើង​ទទេ និង​ផ្ទុក​ឡើងវិញ​ដោយស្វ័យប្រវត្តិ នៅពេល​អ្នក​ចុច​លើ​ផ្ទាំង​ទាំងនោះ។ <ph name="BEGIN_LINK" />ស្វែងយល់​បន្ថែម<ph name="END_LINK" /> ឬ​<ph name="BEGIN_LINK_2" />ផ្ញើ​មតិកែលម្អ<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">វា​នឹង​លុប​ទិន្នន័យ​រុករក​របស់អ្នក​ចេញ​ពី​ឧបករណ៍​នេះ។ ដើម្បី​ទាញ​យក​ទិន្នន័យ​របស់អ្នក​មកវិញ​នៅ​ពេល​ក្រោយ សូម​ចូល​ទៅ​កាន់ Chromium ជា <ph name="USER_EMAIL" /> ។</translation>
 <translation id="7747138024166251722">កម្មវិធីតំឡើងមិនអាចបង្កើតថតឯកសារបណ្តោះអាសន្នទេ។ សូមពិនិត្យមើលចន្លោះផ្ទុកទិន្នន័យ និងអនុញ្ញាតក្នុងការតំឡើងកម្មវិធី។</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb
index cee3253..64d0a47 100644
--- a/chrome/app/resources/chromium_strings_kn.xtb
+++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -295,7 +295,6 @@
 <translation id="7682601070171973634">Chromium ನಿಮ್ಮ ಕಡಿಮೆ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ಒಂದೇ ರೀತಿಯ ಬ್ರೌಸಿಂಗ್ ಅನುಭವವನ್ನು ನೀಡಲು ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸುವ ಹೊಸ ಫೀಚರ್‌ಗಳನ್ನು ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಮಾಡುತ್ತಿದೆ</translation>
 <translation id="7686590090926151193">Chromium ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಅಲ್ಲ</translation>
 <translation id="7689606757190482937">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ Chromium ಅನ್ನು ಸಿಂಕ್ ಮಾಡಿ ಮತ್ತು ವೈಯಕ್ತೀಕರಿಸಿ</translation>
-<translation id="7714577916146996629">ಆನ್ ಆಗಿದ್ದಾಗ, Chromium ನೀವು ಸಕ್ರಿಯವಾಗಿ ಬಳಸದಿರುವ ಟ್ಯಾಬ್‌ಗಳಲ್ಲಿನ ಮೆಮೊರಿಯನ್ನು ಪುನಃ ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ. ಇತರ ಕಾರ್ಯಗಳಿಗೆ ಒದಗಿಸುವ ಸಲುವಾಗಿ ಇದು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮುಕ್ತಗೊಳಿಸುತ್ತದೆ ಹಾಗೂ Chromium ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಇನ್ನಷ್ಟು ಸುಧಾರಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. ನಿಷ್ಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳಲ್ಲಿ ಯಾವುದೇ ವಿಷಯ ಲೋಡ್ ಆಗಿರುವುದಿಲ್ಲ ಹಾಗೂ ನೀವು ಅವುಗಳನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಅವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪುನಃ ಲೋಡ್ ಆಗುತ್ತವೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /> ಅಥವಾ <ph name="BEGIN_LINK_2" />ಪ್ರತಿಕ್ರಿಯೆ ಕಳುಹಿಸಿ<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ಈ ಸಾಧನದಿಂದ ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ಇದು ಅಳಿಸುತ್ತದೆ. ನಂತರ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮರುಪಡೆಯಲು, <ph name="USER_EMAIL" /> ನಂತೆ Chromium ಗೆ ಸೈನ್‌ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="7747138024166251722">ಇನ್‌ಸ್ಟಾಲರ್‌‌‌ಗೆ ತಾತ್ಕಾಲಿಕ ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸಲಾಗಲಿಲ್ಲ. ಸಾಫ್ಟ್‌ವೇರ್ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಮುಕ್ತ ಡಿಸ್ಕ್ ಜಾಗ ಮತ್ತು ಅನುಮತಿಗಾಗಿ ದಯವಿಟ್ಟು ಪರಿಶೀಲಿಸಿ.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb
index b535b0c8e..af6e830 100644
--- a/chrome/app/resources/chromium_strings_ko.xtb
+++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">Chromium은 사용자의 데이터를 더 적게 사용하면서도 사이트에서 동일한 탐색 환경을 제공할 수 있는 새로운 기능을 알아보고 있습니다.</translation>
 <translation id="7686590090926151193">Chromium이 기본 브라우저로 설정되어 있지 않습니다</translation>
 <translation id="7689606757190482937">모든 기기에서 Chromium을 동기화하고 맞춤설정하세요.</translation>
-<translation id="7714577916146996629">사용 설정하면 Chromium에서 사용자가 현재 사용하지 않는 탭의 메모리를 회수합니다. 이렇게 하면 다른 작업을 위해 컴퓨터 리소스를 확보하고 Chromium의 속도를 빠르게 유지합니다. 비활성 탭은 비어 있을 때 표시되며 클릭하면 자동으로 새로고침됩니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /> 또는 <ph name="BEGIN_LINK_2" />의견 보내기<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">인터넷 사용 기록이 기기에서 삭제됩니다. 나중에 데이터를 가져오려면 Chromium에 <ph name="USER_EMAIL" />(으)로 로그인하세요.</translation>
 <translation id="7747138024166251722">설치 프로그램이 임시 디렉터리를 만들지 못했습니다. 디스크 공간 및 설치 권한을 확인해 보세요.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb
index 183c01d..54eda1d 100644
--- a/chrome/app/resources/chromium_strings_ky.xtb
+++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -333,6 +333,7 @@
 <translation id="8453117565092476964">Орноткуч архиви бузулган же жараксыз. Chromium'ду кайра жүктөп алыңыз.</translation>
 <translation id="8463672209299734063">Кошумча: Google'га мүчүлүштүктөрдү аныктоо жана колдонуу статистикасы жөнүндө автоматтык түрдө кабарлоо менен ChromiumOS'тун функцияларын жана өндүрүмдүүлүгүн өркүндөтүүгө жардам бериңиз.</translation>
 <translation id="8493179195440786826">Chromium эскирип калган.</translation>
+<translation id="8522220489792889625">Керек болгондо Chromium активдүү колдонулбаган өтмөктөрдүн эстутумун колдонот. Бул мүмкүнчүлүктү каалаган убакта параметрлерден өзгөртө аласыз.</translation>
 <translation id="8550334526674375523">Бул жумуш профили жеке профилиңизден толугу менен ажыратылган.</translation>
 <translation id="8558383651099478961">Ата-энеңиз Chromium үчүн "Сайттарга, колдонмолорго жана кеңейтүүлөргө уруксаттарды" өчүрүп койгон. Бул <ph name="EXTENSION_TYPE_PARAMETER" /> кеңейтүүсүн кошууга болбойт.</translation>
 <translation id="8561285221328166383">Chromium жаңыртууларын алып туруу үчүн macOS 10.13 же андан кийинки версиясын орнотушуңуз керек. Бул компьютерде macOS 10.12 версиясы колдонулууда.</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb
index a2d953c..54cce1e 100644
--- a/chrome/app/resources/chromium_strings_lo.xtb
+++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">Chromium ກຳລັງສຳຫຼວດຄຸນສົມບັດໃໝ່ໆທີ່ເຮັດໃຫ້ເວັບໄຊຕ່າງໆສາມາດສະໜອງປະສົບການໃນການທ່ອງເວັບແບບດຽວກັນໂດຍໃຊ້ປະລິມານອິນເຕີເນັດຂອງທ່ານໃຫ້ໜ້ອຍລົງ</translation>
 <translation id="7686590090926151193">Chromium ບໍ່ແມ່ນໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນຂອງທ່ານ</translation>
 <translation id="7689606757190482937">ຊິ້ງຂໍ້ມູນ ແລະ ປັບແຕ່ງ Chromium ໃຫ້ເປັນແບບສ່ວນຕົວໃນທົ່ວອຸປະກອນຂອງທ່ານ</translation>
-<translation id="7714577916146996629">ເມື່ອເປີດແລ້ວ, Chromium ຈະຮຽກຄືນໜ່ວຍຄວາມຈຳແຖບຕ່າງໆທີ່ທ່ານບໍ່ໄດ້ນຳໃຊ້. ສິ່ງນີ້ຈະເຮັດໃຫ້ພື້ນທີ່ຫວ່າງຂອງຊັບພະຍາກອນໃນຄອມພິວເຕີຂອງທ່ານເພີ່ມຂຶ້ນເພື່ອໃຊ້ໃນໜ້າວຽກອື່ນໆ ແລະ ເຮັດໃຫ້ Chromium ເຮັດວຽກໄດ້ຢ່າງວ່ອງໄວ. ແຖບທີ່ບໍ່ໄດ້ນຳໃຊ້ຈະຫວ່າງເປົ່າ ແລະ ໂຫຼດໃໝ່ໂດຍອັດຕະໂນມັດເມື່ອທ່ານຄລິກໃສ່ພວກມັນ. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /> ຫຼື <ph name="BEGIN_LINK_2" />ສົ່ງຄຳຕິຊົມ<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ນີ້ຈະລຶບຂໍ້ມູນການທ່ອງເວັບຂອງທ່ານອອກຈາກອຸປະກອນນີ້. ເພື່ອກູ້ຂໍ້ມູນຂອງທ່ານຄືນໃນພາຍຫຼັງ, ກະລຸນາເຂົ້າສູ່ລະບົບ Chromium ເປັນ <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">ຕົວຕິດຕັ້ງບໍ່ສາມາດສ້າງໄດເຣັກຕໍຣີຊົ່ວຄາວໄດ້. ກະລຸນາກວດເບິ່ງບ່ອນ​ວ່າງດິສກ໌ ແລະການອະນຸຍາດ ເພື່ອຕິດຕັ້ງຊອບແວ.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
@@ -334,6 +333,7 @@
 <translation id="8453117565092476964">ຄັງຕົວຕິດຕັ້ງຖືກເສຍຫາຍ ຫຼືໃຊ້ບໍ່ໄດ້. ກະລຸນາດາວໂຫຼດ Chromium ອີກ.</translation>
 <translation id="8463672209299734063">ຕົວເລືອກເສີມ: ຊ່ວຍປັບປຸງຄຸນສົມບັດ ແລະ ປະສິດທິພາບຂອງ ChromiumOS ໂດຍການສົ່ງຂໍ້ມູນການວິນິໄສ ແລະ ການນຳໃຊ້ໄປໃຫ້ Google ໂດຍອັດຕະໂນມັດ.</translation>
 <translation id="8493179195440786826">Chromium ຫຼ້າສະໄໝແລ້ວ</translation>
+<translation id="8522220489792889625">Chromium ຈະເອີ້ນໜ່ວຍຄວາມຈຳກັບຄືນມາຈາກແຖບທີ່ທ່ານບໍ່ໄດ້ໃຊ້ເປັນປະຈຳຕາມທີ່ຕ້ອງການ. ທ່ານສາມາດປ່ຽນສິ່ງນີ້ຕອນໃດກໍໄດ້ໃນການຕັ້ງຄ່າ.</translation>
 <translation id="8550334526674375523">ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກນີ້ແຍກກັນຢ່າງສິ້ນເຊີງຈາກໂປຣໄຟລ໌ສ່ວນຕົວຂອງທ່ານ.</translation>
 <translation id="8558383651099478961">ພໍ່ແມ່ຂອງທ່ານໄດ້ປິດ "ການອະນຸຍາດສຳລັບເວັບໄຊ, ແອັບ ແລະ ສ່ວນຂະຫຍາຍ" ສຳລັບ Chromium ແລ້ວ. ການເພີ່ມ <ph name="EXTENSION_TYPE_PARAMETER" /> ນີ້ບໍ່ໄດ້ຮັບອະນຸຍາດ.</translation>
 <translation id="8561285221328166383">ເພື່ອຮັບອັບເດດ Chromium ໃນອະນາຄົດ, ທ່ານຈະຕ້ອງໃຊ້ macOS 10.13 ຂຶ້ນໄປ. ຄອມພິວເຕີນີ້ກຳລັງໃຊ້ macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb
index e2b233a..dc69fda 100644
--- a/chrome/app/resources/chromium_strings_lt.xtb
+++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">„Chromium“ tyrinėja naujas funkcijas, leidžiančias svetainėms teikti tas pačias naršymo funkcijas, naudojant mažiau jūsų duomenų</translation>
 <translation id="7686590090926151193">„Chromium“ nėra numatytoji naršyklė</translation>
 <translation id="7689606757190482937">Sinchronizuokite ir suasmeninkite „Chromium“ skirtinguose įrenginiuose</translation>
-<translation id="7714577916146996629">Kai įjungta, „Chromium“ iš naujo įtraukia atmintį iš skirtukų, kurių aktyviai nenaudojate. Tai atlaisvina kompiuterio šaltinius kitoms užduotims ir užtikrina „Chromium“ spartą. Neaktyvūs skirtukai rodomi tušti ir automatiškai įkeliami iš naujo juos spustelėjus. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /> arba <ph name="BEGIN_LINK_2" />siųskite atsiliepimą<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Atlikus šį veiksmą iš šio įrenginio bus ištrinti naršymo duomenys. Jei vėliau norėsite gauti duomenis, prisijunkite prie „Chromium“ kaip <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Diegimo programai nepavyko sukurti laikino katalogo. Patikrinkite, ar yra laisvos vietos diske ir, ar leidžiama įdiegti programinę įrangą.</translation>
 <translation id="7790626492778995050">„<ph name="PAGE_TITLE" />“ – „Chromium Canary“</translation>
diff --git a/chrome/app/resources/chromium_strings_lv.xtb b/chrome/app/resources/chromium_strings_lv.xtb
index 5a8ff409..d527dd6c 100644
--- a/chrome/app/resources/chromium_strings_lv.xtb
+++ b/chrome/app/resources/chromium_strings_lv.xtb
@@ -328,6 +328,7 @@
 <translation id="8453117565092476964">Instalēšanas programmas arhīvs ir bojāts vai nav derīgs. Lejupielādējiet Chromium vēlreiz.</translation>
 <translation id="8463672209299734063">Neobligāti: palīdziet uzlabot Chromium OS funkcijas un veiktspēju, automātiski nosūtot Google serveriem diagnostikas un lietojuma datus.</translation>
 <translation id="8493179195440786826">Chromium versija ir novecojusi</translation>
+<translation id="8522220489792889625">Chromium pēc vajadzības atgūst atmiņas lietojumu no cilnēm, kuras jūs aktīvi neizmantojat. Iestatījumos varat jebkurā laikā to mainīt.</translation>
 <translation id="8550334526674375523">Šis darba profils ir pilnīgi nesaistīts ar jūsu personīgo profilu.</translation>
 <translation id="8558383651099478961">Viens no jūsu vecākiem ir izslēdzis “Atļaujas vietnēm, lietotnēm un paplašinājumiem” pārlūkam Chromium. Nav atļauts pievienot šo: <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">Lai saņemtu turpmākus Chromium atjauninājumus, ir nepieciešama operētājsistēma macOS 10.13 vai jaunāka versija. Šajā datorā tiek izmantota macOS 10.12. versija</translation>
diff --git a/chrome/app/resources/chromium_strings_mk.xtb b/chrome/app/resources/chromium_strings_mk.xtb
index 853d1e53..3aebfbe 100644
--- a/chrome/app/resources/chromium_strings_mk.xtb
+++ b/chrome/app/resources/chromium_strings_mk.xtb
@@ -63,6 +63,7 @@
 <translation id="2583187216237139145">Податоците на Chromium што се генерирани при користењето на овој профил (како на пример, создавање обележувачи, историја, лозинки и други поставки) може да се отстранат од страна на администраторот на работниот профил. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Настана грешка на оперативен систем при инсталација. Преземете го Chromium повторно.</translation>
 <translation id="2661879430930417727">Ако споделувате уред, пријателите и членовите на семејството може одделно да прелистуваат и да го поставуваат Chromium како што сакаат</translation>
+<translation id="2669853942967761236">Chromium ја блокираше оваа датотека од архивате бидејќи можеби крие злонамерен софтвер</translation>
 <translation id="268602741124540128">Добре дојдовте во Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Картичка на Chromium</translation>
 <translation id="2718390899429598676">За дополнителна безбедност, Chromium ќе ги шифрира вашите податоци.</translation>
@@ -304,7 +305,6 @@
 <translation id="7682601070171973634">Chromium истражува нови функции што им овозможуваат на сајтовите да го испорачуваат истото доживување при прелистувањето со користење помалку податоци</translation>
 <translation id="7686590090926151193">Chromium не е вашиот стандарден прелистувач</translation>
 <translation id="7689606757190482937">Синхронизирајте го и персонализирајте го Chromium на сите ваши уреди</translation>
-<translation id="7714577916146996629">Кога е вклучено, Chromium ја зема меморијата на картичките што активно не ги користите. Така се ослободуваат ресурсите на компјутерот за други задачи и Chromium ја задржува брзината. Неактивните картички се прикажуваат празни и автоматски се вчитуваат повторно кога ќе кликнете на нив. <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /> или <ph name="BEGIN_LINK_2" />испратете повратни информации<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Ова ќе ги избрише податоците од прелистувањето од уредов. За да ги вратите вашите податоци подоцна, најавете се на Chromium како <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Инсталаторот не може да создаде привремен директориум. Проверете дали има доволно празен простор и дозвола за инсталирање на софтверот.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb
index bf90fc2..4e77d7f 100644
--- a/chrome/app/resources/chromium_strings_ml.xtb
+++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">നിങ്ങളുടെ കുറച്ച് ഡാറ്റ മാത്രം ഉപയോഗിച്ച്, സമാന ബ്രൗസിംഗ് അനുഭവം നൽകാൻ സൈറ്റുകളെ അനുവദിക്കുന്ന പുതിയ ഫീച്ചറുകൾ Chromium നൽകുന്നു</translation>
 <translation id="7686590090926151193">Chromium നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസറല്ല</translation>
 <translation id="7689606757190482937">നിങ്ങളുടെ ഉപകരണങ്ങളിലുടനീളം Chromium സമന്വയിപ്പിച്ച് വ്യക്തിഗതമാക്കുക</translation>
-<translation id="7714577916146996629">ഓണായിരിക്കുമ്പോൾ, നിങ്ങൾ സജീവമായി ഉപയോഗിക്കാത്ത ടാബുകളിൽ നിന്ന് Chromium മെമ്മറി വീണ്ടെടുക്കുന്നു. ഇത് മറ്റ് ടാസ്‌കുകൾക്കായി നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ റിസോഴ്‌സുകളിൽ ഇടം സൃഷ്ടിക്കുകയും Chromium വേഗതയുള്ളതായി നിലനിർത്തുകയും ചെയ്യും. നിഷ്ക്രിയ ടാബുകളിൽ ഒന്നുമുണ്ടാകില്ല, നിങ്ങൾ ക്ലിക്ക് ചെയ്യുമ്പോൾ അവ സ്വയമേവ വീണ്ടും ലോഡ് ആകും. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /> അല്ലെങ്കിൽ <ph name="BEGIN_LINK_2" />ഫീഡ്ബാക്ക് അയയ്ക്കുക<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ഇത് ഈ ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ ബ്രൗസിംഗ് വിവരങ്ങളെ ഇല്ലാതാക്കും. പിന്നീട് വിവരങ്ങൾ വീണ്ടെടുക്കാൻ, <ph name="USER_EMAIL" /> എന്നയാളായി Chromium-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
 <translation id="7747138024166251722">ഇൻസ്റ്റാളറിന് താൽക്കാലിക ഡയറക്റ്ററി സൃഷ്‌ടിക്കാനായില്ല. ശൂന്യമായ ഡിസ്‍ക് സ്പെയിസും സോഫ്റ്റ്‌വെയർ ഇൻസ്റ്റാൾ ചെയ്യാനുള്ള അനുമതിയും പരിശോധിക്കുക.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb
index 5f391931..61d8237 100644
--- a/chrome/app/resources/chromium_strings_mn.xtb
+++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -63,6 +63,7 @@
 <translation id="2583187216237139145">Энэ профайлыг ашиглах үед үүссэн Chromium-н аливаа өгөгдлийг (хавчуурга, түүх, нууц үг болон бусад тохиргоог үүсгэх зэрэг) ажлын профайлын админ хасах боломжтой. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Суулгалтын явцад үйлдлийн системийн алдаа гарлаа. Chromium-ыг дахин татаж авна уу.</translation>
 <translation id="2661879430930417727">Хэрэв та төхөөрөмжийг дундаа ашигладаг бол найз нөхөд, гэр бүл тань хөтчөөр тусдаа үзэж, Chromium-г хүссэнээрээ тохируулах боломжтой</translation>
+<translation id="2669853942967761236">Энэ архивын файл хортой программ нууж байж магадгүй тул Chromium үүнийг блоклосон</translation>
 <translation id="268602741124540128">Chromium-д тавтай морилно уу, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Chromium таб</translation>
 <translation id="2718390899429598676">Таны аюулгүй байдлыг сайжруулахын тулд Chromium таны өгөгдлийг шифрлэх болно.</translation>
@@ -300,7 +301,6 @@
 <translation id="7682601070171973634">Chromium нь сайтуудад таны өгөгдлийг бага хэмжээгээр ашиглах боломжийг олгодог шинэ боломжуудыг судалж байна</translation>
 <translation id="7686590090926151193">Chromium таны өгөгдмөл хөтөч биш юм</translation>
 <translation id="7689606757190482937">Төхөөрөмжүүддээ Chromium-г синк хийж, хувийн болгох</translation>
-<translation id="7714577916146996629">Асаалттай үед Chromium таны идэвхтэй ашиглахгүй байгаа табуудаас санах ойг сэргээнэ. Ингэснээр таны компьютерын нөөцийг бусад ажилд зориулж чөлөөлөх бөгөөд Chromium-г хурдтай байлгана. Идэвхгүй табууд хоосон харагдах бөгөөд таныг тэдгээр дээр товшиход автоматаар дахин ачаална. <ph name="BEGIN_LINK" />Нэмэлт мэдээлэл авах<ph name="END_LINK" /> эсвэл <ph name="BEGIN_LINK_2" />санал хүсэлт илгээх<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Энэ нь төхөөрөмжөөс таны хайлтын түүхийг устгана. Өгөгдлөө дараа сэргээхийн тулд Chromium-д <ph name="USER_EMAIL" />-р нэвтэрнэ үү.</translation>
 <translation id="7747138024166251722">Суулгагч нь түр зуурын хадгалалтын санг үүсгэж чадсангүй. Дискэнд сул зай байгаа эсэхийг мөн программ хангамж суулгах зөвшөөрлийг шалгана уу.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Канари</translation>
diff --git a/chrome/app/resources/chromium_strings_mr.xtb b/chrome/app/resources/chromium_strings_mr.xtb
index 7d244ed..8e1cfda 100644
--- a/chrome/app/resources/chromium_strings_mr.xtb
+++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -303,7 +303,6 @@
 <translation id="7682601070171973634">Chromium हे साइटना तुमचा डेटा कमी वापरून समान ब्राउझिंग अनुभव देण्याची अनुमती देणारी नवीन वैशिष्‍ट्ये एक्सप्लोर करत आहे</translation>
 <translation id="7686590090926151193">Chromium तुमचा डीफॉल्ट ब्राउझर नाही</translation>
 <translation id="7689606757190482937">तुमच्या डिव्हाइसवर Chromium सिंक आणि पर्सनलाइझ करा</translation>
-<translation id="7714577916146996629">सुरू असेल, तेव्हा Chromium हे तुम्ही सक्रियपणे वापरत नसलेली मेमरी परत मिळवते. हे इतर टास्कसाठी तुमच्या कॉंप्युटरचे स्रोत मोकळे करते आणि Chromium ला वेगवान ठेवते. निष्क्रिय टॅब हे रिकामे दिसतात आणि तुम्ही त्यांवर क्लिक करता, तेव्हा ते आपोआप रीलोड होतात. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /> किंवा <ph name="BEGIN_LINK_2" />फीडबॅक पाठवा<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">हे या डिव्‍हाइस मधून तुमचा ब्राउझिंग डेटा हटवेल. नंतर तुमचा डेटा पुनर्प्राप्त करण्‍यासाठी, Chromium मध्ये <ph name="USER_EMAIL" /> म्हणून साइन इन करा.</translation>
 <translation id="7747138024166251722">इन्स्टॉलर तात्पुरती डिरेक्टरी तयार करू शकत नाही. कृपया सॉफ्टवेअर इंस्टॉल करण्यासाठी रिक्त डिस्क स्थान आणि परवानगी पहा.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium कॅनरी</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb
index dc19659..0c03762 100644
--- a/chrome/app/resources/chromium_strings_ms.xtb
+++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -331,6 +331,7 @@
 <translation id="8453117565092476964">Arkib pemasang rosak atau tidak sah. Sila muat turun Chromium sekali lagi.</translation>
 <translation id="8463672209299734063">Pilihan: Bantu kami mempertingkat ciri dan prestasi Chromium OS dengan menghantar data diagnostik dan penggunaan kepada Google secara automatik.</translation>
 <translation id="8493179195440786826">Chromium sudah usang</translation>
+<translation id="8522220489792889625">Seperti yang diperlukan, Chromium menuntut semula memori daripada tab yang anda tidak gunakan secara aktif. Anda boleh menukar pilihan ini pada bila-bila masa dalam tetapan.</translation>
 <translation id="8550334526674375523">Profil kerja ini terpisah sepenuhnya daripada profil peribadi anda.</translation>
 <translation id="8558383651099478961">Ibu/bapa anda telah mematikan "Kebenaran untuk laman web, apl dan sambungan" untuk Chromium. Tindakan menambah <ph name="EXTENSION_TYPE_PARAMETER" /> ini tidak dibenarkan.</translation>
 <translation id="8561285221328166383">Untuk mendapatkan kemaskinian Chromium yang akan datang, anda memerlukan macOS 10.13 atau yang lebih baharu. Komputer ini menggunakan macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb
index 12b1610e..945abfc3 100644
--- a/chrome/app/resources/chromium_strings_my.xtb
+++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -306,7 +306,6 @@
 <translation id="7682601070171973634">ဝဘ်ဆိုက်များအား ဒေတာချွေတာ၍ တူညီသောကြည့်ရှုနိုင်မှု အတွေ့အကြုံပေးနိုင်မည့် ဝန်ဆောင်မှုအသစ်များကို Chromium က စူးစမ်းလေ့လာနေပါသည်</translation>
 <translation id="7686590090926151193">Chromium သည် သင်၏ မူရင်းဘရောင်ဇာ မဟုတ်ပါ</translation>
 <translation id="7689606757190482937">သင်၏ စက်ပစ္စည်းများအားလုံးတွင် Chromium ကို စင့်ခ်လုပ်ပြီး စိတ်ကြိုက်ပြင်ဆင်ပါ</translation>
-<translation id="7714577916146996629">ဖွင့်ထားပါက Chromium သည် လက်ရှိ အသုံးမပြုသည့်တဘ်များမှ မှတ်ဉာဏ်ကို ပြန်လည်ရယူသည်။ ၎င်းက အခြားလုပ်ဆောင်စရာများအတွက် သင့်ကွန်ပျူတာ၏ ရင်းမြစ်များကို ရှင်းလင်းပေးပြီး Chromium ကို လျင်မြန်စေသည်။ အသုံးမပြုသည့် တဘ်များက အလွတ်ပုံဖြစ်နေပြီး ၎င်းတို့ကိုနှိပ်သောအခါ အလိုအလျောက် ပြန်လည်စတင်သည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /> (သို့) <ph name="BEGIN_LINK_2" />အကြံပြုချက် ပို့ရန်<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">၎င်းသည် ဤစက်ပစ္စည်းထဲရှိ အင်တာနက်အသုံးပြုမှု အချက်အလက်များကို ဖျက်လိုက်ပါမည်။ သင့်ဒေတာကို နောက်မှ ပြန်ယူရန် Chromium သို့ <ph name="USER_EMAIL" /> အဖြစ် လက်မှတ်ထိုးဝင်ပါ။</translation>
 <translation id="7747138024166251722">ဤထည့်သွင်းသူသည် ယာယီဒါရိုက်ထရီကို မဖန်တီးနိုင်ခဲ့ပါ။ ကျေးဇူးပြု၍ ဒစ်က် နေရာလွတ်နှင့် ဆော့ဖ်ဝဲထည့်သွင်းရန် ခွင့်ပြုချက်ကို စစ်ဆေးပါ။</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ne.xtb b/chrome/app/resources/chromium_strings_ne.xtb
index 54e65dc..584e3a9 100644
--- a/chrome/app/resources/chromium_strings_ne.xtb
+++ b/chrome/app/resources/chromium_strings_ne.xtb
@@ -331,6 +331,7 @@
 <translation id="8453117565092476964">स्थापना-कर्ता सङ्ग्रह दूषिट वा अवैध छ। कृपया फेरि Chromium डाउनलोड गर्नुहोस्।</translation>
 <translation id="8463672209299734063">ऐच्छिक: Google लाई डाइग्नोस्टिक र प्रयोगसम्बन्धी डेटा स्वतः पठाएर ChromiumOS को पर्फर्मेन्स र यसका सुविधाहरूको गुणस्तर सुधार्न सघाउनुहोस्।</translation>
 <translation id="8493179195440786826">Chromium पुरानो भएको छ</translation>
+<translation id="8522220489792889625">Chromium ले आवश्यकताअनुसार तपाईंले सक्रिय रूपमा प्रयोग नगरिरहनुभएका ट्याबको मेमोरी रिकभर गर्दछ। तपाईं जुनसुकै बेला सेटिङमा गई यो कुरा बदल्न सक्नुहुन्छ।</translation>
 <translation id="8550334526674375523">यो कार्य प्रोफाइल तपाईंको व्यक्तिगत प्रोफाइलबाट पूर्ण रूपमा अलग हुन्छ।</translation>
 <translation id="8558383651099478961">तपाईंका अभिभावकले Chromium का हकमा "साइट, एप तथा एक्सटेन्सनसम्बन्धी अनुमति" निष्क्रिय पार्नुभएको छ। तपाईंसँग यो <ph name="EXTENSION_TYPE_PARAMETER" /> थप्ने अनुमति छैन।</translation>
 <translation id="8561285221328166383">तपाईंको कम्प्युटरमा macOS १०.१३ वा सोभन्दा नयाँ संस्करण छ भने मात्र तपाईं भविष्यमा Chromium का अपडेट प्राप्त गर्नुहुन्छ। यो कम्प्युटरमा macOS १०.१२ प्रयोग भइरहेको छ।</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb
index 66afde1..d53bf4a 100644
--- a/chrome/app/resources/chromium_strings_nl.xtb
+++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -63,6 +63,7 @@
 <translation id="2583187216237139145">Alle Chromium-gegevens die worden gegenereerd bij het gebruik van dit profiel (zoals bookmarks, geschiedenis, wachtwoorden en andere instellingen) kunnen worden verwijderd door de beheerder van het werkprofiel. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Er is tijdens de installatie een fout opgetreden in het besturingssysteem. Download Chromium opnieuw.</translation>
 <translation id="2661879430930417727">Als je een apparaat deelt, kunnen vrienden en familie afzonderlijk surfen en Chromium instellen zoals zij dat willen.</translation>
+<translation id="2669853942967761236">Chromium heeft dit archiefbestand geblokkeerd omdat het misschien malware bevat</translation>
 <translation id="268602741124540128">Welkom bij Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Chromium-tabblad</translation>
 <translation id="2718390899429598676">Je gegevens worden voor extra beveiliging door Chromium gecodeerd.</translation>
@@ -303,7 +304,6 @@
 <translation id="7682601070171973634">Chromium bevat nieuwe experimentele functies waarmee sites dezelfde browsefunctionaliteit kunnen leveren terwijl er minder van je gegevens worden gebruikt</translation>
 <translation id="7686590090926151193">Chromium is niet je standaardbrowser</translation>
 <translation id="7689606757190482937">Chromium synchroniseren en personaliseren op al je apparaten</translation>
-<translation id="7714577916146996629">Als deze instelling aanstaat, claimt Chromium geheugen terug van tabbladen die je niet actief gebruikt. Zo worden de resources van je computer vrijgemaakt voor andere taken en blijft Chromium snel. Inactieve tabbladen worden leeg weergegeven en worden automatisch opnieuw geladen als je erop klikt. <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="7745317241717453663">Hiermee worden je browsegegevens verwijderd van dit apparaat. Als je je gegevens later wilt terughalen, log je in bij Chromium als <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Het installatieprogramma kan geen tijdelijke directory maken. Controleer of je nog schijfruimte hebt en of je rechten hebt om software te installeren.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb
index 260a7ccd..3e13f94 100644
--- a/chrome/app/resources/chromium_strings_no.xtb
+++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -301,7 +301,6 @@
 <translation id="7682601070171973634">Chromium utforsker nye funksjoner som gjør det mulig for nettsteder å bruke mindre av dataene dine og likevel gi deg den samme nettlesingsopplevelsen</translation>
 <translation id="7686590090926151193">Chromium er ikke standardnettleseren din</translation>
 <translation id="7689606757190482937">Synkroniser og gi Chromium et personlig preg på alle enhetene dine</translation>
-<translation id="7714577916146996629">Når denne innstillingen er på, gjenvinner Chromium minne fra faner du ikke bruker aktivt. Dette frigjør datamaskinens ressurser til andre oppgaver og sørger for at Chromium holder seg rask. Inaktive faner vises som tomme og lastes automatisk inn på nytt når du klikker på 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="7745317241717453663">Dette sletter nettlesingsdataene dine fra denne enheten. For å hente dataene dine igjen senere må du logge på Chromium som <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Installasjonsprogrammet kunne ikke opprette en midlertidig katalog. Kontroller at du har nok ledig diskplass og tillatelse til å installere programvare.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
@@ -331,6 +330,7 @@
 <translation id="8453117565092476964">Installasjonsarkivet er skadet eller ugyldig. Last ned Chromium på nytt.</translation>
 <translation id="8463672209299734063">Valgfritt: Bidra til å gjøre funksjonene og ytelsen til ChromiumOS bedre ved å sende diagnostikk og bruksdata automatisk til Google.</translation>
 <translation id="8493179195440786826">Chromium er utdatert</translation>
+<translation id="8522220489792889625">Ved behov tar Chromium tilbake minne fra faner du ikke bruker aktivt. Du kan når som helst endre dette i innstillingene.</translation>
 <translation id="8550334526674375523">Denne jobbprofilen er helt separat fra den personlige profilen din.</translation>
 <translation id="8558383651099478961">Forelderen din har slått av «Tillatelser for nettsteder, apper og utvidelser» for Chromium. Du har ikke tillatelse til å legge til denne <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">For å få fremtidige Chromium-oppdateringer må du ha macOS 10.13 eller nyere. Denne datamaskinen bruker macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_or.xtb b/chrome/app/resources/chromium_strings_or.xtb
index 1a8fbb5..5618952 100644
--- a/chrome/app/resources/chromium_strings_or.xtb
+++ b/chrome/app/resources/chromium_strings_or.xtb
@@ -303,7 +303,6 @@
 <translation id="7682601070171973634">ଆପଣଙ୍କର କମ୍ ଡାଟା ବ୍ୟବହାର କରି ସମାନ ବ୍ରାଉଜିଂ ଅନୁଭୂତି ଡେଲିଭର କରିବା ପାଇଁ ସାଇଟଗୁଡ଼ିକୁ ଅନୁମତି ଦେଉଥିବା ନୂଆ ଫିଚରଗୁଡ଼ିକୁ Chromium ଏକ୍ସପ୍ଲୋର କରୁଛି</translation>
 <translation id="7686590090926151193">Chromium ଆପଣଙ୍କର ଡିଫଲ୍ଟ ବ୍ରାଉଜର୍ ନୁହେଁ</translation>
 <translation id="7689606757190482937">ଆପଣଙ୍କର ଡିଭାଇସ୍‍ଗୁଡ଼ିକରେ Chromium‍କୁ ସିଙ୍କ୍ ଓ ବ୍ୟକ୍ତିଗତକୃତ କରନ୍ତୁ</translation>
-<translation id="7714577916146996629">ଚାଲୁ ଥିବା ସମୟରେ, Chromium ଆପଣ ସକ୍ରିୟ ଭାବେ ବ୍ୟବହାର କରୁନଥିବା ଟାବଗୁଡ଼ିକରୁ ମେମୋରୀ ପୁଣି ଦାବି କରେ। ଅନ୍ୟ ଟାସ୍କଗୁଡ଼ିକ ପାଇଁ ଏହା ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟରର ରିସୋର୍ସଗୁଡ଼ିକୁ ଖାଲି କରେ ଏବଂ Chromiumକୁ ସ୍ପିଡୀ ରଖେ। ନିଷ୍କ୍ରିୟ ଟାବଗୁଡ଼ିକ ଖାଲି ଦେଖାଯାଏ ଏବଂ ଆପଣ ସେଗୁଡ଼ିକୁ କ୍ଲିକ କଲେ ତାହା ସ୍ୱଚାଳିତ ଭାବେ ପୁଣି ଲୋଡ ହୁଏ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /> କିମ୍ବା <ph name="BEGIN_LINK_2" />ମତାମତ ପଠାନ୍ତୁ<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ଏହା, ଏହି ଡିଭାଇସ୍‍ରୁ ଆପଣଙ୍କର ବ୍ରାଉଜିଂ ଡାଟା ଖାଲି କରିଦେବେ। ପରେ ଆପଣଙ୍କ ଡାଟାକୁ ପୁନଃପ୍ରାପ୍ତ କରିବା ନିମନ୍ତେ, Chromiumକୁ <ph name="USER_EMAIL" />ରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation>
 <translation id="7747138024166251722">ସଂସ୍ଥାପକ ଏକ ଅସ୍ଥାୟୀ ଡିରେକ୍ଟୋରୀ ସୃଷ୍ଟି କରିପାରିବ ନାହିଁ । ଦୟାକରି ମୁକ୍ତ ଡିସ୍କ ସ୍ଥାନ ପାଇଁ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ସଂସ୍ଥାପନ ସଫ୍ଟୱେୟାରକୁ ଅନୁମତି କରନ୍ତୁ ।</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium କେନେରୀ</translation>
diff --git a/chrome/app/resources/chromium_strings_pa.xtb b/chrome/app/resources/chromium_strings_pa.xtb
index fae49947..6fd50247 100644
--- a/chrome/app/resources/chromium_strings_pa.xtb
+++ b/chrome/app/resources/chromium_strings_pa.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">Chromium ਨਵੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਪੜਚੋਲ ਕਰ ਰਿਹਾ ਹੈ ਜੋ ਸਾਈਟਾਂ ਨੂੰ ਤੁਹਾਡੇ ਘੱਟ ਡਾਟੇ ਦੀ ਵਰਤੋਂ ਦੇ ਨਾਲ ਉਹੀ ਬ੍ਰਾਊਜ਼ਿੰਗ ਅਨੁਭਵ ਪ੍ਰਦਾਨ ਕਰਨ ਦੀ ਦਿੰਦੀਆਂ ਹਨ</translation>
 <translation id="7686590090926151193">Chromium ਤੁਹਾਡਾ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਬ੍ਰਾਊਜ਼ਰ ਨਹੀਂ ਹੈ</translation>
 <translation id="7689606757190482937">ਸਿੰਕ ਕਰਕੇ ਆਪਣੇ ਡੀਵਾਈਸਾਂ ਵਿਚਾਲੇ Chromium ਨੂੰ ਵਿਅਕਤੀਗਤ ਬਣਾਓ</translation>
-<translation id="7714577916146996629">ਚਾਲੂ ਹੋਣ 'ਤੇ, Chromium ਉਨ੍ਹਾਂ ਟੈਬਾਂ ਤੋਂ ਮੈਮੋਰੀ ਦਾ ਮੁੜ-ਦਾਅਵਾ ਕਰਦਾ ਹੈ ਜਿਸਨੂੰ ਤੁਸੀਂ ਸਰਗਰਮੀ ਨਾਲ ਨਹੀਂ ਵਰਤ ਰਹੇ ਹੋ। ਇਹ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਦੇ ਸਰੋਤਾਂ ਨੂੰ ਹੋਰ ਕਾਰਜਾਂ ਲਈ ਖਾਲੀ ਕਰਦਾ ਹੈ ਅਤੇ Chromium ਨੂੰ ਤੇਜ਼ ਬਣਾਈ ਰੱਖਦਾ ਹੈ। ਅਕਿਰਿਆਸ਼ੀਲ ਟੈਬ ਖਾਲੀ ਦਿਸਦੇ ਹਨ ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਉਨ੍ਹਾਂ 'ਤੇ ਕਲਿੱਕ ਕਰਨ 'ਤੇ ਰੀਲੋਡ ਹੋ ਜਾਂਦੇ ਹਨ। <ph name="BEGIN_LINK" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK" /> ਜਾਂ <ph name="BEGIN_LINK_2" />ਵਿਚਾਰ ਭੇਜੋ<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ਇਸ ਨਾਲ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟੇ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਬਾਅਦ ਵਿੱਚ ਆਪਣੇ ਡਾਟੇ ਨੂੰ ਮੁੜ-ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, Chromium 'ਤੇ <ph name="USER_EMAIL" /> ਵਜੋਂ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation>
 <translation id="7747138024166251722">ਸਥਾਪਨਾਕਾਰ ਇੱਕ ਅਸਥਾਈ ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਬਣਾ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਫ਼ਟਵੇਅਰ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਖਾਲੀ ਡਿਸਕ ਸਪੇਸ ਅਤੇ ਇਜਾਜ਼ਤ ਦੀ ਜਾਂਚ ਕਰੋ।</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb
index e980d30..2368095 100644
--- a/chrome/app/resources/chromium_strings_pl.xtb
+++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -53,6 +53,7 @@
 <translation id="2359808026110333948">Dalej</translation>
 <translation id="2384373936468275798">System operacyjny Chromium nie może zsynchronizować danych, ponieważ dane logowania na Twoje konto są nieaktualne.</translation>
 <translation id="2396765026452590966">Rozszerzenie „<ph name="EXTENSION_NAME" />” ustawiło inną stronę wyświetlaną po uruchomieniu Chromium.</translation>
+<translation id="2400844369696905771">Gdy ta funkcja jest włączona, Chromium odzyskuje pamięć z kart, których aktywnie nie używasz. Powoduje to zwolnienie zasobów komputera na potrzeby innych zadań i przyspiesza działanie Chromium. Nieaktywne karty wyglądają na puste i automatycznie ładują się ponownie po kliknięciu. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="2401032172288869980">Ta strona musi mieć w Chromium dostęp do aparatu i mikrofonu</translation>
 <translation id="2483889755041906834">W Chromium</translation>
 <translation id="2485422356828889247">Odinstaluj</translation>
@@ -140,6 +141,7 @@
 <translation id="4285930937574705105">Instalacja nie powiodła się z powodu nieokreślonego błędu. Jeśli Chromium jest aktualnie uruchomiony, zamknij go i spróbuj ponownie.</translation>
 <translation id="4304713468139749426">Menedżer haseł</translation>
 <translation id="4334294535648607276">Pobieranie ukończone.</translation>
+<translation id="437317747729858884">Aby przyspieszyć przeglądanie, Chromium odzyskuje pamięć z nieużywanych kart.</translation>
 <translation id="439358628917130594"><ph name="MANAGER" /> wymaga, aby przed korzystaniem z tego urządzenia przeczytać i zaakceptować Warunki korzystania z usługi. Nie rozszerzają, nie zmieniają ani nie ograniczają one Warunków korzystania z Chromium OS.</translation>
 <translation id="4407044323746248786">Zamknąć Chromium mimo to?</translation>
 <translation id="4415566066719264597">Zezwalaj Chromium na działanie w tle</translation>
@@ -299,7 +301,6 @@
 <translation id="7682601070171973634">Testujemy nowe funkcje Chromium, dzięki którym witryny będą mogły zapewniać użytkownikom taką samą wygodę przeglądania treści przy wykorzystaniu mniejszej ilości danych</translation>
 <translation id="7686590090926151193">Chromium nie jest domyślną przeglądarką</translation>
 <translation id="7689606757190482937">Synchronizuj dane Chromium i korzystaj z własnych ustawień przeglądarki na wielu urządzeniach</translation>
-<translation id="7714577916146996629">Gdy ta funkcja jest włączona, Chromium odzyskuje pamięć z kart, których aktywnie nie używasz. Powoduje to zwolnienie zasobów komputera na potrzeby innych zadań i przyspiesza działanie Chromium. Nieaktywne karty wyglądają na puste i automatycznie ładują się ponownie po kliknięciu. <ph name="BEGIN_LINK" />Dowiedz się więcej<ph name="END_LINK" /> lub <ph name="BEGIN_LINK_2" />prześlij opinię<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Spowoduje to usunięcie danych przeglądania z tego urządzenia. Aby później odzyskać dane, zaloguj się w Chromium jako <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Instalator nie mógł utworzyć katalogu tymczasowego. Sprawdź, czy na dysku jest dość wolnego miejsca oraz sprawdź, czy posiadasz uprawnienia do instalowania programów.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
@@ -309,6 +310,7 @@
 <translation id="7872446069773932638">Pobieram… Pozostało: <ph name="SECONDS" /> s.</translation>
 <translation id="7877292582355102282"><ph name="BEGIN_BOLD" />W jaki sposób możesz zarządzać swoimi danymi:<ph name="END_BOLD" /> żeby chronić Twoją prywatność, automatycznie usuwamy Twoje zainteresowania, które są starsze niż 4 tygodnie. Podczas dalszego przeglądania zainteresowanie może się pojawić ponownie na liście. Możesz też usunąć zainteresowania, których Chrome ma nie brać pod uwagę.</translation>
 <translation id="7937630085815544518">Byłeś zalogowany w Chromium jako <ph name="USER_EMAIL_ADDRESS" />. Zaloguj się ponownie, korzystając z tego samego konta.</translation>
+<translation id="7947085610734123927">Przeglądarka Chromium włączyła Oszczędzanie pamięci</translation>
 <translation id="7975919845073681630">To jest druga instalacja Chromium. Nie można ustawić jej jako przeglądarki domyślnej.</translation>
 <translation id="7997934263947464652">Rozszerzenia, aplikacje i motywy z nieznanych źródeł mogą wyrządzić szkody na Twoim urządzeniu. Chromium zaleca, aby instalować je tylko ze sklepu <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation>
 <translation id="8013436988911883588">Gdy Chromium będzie mieć dostęp, strony będą mogły prosić Cię o dostęp.</translation>
@@ -334,6 +336,7 @@
 <translation id="8558383651099478961">Rodzic wyłączył „Uprawnienia stron, aplikacji i rozszerzeń” dla Chromium. Dodanie elementu <ph name="EXTENSION_TYPE_PARAMETER" /> jest niedozwolone.</translation>
 <translation id="8561285221328166383">Aby otrzymywać w przyszłości aktualizacje Chromium, musisz mieć system macOS 10.13 lub nowszy. Na tym komputerze jest zainstalowany system macOS 10.12.</translation>
 <translation id="8568283329061645092">Chromium może sprawdzić Twoje hasła, gdy zalogujesz się na swoje konto Google</translation>
+<translation id="8574036838419011058">Gdy ta funkcja jest włączona, Chromium oszczędza baterię, ograniczając aktywność w tle i efekty wizualne, takie jak płynne przewijanie i liczba klatek w filmie. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Autorzy Chromium. Wszelkie prawa zastrzeżone.</translation>
 <translation id="8608079656141766906"><ph name="BEGIN_BOLD" />Jak używamy tych danych:<ph name="END_BOLD" /> w Chromium 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="8619360774459241877">Uruchamiam Chromium…</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-BR.xtb b/chrome/app/resources/chromium_strings_pt-BR.xtb
index 920747c..b92a35a 100644
--- a/chrome/app/resources/chromium_strings_pt-BR.xtb
+++ b/chrome/app/resources/chromium_strings_pt-BR.xtb
@@ -296,7 +296,6 @@
 <translation id="7682601070171973634">O Chromium está explorando novos recursos que permitem que os sites ofereçam a mesma experiência de navegação usando menos dados</translation>
 <translation id="7686590090926151193">O Chromium não é seu navegador padrão</translation>
 <translation id="7689606757190482937">Sincronize e personalize o Chromium em todos os seus dispositivos</translation>
-<translation id="7714577916146996629">Quando essa opção está ativada, o Chromium recupera a memória das guias que você não está usando ativamente. Isso libera os recursos do seu computador para outras tarefas e mantém a velocidade do Chromium. As guias inativas aparecem vazias e são atualizadas automaticamente quando você clica nelas. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /> ou <ph name="BEGIN_LINK_2" />envie um feedback<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Essa ação excluirá seus dados de navegação deste dispositivo. Para recuperá-los mais tarde, faça login no Chromium como <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">O instalador não conseguiu criar um diretório temporário. Verifique se há espaço livre em disco e se há permissão para a instalação de software.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" />: Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb
index e71f927..2a8c63c 100644
--- a/chrome/app/resources/chromium_strings_pt-PT.xtb
+++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -61,6 +61,7 @@
 <translation id="2583187216237139145">Os dados do Chromium gerados durante a utilização deste perfil (como a criação de marcadores, histórico, palavras-passe e outras definições) podem ser removidos pelo administrador do perfil de trabalho. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Ocorreu um erro no sistema operativo durante a instalação. Descarregue novamente o Chromium.</translation>
 <translation id="2661879430930417727">Se partilhar um dispositivo, os amigos e os familiares podem navegar separadamente e configurar o Chromium da forma que quiserem.</translation>
+<translation id="2669853942967761236">O Chromium bloqueou este ficheiro de arquivo porque pode ocultar software malicioso</translation>
 <translation id="268602741124540128">Damos-lhe as boas-vindas ao Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Separador do Chromium</translation>
 <translation id="2718390899429598676">Para uma segurança adicional, o Chromium encripta os seus dados.</translation>
@@ -302,7 +303,6 @@
 <translation id="7682601070171973634">O Chromium está a explorar novas funcionalidades que permitem que os sites forneçam a mesma experiência de navegação com uma menor utilização dos seus dados</translation>
 <translation id="7686590090926151193">O Chromium não é o seu navegador predefinido.</translation>
 <translation id="7689606757190482937">Sincronizar e personalizar o Chromium em todos os dispositivos</translation>
-<translation id="7714577916146996629">Quando a definição está ativada, o Chromium recupera a memória dos separadores que não está a usar ativamente. Esta ação liberta os recursos do computador para outras tarefas e mantém o Chromium rápido. Os separadores inativos aparecem vazios e são atualizados automaticamente quando clica nos 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="7745317241717453663">Esta ação elimina os dados de navegação deste dispositivo. Para recuperar os dados mais tarde, inicie sessão no Chromium como <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">O programa de instalação não conseguiu criar um directório temporário. Verifique se há espaço livre no disco e permissão para a instalação do software.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb
index 1a50e8c1..ffc1b628 100644
--- a/chrome/app/resources/chromium_strings_ro.xtb
+++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -301,7 +301,6 @@
 <translation id="7682601070171973634">Chromium explorează noi funcții care le dau site-urilor posibilitatea să ofere aceeași experiență de navigare, folosind mai puține date despre tine</translation>
 <translation id="7686590090926151193">Chromium nu este browserul prestabilit</translation>
 <translation id="7689606757190482937">Sincronizează și personalizează Chromium pe toate dispozitivele</translation>
-<translation id="7714577916146996629">Când opțiunea este activată, Chromium revendică memoria din filele pe care nu le folosești în mod activ. Acțiunea eliberează resursele computerului pentru alte activități și menține viteza ridicată a browserului Chromium. Filele inactive se afișează goale și se reîncarcă automat când dai clic pe ele. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /> sau <ph name="BEGIN_LINK_2" />trimite feedback<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Astfel, se vor șterge datele de navigare de pe acest dispozitiv. Pentru a recupera datele mai târziu, conectează-te la Chromium ca <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Programul de instalare nu a putut crea un director temporar. Verifică dacă există suficient spațiu liber și dacă ai drepturile necesare pentru a instala software-ul.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb
index 03d9748..1ec1631 100644
--- a/chrome/app/resources/chromium_strings_ru.xtb
+++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -297,7 +297,6 @@
 <translation id="7682601070171973634">Chromium представляет новый взгляд на просмотр веб-страниц: сайты функционируют в обычном режиме, собирая меньше данных о вас.</translation>
 <translation id="7686590090926151193">Chromium не является браузером по умолчанию.</translation>
 <translation id="7689606757190482937">Синхронизируйте данные Chromium на всех устройствах</translation>
-<translation id="7714577916146996629">В этом режиме Chromium не использует память на вкладки, которые некоторое время оставались неактивными. Это освобождает ресурсы компьютера для текущих задач и поддерживает быструю работу Chromium. Неактивные вкладки при этом показываются как пустые и автоматически загружаются при нажатии на них. Вы можете <ph name="BEGIN_LINK" />узнать больше<ph name="END_LINK" /> или <ph name="BEGIN_LINK_2" />отправить отзыв<ph name="END_LINK_2" />.</translation>
 <translation id="7745317241717453663">Данные о работе в браузере будут удалены с устройства. Чтобы восстановить их позже, войдите в Chromium как <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Программе установки не удалось создать временный каталог. Возможно, у вас нет прав на установку приложений или недостаточно места на диске.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
@@ -327,6 +326,7 @@
 <translation id="8453117565092476964">Установочный архив поврежден. Скачайте Chromium ещё раз.</translation>
 <translation id="8463672209299734063">Автоматически отправлять данные об использовании и диагностике в Google, чтобы помогать нам повышать производительность и улучшать функции Chromium OS (необязательно)</translation>
 <translation id="8493179195440786826">Версия Chromium устарела</translation>
+<translation id="8522220489792889625">При необходимости Chromium освобождает память, закрывая вкладки, которые некоторое время не использовались. Этот параметр можно в любой момент изменить в настройках.</translation>
 <translation id="8550334526674375523">Этот рабочий профиль никак не связан с вашим личным профилем.</translation>
 <translation id="8558383651099478961">Родители отключили в Chromium параметр "Разрешения для сайтов, приложений и расширений". Добавлять это <ph name="EXTENSION_TYPE_PARAMETER" /> запрещено.</translation>
 <translation id="8561285221328166383">На вашем компьютере используется macOS 10.12. Чтобы получать обновления Chromium, установите на устройство macOS 10.13 или более поздней версии.</translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb
index e13de80..679b724 100644
--- a/chrome/app/resources/chromium_strings_si.xtb
+++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -333,6 +333,7 @@
 <translation id="8453117565092476964">ස්ථාපන ගබඩාව නරක් වී හෝ වැරදිය. කරුණාකර නැවත Chromium බාගන්න.</translation>
 <translation id="8463672209299734063">විකල්පමය: දෝෂ නිර්ණ සහ භාවිත දත්ත ස්වයංක්‍රියව Google වෙත යැවීමෙන් ChromiumOS විශේෂාංග සහ කාර්යසාධනය වැඩිදියුණු කිරීමට උදවු වන්න.</translation>
 <translation id="8493179195440786826">Chromium යල් පැනගොස් ඇත</translation>
+<translation id="8522220489792889625">අවශ්‍ය පරිදි, Chromium ඔබ සක්‍රියව භාවිතා නොකරන පටිතිවලින් මතකය නැවත ලබා ගනී. ඔබට සැකසීම් තුළ මෙය ඕනෑම වේලාවක වෙනස් කළ හැක.</translation>
 <translation id="8550334526674375523">මෙම කාර්යාල පැතිකඩ ඔබගේ පුද්ගලික පැතිකඩෙන් සම්පූර්ණයෙන්ම වෙන්ව ඇත.</translation>
 <translation id="8558383651099478961">ඔබේ මාපිය Chromium සඳහා "වෙබ් අඩවි, යෙදුම් සහ දිගු සඳහා වන අවසර" අක්‍රිය කර ඇත. මෙම <ph name="EXTENSION_TYPE_PARAMETER" /> එක් කිරීමට අවසර නැත.</translation>
 <translation id="8561285221328166383">අනාගත Chromium යාවත්කාලීන ලබා ගැනීමට, ඔබට macOS 10.13 හෝ පසු අනුවාදයක් අවශ්‍ය වේ. මෙම පරිගණකය macOS 10.12 භාවිත කරමින් සිටියි.</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb
index 4fdef5a..954726b 100644
--- a/chrome/app/resources/chromium_strings_sk.xtb
+++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -63,6 +63,7 @@
 <translation id="2583187216237139145">Všetky údaje prehliadača Chromium vygenerované počas používania tohto profilu (napríklad vytvorenie záložiek, histórie, hesiel a ďalších nastavení) môžu byť odstránené správcom pracovného profilu. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">V priebehu inštalácie sa vyskytla chyba operačného systému. Stiahnite prehliadač Chromium znova.</translation>
 <translation id="2661879430930417727">Ak zdieľate zariadenie s rodinou a priateľmi, môžu v prehliadači Chromium prehliadať samostatne a tiež si ho nastaviť podľa vlastných požiadaviek</translation>
+<translation id="2669853942967761236">Chromium tento súbor archívu zablokoval, pretože môže skrývať malvér</translation>
 <translation id="268602741124540128">Vitajte v prehliadači Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Karta Chromium</translation>
 <translation id="2718390899429598676">V záujme vyššej miery zabezpečenia budú dáta v prehliadači Chromium šifrované.</translation>
@@ -304,7 +305,6 @@
 <translation id="7682601070171973634">Chromium skúma nové funkcie, ktoré umožňujú webom zobraziť rovnaké prostredie prehliadania s využitím menšieho počtu dát</translation>
 <translation id="7686590090926151193">Chromium nie je váš predvolený prehliadač</translation>
 <translation id="7689606757190482937">Synchronizujte a prispôsobte si Chromium v rôznych zariadeniach</translation>
-<translation id="7714577916146996629">Keď je táto funkcia zapnutá, Chromium bude uvoľňovať pamäť z kariet, ktoré aktívne nepoužívate. Týmto sa uvoľnia zdroje počítača pre ďalšie úlohy a Chromium bude fungovať rýchlejšie. Neaktívne karty sa budú zobrazovať prázdne a po kliknutí sa automaticky znova načítajú. Môžete si prečítať <ph name="BEGIN_LINK" />ďalšie informácie<ph name="END_LINK" /> alebo <ph name="BEGIN_LINK_2" />odoslať spätnú väzbu<ph name="END_LINK_2" />.</translation>
 <translation id="7745317241717453663">Táto akcia odstráni zo zariadenia údaje prehliadania. Ak budete chcieť svoje údaje neskôr opäť načítať, prihláste sa do prehliadača Chromium ako <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Inštalátor nemohol vytvoriť dočasný priečinok. Skontrolujte úroveň zaplnenia disku a povolenie na inštaláciu softvéru.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb
index 540e629..016b52a0 100644
--- a/chrome/app/resources/chromium_strings_sl.xtb
+++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">Chromium raziskuje nove funkcije, ki spletnim mestom omogočajo, da z manjšo količino prenesenih podatkov zagotavljajo isto izkušnjo pri brskanju.</translation>
 <translation id="7686590090926151193">Chromium ni privzeti brskalnik</translation>
 <translation id="7689606757190482937">V vseh svojih napravah sinhronizirajte in prilagodite Chromium</translation>
-<translation id="7714577916146996629">Če je vklopljena ta nastavitev, Chromium znova pridobi pomnilnik z zavihkov, ki jih ne uporabljate aktivno. S tem sprostite sredstva računalnika za druga opravila in poskrbite, da Chromium še naprej deluje hitro. Neaktivni zavihki so videti prazni in se samodejno znova naložijo, ko jih kliknete. <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="7745317241717453663">S tem bodo iz te naprave izbrisani podatki brskanja. Če želite pozneje prenesti podatke, se v Chromium prijavite kot <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Namestitvenemu programu ni uspelo ustvariti začasnega imenika. Preverite, ali je na disku dovolj prostora in ali imate dovoljenje za namestitev programske opreme.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – delovna različica Chromiuma</translation>
diff --git a/chrome/app/resources/chromium_strings_sq.xtb b/chrome/app/resources/chromium_strings_sq.xtb
index 0076089..1ecdf11 100644
--- a/chrome/app/resources/chromium_strings_sq.xtb
+++ b/chrome/app/resources/chromium_strings_sq.xtb
@@ -332,6 +332,7 @@
 <translation id="8453117565092476964">Arkivi i instaluesit është i dëmtuar ose i pavlefshëm. Shkarkoje Chromium përsëri.</translation>
 <translation id="8463672209299734063">Opsionale: Ndihmo në përmirësimin e veçorive dhe performancës së ChromiumOS duke dërguar automatikisht te Google të dhëna diagnostikuese dhe përdorimi.</translation>
 <translation id="8493179195440786826">Chromium nuk është i përditësuar</translation>
+<translation id="8522220489792889625">Sipas nevojës, Chromium rikuperon memorien nga skedat që ti nuk po i përdor në mënyrë aktive. Këtë mund ta ndryshosh në çdo kohë te cilësimet.</translation>
 <translation id="8550334526674375523">Ky profil pune është plotësisht i veçuar nga profili yt personal.</translation>
 <translation id="8558383651099478961">Prindi yt ka çaktivizuar "Lejet për sajtet, aplikacionet dhe shtesat" për Chromium. Nuk lejohet shtimi për këtë <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">Për të marrë përditësimet e ardhshme të Chromium, do të të duhet macOS 10.13 e lart. Ky kompjuter përdor macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_sr-Latn.xtb b/chrome/app/resources/chromium_strings_sr-Latn.xtb
index 89ef88d..90ad43f0 100644
--- a/chrome/app/resources/chromium_strings_sr-Latn.xtb
+++ b/chrome/app/resources/chromium_strings_sr-Latn.xtb
@@ -63,6 +63,7 @@
 <translation id="2583187216237139145">Administrator poslovnog profila može da ukloni sve podatke Chromium-a koji se generišu tokom korišćenja ovog profila (poput pravljenja obeleživača, istorije, lozinki i drugih podešavanja). <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Tokom instalacije je došlo do greške u operativnom sistemu. Preuzmite Chromium ponovo.</translation>
 <translation id="2661879430930417727">Ako delite uređaj, prijatelji i porodica mogu zasebno da pregledaju i da podese Chromium baš onako kako žele</translation>
+<translation id="2669853942967761236">Chromium je blokirao ovaj fajl arhive jer možda krije malver</translation>
 <translation id="268602741124540128">Dobro došli u Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Kartica Chromium</translation>
 <translation id="2718390899429598676">Chromium će šifrovati podatke radi dodatne sigurnosti.</translation>
@@ -304,7 +305,6 @@
 <translation id="7682601070171973634">Chromium istražuje nove funkcije koje omogućavaju sajtovima da pružaju isti doživljaj pregledanja, a da koriste manje podataka</translation>
 <translation id="7686590090926151193">Chromium nije podrazumevani pregledač</translation>
 <translation id="7689606757190482937">Sinhronizujte i personalizujte Chromium na svim uređajima</translation>
-<translation id="7714577916146996629">Kada je uključeno, Chromium vraća memoriju sa kartica koje ne koristite aktivno. Time se oslobađaju resursi računara za druge zadatke i ubrzava se rad Chromium-a. Neaktivne kartice se prikazuju kao prazne i automatski se ponovo učitavaju kada kliknete na njih. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /> ili <ph name="BEGIN_LINK_2" />pošaljite povratne informacije<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Ovim ćete izbrisati podatke pregledanja sa ovog uređaja. Da biste kasnije vratili podatke, prijavite se u Chromium kao <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Program za instalaciju nije mogao da napravi privremeni direktorijum. Proverite da li imate slobodnog prostora na disku, kao i dozvolu da instalirate softver.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb
index 0fb7507..538ca0e 100644
--- a/chrome/app/resources/chromium_strings_sr.xtb
+++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -63,6 +63,7 @@
 <translation id="2583187216237139145">Администратор пословног профила може да уклони све податке Chromium-а који се генеришу током коришћења овог профила (попут прављења обележивача, историје, лозинки и других подешавања). <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Током инсталације је дошло до грешке у оперативном систему. Преузмите Chromium поново.</translation>
 <translation id="2661879430930417727">Ако делите уређај, пријатељи и породица могу засебно да прегледају и да подесе Chromium баш онако како желе</translation>
+<translation id="2669853942967761236">Chromium је блокирао овај фајл архиве јер можда крије малвер</translation>
 <translation id="268602741124540128">Добро дошли у Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Картица Chromium</translation>
 <translation id="2718390899429598676">Chromium ће шифровати податке ради додатне сигурности.</translation>
@@ -304,7 +305,6 @@
 <translation id="7682601070171973634">Chromium истражује нове функције које омогућавају сајтовима да пружају исти доживљај прегледања, а да користе мање података</translation>
 <translation id="7686590090926151193">Chromium није подразумевани прегледач</translation>
 <translation id="7689606757190482937">Синхронизујте и персонализујте Chromium на свим уређајима</translation>
-<translation id="7714577916146996629">Када је укључено, Chromium враћа меморију са картица које не користите активно. Тиме се ослобађају ресурси рачунара за друге задатке и убрзава се рад Chromium-а. Неактивне картице се приказују као празне и аутоматски се поново учитавају када кликнете на њих. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /> или <ph name="BEGIN_LINK_2" />пошаљите повратне информације<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Овим ћете избрисати податке прегледања са овог уређаја. Да бисте касније вратили податке, пријавите се у Chromium као <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Програм за инсталацију није могао да направи привремени директоријум. Проверите да ли имате слободног простора на диску, као и дозволу да инсталирате софтвер.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb
index f0629aa..492efb0 100644
--- a/chrome/app/resources/chromium_strings_sv.xtb
+++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -333,6 +333,7 @@
 <translation id="8453117565092476964">Arkivet för installationsfilen är skadat eller ogiltigt. Ladda ned Chromium igen.</translation>
 <translation id="8463672209299734063">Valfritt: Skicka diagnostik- och användningsdata automatiskt till Google och hjälp oss att förbättra funktioner och prestanda i Chromium OS.</translation>
 <translation id="8493179195440786826">Den här versionen av Chromium är inaktuell</translation>
+<translation id="8522220489792889625">Om det behövs återtar Chromium minne från flikar som du inte använder aktivt. Du kan när som helst ändra detta i inställningarna.</translation>
 <translation id="8550334526674375523">Jobbprofilen hålls helt åtskild från din privata profil.</translation>
 <translation id="8558383651099478961">Din förälder har inaktiverat Behörigheter för webbplatser, appar och tillägg för Chromium. Det är inte tillåtet att lägga till denna <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8561285221328166383">Du behöver macOS 10.13 eller senare för att få kommande uppdateringar av Chromium. På den här datorn används macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb
index 3757f9a..c0cf3d8 100644
--- a/chrome/app/resources/chromium_strings_sw.xtb
+++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -333,6 +333,7 @@
 <translation id="8453117565092476964">Kumbukumbu ya kisakinishi imeharibika au ni batili. Tafadhali pakua Chromium tena.</translation>
 <translation id="8463672209299734063">Si lazima: Tusaidie kuboresha utendaji na vipengele vya Mfumo wa Uendeshaji wa Chromium kwa kutuma kiotomatiki data ya matumizi na uchunguzi kwa Google.</translation>
 <translation id="8493179195440786826">Chromium Imepitwa na Wakati</translation>
+<translation id="8522220489792889625">Kulingana na mahitaji, Chromium hurejesha hifadhi ya vichupo ambavyo huendelei kutumia. Unaweza kubadilisha hali hii wakati wowote katika mipangilio.</translation>
 <translation id="8550334526674375523">Wasifu huu wa kazini ni tofauti kabisa na wasifu wako wa binafsi.</translation>
 <translation id="8558383651099478961">Mzazi wako amezima "Ruhusa za tovuti, programu na viendelezi" kwenye Chromium. Huruhusiwi kuweka <ph name="EXTENSION_TYPE_PARAMETER" /> hii.</translation>
 <translation id="8561285221328166383">Ili upate masasisho ya Chromium ya hapo baadaye, utahitaji toleo la macOS 10.13 au toleo jipya zaidi. Kompyuta hii inatumia macOS 10.12.</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb
index b14ebcb..1b02739 100644
--- a/chrome/app/resources/chromium_strings_te.xtb
+++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -61,6 +61,7 @@
 <translation id="2583187216237139145">ఈ ప్రొఫైల్‌ను ఉపయోగిస్తున్నప్పుడు జెనరేట్ అయిన ఏదైనా Chromium డేటాను (బుక్‌మార్క్‌లు, హిస్టరీ, పాస్‌వర్డ్‌లు, ఇంకా ఇతర సెట్టింగ్‌లు వంటివి క్రియేట్ చేయడం) వర్క్ ప్రొఫైల్ అడ్మినిస్ట్రేటర్ తీసివేయవచ్చు. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">ఇన‌స్ట‌లేష‌న్‌ సమయంలో ఆపరేటింగ్ సిస్టమ్ ఎర్ర‌ర్‌ ఏర్పడింది. దయచేసి Chromiumను మళ్లీ డౌన్‌లోడ్ చేయండి.</translation>
 <translation id="2661879430930417727">మీరు ఒక పరికరాన్ని షేర్ చేస్తే, ఫ్రెండ్స్, ఫ్యామిలీ విడివిడిగా బ్రౌజ్ చేయవచ్చు, Chromiumను వారికి నచ్చిన విధంగా సెటప్ చేసుకోవచ్చు</translation>
+<translation id="2669853942967761236">Chromium ఈ ఆర్కైవ్ ఫైల్‌ను బ్లాక్ చేసింది ఎందుకంటే ఇందులో మాల్‌వేర్ దాచబడి ఉండవచ్చు</translation>
 <translation id="268602741124540128">Chromiumకు స్వాగతం, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Chromium ట్యాబ్</translation>
 <translation id="2718390899429598676">అదనపు భద్రత కోసం, Chromium మీ డేటాను ఎన్‌క్రిప్ట్ చేస్తుంది.</translation>
@@ -298,7 +299,6 @@
 <translation id="7682601070171973634">Chromium మీ డేటాను తక్కువగా ఉపయోగిస్తూ అదే బ్రౌజింగ్ అనుభవాన్ని అందించడానికి సైట్‌లను అనుమతించే కొత్త ఫీచర్‌లను అన్వేషిస్తోంది</translation>
 <translation id="7686590090926151193">Chromium మీ డిఫాల్ట్ బ్రౌజర్ కాదు</translation>
 <translation id="7689606757190482937">మీ పరికరాల అంతటా Chromiumను సింక్ చేయండి మరియు వ్యక్తిగతీకరించండి</translation>
-<translation id="7714577916146996629">ఆన్‌లో ఉన్నప్పుడు, Chromium, మీరు యాక్టివ్‌గా ఉపయోగించని ట్యాబ్‌ల నుండి మెమరీని తిరిగి పొందుతుంది. ఇది మీ కంప్యూటర్ రిసోర్స్‌లను ఇతర టాస్క్‌ల కోసం ఖాళీగా ఉంచుతుంది, అలాగే Chromium వేగంగా పని చేసేలా చేస్తుంది. ఇన్‌యాక్టివ్ ట్యాబ్‌లు ఖాళీగా కనిపిస్తాయి, అలాగే మీరు వాటిని క్లిక్ చేసినప్పుడు, ఆటోమేటిక్‌గా రీలోడ్ అవుతాయి. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /> లేదా <ph name="BEGIN_LINK_2" />ఫీడ్‌బ్యాక్‌ను పంపండి<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">ఇది ఈ పరికరం నుండి మీ బ్రౌజింగ్ డేటాను తొలగిస్తుంది. మీ డేటాను తర్వాత తిరిగి పొందడానికి, Chromiumకు <ph name="USER_EMAIL" /> లాగా సైన్ ఇన్ చేయండి.</translation>
 <translation id="7747138024166251722">ఇన్‌స్టాలర్ ఒక తాత్కాలిక డైరక్టరీని సృష్టించలేకపోయింది. సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేయడానికి దయచేసి ఖాళీ డిస్క్ స్థలం, అనుమతిని చెక్ చేయండి.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb
index 24b8caf..df343e5 100644
--- a/chrome/app/resources/chromium_strings_tr.xtb
+++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -299,7 +299,6 @@
 <translation id="7682601070171973634">Chromium, sitelerin daha az veri kullanarak aynı tarama deneyimini sunmasını sağlayan yeni özellikleri keşfediyor</translation>
 <translation id="7686590090926151193">Chromium varsayılan tarayıcınız değil</translation>
 <translation id="7689606757190482937">Chromium'u cihazlarınız arasında senkronize edin ve kişiselleştirin</translation>
-<translation id="7714577916146996629">Bu ayar etkinleştirildiğinde Chromium, aktif olarak kullanmadığınız sekmelerdeki belleği geri kazanır. Böylece, bilgisayarınızın kaynaklarında diğer görevler için yer açılır ve Chromium hızlı çalışmaya devam eder. Aktif olmayan sekmeler boş görünür ve bunları tıkladığınızda otomatik olarak yeniden yüklenir. <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="7745317241717453663">Bu işlem tarama verilerinizi bu cihazdan silecektir. Verilerinizi daha sonra geri almak için Chromium'da <ph name="USER_EMAIL" /> hesabıyla oturum açın.</translation>
 <translation id="7747138024166251722">Yükleyici geçici bir dizin oluşturamadı. Lütfen, kullanılabilir disk alanını ve yazılım yükleme iznini kontrol edin.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb
index 025ffd2..68c93f8b 100644
--- a/chrome/app/resources/chromium_strings_uk.xtb
+++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -302,7 +302,6 @@
 <translation id="7682601070171973634">Chromium досліджує нові функції, за допомогою яких сайти забезпечуватимуть ту саму роботу, використовуючи менше ваших даних</translation>
 <translation id="7686590090926151193">Chromium не є вашим веб-переглядачем за умовчанням</translation>
 <translation id="7689606757190482937">Синхронізуйте та персоналізуйте роботу Chromium на всіх своїх пристроях</translation>
-<translation id="7714577916146996629">Якщо цей режим увімкнено, Chromium перестає використовувати оперативну пам’ять для вкладок, які ви активно не застосовуєте. Це звільняє ресурси комп’ютера для інших завдань і підтримує швидку роботу Chromium. Неактивні вкладки при цьому відображаються пустими й автоматично оновлюються, коли ви їх натискаєте. <ph name="BEGIN_LINK" />Дізнайтеся більше<ph name="END_LINK" /> або <ph name="BEGIN_LINK_2" />надішліть відгук<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Дані веб-перегляду буде видалено з цього пристрою. Щоб відновити дані пізніше, увійдіть в обліковий запис Chromium як <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Програмі встановлення не вдалося створити тимчасовий каталог. Перевірте наявність вільного простору на диску та дозволу на встановлення програмного забезпечення.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> – Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_ur.xtb b/chrome/app/resources/chromium_strings_ur.xtb
index 2092332..b5e2492 100644
--- a/chrome/app/resources/chromium_strings_ur.xtb
+++ b/chrome/app/resources/chromium_strings_ur.xtb
@@ -303,7 +303,6 @@
 <translation id="7682601070171973634">‏Chromium نئی خصوصیات کو دریافت کر رہا ہے جو سائٹس کو آپ کے کم ڈیٹا کا استعمال کر کے وہی براؤزنگ تجربہ فراہم کرنے کی اجازت دیتا ہے</translation>
 <translation id="7686590090926151193">‏Chromium آپ کا ڈیفالٹ براؤزر نہیں ہے</translation>
 <translation id="7689606757190482937">‏اپنے آلات پر Chromium کو مطابقت پذیر اور ذاتی نوعیت کا بنائیں</translation>
-<translation id="7714577916146996629">‏آن ہونے پر، Chromium ان ٹیبز سے میموری کا دوبارہ دعویٰ کرتا ہے جنہیں آپ فعال طور پر استعمال نہیں کر رہے ہیں۔ یہ آپ کے کمپیوٹر کے وسائل کو دوسرے ٹاسکس کے لیے خالی کر دیتا ہے اور Chromium کو تیز رفتار رکھتا ہے۔ غیر فعال ٹیبز خالی دکھائی دیتی ہیں اور جب آپ ان پر کلک کرتے ہیں تو خودکار طور پر دوبارہ لوڈ ہو جاتے ہیں۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /> یا <ph name="BEGIN_LINK_2" />تاثرات بھیجیں<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">‏یہ اس آلہ سے آپ کے براؤزنگ ڈیٹا کو حذف کر دے گا۔ بعد میں اپنے ڈیٹا کی بازیافت کرنے کیلئے، Chromium میں <ph name="USER_EMAIL" /> کے بطور سائن ان کریں۔</translation>
 <translation id="7747138024166251722">انسٹالر ایک عارضی ڈائرکٹری نہیں بنا سکا۔ سافٹ ویئر انسٹال کرنے کیلئے براہ کرم ڈسک کی خالی جگہ اور اجازت کو چیک کریں۔</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb
index dd9354e3..f620ca56 100644
--- a/chrome/app/resources/chromium_strings_uz.xtb
+++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -301,7 +301,6 @@
 <translation id="7682601070171973634">Chromium saytlarga kamroq maʼlumotlaringiz bilan bir xil brauzer xizmatlarini taqdim etishiga imkon beruvchi yangi funksiyalarni oʻrganib chiqmoqda</translation>
 <translation id="7686590090926151193">Chromium standart brauzer sifatida tayinlanmagan</translation>
 <translation id="7689606757190482937">Chromiumni barcha qurilmalaringizda sinxronlang va o‘zingizga moslab oling</translation>
-<translation id="7714577916146996629">Yoniq boʻlsa, Chromium nofaol varaqlardan xotira oladi. Bu kompyuter resurslarini boshqa vazifalar uchun boʻshatadi va Chromium ishlashini tezlashtiradi. Nofaol varaqlar boʻsh chiqadi va ustiga bosilganda avtomatik qayta yuklanadi. <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /> axborot olish yoki <ph name="BEGIN_LINK_2" />fikr-mulohaza yuborish<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Bu qurilmadagi brauzer tarixini tozalaydi. Ma’lumotlaringizni keyinroq olish uchun Chromium brauzeriga <ph name="USER_EMAIL" /> sifatida kiring.</translation>
 <translation id="7747138024166251722">O‘rnatish dasturi vaqtinchalik katalog yarata olmadi. Sizda ilovalar o‘rnatish uchun yetarli vakolat yoki disk yetarli bo‘sh joy yo‘q bo‘lsa kerak.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb
index 5343ee4..41e7449 100644
--- a/chrome/app/resources/chromium_strings_vi.xtb
+++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -302,7 +302,6 @@
 <translation id="7682601070171973634">Chromium đang khám phá các tính năng mới cho phép các trang web mang lại trải nghiệm duyệt web như nhau nhưng tiêu tốn ít dữ liệu hơn</translation>
 <translation id="7686590090926151193">Chromium không phải là trình duyệt mặc định của bạn</translation>
 <translation id="7689606757190482937">Đồng bộ hóa và cá nhân hóa Chromium trên các thiết bị của bạn</translation>
-<translation id="7714577916146996629">Khi bật, Chromium sẽ lấy lại bộ nhớ từ những thẻ mà bạn hiện không sử dụng. Việc này sẽ giải phóng tài nguyên của máy tính để thực hiện các tác vụ khác và giúp Chromium luôn chạy nhanh. Các thẻ không hoạt động sẽ ở trạng thái trống và tự động tải lại khi bạn nhấp vào thẻ. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /> hoặc <ph name="BEGIN_LINK_2" />gửi ý kiến phản hồi<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Thao tác này sẽ xóa dữ liệu duyệt web của bạn khỏi thiết bị này. Để truy xuất dữ liệu của bạn sau, hãy đăng nhập vào Chromium dưới dạng <ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Trình cài đặt không thể tạo thư mục tạm thời. Vui lòng kiểm tra dung lượng ổ đĩa còn trống và quyền cài đặt phần mềm.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb
index 1fae4f2..ea5c5fd 100644
--- a/chrome/app/resources/chromium_strings_zh-CN.xtb
+++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -330,6 +330,7 @@
 <translation id="8453117565092476964">安装程序归档损坏或无效。请重新下载 Chromium。</translation>
 <translation id="8463672209299734063">可选:自动向 Google 发送诊断数据和使用情况数据,协助改进 Chromium 操作系统的功能和性能。</translation>
 <translation id="8493179195440786826">Chromium版本太旧</translation>
+<translation id="8522220489792889625">Chromium 会酌情从您目前未主动使用的标签页回收内存。您随时可在“设置”中更改此设置。</translation>
 <translation id="8550334526674375523">此工作资料与您的个人资料是完全分开的。</translation>
 <translation id="8558383651099478961">您的家长已为 Chromium 停用“网站、应用和扩展程序的权限”。因此,您无法添加该<ph name="EXTENSION_TYPE_PARAMETER" />。</translation>
 <translation id="8561285221328166383">若要接收后续 Chromium 更新,您需使用 macOS 10.13 或更高版本。该计算机目前使用的是 macOS 10.12。</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb
index 54372e7..bb9fa50 100644
--- a/chrome/app/resources/chromium_strings_zh-HK.xtb
+++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -303,7 +303,6 @@
 <translation id="7682601070171973634">Chromium 正在探索新功能,讓網站能在使用較少資料的情況下提供相同的瀏覽體驗</translation>
 <translation id="7686590090926151193">Chromium 不是您的預設瀏覽器</translation>
 <translation id="7689606757190482937">在不同裝置上同步和設定個人化的 Chromium</translation>
-<translation id="7714577916146996629">啟用此設定後,Chromium 會回收目前未使用的分頁記憶體。這樣做可釋出電腦的資源來處理其他工作,並維持 Chromium 的運作速度。已停用的分頁會顯示為空白,並會在您按一下分頁後自動重新載入內容。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" />或<ph name="BEGIN_LINK_2" />提供意見<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">這會刪除此裝置上的瀏覽資料。如果日後想擷取資料,請以 <ph name="USER_EMAIL" /> 的身分登入 Chromium。</translation>
 <translation id="7747138024166251722">安裝程式無法建立暫時目錄,請檢查可用磁碟空間與權限,以順利安裝軟件。</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb
index bdc8343..3d306f85 100644
--- a/chrome/app/resources/chromium_strings_zh-TW.xtb
+++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -331,6 +331,7 @@
 <translation id="8453117565092476964">安裝程式封存檔案已毀損或無效,請重新下載 Chromium。</translation>
 <translation id="8463672209299734063">選用:自動將診斷資訊和使用資料傳送給 Google,協助改善 Chromium OS 的功能與效能。</translation>
 <translation id="8493179195440786826">Chromium 版本過舊</translation>
+<translation id="8522220489792889625">如有需要,Chromium 會針對目前未使用的分頁回收記憶體。你隨時可以在「設定」中進行變更。</translation>
 <translation id="8550334526674375523">這個工作資料夾與個人資料夾各自獨立。</translation>
 <translation id="8558383651099478961">你的家長已停用 Chromium 的「網站、應用程式和擴充功能的權限」設定,因此你無法新增這個<ph name="EXTENSION_TYPE_PARAMETER" />。</translation>
 <translation id="8561285221328166383">如要取得日後的 Chromium 更新,必須使用 macOS 10.13 以上版本。這部電腦目前版本為 OS X 10.12。</translation>
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb
index 51c72a2d..bb9ff56 100644
--- a/chrome/app/resources/chromium_strings_zu.xtb
+++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -304,7 +304,6 @@
 <translation id="7682601070171973634">I-Chromium ihlola izakhi ezintsha ezivumela amasayithi ukuthi alethe ukuzizwisa kokubhrawuza okufanayo kusetshenziswa idatha yakho encane</translation>
 <translation id="7686590090926151193">I-Chromium akusona isiphequluli sakho esizenzakalelayo</translation>
 <translation id="7689606757190482937">Vumelanisa uphinde wenze kube ngeyakho i-Chromium kumadivayisi akho wonkana</translation>
-<translation id="7714577916146996629">Uma ivuliwe, i-Chromium ithola inkumbulo kumathebhu ongawasebenzisi njalo. Lokhu kukhululela izinsiza zekhompyutha yakho eminye imisebenzi futhi kugcina i-Chromium ishesha. Amathebhu angasebenzi avela engenalutho futhi alayisha ngokuzenzakalelayo uma uwachofoza. <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /> noma <ph name="BEGIN_LINK_2" />thumela impendulo<ph name="END_LINK_2" /></translation>
 <translation id="7745317241717453663">Lokhu kuzosusa idatha yakho yokuphequlula kusukela kule divayisi. Ukuze uthole idatha yakho emuva kwesikhathi, ngena ngemvume ku-Chromium njengo-<ph name="USER_EMAIL" />.</translation>
 <translation id="7747138024166251722">Isifaki asikwazanga ukudala umkhombandlela wesikhashana. Sicela uhlolele isikhala esikhululekile sediski nemvume ukuze ufake isofthiwe.</translation>
 <translation id="7790626492778995050"><ph name="PAGE_TITLE" /> - Chromium Canary</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index 11b88fb..813c3b54 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Dis amper tyd vir 'n blaaskans</translation>
 <translation id="1062628064301375934">Help ons om 'n meer private web te bou</translation>
 <translation id="1067048845568873861">Geskep</translation>
+<translation id="1067661089446014701">Jy kan vir bykomende veiligheid wagwoorde op jou toestel enkripteer voordat hulle in jou Google-rekening gestoor word</translation>
 <translation id="1067922213147265141">Ander Google-dienste</translation>
 <translation id="1069355737714877171">Verwyder e-SIM-profiel genaamd <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">'n Ander program op jou rekenaar het 'n uitbreiding bygevoeg wat dalk die manier sal verander waarop Chrome werk.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Jou administrateur beveel 'n spesifieke waarde vir hierdie instelling aan.</translation>
 <translation id="1225177025209879837">Verwerk tans versoek …</translation>
 <translation id="1227507814927581609">Kon nie staaf terwyl daar aan "<ph name="DEVICE_NAME" />" gekoppel word nie.</translation>
+<translation id="1227993798763400520">Kon nie uitsaai nie. Probeer asseblief weer.</translation>
 <translation id="1230417814058465809">Standaardbeskerming is aan. Gebruik verbeterde beskerming vir selfs nog meer sekuriteit.</translation>
 <translation id="1231733316453485619">Skakel sinkronisering aan?</translation>
 <translation id="1232569758102978740">Titelloos</translation>
@@ -1125,6 +1127,7 @@
 <translation id="2031914984822377766">Voeg jou <ph name="LINK_BEGIN" />voorkeurwebwerftale<ph name="LINK_END" /> by Die boonste taal op die lys sal gebruik word vir vertalings.</translation>
 <translation id="2033758234986231162">Verbinding met jou foon is nie stabiel nie. Maak seker dat jou foon in die omtrek is en ontsluit is, en dat Bluetooth en wi-fi aangeskakel is.</translation>
 <translation id="2034346955588403444">Voeg ander Wi-Fi-netwerk by</translation>
+<translation id="2035211704574173780">Grysskaal</translation>
 <translation id="203574396658008164">Aktiveer die maak van notas van die sluitskerm af</translation>
 <translation id="2037445849770872822">Toesig is vir hierdie Google-rekening opgestel. Kies Gaan voort om meer ouerkontroles op te stel.
 
@@ -2555,6 +2558,7 @@
 <translation id="3363202073972776113">Hierdie nuwe profiel sal deur jou organisasie bestuur word. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Vanaf jou administrateur: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Gebruik óf Ctrl óf Alt</translation>
+<translation id="3368586359109138591">Laai ’n kopie af om elders te gebruik</translation>
 <translation id="3368922792935385530">Gekoppel</translation>
 <translation id="3369067987974711168">Wys meer handelinge vir hierdie poort</translation>
 <translation id="3369624026883419694">Los tans gasheer op …</translation>
@@ -2743,6 +2747,7 @@
 <translation id="3532273508346491126">Bestuur sinkronisering</translation>
 <translation id="3532521178906420528">Vestig tans netwerkverbinding …</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – Oudio is gedemp</translation>
+<translation id="3536492240554502321">Tintrotasie</translation>
 <translation id="3537881477201137177">Dit kan later in Instellings gewysig word</translation>
 <translation id="3538066758857505094">Kon nie Linux deïnstalleer nie. Probeer asseblief weer.</translation>
 <translation id="354060433403403521">AC-aansluitprop</translation>
@@ -3068,6 +3073,7 @@
 <translation id="383669374481694771">Dit is algemene inligting oor hierdie toestel en hoe dit gebruik word (soos batteryvlak, stelsel- en programaktiwiteit en foute). Die data sal gebruik word om Android beter te maak, en sommige saamgestelde inligting sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help om hul programme en produkte beter te maak.</translation>
 <translation id="3838085852053358637">Kon nie uitbreiding laai nie</translation>
 <translation id="3838486795898716504">Meer <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Voeg gestoorde wagwoorde by Google Wagwoordbestuurder</translation>
 <translation id="383891835335927981">Geen werwe is in- of uitgezoem nie</translation>
 <translation id="3839509547554145593">Aktiveer muisrolleesversnelling</translation>
 <translation id="3839516600093027468">Blokkeer <ph name="HOST" /> altyd om die knipbord te sien</translation>
@@ -4142,6 +4148,7 @@
 <translation id="4871568871368204250">Skakel sinkronisering af</translation>
 <translation id="4871719318659334896">Maak groep toe</translation>
 <translation id="4872192066608821120">Kies ’n CSV-lêer om wagwoorde in te voer</translation>
+<translation id="4872212987539553601">Stel enkripsie op die toestel op</translation>
 <translation id="4873312501243535625">Medialêerkontroleerder</translation>
 <translation id="4876273079589074638">Help ons ingenieurs om hierdie omval te ondersoek en reg te stel. Lys noukeurige stappe as jy kan. Geen besonderhede is te klein nie!</translation>
 <translation id="4876895919560854374">Sluit en ontsluit die skerm</translation>
@@ -6442,6 +6449,7 @@
 <translation id="7093220653036489319">Vinnige Antwoorde</translation>
 <translation id="7093416310351037609">Vir dataveiligheid en sekuriteit vereis jou organisasie dat alle aflaaie wat kwalifiseer in jou organisasie se <ph name="WEB_DRIVE" />-rekening gestoor word.</translation>
 <translation id="7093866338626856921">Ruil data uit met die toestelle genaamd: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Aanvaar uitsaaiversoek op jou <ph name="DEVICE_NAME" /></translation>
 <translation id="7098389117866926363">USB C-toestel (linkerpoort aan agterkant)</translation>
 <translation id="7098447629416471489">Ander gestoorde soekenjins sal hier verskyn</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Verwyder program}other{Verwyder programme}}</translation>
@@ -6542,6 +6550,7 @@
 <translation id="7212097698621322584">Voer jou huidige PIN in om dit te verander. As jy nie jou PIN ken nie, moet jy die sekuriteitsleutel terugstel en dan 'n nuwe PIN skep.</translation>
 <translation id="7213903639823314449">Soekenjin wat op die adresbalk gebruik word</translation>
 <translation id="721490496276866468">Voer wagwoorde in</translation>
+<translation id="7218514093816577632">Maak seker kennisgewings is aangeskakel op jou <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Ons het veelvuldige profiele gekry wat beskikbaar is om af te laai. Kies dié wat jy wil aflaai voordat jy voortgaan.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Geen swak wagwoorde nie}=1{1 swak wagwoord}other{{NUM_WEAK} swak wagwoorde}}</translation>
 <translation id="7220019174139618249">Kan wagwoorde nie na "<ph name="FOLDER" />" uitvoer nie</translation>
@@ -6731,6 +6740,7 @@
 <translation id="7404065585741198296">Jou foon met 'n USB-kabel</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Veiligheidskontrole het 1 uur gelede plaasgevind}other{Veiligheidskontrole het {NUM_HOURS} uur gelede plaasgevind}}</translation>
 <translation id="740624631517654988">Opspringer geblokkeer</translation>
+<translation id="7406912950279255498">Kleuromkeringmodus</translation>
 <translation id="7407430846095439694">Voer in en bind</translation>
 <translation id="7407504355934009739">Meeste mense blokkeer kennisgewings van hierdie werf af</translation>
 <translation id="740810853557944681">Voeg 'n drukbediener by</translation>
@@ -7011,6 +7021,7 @@
 <translation id="7664620655576155379">Ongesteunde Bluetooth-toestel: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Reserveer grootte</translation>
 <translation id="7665369617277396874">Voeg rekening by</translation>
+<translation id="766635563210446220">Kan nie wagwoorde invoer nie. Gaan <ph name="FILENAME" /> na en maak seker dat dit reg geformateer is. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Stuur <ph name="DEVICE_TYPE" /> binne {NUM_WEEKS} week terug}other{Stuur <ph name="DEVICE_TYPE" /> binne {NUM_WEEKS} weke terug}}</translation>
 <translation id="7668423670802040666">In Google Wagwoordbestuurder vir <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Toeganklikheidskenmerke maak jou toestel makliker om te gebruik. Kies die tyd aan die onderkant van jou skerm om toegang tot Kitsinstellings te kry.</translation>
@@ -7542,6 +7553,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{'n video}other{# video's}}</translation>
 <translation id="8143442547342702591">Ongeldige program</translation>
 <translation id="8143609395536282994">Hoe jy jou data kan bestuur:</translation>
+<translation id="8145170459658034418">Geheuebespaarder</translation>
 <translation id="8146177459103116374">As jy reeds op hierdie toestel geregistreer is, kan jy <ph name="LINK2_START" />as 'n bestaande gebruiker aanmeld<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Voeg jou voorkeurtale by en gradeer hulle. Webwerwe sal indien moontlik in jou voorkeurtale gewys word. Hierdie voorkeure word met jou blaaierinstellings gesinkroniseer. <ph name="BEGIN_LINK_LEARN_MORE" />Kom meer te wete<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Kon nie aanmeld nie. Kontak asseblief jou administrateur of probeer weer.</translation>
@@ -7601,6 +7613,7 @@
 <translation id="8198456017687137612">Saai tans oortjie uit</translation>
 <translation id="8199300056570174101">Netwerk- (diens-) en toesteleienskappe</translation>
 <translation id="8200772114523450471">Hervat</translation>
+<translation id="8200789660596905522">Aanvaar die uitsaaiversoek op jou <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Voer asseblief jou wagwoord weer in om jou <ph name="DEVICE_TYPE" />-profiel op te dateer.</translation>
 <translation id="8203152941016626022">Nabydeling: toestelnaam</translation>
 <translation id="8203732864715032075">Stuur vir jou kennisgewings en stel dit as verstek om hierdie rekenaar vir Boodskappe te onthou. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation>
@@ -7677,6 +7690,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Die eienaar kan hierdie kenmerk beheer in Instellings &gt; Gevorderd &gt; Stuur diagnostiese en gebruiksdata outomaties na Google.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />As die instelling vir bykomende Web- en App-aktiwiteit vir jou kind aangeskakel is, kan hierdie data in hul Google-rekening gestoor word. Kom by families.google.com meer te wete oor hierdie instellings en hoe om hulle te verstel.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Ongeldige kliëntesertifikaat</translation>
+<translation id="8270162672241199380">Steam-installeerder</translation>
 <translation id="827097179112817503">Wys tuisknoppie</translation>
 <translation id="8271268254812352141">Kry definisies, vertalings of eenheidomskakelings wanneer jy regsklik of teks raak en hou. Pasmaak vertaaltale in <ph name="LINK_BEGIN" />Webwerftale<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Ouers, die volgende paar stappe is vir jou. Jy kan die <ph name="DEVICE_TYPE" /> aan die kind teruggee nadat die rekening opgestel is.</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 2573e2c..fde3034 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">የእረፍት ጊዜ ሊደርስ ነው</translation>
 <translation id="1062628064301375934">ተጨማሪ የግል ድር እንድንገነባ ያግዙን</translation>
 <translation id="1067048845568873861">ተፈጥሯል</translation>
+<translation id="1067661089446014701">ለተጨማሪ ደህንነት ሲባል፣ የይለፍ ቃላት ወደ Google መለያዎ ከመቀመጣቸው በፊት በመሣሪያዎ ላይ ማመስጠር ይችላሉ</translation>
 <translation id="1067922213147265141">ሌሎች የGoogle አገልግሎቶች</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> የተባለውን የኢሲም መገለጫን ያስወግዱ</translation>
 <translation id="1070377999570795893">በኮምፒውተርዎ ላይ ያለ ሌላ ፕሮግራም Chrome የሚሰራበት መንገድ ሊቀይር የሚችል አንድ ቅጥያ አክሏል።
@@ -250,6 +251,7 @@
 <translation id="1223853788495130632">አስተዳዳሪዎ ለዚህ ቅንብር አንድ የተወሰነ እሴት ይመክራል።</translation>
 <translation id="1225177025209879837">ጥያቄን በማካሄድ ላይ...</translation>
 <translation id="1227507814927581609">ከ«<ph name="DEVICE_NAME" />» ጋር በመገናኘት ላይ ሳለ ማረጋገጥ አልተሳካም።</translation>
+<translation id="1227993798763400520">cast ማድረግ አልተሳካም። እባክዎ እንደገና ይሞክሩ።</translation>
 <translation id="1230417814058465809">መደበኛ ጥበቃ በርቷል። እንዲያውም ከዚህም ለሚበልጥ ደህንነት የላቀ ጥበቃን ይጠቀሙ።</translation>
 <translation id="1231733316453485619">አስምር ይብራ?</translation>
 <translation id="1232569758102978740">ርዕስ አልባ</translation>
@@ -1121,6 +1123,7 @@
 <translation id="2031914984822377766">የእርስዎን ተመራጭ <ph name="LINK_BEGIN" />የድር ጣቢያ ቋንቋዎች<ph name="LINK_END" /> ያክሉ። ከዝርዝሩ ውስጥ ያለው ከፍተኛው ቋንቋ ለትርጉሞች ስራ ላይ ይውላል።</translation>
 <translation id="2033758234986231162">ከስልክዎ ጋር ያለውን ግንኙነት ማስጠበቅ አልተቻለም። ስልክዎ በቅርብ ርቀት መኖሩን፣ የተከፈተ መሆኑን፣ እንዲሁም ብሉቱዝ እና Wi-Fi የበሩ መሆናቸውን ያረጋግጡ።</translation>
 <translation id="2034346955588403444">ሌላ የWiFi አውታረ መረብ አክል</translation>
+<translation id="2035211704574173780">ግርጥነት</translation>
 <translation id="203574396658008164">ከማያ ገጽ ቁልፍ ሆነህ ማስታወሻ መውሰድን አንቃ</translation>
 <translation id="2037445849770872822">ለዚህ የ Google መለያ ክትትል ተቀናብሯል። ተጨማሪ የወላጅ ቁጥጥሮችን ለማቀናበር፣ ቀጥል የሚለውን ይምረጡ።
 
@@ -2549,6 +2552,7 @@
 <translation id="3363202073972776113">ይህ አዲስ መገለጫ በድርጅትዎ የሚተዳደር ይሆናል። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">ከእርስዎ አስተዳዳሪ፦ <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Ctrl ወይም Alt ይጠቀሙ</translation>
+<translation id="3368586359109138591">ሌላ ቦታ ለመጠቀም ቅጂን ያውርዱ</translation>
 <translation id="3368922792935385530">ተያይዟል</translation>
 <translation id="3369067987974711168">ለዚህ ወደብ ተጨማሪ እርምጃዎችን አሳይ</translation>
 <translation id="3369624026883419694">ለአስተናጋጅ መፍትሄ በመፈለግ ላይ…</translation>
@@ -2737,6 +2741,7 @@
 <translation id="3532273508346491126">የስምረት አስተዳደር</translation>
 <translation id="3532521178906420528">የአውታረ መረብ ግንኙነትን በመመስረት ላይ ...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - ኦዲዮ ድምፀ-ከል ተደርጎበታል</translation>
+<translation id="3536492240554502321">የለይ ቀለም ማዞር</translation>
 <translation id="3537881477201137177">ይህ በኋላ ላይ ቅንብሮች ውስጥ ሊቀየር ይችላል</translation>
 <translation id="3538066758857505094">Linuxን በማራገፍ ላይ ስህተት። እባክዎ እንደገና ይሞክሩ።</translation>
 <translation id="354060433403403521">የAC የኤሌክትሪክ መመጠኛ</translation>
@@ -3062,6 +3067,7 @@
 <translation id="383669374481694771">ይህ ስለዚህ መሣሪያ እና እንዴት ጥቅም ኣይ እንደሚውል በተመለከተ ያለ አጠቃላይ መረጃ (እንደ የባትሪ ደረጃ፣ የሥርዓትና የመተግበሪያ እንቅስቃሴ፣ እና ስህተቶች) ነው። ውሂቡ Androidን ለማሻሻል ጥቅም ላይ ይውላል፣ እና አንዳንድ የተዋሃደ መረጃ እንዲሁም የGoogle መተግበሪያዎች እና እንደ የAndroid ገንቢዎች ያሉ አጋሮች የእነሱ መተግበሪያዎች እና ምርቶች የተሻሉ እንዲያደርጉ ያግዛቸዋል።</translation>
 <translation id="3838085852053358637">ቅጥያን መጫን አልተሳካም</translation>
 <translation id="3838486795898716504">ተጨማሪ <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">የተቀመጡ የይለፍ ቃላትን ወደ Google የይለፍ ቃል አስተዳዳሪ ያክሉ</translation>
 <translation id="383891835335927981">ምንም ጣቢያዎች አልጎሉም ወይም አላነሱም</translation>
 <translation id="3839509547554145593">የመዳፊት ሽብለላ ማፍጠኛን አንቃ</translation>
 <translation id="3839516600093027468"><ph name="HOST" /> የቅንጥብ ሰሌዳው እንዳይመለከት አግድ</translation>
@@ -4133,6 +4139,7 @@
 <translation id="4871568871368204250">ስምረትን አጥፋ</translation>
 <translation id="4871719318659334896">ቡድንን ዝጋ</translation>
 <translation id="4872192066608821120">የይለፍ ቃላትን ለማስመጣት አንድ CSV ፋይል ይምረጡ</translation>
+<translation id="4872212987539553601">የመሣሪያ ላይ ምስጠራን ያዋቅሩ</translation>
 <translation id="4873312501243535625">የሚዲያ ፋይል ፈታሽ</translation>
 <translation id="4876273079589074638">መሐንዲሶቻችን ይህን ስንክል እንዲመረምሩና እንዲጠግኑት ያግዟቸው። ከቻሉ የተከተሏቸውን ደረጃዎች በሙሉ በትክክል ይግለጹ። ምንም አይረባም የሚባል ዝርዝር የለም!</translation>
 <translation id="4876895919560854374">ማያ ገጹን ይከፍተዋል እና ይዘገዋል</translation>
@@ -6434,6 +6441,7 @@
 <translation id="7093220653036489319">ፈጣን መልሶች</translation>
 <translation id="7093416310351037609">ለውሂብ ጥንቃቄ እና ደህንነት ሲባል ድርጅትዎ ሁሉም ብቁ የሆኑ ውርዶች በድርጅትዎ <ph name="WEB_DRIVE" /> መለያ ላይ እንዲቀመጡ ይፈልጋል።</translation>
 <translation id="7093866338626856921">ስማቸው እንደሚከተለው ከሆኑ መሣሪያዎች ጋር ውሂብ ተለዋወጥ፦ <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">በእርስዎ <ph name="DEVICE_NAME" /> ላይ የCast ጥያቄን ይቀበሉ።</translation>
 <translation id="7098389117866926363">USB-C መሣሪያ (የግራ ወደብ ከኋላ በኩል)</translation>
 <translation id="7098447629416471489">ሌሎች የተቀመጡ የፍለጋ ፕሮግራሞች እዚህ ይታያሉ</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{መተግበሪያ አስወግድ}one{መተግበሪያዎችን አስወግድ}other{መተግበሪያዎችን አስወግድ}}</translation>
@@ -6534,6 +6542,7 @@
 <translation id="7212097698621322584">ለመለወጥ የእርስዎን አሁን ያለውን ፒን ያስገቡ። የእርስዎን ፒን የማያውቁት ከሆነ፣ የእርስዎን የደህንነት ቁልፍ ዳግም ማቀናበር እና በመቀጠል አዲስ ፒን መፍጠር ይኖርብዎታል።</translation>
 <translation id="7213903639823314449">በአድራሻ አሞሌ ውስጥ ጥቅም ላይ የዋለ የፍለጋ ፕሮግራም</translation>
 <translation id="721490496276866468">የይለፍ ቃላትን አስመጣ</translation>
+<translation id="7218514093816577632">በእርስዎ <ph name="DEVICE_NAME" /> ላይ ማሳወቂያዎች መብራታቸውን ያረጋግጡ።</translation>
 <translation id="7219473482981809164">በርካታ ለመውረድ የሚገኙ መገለጫዎችን አግኝተናል። ከመቀጠልዎ በፊት ማውረድ የሚፈልጉትን ይምረጡ።</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{ምንም ደካማ የይለፍ ቃላት የሉም}=1{1 ደካማ የይለፍ ቃል}one{{NUM_WEAK} ደካማ የይለፍ ቃላት}other{{NUM_WEAK} ደካማ የይለፍ ቃላት}}</translation>
 <translation id="7220019174139618249">የይለፍ ቃላትን ወደ «<ph name="FOLDER" />» መላክ አልተቻለም</translation>
@@ -7003,6 +7012,7 @@
 <translation id="7664620655576155379">የማይደገፍ የብሉቱዝ መሣሪያ፦ «<ph name="DEVICE_NAME" />»።</translation>
 <translation id="7665082356120621510">የተጠባባቂ መጠን</translation>
 <translation id="7665369617277396874">መለያ ያክሉ</translation>
+<translation id="766635563210446220">የይለፍ ቃላትን ማምጣት አልተቻለም። <ph name="FILENAME" />ን ይፈትሹ እና በአግባቡ ቅርጸት እንደተሰራለት ያረጋግጡ። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{<ph name="DEVICE_TYPE" /> በ{NUM_WEEKS} ሳምንት ውስጥ ይመልሱ}one{<ph name="DEVICE_TYPE" /> በ{NUM_WEEKS} ሳምንቶች ውስጥ ይመልሱ}other{<ph name="DEVICE_TYPE" /> በ{NUM_WEEKS} ሳምንቶች ውስጥ ይመልሱ}}</translation>
 <translation id="7668423670802040666">በGoogle የይለፍ ቃል አስተዳዳሪ ውስጥ ለ<ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">የተደራሽነት ባህሪያት መሣሪያዎን ለመጠቀም ይበልጥ ያቀልሉታል። ፈጣን ቅንብሮችን ለመድረስ በማያ ገጽዎ ግርጌ ላይ ያለውን ጊዜ ይምረጡ።</translation>
@@ -7540,6 +7550,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{አንድ ቪዲዮ}one{# ቪዲዮዎች}other{# ቪዲዮዎች}}</translation>
 <translation id="8143442547342702591">ልክ ያልሆነ መተግበሪያ</translation>
 <translation id="8143609395536282994">የእርስዎን ውሂብ እንዴት ማቀናበር እንደሚችሉ፦</translation>
+<translation id="8145170459658034418">የማህደረ ትውስታ ቆጣቢ</translation>
 <translation id="8146177459103116374">አስቀድመው በዚህ መሣሪያ ላይ ከተመዘገቡ <ph name="LINK2_START" />እንደ ነባር ተጠቃሚ መግባት ይችላሉ<ph name="LINK2_END" />።</translation>
 <translation id="8146287226035613638">የሚመርጧቸውን ቋንቋዎች ያክሉ እና ደረጃ ይስጧቸው። በተቻለ ጊዜ ድር ጣቢያዎች በተመረጡ ቋንቋዎችዎ ይታያሉ። እነዚህ ምርጫዎች ከአሳሽዎ ቅንብሮች ጋር ይሰምራሉ። <ph name="BEGIN_LINK_LEARN_MORE" />የበለጠ ለመረዳት<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">መግባት አልተሳካም። እባክዎ አስተዳዳሪዎን ያነጋግሩ ወይም እንደገና ይሞክሩ።</translation>
@@ -7599,6 +7610,7 @@
 <translation id="8198456017687137612">የCast ማድረጊያ ትር</translation>
 <translation id="8199300056570174101">አውታረ መረብ (አገልግሎት) እና የመሣሪያ ጠባያት</translation>
 <translation id="8200772114523450471">ከቆመበት ቀጥል</translation>
+<translation id="8200789660596905522">በእርስዎ <ph name="DEVICE_NAME" /> ላይ ያለውን የCast ጥያቄ መቀበልዎን ያረጋግጡ።</translation>
 <translation id="8202160505685531999">የእርስዎን የ<ph name="DEVICE_TYPE" /> መገለጫ ለማዘመን እባክዎ የእርስዎን የይለፍ ቃል ዳግም ያስገቡት።</translation>
 <translation id="8203152941016626022">የአቅራቢያ አጋራ የመሣሪያ ስም</translation>
 <translation id="8203732864715032075">ማሳወቂያዎችን ለእርስዎ ይልካል እና ይህን ኮምፒውተር ለመልዕክቶች በነባሪነት ያስታውሳል። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 2813cd2..8015aaf 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Fasilə vaxtıdır</translation>
 <translation id="1062628064301375934">Daha şəxsi veb yaratmağımıza kömək edin</translation>
 <translation id="1067048845568873861">Yaradılıb</translation>
+<translation id="1067661089446014701">Təhlükəsizliyi artırmaq üçün Google Hesabınızda saxlanmazdan əvvəl cihazınızda parolları şifrələyin</translation>
 <translation id="1067922213147265141">Digər Google xidmətləri</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> adlı eSIM profilini silin</translation>
 <translation id="1070377999570795893">Kompüterinizdə başqa bir proqram Chrome'un necə işlədiyini dəyişdirən artırma əlavə etdi. <ph name="EXTENSION_NAME" /></translation>
@@ -247,6 +248,7 @@
 <translation id="1223853788495130632">Administratorunuz bu ayar üçün xüsusi dəyər tövsiyə edir.</translation>
 <translation id="1225177025209879837">Sorğu icra olunur...</translation>
 <translation id="1227507814927581609">"<ph name="DEVICE_NAME" />" cihazına qoşularkən doğrulama uğursuz oldu.</translation>
+<translation id="1227993798763400520">Yayımlamaq mümkün olmadı. Yenidən cəhd edin.</translation>
 <translation id="1230417814058465809">Standart qoruma aktivdir. Təhlükəsizliyi daha da artırmaq üçün qabaqcıl qoruma işlədin.</translation>
 <translation id="1231733316453485619">Sinxronizasiya ktiv edilsin?</translation>
 <translation id="1232569758102978740">Başlıqsız</translation>
@@ -688,6 +690,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 RSA Şifrələmə ilə</translation>
 <translation id="1641113438599504367">Təhlükəsiz Axtarış</translation>
 <translation id="1641496881756082050"><ph name="NETWORK_NAME" /> üçün digər əməliyyatlar</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Yanlış formatlaşdırıldığı üçün başqa 1 parol import edilmədi}other{Yanlış formatlaşdırıldığı üçün başqa {NUM_PASSWORDS} parol import edilmədi}}</translation>
 <translation id="1642492862748815878"><ph name="DEVICE" /> və digər <ph name="NUMBER_OF_DEVICES" /> Bluetooth cihazına qoşulub</translation>
 <translation id="1642494467033190216">Digər debaq funksiyalarını aktiv etmədən öncə kök qorunmasının silinməsi və yenidən başlanma tələb olunur.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA SHA-1 ilə imza</translation>
@@ -1108,6 +1111,7 @@
 <translation id="2031914984822377766">Tərcih etdiyiniz <ph name="LINK_BEGIN" />vebsayt dillərini<ph name="LINK_END" /> əlavə edin. Siyahıda ilk sıradakı dil tərcümələr üçün istifadə olunacaq.</translation>
 <translation id="2033758234986231162">Telefonunuzla bağlantı qurmaq mümkün deyil. Telefonunuzun yaxınlıqda olduğuna, kiliddən çıxarılmış olduğuna, Bluetooth və Wi-Fi'ın aktiv olduğuna əmin olun.</translation>
 <translation id="2034346955588403444">Digər WiFi şəbəkəsi əlavə edin</translation>
+<translation id="2035211704574173780">Boz şkala</translation>
 <translation id="203574396658008164">Kilid ekranından qeyd götürməni aktiv edin</translation>
 <translation id="2037445849770872822">Bu Google Hesabında nəzarət ayarlanıb. Daha çox valideyn nəzarəti ayarlamaq üçün "Davam edin" seçiminə klikləyin.
 
@@ -1828,6 +1832,7 @@
 <translation id="2673135533890720193">Brauzer tarixçənizi oxuyun</translation>
 <translation id="2674764818721168631">Deaktiv</translation>
 <translation id="2678063897982469759">Yenidən aktivləşdirin</translation>
+<translation id="2678100101831051676">Yayımlamaq alınmadı.</translation>
 <translation id="268053382412112343">Tarixçə</translation>
 <translation id="2681124317993121768">Qonaq profilləri dəstəklənmir</translation>
 <translation id="2682498795777673382">Valideyninizdən yeniləmə</translation>
@@ -2537,6 +2542,7 @@
 <translation id="3363202073972776113">Bu yeni profil təşkilatınız tərəfindən idarə olunacaq. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Admininizdən: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Ctrl və ya Alt istifadə edin</translation>
+<translation id="3368586359109138591">Başqa yerdə istifadə etmək üçün surətini endirin</translation>
 <translation id="3368922792935385530">Qoşuludur</translation>
 <translation id="3369067987974711168">Bu port üçün daha çox əməliyyatı göstərin</translation>
 <translation id="3369624026883419694">Host həll olunur...</translation>
@@ -2725,6 +2731,7 @@
 <translation id="3532273508346491126">Sinxronizasiya idarəetməsi</translation>
 <translation id="3532521178906420528">Şəbəkə bağlantısı yaradılır ...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - Audio səssiz edildi</translation>
+<translation id="3536492240554502321">Rəng fırlanması</translation>
 <translation id="3537881477201137177">Bunu daha sonra Ayarlarda dəyişmək olar</translation>
 <translation id="3538066758857505094">Linux sistemdən silinərkən xəta baş verdi. Yenidən cəhd edin.</translation>
 <translation id="354060433403403521">AC adapteri</translation>
@@ -3050,6 +3057,7 @@
 <translation id="383669374481694771">Bu ümumi məlumat bu cihaz və ondan istifadə haqqındadır (məsələn, batareya səviyyəsi, sistem və tətbiq fəaliyyəti və xətalar). Data Android məhsullarını təkmilləşdirmək məqsədilə istifadə olunacaq. Bəzi ümumiləşdirilmiş məlumatlar Google tətbiqlərinə və Android developerləri kimi partnyorlara tətbiq və məhsullarını təkmilləşdirməkdə kömək edəcək.</translation>
 <translation id="3838085852053358637">Artırmanı yükləmək alınmadı</translation>
 <translation id="3838486795898716504">Daha çox <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Saxlanmış parolları Google Parol Menecerinə əlavə edin</translation>
 <translation id="383891835335927981">Heç bir sayt yaxınlaşdırılmayıb və ya uzaqlaşdırılmayıb</translation>
 <translation id="3839509547554145593">Siçanın sürüşdürmə sürətini aktivləşdirin</translation>
 <translation id="3839516600093027468">Həmişə <ph name="HOST" /> hostunun buferi görməsini blok edin</translation>
@@ -3859,6 +3867,7 @@
 <translation id="4617019240346358451">Səhifəni yenidən yükləyərək "<ph name="EXTENSION_NAME" />" istifadə edin</translation>
 <translation id="4617270414136722281">Artırma seçimləri</translation>
 <translation id="4617880081511131945">Bağlantı qurmaq mümkün deyil</translation>
+<translation id="4618195822946934889">Keçiddə yalnız ASCII simvolları ola bilər</translation>
 <translation id="4619564267100705184">Kimliyinizi doğrulayın</translation>
 <translation id="4619615317237390068">Digər cihazlardan tablar</translation>
 <translation id="4620809267248568679">Bu ayar artırma tərəfindən icra olunur.</translation>
@@ -4120,6 +4129,7 @@
 <translation id="4871568871368204250">Sinxronizasiyanı deaktiv edin</translation>
 <translation id="4871719318659334896">Qrupu bağlayın</translation>
 <translation id="4872192066608821120">Parolları import etmək üçün CSV faylı seçin</translation>
+<translation id="4872212987539553601">Cihazda şifrələməni ayarlayın</translation>
 <translation id="4873312501243535625">Media Fayl Yoxlayıcı</translation>
 <translation id="4876273079589074638">Bu xətanın araşdırılması və aradan qaldırılması üçün mühəndislərimizə yardım edin. Bunu edə bilərsinizsə, dəqiq mərhələləri qeyd edin. Heç bir xırdalığı gözdən qaçırmayın!</translation>
 <translation id="4876895919560854374">Ekranı kiliddəyin və kiliddən çıxarın</translation>
@@ -5058,6 +5068,7 @@
 <translation id="5800351251499368110">Yan paneldə axtarışı bağlayın. Axtarış yan paneldə açıqdır.</translation>
 <translation id="5801568494490449797">Seçimlər</translation>
 <translation id="5804241973901381774">İcazələr</translation>
+<translation id="5805268472388605531">Vurğu işarələrini və xüsusi simvolları görmək üçün klaviatura düymələrini basıb saxlayın</translation>
 <translation id="5805697420284793859">Pəncərə meneceri</translation>
 <translation id="5806447147478173900">Göstərilən saytlar tərəfindən istifadə olunan cəmi yaddaş: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Defolt)</translation>
@@ -5697,6 +5708,7 @@
 <translation id="642469772702851743">Bu cihaz (SN: <ph name="SERIAL_NUMBER" />) sahib tərəfindən kilidlənib.</translation>
 <translation id="6425556984042222041">Mətndən-nitqə sürəti</translation>
 <translation id="642729974267661262">Səsi oxutmaq icazəsi verilməyib</translation>
+<translation id="6427608534767366138">"<ph name="NETWORK_ID" />" üçün proksi doğrulaması tələb olunur</translation>
 <translation id="6429384232893414837">Yeniləmə xətası</translation>
 <translation id="6430814529589430811">Base64-kodlaşdırılmış ASCII, tək sertifikat</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> bu kompüterin bütün istifadəçiləri üçün avtomatik güncəlləşmələri quraşdıracaq.</translation>
@@ -6415,6 +6427,7 @@
 <translation id="7093220653036489319">Sürətli cavablar</translation>
 <translation id="7093416310351037609">Data təhlükəsizliyi və güvənliyi üçün təşkilatınız bütün uyğun endirmələrin təşkilatınızın <ph name="WEB_DRIVE" /> hesabında saxlanmasını tələb edir.</translation>
 <translation id="7093866338626856921"><ph name="HOSTNAMES" /> adlı cihazlar ilə data mübadiləsi edin</translation>
+<translation id="7094680343477712655">Burada Yayım sorğusunu qəbul edin: <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">USB-C cihazı (arxadakı sol port)</translation>
 <translation id="7098447629416471489">Digər yadda saxlanılan axtarış sistemləri burada görünəcək</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Tətbiqi silin}other{Tətbiqləri silin}}</translation>
@@ -6515,6 +6528,7 @@
 <translation id="7212097698621322584">Dəyişmək üçün cari PIN-i daxil edin. PIN-i bilmirsinizsə, güvənlik açarını sıfırlamalı, sonra isə yeni PIN yaratmalısınız.</translation>
 <translation id="7213903639823314449">Ünvan panelində istifadə edilən axtarış sistemi</translation>
 <translation id="721490496276866468">Parolları import edin</translation>
+<translation id="7218514093816577632"><ph name="DEVICE_NAME" /> cihazında bildirişlərin aktiv olduğuna əmin olun.</translation>
 <translation id="7219473482981809164">Endirmək üçün əlçatan çox sayda profil tapmışıq. Başlamazdan əvvəl endirmək istədiklərinizi seçin.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Zəif parol yoxdur}=1{1 zəif parol}other{{NUM_WEAK} zəif parol}}</translation>
 <translation id="7220019174139618249">Parollar "<ph name="FOLDER" />" qovluğuna eksport edilmədi</translation>
@@ -6984,6 +6998,7 @@
 <translation id="7664620655576155379">Dəstəklənməyən Bluetooth cihazı: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Rezerv ölçüsü</translation>
 <translation id="7665369617277396874">Hesab əlavə edin</translation>
+<translation id="766635563210446220">Parolları import etmək mümkün deyil. <ph name="FILENAME" /> faylını yoxlayın və doğru formatda olduğuna əmin olun. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{{NUM_WEEKS} həftə ərzində <ph name="DEVICE_TYPE" /> cihazını qaytarın}other{{NUM_WEEKS} həftə ərzində <ph name="DEVICE_TYPE" /> cihazını qaytarın}}</translation>
 <translation id="7668423670802040666"><ph name="ACCOUNT" /> üçün Google Parol Menecerində</translation>
 <translation id="7668648754769651616">Əlçatımlılıq funksiyaları cihazınızın istifadəsini asanlaşdırır. Sürətli Ayarlara giriş üçün ekranın aşağısındakı vaxtı seçin.</translation>
@@ -7514,6 +7529,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{video}other{# video}}</translation>
 <translation id="8143442547342702591">Yanlış tətbiq</translation>
 <translation id="8143609395536282994">Datanızı necə idarə edə bilərsiniz:</translation>
+<translation id="8145170459658034418">Yaddaşa Qənaət</translation>
 <translation id="8146177459103116374">Bu cihazda artıq qeydiyyatdan keçmisinizsə, <ph name="LINK2_START" />mövcud istifadəçi olaraq hesaba girə bilərsiniz<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Tərcih etdiyiniz dilləri əlavə edin və sıralayın. Mümkün olduqda vebsaytlar tərcih etdiyiniz dillərdə göstəriləcək. Bu tərcihlər brauzer ayarlarınızla sinxronlaşdırılır. <ph name="BEGIN_LINK_LEARN_MORE" />Ətraflı məlumat<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Hesaba giriş alınmadı. Administratorunuzla əlaqə saxlayın və ya yenidən cəhd edin.</translation>
@@ -7573,6 +7589,7 @@
 <translation id="8198456017687137612">Yayım tabı</translation>
 <translation id="8199300056570174101">Şəbəkə (Xidmət) və Cihaz xüsusiyyətləri</translation>
 <translation id="8200772114523450471">Davam edin</translation>
+<translation id="8200789660596905522">Burada Yayım sorğusunu qəbul etdiyinizə əmin olun: <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Yeniləmə Şifrəni yenidən daxil edin <ph name="DEVICE_TYPE" /> profil.</translation>
 <translation id="8203152941016626022">Yaxınlıqda Paylaşım cihaz adı</translation>
 <translation id="8203732864715032075">Bu kompüteri Mesajlaşma üçün xatırlatmaq məqsədilə ona bildirişlər və defoltlar göndərin. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation>
@@ -7824,6 +7841,7 @@
 <translation id="844063558976952706">Həmişə bu saytda</translation>
 <translation id="8441313165929432954">Modem Rejimini Aktiv/Deaktiv edin</translation>
 <translation id="8443795068008423036">Cihazınızın güncəl olduğuna əmin olun və yenidən cəhd edin</translation>
+<translation id="8443986842926457191">Keçid 2048 simvoldan uzundur</translation>
 <translation id="8446884382197647889">Ətraflı Məlumat</translation>
 <translation id="8447409163267621480">Ya Ctrl, ya da Alt daxil edin</translation>
 <translation id="844850004779619592">Heç bir əmr tapılmadı</translation>
@@ -7889,6 +7907,7 @@
 <translation id="851263357009351303"><ph name="HOST" /> şəkilləri göstərməyə hər zaman icazə verin</translation>
 <translation id="8513108775083588393">Avtodönüş</translation>
 <translation id="8514746246728959655">Başqa təhlükəsizlik açarından istifadə edin</translation>
+<translation id="8519895319663397036">Parolları import etmək mümkün deyil. Faylın ölçüsü 150 KB-dan kiçik olmalıdır.</translation>
 <translation id="8523493869875972733">Dəyişiklikləri Saxlayın</translation>
 <translation id="8523849605371521713">Siyasət tərəfindən əlavə edilib</translation>
 <translation id="8524783101666974011">Kartları Google Hesabında yadda saxlayın</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index d9b0e2e..1d929e8 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Набліжаецца час блакіроўкі</translation>
 <translation id="1062628064301375934">Дапамажыце нам павысіць прыватнасць прагляду інтэрнэту для ўсіх карыстальнікаў</translation>
 <translation id="1067048845568873861">Створаны</translation>
+<translation id="1067661089446014701">Дзеля дадатковай бяспекі, перш чым захоўваць паролі ва Уліковым запісе Google, вы можаце зашыфроўваць іх на прыладзе</translation>
 <translation id="1067922213147265141">Іншыя сэрвісы Google</translation>
 <translation id="1069355737714877171">Выдаліць профіль eSIM-карты "<ph name="PROFILE_NAME" />"</translation>
 <translation id="1070377999570795893">Іншая праграма на камп'ютары дадала пашырэнне, якое можа змяніць працу Chrome.
@@ -252,6 +253,7 @@
 <translation id="1223853788495130632">Ваш адміністратар рэкамендуе канкрэтнае значэнне для гэтай налады.</translation>
 <translation id="1225177025209879837">Ідзе апрацоўка запыту...</translation>
 <translation id="1227507814927581609">Збой аўтэнтыфікацыі падчас падключэння да прылады "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Збой трансляцыі. Паўтарыце спробу.</translation>
 <translation id="1230417814058465809">Стандартная абарона ўключана. Каб павысіць бяспеку, выкарыстоўвайце палепшаную абарону.</translation>
 <translation id="1231733316453485619">Уключыць сінхранізацыю?</translation>
 <translation id="1232569758102978740">Без назвы</translation>
@@ -695,6 +697,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 з шыфраваннем RSA</translation>
 <translation id="1641113438599504367">Бяспечны прагляд</translation>
 <translation id="1641496881756082050">Іншыя дзеянні з сеткай "<ph name="NETWORK_NAME" />"</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Не ўдалося імпартаваць яшчэ 1 пароль, бо ён мае няправільны фармат}one{Не ўдалося імпартаваць яшчэ {NUM_PASSWORDS} пароль, бо яны маюць няправільны фармат}few{Не ўдалося імпартаваць яшчэ {NUM_PASSWORDS} паролі, бо яны маюць няправільны фармат}many{Не ўдалося імпартаваць яшчэ {NUM_PASSWORDS} пароляў, бо яны маюць няправільны фармат}other{Не ўдалося імпартаваць яшчэ {NUM_PASSWORDS} пароля, бо яны маюць няправільны фармат}}</translation>
 <translation id="1642492862748815878">Падключана да прылады "<ph name="DEVICE" />" і яшчэ наступнай колькасці прылад з Bluetooth: <ph name="NUMBER_OF_DEVICES" /></translation>
 <translation id="1642494467033190216">Перад уключэннем іншых функцый адладкі неабходна выдаліць ахову rootfs і выканаць перазапуск.</translation>
 <translation id="1643072738649235303">Подпіс X9.62 ECDSA з SHA-1</translation>
@@ -1115,6 +1118,7 @@
 <translation id="2031914984822377766">Дадайце прыярытэтныя <ph name="LINK_BEGIN" />мовы для вэб-сайтаў<ph name="LINK_END" />. Пры перакладзе будзе выкарыстоўвацца першая мова ў спісе.</translation>
 <translation id="2033758234986231162">Не ўдалося захаваць падключэнне да вашага тэлефона. Упэўніцеся, што тэлефон разблакіраваны, знаходзіцца паблізу і што на ім уключаны Bluetooth і Wi-Fi.</translation>
 <translation id="2034346955588403444">Дадаць іншую сетку Wi-Fi</translation>
+<translation id="2035211704574173780">Адценні шэрага</translation>
 <translation id="203574396658008164">Уключыць стварэнне нататак на экране блакіроўкі</translation>
 <translation id="2037445849770872822">Для гэтага Уліковага запісу Google наладжаны бацькоўскі кантроль. Каб наладзіць яго дадатковыя параметры, выберыце "Працягнуць".
 
@@ -1171,6 +1175,7 @@
 <translation id="208634871997892083">Заўсёды ўключаная VPN</translation>
 <translation id="2087822576218954668">Друк: <ph name="PRINT_NAME" /></translation>
 <translation id="2088092308059522196">Зарэгістравацца можна толькі пасля ўсталявання аперацыйнай сістэмы <ph name="DEVICE_OS" />.</translation>
+<translation id="2089090684895656482">Менш</translation>
 <translation id="208928984520943006">Каб у любы момант перайсці на галоўны экран, правядзіце знізу ўверх.</translation>
 <translation id="2089566709556890888">Бяспечны прагляд старонак у браўзеры Google Chrome</translation>
 <translation id="2089795179672254991">Пытацца, калі сайт запытвае доступ на прагляд тэксту і відарысаў, скапіраваных у буфер абмену (рэкамендуецца)</translation>
@@ -1831,6 +1836,7 @@
 <translation id="2673135533890720193">Чытанне вашай гісторыі прагляду сайтаў</translation>
 <translation id="2674764818721168631">Выключана</translation>
 <translation id="2678063897982469759">Паўторна ўключыць</translation>
+<translation id="2678100101831051676">Не ўдалося запусціць трансляцыю.</translation>
 <translation id="268053382412112343">Гі&amp;сторыя</translation>
 <translation id="2681124317993121768">Гасцявыя профілі не падтрымліваюцца</translation>
 <translation id="2682498795777673382">Бацькі змянілі налады</translation>
@@ -2540,6 +2546,7 @@
 <translation id="3363202073972776113">Новым профілем будзе кіраваць ваша арганізацыя. <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Паведамленне ад адміністратара: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Выкарыстоўвайце або Ctrl, або Alt</translation>
+<translation id="3368586359109138591">Спампуйце копію пароляў, каб выкарыстоўваць іх на іншых прыладах</translation>
 <translation id="3368922792935385530">Падключана</translation>
 <translation id="3369067987974711168">Паказаць іншыя дзеянні для гэтага порта</translation>
 <translation id="3369624026883419694">Вызначэнне хоста...</translation>
@@ -2728,6 +2735,7 @@
 <translation id="3532273508346491126">Кіраванне сінхранізацыяй</translation>
 <translation id="3532521178906420528">Устанаўліваецца падключэнне да сеткі...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – гук выключаны</translation>
+<translation id="3536492240554502321">Паварот адценняў</translation>
 <translation id="3537881477201137177">Яго можна будзе змяніць пазней у Наладах</translation>
 <translation id="3538066758857505094">Памылка выдалення Linux. Паўтарыце спробу.</translation>
 <translation id="354060433403403521">Адаптар пераменнага току</translation>
@@ -3053,6 +3061,7 @@
 <translation id="383669374481694771">Гэта агульная інфармацыя пра гэту прыладу і яе выкарыстанне (напрыклад, пра ўзровень зараду акумулятара, дзеянні ў сістэме і праграмах, памылкі). Даныя будуць выкарыстоўвацца для ўдасканалення сістэмы Android, а пэўная згрупаваная інфармацыя дапаможа ўдасканаліць праграмы Google і будзе карыснай для партнёраў кампаніі, напрыклад для распрацоўшчыкаў Android, у паляпшэнні праграм і прадуктаў.</translation>
 <translation id="3838085852053358637">Не ўдалося загрузіць пашырэнне</translation>
 <translation id="3838486795898716504">Яшчэ адна старонка "<ph name="PAGE_TITLE" />"</translation>
+<translation id="3838487810283346084">Дадавайце захаваныя паролі ў Менеджар пароляў Google</translation>
 <translation id="383891835335927981">Маштаб на сайтах не змяняўся</translation>
 <translation id="3839509547554145593">Уключыць паскарэнне прагорткі мышшу</translation>
 <translation id="3839516600093027468">Заўсёды блакіраваць хосту <ph name="HOST" /> доступ да буфера абмену</translation>
@@ -3864,6 +3873,7 @@
 <translation id="4617019240346358451">Каб выкарыстаць пашырэнне "<ph name="EXTENSION_NAME" />", абнавіце старонку</translation>
 <translation id="4617270414136722281">Параметры пашырэння</translation>
 <translation id="4617880081511131945">Не ўдалося ўстанавіць падключэнне</translation>
+<translation id="4618195822946934889">URL-адрас можа змяшчаць толькі сімвалы ASCII</translation>
 <translation id="4619564267100705184">Пацвердзіць маю асобу</translation>
 <translation id="4619615317237390068">Укладкі з іншых прылад</translation>
 <translation id="4620809267248568679">Гэта налада ўключана пашырэннем.</translation>
@@ -4125,6 +4135,7 @@
 <translation id="4871568871368204250">Выключыць сінхранізацыю</translation>
 <translation id="4871719318659334896">Закрыць групу</translation>
 <translation id="4872192066608821120">Каб імпартаваць паролі, выберыце файл CSV</translation>
+<translation id="4872212987539553601">Наладжванне шыфравання на прыладзе</translation>
 <translation id="4873312501243535625">Праверка мультымедыйных файлаў</translation>
 <translation id="4876273079589074638">Дапамажыце нашым інжынерам вывучыць і выправіць гэты збой. Калі можаце, пералічыце дакладныя крокі. Любыя дэталі – карысныя!</translation>
 <translation id="4876895919560854374">Блакіроўка і разблакіроўка экрана</translation>
@@ -5062,6 +5073,7 @@
 <translation id="5800351251499368110">Закрыць інструмент пошуку на бакавой панэлі. Інструмент пошуку на ёй адкрыты.</translation>
 <translation id="5801568494490449797">Параметры</translation>
 <translation id="5804241973901381774">Дазволы</translation>
+<translation id="5805268472388605531">Каб пабачыць дыякрытычныя знакі і спецыяльныя сімвалы, націскайце і ўтрымлівайце клавішы на клавіятуры</translation>
 <translation id="5805697420284793859">Менеджар вокнаў</translation>
 <translation id="5806447147478173900">Агульны аб'ём сховішча, які выкарыстоўваецца паказанымі сайтамі: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (стандартна)</translation>
@@ -5703,6 +5715,7 @@
 <translation id="642469772702851743">Гэта прылада (серыйны нумар: <ph name="SERIAL_NUMBER" />) заблакіравана ўладальнікам.</translation>
 <translation id="6425556984042222041">Хуткасць сінтэзу маўлення</translation>
 <translation id="642729974267661262">Не дазволена прайграваць гук</translation>
+<translation id="6427608534767366138">Для сеткі "<ph name="NETWORK_ID" />" патрабуецца аўтэнтыфікацыя на проксі-серверы</translation>
 <translation id="6429384232893414837">Памылка абнаўлення</translation>
 <translation id="6430814529589430811">ASCII з шыфраваннем Base64, адзін сертыфікат</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> будзе наладжваць аўтаматычныя абнаўленні для ўсіх карыстальнікаў гэтага камп'ютара.</translation>
@@ -6427,6 +6440,7 @@
 <translation id="7093220653036489319">Хуткія адказы</translation>
 <translation id="7093416310351037609">У мэтах абароны даных ваша арганізацыя патрабуе, каб усе дазволеныя спампоўкі захоўваліся ва ўліковым запісе сэрвісу "<ph name="WEB_DRIVE" />" вашай арганізацыі.</translation>
 <translation id="7093866338626856921">Абмен данымі з прыладамі з назвамі: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Прыміце запыт на трансляцыю на прыладзе "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7098389117866926363">Прылада USB-C (задні порт злева)</translation>
 <translation id="7098447629416471489">Тут з'явяцца іншыя захаваныя пошукавыя сістэмы</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Выдаліць праграму}one{Выдаліць праграмы}few{Выдаліць праграмы}many{Выдаліць праграмы}other{Выдаліць праграмы}}</translation>
@@ -6527,6 +6541,7 @@
 <translation id="7212097698621322584">Каб змяніць бягучы PIN-код, увядзіце яго. Калі вы не ведаеце PIN-код, вам трэба будзе скінуць ключ бяспекі, а затым стварыць новы PIN-код.</translation>
 <translation id="7213903639823314449">Пошукавая сістэма, якая выкарыстоўваецца ў адрасным радку</translation>
 <translation id="721490496276866468">Імпартаваць паролі</translation>
+<translation id="7218514093816577632">Праверце, ці ўключаны на прыладзе "<ph name="DEVICE_NAME" />" апавяшчэнні.</translation>
 <translation id="7219473482981809164">Мы знайшлі некалькі профіляў, якія можна спампаваць. Перш чым працягнуць, выберыце, якія профілі спампоўваць.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Няма ненадзейных пароляў}=1{1 ненадзейны пароль}one{{NUM_WEAK} ненадзейны пароль}few{{NUM_WEAK} ненадзейныя паролі}many{{NUM_WEAK} ненадзейных пароляў}other{{NUM_WEAK} ненадзейнага пароля}}</translation>
 <translation id="7220019174139618249">Не ўдалося экспартаваць паролі ў папку "<ph name="FOLDER" />"</translation>
@@ -6996,6 +7011,7 @@
 <translation id="7664620655576155379">Прылада Bluetooth не падтрымліваецца: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Зарэзерваваць памер</translation>
 <translation id="7665369617277396874">Дадаць уліковы запіс</translation>
+<translation id="766635563210446220">Не ўдалося імпартаваць паролі. Упэўніцеся, што ў файла <ph name="FILENAME" /> правільны фармат. <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Вярніце прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_WEEKS} тыдня}one{Вярніце прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_WEEKS} тыдня}few{Вярніце прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_WEEKS} тыдняў}many{Вярніце прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_WEEKS} тыдняў}other{Вярніце прыладу <ph name="DEVICE_TYPE" /> на працягу {NUM_WEEKS} тыдня}}</translation>
 <translation id="7668423670802040666">У Менеджары пароляў Google для ўліковага запісу <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Спецыяльныя магчымасці спрашчаюць карыстанне прыладай. Каб атрымаць доступ да хуткіх налад, націсніце на гадзіннік унізе экрана.</translation>
@@ -7526,6 +7542,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{відэа}one{# відэа}few{# відэа}many{# відэа}other{# відэа}}</translation>
 <translation id="8143442547342702591">Няправільная праграма</translation>
 <translation id="8143609395536282994">Як кіраваць сваімі данымі:</translation>
+<translation id="8145170459658034418">Эканомія памяці</translation>
 <translation id="8146177459103116374">Калі вы ўжо рэгістраваліся на гэтай прыладзе, вы можаце <ph name="LINK2_START" />ўвайсці як існуючы карыстальнік<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Дадавайце прыярытэтныя мовы і вызначайце іх чарговасць. Вэб-сайты будуць паказвацца на мовах, выбраных вамі ў якасці прыярытэтных, калі гэта магчыма. Гэтыя параметры сінхранізуюцца з наладамі вашага браўзера. <ph name="BEGIN_LINK_LEARN_MORE" />Даведацца больш<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Не атрымалася ўвайсці ў сістэму. Звярніцеся да адміністратара або паўтарыце спробу.</translation>
@@ -7585,6 +7602,7 @@
 <translation id="8198456017687137612">Ідзе трансляцыя ўкладкі</translation>
 <translation id="8199300056570174101">Уласцівасці прылады і сеткі (сэрвісу)</translation>
 <translation id="8200772114523450471">Узнавіць</translation>
+<translation id="8200789660596905522">Неабходна прыняць запыт на трансляцыю на прыладзе "<ph name="DEVICE_NAME" />".</translation>
 <translation id="8202160505685531999">Каб абнавіць профіль прылады <ph name="DEVICE_TYPE" />, увядзіце пароль яшчэ раз.</translation>
 <translation id="8203152941016626022">Абагульванне паблізу: назва прылады</translation>
 <translation id="8203732864715032075">Адпраўляць вам апавяшчэнні і зрабіць гэты камп'ютар стандартным для праграмы "Паведамленні". <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation>
@@ -7834,6 +7852,7 @@
 <translation id="844063558976952706">Заўсёды на гэтым сайце</translation>
 <translation id="8441313165929432954">Уключэнне і адключэнне рэжыму мадэма</translation>
 <translation id="8443795068008423036">Упэўніцеся, што прылада абноўлена, і паўтарыце спробу</translation>
+<translation id="8443986842926457191">Даўжыня URL-адраса перавышае 2048 знакаў.</translation>
 <translation id="8446884382197647889">Даведацца больш</translation>
 <translation id="8447409163267621480">Уключыце ў спалучэнне клавішу Ctrl або Alt</translation>
 <translation id="844850004779619592">Каманды не знойдзены</translation>
@@ -7899,6 +7918,7 @@
 <translation id="851263357009351303">Заўсёды дазваляць відарысы на сайце <ph name="HOST" /></translation>
 <translation id="8513108775083588393">Аўтапаварот</translation>
 <translation id="8514746246728959655">Паспрабуйце іншы ключ бяспекі</translation>
+<translation id="8519895319663397036">Не ўдалося імпартаваць паролі. Памер файла не можа перавышаць 150 КБ.</translation>
 <translation id="8523493869875972733">Захаваць змяненні</translation>
 <translation id="8523849605371521713">Дададзена палітыкай</translation>
 <translation id="8524783101666974011">Захавайце плацежныя карткі ва Уліковым запісе Google</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index 5420c20..ee27b80 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Uskoro će vrijeme za odmor</translation>
 <translation id="1062628064301375934">Pomozite nam da izgradimo privatniji web</translation>
 <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="1069355737714877171">Uklanjanje profila eSIM-a pod nazivom <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Drugi program na vašem računaru je dodao ekstenziju koja može promijeniti rad Chromea.
@@ -253,6 +254,7 @@
 <translation id="1223853788495130632">Administrator preporučuje određenu vrijednost za tu postavku.</translation>
 <translation id="1225177025209879837">Zahtjev se obrađuje…</translation>
 <translation id="1227507814927581609">Autentifikacija nije uspjela prilikom povezivanja s uređajem "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Emitiranje nije uspjelo. Pokušajte ponovo.</translation>
 <translation id="1230417814058465809">Standardna zaštita je uključena. Za još veću sigurnost koristite poboljšanu zaštitu.</translation>
 <translation id="1231733316453485619">Uključiti sinhronizaciju?</translation>
 <translation id="1232569758102978740">Bez naslova</translation>
@@ -697,7 +699,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 With RSA šifriranje</translation>
 <translation id="1641113438599504367">Sigurno pregledanje</translation>
 <translation id="1641496881756082050">Više radnji za mrežu <ph name="NETWORK_NAME" /></translation>
-<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Još jedna zaporka nije uvezena jer nije pravilno formatirana}one{Još {NUM_PASSWORDS} zaporka nije uvezena jer nije pravilno formatirana}few{Još {NUM_PASSWORDS} zaporke nisu uvezene jer nisu pravilno formatirane}other{Još {NUM_PASSWORDS} zaporki nije uvezeno jer nisu pravilno formatirane}}</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Uvoz 1 lozinke nije uspjelo jer je nepravilno formatirana.}one{Uvoz {NUM_PASSWORDS} lozinke nije uspjelo jer je nepravilno formatirana}few{Uvoz {NUM_PASSWORDS} lozinki nije uspjelo jer su nepravilno formatirane}other{Uvoz {NUM_PASSWORDS} lozinki nije uspjelo jer su nepravilno formatirane}}</translation>
 <translation id="1642492862748815878">Povezano je na uređaj <ph name="DEVICE" /> i još <ph name="NUMBER_OF_DEVICES" /> Bluetooth uređaja</translation>
 <translation id="1642494467033190216">Prije nego omogućite ostale funkcije otklanjanja grešaka trebate ukloniti rootfs zaštitu i ponovo pokrenuti uređaj.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA potpis uz SHA-1</translation>
@@ -1124,6 +1126,7 @@
 <translation id="2031914984822377766">Dodajte preferirane <ph name="LINK_BEGIN" />jezike web lokacije<ph name="LINK_END" />. Prvi jezik na listi će se koristiti za prijevode.</translation>
 <translation id="2033758234986231162">Nije moguće održavati vezu s telefonom. Provjerite je li telefon blizu, otključan te jesu li uključeni Bluetooth i WiFi.</translation>
 <translation id="2034346955588403444">Dodajte novu WiFi mrežu</translation>
+<translation id="2035211704574173780">Nijanse sive</translation>
 <translation id="203574396658008164">Omogući bilješke sa zaključanog ekrana</translation>
 <translation id="2037445849770872822">Nadzor je postavljen za ovaj Google račun. Da postavite još opcija roditeljskog nadzora, odaberite Nastavi.
 
@@ -1844,7 +1847,7 @@
 <translation id="2673135533890720193">Čitati vašu historiju pregledanja</translation>
 <translation id="2674764818721168631">Isključeno</translation>
 <translation id="2678063897982469759">Ponovo omogući</translation>
-<translation id="2678100101831051676">Emitiranje nije uspjelo.</translation>
+<translation id="2678100101831051676">Nije moguće emitirati.</translation>
 <translation id="268053382412112343">Historija</translation>
 <translation id="2681124317993121768">Profili za goste nisu podržani</translation>
 <translation id="2682498795777673382">Roditelj je izvršio ažuriranje</translation>
@@ -2554,6 +2557,7 @@
 <translation id="3363202073972776113">Ovim novim profilom će upravljati vaša organizacija. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Od vašeg administratora: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Koristite Ctrl ili Alt</translation>
+<translation id="3368586359109138591">Preuzmite kopiju da je koristite na drugom mjestu</translation>
 <translation id="3368922792935385530">Povezano</translation>
 <translation id="3369067987974711168">Prikaz više radnji za ovaj priključak</translation>
 <translation id="3369624026883419694">Rješavanje problema s host računarom...</translation>
@@ -2742,6 +2746,7 @@
 <translation id="3532273508346491126">Upravljanje sinhronizacijom</translation>
 <translation id="3532521178906420528">Uspostavljanje mrežne veze...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – zvuk je isključen</translation>
+<translation id="3536492240554502321">Rotacija nijansi</translation>
 <translation id="3537881477201137177">To možete kasnije izmijeniti u Postavkama</translation>
 <translation id="3538066758857505094">Greška prilikom deinstaliranja Linuxa. Pokušajte ponovo.</translation>
 <translation id="354060433403403521">AC adapter</translation>
@@ -3067,6 +3072,7 @@
 <translation id="383669374481694771">Ovo su opće informacije o ovom uređaju i načinu na koji se koristi (kao što je nivo napunjenosti baterije, aktivnosti sistema i aplikacija te greške). Ovi podaci će se koristiti da se poboljša Android, a neki zbirni podaci će također pomoći Google aplikacijama i partnerima, kao što su Androidovi programeri, da poboljšaju svoje aplikacije i proizvode.</translation>
 <translation id="3838085852053358637">Učitavanje ekstenzije nije uspjelo</translation>
 <translation id="3838486795898716504">Više: <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Dodajte sačuvane lozinke u Google upravitelja lozinki</translation>
 <translation id="383891835335927981">Nijedna web lokacija nije uvećana ili umanjena</translation>
 <translation id="3839509547554145593">Omogući ubrzanje klizanja miša</translation>
 <translation id="3839516600093027468">Uvijek blokiraj pristup međumemoriji web lokaciji <ph name="HOST" /></translation>
@@ -3879,7 +3885,7 @@
 <translation id="4617019240346358451">Osvježite stranicu da koristite ekstenziju "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Opcije ekstenzija</translation>
 <translation id="4617880081511131945">Nije moguće uspostaviti vezu</translation>
-<translation id="4618195822946934889">URL može sadržavati samo ASCII znakove</translation>
+<translation id="4618195822946934889">URL može sadržavati samo znakove iz grupe ASCII</translation>
 <translation id="4619564267100705184">Potvrdite identitet</translation>
 <translation id="4619615317237390068">Kartice iz drugih uređaja</translation>
 <translation id="4620809267248568679">Ovu postavku je nametnula ekstenzija.</translation>
@@ -4141,6 +4147,7 @@
 <translation id="4871568871368204250">Isključivanje sinkronizacije</translation>
 <translation id="4871719318659334896">Zatvori grupu</translation>
 <translation id="4872192066608821120">Da uvezete lozinke, odaberite CSV fajl</translation>
+<translation id="4872212987539553601">Postavite šifriranje na uređaju</translation>
 <translation id="4873312501243535625">Provjera medijskih fajlova</translation>
 <translation id="4876273079589074638">Pomozite našim inženjerima da istraže i poprave pad aplikacije. Navedite tačne korake, ako možete. Nijedan detalj nije nebitan!</translation>
 <translation id="4876895919560854374">Zaključati i otključati ekran</translation>
@@ -5079,7 +5086,7 @@
 <translation id="5800351251499368110">Zatvaranje pretraživanja na bočnoj ploči. Pretraživanje je otvoreno na bočnoj ploči.</translation>
 <translation id="5801568494490449797">Postavke</translation>
 <translation id="5804241973901381774">Odobrenja</translation>
-<translation id="5805268472388605531">Pritisnite i zadržite tipke tipkovnice da biste vidjeli dijakritičke i posebne znakove</translation>
+<translation id="5805268472388605531">Pritisnite i držite tipke tastature da vidite oznake akcenata i specijalne znakove</translation>
 <translation id="5805697420284793859">Upravitelj prozora</translation>
 <translation id="5806447147478173900">Ukupna pohrana koju koriste prikazane web lokacije: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (zadano)</translation>
@@ -5721,7 +5728,7 @@
 <translation id="642469772702851743">Vlasnik je zaključao ovaj uređaj (SN: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Brzina pretvaranja teksta u govor</translation>
 <translation id="642729974267661262">Nije dozvoljeno reproduciranje zvuka</translation>
-<translation id="6427608534767366138">Autentifikacija proxyja potrebna je za <ph name="NETWORK_ID" /></translation>
+<translation id="6427608534767366138">Mreža "<ph name="NETWORK_ID" />" zahtijeva autentifkaciju proksi servera</translation>
 <translation id="6429384232893414837">Pogreška pri ažuriranju</translation>
 <translation id="6430814529589430811">Šifrirano koristeći Base64 ASCII, jedna potvrda</translation>
 <translation id="6431347207794742960">Aplikacija <ph name="PRODUCT_NAME" /> će postaviti automatsko ažuriranje za sve korisnike na ovom računaru.</translation>
@@ -6444,6 +6451,7 @@
 <translation id="7093220653036489319">Brzi odgovori</translation>
 <translation id="7093416310351037609">Zbog sigurnosti i zaštite podataka vaša organizacija zahtijeva da se sva preuzimanja koja ispunjavaju uslove pohranjuju na <ph name="WEB_DRIVE" /> račun organizacije.</translation>
 <translation id="7093866338626856921">Razmjena podataka s uređajima pod nazivom: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Prihvatite zahtjev za emitiranje na uređaju <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">USB-C uređaj (lijevi priključak sa zadnje strane)</translation>
 <translation id="7098447629416471489">Ostali sačuvani pretraživači će se pojaviti ovdje</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Ukloni aplikaciju}one{Ukloni aplikacije}few{Ukloni aplikacije}other{Ukloni aplikacije}}</translation>
@@ -6544,6 +6552,7 @@
 <translation id="7212097698621322584">Unesite sadašnji PIN da ga promijenite. Ako ne znate svoj PIN, moraćete poništiti sigurnosni ključ, a zatim kreirati novi PIN.</translation>
 <translation id="7213903639823314449">Pretraživač korišten u traci za adresu</translation>
 <translation id="721490496276866468">Uvoz lozinki</translation>
+<translation id="7218514093816577632">Provjerite jesu li uključena obavještenja na uređaju <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Pronašli smo više profila koji su dostupni za preuzimanje. Odaberite one koje želite preuzeti prije nego što nastavite.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Nema nijedne slabe lozinke}=1{1 slaba lozinka}one{{NUM_WEAK} slaba lozinka}few{{NUM_WEAK} slabe lozinke}other{{NUM_WEAK} slabih lozinki}}</translation>
 <translation id="7220019174139618249">Izvoz zaporki u mapu "<ph name="FOLDER" />" nije moguć</translation>
@@ -6733,6 +6742,7 @@
 <translation id="7404065585741198296">Vaš telefon s USB kablom</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Sigurnosna provjera je izvršena prije 1 sat}one{Sigurnosna provjera je izvršena prije {NUM_HOURS} sat}few{Sigurnosna provjera je izvršena prije {NUM_HOURS} sata}other{Sigurnosna provjera je izvršena prije {NUM_HOURS} sati}}</translation>
 <translation id="740624631517654988">Skočni prozor je blokiran</translation>
+<translation id="7406912950279255498">Način inverzije boja</translation>
 <translation id="7407430846095439694">Uvezi i poveži</translation>
 <translation id="7407504355934009739">Većina osoba blokira obavještenja s ove web lokacije</translation>
 <translation id="740810853557944681">Dodavanje servera za štampanje</translation>
@@ -7013,6 +7023,7 @@
 <translation id="7664620655576155379">Nepodržani Bluetooth uređaj: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Rezerviraj veličinu</translation>
 <translation id="7665369617277396874">Dodaj račun</translation>
+<translation id="766635563210446220">Nije moguće uvesti lozinke. Provjerite fajl <ph name="FILENAME" /> i provjerite je li pravilno formatiran. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Vratite <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} sedmice}one{Vratite <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} sedmice}few{Vratite <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} sedmice}other{Vratite <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} sedmica}}</translation>
 <translation id="7668423670802040666">U Googleovom Upravitelju lozinki za <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Funkcije pristupačnosti olakšavaju korištenje uređaja. Za pristup Brzim postavkama, odaberite vrijeme na dnu ekrana.</translation>
@@ -7545,6 +7556,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{videozapis}one{# videozapis}few{# videozapisa}other{# videozapisa}}</translation>
 <translation id="8143442547342702591">Nevažeća aplikacija</translation>
 <translation id="8143609395536282994">Kako možete upravljati podacima:</translation>
+<translation id="8145170459658034418">Ušteda memorije</translation>
 <translation id="8146177459103116374">Ako ste već registrirani na ovom uređaju, možete se <ph name="LINK2_START" />prijaviti kao postojeći korisnik<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Dodajte i rangirajte omiljene jezike. Web lokacije će se prikazivati na vašim omiljenim jezicima, kada to bude moguće. Ove postavke se sinhroniziraju s postavkama preglednika. <ph name="BEGIN_LINK_LEARN_MORE" />Saznajte više<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Prijava nije uspjela. Kontaktirajte administratora ili pokušajte ponovo.</translation>
@@ -7604,6 +7616,7 @@
 <translation id="8198456017687137612">Emitiranje kartice</translation>
 <translation id="8199300056570174101">Svojstva mreže (usluge) i uređaja</translation>
 <translation id="8200772114523450471">Nastavi</translation>
+<translation id="8200789660596905522">Obavezno prihvatite zahtjev za emitiranje na uređaju <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Ponovo unesite zaporku da biste ažurirali svoj profil na uređaju <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Naziv uređaja za Dijeljenje u blizini</translation>
 <translation id="8203732864715032075">Šalje vam obavještenja i kao zadanu postavku pamti ovaj računar za Messages. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
@@ -7680,6 +7693,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Vlasnik može upravljati ovom funkcijom iz menija Postavke &gt; Napredno &gt; Automatsko slanje dijagnostičkih podataka i podataka o korištenju Googleu.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Ako je za vaše dijete uključena postavka dodatne Aktivnosti na webu i u aplikacijama, ti podaci se mogu sačuvati na njegovom Google računu. Saznajte više o ovim postavkama i kako ih prilagoditi na stranici families.google.com<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Nevažeća potvrda klijenta</translation>
+<translation id="8270162672241199380">Program za instalaciju Steam</translation>
 <translation id="827097179112817503">Prikaži dugme za početni ekran</translation>
 <translation id="8271268254812352141">Primite definicije, prijevode ili pretvaranje jedinica kada kliknete desnim klikom na tekst ili ga dodirnete i zadržite. Prilagodite jezike prijevoda u <ph name="LINK_BEGIN" />Jezicima web lokacije<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Roditelji, sljedećih nekoliko koraka je za vas. Uređaj <ph name="DEVICE_TYPE" /> možete vratiti djetetu nakon što postavite račun.</translation>
@@ -7855,7 +7869,7 @@
 <translation id="844063558976952706">Uvijek na ovoj web-lokaciji</translation>
 <translation id="8441313165929432954">Omogući/onemogući dijeljenje internetske veze</translation>
 <translation id="8443795068008423036">Provjerite je li uređaj ažuriran i pokušajte ponovo</translation>
-<translation id="8443986842926457191">URL ima više od 2048 znakova</translation>
+<translation id="8443986842926457191">URL sadržava više od 2048 znakova</translation>
 <translation id="8446884382197647889">Saznajte više</translation>
 <translation id="8447409163267621480">Uključite Ctrl ili Alt</translation>
 <translation id="844850004779619592">Nisu pronađene komande</translation>
@@ -7921,7 +7935,7 @@
 <translation id="851263357009351303">Uvijek dozvoli da <ph name="HOST" /> prikazuje slike</translation>
 <translation id="8513108775083588393">Aut. rotiranje</translation>
 <translation id="8514746246728959655">Probajte drugi sigurnosni ključ</translation>
-<translation id="8519895319663397036">Zaporke se ne mogu uvesti. Datoteka treba biti manja od 150 KB.</translation>
+<translation id="8519895319663397036">Nije moguće uvesti lozinke. Fajl treba biti manji od 150 kB.</translation>
 <translation id="8523493869875972733">Zadrži izmjene</translation>
 <translation id="8523849605371521713">Dodano pravilom</translation>
 <translation id="8524783101666974011">Sačuvajte kartice na Google računu</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index b3dd4933..9e5784eb 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Brzy bude čas na přestávku</translation>
 <translation id="1062628064301375934">Pomozte nám vybudovat web zajišťující více soukromí</translation>
 <translation id="1067048845568873861">Vytvořeno</translation>
+<translation id="1067661089446014701">Za účelem zvýšení zabezpečení můžete hesla před uložením do účtu Google v zařízení zašifrovat</translation>
 <translation id="1067922213147265141">Další služby Google</translation>
 <translation id="1069355737714877171">Odstranit profil eSIM karty s názvem <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Jiný program ve vašem počítači nainstaloval rozšíření, které může měnit funkce Chromu.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Váš administrátor doporučuje pro toto nastavení konkrétní hodnotu.</translation>
 <translation id="1225177025209879837">Probíhá zpracování požadavku...</translation>
 <translation id="1227507814927581609">Při připojování k zařízení <ph name="DEVICE_NAME" /> selhalo ověření.</translation>
+<translation id="1227993798763400520">Odesílání se nezdařilo. Zkuste to znovu.</translation>
 <translation id="1230417814058465809">Je zapnutá standardní ochrana. Ještě vyšší zabezpečení poskytuje pokročilá ochrana.</translation>
 <translation id="1231733316453485619">Zapnout synchronizaci?</translation>
 <translation id="1232569758102978740">Bez názvu</translation>
@@ -1114,6 +1116,7 @@
 <translation id="2031914984822377766">Přidejte preferované <ph name="LINK_BEGIN" />jazyky webu<ph name="LINK_END" />. První jazyk v seznamu se bude používat pro překlady.</translation>
 <translation id="2033758234986231162">Nelze udržet spojení s telefonem. Ujistěte se, že je telefon blízko, že je odemknutý a že jsou zapnuté Bluetooth a Wi-Fi.</translation>
 <translation id="2034346955588403444">Přidat jinou síť Wi-Fi</translation>
+<translation id="2035211704574173780">Stupně šedé</translation>
 <translation id="203574396658008164">Povolit psaní poznámek na obrazovce uzamčení</translation>
 <translation id="2037445849770872822">V tomto účtu Google je nastaven dohled. Chcete-li nastavit další rodičovskou kontrolu, vyberte Pokračovat.
 
@@ -2540,6 +2543,7 @@
 <translation id="3363202073972776113">Tento nový profil bude spravovat vaše organizace. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Od vašeho administrátora: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Použijte buď Ctrl, nebo Alt</translation>
+<translation id="3368586359109138591">Stáhněte si kopii pro použití jinde</translation>
 <translation id="3368922792935385530">Připojeno</translation>
 <translation id="3369067987974711168">Zobrazit další akce pro tento port</translation>
 <translation id="3369624026883419694">Rozpoznávání hostitele...</translation>
@@ -2728,6 +2732,7 @@
 <translation id="3532273508346491126">Správa synchronizace</translation>
 <translation id="3532521178906420528">Navazování připojení k síti...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – zvuk je vypnutý</translation>
+<translation id="3536492240554502321">Střídání odstínů</translation>
 <translation id="3537881477201137177">Tuto hodnotu později v Nastavení můžete změnit</translation>
 <translation id="3538066758857505094">Při odinstalaci systému Linux došlo k chybě. Zkuste to znovu.</translation>
 <translation id="354060433403403521">Napájecí adaptér</translation>
@@ -3053,6 +3058,7 @@
 <translation id="383669374481694771">Toto jsou obecné informace o zařízení a způsobu jeho používání (např. stav baterie, aktivita systému a aplikací nebo chyby). Data budou využívána k vylepšení systému Android. Některé souhrnné informace pomohou s vylepšováním aplikací a služeb také našim partnerům, například vývojářům Androidu.</translation>
 <translation id="3838085852053358637">Rozšíření se nepodařilo načíst</translation>
 <translation id="3838486795898716504">Další stránka <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Přidejte si uložená hesla do Správce hesel Google</translation>
 <translation id="383891835335927981">Žádný web nemá nastaveno přiblížení či oddálení zobrazení</translation>
 <translation id="3839509547554145593">Zapnout zrychlení posouvání myší</translation>
 <translation id="3839516600093027468">Webu <ph name="HOST" /> přístup ke schránce vždy blokovat</translation>
@@ -4124,6 +4130,7 @@
 <translation id="4871568871368204250">Vypnutí synchronizace</translation>
 <translation id="4871719318659334896">Zavřít skupinu</translation>
 <translation id="4872192066608821120">Pokud chcete importovat hesla, vyberte soubor CSV</translation>
+<translation id="4872212987539553601">Nastavení šifrování v zařízení</translation>
 <translation id="4873312501243535625">Nástroj na kontrolu mediálních souborů</translation>
 <translation id="4876273079589074638">Pomozte našim technikům prozkoumat toto selhání a odstranit jeho příčiny. Je-li to možné, přesně popište jednotlivé kroky. Důležité mohou být i nejmenší podrobnosti.</translation>
 <translation id="4876895919560854374">Uzamknutí a odemknutí obrazovky</translation>
@@ -6422,6 +6429,7 @@
 <translation id="7093220653036489319">Rychlé odpovědi</translation>
 <translation id="7093416310351037609">Vaše organizace z důvodu bezpečnosti dat a zabezpečení vyžaduje, aby všechna aktivní stahování byla ukládána do jejího účtu <ph name="WEB_DRIVE" />.</translation>
 <translation id="7093866338626856921">Výměna dat s následujícími zařízeními: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Přijmout žádost o odesílání ze zařízení <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">Zařízení USB Type-C (levý zadní port)</translation>
 <translation id="7098447629416471489">Zde se zobrazí ostatní uložené vyhledávače</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Odstranit aplikaci}few{Odstranit aplikace}many{Odstranit aplikace}other{Odstranit aplikace}}</translation>
@@ -6522,6 +6530,7 @@
 <translation id="7212097698621322584">Chcete-li změnit PIN, zadejte aktuální PIN. Pokud svůj PIN neznáte, budete bezpečnostní klíč muset resetovat a poté vytvořit nový PIN.</translation>
 <translation id="7213903639823314449">Vyhledávač používaný v adresním řádku</translation>
 <translation id="721490496276866468">Importovat hesla</translation>
+<translation id="7218514093816577632">V zařízení <ph name="DEVICE_NAME" /> musí být zapnutá oznámení.</translation>
 <translation id="7219473482981809164">Našli jsme několik profilů ke stažení. Než budete pokračovat, vyberte, které chcete stáhnout.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Žádná slabá hesla}=1{1 slabé heslo}few{{NUM_WEAK} slabá hesla}many{{NUM_WEAK} slabého hesla}other{{NUM_WEAK} slabých hesel}}</translation>
 <translation id="7220019174139618249">Hesla nelze exportovat do složky „<ph name="FOLDER" />“</translation>
@@ -6711,6 +6720,7 @@
 <translation id="7404065585741198296">Váš telefon s kabelem USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Bezpečnostní kontrola proběhla před hodinou}few{Bezpečnostní kontrola proběhla před {NUM_HOURS} hodinami}many{Bezpečnostní kontrola proběhla před {NUM_HOURS} hodiny}other{Bezpečnostní kontrola proběhla před {NUM_HOURS} hodinami}}</translation>
 <translation id="740624631517654988">Zablokováno vyskakovací okno</translation>
+<translation id="7406912950279255498">Režim převrácení barev</translation>
 <translation id="7407430846095439694">Importovat a svázat</translation>
 <translation id="7407504355934009739">Většina lidí oznámení z tohoto webu blokuje</translation>
 <translation id="740810853557944681">Přidání tiskového serveru</translation>
@@ -6991,6 +7001,7 @@
 <translation id="7664620655576155379">Nepodporované zařízení Bluetooth: <ph name="DEVICE_NAME" />.</translation>
 <translation id="7665082356120621510">Rezervovat</translation>
 <translation id="7665369617277396874">Přidat účet</translation>
+<translation id="766635563210446220">Hesla se nepodařilo importovat. Zkontrolujte soubor <ph name="FILENAME" /> a jeho formátování. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Vraťte zařízení <ph name="DEVICE_TYPE" /> do {NUM_WEEKS} týdne}few{Vraťte zařízení <ph name="DEVICE_TYPE" /> do {NUM_WEEKS} týdnů}many{Vraťte zařízení <ph name="DEVICE_TYPE" /> do {NUM_WEEKS} týdne}other{Vraťte zařízení <ph name="DEVICE_TYPE" /> do {NUM_WEEKS} týdnů}}</translation>
 <translation id="7668423670802040666">Ve Správci hesel Google pro účet <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Funkce pro usnadnění přístupu zajišťují snazší používání zařízení. Rychlé nastavení otevřete výběrem času ve spodní části obrazovky.</translation>
@@ -7522,6 +7533,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{video}few{# videa}many{# videa}other{# videí}}</translation>
 <translation id="8143442547342702591">Neplatná aplikace</translation>
 <translation id="8143609395536282994">Jak můžete své údaje spravovat:</translation>
+<translation id="8145170459658034418">Spořič paměti</translation>
 <translation id="8146177459103116374">V tomto zařízení jste již zaregistrováni. Můžete se <ph name="LINK2_START" />přihlásit jako stávající uživatel<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Přidejte a ohodnoťte preferované jazyky. Pokud to bude možné, webové stránky se budou zobrazovat ve vašem preferovaném jazyce. Tyto předvolby jsou synchronizovány s nastavením prohlížeče. <ph name="BEGIN_LINK_LEARN_MORE" />Další informace<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Přihlášení se nezdařilo. Kontaktujte administrátora nebo to zkuste znovu.</translation>
@@ -7581,6 +7593,7 @@
 <translation id="8198456017687137612">Odesílání karty</translation>
 <translation id="8199300056570174101">Vlastnosti sítě (služba) a zařízení</translation>
 <translation id="8200772114523450471">Pokračovat</translation>
+<translation id="8200789660596905522">V zařízení <ph name="DEVICE_NAME" /> je třeba přijmout žádost o odesílání.</translation>
 <translation id="8202160505685531999">Chcete-li aktualizovat profil zařízení <ph name="DEVICE_TYPE" />, znovu zadejte heslo.</translation>
 <translation id="8203152941016626022">Název zařízení pro sdílení nablízko</translation>
 <translation id="8203732864715032075">Odesílat vám oznámení a zapamatovat si tento počítač pro Zprávy. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation>
@@ -7657,6 +7670,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Vlastník tuto funkci může ovládat pomocí možnosti Nastavení &gt; Rozšířená nastavení &gt; Automaticky do Googlu odesílat diagnostické údaje a údaje o využití.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Pokud je pro dítě zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do jeho účtu Google. Další informace o těchto nastaveních a o tom, jak je upravit, najdete na stránce families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Neplatný certifikát klienta</translation>
+<translation id="8270162672241199380">Instalační program Steamu</translation>
 <translation id="827097179112817503">Zobrazit tlačítko Domovská stránka</translation>
 <translation id="8271268254812352141">Když podržíte text nebo na něj kliknete pravým tlačítkem, mohou se zobrazit definice, překlad nebo převod jednotek. Jazyky překladu můžete upravit v sekci <ph name="LINK_BEGIN" />Jazyky webových stránek<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Rodiče, další kroky jsou pro vás. Až nastavení účtu dokončíte, budete zařízení <ph name="DEVICE_TYPE" /> moci vrátit dítěti.</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 8b17ea7..1e76fff 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -2189,6 +2189,7 @@
 <translation id="2977480621796371840">Κατάργηση από την ομάδα</translation>
 <translation id="2979639724566107830">Άνοιγμα σε νέο παράθυρο</translation>
 <translation id="2981113813906970160">Εμφάνιση μεγάλου δείκτη ποντικιού</translation>
+<translation id="2981293774053328982">Αυτό το αρχείο περιέχει ένα κακόβουλο πρόγραμμα που μπορεί να παραβιάσει τους προσωπικούς λογαριασμούς ή τους λογαριασμούς κοινωνικών δικτύων σας.</translation>
 <translation id="2983373101216420412">Επίπεδο μπαταρίας θήκης <ph name="PERCENTAGE" />%.</translation>
 <translation id="2985348301114641460">Αποστολή ενός αιτήματος στον διαχειριστή σας για την εγκατάσταση της επέκτασης <ph name="EXTENSION_NAME" />;</translation>
 <translation id="2987620471460279764">Κοινόχρηστο κείμενο από άλλη συσκευή</translation>
@@ -3774,6 +3775,7 @@
 <translation id="4514610446763173167">Εναλλαγή αναπαραγωγής ή παύσης βίντεο</translation>
 <translation id="451515744433878153">Κατάργηση</translation>
 <translation id="4515872537870654449">Επικοινωνήστε με την Dell για επισκευή. Η βάση σύνδεσης θα απενεργοποιηθεί εάν ο ανεμιστήρας δεν λειτουργεί.</translation>
+<translation id="4518840066030486079">Στιλ λειτουργίας πλήκτρου Shift</translation>
 <translation id="4519331665958994620">Οι ιστότοποι μπορούν να ζητούν να χρησιμοποιήσουν την κάμερά σας</translation>
 <translation id="4519935350946509010">Σφάλμα σύνδεσης.</translation>
 <translation id="4520385623207007473">Χρησιμοποιούνται cookie</translation>
@@ -3869,6 +3871,7 @@
 <translation id="4598345735110653698">Διαχείριση κλειδιών πρόσβασης</translation>
 <translation id="4598556348158889687">Διαχείριση αποθηκευτικού χώρου</translation>
 <translation id="4598776695426288251">Το Wi-Fi είναι διαθέσιμο από πολλαπλές συσκευές</translation>
+<translation id="4600071396330666617">Αριθμός προτάσεων</translation>
 <translation id="4601426376352205922">Σήμανση ως μη αναγνωσμένης</translation>
 <translation id="4602466770786743961">Να επιτρέπεται πάντα στο <ph name="HOST" /> η πρόσβαση στην κάμερα και στο μικρόφωνό σας</translation>
 <translation id="4606551464649945562">Να μην επιτρέπεται σε ιστοτόπους η δημιουργία τρισδιάστατου χάρτη του περιβάλλοντα χώρου σας και η παρακολούθηση της θέσης της κάμερας</translation>
@@ -4315,6 +4318,7 @@
 <translation id="5043913660911154449">Εναλλακτικά, καθορίστε το PPD του εκτυπωτή σας <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Λανθασμένος κωδικός πρόσβασης</translation>
 <translation id="504561833207953641">Άνοιγμα σε υπάρχουσα περίοδο σύνδεσης προγράμματος περιήγησης.</translation>
+<translation id="5049614114599109018">Χρήση ιστορικού εισαγωγής</translation>
 <translation id="5051836348807686060">Δεν υποστηρίζεται ορθογραφικός έλεγχος για τις γλώσσες που επιλέξατε</translation>
 <translation id="5052499409147950210">Επεξεργασία ιστοτόπου</translation>
 <translation id="505347685865235222">Ομάδα χωρίς όνομα - <ph name="GROUP_CONTENT_STRING" /></translation>
@@ -6740,6 +6744,7 @@
 <translation id="7404065585741198296">Το τηλέφωνό σας με καλώδιο USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Ο έλεγχος ασφαλείας εκτελέστηκε πριν από 1 ώρα.}other{Ο έλεγχος ασφαλείας εκτελέστηκε πριν από {NUM_HOURS} ώρες.}}</translation>
 <translation id="740624631517654988">Αποκλείστηκε αναδυόμενο παράθυρο</translation>
+<translation id="7406912950279255498">Λειτουργία αντιστροφής χρωμάτων</translation>
 <translation id="7407430846095439694">Εισαγωγή και δέσμευση</translation>
 <translation id="7407504355934009739">Οι περισσότεροι χρήστες αποκλείουν τις ειδοποιήσεις από αυτόν τον ιστότοπο.</translation>
 <translation id="740810853557944681">Προσθέστε έναν διακομιστή εκτύπωσης</translation>
@@ -7690,6 +7695,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Ο κάτοχος μπορεί να ελέγχει αυτήν τη λειτουργία από τις Ρυθμίσεις &gt; Σύνθετες &gt; Αυτόματη αποστολή δεδομένων διαγνωστικών στοιχείων και χρήσης στην Google.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Εάν είναι ενεργή η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών για το παιδί σας, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό του Google. Μάθετε περισσότερα σχετικά με αυτές τις ρυθμίσεις και τον τρόπο προσαρμογής τους στη διεύθυνση families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Μη έγκυρο πιστοποιητικό πελάτη</translation>
+<translation id="8270162672241199380">Πρόγραμμα εγκατάστασης Steam</translation>
 <translation id="827097179112817503">Εμφάνιση κουμπιού Αρχικής σελίδας</translation>
 <translation id="8271268254812352141">Λάβετε ορισμούς, μεταφράσεις ή μετατροπές μονάδων κάνοντας δεξί κλικ ή αγγίζοντας παρατεταμένα κείμενο. Προσαρμόστε τις γλώσσες μετάφρασης στην ενότητα <ph name="LINK_BEGIN" />γλώσσες ιστοτόπου<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Τα επόμενα βήματα αφορούν εσάς, τους γονείς. Μπορείτε να επιστρέψετε τη συσκευή <ph name="DEVICE_TYPE" /> στο παιδί μετά τη ρύθμιση του λογαριασμού.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 7b6a295..c41bd69f 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -2311,6 +2311,7 @@
 <translation id="3090819949319990166">Can't copy external crx file to <ph name="TEMP_CRX_FILE" />.</translation>
 <translation id="3090871774332213558">"<ph name="DEVICE_NAME" />" paired</translation>
 <translation id="3093714882666365141">Don't allow sites to install payment handlers</translation>
+<translation id="3093958632721393232">Turn on only when my battery is low</translation>
 <translation id="3094141017404513551">This will separate your browsing from <ph name="EXISTING_USER" /></translation>
 <translation id="3095871294753148861">Bookmarks, passwords and other browser data are synced with the primary account.</translation>
 <translation id="3099836255427453137">{NUM_EXTENSIONS,plural, =1{1 potentially harmful extension is off. You can also remove it.}other{{NUM_EXTENSIONS} potentially harmful extensions are off. You can also remove them.}}</translation>
@@ -5033,6 +5034,7 @@
 <translation id="5747552184818312860">Expires</translation>
 <translation id="5747785204778348146">Developer - unstable</translation>
 <translation id="5747809636523347288">Paste and go to <ph name="URL" /></translation>
+<translation id="5748137879145720682">Turn on when my computer is unplugged</translation>
 <translation id="5751345516399502412">Check tethering readiness</translation>
 <translation id="5755022574660047665">memories from Google Photos</translation>
 <translation id="5756163054456765343">Help centre</translation>
@@ -7667,6 +7669,7 @@
 <translation id="8248381369318572865">Access your microphone and analyse your speech</translation>
 <translation id="8248887045858762645">Chrome tip</translation>
 <translation id="8249048954461686687">OEM folder</translation>
+<translation id="8249239468199142122">Battery Saver</translation>
 <translation id="8249615410597138718">Send to Your Devices</translation>
 <translation id="8250210000648910632">Out of storage space</translation>
 <translation id="8251441930213048644">Refresh now</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 83a8736..b9894a0 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Casi es hora de un descanso</translation>
 <translation id="1062628064301375934">Ayúdanos a crear una Web más privada</translation>
 <translation id="1067048845568873861">Creada</translation>
+<translation id="1067661089446014701">Para más seguridad, puedes encriptar las contraseñas en tu dispositivo antes de que se guarden en tu Cuenta de Google</translation>
 <translation id="1067922213147265141">Otros servicios de Google</translation>
 <translation id="1069355737714877171">Eliminar el perfil de eSIM <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Otro programa en tu computadora agregó una extensión que puede cambiar el funcionamiento de Chrome.
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">El administrador recomienda un valor específico para esta configuración.</translation>
 <translation id="1225177025209879837">Procesando la solicitud...</translation>
 <translation id="1227507814927581609">Error de autenticación al establecer la conexión con "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">No se pudo transmitir el contenido, vuelve a intentarlo</translation>
 <translation id="1230417814058465809">Se activó la protección estándar. Para obtener más seguridad, usa la protección mejorada.</translation>
 <translation id="1231733316453485619">¿Quieres activar la sincronización?</translation>
 <translation id="1232569758102978740">Sin título</translation>
@@ -689,6 +691,7 @@
 <translation id="1640283014264083726">PKCS N. º 1 MD4 con encriptación RSA</translation>
 <translation id="1641113438599504367">Navegación segura</translation>
 <translation id="1641496881756082050">Más acciones para <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{No se importó 1 contraseña más porque tiene un formato incorrecto}other{No se importaron {NUM_PASSWORDS} contraseñas más porque tienen un formato incorrecto}}</translation>
 <translation id="1642492862748815878">Se estableció conexión con <ph name="DEVICE" /> y <ph name="NUMBER_OF_DEVICES" /> dispositivos Bluetooth más</translation>
 <translation id="1642494467033190216">Se requiere una eliminación de la protección de rootfs y el reinicio antes de habilitar otras funciones de depuración.</translation>
 <translation id="1643072738649235303">Firma X9.62 ECDSA con SHA-1</translation>
@@ -1109,6 +1112,7 @@
 <translation id="2031914984822377766">Agrega tus <ph name="LINK_BEGIN" />idiomas preferidos para los sitios web<ph name="LINK_END" />. Para las traducciones, se utilizará el primer idioma de la lista.</translation>
 <translation id="2033758234986231162">No se puede mantener la conexión con tu teléfono. Asegúrate de que el teléfono esté cerca y desbloqueado, y que el Bluetooth y el Wi-Fi estén encendidos.</translation>
 <translation id="2034346955588403444">Agregar otra red Wi-Fi</translation>
+<translation id="2035211704574173780">Escala de grises</translation>
 <translation id="203574396658008164">Habilitar la toma de notas desde la pantalla bloqueada</translation>
 <translation id="2037445849770872822">Se configuró la supervisión de esta Cuenta de Google. Para configurar más controles parentales, selecciona Continuar.
 
@@ -1826,6 +1830,7 @@
 <translation id="2673135533890720193">Leer el historial de navegación</translation>
 <translation id="2674764818721168631">No</translation>
 <translation id="2678063897982469759">Permitir nuevamente</translation>
+<translation id="2678100101831051676">No se puede transmitir.</translation>
 <translation id="268053382412112343">Hi&amp;storial</translation>
 <translation id="2681124317993121768">Los perfiles de invitado no son compatibles</translation>
 <translation id="2682498795777673382">Actualización por parte de uno de tus padres</translation>
@@ -2535,6 +2540,7 @@
 <translation id="3363202073972776113">Tu organización administrará este nuevo perfil. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Mensaje de tu administrador: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Usar Ctrl o Alt</translation>
+<translation id="3368586359109138591">Descarga una copia para usarla en otro lugar</translation>
 <translation id="3368922792935385530">Conectado</translation>
 <translation id="3369067987974711168">Mostrar más acciones para este puerto</translation>
 <translation id="3369624026883419694">Resolviendo host...</translation>
@@ -2723,6 +2729,7 @@
 <translation id="3532273508346491126">Administración de la sincronización</translation>
 <translation id="3532521178906420528">Estableciendo una conexión de red…</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" />: Audio silenciado</translation>
+<translation id="3536492240554502321">Rotación de tono</translation>
 <translation id="3537881477201137177">Puedes cambiarlo más tarde en la Configuración</translation>
 <translation id="3538066758857505094">Se produjo un error al desinstalar Linux. Vuelve a intentarlo.</translation>
 <translation id="354060433403403521">Adaptador de CA</translation>
@@ -3048,6 +3055,7 @@
 <translation id="383669374481694771">Aquí se muestra información general sobre este dispositivo y cómo se usa (por ejemplo, el nivel de batería, la actividad de las apps y el sistema, y los errores). Los datos se usarán para mejorar Android, y la información agregada también permitirá que las apps y los socios de Google, como los desarrolladores de Android, mejoren sus apps y productos.</translation>
 <translation id="3838085852053358637">Se produjo un error al cargar la extensión</translation>
 <translation id="3838486795898716504">Más <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Agrega contraseñas guardadas al Administrador de contraseñas de Google</translation>
 <translation id="383891835335927981">No se configuró el zoom para ningún sitio</translation>
 <translation id="3839509547554145593">Habilitar la aceleración de desplazamiento del mouse</translation>
 <translation id="3839516600093027468">Nunca permitir que <ph name="HOST" /> vea el portapapeles</translation>
@@ -3859,6 +3867,7 @@
 <translation id="4617019240346358451">Vuelve a cargar la página para usar "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Opciones de las extensiones</translation>
 <translation id="4617880081511131945">No se puede establecer la conexión</translation>
+<translation id="4618195822946934889">La URL solo puede tener caracteres ASCII.</translation>
 <translation id="4619564267100705184">Verificar tu identidad</translation>
 <translation id="4619615317237390068">Pestañas de otros dispositivos</translation>
 <translation id="4620809267248568679">Una extensión administra esta configuración.</translation>
@@ -4120,6 +4129,7 @@
 <translation id="4871568871368204250">Desactivar la sincronización</translation>
 <translation id="4871719318659334896">Cerrar grupo</translation>
 <translation id="4872192066608821120">Para importar contraseñas, selecciona un archivo CSV.</translation>
+<translation id="4872212987539553601">Configura la encriptación integrada en el dispositivo</translation>
 <translation id="4873312501243535625">Comprobador de archivos multimedia</translation>
 <translation id="4876273079589074638">¡Ayuda a que nuestros ingenieros investiguen y solucionen este fallo! Enumera los pasos exactos si es posible. No omitas ningún detalle.</translation>
 <translation id="4876895919560854374">Bloquear y desbloquear la pantalla</translation>
@@ -5058,6 +5068,7 @@
 <translation id="5800351251499368110">Cierra la búsqueda en el panel lateral. La búsqueda está abierta en el panel lateral.</translation>
 <translation id="5801568494490449797">Preferencias</translation>
 <translation id="5804241973901381774">Permisos</translation>
+<translation id="5805268472388605531">Mantén presionadas las teclas para ver acentos y caracteres especiales</translation>
 <translation id="5805697420284793859">Administrador de ventanas</translation>
 <translation id="5806447147478173900">Almacenamiento total que usan los sitios que se muestran: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (predeterminado)</translation>
@@ -5699,6 +5710,7 @@
 <translation id="642469772702851743">El propietario bloqueó este dispositivo (NS: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Velocidad para texto a voz</translation>
 <translation id="642729974267661262">No puede reproducir sonido</translation>
+<translation id="6427608534767366138">Se requiere la autenticación del proxy para "<ph name="NETWORK_ID" />"</translation>
 <translation id="6429384232893414837">Error en la actualización</translation>
 <translation id="6430814529589430811">Certificado único ASCII con codificación Base64</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> configurará actualizaciones automáticas para todos los usuarios de esta computadora.</translation>
@@ -6417,6 +6429,7 @@
 <translation id="7093220653036489319">Respuestas rápidas</translation>
 <translation id="7093416310351037609">Con el fin de preservar la seguridad de los datos, tu organización requiere que todas las descargas aptas se guarden en la cuenta de <ph name="WEB_DRIVE" /> de tu organización.</translation>
 <translation id="7093866338626856921">Intercambiar datos con los siguientes dispositivos: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Acepta la solicitud de transmisión en tu <ph name="DEVICE_NAME" /></translation>
 <translation id="7098389117866926363">Dispositivo USB-C (puerto izquierdo en la parte posterior)</translation>
 <translation id="7098447629416471489">Los otros motores de búsqueda guardados aparecerán aquí</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Quitar app}other{Quitar apps}}</translation>
@@ -6517,6 +6530,7 @@
 <translation id="7212097698621322584">Ingresa tu PIN actual para cambiarlo. Si no sabes cuál es, deberás restablecer la llave de seguridad y, luego, crear uno nuevo.</translation>
 <translation id="7213903639823314449">Motor de búsqueda que se usa en la barra de direcciones</translation>
 <translation id="721490496276866468">Importar contraseñas</translation>
+<translation id="7218514093816577632">Asegúrate de que las notificaciones estén activadas en tu <ph name="DEVICE_NAME" /></translation>
 <translation id="7219473482981809164">Encontramos múltiples perfiles disponibles para descargar. Antes de continuar, selecciona los que quieras descargar.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{No hay contraseñas poco seguras}=1{1 contraseña poco segura}other{{NUM_WEAK} contraseñas poco seguras}}</translation>
 <translation id="7220019174139618249">No se pueden exportar las contraseñas a "<ph name="FOLDER" />"</translation>
@@ -6986,6 +7000,7 @@
 <translation id="7664620655576155379">Dispositivo Bluetooth no compatible: "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7665082356120621510">Reservar espacio</translation>
 <translation id="7665369617277396874">Agregar cuenta</translation>
+<translation id="766635563210446220">No se pudieron importar las contraseñas. Revisa <ph name="FILENAME" /> y asegúrate de que tenga el formato correcto. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Devuelve el dispositivo <ph name="DEVICE_TYPE" /> en el transcurso de {NUM_WEEKS} semana}other{Devuelve el dispositivo <ph name="DEVICE_TYPE" /> en el transcurso de {NUM_WEEKS} semanas}}</translation>
 <translation id="7668423670802040666">En el Administrador de contraseñas de Google de <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Las funciones de accesibilidad hacen que tu dispositivo sea más fácil de usar. Para acceder a la Configuración rápida, selecciona la hora en la parte inferior de la pantalla.</translation>
@@ -7518,6 +7533,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{un video}other{# videos}}</translation>
 <translation id="8143442547342702591">La app no es válida</translation>
 <translation id="8143609395536282994">Cómo puedes administrar tu información:</translation>
+<translation id="8145170459658034418">Ahorro de memoria</translation>
 <translation id="8146177459103116374">Si ya estás registrado en este dispositivo, puedes <ph name="LINK2_START" />acceder como un usuario existente<ph name="LINK2_END" /> .</translation>
 <translation id="8146287226035613638">Agrega tus idiomas preferidos y ordénalos. Los sitios web, cuando sea posible, se mostrarán en estos idiomas. Estas preferencias están sincronizadas con la configuración de tu navegador. <ph name="BEGIN_LINK_LEARN_MORE" />Más información<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Se produjo un error en el acceso. Comunícate con el administrador o vuelve a intentarlo.</translation>
@@ -7577,6 +7593,7 @@
 <translation id="8198456017687137612">Pestaña de transmisión</translation>
 <translation id="8199300056570174101">Propiedades de la red (servicio) y del dispositivo</translation>
 <translation id="8200772114523450471">Reanudar</translation>
+<translation id="8200789660596905522">Asegúrate de aceptar la solicitud de transmisión en tu <ph name="DEVICE_NAME" /></translation>
 <translation id="8202160505685531999">Vuelve a ingresar la contraseña para actualizar tu perfil de <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Nombre del dispositivo de Compartir con Nearby</translation>
 <translation id="8203732864715032075">Te envía notificaciones y establece esta computadora como la opción predeterminada para la app de Mensajes. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
@@ -7828,6 +7845,7 @@
 <translation id="844063558976952706">Siempre en este sitio</translation>
 <translation id="8441313165929432954">Habilitar/Inhabilitar la conexión mediante dispositivo móvil</translation>
 <translation id="8443795068008423036">Asegúrate de que el dispositivo esté actualizado y vuelve a intentarlo</translation>
+<translation id="8443986842926457191">La URL tiene más de 2048 caracteres.</translation>
 <translation id="8446884382197647889">Más información</translation>
 <translation id="8447409163267621480">Incluir Ctrl o Alt</translation>
 <translation id="844850004779619592">No se encontraron comandos</translation>
@@ -7893,6 +7911,7 @@
 <translation id="851263357009351303">Siempre permitir que <ph name="HOST" /> muestre imágenes</translation>
 <translation id="8513108775083588393">Giro autom.</translation>
 <translation id="8514746246728959655">Prueba con otra llave de seguridad</translation>
+<translation id="8519895319663397036">No se pudieron importar las contraseñas. El tamaño del archivo debe ser menor a 150 KB.</translation>
 <translation id="8523493869875972733">Conservar cambios</translation>
 <translation id="8523849605371521713">Agregada por la política</translation>
 <translation id="8524783101666974011">Guarda tarjetas en tu Cuenta de Google</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 50230f2a..ed5faab 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Ya casi es la hora de hacer un descanso</translation>
 <translation id="1062628064301375934">Ayúdanos a crear una Web más privada</translation>
 <translation id="1067048845568873861">Creada</translation>
+<translation id="1067661089446014701">Para mayor seguridad, puedes cifrar las contraseñas en tu dispositivo antes de que se guarden en tu cuenta de Google.</translation>
 <translation id="1067922213147265141">Otros servicios de Google</translation>
 <translation id="1069355737714877171">Retirar el perfil eSIM con nombre <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Otro programa de tu ordenador ha añadido una extensión que puede cambiar el funcionamiento de Chrome.
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">El administrador recomienda un valor específico para esta opción.</translation>
 <translation id="1225177025209879837">Procesando solicitud...</translation>
 <translation id="1227507814927581609">Se ha producido un error de autenticación al establecer conexión con <ph name="DEVICE_NAME" />.</translation>
+<translation id="1227993798763400520">Error al enviar. Vuelve a intentarlo.</translation>
 <translation id="1230417814058465809">La protección estándar está activada. Para navegar con aún más seguridad, usa la protección mejorada.</translation>
 <translation id="1231733316453485619">¿Activar sincronización?</translation>
 <translation id="1232569758102978740">Sin título</translation>
@@ -1113,6 +1115,7 @@
 <translation id="2031914984822377766">Añade tus <ph name="LINK_BEGIN" />idiomas preferidos para los sitios web<ph name="LINK_END" />. Para las traducciones, se usará el primer idioma de la lista.</translation>
 <translation id="2033758234986231162">No se puede mantener una conexión con tu teléfono. Asegúrate de que tengas el teléfono cerca, de que esté desbloqueado y de que el Bluetooth y el Wi‑Fi estén activados</translation>
 <translation id="2034346955588403444">Añadir otra red Wi-Fi</translation>
+<translation id="2035211704574173780">Escala de grises</translation>
 <translation id="203574396658008164">Habilitar la toma de notas desde la pantalla de bloqueo</translation>
 <translation id="2037445849770872822">Se ha configurado la supervisión de esta cuenta de Google. Si quieres configurar más controles parentales, selecciona Continuar.
 
@@ -2541,6 +2544,7 @@
 <translation id="3363202073972776113">Tu organización gestionará este nuevo perfil. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">De tu administrador: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Usa Ctrl o Alt</translation>
+<translation id="3368586359109138591">Descarga una copia para usarla en otro sitio</translation>
 <translation id="3368922792935385530">Conectado</translation>
 <translation id="3369067987974711168">Mostrar más acciones para este puerto</translation>
 <translation id="3369624026883419694">Resolviendo host...</translation>
@@ -2729,6 +2733,7 @@
 <translation id="3532273508346491126">Gestión de sincronización</translation>
 <translation id="3532521178906420528">Estableciendo conexión de red...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" />: audio silenciado</translation>
+<translation id="3536492240554502321">Rotación de matiz</translation>
 <translation id="3537881477201137177">Se puede modificar en otro momento en Configuración.</translation>
 <translation id="3538066758857505094">No se ha podido desinstalar Linux. Inténtalo de nuevo.</translation>
 <translation id="354060433403403521">Adaptador de CA</translation>
@@ -3054,6 +3059,7 @@
 <translation id="383669374481694771">Esta página muestra información general sobre este dispositivo y su uso (como el nivel de batería, la actividad de las aplicaciones y del sistema, y los errores). Sirve para mejorar Android, y parte de los datos recogidos también mejoran las aplicaciones y ayudan a los partners de Google, como los desarrolladores de Android, a mejorar sus productos y aplicaciones.</translation>
 <translation id="3838085852053358637">No se ha podido cargar la extensión</translation>
 <translation id="3838486795898716504">Más <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Añade contraseñas guardadas al gestor de contraseñas de Google</translation>
 <translation id="383891835335927981">No se ha ampliado ni reducido ningún sitio web</translation>
 <translation id="3839509547554145593">Habilitar aceleración de desplazamiento del ratón</translation>
 <translation id="3839516600093027468">No permitir nunca que <ph name="HOST" /> vea el portapapeles</translation>
@@ -4126,6 +4132,7 @@
 <translation id="4871568871368204250">Desactivar la sincronización</translation>
 <translation id="4871719318659334896">Cerrar grupo</translation>
 <translation id="4872192066608821120">Para importar contraseñas, selecciona un archivo CSV</translation>
+<translation id="4872212987539553601">Configurar el cifrado en el dispositivo</translation>
 <translation id="4873312501243535625">Comprobador de archivos multimedia</translation>
 <translation id="4876273079589074638">Cuéntanos lo que ocurrió paso a paso para que nuestros ingenieros puedan investigar y solucionar el error. Cualquier detalle es importante.</translation>
 <translation id="4876895919560854374">Bloquear y desbloquear la pantalla</translation>
@@ -6425,6 +6432,7 @@
 <translation id="7093220653036489319">Respuestas rápidas</translation>
 <translation id="7093416310351037609">Por motivos de seguridad de los datos, tu organización requiere que todas las descargas aptas se guarden en la cuenta de <ph name="WEB_DRIVE" /> de tu organización.</translation>
 <translation id="7093866338626856921">Intercambiar datos con los dispositivos denominados <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Acepta la solicitud de envío en tu <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">Dispositivo USB tipo C (puerto izquierdo situado en la parte trasera)</translation>
 <translation id="7098447629416471489">Otros motores de búsqueda guardados aparecerán aquí</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Quitar aplicación}other{Quitar aplicaciones}}</translation>
@@ -6525,6 +6533,7 @@
 <translation id="7212097698621322584">Introduce tu PIN actual para cambiarlo. Si no sabes cuál es tu PIN, tendrás que restablecer la llave de seguridad y crear un nuevo PIN.</translation>
 <translation id="7213903639823314449">Buscador utilizado en la barra de direcciones</translation>
 <translation id="721490496276866468">Importar contraseñas</translation>
+<translation id="7218514093816577632">Comprueba que las notificaciones estén activadas en tu <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Hemos encontrado varios perfiles disponibles para descargar. Selecciona los que quieras descargar antes de continuar.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{No hay contraseñas poco seguras}=1{1 contraseña poco segura}other{{NUM_WEAK} contraseñas poco seguras}}</translation>
 <translation id="7220019174139618249">No se pueden exportar contraseñas a la carpeta "<ph name="FOLDER" />"</translation>
@@ -6714,6 +6723,7 @@
 <translation id="7404065585741198296">Tu teléfono con un cable USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{La comprobación de seguridad se realizó hace 1 hora}other{La comprobación de seguridad se realizó hace {NUM_HOURS} horas}}</translation>
 <translation id="740624631517654988">Ventana emergente bloqueada</translation>
+<translation id="7406912950279255498">Modo Inversión de colores</translation>
 <translation id="7407430846095439694">Importar y vincular</translation>
 <translation id="7407504355934009739">La mayoría de los usuarios bloquean las notificaciones de este sitio web</translation>
 <translation id="740810853557944681">Añadir un servidor de impresión</translation>
@@ -6994,6 +7004,7 @@
 <translation id="7664620655576155379">Dispositivo Bluetooth no compatible: <ph name="DEVICE_NAME" /></translation>
 <translation id="7665082356120621510">Reservar tamaño</translation>
 <translation id="7665369617277396874">Añadir cuenta</translation>
+<translation id="766635563210446220">No se pueden importar las contraseñas. Revisa <ph name="FILENAME" /> y comprueba que tenga el formato correcto. <ph name="BEGIN_LINK" />Consulta más información<ph name="END_LINK" />.</translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Devuelve el <ph name="DEVICE_TYPE" /> en el plazo de {NUM_WEEKS} semana}other{Devuelve el <ph name="DEVICE_TYPE" /> en el plazo de {NUM_WEEKS} semanas}}</translation>
 <translation id="7668423670802040666">En el gestor de contraseñas de Google de <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Las funciones de accesibilidad hacen que tu dispositivo sea más fácil de usar. Para acceder a los ajustes rápidos, selecciona la hora en la parte inferior de la pantalla.</translation>
@@ -7526,6 +7537,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{un vídeo}other{# vídeos}}</translation>
 <translation id="8143442547342702591">La aplicación no es válida</translation>
 <translation id="8143609395536282994">Cómo puedes gestionar tus datos:</translation>
+<translation id="8145170459658034418">Ahorro de memoria</translation>
 <translation id="8146177459103116374">Si ya te has registrado en este dispositivo, puedes <ph name="LINK2_START" />iniciar sesión con tu nombre de usuario<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Añade los idiomas que quieras y ordénalos según tu preferencia. Si es posible, los sitios web se mostrarán en tus idiomas preferidos. Estas preferencias se sincronizan con la configuración de tu navegador. <ph name="BEGIN_LINK_LEARN_MORE" />Más información<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Se ha producido un error al iniciar sesión. Ponte en contacto con el administrador o vuelve a intentarlo.</translation>
@@ -7585,6 +7597,7 @@
 <translation id="8198456017687137612">Enviando pestaña</translation>
 <translation id="8199300056570174101">Propiedades de los dispositivos y las redes (servicio)</translation>
 <translation id="8200772114523450471">Reanudar</translation>
+<translation id="8200789660596905522">Asegúrate de aceptar la solicitud de envío en tu <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Vuelve a introducir tu contraseña para actualizar tu perfil de <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Nombre del dispositivo Compartir con Nearby</translation>
 <translation id="8203732864715032075">Recibir notificaciones en este ordenador y establecerlo como predeterminado para enviar y recibir mensajes. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
@@ -7661,6 +7674,7 @@
     <ph name="BEGIN_PARAGRAPH3" />El propietario puede controlar esta función en Ajustes &gt; Configuración avanzada &gt; Enviar automáticamente los datos de uso y diagnóstico a Google.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Si has activado la opción Actividad en la Web y en Aplicaciones, es posible que estos datos se guarden en la cuenta de Google de tu hijo. Consulta más información sobre estos ajustes y sobre cómo configurarlos en families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Certificado de cliente no válido</translation>
+<translation id="8270162672241199380">Instalador de Steam</translation>
 <translation id="827097179112817503">Mostrar el botón de página principal</translation>
 <translation id="8271268254812352141">Consulta definiciones, traducciones o conversiones de unidades haciendo clic con el botón derecho en un texto o manteniéndolo pulsado. Personaliza los idiomas de traducción en <ph name="LINK_BEGIN" />Idiomas de sitios web<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Los pasos siguientes son para los padres. Puedes devolverle el <ph name="DEVICE_TYPE" /> al niño/a después de configurar la cuenta.</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index 009561ea..40861ed8 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Pausiaeg on peagi käes</translation>
 <translation id="1062628064301375934">Aidake meil luua privaatsem veeb</translation>
 <translation id="1067048845568873861">Loodud</translation>
+<translation id="1067661089446014701">Turvalisuse suurendamiseks võite oma seadmes paroolid krüpteerida enne, kui need teie Google'i kontole salvestatakse</translation>
 <translation id="1067922213147265141">Muud Google'i teenused</translation>
 <translation id="1069355737714877171">Eemalda eSIM-i profiil <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Muu arvutis olev programm lisas laienduse, mis võib muuta Chrome'i tööd.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Teie administraator soovitab seade jaoks kindlat väärtust.</translation>
 <translation id="1225177025209879837">Päringu töötlemine ...</translation>
 <translation id="1227507814927581609">Autentimine ebaõnnestus seadmega „<ph name="DEVICE_NAME" />” ühenduse loomisel.</translation>
+<translation id="1227993798763400520">Ülekandmine ebaõnnestus. Proovige uuesti.</translation>
 <translation id="1230417814058465809">Tavakaitse on sisse lülitatud. Turvalisuse suurendamiseks kasutage täiustatud kaitset.</translation>
 <translation id="1231733316453485619">Kas lülitada sünkroonimine sisse?</translation>
 <translation id="1232569758102978740">Pealkirjata</translation>
@@ -1116,6 +1118,7 @@
 <translation id="2031914984822377766">Lisage oma eelistatud <ph name="LINK_BEGIN" />veebisaidikeeled<ph name="LINK_END" />. Loendi kõige esimest keelt kasutatakse tõlgete jaoks.</translation>
 <translation id="2033758234986231162">Ei saa ühendust teie telefoniga säilitada. Veenduge, et teie telefon oleks läheduses, avatud ning Bluetooth ja WiFi oleksid sisse lülitatud.</translation>
 <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="2037445849770872822">Selle Google'i konto jaoks on seadistatud järelevalve. Kui soovite veel vanemliku järelevalve funktsioone seadistada, valige käsk Jätka.
 
@@ -2546,6 +2549,7 @@
 <translation id="3363202073972776113">Seda uut profiili haldab teie organisatsioon. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Teie administraatorilt: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Kasutage klahvi Ctrl või Alt</translation>
+<translation id="3368586359109138591">Laadige alla koopia mujal kasutamiseks</translation>
 <translation id="3368922792935385530">Ühendatud</translation>
 <translation id="3369067987974711168">Kuva selle pordi jaoks rohkem tegevusi</translation>
 <translation id="3369624026883419694">Hosti lahendamine...</translation>
@@ -2734,6 +2738,7 @@
 <translation id="3532273508346491126">Sünkroonimise haldamine</translation>
 <translation id="3532521178906420528">Võrguühenduse loomine …</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – heli on vaigistatud</translation>
+<translation id="3536492240554502321">Värvitoonide vaheldumine</translation>
 <translation id="3537881477201137177">Seda saab hiljem menüüs Seaded muuta</translation>
 <translation id="3538066758857505094">Viga Linuxi desinstallimisel. Proovige uuesti.</translation>
 <translation id="354060433403403521">Vahelduvvooluadapter</translation>
@@ -3059,6 +3064,7 @@
 <translation id="383669374481694771">See on üldteave seadme ja selle kasutamise kohta (nt aku laetuse tase, süsteemi ja rakenduste tegevused ning vead). Neid andmeid kasutatakse Androidi täiustamiseks ning teatud koondandmed on abiks ka Google'i rakendustele ja partneritele (nt Androidi arendajatele), aidates neil rakendusi ning teenuseid paremaks muuta.</translation>
 <translation id="3838085852053358637">Laienduse laadimine ebaõnnestus</translation>
 <translation id="3838486795898716504">Rohkem: <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Lisage salvestatud paroolid Google'i paroolihaldurisse</translation>
 <translation id="383891835335927981">Ühtegi saiti pole sisse ega välja suumitud</translation>
 <translation id="3839509547554145593">Luba hiire kerimise kiirendamine</translation>
 <translation id="3839516600093027468">Blokeeri hosti <ph name="HOST" /> jaoks alati lõikelaua nägemine</translation>
@@ -4132,6 +4138,7 @@
 <translation id="4871568871368204250">Sünkroonimise väljalülitamine</translation>
 <translation id="4871719318659334896">Grupi sulgemine</translation>
 <translation id="4872192066608821120">Paroolide importimiseks valige CSV-fail</translation>
+<translation id="4872212987539553601">Seadistage seadmes krüpteerimine</translation>
 <translation id="4873312501243535625">Meediafaili kontrollija</translation>
 <translation id="4876273079589074638">Aidake meie inseneridel seda kokkujooksmist uurida ja see parandada. Võimaluse korral loetlege täpselt tehtud toimingud. Ükski pisiasi pole liiga väike!</translation>
 <translation id="4876895919560854374">Ekraani lukustamine ja avamine</translation>
@@ -6431,6 +6438,7 @@
 <translation id="7093220653036489319">Kiired vastused</translation>
 <translation id="7093416310351037609">Andmete ohutuse ja turvalisuse huvides nõuab teie organisatsioon kõigi sobilike allalaadimiste salvestamist organisatsiooni teenuse <ph name="WEB_DRIVE" /> kontole.</translation>
 <translation id="7093866338626856921">Vaheta andmeid seadmetega <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Võtke ülekandmise taotlus vastu seadmes <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">C-tüüpi USB-seade (vasakpoolne port taga)</translation>
 <translation id="7098447629416471489">Muud salvestatud otsingumootorid kuvatakse siin</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Eemalda rakendus}other{Eemalda rakendused}}</translation>
@@ -6531,6 +6539,7 @@
 <translation id="7212097698621322584">PIN-koodi muutmiseks sisestage see. Kui te oma PIN-koodi ei tea, peate lähtestama turvavõtme ja looma siis uue PIN-koodi.</translation>
 <translation id="7213903639823314449">Aadressiribal kasutatud otsingumootor</translation>
 <translation id="721490496276866468">Paroolide importimine</translation>
+<translation id="7218514093816577632">Veenduge, et teie seadmes <ph name="DEVICE_NAME" /> oleksid märguanded sisse lülitatud.</translation>
 <translation id="7219473482981809164">Leidsime allalaadimiseks mitu profiili. Enne jätkamist valige profiil(id), mida soovite alla laadida.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Nõrku paroole ei ole}=1{1 nõrk parool}other{{NUM_WEAK} nõrka parooli}}</translation>
 <translation id="7220019174139618249">Paroole ei saa kausta „<ph name="FOLDER" />” eksportida</translation>
@@ -7000,6 +7009,7 @@
 <translation id="7664620655576155379">Toetamata Bluetooth-seade: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="7665082356120621510">Säilita maht</translation>
 <translation id="7665369617277396874">Konto lisamine</translation>
+<translation id="766635563210446220">Ei saanud paroole importida. Kontrollige faili <ph name="FILENAME" /> ja veenduge, et see oleks õigesti vormindatud. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Tagastage seade (<ph name="DEVICE_TYPE" />) {NUM_WEEKS} nädala jooksul}other{Tagastage seade (<ph name="DEVICE_TYPE" />) {NUM_WEEKS} nädala jooksul}}</translation>
 <translation id="7668423670802040666">Konto <ph name="ACCOUNT" /> Google'i paroolihalduris</translation>
 <translation id="7668648754769651616">Juurdepääsufunktsioonide abil on seadme kasutamine hõlpsam. Kiirseadetele juurdepääsemiseks valige ekraani allosas aeg.</translation>
@@ -7532,6 +7542,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{video}other{# videot}}</translation>
 <translation id="8143442547342702591">Sobimatu rakendus</translation>
 <translation id="8143609395536282994">Kuidas saate oma andmeid hallata?</translation>
+<translation id="8145170459658034418">Mälusäästja</translation>
 <translation id="8146177459103116374">Kui olete seadmes juba registreeritud, siis võite <ph name="LINK2_START" />logida sisse olemasoleva kasutajana<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Lisage eelistatud keeli ja määrake nende asetus. Veebisaidid kuvatakse võimaluse korral teie eelistatud keeles. Need eelistused sünkroonitakse teie brauseri seadetega. <ph name="BEGIN_LINK_LEARN_MORE" />Lisateave<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Sisselogimine ebaõnnestus. Võtke ühendust administraatoriga või proovige uuesti.</translation>
@@ -7591,6 +7602,7 @@
 <translation id="8198456017687137612">Vahelehe ülekandmine</translation>
 <translation id="8199300056570174101">Võrk (teenus) ja seadme atribuudid</translation>
 <translation id="8200772114523450471">Taasta</translation>
+<translation id="8200789660596905522">Veenduge, et võtaksite seadmes <ph name="DEVICE_NAME" /> ülekandmise taotluse vastu.</translation>
 <translation id="8202160505685531999">Sisestage oma seadme <ph name="DEVICE_TYPE" /> profiili värskendamiseks parool uuesti.</translation>
 <translation id="8203152941016626022">Läheduses jagamine – seadme nimi</translation>
 <translation id="8203732864715032075">See arvuti jäetakse rakenduse Messages jaoks meelde ning teile saadetakse sõnumite kohta märguandeid. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 69a6d9f2..388c23b 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1116,7 +1116,7 @@
 <translation id="2023167225947895179">حدس زدن این پین آسان است</translation>
 <translation id="202352106777823113">بارگیری خیلی طول کشید و توسط شبکه متوقف شد.</translation>
 <translation id="2024195579772565064">حذف موتور جستجو</translation>
-<translation id="2025632980034333559"><ph name="APP_NAME" /> خراب شده است. برای تازه‌سازی پسوند بر روی این بالون کلیک کنید.</translation>
+<translation id="2025632980034333559"><ph name="APP_NAME" /> خراب شده است. برای بار کردن مجدد پسوند بر روی این بالون کلیک کنید.</translation>
 <translation id="2028449514182362831">ویژگی‌هایی که به حسگرهای حرکتی نیاز دارند کار نخواهند کرد</translation>
 <translation id="202918510990975568">برای پیکربندی امنیت و ورود به سیستم، گذرواژه‌تان را وارد کنید</translation>
 <translation id="2030455719695904263">پد لمسی</translation>
@@ -1222,7 +1222,7 @@
 <translation id="21133533946938348">کوچک کردن برگه</translation>
 <translation id="2113479184312716848">باز کردن &amp;فایل...</translation>
 <translation id="2113921862428609753">دسترسی به اطلاعات اعتبار</translation>
-<translation id="2114326799768592691">تازه‌سازی قاب</translation>
+<translation id="2114326799768592691">بار کردن مجدد قاب</translation>
 <translation id="2114413269775311385">‏از این حساب در برنامه‌های Android استفاده شود. می‌توانید اجازه‌های برنامه‌های Android را در <ph name="LINK_BEGIN" />تنظیمات برنامه‌ها<ph name="LINK_END" /> کنترل کنید.</translation>
 <translation id="2114820389966440614">«عکس‌های برگزیده اخیر» و خاطرات دیگر را اینجا ببینید</translation>
 <translation id="2114896190328250491">عکس از <ph name="NAME" /></translation>
@@ -1368,7 +1368,7 @@
 <translation id="2249111429176737533">باز کردن به‌عنوان پنجره برگه‌دار</translation>
 <translation id="2249605167705922988">برای مثال 5-1، 8، 13-11</translation>
 <translation id="2251218783371366160">بازکردن با نظاره‌گر سیستم</translation>
-<translation id="225163402930830576">بازخوانی شبکه‌ها</translation>
+<translation id="225163402930830576">بازآوری شبکه‌ها</translation>
 <translation id="2251809247798634662">پنجرهٔ جدید حالت ناشناس</translation>
 <translation id="2252017960592955005">محافظت دربرابر مشاهده (بتا)</translation>
 <translation id="225240747099314620">به شناسه‌ها برای محتوای محافظت‌شده اجازه داده شود (ممکن است راه‌اندازی مجدد رایانه نیاز باشد)</translation>
@@ -1508,7 +1508,7 @@
 <translation id="234889437187286781">خطا در بارگیری اطلاعات</translation>
 <translation id="2349610121459545414">دسترسی این سایت به مکان شما همچنان مجاز باشد</translation>
 <translation id="2349896577940037438">‏اگر تنظیم «فعالیت وب و برنامه» تکمیلی روشن باشد، ممکن است این داده‌ها در «حساب Google» شما ذخیره شود. می‌توانید در account.google.com، داده‌هایتان را ببینید، حذف کنید، و تنظیمات حسابتان را تغییر دهید.</translation>
-<translation id="2350133097354918058">تازه‌سازی شد</translation>
+<translation id="2350133097354918058">بار کردن مجدد شد</translation>
 <translation id="2350182423316644347">راه‌اندازی برنامه کاربردی...</translation>
 <translation id="235028206512346451">اگر از دستگاهتان دور شوید، صفحه‌نمایش به‌طور خودکار قفل می‌شود. وقتی مقابل دستگاهتان هستید، صفحه‌نمایش به‌مدت طولانی‌تری بیدار می‌ماند. اگر از صفحه قفل استفاده نمی‌کنید، دستگاه به‌جای قفل شدن به خواب می‌رود.</translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{۱ مورد}one{{NUM_ITEMS} مورد}other{{NUM_ITEMS} مورد}}</translation>
@@ -2296,7 +2296,7 @@
 <translation id="3083193146044397360">برای محافظت از امنیت شما، به‌طور موقت مسدود شده است</translation>
 <translation id="3083899879156272923">حرکت صفحه درحالی‌که موشواره در مرکز صفحه ثابت می‌ماند</translation>
 <translation id="3084548735795614657">رهاکردن جهت نصب</translation>
-<translation id="3084771660770137092">‏ممکن است حافظه Chrome تمام شده باشد یا فرآیند مربوط به صفحهٔ وب به دلایل دیگری متوقف شده باشد. برای ادامه، صفحه را تازه‌سازی کنید یا به یک صفحه دیگر بروید.</translation>
+<translation id="3084771660770137092">‏ممکن است حافظه Chrome تمام شده باشد یا فرآیند مربوط به صفحهٔ وب به دلایل دیگری متوقف شده باشد. برای ادامه، صفحه را بار کردن مجدد کنید یا به یک صفحه دیگر بروید.</translation>
 <translation id="3085412380278336437">سایت می‌تواند از دوربینتان استفاده کند</translation>
 <translation id="3085431803365340433">‏مرورگر Chrome به‌روزرسانی نشد</translation>
 <translation id="3088052000289932193">‏سایت درحال استفاده از MIDI است</translation>
@@ -2344,7 +2344,7 @@
 <translation id="313205617302240621">گذرواژه را فراموش کردید؟</translation>
 <translation id="3132277757485842847">‏نتوانستیم اتصال با تلفنتان را حفظ کنیم. مطمئن شوید تلفنتان نزدیک باشد، قفل آن باز، و بلوتوث و Wi-Fi در آن روشن باشد.</translation>
 <translation id="3132896062549112541">قانون</translation>
-<translation id="3132996321662585180">بازخوانی روزانه</translation>
+<translation id="3132996321662585180">بازآوری روزانه</translation>
 <translation id="3134393957315651797">وضعیت آزمایش را برای آزمایش <ph name="EXPERIMENT_NAME" /> انتخاب کنید. شرح آزمایش: <ph name="EXPERIMENT_DESCRIPTION" /></translation>
 <translation id="313963229645891001">درحال بارگیری، <ph name="STATUS" /></translation>
 <translation id="3139925690611372679">چهره‌نمای پیش‌فرض زرد</translation>
@@ -2913,7 +2913,7 @@
 <translation id="3700888195348409686">درحال ارائه (<ph name="PAGE_ORIGIN" />)</translation>
 <translation id="3700993174159313525">به سایت‌ها اجازه داده نشود موقعیت دوربین را ردیابی کنند</translation>
 <translation id="3702500414347826004">صفحه‌های شروع تغییر کردند تا <ph name="URL" /> به آن‌ها اضافه شود.</translation>
-<translation id="3703699162703116302">بلیت بازخوانی شد</translation>
+<translation id="3703699162703116302">بلیت بازآوری شد</translation>
 <translation id="370415077757856453">جاوا اسکریپت مسدود شد</translation>
 <translation id="3704331259350077894">توقف عملیات</translation>
 <translation id="3705722231355495246">-</translation>
@@ -4023,7 +4023,7 @@
 <translation id="4750185073185658673">‏برای مرور چند اجازه دیگر، به تلفن برگردید. مطمئن شوید بلوتوث و Wi-Fi تلفن روشن باشند.</translation>
 <translation id="4750394297954878236">پیشنهادات</translation>
 <translation id="475088594373173692">کاربر اول</translation>
-<translation id="4756378406049221019">توقف/تازه‌سازی</translation>
+<translation id="4756378406049221019">توقف/بار کردن مجدد</translation>
 <translation id="4756388243121344051">&amp;سابقه</translation>
 <translation id="4756671452988984333">نوشتار برای صدا</translation>
 <translation id="4759202969060787081">باز نشود</translation>
@@ -4345,7 +4345,7 @@
 <translation id="5078638979202084724">نشانک گذاری همه برگه‌ها</translation>
 <translation id="5078796286268621944">پین اشتباه</translation>
 <translation id="5079010647467150187">‏افزودن VPN داخلی…</translation>
-<translation id="508059534790499809">‏بازخوانی بلیت Kerberos</translation>
+<translation id="508059534790499809">‏بازآوری بلیت Kerberos</translation>
 <translation id="5084328598860513926">روند آماده‌سازی قطع شد. لطفاً دوباره امتحان کنید یا با سرپرست یا مالک دستگاه تماس بگیرید. کد خطا: <ph name="ERROR_CODE" />.</translation>
 <translation id="5085162214018721575">در حال بررسی به‌روزرسانی‌ها</translation>
 <translation id="5085561329775168253">‏خلاقیت داشته باشید، کارآمد باشید، و با برنامه‌های «فروشگاه Google Play» سرگرم بمانید</translation>
@@ -4839,7 +4839,7 @@
 <translation id="5554866693883022680">برای باز کردن این پیوند، برنامه‌ای را در <ph name="DEVICE_TYPE" /> انتخاب کنید</translation>
 <translation id="5555363196923735206">چرخاندن دوربین</translation>
 <translation id="5555525474779371165">انتخاب ویژگی حفاظتی «مرور ایمن»</translation>
-<translation id="5556459405103347317">تازه‌سازی</translation>
+<translation id="5556459405103347317">بار کردن مجدد</translation>
 <translation id="5558125320634132440">این سایت مسدود شده است زیرا احتمالاً حاوی محتوای بزرگ‌سالان است</translation>
 <translation id="5558129378926964177">&amp;بزرگنمایی</translation>
 <translation id="55601339223879446">تنظیم محدوه دسک‌تاپ شما در صفحه نمایشگر</translation>
@@ -4927,7 +4927,7 @@
 <translation id="5636996382092289526">برای استفاده از <ph name="NETWORK_ID" /> ابتدا باید به <ph name="LINK_START" />صفحه ورود به سیستم شبکه بروید<ph name="LINK_END" />، که تا چند ثانیه دیگر به‌طور خودکار باز می‌شود. اگر این اتفاق نیافتد، نمی‌توان از شبکه استفاده کرد.</translation>
 <translation id="5637476008227280525">فعال کردن داده تلفن همراه</translation>
 <translation id="5638309510554459422">‏افزونه‌ها و طرح‌های زمینه را در <ph name="BEGIN_LINK" />نت‌بازار Chrome<ph name="END_LINK" /> پیدا کنید</translation>
-<translation id="5639549361331209298">تازه‌سازی این صفحه، آن را نگهدارید تا گزینه‌های بیشتری را ببینید</translation>
+<translation id="5639549361331209298">بار کردن مجدد این صفحه، آن را نگهدارید تا گزینه‌های بیشتری را ببینید</translation>
 <translation id="5640133431808313291">مدیریت کلیدهای امنیتی</translation>
 <translation id="5641608986289282154">آغاز استفاده از <ph name="DEVICE_OS" /></translation>
 <translation id="5642508497713047">‏امضاکننده CRL</translation>
@@ -5250,7 +5250,7 @@
 <translation id="5957918771633727933">نمایه سیم‌کارت داخلی دردسترس نیست. <ph name="BEGIN_LINK" />نمایه<ph name="END_LINK" /> جدیدی بارگیری کنید.</translation>
 <translation id="5957987129450536192">در کنار تصویر نمایه‌تان روی نماد «انتخاب برای شنیدن» ضربه بزنید، سپس آنچه را می‌خواهید بشنوید انتخاب کنید.</translation>
 <translation id="5959471481388474538">شبکه در دسترس نیست</translation>
-<translation id="595959584676692139">برای استفاده از این افزونه، صفحه را تازه‌سازی کنید</translation>
+<translation id="595959584676692139">برای استفاده از این افزونه، صفحه را بار کردن مجدد کنید</translation>
 <translation id="5963413905009737549">بخش</translation>
 <translation id="5963453369025043595"><ph name="NUM_HANDLES" /> (<ph name="NUM_KILOBYTES_LIVE" /> اوج مصرف)</translation>
 <translation id="5964113968897211042">{COUNT,plural, =0{باز کردن همه در پنجره جدید}=1{باز کردن در پنجره جدید}one{باز کردن همه ({COUNT}) در پنجره جدید}other{باز کردن همه ({COUNT}) در پنجره جدید}}</translation>
@@ -5349,7 +5349,7 @@
 <translation id="6055171183283175969">گذرواژه‌ای که وارد کردید اشتباه است.</translation>
 <translation id="6055392876709372977">‏PKCS #1 SHA-256 با رمزگذاری RSA</translation>
 <translation id="6055544610007596637">‏از «فروشگاه Google Play» برای <ph name="DEVICE_TYPE" /> خود، برنامه نصب کنید</translation>
-<translation id="6056710589053485679">تازه‌سازی عادی</translation>
+<translation id="6056710589053485679">بار کردن مجدد عادی</translation>
 <translation id="6057312498756061228">این فایل برای بررسی امنیتی بسیار بزرگ است. فایل‌های تا حداکثر ۵۰ مگابایت را می‌توانید باز کنید.</translation>
 <translation id="6057381398996433816">استفاده این سایت از حسگرهای نور و حرکت مسدود شده است.</translation>
 <translation id="6059276912018042191">‏برگه‌های اخیر Chrome</translation>
@@ -5536,7 +5536,7 @@
 <translation id="6238624845858322552">اتصال به دستگاه بلوتوث</translation>
 <translation id="6238767809035845642">نوشتار هم‌رسانی‌شده از دستگاه دیگر</translation>
 <translation id="6238923052227198598">نگه داشتن جدیدترین یادداشت در صفحه درحالت قفل</translation>
-<translation id="6239558157302047471">تازه‌سازی قاب</translation>
+<translation id="6239558157302047471">بار کردن مجدد قاب</translation>
 <translation id="6240821072888636753">هربار پرسیده شود</translation>
 <translation id="6241530762627360640">دسترسی به اطلاعات دستگاه‌های بلوتوث مرتبط شده با سیستم شما و کشف دستگاه‌های بلوتوث در این نزدیکی.</translation>
 <translation id="6241844896329831164">نیازی به دسترسی نیست</translation>
@@ -6515,7 +6515,7 @@
 <translation id="7174199383876220879">جدید! موسیقی، ویدیو، و محتوای بیشتر را کنترل کنید.</translation>
 <translation id="7175037578838465313">پیکربندی <ph name="NAME" /></translation>
 <translation id="7175353351958621980">بارگیری شده از:</translation>
-<translation id="7180611975245234373">بازخوانی</translation>
+<translation id="7180611975245234373">بازآوری</translation>
 <translation id="7180865173735832675">سفارشی کردن</translation>
 <translation id="7182791023900310535">انتقال گذرواژه</translation>
 <translation id="7186088072322679094">نگه داشتن در نوار ابزار</translation>
@@ -6553,7 +6553,7 @@
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{گذرواژه ضعیفی ندارید}=1{۱ گذرواژه ضعیف}one{{NUM_WEAK} گذرواژه ضعیف}other{{NUM_WEAK} گذرواژه ضعیف}}</translation>
 <translation id="7220019174139618249">گذرواژه‌ها در «<ph name="FOLDER" />» صادر نمی‌شوند</translation>
 <translation id="722099540765702221">منبع شارژ</translation>
-<translation id="7221869452894271364">تازه‌سازی این صفحه</translation>
+<translation id="7221869452894271364">بار کردن مجدد این صفحه</translation>
 <translation id="7222204278952406003">‏Chrome مرورگر پیش‌فرض شما است</translation>
 <translation id="7222232353993864120">نشانی ایمیل</translation>
 <translation id="7222235798733126207">هم‌رسانی محدود میان سایت‌ها</translation>
@@ -6738,6 +6738,7 @@
 <translation id="7404065585741198296">‏تلفن با سیم USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{بررسی ایمنی ۱ ساعت پیش اجرا شده است}one{بررسی ایمنی {NUM_HOURS} ساعت پیش اجرا شد}other{بررسی ایمنی {NUM_HOURS} ساعت پیش اجرا شد}}</translation>
 <translation id="740624631517654988">پنجره‌های بازشو مسدود شدند</translation>
+<translation id="7406912950279255498">حالت وارونگی رنگ</translation>
 <translation id="7407430846095439694">وارد کردن و اتصال</translation>
 <translation id="7407504355934009739">افراد اکثراً اعلان‌های این سایت را مسدود می‌کنند</translation>
 <translation id="740810853557944681">افزودن سرور چاپ</translation>
@@ -7403,7 +7404,7 @@
 <translation id="8011372169388649948">«<ph name="BOOKMARK_TITLE" />» منتقل شد.</translation>
 <translation id="8012647001091218357">در حال حاضر نمی‌توانیم با والدینتان ارتباط برقرار کنیم. لطفاً دوباره امتحان کنید.</translation>
 <translation id="8013993649590906847">‏اگر تصویری توضیح مفیدی نداشته باشد، Chrome توضیحی برای شما ارائه خواهد کرد. برای ایجاد توضیحات، تصاویر به Google ارسال می‌شود.</translation>
-<translation id="8014154204619229810">در حال حاضر به‌روزرسان در حال اجراست. برای بررسی دوباره، بعد از یک دقیقه بازآوری کنید.</translation>
+<translation id="8014154204619229810">در حال حاضر به‌روزرسان در حال اجراست. برای بررسی دوباره، بعد از یک دقیقه بازآورید.</translation>
 <translation id="8014206674403687691">‏<ph name="IDS_SHORT_PRODUCT_NAME" /> قادر نیست به نسخه نصب شده قبلی بازگردد. لطفاً دوباره سعی کنید دستگاهتان را Powerwash کنید.</translation>
 <translation id="8016266267177410919">فضای ذخیره‌سازی موقت</translation>
 <translation id="8017176852978888182">‏فهرست‌های راهنمای هم‌رسانی‌شده Linux</translation>
@@ -7662,7 +7663,7 @@
 <translation id="8249048954461686687">‏پوشه OEM</translation>
 <translation id="8249615410597138718">ارسال به دستگاه‌هایتان</translation>
 <translation id="8250210000648910632">فضای ذخیره‌سازی پر شده است</translation>
-<translation id="8251441930213048644">بازخوانی در همین لحظه</translation>
+<translation id="8251441930213048644">بازآوری در همین لحظه</translation>
 <translation id="8251509999076836464">درحال مرتبط‌سازی <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">تصویر کوچک حذف شد.</translation>
 <translation id="825238165904109940">همیشه نشانی‌های وب کامل نشان داده شود</translation>
@@ -7687,6 +7688,7 @@
     <ph name="BEGIN_PARAGRAPH3" />مالک می‌تواند این ویژگی را از «تنظیمات &gt; پیشرفته &gt; ارسال خودکار داده‌های تشخیصی و میزان استفاده به Google» کنترل کند.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />اگر تنظیم تکمیلی «فعالیت وب و برنامه» برای فرزندتان روشن باشد، ممکن است این داده‌ها در حساب Google او ذخیره شود. درباره این تنظیمات و نحوه تغییر آن‌ها در families.google.com، اطلاعات بیشتری کسب کنید.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">گواهینامه کارخواه نامعتبر است</translation>
+<translation id="8270162672241199380">‏نصب‌کننده Steam</translation>
 <translation id="827097179112817503">نمایش دکمه صفحه اصلی</translation>
 <translation id="8271268254812352141">وقتی روی نوشتار کلیک راست می‌کنید، یا آن را لمس می‌کنید و نگه می‌دارید، تعاریف، ترجمه‌ها، یا تبدیل‌های واحد را دریافت می‌کنید. می‌توانید زبان‌های ترجمه را در <ph name="LINK_BEGIN" />زبان‌های وب‌سایت<ph name="LINK_END" /> سفارشی کنید.</translation>
 <translation id="8271379370373330993">والدین، چند مرحله بعدی مخصوص شما است. بعد از راه‌اندازی حساب، می‌توانید <ph name="DEVICE_TYPE" /> را دوباره به فرزندتان بدهید.</translation>
@@ -7698,7 +7700,7 @@
 <translation id="8275038454117074363">وارد کردن</translation>
 <translation id="8275080796245127762">تماس از دستگاه</translation>
 <translation id="8275339871947079271">‏گذرواژه‌تان را به «حساب Google» منتقل کنید تا از هرجا که به سیستم وارد می‌شوید، به‌طور ایمن به آن دسترسی داشته باشید</translation>
-<translation id="8276560076771292512">خالی کردن حافظه پنهان و تازه‌سازی سخت</translation>
+<translation id="8276560076771292512">خالی کردن حافظه پنهان و بار کردن مجدد سخت</translation>
 <translation id="8281721647184388851">‏«همگام‌سازی مرورگر Chrome» روشن شود؟</translation>
 <translation id="8281886186245836920">رد شدن</translation>
 <translation id="8283475148136688298">هنگام اتصال به «<ph name="DEVICE_NAME" />» کد راستی‌آزمایی رد شد.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index a742eebd..eb66f5d 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -697,6 +697,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 ja RSA-salaus</translation>
 <translation id="1641113438599504367">Selaussuoja</translation>
 <translation id="1641496881756082050"><ph name="NETWORK_NAME" />: lisää toimintoja</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Toista salasanaa ei tuotu, koska se on muotoiltu virheellisesti}other{{NUM_PASSWORDS} muuta salasanaa ei tuotu, koska ne on muotoiltu virheellisesti}}</translation>
 <translation id="1642492862748815878">Yhdistetty laitteeseen <ph name="DEVICE" /> ja <ph name="NUMBER_OF_DEVICES" /> muuhun Bluetooth-laitteeseen</translation>
 <translation id="1642494467033190216">Rootfs-suojauksen poisto ja uudelleenkäynnistys vaaditaan, ennen kuin muut virheenkorjausominaisuudet voidaan ottaa käyttöön.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA ‑allekirjoitus, jossa on SHA-1</translation>
@@ -1846,6 +1847,7 @@
 <translation id="2673135533890720193">Tarkastella selaushistoriaasi</translation>
 <translation id="2674764818721168631">Pois päältä</translation>
 <translation id="2678063897982469759">Ota uudelleen käyttöön</translation>
+<translation id="2678100101831051676">Striimaus ei onnistu.</translation>
 <translation id="268053382412112343">Hi&amp;storia</translation>
 <translation id="2681124317993121768">Vierasprofiileja ei tueta</translation>
 <translation id="2682498795777673382">Päivitys vanhemmalta</translation>
@@ -3880,6 +3882,7 @@
 <translation id="4617019240346358451">Päivitä sivu käyttääksesi laajennusta: <ph name="EXTENSION_NAME" /></translation>
 <translation id="4617270414136722281">Laajennusasetukset</translation>
 <translation id="4617880081511131945">Yhteyttä ei voi muodostaa</translation>
+<translation id="4618195822946934889">URL-osoite voi sisältää vain ASCII-merkkejä</translation>
 <translation id="4619564267100705184">Todenna henkilöllisyytesi</translation>
 <translation id="4619615317237390068">Välilehdet muista laitteista</translation>
 <translation id="4620809267248568679">Laajennus on ottanut käyttöön tämän asetuksen.</translation>
@@ -5080,6 +5083,7 @@
 <translation id="5800351251499368110">Sulje haku sivupaneelista. Haku on avoinna sivupaneelissa.</translation>
 <translation id="5801568494490449797">Asetukset</translation>
 <translation id="5804241973901381774">Luvat</translation>
+<translation id="5805268472388605531">Näet aksenttimerkit ja erikoismerkit painamalla näppäimiä pitkään</translation>
 <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>
@@ -5721,6 +5725,7 @@
 <translation id="642469772702851743">Omistaja on lukinnut laitteen (sarjanumero <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Tekstistä puheeksi ‑nopeus</translation>
 <translation id="642729974267661262">Äänten toistaminen kielletty</translation>
+<translation id="6427608534767366138"><ph name="NETWORK_ID" />: Välityspalvelimen todennus vaaditaan</translation>
 <translation id="6429384232893414837">Päivitysvirhe</translation>
 <translation id="6430814529589430811">Base64-koodattu ASCII, yksittäinen varmenne</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> ottaa käyttöön automaattiset päivitykset kaikille tämän tietokoneen käyttäjille.</translation>
@@ -7854,6 +7859,7 @@
 <translation id="844063558976952706">Aina tässä sivustossa</translation>
 <translation id="8441313165929432954">Laita yhteyden jakaminen päälle tai pois päältä</translation>
 <translation id="8443795068008423036">Varmista, että laite on ajan tasalla, ja yritä uudelleen</translation>
+<translation id="8443986842926457191">URL-osoitteessa on yli 2 048 merkkiä</translation>
 <translation id="8446884382197647889">Lisätietoja</translation>
 <translation id="8447409163267621480">Lisää alkuun joko Ctrl tai Alt</translation>
 <translation id="844850004779619592">Komentoja ei löydy</translation>
@@ -7919,6 +7925,7 @@
 <translation id="851263357009351303">Salli aina sivuston <ph name="HOST" /> näyttää kuvia</translation>
 <translation id="8513108775083588393">Autom. kääntö</translation>
 <translation id="8514746246728959655">Kokeile toista suojausavainta</translation>
+<translation id="8519895319663397036">Salasanojen siirto ei onnistu. Tiedostokoon täytyy olla alle 150 kt.</translation>
 <translation id="8523493869875972733">Säilytä muutokset</translation>
 <translation id="8523849605371521713">Käytännön lisäämä</translation>
 <translation id="8524783101666974011">Tallenna kortteja Google-tilillesi</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 7f067b9..b8b7c28 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -6742,6 +6742,7 @@
 <translation id="7404065585741198296">Ang telepono mo na may USB cable</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Nagpatakbo ng pag-check sa kaligtasan 1 oras ang nakalipas}one{Nagpatakbo ng pag-check sa kaligtasan {NUM_HOURS} oras ang nakalipas}other{Nagpatakbo ng pag-check sa kaligtasan {NUM_HOURS} na oras ang nakalipas}}</translation>
 <translation id="740624631517654988">Naka-block ang pop-up</translation>
+<translation id="7406912950279255498">Color inversion mode</translation>
 <translation id="7407430846095439694">I-import at I-bind</translation>
 <translation id="7407504355934009739">Bina-block ng karamihan ng mga tao ang mga notification mula sa site na ito</translation>
 <translation id="740810853557944681">Magdagdag ng server sa pag-print</translation>
@@ -7692,6 +7693,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Makokontrol ng may-ari ang feature na ito mula sa Mga Setting &gt; Advanced &gt; Awtomatikong ipadala sa Google ang data ng diagnostic at paggamit.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Kung naka-on ang karagdagang Aktibidad sa Web at App para sa iyong anak, maaaring ma-save ang data na ito sa kanyang Google Account. Matuto pa tungkol sa mga setting na ito at kung paano isaayos ang mga ito sa families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Di-wasto ang certificate ng client</translation>
+<translation id="8270162672241199380">Installer ng Steam</translation>
 <translation id="827097179112817503">Ipakita ang button ng home</translation>
 <translation id="8271268254812352141">Makakuha ng mga kahulugan, pagsasalin, o pag-convert ng unit kapag nag-right click ka o pinindot mo nang matagal ang text. I-customize ang mga wika sa pagsasalin sa <ph name="LINK_BEGIN" />Mga wika ng website<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Mga magulang, para sa inyo ang ilang susunod na hakbang. Puwede ninyong ibalik ang <ph name="DEVICE_TYPE" /> sa bata pagkatapos ng pag-setup ng account.</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index 9a4e232d..63f899cb 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">C'est bientôt le moment de prendre une pause</translation>
 <translation id="1062628064301375934">Aidez-nous à créer une navigation Web plus privée</translation>
 <translation id="1067048845568873861">Créé</translation>
+<translation id="1067661089446014701">Pour plus de sécurité, vous pouvez chiffrer les mots de passe sur votre appareil avant qu'ils ne soient enregistrés dans votre compte Google</translation>
 <translation id="1067922213147265141">Autres services Google</translation>
 <translation id="1069355737714877171">Retirer le profil eSIM nommé <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Un autre programme sur votre ordinateur a ajouté une extension qui risque de modifier le fonctionnement de Chrome.
@@ -250,6 +251,7 @@
 <translation id="1223853788495130632">Votre administrateur recommande une valeur particulière pour ce paramètre.</translation>
 <translation id="1225177025209879837">Traitement de la demande en cours…</translation>
 <translation id="1227507814927581609">Échec de l'authentification lors de la connexion à l'appareil « <ph name="DEVICE_NAME" /> ».</translation>
+<translation id="1227993798763400520">Échec de la diffusion. Veuillez réessayer.</translation>
 <translation id="1230417814058465809">La protection standard est activée. Pour profiter d'une sécurité accrue, servez-vous de la protection améliorée.</translation>
 <translation id="1231733316453485619">Activer la synchronisation?</translation>
 <translation id="1232569758102978740">Sans titre</translation>
@@ -1114,6 +1116,7 @@
 <translation id="2031914984822377766">Ajoutez vos <ph name="LINK_BEGIN" />langues de site Web favorites<ph name="LINK_END" />. La langue dans la partie supérieure de la liste sera utilisée pour effectuer les traductions.</translation>
 <translation id="2033758234986231162">Impossible de maintenir une connexion avec votre téléphone. Assurez-vous que votre téléphone est à proximité et déverrouillé, et que le Bluetooth et le Wi-Fi sont activés.</translation>
 <translation id="2034346955588403444">Ajouter un autre réseau Wi-Fi</translation>
+<translation id="2035211704574173780">Échelle de gris</translation>
 <translation id="203574396658008164">Activer la prise de notes à partir de l'écran de verrouillage</translation>
 <translation id="2037445849770872822">La supervision est configurée pour ce compte Google. Si vous souhaitez configurer davantage de contrôles parentaux, sélectionnez Continuer.
 
@@ -2542,6 +2545,7 @@
 <translation id="3363202073972776113">Ce nouveau profil sera géré par votre organisation. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">De votre administrateur : <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Utilisez la touche Ctrl ou Alt</translation>
+<translation id="3368586359109138591">Téléchargez une copie pour l'utiliser ailleurs</translation>
 <translation id="3368922792935385530">Connecté</translation>
 <translation id="3369067987974711168">Afficher plus d'actions pour ce port</translation>
 <translation id="3369624026883419694">Résolution de l'hôte en cours...</translation>
@@ -2730,6 +2734,7 @@
 <translation id="3532273508346491126">Gestion de la synchronisation</translation>
 <translation id="3532521178906420528">Établissement de la connexion réseau en cours…</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - Audio désactivé</translation>
+<translation id="3536492240554502321">Rotation de la teinte</translation>
 <translation id="3537881477201137177">Vous pouvez modifier cela plus tard dans le menu Paramètres</translation>
 <translation id="3538066758857505094">Erreur lors de la désinstallation de Linux. Veuillez réessayer.</translation>
 <translation id="354060433403403521">Adaptateur CA</translation>
@@ -3055,6 +3060,7 @@
 <translation id="383669374481694771">Ces données d'ordre général concernent votre appareil et son utilisation (comme le niveau de la pile, les erreurs, ainsi que l'activité du système et des applications). Elles serviront à améliorer la plateforme Android. Certaines données collectées aideront également nos partenaires, tels que les développeurs Android, à améliorer leurs applications et leurs produits.</translation>
 <translation id="3838085852053358637">Échec du chargement de l'extension</translation>
 <translation id="3838486795898716504">Pages suivantes pour <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Ajoutez des mots de passe enregistrés au gestionnaire de mots de passe de Google</translation>
 <translation id="383891835335927981">Aucun site n'a fait l'objet d'un zoom avant ou arrière</translation>
 <translation id="3839509547554145593">Activer l'accélération du défilement pour la souris</translation>
 <translation id="3839516600093027468">Toujours empêcher <ph name="HOST" /> de voir le presse-papiers</translation>
@@ -4128,6 +4134,7 @@
 <translation id="4871568871368204250">Désactiver la synchronisation</translation>
 <translation id="4871719318659334896">Fermer le groupe</translation>
 <translation id="4872192066608821120">Pour importer des mots de passe, sélectionnez un fichier CSV</translation>
+<translation id="4872212987539553601">Configurer le chiffrement sur l'appareil</translation>
 <translation id="4873312501243535625">Vérificateur de fichier multimédia</translation>
 <translation id="4876273079589074638">Aidez nos ingénieurs à enquêter sur ce plantage et à le corriger. Indiquez les étapes exactes, si vous le pouvez. Tous les détails comptent!</translation>
 <translation id="4876895919560854374">Verrouiller et déverrouiller l'écran</translation>
@@ -6429,6 +6436,7 @@
 <translation id="7093220653036489319">Réponses rapides</translation>
 <translation id="7093416310351037609">Pour assurer la sécurité des données, votre organisation exige que tous les téléchargements admissibles soient enregistrés dans le compte <ph name="WEB_DRIVE" /> de votre organisation.</translation>
 <translation id="7093866338626856921">Échanger des données avec les appareils : <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Acceptez la demande de diffusion sur votre <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">Appareil USB-C (port arrière-gauche)</translation>
 <translation id="7098447629416471489">Les autres moteurs de recherche enregistrés s'afficheront ici</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Retirer l'application}one{Retirer l'application}other{Retirer les applications}}</translation>
@@ -6529,6 +6537,7 @@
 <translation id="7212097698621322584">Entrez votre NIP actuel pour le modifier. Si vous ne connaissez pas votre NIP, vous devrez réinitialiser la clé de sécurité, puis créer un nouveau NIP.</translation>
 <translation id="7213903639823314449">Moteur de recherche utilisé dans la barre d'adresse</translation>
 <translation id="721490496276866468">Importer des mots de passe</translation>
+<translation id="7218514093816577632">Assurez-vous que les notifications sont activées sur votre <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Plusieurs profils peuvent être téléchargés. Sélectionnez ceux que vous voulez télécharger avant de continuer.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Aucun mot de passe faible}=1{1 mot de passe faible}one{{NUM_WEAK} mot de passe faible}other{{NUM_WEAK} mots de passe faibles}}</translation>
 <translation id="7220019174139618249">Impossible d'exporter les mots de passe vers « <ph name="FOLDER" /> »</translation>
@@ -6998,6 +7007,7 @@
 <translation id="7664620655576155379">Appareil Bluetooth non compatible : « <ph name="DEVICE_NAME" /> ».</translation>
 <translation id="7665082356120621510">Réserver l'espace</translation>
 <translation id="7665369617277396874">Ajouter un compte</translation>
+<translation id="766635563210446220">Impossible d'importer les mots de passe. Vérifiez <ph name="FILENAME" /> et assurez-vous que son format est correct. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Retournez l'appareil <ph name="DEVICE_TYPE" /> d'ici {NUM_WEEKS} semaine}one{Retournez l'appareil <ph name="DEVICE_TYPE" /> d'ici {NUM_WEEKS} semaine}other{Retournez l'appareil <ph name="DEVICE_TYPE" /> d'ici {NUM_WEEKS} semaines}}</translation>
 <translation id="7668423670802040666">Dans le gestionnaire de mots de passe Google pour <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Les fonctions d'accessibilité facilitent l'utilisation de votre appareil. Pour accéder aux paramètres rapides, sélectionnez l'heure dans la partie inférieure de votre écran.</translation>
@@ -7529,6 +7539,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{une vidéo}one{# vidéo}other{# vidéos}}</translation>
 <translation id="8143442547342702591">Application non valide</translation>
 <translation id="8143609395536282994">Comment gérer vos données :</translation>
+<translation id="8145170459658034418">Économiseur de mémoire</translation>
 <translation id="8146177459103116374">Si vous êtes déjà enregistré sur ​​cet appareil, vous pouvez <ph name="LINK2_START" />vous connecter à l'aide de votre compte<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Ajoutez et classez vos langues préférées. Les sites Web s'afficheront dans vos langues préférées lorsque cela est possible. Ces préférences sont synchronisées avec les paramètres de votre navigateur. <ph name="BEGIN_LINK_LEARN_MORE" />En savoir plus<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Échec de la connexion. Veuillez communiquer avec votre administrateur ou essayer de nouveau.</translation>
@@ -7588,6 +7599,7 @@
 <translation id="8198456017687137612">Diffusion de l'onglet en cours…</translation>
 <translation id="8199300056570174101">(Service) réseau et propriétés de l’appareil</translation>
 <translation id="8200772114523450471">Reprendre</translation>
+<translation id="8200789660596905522">Assurez-vous d'accepter la demande de diffusion sur votre <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Veuillez entrer de nouveau votre mot de passe pour mettre à jour votre profil <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Nom de l'appareil pour le partage à proximité</translation>
 <translation id="8203732864715032075">Vous envoyer des notifications et mémoriser cet ordinateur par défaut pour les messages. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 3970148b..01d732c 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Il est presque temps de faire une pause</translation>
 <translation id="1062628064301375934">Aidez-nous à créer un Web plus respectueux de la confidentialité</translation>
 <translation id="1067048845568873861">Date de création</translation>
+<translation id="1067661089446014701">Pour renforcer la sécurité, vous pouvez chiffrer les mots de passe sur votre appareil avant qu'ils soient enregistrés dans votre compte Google</translation>
 <translation id="1067922213147265141">Autres services Google</translation>
 <translation id="1069355737714877171">Supprimer le profil eSIM <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Une extension qui risque de modifier le fonctionnement de Chrome a été ajoutée via un autre programme sur votre ordinateur.
@@ -250,6 +251,7 @@
 <translation id="1223853788495130632">Votre administrateur recommande une valeur spécifique pour ce paramètre.</translation>
 <translation id="1225177025209879837">Traitement de la demande en cours…</translation>
 <translation id="1227507814927581609">Échec de l'authentification lors de la connexion à l'appareil "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Échec de la diffusion. Veuillez réessayer.</translation>
 <translation id="1230417814058465809">La protection standard est activée. Pour un niveau de sécurité supérieur, activez la protection renforcée.</translation>
 <translation id="1231733316453485619">Activer la synchronisation ?</translation>
 <translation id="1232569758102978740">Sans titre</translation>
@@ -693,6 +695,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 avec chiffrement RSA</translation>
 <translation id="1641113438599504367">Navigation sécurisée</translation>
 <translation id="1641496881756082050">Plus d'actions pour <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 autre mot de passe n'a pas été importé, car son format est incorrect}one{{NUM_PASSWORDS} autre mot de passe n'a pas été importé, car son format est incorrect}other{{NUM_PASSWORDS} autres mots de passe n'ont pas été importés, car leur format est incorrect}}</translation>
 <translation id="1642492862748815878">Connecté à <ph name="DEVICE" /> et <ph name="NUMBER_OF_DEVICES" /> autres appareils Bluetooth</translation>
 <translation id="1642494467033190216">La suppression de la protection rootfs et un redémarrage s'avèrent nécessaires avant d'activer d'autres fonctionnalités de débogage.</translation>
 <translation id="1643072738649235303">Signature X9.62 ECDSA avec SHA-1</translation>
@@ -1113,6 +1116,7 @@
 <translation id="2031914984822377766">Ajoutez vos <ph name="LINK_BEGIN" />langues favorites pour les sites Web<ph name="LINK_END" />. La première langue de la liste sera utilisée pour les traductions.</translation>
 <translation id="2033758234986231162">Impossible de maintenir la connexion avec votre téléphone. Vérifiez que votre téléphone est déverrouillé et à proximité, et que le Bluetooth et le Wi-Fi sont activés.</translation>
 <translation id="2034346955588403444">Ajouter un réseau Wi-Fi</translation>
+<translation id="2035211704574173780">Niveaux de gris</translation>
 <translation id="203574396658008164">Activer la prise de notes depuis l'écran de verrouillage</translation>
 <translation id="2037445849770872822">La supervision est configurée pour ce compte Google. Pour configurer des paramètres de contrôle parental supplémentaires, sélectionnez "Continuer".
 
@@ -1830,6 +1834,7 @@
 <translation id="2673135533890720193">Consulter votre historique de navigation</translation>
 <translation id="2674764818721168631">Désactivé</translation>
 <translation id="2678063897982469759">Réactiver</translation>
+<translation id="2678100101831051676">Impossible de caster.</translation>
 <translation id="268053382412112343">&amp;Historique</translation>
 <translation id="2681124317993121768">Profils invité non acceptés</translation>
 <translation id="2682498795777673382">Modification effectuée par un parent</translation>
@@ -2539,6 +2544,7 @@
 <translation id="3363202073972776113">Ce nouveau profil sera géré par votre organisation. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Message de votre administrateur : <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Utilisez soit Ctrl, soit Alt</translation>
+<translation id="3368586359109138591">Télécharger une copie pour l'utiliser ailleurs</translation>
 <translation id="3368922792935385530">Connecté</translation>
 <translation id="3369067987974711168">Afficher plus d'actions pour ce port</translation>
 <translation id="3369624026883419694">Résolution de l'hôte...</translation>
@@ -2727,6 +2733,7 @@
 <translation id="3532273508346491126">Gestion de la synchronisation</translation>
 <translation id="3532521178906420528">Établissement de la connexion réseau…</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – Son coupé</translation>
+<translation id="3536492240554502321">Rotation des teintes</translation>
 <translation id="3537881477201137177">Vous pourrez modifier ce réglage ultérieurement dans les paramètres</translation>
 <translation id="3538066758857505094">Erreur lors de la désinstallation de Linux. Veuillez réessayer.</translation>
 <translation id="354060433403403521">Adaptateur</translation>
@@ -3052,6 +3059,7 @@
 <translation id="383669374481694771">Ces informations d'ordre général concernent votre appareil et son utilisation (comme le niveau de la batterie, les erreurs, ainsi que l'activité du système et des applications). Elles serviront à améliorer Android, et certaines données globales aideront également nos développeurs d'applications et nos partenaires tels que les développeurs Android, à perfectionner leurs applications et leurs produits.</translation>
 <translation id="3838085852053358637">Échec du chargement de l'extension</translation>
 <translation id="3838486795898716504">Plus de pages <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Ajouter des mots de passe enregistrés au Gestionnaire de mots de passe de Google</translation>
 <translation id="383891835335927981">Vous n'avez fait de zoom avant ou arrière sur aucun site</translation>
 <translation id="3839509547554145593">Activer l'accélération du défilement avec la souris</translation>
 <translation id="3839516600093027468">Toujours empêcher <ph name="HOST" /> de voir le contenu du presse-papiers</translation>
@@ -3863,6 +3871,7 @@
 <translation id="4617019240346358451">Actualisez la page pour utiliser <ph name="EXTENSION_NAME" /></translation>
 <translation id="4617270414136722281">Options d'extension</translation>
 <translation id="4617880081511131945">Impossible d'établir la connexion</translation>
+<translation id="4618195822946934889">L'URL ne peut contenir que des caractères ASCII</translation>
 <translation id="4619564267100705184">Confirmer votre identité</translation>
 <translation id="4619615317237390068">Onglets d'autres appareils</translation>
 <translation id="4620809267248568679">Ce paramètre est appliqué par une extension.</translation>
@@ -4124,6 +4133,7 @@
 <translation id="4871568871368204250">Désactiver la synchronisation</translation>
 <translation id="4871719318659334896">Fermer le groupe</translation>
 <translation id="4872192066608821120">Pour importer des mots de passe, sélectionnez un fichier CSV</translation>
+<translation id="4872212987539553601">Configurer le chiffrement sur l'appareil</translation>
 <translation id="4873312501243535625">Vérification de fichiers multimédias</translation>
 <translation id="4876273079589074638">Aidez nos ingénieurs à trouver l'origine de ce plantage pour y apporter une solution. Dans la mesure du possible, indiquez précisément les étapes suivies. Chaque détail compte.</translation>
 <translation id="4876895919560854374">Verrouiller et déverrouiller l'écran</translation>
@@ -5063,6 +5073,7 @@
 <translation id="5800351251499368110">Fermer la recherche dans le panneau latéral. Elle est ouverte dans ce panneau.</translation>
 <translation id="5801568494490449797">Préférences</translation>
 <translation id="5804241973901381774">Autorisations</translation>
+<translation id="5805268472388605531">Appuyez de manière prolongée sur les touches du clavier pour afficher les accents et les caractères spéciaux</translation>
 <translation id="5805697420284793859">Gestionnaire de fenêtres</translation>
 <translation id="5806447147478173900">Espace de stockage total utilisé par les sites affichés : <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (par défaut)</translation>
@@ -5704,6 +5715,7 @@
 <translation id="642469772702851743">Le propriétaire de cet appareil (n° de série : <ph name="SERIAL_NUMBER" />) l'a verrouillé.</translation>
 <translation id="6425556984042222041">Débit de parole de la synthèse vocale</translation>
 <translation id="642729974267661262">Non autorisé à lire des sons</translation>
+<translation id="6427608534767366138">Authentification par proxy requise pour "<ph name="NETWORK_ID" />"</translation>
 <translation id="6429384232893414837">Erreur de mise à jour</translation>
 <translation id="6430814529589430811">Certificat unique codé Base 64 ASCII</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> va configurer les mises à jour automatiques pour tous les utilisateurs de cet ordinateur.</translation>
@@ -6424,6 +6436,7 @@
 <translation id="7093220653036489319">Réponses rapides</translation>
 <translation id="7093416310351037609">Pour la protection et la sécurité des données, votre organisation exige que tous les téléchargements éligibles soient enregistrés sur le compte <ph name="WEB_DRIVE" /> de votre organisation.</translation>
 <translation id="7093866338626856921">Échanger des données avec les appareils suivants : "<ph name="HOSTNAMES" />"</translation>
+<translation id="7094680343477712655">Acceptez la demande de diffusion sur votre <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">Appareil USB de type C (port situé sur l'arrière de l'appareil, à gauche)</translation>
 <translation id="7098447629416471489">Les autres moteurs de recherche enregistrés s'afficheront ici</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Supprimer l'appli}one{Supprimer l'appli}other{Supprimer les applis}}</translation>
@@ -6524,6 +6537,7 @@
 <translation id="7212097698621322584">Saisissez votre code actuel pour pouvoir le modifier. Si vous ne vous en souvenez plus, vous devez réinitialiser la clé de sécurité, puis créer un autre code.</translation>
 <translation id="7213903639823314449">Moteur de recherche utilisé dans la barre d'adresse</translation>
 <translation id="721490496276866468">Importer des mots de passe</translation>
+<translation id="7218514093816577632">Vérifiez que les notifications sont bien activées sur votre <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Plusieurs profils sont disponibles. Sélectionnez ceux que vous voulez télécharger avant de continuer.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Aucun mot de passe peu sécurisé}=1{1 mot de passe peu sécurisé}one{{NUM_WEAK} mot de passe peu sécurisé}other{{NUM_WEAK} mots de passe peu sécurisés}}</translation>
 <translation id="7220019174139618249">Impossible d'exporter les mots de passe vers "<ph name="FOLDER" />"</translation>
@@ -6993,6 +7007,7 @@
 <translation id="7664620655576155379">Appareil Bluetooth non compatible : "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7665082356120621510">Conserver la taille</translation>
 <translation id="7665369617277396874">Ajouter un compte</translation>
+<translation id="766635563210446220">Impossible d'importer les mots de passe. Vérifiez que <ph name="FILENAME" /> est au bon format. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Retourner ce <ph name="DEVICE_TYPE" /> sous {NUM_WEEKS} semaine}one{Retourner ce <ph name="DEVICE_TYPE" /> sous {NUM_WEEKS} semaine}other{Retourner ce <ph name="DEVICE_TYPE" /> sous {NUM_WEEKS} semaines}}</translation>
 <translation id="7668423670802040666">Dans le Gestionnaire de mots de passe Google pour <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Les fonctionnalités d'accessibilité facilitent l'utilisation de votre appareil. Pour accéder aux Réglages rapides, sélectionnez l'heure en bas de l'écran.</translation>
@@ -7525,6 +7540,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{une vidéo}one{# vidéo}other{# vidéos}}</translation>
 <translation id="8143442547342702591">Application non valide</translation>
 <translation id="8143609395536282994">Comment vous pouvez gérer vos données :</translation>
+<translation id="8145170459658034418">Économiseur de mémoire</translation>
 <translation id="8146177459103116374">Si vous êtes déjà enregistré sur ​​cet appareil, vous pouvez vous <ph name="LINK2_START" />connecter en tant qu'utilisateur existant<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Ajoutez et classez vos langues préférées. Les sites Web s'afficheront dans ces langues, si possible. Ces préférences sont synchronisées avec les paramètres de votre navigateur. <ph name="BEGIN_LINK_LEARN_MORE" />En savoir plus<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Échec de la connexion. Veuillez contacter votre administrateur ou réessayer.</translation>
@@ -7584,6 +7600,7 @@
 <translation id="8198456017687137612">Diffusion de l'onglet</translation>
 <translation id="8199300056570174101">Propriétés du réseau (service) et de l'appareil</translation>
 <translation id="8200772114523450471">Reprendre</translation>
+<translation id="8200789660596905522">Veillez à accepter la demande de diffusion sur votre <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Saisissez à nouveau votre mot de passe pour modifier votre profil <ph name="DEVICE_TYPE" /></translation>
 <translation id="8203152941016626022">Nom de l'appareil pour le Partage à proximité</translation>
 <translation id="8203732864715032075">Vous envoyer des notifications et mémoriser cet ordinateur pour l'utilisation de l'appli Messages. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
@@ -7835,6 +7852,7 @@
 <translation id="844063558976952706">Toujours pour ce site</translation>
 <translation id="8441313165929432954">Activer/Désactiver le partage de connexion</translation>
 <translation id="8443795068008423036">Veuillez vous assurer que votre appareil est à jour et réessayer</translation>
+<translation id="8443986842926457191">L'URL contient plus de 2 048 caractères</translation>
 <translation id="8446884382197647889">En savoir plus</translation>
 <translation id="8447409163267621480">Vous devez inclure la touche Ctrl ou la touche Alt</translation>
 <translation id="844850004779619592">Aucune commande trouvée</translation>
@@ -7900,6 +7918,7 @@
 <translation id="851263357009351303">Toujours autoriser <ph name="HOST" /> à afficher les images</translation>
 <translation id="8513108775083588393">Rotation auto</translation>
 <translation id="8514746246728959655">Essayer une autre clé de sécurité</translation>
+<translation id="8519895319663397036">Impossible d'importer les mots de passe. La taille du fichier doit être inférieure à 150 Ko.</translation>
 <translation id="8523493869875972733">Conserver les modifications</translation>
 <translation id="8523849605371521713">Ajoutée en raison des règles</translation>
 <translation id="8524783101666974011">Enregistrer des cartes dans votre compte Google</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index d4c4d3e..aabfbfb 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -693,6 +693,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 con cifrado RSA</translation>
 <translation id="1641113438599504367">Navegación segura</translation>
 <translation id="1641496881756082050">Máis accións para <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Hai 1 contrasinal que non se importou porque ten un formato incorrecto}other{Hai {NUM_PASSWORDS} contrasinais que non se importaron porque teñen un formato incorrecto}}</translation>
 <translation id="1642492862748815878">Conexión establecida cos seguintes dispositivos Bluetooth: <ph name="DEVICE" /> e <ph name="NUMBER_OF_DEVICES" /> máis</translation>
 <translation id="1642494467033190216">Necesítase a eliminación e o reinicio da protección rootfs antes de activar outras funcións de depuración.</translation>
 <translation id="1643072738649235303">Sinatura X9.62 ECDSA con SHA-1</translation>
@@ -1831,6 +1832,7 @@
 <translation id="2673135533890720193">Ler o teu historial de navegación</translation>
 <translation id="2674764818721168631">Non</translation>
 <translation id="2678063897982469759">Reactivar</translation>
+<translation id="2678100101831051676">Non se puido emitir contido.</translation>
 <translation id="268053382412112343">Hi&amp;storial</translation>
 <translation id="2681124317993121768">Os perfís de invitado non son compatibles</translation>
 <translation id="2682498795777673382">Cambio feito polo teu pai ou nai</translation>
@@ -3867,6 +3869,7 @@
 <translation id="4617019240346358451">Para usar "<ph name="EXTENSION_NAME" />", volve cargar a páxina</translation>
 <translation id="4617270414136722281">Opcións de extensión</translation>
 <translation id="4617880081511131945">Non se puido establecer conexión</translation>
+<translation id="4618195822946934889">O URL só pode conter caracteres ASCII</translation>
 <translation id="4619564267100705184">Verificar a túa identidade</translation>
 <translation id="4619615317237390068">Pestanas doutros dispositivos</translation>
 <translation id="4620809267248568679">Unha extensión aplica esta configuración.</translation>
@@ -5065,6 +5068,7 @@
 <translation id="5800351251499368110">Pechar busca no panel lateral. A busca está aberta no panel lateral.</translation>
 <translation id="5801568494490449797">Preferencias</translation>
 <translation id="5804241973901381774">Permisos</translation>
+<translation id="5805268472388605531">Mantén premidas as teclas para ver os acentos gráficos e outros caracteres especiais</translation>
 <translation id="5805697420284793859">Xestor de ventás</translation>
 <translation id="5806447147478173900">Almacenamento total usado polos sitios mostrados: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (predeterminado)</translation>
@@ -5705,6 +5709,7 @@
 <translation id="642469772702851743">O propietario bloqueou este dispositivo (número de serie: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Velocidade da saída de texto a voz</translation>
 <translation id="642729974267661262">Sitios que non poden reproducir son</translation>
+<translation id="6427608534767366138">Requírese autenticación proxy para "<ph name="NETWORK_ID" />"</translation>
 <translation id="6429384232893414837">Produciuse un erro na actualización</translation>
 <translation id="6430814529589430811">ASCII con codificación Base64, certificado único</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> configurará actualizacións automáticas para todos os usuarios deste ordenador.</translation>
@@ -7837,6 +7842,7 @@
 <translation id="844063558976952706">Sempre neste sitio</translation>
 <translation id="8441313165929432954">Activar/Desactivar conexión compartida</translation>
 <translation id="8443795068008423036">Asegúrate de que o dispositivo estea actualizado e téntao de novo</translation>
+<translation id="8443986842926457191">O URL contén máis de 2048 caracteres</translation>
 <translation id="8446884382197647889">Máis información</translation>
 <translation id="8447409163267621480">Utiliza a tecla Ctrl ou Alt</translation>
 <translation id="844850004779619592">Non se atoparon comandos</translation>
@@ -7902,6 +7908,7 @@
 <translation id="851263357009351303">Permitir sempre a <ph name="HOST" /> mostrar imaxes</translation>
 <translation id="8513108775083588393">Xirar autom.</translation>
 <translation id="8514746246728959655">Proba a utilizar unha chave de seguranza distinta</translation>
+<translation id="8519895319663397036">Non se puideron importar os contrasinais. O ficheiro debe ocupar menos de 150 kB.</translation>
 <translation id="8523493869875972733">Manter cambios</translation>
 <translation id="8523849605371521713">Engadida pola política</translation>
 <translation id="8524783101666974011">Garda tarxetas na túa Conta de Google</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 3427bef..41407ee 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -2172,6 +2172,7 @@
 <translation id="2977480621796371840">ગ્રૂપમાંથી દૂર કરો</translation>
 <translation id="2979639724566107830">નવી વિંડોમાં ખોલો</translation>
 <translation id="2981113813906970160">મોટું માઉસ કર્સર બતાવો</translation>
+<translation id="2981293774053328982">આ ફાઇલ એવું માલવેર ધરાવે છે જે તમારા વ્યક્તિગત કે સોશિયલ નેટવર્ક એકાઉન્ટ સાથે ચેડાં કરી શકે છે</translation>
 <translation id="2983373101216420412">કેસમાં બૅટરીનું લેવલ <ph name="PERCENTAGE" />% છે.</translation>
 <translation id="2985348301114641460">તમારા વ્યવસ્થાપકને "<ph name="EXTENSION_NAME" />" ઇન્સ્ટૉલ કરવાની વિનંતી મોકલીએ?</translation>
 <translation id="2987620471460279764">બીજા ડિવાઇસ પરથી શેર થયેલી ટેક્સ્ટ</translation>
@@ -3756,6 +3757,7 @@
 <translation id="4514610446763173167">વીડિઓ ચલાવવા અથવા થોભાવવા માટે તેને ટૉગલ કરો</translation>
 <translation id="451515744433878153">દૂર કરો</translation>
 <translation id="4515872537870654449">સર્વિસ માટે Dellનો સંપર્ક કરો. જો પંખો ચાલી રહ્યો ન હોય તો ડૉક શટ ડાઉન થઈ જશે.</translation>
+<translation id="4518840066030486079">શિફ્ટ કી મોડ શૈલી</translation>
 <translation id="4519331665958994620">સાઇટ તમારા કૅમેરાનો ઉપયોગ કરવાનું પૂછી શકે છે</translation>
 <translation id="4519935350946509010">કનેક્શનમાં ભૂલ.</translation>
 <translation id="4520385623207007473">ઉપયોગમાંની કુકી</translation>
@@ -3851,6 +3853,7 @@
 <translation id="4598345735110653698">પાસકી મેનેજ કરો</translation>
 <translation id="4598556348158889687">સ્ટોરેજ સંચાલન</translation>
 <translation id="4598776695426288251">બહુવિધ ડિવાઇસ દ્વારા વાઇ-ફાઇ ઉપલબ્ધ</translation>
+<translation id="4600071396330666617">સૂચનોની સંખ્યા:</translation>
 <translation id="4601426376352205922">વાંચ્યા વગરનું તરીકે માર્ક કરો</translation>
 <translation id="4602466770786743961">તમારા કૅમેરા અને માઇક્રોફોનને ઍક્સેસ કરવા માટે હંમેશાં <ph name="HOST" />ને મંજૂરી આપો</translation>
 <translation id="4606551464649945562">કોઈ સાઇટને તમારી આજુબાજુનો 3D નકશો બનાવવાની અથવા કૅમેરાનું સ્ટેટસ ટ્રૅક કરવાની મંજૂરી આપશો નહીં</translation>
@@ -4297,6 +4300,7 @@
 <translation id="5043913660911154449">તમારા પ્રિન્ટરની PPD ફાઇલનો ઉલ્લેખ કરો <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">ખોટો પાસવર્ડ</translation>
 <translation id="504561833207953641">હાલના બ્રાઉઝર સત્રમાં ખોલી રહ્યા છીએ.</translation>
+<translation id="5049614114599109018">ઇનપુટ ઇતિહાસનો ઉપયોગ કરો</translation>
 <translation id="5051836348807686060">તમે પસંદ કરેલી ભાષાઓ માટે જોડણીતપાસ સમર્થિત નથી</translation>
 <translation id="5052499409147950210">સાઇટમાં ફેરફાર કરો</translation>
 <translation id="505347685865235222">નામ વિનાનું ગ્રૂપ - <ph name="GROUP_CONTENT_STRING" /></translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 727f3b3..ae58f8a 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Ubrzo je vrijeme za pauzu</translation>
 <translation id="1062628064301375934">Pomozite nam stvoriti web s više privatnosti</translation>
 <translation id="1067048845568873861">Izrađeno</translation>
+<translation id="1067661089446014701">Radi dodatne sigurnosti možete šifrirati zaporke na uređaju prije spremanja na Google račun</translation>
 <translation id="1067922213147265141">Ostale Googleove usluge</translation>
 <translation id="1069355737714877171">Uklonite eSIM profil <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Drugi program na vašem računalu dodao je proširenje koje može promijeniti Chromeov način rada.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Administrator preporučuje određenu vrijednost za tu postavku.</translation>
 <translation id="1225177025209879837">Obrada zahtjeva...</translation>
 <translation id="1227507814927581609">Autentifikacija nije uspjela prilikom povezivanja s uređajem "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Emitiranje nije uspjelo. Pokušajte ponovo.</translation>
 <translation id="1230417814058465809">Uključena je standardna zaštita. Za veću sigurnost koristite poboljšanu zaštitu.</translation>
 <translation id="1231733316453485619">Želite li uključiti sinkronizaciju?</translation>
 <translation id="1232569758102978740">Neimenovano</translation>
@@ -1115,6 +1117,7 @@
 <translation id="2031914984822377766">Dodajte željene <ph name="LINK_BEGIN" />jezike web-lokacije<ph name="LINK_END" />. Za prijevode će se upotrebljavati prvi jezik na popisu.</translation>
 <translation id="2033758234986231162">Održavanje veze s vašim telefonom nije uspjelo. Provjerite je li telefon u blizini, je li otključan i jesu li Bluetooth i Wi-Fi uključeni.</translation>
 <translation id="2034346955588403444">Dodavanje druge Wi-Fi mreže</translation>
+<translation id="2035211704574173780">Sivi tonovi</translation>
 <translation id="203574396658008164">Omogući izradu bilježaka na zaključanom zaslonu</translation>
 <translation id="2037445849770872822">Postavljen je nadzor za ovaj Google račun. Da biste postavili više opcija roditeljskog nadzora, odaberite Nastavi.
 
@@ -2543,6 +2546,7 @@
 <translation id="3363202073972776113">Ovim novim profilom upravljat će vaša organizacija. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Od vašeg administratora: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Upotrijebite Ctrl ili Alt</translation>
+<translation id="3368586359109138591">Preuzmite kopiju za upotrebu na drugim mjestima</translation>
 <translation id="3368922792935385530">Spojeno</translation>
 <translation id="3369067987974711168">Prikaži više radnji za ovaj priključak</translation>
 <translation id="3369624026883419694">Traženje domaćina...</translation>
@@ -2731,6 +2735,7 @@
 <translation id="3532273508346491126">Upravljanje sinkronizacijom</translation>
 <translation id="3532521178906420528">Uspostavljanje mrežne veze...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – zvuk je isključen</translation>
+<translation id="3536492240554502321">Rotacija nijanse</translation>
 <translation id="3537881477201137177">To se može izmijeniti kasnije u postavkama</translation>
 <translation id="3538066758857505094">Došlo je do pogreške prilikom deinstaliranja Linuxa. Pokušajte ponovo.</translation>
 <translation id="354060433403403521">Punjač</translation>
@@ -3056,6 +3061,7 @@
 <translation id="383669374481694771">To su općeniti podaci o ovom uređaju i načinu na koji se upotrebljava (kao što su razina baterije, aktivnosti sustava i aplikacija te pogreške). Ti podaci upotrijebit će se za poboljšanje Androida, a neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android, da poboljšaju svoje aplikacije i proizvode.</translation>
 <translation id="3838085852053358637">Učitavanje proširenja nije uspjelo</translation>
 <translation id="3838486795898716504">Više za <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Dodavanje spremljenih zaporki u Google upravitelj zaporki</translation>
 <translation id="383891835335927981">Nijedna web-lokacija nije povećana ili smanjena</translation>
 <translation id="3839509547554145593">Omogući ubrzanje pomicanja mišem</translation>
 <translation id="3839516600093027468">Uvijek blokiraj web-lokaciji <ph name="HOST" /> uvid u međuspremnik</translation>
@@ -4129,6 +4135,7 @@
 <translation id="4871568871368204250">Isključivanje sinkronizacije</translation>
 <translation id="4871719318659334896">Zatvori grupu</translation>
 <translation id="4872192066608821120">Da biste uvezli zaporke, odaberite CSV datoteku</translation>
+<translation id="4872212987539553601">Postavljanje šifriranja na uređaju</translation>
 <translation id="4873312501243535625">Provjera medijskih datoteka</translation>
 <translation id="4876273079589074638">Pomognite našim inženjerima da istraže i isprave rušenje. Navedite točne korake ako možete. Svaka je pojedinost važna!</translation>
 <translation id="4876895919560854374">zaključati i otključati zaslon</translation>
@@ -6429,6 +6436,7 @@
 <translation id="7093220653036489319">Brzi odgovori</translation>
 <translation id="7093416310351037609">Za potrebe sigurnosti i zaštite vaša organizacija zahtijeva da se sva preuzimanja koja ispunjavaju uvjete spreme na račun <ph name="WEB_DRIVE" /> vaše organizacije.</translation>
 <translation id="7093866338626856921">razmjenjivati podatke s uređajima naziva: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Prihvatite zahtjev za emitiranje na uređaju <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">USB-C uređaj (lijevi priključak sa stražnje strane)</translation>
 <translation id="7098447629416471489">Ovdje će se pojaviti ostale spremljene tražilice</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Ukloni aplikaciju}one{Ukloni aplikacije}few{Ukloni aplikacije}other{Ukloni aplikacije}}</translation>
@@ -6529,6 +6537,7 @@
 <translation id="7212097698621322584">Unesite svoj trenutačni PIN da biste ga promijenili. Ako ne znate PIN, vratite sigurnosni ključ na zadano, a zatim izradite novi PIN.</translation>
 <translation id="7213903639823314449">Tražilica koja se upotrebljava u adresnoj traci</translation>
 <translation id="721490496276866468">Uvoz zaporki</translation>
+<translation id="7218514093816577632">Provjerite jesu li uključene obavijesti na uređaju <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Pronašli smo više profila dostupnih za preuzimanje. Prije nego što nastavite, odaberite one koje želite preuzeti.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Nema slabih zaporki}=1{Jedna slaba zaporka}one{{NUM_WEAK} slaba zaporka}few{{NUM_WEAK} slabe zaporke}other{{NUM_WEAK} slabih zaporki}}</translation>
 <translation id="7220019174139618249">Izvoz zaporki u mapu "<ph name="FOLDER" />" nije moguć</translation>
@@ -6718,6 +6727,7 @@
 <translation id="7404065585741198296">Telefonom povezanim USB kabelom</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Sigurnosna provjera izvršena je prije sat vremena}one{Sigurnosna provjera izvršena je prije {NUM_HOURS} sata}few{Sigurnosna provjera izvršena je prije {NUM_HOURS} sata}other{Sigurnosna provjera izvršena je prije {NUM_HOURS} sati}}</translation>
 <translation id="740624631517654988">Skočni prozor blokiran</translation>
+<translation id="7406912950279255498">Način inverzije boja</translation>
 <translation id="7407430846095439694">Uvezi i poveži</translation>
 <translation id="7407504355934009739">Većina korisnika blokira obavijesti s te web-lokacije</translation>
 <translation id="740810853557944681">Dodajte poslužitelj za ispis</translation>
@@ -6998,6 +7008,7 @@
 <translation id="7664620655576155379">Nepodržani Bluetooth uređaj: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Rezerviraj veličinu</translation>
 <translation id="7665369617277396874">Dodaj račun</translation>
+<translation id="766635563210446220">Zaporke se ne mogu uvesti. Provjerite je li datoteka <ph name="FILENAME" /> pravilno formatirana. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Vratite uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} tjedna}one{Vratite uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} tjedna}few{Vratite uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} tjedna}other{Vratite uređaj <ph name="DEVICE_TYPE" /> u roku od {NUM_WEEKS} tjedana}}</translation>
 <translation id="7668423670802040666">Na Google upravitelju zaporki za <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Značajke pristupačnosti olakšavaju upotrebu uređaja. Da biste pristupili Brzim postavkama, odaberite vrijeme pri dnu zaslona.</translation>
@@ -7529,6 +7540,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{videozapis}one{# videozapis}few{# videozapisa}other{# videozapisa}}</translation>
 <translation id="8143442547342702591">Nevažeća aplikacija</translation>
 <translation id="8143609395536282994">Kako možete upravljati svojim podacima:</translation>
+<translation id="8145170459658034418">Štednja memorije</translation>
 <translation id="8146177459103116374">Ako ste već registrirani na ovom uređaju, možete <ph name="LINK2_START" />se prijaviti kao postojeći korisnik<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Dodajte i rangirajte preferirane jezike. Web-lokacije će se prikazivati na vašim preferiranim jezicima kad je to moguće. Te se preferencije sinkroniziraju s postavkama vašeg preglednika. <ph name="BEGIN_LINK_LEARN_MORE" />Saznajte više<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Prijava nije uspjela. Obratite se administratoru ili pokušajte ponovo.</translation>
@@ -7588,6 +7600,7 @@
 <translation id="8198456017687137612">Emitiranje kartice</translation>
 <translation id="8199300056570174101">Svojstva mreže (usluge) i uređaja</translation>
 <translation id="8200772114523450471">Nastavi</translation>
+<translation id="8200789660596905522">Svakako prihvatite zahtjev za emitiranje na uređaju <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Ponovo unesite zaporku da biste ažurirali svoj profil na uređaju <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Naziv uređaja za dijeljenje u blizini</translation>
 <translation id="8203732864715032075">Slanje obavijesti i vraćanje na postavku pamćenja ovog računala za Poruke. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
@@ -7664,6 +7677,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Vlasnik može upravljati tom značajkom putem Postavki &gt; Napredno &gt; Automatsko slanje dijagnostike i podataka o upotrebi Googleu.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Ako je uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na vaš Google račun. Svoje podatke možete pregledati, izbrisati ih i promijeniti na stranici families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Nevažeći certifikat klijenta</translation>
+<translation id="8270162672241199380">Program za instalaciju Steam</translation>
 <translation id="827097179112817503">Prikaži gumb početne stranice</translation>
 <translation id="8271268254812352141">Da biste pronašli definicije, prijevode ili pretvorbe jedinica, kliknite tekst desnom tipkom ili ga dodirnete i držite. Jezike za prijevod prilagodite u odjeljku <ph name="LINK_BEGIN" />Jezici web-lokacija<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Roditelji, sljedećih je nekoliko koraka za vas. Možete vratiti uređaj <ph name="DEVICE_TYPE" /> djetetu nakon izrade računa.</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 856d8ba5..88cc3f2b 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Lassan ideje szünetet tartani</translation>
 <translation id="1062628064301375934">Hozzájárulás a privátabb jellegű internet biztosításához</translation>
 <translation id="1067048845568873861">Létrehozva</translation>
+<translation id="1067661089446014701">A nagyobb biztonság érdekében titkosíthatja jelszavait az eszközén, mielőtt a rendszer elmenti őket a Google-fiókjába.</translation>
 <translation id="1067922213147265141">Egyéb Google-szolgáltatások</translation>
 <translation id="1069355737714877171">A következő eSIM-profil eltávolítása: <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">A számítógépén lévő egyik program olyan bővítményt adott hozzá, amely megváltoztathatja a Chrome működését.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Rendszergazdája egy meghatározott értéket javasol ehhez a beállításhoz.</translation>
 <translation id="1225177025209879837">A kérelem feldolgozása folyamatban van...</translation>
 <translation id="1227507814927581609">A hitelesítés sikertelen volt a következőhöz való csatlakozáskor: „<ph name="DEVICE_NAME" />”.</translation>
+<translation id="1227993798763400520">Az átküldés nem sikerült. Próbálja újra.</translation>
 <translation id="1230417814058465809">A Normál védelem be van kapcsolva. A még nagyobb biztonság érdekében használjon speciális védelmet.</translation>
 <translation id="1231733316453485619">Bekapcsolja a szinkronizálást?</translation>
 <translation id="1232569758102978740">Névtelen</translation>
@@ -1124,6 +1126,7 @@
 <translation id="2031914984822377766">Adja meg a <ph name="LINK_BEGIN" />webhelyeken használni kívánt nyelveket<ph name="LINK_END" />. A rendszer a lista tetején található nyelvet használja majd a fordításokhoz.</translation>
 <translation id="2033758234986231162">Nem sikerült fenntartani a telefon kapcsolatát. Győződjön meg arról, hogy telefonja a közelben van, a zárolása fel van oldva, valamint hogy be van kapcsolva rajta a Wi-Fi és a Bluetooth.</translation>
 <translation id="2034346955588403444">Másik Wi-Fi-hálózat hozzáadása</translation>
+<translation id="2035211704574173780">Szürkeárnyalatos</translation>
 <translation id="203574396658008164">Jegyzetkészítés engedélyezése a lezárási képernyőn</translation>
 <translation id="2037445849770872822">A felügyelet be van állítva ebben a Google-fiókban. Szélesebb körű szülői felügyelet beállításához válassza a Tovább lehetőséget.
 
@@ -2554,6 +2557,7 @@
 <translation id="3363202073972776113">Ezt az új profilt a szervezete fogja kezelni. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation>
 <translation id="3364986687961713424">A rendszergazdától: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Vagy a Ctrl vagy az Alt billentyűt használja</translation>
+<translation id="3368586359109138591">Másolat letöltése máshol történő felhasználáshoz</translation>
 <translation id="3368922792935385530">Kapcsolódva</translation>
 <translation id="3369067987974711168">A porttal kapcsolatos további műveletek megjelenítése</translation>
 <translation id="3369624026883419694">Szerver azonosítása folyamatban...</translation>
@@ -2742,6 +2746,7 @@
 <translation id="3532273508346491126">Szinkronizálás kezelése</translation>
 <translation id="3532521178906420528">Hálózati kapcsolat létrehozása…</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – Hang kikapcsolva</translation>
+<translation id="3536492240554502321">Színárnyalat váltogatása</translation>
 <translation id="3537881477201137177">Ezt később módosíthatja a beállítások között</translation>
 <translation id="3538066758857505094">Hiba történt a Linux eltávolítása során. Próbálja újra.</translation>
 <translation id="354060433403403521">Tápadapter</translation>
@@ -3067,6 +3072,7 @@
 <translation id="383669374481694771">Ez általános információ erről az eszközről és a használati módjáról (például az akkumulátor töltöttségéről, a rendszer- és alkalmazástevékenységekről, valamint a hibákról). Az adatokat arra használjuk fel, hogy továbbfejlesszük az Androidot, bizonyos összesített adatok pedig a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek segítenek alkalmazásaik és termékeik fejlesztésében.</translation>
 <translation id="3838085852053358637">Nem sikerült betölteni a bővítményt</translation>
 <translation id="3838486795898716504">Továbbiak: <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Mentett jelszavak hozzáadása a Google Jelszókezelőhöz</translation>
 <translation id="383891835335927981">Nincs nagyított vagy kicsinyített webhely</translation>
 <translation id="3839509547554145593">Az egérrel való görgetés gyorsításának engedélyezése</translation>
 <translation id="3839516600093027468">A vágólap megtekintésének állandó tiltása a(z) <ph name="HOST" /> számára</translation>
@@ -4140,6 +4146,7 @@
 <translation id="4871568871368204250">A szinkronizálás kikapcsolása</translation>
 <translation id="4871719318659334896">Csoport bezárása</translation>
 <translation id="4872192066608821120">Jelszavak importálásához válassza ki a kívánt CSV-fájlt</translation>
+<translation id="4872212987539553601">Az eszközalapú titkosítás beállítása</translation>
 <translation id="4873312501243535625">Médiafájl-ellenőrző</translation>
 <translation id="4876273079589074638">Segítse mérnökeinket az összeomlás kivizsgálásában és kijavításában. Ha lehet, adja meg a pontos lépéseket. Nem létezik túl apró részlet!</translation>
 <translation id="4876895919560854374">A képernyő feloldása és zárolása</translation>
@@ -6441,6 +6448,7 @@
 <translation id="7093220653036489319">Gyors válaszok</translation>
 <translation id="7093416310351037609">Az adatok védelme és biztonsága érdekében szervezete megköveteli, hogy az összes vonatkozó letöltés a szervezet <ph name="WEB_DRIVE" />-fiókjába kerüljön mentésre.</translation>
 <translation id="7093866338626856921">Adatok cseréje a(z) <ph name="HOSTNAMES" /> nevű eszközökkel</translation>
+<translation id="7094680343477712655">Engedélyezze az átküldést a következőn: <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">C típusú USB-vel kompatibilis eszköz (bal hátsó port)</translation>
 <translation id="7098447629416471489">A többi mentett keresőmotor itt jelennek meg</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Alkalmazás eltávolítása}other{Alkalmazások eltávolítása}}</translation>
@@ -6541,6 +6549,7 @@
 <translation id="7212097698621322584">A módosításhoz adja meg jelenlegi PIN-kódját. Ha nem tudja a PIN-kódot, vissza kell állítania a biztonsági hardverkulcsot, majd új PIN-kódot kell létrehoznia.</translation>
 <translation id="7213903639823314449">A címsávban használt keresőmotor</translation>
 <translation id="721490496276866468">Jelszavak importálása</translation>
+<translation id="7218514093816577632">Ellenőrizze, hogy be vannak-e kapcsolva az értesítések a következőn: <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Több letölthető profilt is találtunk. A továbblépés előtt válassza ki, hogy melyeket szeretné letölteni.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Nem található gyenge jelszó}=1{1 gyenge jelszó}other{{NUM_WEAK} gyenge jelszó}}</translation>
 <translation id="7220019174139618249">Nem sikerült a jelszavak exportálása a következő helyre: <ph name="FOLDER" /></translation>
@@ -7010,6 +7019,7 @@
 <translation id="7664620655576155379">Nem támogatott Bluetooth-eszköz: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="7665082356120621510">Méret lefoglalása</translation>
 <translation id="7665369617277396874">Fiók hozzáadása</translation>
+<translation id="766635563210446220">Nem lehet importálni a jelszavakat. Ellenőrizze, hogy megfelelő-e a következő fájl formázása: <ph name="FILENAME" />. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{A(z) <ph name="DEVICE_TYPE" /> visszaküldésére {NUM_WEEKS} hét áll rendelkezésre}other{A(z) <ph name="DEVICE_TYPE" /> visszaküldésére {NUM_WEEKS} hét áll rendelkezésre}}</translation>
 <translation id="7668423670802040666">A Google Jelszókezelőben a következő fióknál: <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">A kisegítő lehetőségek megkönnyítik az eszköz használatát. A Gyorsbeállítások megnyitásához válassza a képernyő alján található órát.</translation>
@@ -7541,6 +7551,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{egy videót}other{# videót}}</translation>
 <translation id="8143442547342702591">Érvénytelen alkalmazás</translation>
 <translation id="8143609395536282994">A következőképpen kezelheti az adatait:</translation>
+<translation id="8145170459658034418">Memóriatakarékos</translation>
 <translation id="8146177459103116374">Ha már regisztrálva van ezen az eszközön, akkor <ph name="LINK2_START" />bejelentkezhet meglévő felhasználóként<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Vegye fel a listára, és rangsorolja az előnyben részesített nyelveit. A webhelyek szövege a preferált nyelveken jelenik meg, ha lehetséges. Ezeket a preferenciákat a rendszer szinkronizálja a böngésző beállításaival. <ph name="BEGIN_LINK_LEARN_MORE" />További információ<ph name="END_LINK_LEARN_MORE" />.</translation>
 <translation id="8146793085009540321">Sikertelen bejelentkezés. Kérjük, forduljon rendszergazdájához, vagy próbálja újra.</translation>
@@ -7600,6 +7611,7 @@
 <translation id="8198456017687137612">Lap átküldése…</translation>
 <translation id="8199300056570174101">Hálózati (szolgáltatási) és eszköztulajdonságok</translation>
 <translation id="8200772114523450471">Folytatás</translation>
+<translation id="8200789660596905522">Ellenőrizze, hogy engedélyezte-e az átküldést a következőn: <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999"><ph name="DEVICE_TYPE" />-profilja frissítéséhez adja meg újra jelszavát.</translation>
 <translation id="8203152941016626022">Közeli megosztás eszköznév</translation>
 <translation id="8203732864715032075">Értesítések küldése, valamint a számítógép alapértelmezettként való megjegyzése a Messages alkalmazásban. <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 352d178..6b1cef4 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Շուտով ընդմիջման ժամն է</translation>
 <translation id="1062628064301375934">Օգնեք մեզ բարձրացնել գաղտնիության մակարդակը ցանցում</translation>
 <translation id="1067048845568873861">Ստեղծվել է</translation>
+<translation id="1067661089446014701">Անվտանգության մակարդակը բարձրացնելու համար դուք կարող եք գաղտնագրել գաղտնաբառերը ձեր սարքում՝ նախքան Google հաշվում պահելը։</translation>
 <translation id="1067922213147265141">Google-ի այլ ծառայություններ</translation>
 <translation id="1069355737714877171">Հեռացնել eSIM պրոֆիլը (<ph name="PROFILE_NAME" />)</translation>
 <translation id="1070377999570795893">Ձեր համակարգչի ծրագրերից մեկն ավելացրել է ընդլայնում, որը կարող է միջամտել Chrome-ի աշխատանքին:
@@ -250,6 +251,7 @@
 <translation id="1223853788495130632">Ադմինիստրատորը խորհուրդ է տալիս այս կարգավորման համար որոշակի արժեք ընտրել:</translation>
 <translation id="1225177025209879837">Հարցումը մշակվում է…</translation>
 <translation id="1227507814927581609">«<ph name="DEVICE_NAME" />»-ին կապակցվելիս իսկորոշումը ձախողվեց:</translation>
+<translation id="1227993798763400520">Չհաջողվեց հեռարձակել։ Նորից փորձեք։</translation>
 <translation id="1230417814058465809">Սովորական պաշտպանությունը միացված է։ Հավելյալ ապահովության համար օգտագործեք բարելավված
  պաշտպանությունը։</translation>
 <translation id="1231733316453485619">Միացնե՞լ համաժամացումը</translation>
@@ -694,6 +696,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4` RSA գաղտնագրումով</translation>
 <translation id="1641113438599504367">Անվտանգ դիտարկում</translation>
 <translation id="1641496881756082050">«<ph name="NETWORK_NAME" />» քարտին առնչվող այլ գործողություններ</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 այլ գաղտնաբառ չի ներմուծվել, քանի որ այն սխալ կերպով է ֆորմատավորվել}one{{NUM_PASSWORDS} այլ գաղտնաբառ չի ներմուծվել, քանի որ այն սխալ կերպով է ֆորմատավորվել}other{{NUM_PASSWORDS} այլ գաղտնաբառ չի ներմուծվել, քանի որ դրանք սխալ կերպով են ֆորմատավորվել}}</translation>
 <translation id="1642492862748815878">Կապ է հաստատվել «<ph name="DEVICE" />» ու <ph name="NUMBER_OF_DEVICES" /> այլ Bluetooth սարքերի հետ</translation>
 <translation id="1642494467033190216">Հարկավոր է հեռացնել rootfs պաշտպանությունը և վերագործարկել՝ մինչ այլ վրիպազերծման գործառույթները միացնելը:</translation>
 <translation id="1643072738649235303">X9.62 ECDSA ստորագրություն SHA-1-ով</translation>
@@ -1114,6 +1117,7 @@
 <translation id="2031914984822377766">Ավելացրեք <ph name="LINK_BEGIN" />կայքերի ձեր նախընտրած լեզուները<ph name="LINK_END" />։ Թարգմանությունների համար կօգտագործվի ցանկի սկզբում գտնվող լեզուն։</translation>
 <translation id="2033758234986231162">Հնարավոր չէ կապ պահպանել ձեր հեռախոսի հետ։ Համոզվեք, որ ձեր հեռախոսը մոտակայքում է, ապակողպված է, և որ Bluetooth-ն ու Wi-Fi-ը միացված են։</translation>
 <translation id="2034346955588403444">Ավելացնել այլ Wi-Fi ցանց</translation>
+<translation id="2035211704574173780">Մոխրագույնի երանգներ</translation>
 <translation id="203574396658008164">Միացնել կողպէկրանից նշումների ստեղծման գործառույթը</translation>
 <translation id="2037445849770872822">Այս Google հաշվի համար կարգավորված է ծնողական վերահսկողություն: Ավելի շատ պարամետրեր կարգավորելու համար ընտրեք «Շարունակել»:
 
@@ -1831,6 +1835,7 @@
 <translation id="2673135533890720193">Կարդալ ձեր զննարկման պատմությունը</translation>
 <translation id="2674764818721168631">Անջատված է</translation>
 <translation id="2678063897982469759">Նորից միացնել</translation>
+<translation id="2678100101831051676">Չհաջողվեց հեռարձակել։</translation>
 <translation id="268053382412112343">Պատ&amp;մություն</translation>
 <translation id="2681124317993121768">Հյուրի պրոֆիլները չեն աջակցվում</translation>
 <translation id="2682498795777673382">Ծնողը փոխել է կարգավորումները</translation>
@@ -2539,6 +2544,7 @@
 <translation id="3363202073972776113">Այս նոր պրոֆիլը կկառավարվի ձեր կազմակերպության կողմից։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Ձեր ադմինիստրատորից. «<ph name="ADMIN_MESSAGE" />»</translation>
 <translation id="3365598184818502391">Օգտագործեք Ctrl կամ Alt</translation>
+<translation id="3368586359109138591">Ներբեռնեք գաղտնաբառերի կրկնօրինակը՝ այլ ծառայություններում օգտագործելու համար</translation>
 <translation id="3368922792935385530">Միացված է</translation>
 <translation id="3369067987974711168">Ցույց տալ ավելի շատ գործողություններ այս միացքի համար</translation>
 <translation id="3369624026883419694">Խնամորդի վերլուծում…</translation>
@@ -2727,6 +2733,7 @@
 <translation id="3532273508346491126">Համաժամացման կառավարում</translation>
 <translation id="3532521178906420528">Կապի հաստատում...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – Ձայնն անջատված է</translation>
+<translation id="3536492240554502321">Երանգների պտտում</translation>
 <translation id="3537881477201137177">Ավելի ուշ կարող եք սա կարգավորումներում փոխել</translation>
 <translation id="3538066758857505094">Չհաջողվեց ապատեղադրել Linux-ը: Նորից փորձեք:</translation>
 <translation id="354060433403403521">AC հարմարիչ</translation>
@@ -3052,6 +3059,7 @@
 <translation id="383669374481694771">Սրանք ընդհանուր տեղեկություններ են այս սարքի և դրա օգտագործման (օրինակ՝ մարտկոցի լիցքի, համակարգի ու հավելվածների օգտագործման և սխալների) մասին։ Տեղեկություններն օգտագործվելու են Android-ի ծառայությունների աշխատանքը բարելավելու համար։ Տվյալների մի մասը օգտակար կլինի մեր գործընկերների, օրինակ, Android ծրագրավորողների համար և կօգնի բարելավել նաև նրանց հավելվածներն ու արտադրանքները։</translation>
 <translation id="3838085852053358637">Չհաջողվեց բեռնել ընդլայնումը</translation>
 <translation id="3838486795898716504"><ph name="PAGE_TITLE" /> վերնագրով այլ էջեր</translation>
+<translation id="3838487810283346084">Ավելացրեք պահված գաղտնաբառերը Google գաղտնաբառերի կառավարիչում</translation>
 <translation id="383891835335927981">Ոչ մի կայք չի մասշտաբավորվել</translation>
 <translation id="3839509547554145593">Միացնել մկնիկով ոլորման արագացումը</translation>
 <translation id="3839516600093027468">Միշտ արգելափակել <ph name="HOST" /> կայքի մուտքը սեղմատախտակին</translation>
@@ -3863,6 +3871,7 @@
 <translation id="4617019240346358451">Վերաբեռնեք էջը՝ «<ph name="EXTENSION_NAME" />» ընդլայնումն օգտագործելու համար</translation>
 <translation id="4617270414136722281">Ընդլայնումների ընտրանքներ</translation>
 <translation id="4617880081511131945">Հնարավոր չէ կապ հաստատել</translation>
+<translation id="4618195822946934889">URL-ը կարող պարունակել միայն ASCII նիշեր</translation>
 <translation id="4619564267100705184">Հաստատեք ձեր ինքնությունը</translation>
 <translation id="4619615317237390068">Ներդիրներ այլ սարքերից</translation>
 <translation id="4620809267248568679">Այս կարգավորումը պարտադրված է ընդլայնման կողմից:</translation>
@@ -4123,6 +4132,7 @@
 <translation id="4871568871368204250">Անջատել համաժամացումը</translation>
 <translation id="4871719318659334896">Փակել խումբը</translation>
 <translation id="4872192066608821120">Գաղտնաբառերը ներմուծելու համար ընտրեք CSV ֆայլը</translation>
+<translation id="4872212987539553601">Կարգավորեք գաղտնագրումը սարքում</translation>
 <translation id="4873312501243535625">Մեդիա ֆայլի ստուգիչ</translation>
 <translation id="4876273079589074638">Օգնեք մեր մշակողներին ուսումնասիրել և շտկել այս խափանումը: 
 Նկարագրեք ձեր գործողությունները: Յուրաքանչյուր դետալ կարևոր է:</translation>
@@ -5062,6 +5072,7 @@
 <translation id="5800351251499368110">Փակել որոնումը կողային վահանակում։ Որոնումը բացված է կողային վահանակում։</translation>
 <translation id="5801568494490449797">Նախընտրանքներ</translation>
 <translation id="5804241973901381774">Թույլտվություններ</translation>
+<translation id="5805268472388605531">Շեշտը և հատուկ նշանները տեսնելու համար սեղմած պահեք ստեղնաշարի ստեղները</translation>
 <translation id="5805697420284793859">Պատուհանների կառավարիչ</translation>
 <translation id="5806447147478173900">Ցուցադրվող կայքերի կողմից օգտագործվող ընդհանուր տարածքը՝ <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (կանխադրված)</translation>
@@ -5702,6 +5713,7 @@
 <translation id="642469772702851743">Այս սարքը (սերիական համար՝ <ph name="SERIAL_NUMBER" />) արգելափակվել է սեփականատիրոջ կողմից:</translation>
 <translation id="6425556984042222041">Տեքստի հնչեցման արագությունը</translation>
 <translation id="642729974267661262">Չի թույլատրվում նվագարկել ձայն</translation>
+<translation id="6427608534767366138">«<ph name="NETWORK_ID" />» ցանցի համար պահանջվում է պրոքսի սերվերի իսկորոշում</translation>
 <translation id="6429384232893414837">Թարմացման սխալ</translation>
 <translation id="6430814529589430811">Base64-գաղտնագրված ASCII, մեկ վկայագիր</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" />-ը կկարգավորի ավտոմատ թարմացումները՝ համակարգչի բոլոր օգտատերերի համար:</translation>
@@ -6422,6 +6434,7 @@
 <translation id="7093220653036489319">Արագ պատասխաններ</translation>
 <translation id="7093416310351037609">Տվյալների անվտանգությունն ապահովելու համար ձեր կազմակերպությունը պահանջում է, որ բոլոր ներբեռնումները պահվեն ձեր կազմակերպության <ph name="WEB_DRIVE" /> հաշվում։</translation>
 <translation id="7093866338626856921">Փոխանակել տվյալները հետևյալ անուններով սարքերի հետ՝ <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Ընդունեք ձեր <ph name="DEVICE_NAME" /> սարքում հեռարձակման հարցումը։</translation>
 <translation id="7098389117866926363">USB-C սարք (հետևի ձախ միացք)</translation>
 <translation id="7098447629416471489">Պահված մյուս որոնիչները կցուցադրվեն այստեղ</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Հեռացնել հավելվածը}one{Հեռացնել հավելվածը}other{Հեռացնել հավելվածները}}</translation>
@@ -6522,6 +6535,7 @@
 <translation id="7212097698621322584">Մուտքագրեք ձեր ընթացիկ PIN կոդը՝ այն փոխելու համար: Եթե չգիտեք ձեր PIN կոդը, զրոյացրեք անվտանգության բանալու կարգավորումները և նշեք նոր PIN կոդ։</translation>
 <translation id="7213903639823314449">Հասցեագոտում օգտագործվող որոնողական համակարգը</translation>
 <translation id="721490496276866468">Ներմուծել գաղտնաբառերը</translation>
+<translation id="7218514093816577632">Համոզվեք, որ ծանուցումները միացված են ձեր <ph name="DEVICE_NAME" /> սարքում։</translation>
 <translation id="7219473482981809164">Մենք գտել ենք մի քանի պրոֆիլ, որոնք հասանելի են ներբեռնման համար։ Շարունակելուց առաջ ընտրեք պրոֆիլները, որոնք ուզում եք ներբեռնել։</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Թույլ գաղտնաբառեր չկան}=1{1 թույլ գաղտնաբառ}one{{NUM_WEAK} թույլ գաղտնաբառ}other{{NUM_WEAK} թույլ գաղտնաբառ}}</translation>
 <translation id="7220019174139618249">Չհաջողվեց գատնաբառերն արտահանել «<ph name="FOLDER" />» պանակ</translation>
@@ -6991,6 +7005,7 @@
 <translation id="7664620655576155379">Չաջակցվող Bluetooth սարք՝ «<ph name="DEVICE_NAME" />»:</translation>
 <translation id="7665082356120621510">Պահպանել չափը</translation>
 <translation id="7665369617277396874">Ավելացնել հաշիվ</translation>
+<translation id="766635563210446220">Չհաջողվեց ներմուծել գաղտնաբառերը։ Ստուգեք <ph name="FILENAME" /> ֆայլը և համոզվեք, որ այն ճիշտ կերպով է ֆորմատավորվել։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Վերադարձրեք <ph name="DEVICE_TYPE" /> սարքը {NUM_WEEKS} շաբաթվա ընթացքում}one{Վերադարձրեք <ph name="DEVICE_TYPE" /> սարքը {NUM_WEEKS} շաբաթվա ընթացքում}other{Վերադարձրեք <ph name="DEVICE_TYPE" /> սարքը {NUM_WEEKS} շաբաթվա ընթացքում}}</translation>
 <translation id="7668423670802040666">Google Գաղտնաբառերի կառավարիչում <ph name="ACCOUNT" /> հաշվի համար</translation>
 <translation id="7668648754769651616">Հատուկ գործառույթներն ավելի են հեշտացնում սարքի օգտագործումը։ Արագ կարգավորումները բացելու համար էկրանի ներքևում սեղմեք ժամանակը։</translation>
@@ -7520,6 +7535,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{տեսանյութ}one{# տեսանյութ}other{# տեսանյութ}}</translation>
 <translation id="8143442547342702591">Հավելվածն անվավեր է</translation>
 <translation id="8143609395536282994">Ինչպես կարող եք կառավարել ձեր տվյալները</translation>
+<translation id="8145170459658034418">Հիշողության տնտեսում</translation>
 <translation id="8146177459103116374">Եթե դուք արդեն գրանցված եք այս սարքում, ապա կարող եք <ph name="LINK2_START" />մուտք գործել որպես առկա օգտատեր<ph name="LINK2_END" />:</translation>
 <translation id="8146287226035613638">Ավելացրեք նախընտրելի լեզուներ և դասակարգեք դրանք։ Կայքերը հնարավորության դեպքում կցուցադրվեն այդ լեզուներով։ Այս պարամետրերը համաժամացվում են ձեր դիտարկիչի կարգավորումների հետ։ <ph name="BEGIN_LINK_LEARN_MORE" />Իմանալ ավելին<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Չհաջողվեց մուտք գործել: Կապվեք ադմինիստրատորի հետ կամ նորից փորձեք:</translation>
@@ -7579,6 +7595,7 @@
 <translation id="8198456017687137612">Ներդիրի հեռարձակում</translation>
 <translation id="8199300056570174101">Ցանցի (ծառայության) և սարքի կարգավորումներ</translation>
 <translation id="8200772114523450471">Շարունակել</translation>
+<translation id="8200789660596905522">Համոզվեք, որ ընդունել եք ձեր <ph name="DEVICE_NAME" /> սարքում հեռարձակման հարցումը։</translation>
 <translation id="8202160505685531999">Նորից մուտքագրեք գաղտնաբառը՝ ձեր <ph name="DEVICE_TYPE" /> սարքի պրոֆիլը թարմացնելու համար:</translation>
 <translation id="8203152941016626022">«Փոխանակում մոտակա սարքերի հետ» գործառույթով սարքի անվանումը</translation>
 <translation id="8203732864715032075">Ցուցադրել ծանուցումներ՝ հեռախոսում ստացած հաղորդագրությունների մասին։ <ph name="LINK_BEGIN" />Մանրամասն<ph name="LINK_END" /></translation>
@@ -7830,6 +7847,7 @@
 <translation id="844063558976952706">Միշտ այս կայքում</translation>
 <translation id="8441313165929432954">Միացնել/անջատել մոդեմի ռեժիմը</translation>
 <translation id="8443795068008423036">Թարմացրեք սարքի օպերացիոն համակարգը և նորից փորձեք։</translation>
+<translation id="8443986842926457191">URL-ը կարող է պարունակել առավելագույնը 2048 նիշ</translation>
 <translation id="8446884382197647889">Մանրամասն</translation>
 <translation id="8447409163267621480">Սկզբում սեղմեք Ctrl կամ Alt</translation>
 <translation id="844850004779619592">Հրամաններ չեն գտնվել</translation>
@@ -7895,6 +7913,7 @@
 <translation id="851263357009351303">Միշտ թույլատրել <ph name="HOST" />-ին ցուցադրել պատկերները</translation>
 <translation id="8513108775083588393">Ինքնապտտում</translation>
 <translation id="8514746246728959655">Օգտագործեք անվտանգության մեկ այլ բանալի</translation>
+<translation id="8519895319663397036">Չհաջողվեց ներմուծել գաղտնաբառերը։ Ֆայլի չափը չպետք է գերազանցի 150 ԿԲ-ը։</translation>
 <translation id="8523493869875972733">Պահել փոփոխությունները</translation>
 <translation id="8523849605371521713">Ավելացվել է կորպորատիվ քաղաքականության համաձայն</translation>
 <translation id="8524783101666974011">Պահեք քարտերը ձեր Google հաշվում</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index f98b869..080ccbe 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Það fer að koma tími til að taka sér hlé</translation>
 <translation id="1062628064301375934">Hjálpaðu okkur að skapa vef sem gætir persónuverndar betur</translation>
 <translation id="1067048845568873861">Búið til</translation>
+<translation id="1067661089446014701">Til að auka öryggi geturðu dulkóðað aðgangsorð í tækinu þínu áður en þau eru vistuð á Google reikningnum þínum</translation>
 <translation id="1067922213147265141">Önnur Google þjónusta</translation>
 <translation id="1069355737714877171">Fjarlægja eSIM-prófílinn <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Annað forrit í tölvunni þinni bætti við viðbót sem gæti breytt því hvernig Chrome virkar.
@@ -252,6 +253,7 @@
 <translation id="1223853788495130632">Kerfisstjórinn þinn ráðleggur tiltekið gildi fyrir þessa stillingu.</translation>
 <translation id="1225177025209879837">Vinnur úr beiðni...</translation>
 <translation id="1227507814927581609">Auðkenning mistókst þegar tengst var við „<ph name="DEVICE_NAME" />“.</translation>
+<translation id="1227993798763400520">Ekki tókst að senda út. Reyndu aftur.</translation>
 <translation id="1230417814058465809">Kveikt er á hefðbundinni vörn. Þú getur aukið öryggið með því að nota aukna vörn.</translation>
 <translation id="1231733316453485619">Kveikja á samstillingu?</translation>
 <translation id="1232569758102978740">Ónefnt</translation>
@@ -696,6 +698,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 með RSA-dulkóðun</translation>
 <translation id="1641113438599504367">Örugg vefnotkun</translation>
 <translation id="1641496881756082050">Fleiri aðgerðir fyrir <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 aðgangsorði í viðbót var ekki bætt við þar sem það er ekki á réttu sniði}one{{NUM_PASSWORDS} aðgangsorði í viðbót var ekki bætt við þar sem þau eru ekki á réttu sniði}other{{NUM_PASSWORDS} aðgangsorðum í viðbót var ekki bætt við þar sem þau eru ekki á réttu sniði}}</translation>
 <translation id="1642492862748815878">Tengdist <ph name="DEVICE" /> og <ph name="NUMBER_OF_DEVICES" /> Bluetooth-tækjum til viðbótar</translation>
 <translation id="1642494467033190216">Þú þarft að fjarlægja vörn rootfs og endurræsa áður en kveikt er á öðrum villuleitareiginleikum.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA undirskrift með SHA-1</translation>
@@ -1125,6 +1128,7 @@
 <translation id="2031914984822377766">Bættu við <ph name="LINK_BEGIN" />kjörtungumálum þínum fyrir vefsvæði<ph name="LINK_END" />. Efsta tungumál listans verður notað við þýðingar.</translation>
 <translation id="2033758234986231162">Ekki er hægt að halda tengingu við símann þinn. Gakktu úr skugga um að síminn sé nálægt þér, ólæstur og með kveikt á Bluetooth og Wi-Fi.</translation>
 <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="2037445849770872822">Eftirlit er sett upp fyrir þennan Google reikning. Til að setja upp fleiri barnalæsingar skaltu velja „Halda áfram“.
 
@@ -1845,6 +1849,7 @@
 <translation id="2673135533890720193">Lesa vafraferilinn þinn</translation>
 <translation id="2674764818721168631">Slökkt</translation>
 <translation id="2678063897982469759">Virkja aftur</translation>
+<translation id="2678100101831051676">Ekki er hægt að senda út.</translation>
 <translation id="268053382412112343">Ferill</translation>
 <translation id="2681124317993121768">Gestaprófílar eru ekki studdir</translation>
 <translation id="2682498795777673382">Uppfærsla frá foreldri þínu</translation>
@@ -2554,6 +2559,7 @@
 <translation id="3363202073972776113">Nýja prófílnum verður stjórnað af fyrirtækinu þínu. <ph name="BEGIN_LINK" />Nánar<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Frá kerfisstjóra: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Notaðu annaðhvort Ctrl eða Alt</translation>
+<translation id="3368586359109138591">Sæktu afrit til að nota annars staðar</translation>
 <translation id="3368922792935385530">Tengt</translation>
 <translation id="3369067987974711168">Sýna fleiri aðgerðir fyrir þessa gátt</translation>
 <translation id="3369624026883419694">Leysir úr hýsli...</translation>
@@ -2742,6 +2748,7 @@
 <translation id="3532273508346491126">Stjórnun samstillinga</translation>
 <translation id="3532521178906420528">Kemur á nettengingu…</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – slökkt á hljóði</translation>
+<translation id="3536492240554502321">Litblæsskipti</translation>
 <translation id="3537881477201137177">Hægt er að breyta þessu síðar í stillingum</translation>
 <translation id="3538066758857505094">Villa við að fjarlægja Linux. Reyndu aftur.</translation>
 <translation id="354060433403403521">Hleðslutæki</translation>
@@ -3067,6 +3074,7 @@
 <translation id="383669374481694771">Þetta eru almennar upplýsingar um þetta tæki og notkun þess (eins og stöðu rafhlöðunnar, kerfis- og forritavirkni og villur). Gögnin verða notuð til að bæta Android stýrikerfið og sumar uppsafnaðar upplýsingar geta gagnast forritum Google og samstarfsaðilum okkar, svo sem þróunaraðilum fyrir Android, við að bæta forrit og vörur.</translation>
 <translation id="3838085852053358637">Ekki tókst að hlaða viðbót</translation>
 <translation id="3838486795898716504">Fleiri <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Bættu vistuðum aðgangsorðum við Google aðgangsorðastjórnun</translation>
 <translation id="383891835335927981">Aðdráttur hefur ekki verið aukinn eða minnkaður á neinum vefsvæðum</translation>
 <translation id="3839509547554145593">Kveikja á flettihröðun músar</translation>
 <translation id="3839516600093027468">Koma alltaf í veg fyrir að <ph name="HOST" /> sjái klippiborðið</translation>
@@ -3879,6 +3887,7 @@
 <translation id="4617019240346358451">Endurhladdu síðunni til að nota „<ph name="EXTENSION_NAME" />“</translation>
 <translation id="4617270414136722281">Valkostir viðbótar</translation>
 <translation id="4617880081511131945">Ekki er hægt að koma á tengingu</translation>
+<translation id="4618195822946934889">Vefslóð má aðeins innihalda ASCII-stafi</translation>
 <translation id="4619564267100705184">Staðfestu hver þú ert</translation>
 <translation id="4619615317237390068">Flipar frá öðrum tækjum</translation>
 <translation id="4620809267248568679">Viðbót notar þessa stillingu.</translation>
@@ -4140,6 +4149,7 @@
 <translation id="4871568871368204250">Slökkva á samstillingu</translation>
 <translation id="4871719318659334896">Loka hópi</translation>
 <translation id="4872192066608821120">Veldu CVS-skrá til að flytja aðgangsorð inn</translation>
+<translation id="4872212987539553601">Stilla dulkóðun í tæki</translation>
 <translation id="4873312501243535625">Athugun efnisskráa</translation>
 <translation id="4876273079589074638">Hjálpaðu hugbúnaðarverkfræðingum okkar að rannsaka og lagfæra ástæðu þess að þetta hrun átti sér stað. Lýstu nákvæmum skrefum eins vel og þú getur. Lýsingin getur ekki verið of ítarleg!</translation>
 <translation id="4876895919560854374">Læsa skjánum og taka hann úr lás</translation>
@@ -5078,6 +5088,7 @@
 <translation id="5800351251499368110">Loka leit í hliðarglugga. Leit er opin í hliðarglugganum.</translation>
 <translation id="5801568494490449797">Kjörstillingar</translation>
 <translation id="5804241973901381774">Heimildir</translation>
+<translation id="5805268472388605531">Haltu lyklum á lyklaborðinu inni til að sjá áherslumerki og sérstafi</translation>
 <translation id="5805697420284793859">Gluggastjórnun</translation>
 <translation id="5806447147478173900">Heildargeymslurými sem birt vefsvæði nota: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (sjálfgefið)</translation>
@@ -5719,6 +5730,7 @@
 <translation id="642469772702851743">Eigandinn læsti þessu tæki (raðnúmer: <ph name="SERIAL_NUMBER" />).</translation>
 <translation id="6425556984042222041">Hraði talgervils</translation>
 <translation id="642729974267661262">Mega ekki spila hljóð</translation>
+<translation id="6427608534767366138">Auðkenningar staðgengilsþjóns er krafist fyrir „<ph name="NETWORK_ID" />“</translation>
 <translation id="6429384232893414837">Villa við uppfærslu</translation>
 <translation id="6430814529589430811">Base64-kóðað ASCII, stakt vottorð</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> mun setja upp sjálfvirkar uppfærslur fyrir alla notendur tölvunnar.</translation>
@@ -6439,6 +6451,7 @@
 <translation id="7093220653036489319">Skjót svör</translation>
 <translation id="7093416310351037609">Í því skyni að auka gagnaöryggi krefst fyrirtækið þitt þess að allt gjaldgengt niðurhal sé vistað á <ph name="WEB_DRIVE" /> reikningi fyrirtækisins.</translation>
 <translation id="7093866338626856921">Skiptast á gögnum við tækin sem heita: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Samþykkja beiðni um útsendingu í <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">USB-C tæki (vinstra tengi að aftan)</translation>
 <translation id="7098447629416471489">Aðrar vistaðar leitarvélar birtast hér</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Fjarlægja forrit}one{Fjarlægja forrit}other{Fjarlægja forrit}}</translation>
@@ -6539,6 +6552,7 @@
 <translation id="7212097698621322584">Sláðu inn núverandi PIN-númer til að breyta því. Ef þú veist ekki PIN-númerið þitt þarftu að endurstilla öryggislykilinn og búa svo til nýtt PIN-númer.</translation>
 <translation id="7213903639823314449">Leitarvél notuð í veffangastikunni</translation>
 <translation id="721490496276866468">Flytja inn aðgangsorð</translation>
+<translation id="7218514093816577632">Gakktu úr skugga um að kveikt sé á tilkynningum fyrir <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Við fundum marga prófíla sem hægt er að sækja. Veldu hverja þeirra þú vilt sækja áður en þú heldur áfram.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Engin léleg aðgangsorð}=1{1 lélegt aðgangsorð}one{{NUM_WEAK} lélegt aðgangsorð}other{{NUM_WEAK} léleg aðgangsorð}}</translation>
 <translation id="7220019174139618249">Ekki er hægt að flytja lykilorð út í „<ph name="FOLDER" />“</translation>
@@ -7008,6 +7022,7 @@
 <translation id="7664620655576155379">Óstutt Bluetooth-tæki: „<ph name="DEVICE_NAME" />“.</translation>
 <translation id="7665082356120621510">Taka frá stærð</translation>
 <translation id="7665369617277396874">Bæta við reikningi</translation>
+<translation id="766635563210446220">Ekki er hægt að flytja inn aðgangsorð. Athugaðu <ph name="FILENAME" /> og gakktu úr skugga um að skráin sé á réttu sniði. <ph name="BEGIN_LINK" />Nánar<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Skilaðu <ph name="DEVICE_TYPE" /> tækinu innan {NUM_WEEKS} viku}one{Skilaðu <ph name="DEVICE_TYPE" /> tækinu innan {NUM_WEEKS} viku}other{Skilaðu <ph name="DEVICE_TYPE" /> tækinu innan {NUM_WEEKS} vikna}}</translation>
 <translation id="7668423670802040666">Í Aðgangsorðastjórnun Google fyrir <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Aðgengiseiginleikar auðvelda notkun tækisins. Veldu tímasetninguna neðst á skjánum til að opna flýtistillingarnar.</translation>
@@ -7539,6 +7554,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{myndskeið}one{# myndskeið}other{# myndskeið}}</translation>
 <translation id="8143442547342702591">Ógilt forrit</translation>
 <translation id="8143609395536282994">Svona geturðu stjórnað gögnunum þínum:</translation>
+<translation id="8145170459658034418">Minnissparnaður</translation>
 <translation id="8146177459103116374">Ef þú hefur þegar skráð þig í þessu tæki geturðu <ph name="LINK2_START" />skráð þig inn sem fyrirliggjandi notandi<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Bættu við kjörtungumálum og raðaðu þeim í forgangsröð. Vefsvæði birtast á kjörtungumálum sé þess kostur. Þessar kjörstillingar eru samstilltar vafrastillingunum. <ph name="BEGIN_LINK_LEARN_MORE" />Nánar<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Innskráning mistókst. Hafðu samband við kerfisstjóra eða reyndu aftur.</translation>
@@ -7598,6 +7614,7 @@
 <translation id="8198456017687137612">Útsendingarflipi</translation>
 <translation id="8199300056570174101">Eiginleikar netkerfis (þjónustu) og tækis</translation>
 <translation id="8200772114523450471">Halda áfram</translation>
+<translation id="8200789660596905522">Gættu þess að samþykkja útsendingarbeiðnina í <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Sláðu aðgangsorðið inn aftur til að uppfæra <ph name="DEVICE_TYPE" /> sniðið þitt.</translation>
 <translation id="8203152941016626022">Heiti tækis Nærdeilingar</translation>
 <translation id="8203732864715032075">Fáðu sendar tilkynningar og láttu muna eftir þessari tölvu fyrir Messages. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation>
@@ -7849,6 +7866,7 @@
 <translation id="844063558976952706">Alltaf á þessu vefsvæði</translation>
 <translation id="8441313165929432954">Kveikja/slökkva á tjóðrun</translation>
 <translation id="8443795068008423036">Gakktu úr skugga um að tækið sé uppfært og reyndu aftur</translation>
+<translation id="8443986842926457191">Vefslóð er lengri en 2048 stafir</translation>
 <translation id="8446884382197647889">Frekari upplýsingar</translation>
 <translation id="8447409163267621480">Hafðu Ctrl eða Alt með</translation>
 <translation id="844850004779619592">Engar skipanir fundust</translation>
@@ -7914,6 +7932,7 @@
 <translation id="851263357009351303">Leyfa <ph name="HOST" /> alltaf að sýna myndir</translation>
 <translation id="8513108775083588393">Snýst sjálft</translation>
 <translation id="8514746246728959655">Prófaðu annan öryggislykil</translation>
+<translation id="8519895319663397036">Ekki er hægt að flytja inn aðgangsorð. Skráin má ekki vera stærri en 150 KB.</translation>
 <translation id="8523493869875972733">Halda breytingum</translation>
 <translation id="8523849605371521713">Bætt við af stefnu</translation>
 <translation id="8524783101666974011">Vista kort á Google reikningnum þínum</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 27a6c35..5a5e681 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">È quasi ora di fare una pausa</translation>
 <translation id="1062628064301375934">Aiutaci a rendere il Web più privato</translation>
 <translation id="1067048845568873861">Data creazione</translation>
+<translation id="1067661089446014701">Per maggiore sicurezza, puoi criptare le password sul dispositivo prima che vengano salvate nel tuo Account Google</translation>
 <translation id="1067922213147265141">Altri servizi Google</translation>
 <translation id="1069355737714877171">Rimuovi il profilo eSIM chiamato <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Un altro programma sul computer ha aggiunto un'estensione che potrebbe modificare il funzionamento di Chrome.
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">L'amministratore consiglia un valore specifico per questa impostazione.</translation>
 <translation id="1225177025209879837">Elaborazione della richiesta in corso...</translation>
 <translation id="1227507814927581609">Autenticazione non riuscita durante la connessione a "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Impossibile trasmettere. Riprova.</translation>
 <translation id="1230417814058465809">È attiva la protezione standard. Per una maggiore sicurezza, utilizza la protezione avanzata.</translation>
 <translation id="1231733316453485619">Attivare la sincronizzazione?</translation>
 <translation id="1232569758102978740">Senza titolo</translation>
@@ -1113,6 +1115,7 @@
 <translation id="2031914984822377766">Aggiungi le tue <ph name="LINK_BEGIN" />lingue per i siti web<ph name="LINK_END" /> preferite. Per le traduzioni verrà usata la lingua in cima all'elenco.</translation>
 <translation id="2033758234986231162">Impossibile mantenere una connessione con il telefono. Assicurati che il telefono sia nelle vicinanze e sbloccato, nonché che il Bluetooth e il Wi-Fi siano attivi.</translation>
 <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="2037445849770872822">La supervisione è configurata per questo Account Google. Per configurare altre funzioni di Controllo genitori, seleziona Continua.
 
@@ -2540,6 +2543,7 @@
 <translation id="3363202073972776113">Questo nuovo profilo verrà gestito dalla tua organizzazione. <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Dal tuo amministratore: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Usa il tasto CTRL o ALT</translation>
+<translation id="3368586359109138591">Scarica una copia da utilizzare altrove</translation>
 <translation id="3368922792935385530">Connesso</translation>
 <translation id="3369067987974711168">Mostra altre azioni per questa porta</translation>
 <translation id="3369624026883419694">Risoluzione host in corso...</translation>
@@ -2728,6 +2732,7 @@
 <translation id="3532273508346491126">Gestione sincronizzazione</translation>
 <translation id="3532521178906420528">Creazione di una connessione di rete…</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - Audio disattivato</translation>
+<translation id="3536492240554502321">Rotazione tonalità</translation>
 <translation id="3537881477201137177">Le dimensioni possono essere modificate in seguito nelle Impostazioni</translation>
 <translation id="3538066758857505094">Errore durante la disinstallazione di Linux. Riprova.</translation>
 <translation id="354060433403403521">Adattatore CA</translation>
@@ -3053,6 +3058,7 @@
 <translation id="383669374481694771">Si tratta di informazioni generali su questo dispositivo e sulla relativa modalità di utilizzo, ad esempio il livello della batteria, l'attività nelle app e nel sistema e gli errori. I dati saranno utilizzati per migliorare Android e alcune informazioni aggregate saranno utili anche alle app e ai partner di Google, come ad esempio agli sviluppatori Android, che potranno migliorare i propri prodotti e le proprie app.</translation>
 <translation id="3838085852053358637">Caricamento estensione non riuscito</translation>
 <translation id="3838486795898716504">Altre <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Aggiungi le password salvate a Gestore delle password di Google</translation>
 <translation id="383891835335927981">Non è stato aumentato o diminuito lo zoom di alcun sito</translation>
 <translation id="3839509547554145593">Attiva l'accelerazione di scorrimento del mouse</translation>
 <translation id="3839516600093027468">Impedisci sempre a <ph name="HOST" /> di leggere gli appunti</translation>
@@ -4126,6 +4132,7 @@
 <translation id="4871568871368204250">Disattiva sincronizzazione</translation>
 <translation id="4871719318659334896">Chiudi gruppo</translation>
 <translation id="4872192066608821120">Per importare le password, seleziona un file CSV</translation>
+<translation id="4872212987539553601">Configura la crittografia on-device</translation>
 <translation id="4873312501243535625">Media File Checker</translation>
 <translation id="4876273079589074638">Aiuta i nostri ingegneri a effettuare accertamenti e risolvere il problema che causa l'arresto anomalo. Se puoi, elenca i passaggi esatti fornendo il maggior numero possibile di dettagli.</translation>
 <translation id="4876895919560854374">Blocco e sblocco dello schermo</translation>
@@ -6422,6 +6429,7 @@
 <translation id="7093220653036489319">Risposte rapide</translation>
 <translation id="7093416310351037609">Per la sicurezza e la protezione dei dati, la tua organizzazione richiede il salvataggio di tutti i download idonei nell'account <ph name="WEB_DRIVE" /> dell'organizzazione.</translation>
 <translation id="7093866338626856921">Scambio di dati con i dispositivi: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Accetta la richiesta di trasmissione su <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">Dispositivo USB-C (porta posteriore sinistra)</translation>
 <translation id="7098447629416471489">Altri motori di ricerca salvati saranno visualizzati qui</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Rimuovi app}other{Rimuovi app}}</translation>
@@ -6522,6 +6530,7 @@
 <translation id="7212097698621322584">Inserisci il PIN attuale per modificarlo. Se non conosci il PIN, devi reimpostare il token di sicurezza, quindi creare un nuovo PIN.</translation>
 <translation id="7213903639823314449">Motore di ricerca utilizzato nella barra degli indirizzi</translation>
 <translation id="721490496276866468">Importa password</translation>
+<translation id="7218514093816577632">Assicurati che le notifiche siano attive su <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Sono stati trovati più profili disponibili per il download. Seleziona quelli che vuoi scaricare prima di continuare.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Nessuna password inefficace}=1{1 password inefficace}other{{NUM_WEAK} password inefficaci}}</translation>
 <translation id="7220019174139618249">Impossibile esportare le password in "<ph name="FOLDER" />"</translation>
@@ -6991,6 +7000,7 @@
 <translation id="7664620655576155379">Dispositivo Bluetooth non supportato: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Riserva dimensioni</translation>
 <translation id="7665369617277396874">Aggiungi account</translation>
+<translation id="766635563210446220">Impossibile importare le password. Controlla il file <ph name="FILENAME" /> e verifica che sia formattato correttamente. <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Restituisci questo <ph name="DEVICE_TYPE" /> entro {NUM_WEEKS} settimana}other{Restituisci questo <ph name="DEVICE_TYPE" /> entro {NUM_WEEKS} settimane}}</translation>
 <translation id="7668423670802040666">In Gestore delle password di Google per l'account <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Le funzioni di accessibilità rendono il tuo dispositivo più facile da usare. Per accedere alle Impostazioni rapide, seleziona l'ora nella parte inferiore dello schermo.</translation>
@@ -7523,6 +7533,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{un video}other{# video}}</translation>
 <translation id="8143442547342702591">Applicazione non valida</translation>
 <translation id="8143609395536282994">Come puoi gestire i tuoi dati:</translation>
+<translation id="8145170459658034418">Risparmio memoria</translation>
 <translation id="8146177459103116374">Se sei già registrato sul dispositivo in uso, puoi <ph name="LINK2_START" />accedere come utente esistente<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Aggiungi e classifica le tue lingue preferite. Se possibile, i siti web verranno mostrati in queste lingue. Queste preferenze sono sincronizzate con le impostazioni del browser. <ph name="BEGIN_LINK_LEARN_MORE" />Scopri di più<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Accesso non riuscito. Contatta l'amministratore o riprova.</translation>
@@ -7582,6 +7593,7 @@
 <translation id="8198456017687137612">Trasmissione della scheda in corso…</translation>
 <translation id="8199300056570174101">Proprietà dispositivo e rete (servizio)</translation>
 <translation id="8200772114523450471">Riprendi</translation>
+<translation id="8200789660596905522">Assicurati di accettare la richiesta di trasmissione su <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Inserisci di nuovo la password per aggiornare il profilo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Nome dispositivo Condivisione nelle vicinanze</translation>
 <translation id="8203732864715032075">Ricevere notifiche e impostare come predefinita la memorizzazione di questo computer per Messaggi. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index 3b3c715..9ac6d167b 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -694,6 +694,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 RSA დაშიფვრით</translation>
 <translation id="1641113438599504367">Safe Browsing</translation>
 <translation id="1641496881756082050">სხვა ქმედებები „<ph name="NETWORK_NAME" />“-სთვის</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 სხვა პაროლის იმპორტირება ვერ მოხერხდა, რადგან მისი ფორმატი არასწორია}other{{NUM_PASSWORDS} სხვა პაროლის იმპორტირება ვერ მოხერხდა, რადგან მათი ფორმატი არასწორია}}</translation>
 <translation id="1642492862748815878">დაკავშირებულია <ph name="DEVICE" />-თან და <ph name="NUMBER_OF_DEVICES" /> სხვა Bluetooth მოწყობილობასთან</translation>
 <translation id="1642494467033190216">ძირეული დაცვის მოხსნა და გადატვირთვა საჭირო მანამ, სანამ ჩართავთ სხვა გამართვის ფუნქციებს.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA ხელმოწერა SHA-1-ით</translation>
@@ -1832,6 +1833,7 @@
 <translation id="2673135533890720193">დათვალიერების ისტორიის წაკითხვა</translation>
 <translation id="2674764818721168631">გამორთული</translation>
 <translation id="2678063897982469759">ხელახლა ჩართვა</translation>
+<translation id="2678100101831051676">ტრანსლირება ვერ ხერხდება.</translation>
 <translation id="268053382412112343">ი&amp;სტორია</translation>
 <translation id="2681124317993121768">სტუმრის პროფილები მხარდაუჭერელია</translation>
 <translation id="2682498795777673382">განახლება თქვენი მშობლისგან</translation>
@@ -3868,6 +3870,7 @@
 <translation id="4617019240346358451">„<ph name="EXTENSION_NAME" />“ რომ გამოიყენოთ, გადატვირთეთ გვერდი</translation>
 <translation id="4617270414136722281">გაფართოებების ვარიანტები</translation>
 <translation id="4617880081511131945">კავშირის დამყარება ვერ ხერხდება</translation>
+<translation id="4618195822946934889">URL უნდა შეიცავდეს მხოლოდ ASCII სიმბოლოებს</translation>
 <translation id="4619564267100705184">ვინაობის დადასტურება</translation>
 <translation id="4619615317237390068">ჩანართები სხვა მოწყობილობებიდან</translation>
 <translation id="4620809267248568679">ეს პატარამეტრი იძულებითაა დაყენებული გაფართოების მიერ.</translation>
@@ -5068,6 +5071,7 @@
 <translation id="5800351251499368110">ძიების დახურვა გვერდით პანელში. ძიება გახსნილია გვერდით პანელში.</translation>
 <translation id="5801568494490449797">პარამეტრები</translation>
 <translation id="5804241973901381774">ნებართვები</translation>
+<translation id="5805268472388605531">ხანგრძლივად დააჭირეთ კლავიატურის კლავიშებს, რომ იხილოთ აქცენტის ნიშნები და საგანგებო სიმბოლოები</translation>
 <translation id="5805697420284793859">ფანჯრების მმართველი</translation>
 <translation id="5806447147478173900">ნაჩვენები საიტების მიერ გამოყენებული მეხსიერების საერთო მოცულობა: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (ნაგულისხმევი)</translation>
@@ -5709,6 +5713,7 @@
 <translation id="642469772702851743">ეს მოწყობილობა (ს/ნ: <ph name="SERIAL_NUMBER" />) ჩაკეტილია მფლობელის მიერ.</translation>
 <translation id="6425556984042222041">ტექსტის გახმოვანების სიჩქარე</translation>
 <translation id="642729974267661262">ხმის დაკვრა დაუშვებელია</translation>
+<translation id="6427608534767366138">„<ph name="NETWORK_ID" />“-ისთვის საჭიროა ავტორიზაცია პროქსი-სერვერზე</translation>
 <translation id="6429384232893414837">განახლებისას წარმოიქმნა შეცდომა</translation>
 <translation id="6430814529589430811">Base64-დაშიფრული ASCII, ერთი სერტიფიკატი</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> დააყენებს ავტომატურ განახლებებს ამ კომპიუტერის ყველა მომხმარებლისთვის.</translation>
@@ -7843,6 +7848,7 @@
 <translation id="844063558976952706">ყოველთვის ამ საიტზე</translation>
 <translation id="8441313165929432954">ტეტერინგის ჩართვა/გათიშვა</translation>
 <translation id="8443795068008423036">დარწმუნდით, რომ თქვენი მოწყობილობა განახლებულია და ცადეთ ხელახლა</translation>
+<translation id="8443986842926457191">URL შედგება 2048-ზე მეტი სიმბოლოსგან</translation>
 <translation id="8446884382197647889">შეიტყვეთ მეტი</translation>
 <translation id="8447409163267621480">დაურთეთ Ctrl ან Alt</translation>
 <translation id="844850004779619592">ბრძანებები ვერ მოიძებნა</translation>
@@ -7908,6 +7914,7 @@
 <translation id="851263357009351303">ყოველთვის მიეცი ნება <ph name="HOST" />-ს, აჩვენოს გამოსახულებები</translation>
 <translation id="8513108775083588393">ავტომატური შეტრიალება</translation>
 <translation id="8514746246728959655">ცადეთ უსაფრთხოების სხვა გასაღები</translation>
+<translation id="8519895319663397036">პაროლების იმპორტირება ვერ მოხერხდა. ფაილის ზომა 150 კბაიტზე ნაკლები უნდა იყოს.</translation>
 <translation id="8523493869875972733">ცვლილებების შენარჩუნება</translation>
 <translation id="8523849605371521713">დამატებულია წესების მიხედვით</translation>
 <translation id="8524783101666974011">შეინახეთ ბარათები თქვენს Google ანგარიშში</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 8bae776..84766ee 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Үзіліс уақыты келіп қалды</translation>
 <translation id="1062628064301375934">Интернетті оңашалауға көмектесіңіз</translation>
 <translation id="1067048845568873861">Жасалған</translation>
+<translation id="1067661089446014701">Қосымша қауіпсіздік үшін, құрылғыдағы құпия сөздерді Google аккаунтына сақтамас бұрын шифрлауға болады.</translation>
 <translation id="1067922213147265141">Басқа Google қызметтері</translation>
 <translation id="1069355737714877171">"<ph name="PROFILE_NAME" />" атты eSIM профилін жою</translation>
 <translation id="1070377999570795893">Компьютеріңіздегі басқа бір бағдарлама жаңа кеңейтім қосты, ол Chrome жұмысын өзгертуі мүмкін.
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">Әкімшіңіз бұл параметр үшін арнайы мәнді ұсынады.</translation>
 <translation id="1225177025209879837">Сұрау өңделуде…</translation>
 <translation id="1227507814927581609">"<ph name="DEVICE_NAME" />" құрылғысына қосылу кезінде аутентификация сәтсіз аяқталды.</translation>
+<translation id="1227993798763400520">Трансляцияланбады. Қайталап көріңіз.</translation>
 <translation id="1230417814058465809">Стандартты қорғаныс қосулы. Қауіпсіздікті күшейту үшін мықты қорғанысты пайдаланыңыз.</translation>
 <translation id="1231733316453485619">Синхрондау қосылсын ба?</translation>
 <translation id="1232569758102978740">Атаусыз</translation>
@@ -645,7 +647,7 @@
 <translation id="1612019740169791082">Контейнеріңіз диск көлемін өзгертуге конфигурацияланбаған. Linux үшін сақталған орын көлемін реттеу үшін сақтық көшірме жасап, жаңа контейнерді іске қосыңыз да, деректерді қалпына келтіріңіз.</translation>
 <translation id="1613019471223620622"><ph name="USERNAME" /> атты пайдаланушының <ph name="DOMAIN" /> сайтына арналған құпия сөзін көрсету</translation>
 <translation id="1613149688105334014">Chrome қолданбаларының ескі нұсқалары 2022 жылдың желтоқсанынан кейін ашылмайды. Жаңа нұсқаның қолжетімділігін тексеруіңізге болады.</translation>
-<translation id="1614511179807650956">Мобильдік деректер лимиті аяқталған болуы мүмкін. Қосымша деректер сатып алу үшін <ph name="NAME" /> іске қосу порталына кіріңіз.</translation>
+<translation id="1614511179807650956">Мобильдік интернет лимиті аяқталған болуы мүмкін. Қосымша деректер сатып алу үшін <ph name="NAME" /> іске қосу порталына кіріңіз.</translation>
 <translation id="161460670679785907">Телефоныңызды анықтау мүмкін емес</translation>
 <translation id="1615433306336820465">Қауіпсіздік кілтінде сақталған кіру деректерін басқаруға болады.</translation>
 <translation id="1616206807336925449">Бұл кеңейтім арнайы рұқсаттарды қажет етпейді.</translation>
@@ -1109,6 +1111,7 @@
 <translation id="2031914984822377766">Қалаған <ph name="LINK_BEGIN" />веб-сайт тілдерін<ph name="LINK_END" /> қосыңыз. Аударма үшін тізімде ең бірінші тұрған тіл қолданылады.</translation>
 <translation id="2033758234986231162">Телефоныңызбен байланыс орнату мүмкін емес. Телефоныңыз жақын тұрғанын, оның құлпы ашық және Bluetooth, Wi-Fi функциясы қосулы екеніне көз жеткізіңіз.</translation>
 <translation id="2034346955588403444">Басқа Wi-Fi желісін қосу</translation>
+<translation id="2035211704574173780">Сұр түс</translation>
 <translation id="203574396658008164">Құлып экранынан жазба жазуды қосу</translation>
 <translation id="2037445849770872822">Осы Google аккаунты үшін қадағалау параметрлері реттелді. Басқа да ата-ана бақылауы параметрлерін реттеу үшін "Жалғастыру" түймесін таңдаңыз.
 
@@ -1929,7 +1932,7 @@
 <translation id="2770465223704140727">Тізімнен алып тастау</translation>
 <translation id="2770690685823456775">Құпия сөздерді басқа қалтаға экспорттаңыз</translation>
 <translation id="2770929488047004208">Монитор ажыратымдылығы</translation>
-<translation id="2771268254788431918">Мобильдік деректер қосылды</translation>
+<translation id="2771268254788431918">Мобильдік интернет қосылды</translation>
 <translation id="2771816809568414714">Ірімшік</translation>
 <translation id="2772936498786524345">Sneaky</translation>
 <translation id="2773288106548584039">Бұрынғы браузерді қолдау</translation>
@@ -2535,6 +2538,7 @@
 <translation id="3363202073972776113">Бұл жаңа профильді ұйымыңыз басқарады. <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Әкімшіден: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Ctrl не Alt пернесі пайдаланылуы керек</translation>
+<translation id="3368586359109138591">Көшірмені жүктеп алып, басқа жерде пайдалану</translation>
 <translation id="3368922792935385530">Қосылған</translation>
 <translation id="3369067987974711168">Осы порт үшін басқа да әрекеттерді көрсету</translation>
 <translation id="3369624026883419694">Хост анықталуда…</translation>
@@ -2723,6 +2727,7 @@
 <translation id="3532273508346491126">Синхрондауды басқару</translation>
 <translation id="3532521178906420528">Желі байланысы орнатылып жатыр...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – дыбысы өшірілді</translation>
+<translation id="3536492240554502321">Реңкті айналдыру</translation>
 <translation id="3537881477201137177">Мұны кейінірек "Параметрлер" бөлімінен өзгертуге болады.</translation>
 <translation id="3538066758857505094">Linux жүйесін орнату кезінде қате шықты. Қайталап көріңіз.</translation>
 <translation id="354060433403403521">АТ адаптері</translation>
@@ -3048,6 +3053,7 @@
 <translation id="383669374481694771">Бұл – осы құрылғы мен оны пайдалану (мысалы, батарея зарядының деңгейі, жүйе мен қолданбаларды пайдалану тарихы, қателер) туралы жалпы ақпарат. Мәлімет Android жүйесін жақсарту үшін пайдаланылады, ал кейбір ақпарат Google қолданбаларына және Android әзірлеушілері сияқты серіктестерге көмектеседі әрі олардың қолданбалары мен өнімдерін жақсарта түседі.</translation>
 <translation id="3838085852053358637">Кеңейтім жүктелмеді</translation>
 <translation id="3838486795898716504"><ph name="PAGE_TITLE" /> атауы қойылған басқа беттер</translation>
+<translation id="3838487810283346084">Сақталған құпия сөздерді Google Құпия сөз менеджеріне қосу</translation>
 <translation id="383891835335927981">Ешқандай сайт ұлғайтылмады не кішірейтілмеді</translation>
 <translation id="3839509547554145593">Тінтуірді айналдыру жылдамдығын арттыруды қосу</translation>
 <translation id="3839516600093027468"><ph name="HOST" /> хостының буферді көруіне әрқашан тыйым салу</translation>
@@ -4119,6 +4125,7 @@
 <translation id="4871568871368204250">Синхрондауды өшіру</translation>
 <translation id="4871719318659334896">Топты жабу</translation>
 <translation id="4872192066608821120">Құпия сөздерді импорттау үшін CSV файлын таңдаңыз.</translation>
+<translation id="4872212987539553601">Құрылғыда шифрлау процесін реттеу</translation>
 <translation id="4873312501243535625">Media File Checker</translation>
 <translation id="4876273079589074638">Инженерлерге бұзылу мәселелерін зерттеуге және жөндеуге көмектесіңіз. Мүмкін болса, әрекеттеріңізді ретімен сипаттаңыз. Ұсақ-түйектің өзі маңызды!</translation>
 <translation id="4876895919560854374">Экранды құлыптау және құлпын ашу</translation>
@@ -4636,7 +4643,7 @@
 <translation id="5401426944298678474">Сайт жазылымынан бас тарту</translation>
 <translation id="5401851137404501592">Жалғастыру үшін <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> аты-жөніңізді, электрондық мекенжайыңызды және профиль суретіңізді осы сайтпен бөліседі.</translation>
 <translation id="5402367795255837559">Брайль</translation>
-<translation id="5402815541704507626">Мобильдік деректер арқылы жаңа нұсқаны жүктеу</translation>
+<translation id="5402815541704507626">Мобильдік интернет арқылы жаңа нұсқаны жүктеу</translation>
 <translation id="540296380408672091"><ph name="HOST" /> хостындағы cookie файлдарын әрқашан бөгеу</translation>
 <translation id="5404740137318486384">Ауыстырғышты немесе пернетақта пернесін "<ph name="ACTION" />" әрекетіне тағайындау үшін оны басыңыз.
 Бұл әрекетке бірнеше ауыстырғыш тағайындауға болады.</translation>
@@ -4856,7 +4863,7 @@
 <translation id="5595485650161345191">Мекенжайды өзгерту</translation>
 <translation id="5596627076506792578">Қосымша опциялар</translation>
 <translation id="5600348067066185292">Орнату бірнеше қарапайым қадамнан тұрады. Компьютерге өзгерістер енгізбестен бұрын, оларды растаудың тағы бір мүмкіндігі болады.</translation>
-<translation id="5600706100022181951">Жаңа нұсқа мобильдік деректердің <ph name="UPDATE_SIZE_MB" /> МБ пайдалану арқылы жүктеп алынады. Жалғастырғыңыз келе ме?</translation>
+<translation id="5600706100022181951">Жаңа нұсқаны жүктеп алуға мобильдік интернеттен <ph name="UPDATE_SIZE_MB" /> МБ алынады. Жалғастырғыңыз келе ме?</translation>
 <translation id="5601503069213153581">PIN</translation>
 <translation id="5601823921345337195">MIDI құрылғыларына қосылуға рұқсаты жоқтар</translation>
 <translation id="5602765853043467355">Осы құрылғыдан алынған бетбелгілерді, тарихты, құпия сөздерді, т.б. өшіру</translation>
@@ -4895,7 +4902,7 @@
 <translation id="5635312199252507107">Арнайы сайттарда рұқсат ету</translation>
 <translation id="563535393368633106">Кіруден бұрын сұрау (ұсынылған)</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> пайдалану үшін алдымен бірнеше секундта автоматты түрде ашылатын <ph name="LINK_START" />желінің кіру бетіне кіріңіз<ph name="LINK_END" />. Олай болмаса, желіні пайдалану мүмкін емес.</translation>
-<translation id="5637476008227280525">Мобильдік деректерді қосу</translation>
+<translation id="5637476008227280525">Мобильдік интернетті қосу</translation>
 <translation id="5638309510554459422"><ph name="BEGIN_LINK" />Chrome Web Store<ph name="END_LINK" /> дүкенінен кеңейтімдер мен тақырыптар табу</translation>
 <translation id="5639549361331209298">Осы бетті қайта жүктеу, қосымша опцияларды көру үшін ұстап тұрыңыз</translation>
 <translation id="5640133431808313291">Қауіпсіздік кілттерін басқару</translation>
@@ -6412,6 +6419,7 @@
 <translation id="7093220653036489319">Жылдам жауаптар</translation>
 <translation id="7093416310351037609">Деректің қауіпсіздігі үшін ұйым барлық жүктеп алынған файлдың өзінің <ph name="WEB_DRIVE" /> аккаунтына сақталуын талап етеді.</translation>
 <translation id="7093866338626856921">Деректерді мына құрылғылармен ауыстыру: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655"><ph name="DEVICE_NAME" /> құрылғысындағы трансляциялау рұқсатын қабылдаңыз.</translation>
 <translation id="7098389117866926363">USB-C құрылғысы (артқы сол жақ порты)</translation>
 <translation id="7098447629416471489">Басқа сақталған іздеу жүйелері осында шығады</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Қолданбаны жою}other{Қолданбаларды жою}}</translation>
@@ -6512,6 +6520,7 @@
 <translation id="7212097698621322584">Қолданыстағы PIN кодын өзгерту үшін оны енгізіңіз. PIN кодыңызды білмесеңіз, оны бастапқы күйге қайтарып, жаңа PIN кодын жасаңыз.</translation>
 <translation id="7213903639823314449">Мекенжай жолағында пайдаланылатын іздеу жүйесі</translation>
 <translation id="721490496276866468">Құпия сөздерді импорттау</translation>
+<translation id="7218514093816577632"><ph name="DEVICE_NAME" /> құрылғысында хабарландырулар қосулы екенін тексеріңіз.</translation>
 <translation id="7219473482981809164">Жүктеп алуға болатын бірнеше профиль таптық. Жалғастырмас бұрын, жүктеп алғыңыз келетіндерін таңдаңыз.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Оңай құпия сөздер жоқ.}=1{1 оңай құпия сөз бар.}other{{NUM_WEAK} оңай құпия сөз бар.}}</translation>
 <translation id="7220019174139618249">Құпия сөздер "<ph name="FOLDER" />" қалтасына экспортталмады</translation>
@@ -6981,6 +6990,7 @@
 <translation id="7664620655576155379">Қолдау көрсетілмеген Bluetooth құрылғысы: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Сақтау өлшемі</translation>
 <translation id="7665369617277396874">Аккаунт қосу</translation>
+<translation id="766635563210446220">Құпия сөздерді импорттау мүмкін емес. <ph name="FILENAME" /> файлын тексеріп, оның дұрыс форматталғанына көз жеткізіңіз. <ph name="BEGIN_LINK" />Толық ақпарат<ph name="END_LINK" /></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="7668648754769651616">Арнайы мүмкіндіктермен құрылғыңызды оңай пайдалана аласыз. Жылдам параметрлерге өту үшін экраныңыздың төменгі жағынан уақытты таңдаңыз.</translation>
@@ -7028,7 +7038,7 @@
 <translation id="7705276765467986571">Бетбелгі үлгісін жүктеу мүмкін емес.</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7707108266051544351">Бұл сайттың қозғалыс датчиктерін пайдалануына тыйым салынды.</translation>
-<translation id="7707922173985738739">Мобильдік деректерді пайдалану</translation>
+<translation id="7707922173985738739">Мобильдік интернетті пайдалану</translation>
 <translation id="7709152031285164251">Сәтсіз – <ph name="INTERRUPT_REASON" /></translation>
 <translation id="7710568461918838723">&amp;Трансляциялау…</translation>
 <translation id="7711900714716399411">Телефоныңызды компьютерге жалғау үшін USB кабелін пайдаланыңыз. Телефоныңыз жалғанып тұрған болса, оны ажыратыңыз да, қайта жалғаңыз.</translation>
@@ -7510,6 +7520,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{бейне}other{# бейне}}</translation>
 <translation id="8143442547342702591">Жарамсыз қолданба</translation>
 <translation id="8143609395536282994">Дерек қалай басқарылады:</translation>
+<translation id="8145170459658034418">Жад үнемдегіш</translation>
 <translation id="8146177459103116374">Бұл құрылғыда әлдеқашан тіркелген болсаңыз, <ph name="LINK2_START" />бұрыннан бар пайдаланушы ретінде кіруіңізге<ph name="LINK2_END" /> болады.</translation>
 <translation id="8146287226035613638">Қалаған тілдерді қосып, жіктеңіз. Мүмкін болған кезде веб-сайттар өзіңізге ыңғайлы тілде көрсетіледі. Бұл параметрлер браузер параметрлерімен синхрондалады. <ph name="BEGIN_LINK_LEARN_MORE" />Толығырақ<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Кіре алмадыңыз. Әкімшіңізге хабарласыңыз немесе әрекетті қайталаңыз.</translation>
@@ -7569,6 +7580,7 @@
 <translation id="8198456017687137612">Қойынды трансляциялануда</translation>
 <translation id="8199300056570174101">Желі (қызмет) және құрылғы сипаттары</translation>
 <translation id="8200772114523450471">Жалғастыру</translation>
+<translation id="8200789660596905522"><ph name="DEVICE_NAME" /> құрылғысындағы трансляциялау рұқсатын қабылдағаныңызды тексеріңіз.</translation>
 <translation id="8202160505685531999"><ph name="DEVICE_TYPE" /> профилін жаңарту үшін, құпия сөзіңізді қайта енгізіңіз.</translation>
 <translation id="8203152941016626022">Nearby Share құрылғысының атауы</translation>
 <translation id="8203732864715032075">Телефонға келген хабарлар туралы осы компьютерде хабарландыру алу. <ph name="LINK_BEGIN" />Толығырақ ақпарат<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index 1fa5b054..c705d3d 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -6740,6 +6740,7 @@
 <translation id="7404065585741198296">ទូរសព្ទរបស់អ្នកជាមួយខ្សែ USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{ការពិនិត្យ​សុវត្ថិភាព​បានដំណើរការ 1 ម៉ោងមុន}other{ការពិនិត្យ​សុវត្ថិភាព​បានដំណើរការ {NUM_HOURS} ម៉ោងមុន}}</translation>
 <translation id="740624631517654988">ការលេចឡើងត្រូវបានរារាំង</translation>
+<translation id="7406912950279255498">មុខងារ​បញ្ច្រាស​ពណ៌</translation>
 <translation id="7407430846095439694">នាំចូល និង​ចងភ្ជាប់</translation>
 <translation id="7407504355934009739">មនុស្សភាគច្រើន​ទប់ស្កាត់ការជូនដំណឹង​ពីគេហទំព័រនេះ</translation>
 <translation id="740810853557944681">បញ្ចូល​ម៉ាស៊ីនមេបោះពុម្ព</translation>
@@ -7689,6 +7690,7 @@
     <ph name="BEGIN_PARAGRAPH3" />ម្ចាស់អាច​គ្រប់គ្រង​មុខងារនេះ​នៅក្នុង​ការកំណត់ &gt; កម្រិតខ្ពស់ &gt; ផ្ញើ​ការវិភាគ និង​ទិន្នន័យ​ប្រើប្រាស់​ទៅ Google ដោយ​ស្វ័យប្រវត្តិ។<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />ប្រសិនបើ​ការកំណត់​សកម្មភាព​កម្មវិធី និង​គេហទំព័រ​បន្ថែម​​ត្រូវបាន​បើកសម្រាប់កូនរបស់អ្នក ទិន្នន័យនេះ​អាចត្រូវ​បានរក្សាទុក​នៅក្នុង​គណនី Google របស់គាត់។ ស្វែងយល់​បន្ថែម​អំពី​ការកំណត់​ទាំងនេះ និង​របៀប​កែសម្រួល​ពួកវា​តាមរយៈ families.google.com ។<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">វិញ្ញាបនបត្រ​កម្មវិធីភ្ញៀវគ្មានសុពលភាព</translation>
+<translation id="8270162672241199380">កម្មវិធី​ដំឡើង Steam</translation>
 <translation id="827097179112817503">បង្ហាញប៊ូតុងទំព័រដើម</translation>
 <translation id="8271268254812352141">ទទួលបាននិយមន័យ ការបកប្រែ ឬការបំប្លែងខ្នាត នៅពេលអ្នកចុចកណ្ដុរខាងស្ដាំ ឬចុចអត្ថបទឱ្យជាប់។ ប្ដូរភាសាបកប្រែតាមបំណងនៅក្នុង<ph name="LINK_BEGIN" />ភាសាគេហទំព័រ<ph name="LINK_END" />។</translation>
 <translation id="8271379370373330993">ជំហានពីរបីបន្ទាប់គឺសម្រាប់អ្នក ដែលជាមាតាបិតា។ អ្នកអាចឱ្យ <ph name="DEVICE_TYPE" /> ទៅកូនវិញ បន្ទាប់ពីរៀបចំគណនីហើយ។</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 7b59f918..d101812 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Тыныгууга убакыт келип калды</translation>
 <translation id="1062628064301375934">Интернетте купуялык деңгээлин жогорулатууга жардам бериңиз</translation>
 <translation id="1067048845568873861">Түзүлгөн</translation>
+<translation id="1067661089446014701">Кошумча коопсуздук үчүн, Google аккаунтуңузга сакталганга чейин сырсөздөрдү түзмөгүңүздө шифрлеңиз</translation>
 <translation id="1067922213147265141">Башка Google кызматтары</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> деп аталган eSIM-картанын профилин өчүрүү</translation>
 <translation id="1070377999570795893">Компьютериңиздеги программалардын бири Chrome'дун ишин өзгөртө турган кеңейтүүнү кошуп койду.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Администраторуңуз бул жөндөө үчүн өзгөчө маани сунуштайт.</translation>
 <translation id="1225177025209879837">Сурам иштелүүдө…</translation>
 <translation id="1227507814927581609">"<ph name="DEVICE_NAME" />" туташып жатканда аныктык текшерилбей калды.</translation>
+<translation id="1227993798763400520">Тышкы экранга чыгарылбай калды. Кайталап көрүңүз.</translation>
 <translation id="1230417814058465809">Стандарттуу коргоо күйүк. Анын ордуна жакшыртылган коргоону колдонуңуз.</translation>
 <translation id="1231733316453485619">Шайкештирүү күйгүзүлсүнбү?</translation>
 <translation id="1232569758102978740">Аты жок</translation>
@@ -695,6 +697,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 RSA шифрлөөсү менен</translation>
 <translation id="1641113438599504367">Коопсуз серептөө</translation>
 <translation id="1641496881756082050"><ph name="NETWORK_NAME" /> боюнча башка аракеттер</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Туура эмес форматталгандыктан, 1 сырсөз импорттолгон жок}other{Туура эмес форматталгандыктан, {NUM_PASSWORDS} сырсөз импорттолгон жок}}</translation>
 <translation id="1642492862748815878"><ph name="DEVICE" /> жана дагы <ph name="NUMBER_OF_DEVICES" /> Bluetooth түзмөгүнө туташты</translation>
 <translation id="1642494467033190216">Башка мүчүлүштүктөрдү оңдоо өзгөчөлүктөрүн иштетүүдөн мурун, тамыр коргоосун алып салып, түзмөктү өчүрүп-күйгүзүшүңүз керек.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA Колтамгасы SHA-1 менен</translation>
@@ -1124,6 +1127,7 @@
 <translation id="2031914984822377766">Вебсайт үчүн артыкчылыктуу <ph name="LINK_BEGIN" />тилдериңизди<ph name="LINK_END" /> кошуңуз. Тексттер тизменин башында турган тилге которулат.</translation>
 <translation id="2033758234986231162">Телефонуңузга туташпай калды. Телефонуңуз жакын жерде турганын жана анын кулпусу ачык болуп, Bluetooth менен Wi-Fi күйгүзүлгөнүн текшериңиз.</translation>
 <translation id="2034346955588403444">Башка WiFi тармагын кошуу</translation>
+<translation id="2035211704574173780">Боз түстөгү фон</translation>
 <translation id="203574396658008164">Кулпуланган экран менен эскертме жазууну иштетүү</translation>
 <translation id="2037445849770872822">Бул Google аккаунтун көзөмөлдөө жөндөлдү. Ата-эненин көзөмөлүн улантып жөндөө үчүн "Улантуу" баскычын басыңыз.
 
@@ -1844,6 +1848,7 @@
 <translation id="2673135533890720193">Серептөө таржымалыңызды окуңуз</translation>
 <translation id="2674764818721168631">Өчүк</translation>
 <translation id="2678063897982469759">Кайра иштетүү</translation>
+<translation id="2678100101831051676">Тышкы экранга чыгарылбай жатат.</translation>
 <translation id="268053382412112343">Та&amp;ржымал</translation>
 <translation id="2681124317993121768">Конок профилдер колдоого алынбайт</translation>
 <translation id="2682498795777673382">Ата-энең параметрлерди өзгөрттү</translation>
@@ -2553,6 +2558,7 @@
 <translation id="3363202073972776113">Бул жаңы профилди уюмуңуз тескейт. <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Администраторуңуздан билдирүү: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Же Ctrl, же Alt колдонулсун</translation>
+<translation id="3368586359109138591">Башка жерде колдонуу үчүн көчүрмөсүн жүктөп алыңыз</translation>
 <translation id="3368922792935385530">Туташты</translation>
 <translation id="3369067987974711168">Бул оюкчага тиешелүү башка аракеттерди көрүү</translation>
 <translation id="3369624026883419694">Хост чечилүүдө…</translation>
@@ -2741,6 +2747,7 @@
 <translation id="3532273508346491126">Шайкештирүүнү башкаруу</translation>
 <translation id="3532521178906420528">Тармакка туташтырылууда...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – Аудионун үнү өчүрүлгөн</translation>
+<translation id="3536492240554502321">Кошумча түстү буруу</translation>
 <translation id="3537881477201137177">Аны кийинчерээк Жөндөөлөрдөн өзгөртүп алсаңыз болот</translation>
 <translation id="3538066758857505094">Linux'ту чыгарып салуу учурундагы ката. Кайталап көрүңүз.</translation>
 <translation id="354060433403403521">Дүрмөттөөчү түзмөк</translation>
@@ -3066,6 +3073,7 @@
 <translation id="383669374481694771">Бул жерде түзмөгүңүз жана анын колдонулушу (мисалы, батареянын деңгээли, тутум жана колдонмонун иштетилиши жана каталар) тууралуу жалпы маалымат берилген. Маалымат Android кызматтарын жакшыртууга жана айрым маалыматтар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да колдонмолорун жана кызматтарын жакшыртууга жардам берет.</translation>
 <translation id="3838085852053358637">Кеңейтүү жүктөлбөй калды</translation>
 <translation id="3838486795898716504">Дагы <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Сакталган сырсөздөрдү Сырсөздөрдү башкаргычка кошуу</translation>
 <translation id="383891835335927981">Эч кандай сайттар чоңойтуп/кичирейтилген жок</translation>
 <translation id="3839509547554145593">Чычканды ылдамдаткычты иштетүү</translation>
 <translation id="3839516600093027468"><ph name="HOST" /> башкы түйүнүнө алмашуу буфери эч качан көрүнбөсүн</translation>
@@ -3878,6 +3886,7 @@
 <translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" кеңейтүүсүн колдонуу үчүн баракты кайрадан жүктөңүз</translation>
 <translation id="4617270414136722281">Кеңейтүү параметрлери</translation>
 <translation id="4617880081511131945">Туташкан жок</translation>
+<translation id="4618195822946934889">URL дареги ASCII символдорунан гана турушу керек</translation>
 <translation id="4619564267100705184">Өзүңүз экениңизди ырастаңыз</translation>
 <translation id="4619615317237390068">Башка түзмөктөрдөгү өтмөктөр</translation>
 <translation id="4620809267248568679">Бул жөндөөнү кеңейтүү күчүнө киргизген.</translation>
@@ -4139,6 +4148,7 @@
 <translation id="4871568871368204250">Шайкештирүүнү өчүрүү</translation>
 <translation id="4871719318659334896">Топту жабуу</translation>
 <translation id="4872192066608821120">Сырсөздөрдү импорттоо үчүн CSV файлын тандаңыз</translation>
+<translation id="4872212987539553601">Түзмөктө шифрлөөнү тууралоо</translation>
 <translation id="4873312501243535625">Медиа файл текшергич</translation>
 <translation id="4876273079589074638">Бул бузулууну изилдеп, аны оңдоо үчүн биздин инженерлерге жардам бериңиз. Эгер мүмкүн болсо, кадамдарды так тизмелеп бериңиз. Бардык маалымат маанилүү!</translation>
 <translation id="4876895919560854374">Экранды кулпулоо жана кулпусун ачуу</translation>
@@ -5077,6 +5087,7 @@
 <translation id="5800351251499368110">Капталдагы тилкеде издөө барагын жабуу. Капталдагы тилкеде издөө барагы ачык.</translation>
 <translation id="5801568494490449797">Жеке жөндөөлөр</translation>
 <translation id="5804241973901381774">Уруксаттар</translation>
+<translation id="5805268472388605531">Басым белгилерин жана атайын символдорду көрүү үчүн баскычтоптогу баскычтарды коё бербей басып туруңуз</translation>
 <translation id="5805697420284793859">Терезе башкаргычы</translation>
 <translation id="5806447147478173900">Көрсөтүлгөн сайттар ээлеген жалпы орун: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Демейки)</translation>
@@ -5718,6 +5729,7 @@
 <translation id="642469772702851743">Бул түзмөк (SN: <ph name="SERIAL_NUMBER" />) ээси тарабынан кулпуланган.</translation>
 <translation id="6425556984042222041">Кеп синтезаторунун ылдамдыгы</translation>
 <translation id="642729974267661262">Үн чыгара албайт</translation>
+<translation id="6427608534767366138">"<ph name="NETWORK_ID" />" үчүн прокси аутентификациясы талап кылынат</translation>
 <translation id="6429384232893414837">Жаңыртуу катасы</translation>
 <translation id="6430814529589430811">Base64-шифрленген ASCII, жалгыз тастыктама</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> бул компьютердин бардык колдонуучулары үчүн автоматтык жаңыртууларды орнотот.</translation>
@@ -6436,6 +6448,7 @@
 <translation id="7093220653036489319">Ыкчам жооптор</translation>
 <translation id="7093416310351037609">Дайын-даректерди коргоо үчүн уюмуңуз жүктөлүп алынган жарамдуу нерселердин баарын уюмуңуздун <ph name="WEB_DRIVE" /> аккаунтуна сактоону талап кылат.</translation>
 <translation id="7093866338626856921">Төмөнкүчө аталган түзмөктөр менен дайындарды алмашуу: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Тышкы экранга чыгаруу сурамын <ph name="DEVICE_NAME" /> түзмөгүндө кабыл алыңыз.</translation>
 <translation id="7098389117866926363">USB-C түзмөгү (аркасындагы сол жактагы оюкча)</translation>
 <translation id="7098447629416471489">Башка сакталган издөө каражаттары бул жерде көрүнөт</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Колдонмону өчүрүү}other{Колдонмолорду өчүрүү}}</translation>
@@ -6536,6 +6549,7 @@
 <translation id="7212097698621322584">Аны өзгөртүү үчүн учурдагы PIN кодуңузду киргизиңиз. Эгер PIN кодду билбесеңиз, коопсуздук ачкычын баштапкы абалга келтирип, анан жаңы PIN код түзүшүңүз керек.</translation>
 <translation id="7213903639823314449">Дарек тилкесинде колдонулган издөө каражаты</translation>
 <translation id="721490496276866468">Сырсөздөрдү өткөрүп алуу</translation>
+<translation id="7218514093816577632"><ph name="DEVICE_NAME" /> түзмөгүңүздө билдирмелер күйгүзүлгөнүн текшериңиз.</translation>
 <translation id="7219473482981809164">Жүктөлүп алына турган бир нече профиль табылды. Улантуудан мурун, жүктөп алгыңыз келгендерин тандаңыз.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Начар сырсөздөр жок}=1{1 начар сырсөз бар}other{{NUM_WEAK} начар сырсөз бар}}</translation>
 <translation id="7220019174139618249">Сырсөздөр "<ph name="FOLDER" />" папкасына экспорттолбой жатат</translation>
@@ -7005,6 +7019,7 @@
 <translation id="7664620655576155379">Колдоого алынбаган Bluetooth түзмөгү: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Бир калыптагы өлчөмдү калтыруу</translation>
 <translation id="7665369617277396874">Аккаунт кошуу</translation>
+<translation id="766635563210446220">Сырсөздөр өткөрүлүп алынган жок. <ph name="FILENAME" /> файлы туура форматталганын текшериңиз. <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></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">Google Сырсөздөрдү башкаргычта (<ph name="ACCOUNT" /> аккаунту)</translation>
 <translation id="7668648754769651616">Түзмөгүңүздүн колдонулушун жеңилдетүү үчүн Атайын мүмкүнчүлүктөрдү иштетиңиз. Ыкчам параметрлерге өтүү үчүн экрандын ылдый жагындагы убакытты тандаңыз.</translation>
@@ -7536,6 +7551,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{видео}other{# видео}}</translation>
 <translation id="8143442547342702591">Жараксыз колдонмо</translation>
 <translation id="8143609395536282994">Маалыматыңызды кантип башкара аласыз:</translation>
+<translation id="8145170459658034418">Эстутумду үнөмдөгүч</translation>
 <translation id="8146177459103116374">Эгер бул түзмөктө буга чейин катталган болсоңуз, <ph name="LINK2_START" />учурдагы колдонуучу катары кире<ph name="LINK2_END" /> аласыз.</translation>
 <translation id="8146287226035613638">Тандаган тилдериңизди кошуп жана иреттеңиз. Мүмкүн болгон учурда вебсайттар ошол тилдерде көрүнөт. Бул параметрлер серепчиңиздин жөндөөлөрү менен шайкештирилет. <ph name="BEGIN_LINK_LEARN_MORE" />Кеңири маалымат<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Аккаунтка кирүү ишке ашкан жок. Администраторуңузга кайрылып же кайра аракет кылып көрүңүз.</translation>
@@ -7595,6 +7611,7 @@
 <translation id="8198456017687137612">Өтмөктү тышкы экранга чыгаруу</translation>
 <translation id="8199300056570174101">Тармактын (кызматтын) жана түзмөктүн касиеттери</translation>
 <translation id="8200772114523450471">Улантуу</translation>
+<translation id="8200789660596905522">Тышкы экранга чыгаруу сурамын <ph name="DEVICE_NAME" /> түзмөгүндө кабыл алышыңыз керек.</translation>
 <translation id="8202160505685531999"><ph name="DEVICE_TYPE" /> профилиңизди жаңыртуу үчүн сырсөзүңүздү кайра киргизиңиз.</translation>
 <translation id="8203152941016626022">Nearby Share түзмөгүнүн аталышы</translation>
 <translation id="8203732864715032075">Телефондогу билдирүүлөр тууралуу билдирмелерди көрсөтүү. <ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation>
@@ -7846,6 +7863,7 @@
 <translation id="844063558976952706">Ушул сайтта ар дайым</translation>
 <translation id="8441313165929432954">Байланыш түйүнүн иштетүү/өчүрүү</translation>
 <translation id="8443795068008423036">Түзмөгүңүздү жаңыртып, кайра аракет кылыңыз</translation>
+<translation id="8443986842926457191">URL дареги 2048 символдон ашып кетти</translation>
 <translation id="8446884382197647889">Көбүрөөк билүү</translation>
 <translation id="8447409163267621480">Же Ctrl, же Alt камтылсын</translation>
 <translation id="844850004779619592">Буйруктар табылган жок</translation>
@@ -7911,6 +7929,7 @@
 <translation id="851263357009351303">Сүрөттөрдү көрсөтүү үчүн, <ph name="HOST" /> ар дайыма уруксат берилсин</translation>
 <translation id="8513108775083588393">Авто буруу</translation>
 <translation id="8514746246728959655">Башка коопсуздук ачкычын колдонуп көрүңүз</translation>
+<translation id="8519895319663397036">Сырсөздөр өткөрүлүп алынган жок. Файлдын өлчөмү 150 Кб чейин болушу керек.</translation>
 <translation id="8523493869875972733">Өзгөрүүлөр сакталсын</translation>
 <translation id="8523849605371521713">Ишкана саясаты тарабынан кошулду</translation>
 <translation id="8524783101666974011">Карталарды Google аккаунтуңузга сактап коюңуз</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 4d52034..ec26bd1 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -695,6 +695,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 ດ້ວຍການໃສ່ລະຫັດ RSA</translation>
 <translation id="1641113438599504367">Safe Browsing</translation>
 <translation id="1641496881756082050">ຄຳສັ່ງເພີ່ມເຕີມສຳລັບ <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{ບໍ່ໄດ້ນຳເຂົ້າ 1 ລະຫັດຜ່ານເນື່ອງຈາກຮູບແບບຂອງມັນບໍ່ຖືກຕ້ອງ.}other{ບໍ່ໄດ້ນຳເຂົ້າ {NUM_PASSWORDS} ລະຫັດຜ່ານເນື່ອງຈາກຮູບແບບຂອງມັນບໍ່ຖືກຕ້ອງ.}}</translation>
 <translation id="1642492862748815878">ເຊື່ອມຕໍ່ຫາ <ph name="DEVICE" /> ແລະ ອີກ <ph name="NUMBER_OF_DEVICES" /> ອຸປະກອນ Bluetooth ແລ້ວ</translation>
 <translation id="1642494467033190216">ການ​ເອົາ​ການ​ປົກ​ປ້ອງ rootfs ອອກ ແລະ​ຈຳ​ເປັນ​ຕ້ອງ​ມີ​ການ​ປິດ​ເປີດ​ໃໝ່ ກ່ອນ​ເປີດ​ໃຊ້​ງານ​ຄຸນສົມບັດ​ການ​ແກ້​ໄຂ​ບັນ​ຫາ​ອື່ນ.</translation>
 <translation id="1643072738649235303">ລາຍເຊັນ X9.62 ECDSA ພ້ອມກັບ SHA-1</translation>
@@ -1846,6 +1847,7 @@
 <translation id="2673135533890720193">ອ່ານປະຫວັດການທ່ອງເວັບຂອງທ່ານ</translation>
 <translation id="2674764818721168631">ປິດ</translation>
 <translation id="2678063897982469759">ເປີດໃຊ້ງານຄືນໃໝ່​</translation>
+<translation id="2678100101831051676">ບໍ່ສາມາດສົ່ງສັນຍານໄດ້.</translation>
 <translation id="268053382412112343">ປະຫວັດ</translation>
 <translation id="2681124317993121768">ບໍ່ຮອງຮັບໂປຣໄຟລ໌ແຂກ</translation>
 <translation id="2682498795777673382">ການອັບເດດຈາກພໍ່ແມ່ຂອງທ່ານ</translation>
@@ -3883,6 +3885,7 @@
 <translation id="4617019240346358451">ໂຫຼດໜ້າໃໝ່ເພື່ອໃຊ້ "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">ຕົວເລືອກສ່ວນຂະຫຍາຍ</translation>
 <translation id="4617880081511131945">ບໍ່ສາມາດເລີ່ມການເຊື່ອມຕໍ່ໄດ້</translation>
+<translation id="4618195822946934889">URL ສາມາດມີຕົວອັກສອນ ASCII ໄດ້ເທົ່ານັ້ນ</translation>
 <translation id="4619564267100705184">ຢັ້ງຢືນວ່າແມ່ນທ່ານແທ້</translation>
 <translation id="4619615317237390068">ແຖບຈາກອຸປະກອນອື່ນ</translation>
 <translation id="4620809267248568679">ການຕັ້ງຄ່ານີ້ຖືກບັງຄັບໂດຍສ່ວນຂະຫຍາຍ.</translation>
@@ -5082,6 +5085,7 @@
 <translation id="5800351251499368110">ປິດການຊອກຫາໃນແຜງຄວບຄຸມດ້ານຂ້າງ. ເປີດການຊອກຫາໃນແຜງຄວບຄຸມດ້ານຂ້າງແລ້ວ.</translation>
 <translation id="5801568494490449797">ຄວາມມັກ</translation>
 <translation id="5804241973901381774">ການ​ອະ​ນຸ​ຍາດ</translation>
+<translation id="5805268472388605531">ກົດປຸ່ມແປ້ນພິມຄ້າງໄວ້ເພື່ອເບິ່ງເຄື່ອງໝາຍສຳນຽງ ແລະ ຕົວອັກສອນພິເສດ</translation>
 <translation id="5805697420284793859">ຕົວຈັດການໜ້າຈໍ</translation>
 <translation id="5806447147478173900">ການໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນທັງໝົດຕາມເວັບໄຊທີ່ສະແດງ: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (ຕາມຄ່າເລີ່ມຕົ້ນ)</translation>
@@ -5723,6 +5727,7 @@
 <translation id="642469772702851743">ອຸປະກອນນີ້ (SN: <ph name="SERIAL_NUMBER" />) ຖືກລັອກໄວ້ໂດຍເຈົ້າຂອງ.</translation>
 <translation id="6425556984042222041">ອັດຕາການປ່ຽນຂໍ້ຄວາມເປັນສຽງເວົ້າ</translation>
 <translation id="642729974267661262">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຫຼິ້ນສຽງ</translation>
+<translation id="6427608534767366138">ຕ້ອງໃຊ້ການພິສູດຢືນຢັນພຣັອກຊີສຳລັບ "<ph name="NETWORK_ID" />"</translation>
 <translation id="6429384232893414837">ອັບເດດຜິດພາດ</translation>
 <translation id="6430814529589430811">Base64-encoded ASCII, ໃບຢັ້ງຢືນດ່ຽວ</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> ຈະຕັ້ງການອັບເດດອັດຕະໂນມັດໃຫ້ກັບຜູ້ໃຊ້ຄອມພິວເຕີນີ້ທຸກຄົນ.</translation>
@@ -7857,6 +7862,7 @@
 <translation id="844063558976952706">ຢູ່ໃນເວັບໄຊນີ້ສະເໝີ</translation>
 <translation id="8441313165929432954">ເປີດ/ປິດການປ່ອຍສັນຍານ</translation>
 <translation id="8443795068008423036">ກະລຸນາກວດສອບວ່າອຸປະກອນຂອງທ່ານອັບເດດແລ້ວ ແລະ ລອງໃໝ່ອີກເທື່ອໜຶ່ງ</translation>
+<translation id="8443986842926457191">URL ແມ່ນຫຼາຍກວ່າ 2048 ຕົວອັກສອນ.</translation>
 <translation id="8446884382197647889">ຮຽນ​ຮູ້​ເພີ່ມ​ເຕີມ</translation>
 <translation id="8447409163267621480">ລວມມີ Ctrl ຫຼື Alt</translation>
 <translation id="844850004779619592">ບໍ່ພົບຄຳສັ່ງ</translation>
@@ -7922,6 +7928,7 @@
 <translation id="851263357009351303">​ອະ​ນຸ​ຍາດ​ໃຫ້ <ph name="HOST" /> ສະ​ແດງຮູບທຸກຄັ້ງ</translation>
 <translation id="8513108775083588393">ໝຸນອັດຕະໂນມັດ</translation>
 <translation id="8514746246728959655">ລອງກະແຈຄວາມປອດໄພອື່ນ</translation>
+<translation id="8519895319663397036">ບໍ່ສາມາດນຳເຂົ້າລະຫັດຜ່ານໄດ້. ຂະໜາດໄຟລ໌ຄວນໜ້ອຍກວ່າ 150 KB.</translation>
 <translation id="8523493869875972733">ຮັກສາການປ່ຽນແປງ</translation>
 <translation id="8523849605371521713">ເພີ່ມໂດຍນະໂຍບາຍ</translation>
 <translation id="8524783101666974011">ບັນທຶກບັດຂອງທ່ານໄວ້ໃນບັນຊີ Google ຂອງທ່ານ</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index ab191704..7c8ff3e 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Tūlīt būs pārtraukums</translation>
 <translation id="1062628064301375934">Palīdziet mums uzlabot konfidencialitāti tīmeklī</translation>
 <translation id="1067048845568873861">Izveidots</translation>
+<translation id="1067661089446014701">Lai gādātu par papildu drošību, varat šifrēt paroles savā ierīcē, pirms tās tiek saglabātas jūsu Google kontā.</translation>
 <translation id="1067922213147265141">Citi Google pakalpojumi</translation>
 <translation id="1069355737714877171">Noņemt eSIM profilu <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Citā datorā instalētā programmā ir pievienots tāds paplašinājums, kura dēļ var tikt izmainīta pārlūkprogrammas Chrome darbība.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Jūsu administrators šim iestatījumam iesaka konkrētu vērtību.</translation>
 <translation id="1225177025209879837">Notiek pieprasījuma apstrāde...</translation>
 <translation id="1227507814927581609">Veidojot savienojumu ar ierīci <ph name="DEVICE_NAME" />, radās autentifikācijas kļūda.</translation>
+<translation id="1227993798763400520">Apraide neizdevās. Lūdzu, mēģiniet vēlreiz!</translation>
 <translation id="1230417814058465809">Ir ieslēgta standarta aizsardzība. Lai iegūtu lielāku drošību, izmantojiet uzlaboto aizsardzību.</translation>
 <translation id="1231733316453485619">Vai ieslēgt sinhronizāciju?</translation>
 <translation id="1232569758102978740">Bez nosaukuma</translation>
@@ -694,6 +696,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 ar RSA šifrējumu</translation>
 <translation id="1641113438599504367">Droša pārlūkošana</translation>
 <translation id="1641496881756082050"><ph name="NETWORK_NAME" />: citas darbības</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Viena cita parole netika importēta, jo tā ir nepareizi formatēta}zero{{NUM_PASSWORDS} citas paroles netika importētas, jo tās ir nepareizi formatētas}one{{NUM_PASSWORDS} cita parole netika importēta, jo tās ir nepareizi formatētas}other{{NUM_PASSWORDS} citas paroles netika importētas, jo tās ir nepareizi formatētas}}</translation>
 <translation id="1642492862748815878">Izveidots savienojums ar ierīci “<ph name="DEVICE" />” un vēl <ph name="NUMBER_OF_DEVICES" /> Bluetooth ierīcēm.</translation>
 <translation id="1642494467033190216">Lai varētu iespējot citas atkļūdošanas funkcijas, ir jānoņem rootfs aizsardzība un jāveic restartēšana.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA paraksts ar SHA-1</translation>
@@ -1114,6 +1117,7 @@
 <translation id="2031914984822377766">Pievienojiet vēlamās <ph name="LINK_BEGIN" />vietņu valodas<ph name="LINK_END" />. Saraksta augšējā valoda tiks izmantota tulkojumiem.</translation>
 <translation id="2033758234986231162">Nevar uzturēt savienojumu ar jūsu tālruni. Tālrunim ir jāatrodas tuvumā, tam jābūt atbloķētam, un tajā ir jābūt ieslēgtam Bluetooth un Wi-Fi savienojumam.</translation>
 <translation id="2034346955588403444">Pievienot citu Wi-Fi tīklu</translation>
+<translation id="2035211704574173780">Pelēktoņi</translation>
 <translation id="203574396658008164">Iespējot piezīmju pierakstīšanu bloķēšanas ekrānā</translation>
 <translation id="2037445849770872822">Šim Google kontam ir iestatīta uzraudzība. Lai iestatītu citas vecāku kontroles iespējas, atlasiet Turpināt.
 
@@ -1831,6 +1835,7 @@
 <translation id="2673135533890720193">Skatīt jūsu pārlūkošanas vēsturi</translation>
 <translation id="2674764818721168631">Izslēgts</translation>
 <translation id="2678063897982469759">Atkārtoti iespējot</translation>
+<translation id="2678100101831051676">Nevar veikt apraidi</translation>
 <translation id="268053382412112343">Vēsture</translation>
 <translation id="2681124317993121768">Viesu profili netiek atbalstīti</translation>
 <translation id="2682498795777673382">Atjauninājums no vecākiem</translation>
@@ -2540,6 +2545,7 @@
 <translation id="3363202073972776113">Šo jauno profilu pārvaldīs jūsu organizācija. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation>
 <translation id="3364986687961713424">Ziņojums no administratora: “<ph name="ADMIN_MESSAGE" />”</translation>
 <translation id="3365598184818502391">Izmantojiet taustiņu Ctrl vai Alt</translation>
+<translation id="3368586359109138591">Lejupielādējiet kopiju izmantošanai citur.</translation>
 <translation id="3368922792935385530">pievienots</translation>
 <translation id="3369067987974711168">Rādīt citas darbības ar šo portu</translation>
 <translation id="3369624026883419694">Risina saimniekdatoru...</translation>
@@ -2728,6 +2734,7 @@
 <translation id="3532273508346491126">Sinhronizācijas pārvaldība</translation>
 <translation id="3532521178906420528">Notiek tīkla savienojuma izveide...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> — izslēgta skaņa</translation>
+<translation id="3536492240554502321">Nokrāsas maiņa</translation>
 <translation id="3537881477201137177">Vēlāk varat to mainīt iestatījumos.</translation>
 <translation id="3538066758857505094">Atinstalējot Linux, radās kļūda. Lūdzu, mēģiniet vēlreiz.</translation>
 <translation id="354060433403403521">Maiņstrāvas adapteris</translation>
@@ -3053,6 +3060,7 @@
 <translation id="383669374481694771">Šī ir vispārīga informācija par šo ierīci un tās lietojumu (piemēram, par akumulatora uzlādes līmeni, sistēmas darbībām, lietotņu izmantojumu un kļūdām). Dati tiks izmantoti, lai uzlabotu Android darbību. Noteiktu apkopotu informāciju izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji, lai uzlabotu lietotnes un produktus.</translation>
 <translation id="3838085852053358637">Neizdevās ielādēt paplašinājumu</translation>
 <translation id="3838486795898716504">Citas lapas ar nosaukumu <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Pievienojiet saglabātās paroles Google paroļu pārvaldniekam.</translation>
 <translation id="383891835335927981">Nevienā vietnē nav veikta tālummaiņa.</translation>
 <translation id="3839509547554145593">Iespējot peles ritināšanas paātrinātāju</translation>
 <translation id="3839516600093027468">Vienmēr bloķēt starpliktuves satura rādīšanu vietnei <ph name="HOST" /></translation>
@@ -3864,6 +3872,7 @@
 <translation id="4617019240346358451">Atkārtoti ielādējiet lapu, lai izmantotu paplašinājumu “<ph name="EXTENSION_NAME" />”</translation>
 <translation id="4617270414136722281">Paplašinājumu opcijas</translation>
 <translation id="4617880081511131945">Nevar izveidot savienojumu</translation>
+<translation id="4618195822946934889">Vietrādī URL drīkst ietvert tikai ASCII rakstzīmes</translation>
 <translation id="4619564267100705184">Apstiprināt identitāti</translation>
 <translation id="4619615317237390068">Cilnes no citām ierīcēm</translation>
 <translation id="4620809267248568679">Šis iestatījums tiek kontrolēts, izmantojot paplašinājumu.</translation>
@@ -4125,6 +4134,7 @@
 <translation id="4871568871368204250">Sinhronizācijas izslēgšana</translation>
 <translation id="4871719318659334896">Aizvērt grupu</translation>
 <translation id="4872192066608821120">Lai importētu paroles, atlasiet CSV failu</translation>
+<translation id="4872212987539553601">Iestatiet šifrēšanu ierīcē</translation>
 <translation id="4873312501243535625">Multivides failu pārbaudītājs</translation>
 <translation id="4876273079589074638">Palīdziet mūsu inženieriem izpētīt un novērst šo avāriju. Ja varat, norādiet konkrētas darbības (jo detalizētāk, jo labāk).</translation>
 <translation id="4876895919560854374">Bloķēt un atbloķēt ekrānu</translation>
@@ -5061,6 +5071,7 @@
 <translation id="5800351251499368110">Aizvērt meklēšanas lapu sānu panelī. Meklēšanas lapa ir atvērta sānu panelī.</translation>
 <translation id="5801568494490449797">Preferences</translation>
 <translation id="5804241973901381774">Atļaujas</translation>
+<translation id="5805268472388605531">Lai skatītu uzsvara zīmes un speciālās rakstzīmes, nospiediet un turiet tastatūras taustiņus</translation>
 <translation id="5805697420284793859">Logu pārvaldnieks</translation>
 <translation id="5806447147478173900">Kopējais krātuves apjoms, ko izmanto parādītās vietnes: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (noklusējums)</translation>
@@ -5701,6 +5712,7 @@
 <translation id="642469772702851743">Šo ierīci (sērijas numurs: <ph name="SERIAL_NUMBER" />) bloķēja īpašnieks.</translation>
 <translation id="6425556984042222041">Teksta pārvēršanas runā ātrums</translation>
 <translation id="642729974267661262">Nedrīkst atskaņot skaņu</translation>
+<translation id="6427608534767366138">Tīklam “<ph name="NETWORK_ID" />” ir nepieciešama starpniekservera autentificēšana</translation>
 <translation id="6429384232893414837">Atjaunināšanas kļūda</translation>
 <translation id="6430814529589430811">Base64 kodēts ASCII, viens sertifikāts</translation>
 <translation id="6431347207794742960">Izmantojot pārlūkprogrammu <ph name="PRODUCT_NAME" />, datorā tiks iestatīti automātiskie atjauninājumi, kas būs pieejami visiem šī datora lietotājiem.</translation>
@@ -6423,6 +6435,7 @@
 <translation id="7093220653036489319">Ātrās atbildes</translation>
 <translation id="7093416310351037609">Lai aizsargātu datus, jūsu organizācija ir noteikusi, ka visas piemērotās lejupielādes ir jāsaglabā jūsu organizācijas <ph name="WEB_DRIVE" /> kontā.</translation>
 <translation id="7093866338626856921">apmainīties datiem ar šādām ierīcēm: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Pieņemiet apraides pieprasījumu savā ierīcē (<ph name="DEVICE_NAME" />)</translation>
 <translation id="7098389117866926363">USB-C ierīce (pieslēgvieta aizmugurē pa kreisi)</translation>
 <translation id="7098447629416471489">Šeit tiks parādītas citas saglabātās meklētājprogrammas.</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Noņemt lietotni}zero{Noņemt lietotnes}one{Noņemt lietotnes}other{Noņemt lietotnes}}</translation>
@@ -6523,6 +6536,7 @@
 <translation id="7212097698621322584">Ievadiet pašreizējo PIN, lai to mainītu. Ja nezināt savu PIN, būs jāatiestata drošības atslēga un pēc tam jāizveido jauns PIN.</translation>
 <translation id="7213903639823314449">Adreses joslā izmantotā meklētājprogramma.</translation>
 <translation id="721490496276866468">Importēt paroles</translation>
+<translation id="7218514093816577632">Jūsu ierīcē (<ph name="DEVICE_NAME" />) ir jābūt ieslēgtiem paziņojumiem</translation>
 <translation id="7219473482981809164">Atradām vairākus profilus, ko varat lejupielādēt. Pirms turpināt, atlasiet tos profilus, ko vēlaties lejupielādēt.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Nav nedrošu paroļu}=1{1 nedroša parole}zero{{NUM_WEAK} nedrošu paroļu}one{{NUM_WEAK} nedroša parole}other{{NUM_WEAK} nedrošas paroles}}</translation>
 <translation id="7220019174139618249">Nevar eksportēt paroles uz mapi “<ph name="FOLDER" />”.</translation>
@@ -6992,6 +7006,7 @@
 <translation id="7664620655576155379">Neatbalstīta Bluetooth ierīce: <ph name="DEVICE_NAME" />.</translation>
 <translation id="7665082356120621510">Rezervēt noteikta lieluma vietu</translation>
 <translation id="7665369617277396874">Pievienot kontu</translation>
+<translation id="766635563210446220">Nevar importēt paroles. Pārbaudiet, vai fails <ph name="FILENAME" /> ir pareizi formatēts. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{<ph name="DEVICE_TYPE" /> ierīce ir jāatdod {NUM_WEEKS} nedēļas laikā}zero{<ph name="DEVICE_TYPE" /> ierīce ir jāatdod {NUM_WEEKS} nedēļu laikā}one{<ph name="DEVICE_TYPE" /> ierīce ir jāatdod {NUM_WEEKS} nedēļas laikā}other{<ph name="DEVICE_TYPE" /> ierīce ir jāatdod {NUM_WEEKS} nedēļu laikā}}</translation>
 <translation id="7668423670802040666">Konta <ph name="ACCOUNT" /> Google paroļu pārvaldniekā</translation>
 <translation id="7668648754769651616">Pieejamības funkcijas atvieglo ierīces lietošanu. Lai piekļūtu ātrajiem iestatījumiem, ekrāna apakšdaļā atlasiet laiku.</translation>
@@ -7523,6 +7538,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{videoklips}zero{# videoklipu}one{# videoklips}other{# videoklipi}}</translation>
 <translation id="8143442547342702591">Nederīga lietojumprogramma</translation>
 <translation id="8143609395536282994">Datu pārvaldības iespējas</translation>
+<translation id="8145170459658034418">Atmiņas taupīšana</translation>
 <translation id="8146177459103116374">Ja esat jau reģistrējies šajā ierīcē, varat <ph name="LINK2_START" />pierakstīties kā esošs lietotājs<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Pievienojiet un ranžējiet vēlamās valodas. Kad vien iespējams, vietnes tiks rādītas jūsu vēlamajās valodās. Šīs preferences tiek sinhronizētas ar jūsu pārlūka iestatījumiem. <ph name="BEGIN_LINK_LEARN_MORE" />Uzziniet vairāk<ph name="END_LINK_LEARN_MORE" />.</translation>
 <translation id="8146793085009540321">Neizdevās pierakstīties. Lūdzu, sazinieties ar administratoru vai mēģiniet vēlreiz.</translation>
@@ -7582,6 +7598,7 @@
 <translation id="8198456017687137612">Apraides cilne</translation>
 <translation id="8199300056570174101">Tīklu (pakalpojumu) un ierīču rekvizīti</translation>
 <translation id="8200772114523450471">Kopsavilkums</translation>
+<translation id="8200789660596905522">Noteikti pieņemiet apraides pieprasījumu savā ierīcē (<ph name="DEVICE_NAME" />)</translation>
 <translation id="8202160505685531999">Lai atjauninātu savu <ph name="DEVICE_TYPE" /> profilu, lūdzu, atkārtoti ievadiet paroli.</translation>
 <translation id="8203152941016626022">Ierīces nosaukums funkcijai “Kopīgošana tuvumā”</translation>
 <translation id="8203732864715032075">Jums tiks sūtīti paziņojumi, un pēc noklusējuma šis dators tiks iestatīts īsziņu saņemšanai. <ph name="LINK_BEGIN" />Uzziniet vairāk<ph name="LINK_END" />.</translation>
@@ -7833,6 +7850,7 @@
 <translation id="844063558976952706">Vienmēr šajā vietnē</translation>
 <translation id="8441313165929432954">Piesaistes iespējošana/atspējošana</translation>
 <translation id="8443795068008423036">Gādājiet, lai ierīce būtu atjaunināta, un mēģiniet vēlreiz.</translation>
+<translation id="8443986842926457191">URL garums pārsniedz 2048 rakstzīmes</translation>
 <translation id="8446884382197647889">Uzziniet vairāk</translation>
 <translation id="8447409163267621480">Jāiekļauj “Ctrl” vai “Alt”</translation>
 <translation id="844850004779619592">Netika atrasta neviena komanda</translation>
@@ -7898,6 +7916,7 @@
 <translation id="851263357009351303">Vienmēr atļaut vietnei <ph name="HOST" /> rādīt attēlus</translation>
 <translation id="8513108775083588393">Pagriezt aut.</translation>
 <translation id="8514746246728959655">Pamēģiniet citu drošības atslēgu</translation>
+<translation id="8519895319663397036">Nevar importēt paroles. Faila lielums nedrīkst pārsniegt 150 KB.</translation>
 <translation id="8523493869875972733">Saglabāt izmaiņas</translation>
 <translation id="8523849605371521713">Pievienots, jo iestatīts politikā</translation>
 <translation id="8524783101666974011">Karšu saglabāšana Google kontā</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 53d54a2..7dc69e5e 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -2190,6 +2190,7 @@
 <translation id="2977480621796371840">Отстрани од групата</translation>
 <translation id="2979639724566107830">Отвори во нов прозорец</translation>
 <translation id="2981113813906970160">Прикажи голем курсор на глушец</translation>
+<translation id="2981293774053328982">Датотеката можеби содржи злонамерен софтвер што може да ги компромитира вашите лични сметки или сметките на друштвените мрежи</translation>
 <translation id="2983373101216420412">Ниво на батерија на кутијата <ph name="PERCENTAGE" /> %.</translation>
 <translation id="2985348301114641460">Да се испрати барање до администраторот за инсталирање на „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="2987620471460279764">Текст споделен од друг уред</translation>
@@ -3775,6 +3776,7 @@
 <translation id="4514610446763173167">Копче за пуштање или паузирање видео</translation>
 <translation id="451515744433878153">Отстрани</translation>
 <translation id="4515872537870654449">Контактирајте со Dell за сервисирање. Приклучокот ќе се исклучи ако вентилаторот не работи.</translation>
+<translation id="4518840066030486079">Стил на режим на копчето Shift</translation>
 <translation id="4519331665958994620">Сајтовите може да прашуваат дали да ја користат камерата</translation>
 <translation id="4519935350946509010">Грешка при поврзувањето.</translation>
 <translation id="4520385623207007473">Колачиња во употреба</translation>
@@ -3870,6 +3872,7 @@
 <translation id="4598345735110653698">Управувајте со криптографските клучеви</translation>
 <translation id="4598556348158889687">Управување со меморијата</translation>
 <translation id="4598776695426288251">Wi-Fi е достапно преку повеќе уреди</translation>
+<translation id="4600071396330666617">Број на предлози</translation>
 <translation id="4601426376352205922">Обележи како непрочитано</translation>
 <translation id="4602466770786743961">Секогаш дозволувај <ph name="HOST" /> да пристапи до камерата и микрофонот</translation>
 <translation id="4606551464649945562">Не дозволувај им на сајтовите да создаваат 3D-карта на опкружувањето или да ја следат позицијата на камерата</translation>
@@ -4316,6 +4319,7 @@
 <translation id="5043913660911154449">Или одредете го PPD на вашиот печатач <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Погрешна лозинка</translation>
 <translation id="504561833207953641">Се отвора во постојната сесија на прелистувачот.</translation>
+<translation id="5049614114599109018">Користи ја историјата на внесување</translation>
 <translation id="5051836348807686060">Проверката на правопис не е поддржана за јазиците што ги избравте</translation>
 <translation id="5052499409147950210">Изменете го сајтот</translation>
 <translation id="505347685865235222">Неименувана група - <ph name="GROUP_CONTENT_STRING" /></translation>
@@ -6742,6 +6746,7 @@
 <translation id="7404065585741198296">Вашиот телефон со USB-кабел</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Безбедносната проверка беше извршена пред 1 час}one{Безбедносната проверка беше извршена пред {NUM_HOURS} час}other{Безбедносната проверка беше извршена пред {NUM_HOURS} часа}}</translation>
 <translation id="740624631517654988">Појавниот прозорец е блокиран</translation>
+<translation id="7406912950279255498">Режим за инверзија на боите</translation>
 <translation id="7407430846095439694">Увези и врзи</translation>
 <translation id="7407504355934009739">Повеќето луѓе ги блокираат известувањата од сајтов</translation>
 <translation id="740810853557944681">Додајте сервер за печатење</translation>
@@ -7694,6 +7699,7 @@
 
     <ph name="BEGIN_PARAGRAPH4" />Ако дополнителната поставка „Активност на интернет и апликации“ е вклучена за вашето дете, податоциве може да се зачуваат на неговата сметка на Google. Дознајте повеќе за поставкиве и за нивното приспособување на families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Неважечки клиентски сертификат</translation>
+<translation id="8270162672241199380">Инсталатор на Steam</translation>
 <translation id="827097179112817503">Прикажи го копчето Дома</translation>
 <translation id="8271268254812352141">Добивајте дефиниции, преводи или конверзии на мерни единици кога ќе кликнете со десно копче или ќе допрете и задржите текст. Приспособете ги јазиците за превод во <ph name="LINK_BEGIN" />Јазици за веб-сајтови<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Родители, следните неколку чекори се за вас. Може да му го вратите <ph name="DEVICE_TYPE" /> на детето по поставувањето на сметката.</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index 8ab8598..99417e5 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -2185,6 +2185,7 @@
 <translation id="2977480621796371840">Бүлгээс хасах</translation>
 <translation id="2979639724566107830">Шинэ цонхонд нээх</translation>
 <translation id="2981113813906970160">Том хулганын заагч сумыг харуулах</translation>
+<translation id="2981293774053328982">Энэ файл таны хувийн эсвэл сошиал сүлжээний бүртгэлүүдийн мэдээллийг алдагдуулах боломжтой хортой программ агуулж байна</translation>
 <translation id="2983373101216420412">Гэрийн батарейн түвшин <ph name="PERCENTAGE" />%.</translation>
 <translation id="2985348301114641460">Таны администраторт "<ph name="EXTENSION_NAME" />"-г суулгах хүсэлтийг илгээх үү?</translation>
 <translation id="2987620471460279764">Өөр төхөөрөмжөөс хуваалцсан текст</translation>
@@ -3769,6 +3770,7 @@
 <translation id="4514610446763173167">Видеог тоглуулах эсвэл түр зогсоохын тулд асаах/унтраах</translation>
 <translation id="451515744433878153">Устгах</translation>
 <translation id="4515872537870654449">Үйлчилгээ авахын тулд Dell-тэй холбоо барина уу. Сэнс ажиллахгүй байвал холбогч унтрах болно.</translation>
+<translation id="4518840066030486079">Shift товчлуурын горимын загвар</translation>
 <translation id="4519331665958994620">Сайтууд таны камерыг ашиглахыг хүсэх боломжтой</translation>
 <translation id="4519935350946509010">Холболтын алдаа.</translation>
 <translation id="4520385623207007473">Aшиглаж буй күүки</translation>
@@ -3864,6 +3866,7 @@
 <translation id="4598345735110653698">Нууц үгнүүдийг удирдах</translation>
 <translation id="4598556348158889687">Сангийн менежмент</translation>
 <translation id="4598776695426288251">Wi-Fi олон төхөөрөмжид боломжтой байна</translation>
+<translation id="4600071396330666617">Зөвлөмжийн тоо</translation>
 <translation id="4601426376352205922">Уншаагүй гэж тэмдэглэх</translation>
 <translation id="4602466770786743961"><ph name="HOST" />-д таны камер болон микрофонд нэвтрэхийг үргэлж зөвшөөрөх</translation>
 <translation id="4606551464649945562">Сайтуудад таны эргэн тойрны 3D газрын зургийг үүсгэх эсвэл камерын хөдөлгөөнийг хянахыг үл зөвшөөрөх</translation>
@@ -4310,6 +4313,7 @@
 <translation id="5043913660911154449">Эсвэл хэвлэгчийнхээ PPD-г заах <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Буруу нууц үг</translation>
 <translation id="504561833207953641">Ашиглалтад байгаа хөтчийн харилцан үйлдэлд нээж байна.</translation>
+<translation id="5049614114599109018">Оролтын түүхийг ашиглах</translation>
 <translation id="5051836348807686060">Таны сонгосон хэл дээр зөв бичгийн дүрмийн алдаа шалгагч нь дэмжигдээгүй байна</translation>
 <translation id="5052499409147950210">Сайтыг засах</translation>
 <translation id="505347685865235222">Нэргүй бүлэг - <ph name="GROUP_CONTENT_STRING" /></translation>
@@ -6734,6 +6738,7 @@
 <translation id="7404065585741198296">USB кабелиар холбогдсон утсаараа</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Аюулгүй байдлын шалгалтыг 1 цагийн өмнө хийсэн}other{Аюулгүй байдлын шалгалтыг {NUM_HOURS} цагийн өмнө хийсэн}}</translation>
 <translation id="740624631517654988">Зар сурталчилгааг хориглосон</translation>
+<translation id="7406912950279255498">Өнгө урвуулах горим</translation>
 <translation id="7407430846095439694">Импортлох, батлах</translation>
 <translation id="7407504355934009739">Ихэнх хүн энэ сайтын мэдэгдлийг хориглодог</translation>
 <translation id="740810853557944681">Хэвлэх сервер нэмэх</translation>
@@ -7681,6 +7686,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Энэ онцлогийг эзэмшигч нь Тохиргоо &gt; Дэвшилтэт &gt; Оношилгоо болон ашиглалтын өгөгдлийг Google-д автоматаар илгээх хэсэгт хянаж болно.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Хэрэв таны хүүхдийн Веб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг тэдний Google Бүртгэлд хадгалж болзошгүй. Та эдгээр тохиргооны талаар болон эдгээрийг хэрхэн тохируулах талаарх нэмэлт мэдээллийг families.google.com-с авна уу.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Хүчингүй клиентийн гэрчилгээ</translation>
+<translation id="8270162672241199380">Steam суулгагч</translation>
 <translation id="827097179112817503">Нүүр хуудас хэсгийн товчлуурыг харуулах</translation>
 <translation id="8271268254812352141">Та баруун талыг товших эсвэл текстийг удаан дарах үедээ тодорхойлолт, орчуулга эсвэл нэгж хөрвүүлэлт аваарай. Орчуулгын хэлийг <ph name="LINK_BEGIN" />Вебсайтын хэл<ph name="LINK_END" /> хэсэгт өөрчилнө үү.</translation>
 <translation id="8271379370373330993">Эцэг эхчүүд ээ, дараагийн хэдэн алхмыг та бүхэнд зориулсан. Та бүртгэлийг тохируулж дууссаны дараа <ph name="DEVICE_TYPE" />-г хүүхдэдээ буцааж өгч болно.</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 394aaa2..e3e6e525 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Masa rehat hampir tiba</translation>
 <translation id="1062628064301375934">Bantu kami membina web yang lebih peribadi</translation>
 <translation id="1067048845568873861">Dibuat</translation>
+<translation id="1067661089446014701">Untuk keselamatan tambahan, anda boleh menyulitkan kata laluan pada peranti sebelum disimpan pada Google Account anda</translation>
 <translation id="1067922213147265141">Perkhidmatan Google yang lain</translation>
 <translation id="1069355737714877171">Alih keluar profil eSIM yang bernama <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Program lain pada komputer anda telah menambahkan sambungan yang boleh mengubah cara Chrome berfungsi.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Pentadbir anda mencadangkan nilai khusus untuk tetapan ini.</translation>
 <translation id="1225177025209879837">Memproses permintaan...</translation>
 <translation id="1227507814927581609">Pengesahan gagal semasa menyambung ke "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Gagal menghantar. Sila cuba lagi.</translation>
 <translation id="1230417814058465809">Perlindungan standard dihidupkan. Untuk mendapatkan keselamatan tambahan, gunakan perlindungan dipertingkat.</translation>
 <translation id="1231733316453485619">Hidupkan penyegerakan?</translation>
 <translation id="1232569758102978740">Tidak Bertajuk</translation>
@@ -695,6 +697,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 Dengan Penyulitan RSA</translation>
 <translation id="1641113438599504367">Penyemakan Imbas Selamat</translation>
 <translation id="1641496881756082050">Lagi tindakan untuk <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 kata laluan lain tidak diimport kerana tidak diformatkan dengan betul}other{{NUM_PASSWORDS} kata laluan lain tidak diimport kerana tidak diformatkan dengan betul}}</translation>
 <translation id="1642492862748815878">Disambungkan kepada <ph name="DEVICE" /> dan <ph name="NUMBER_OF_DEVICES" /> peranti Bluetooth yang lain</translation>
 <translation id="1642494467033190216">Pengalihan keluar perlindungan rootfs dan pemulaan semula diperlukan sebelum mendayakan ciri penyahpepijatan lain.</translation>
 <translation id="1643072738649235303">Tandatangan X9.62 ECDSA dengan SHA-1</translation>
@@ -1124,6 +1127,7 @@
 <translation id="2031914984822377766">Tambah <ph name="LINK_BEGIN" />bahasa laman web<ph name="LINK_END" /> pilihan anda. Bahasa teratas daripada senarai akan digunakan untuk terjemahan.</translation>
 <translation id="2033758234986231162">Tidak dapat mengekalkan sambungan dengan telefon anda. Pastikan telefon ada pada anda, dibuka kunci dan Bluetooth serta Wi-Fi dihidupkan.</translation>
 <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="2037445849770872822">Pengawasan ditetapkan untuk Akaun Google ini. Untuk menyediakan lebih banyak kawalan ibu bapa, pilih Teruskan.
 
@@ -1844,6 +1848,7 @@
 <translation id="2673135533890720193">Baca sejarah penyemakan anda</translation>
 <translation id="2674764818721168631">Mati</translation>
 <translation id="2678063897982469759">Dayakan semula</translation>
+<translation id="2678100101831051676">Tidak dapat menghantar.</translation>
 <translation id="268053382412112343">Se&amp;jarah</translation>
 <translation id="2681124317993121768">Profil tetamu tidak disokong</translation>
 <translation id="2682498795777673382">Kemas kini daripada ibu atau bapa anda</translation>
@@ -2553,6 +2558,7 @@
 <translation id="3363202073972776113">Profil baharu ini akan diurus oleh organisasi anda. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Daripada pentadbir anda: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Gunakan sama ada Ctrl atau Alt</translation>
+<translation id="3368586359109138591">Muat turun salinan untuk digunakan di tempat lain</translation>
 <translation id="3368922792935385530">Disambungkan</translation>
 <translation id="3369067987974711168">Tunjukkan pelbagai lagi tindakan untuk port ini</translation>
 <translation id="3369624026883419694">Menyelesaikan hos...</translation>
@@ -2741,6 +2747,7 @@
 <translation id="3532273508346491126">Pengurusan penyegerakan</translation>
 <translation id="3532521178906420528">Mewujudkan sambungan rangkaian ...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - Audio diredam</translation>
+<translation id="3536492240554502321">Putaran rona</translation>
 <translation id="3537881477201137177">Saiz boleh diubah suai kemudian dalam Tetapan</translation>
 <translation id="3538066758857505094">Ralat menyahpasang Linux. Sila cuba lagi.</translation>
 <translation id="354060433403403521">Penyesuai AC</translation>
@@ -3066,6 +3073,7 @@
 <translation id="383669374481694771">Ini merupakan maklumat umum tentang peranti ini dan cara anda menggunakan peranti ini (seperti aras bateri, aktiviti sistem dan apl serta ralat). Data ini akan digunakan untuk menambah baik Android dan sesetengah maklumat teragregat juga dapat membantu apl Google dan rakan kongsi, seperti pembangun Android, memperbaik apl dan produk mereka.</translation>
 <translation id="3838085852053358637">Gagal memuatkan sambungan</translation>
 <translation id="3838486795898716504">Lagi <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Tambahkan kata laluan yang disimpan pada Google Password Manager</translation>
 <translation id="383891835335927981">Tiada tapak yang telah dizum masuk atau keluar</translation>
 <translation id="3839509547554145593">Dayakan pemecutan penatalan tetikus</translation>
 <translation id="3839516600093027468">Sentiasa sekat <ph name="HOST" /> daripada melihat papan keratan</translation>
@@ -3878,6 +3886,7 @@
 <translation id="4617019240346358451">Muat semula halaman untuk menggunakan "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Pilihan sambungan</translation>
 <translation id="4617880081511131945">Tidak dapat mewujudkan sambungan</translation>
+<translation id="4618195822946934889">URL hanya boleh mengandungi aksara ASCII</translation>
 <translation id="4619564267100705184">Sahkan orang itu ialah anda</translation>
 <translation id="4619615317237390068">Tab daripada peranti lain</translation>
 <translation id="4620809267248568679">Tetapan ini dikuatkuasakan oleh sambungan.</translation>
@@ -4139,6 +4148,7 @@
 <translation id="4871568871368204250">Matikan penyegerakan</translation>
 <translation id="4871719318659334896">Tutup kumpulan</translation>
 <translation id="4872192066608821120">Untuk mengimport kata laluan, pilih fail CSV</translation>
+<translation id="4872212987539553601">Sediakan penyulitan pada peranti</translation>
 <translation id="4873312501243535625">Penyemak Fail Media</translation>
 <translation id="4876273079589074638">Bantu jurutera kami menyiasat dan menyelesaikan ranap ini. Senaraikan langkah sebenar jika boleh. Setiap butiran penting!</translation>
 <translation id="4876895919560854374">Kunci dan buka kunci skrin</translation>
@@ -5077,6 +5087,7 @@
 <translation id="5800351251499368110">Tutup carian pada panel sisi. Carian dibuka pada panel sisi.</translation>
 <translation id="5801568494490449797">Keutamaan</translation>
 <translation id="5804241973901381774">Kebenaran</translation>
+<translation id="5805268472388605531">Tekan &amp; tahan kunci papan kekunci untuk melihat tanda aksen dan aksara khas</translation>
 <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>
@@ -5718,6 +5729,7 @@
 <translation id="642469772702851743">Peranti ini (SN: <ph name="SERIAL_NUMBER" />) telah dikunci oleh pemiliknya.</translation>
 <translation id="6425556984042222041">Kadar teks ke pertuturan</translation>
 <translation id="642729974267661262">Tidak dibenarkan untuk memainkan bunyi</translation>
+<translation id="6427608534767366138">Pengesahan proksi diperlukan untuk "<ph name="NETWORK_ID" />"</translation>
 <translation id="6429384232893414837">Ralat kemas kini</translation>
 <translation id="6430814529589430811">Base64 terkod ASCII, sijil tunggal</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> akan menyediakan kemas kini automatik untuk semua penguna komputer ini.</translation>
@@ -6436,6 +6448,7 @@
 <translation id="7093220653036489319">Jawapan segera</translation>
 <translation id="7093416310351037609">Untuk keselamatan data, organisasi anda menghendaki semua muat turun yang layak disimpan pada akaun <ph name="WEB_DRIVE" /> organisasi anda.</translation>
 <translation id="7093866338626856921">Bertukar data dengan peranti yang bernama: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Terima permintaan Penghantaran pada <ph name="DEVICE_NAME" /> anda.</translation>
 <translation id="7098389117866926363">Peranti USB-C (port kiri di belakang)</translation>
 <translation id="7098447629416471489">Enjin carian lain yang disimpan akan kelihatan di sini</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Alih Keluar Apl}other{Alih Keluar Apl}}</translation>
@@ -6536,6 +6549,7 @@
 <translation id="7212097698621322584">Masukkan PIN semasa anda untuk menukar PIN. Jika anda tidak tahu PIN anda, anda perlu menetapkan semula kunci keselamatan, kemudian buat PIN baharu.</translation>
 <translation id="7213903639823314449">Enjin carian yang digunakan dalam bar alamat</translation>
 <translation id="721490496276866468">Import kata laluan</translation>
+<translation id="7218514093816577632">Pastikan pemberitahuan dihidupkan pada <ph name="DEVICE_NAME" /> anda.</translation>
 <translation id="7219473482981809164">Kami telah menemukan beberapa profil yang tersedia untuk dimuat turun. Pilih profil yang ingin anda muat turun sebelum meneruskan.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Tiada kata laluan lemah}=1{1 kata laluan lemah}other{{NUM_WEAK} kata laluan lemah}}</translation>
 <translation id="7220019174139618249">Tidak dapat mengeksport kata laluan ke "<ph name="FOLDER" />"</translation>
@@ -7005,6 +7019,7 @@
 <translation id="7664620655576155379">Peranti Bluetooth tidak disokong: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Saiz rizab</translation>
 <translation id="7665369617277396874">Tambah akaun</translation>
+<translation id="766635563210446220">Tidak dapat mengimport kata laluan. Semak dan pastikan <ph name="FILENAME" /> diformatkan dengan betul. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Pulangkan <ph name="DEVICE_TYPE" /> dalam masa {NUM_WEEKS} minggu}other{Pulangkan <ph name="DEVICE_TYPE" /> dalam masa {NUM_WEEKS} minggu}}</translation>
 <translation id="7668423670802040666">Dalam Pengurus Kata Laluan Google untuk <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Ciri kebolehaksesan menjadikan peranti anda lebih mudah digunakan. Untuk mengakses Tetapan Pantas, pilih masa di bahagian bawah skrin anda.</translation>
@@ -7537,6 +7552,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{satu video}other{# video}}</translation>
 <translation id="8143442547342702591">Aplikasi tidak sah</translation>
 <translation id="8143609395536282994">Cara anda dapat mengurus data anda:</translation>
+<translation id="8145170459658034418">Penyimpan Memori</translation>
 <translation id="8146177459103116374">Jika anda telah mendaftar pada peranti ini, anda boleh <ph name="LINK2_START" />log masuk sebagai pengguna sedia ada<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Tambah dan tentukan kedudukan bahasa pilihan anda. Laman web akan dipaparkan dalam bahasa pilihan anda, jika boleh. Pilihan ini disegerakkan dengan tetapan penyemak imbas anda. <ph name="BEGIN_LINK_LEARN_MORE" />Ketahui lebih lanjut<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Log masuk gagal. Sila hubungi pentadbir anda atau cuba lagi.</translation>
@@ -7596,6 +7612,7 @@
 <translation id="8198456017687137612">Menghantar tab</translation>
 <translation id="8199300056570174101">Sifat Rangkaian (Perkhidmatan) dan Peranti</translation>
 <translation id="8200772114523450471">Sambung semula</translation>
+<translation id="8200789660596905522">Pastikan anda menerima permintaan Penghantaran pada <ph name="DEVICE_NAME" /> anda.</translation>
 <translation id="8202160505685531999">Sila masukkan semula kata laluan untuk mengemaskinikan profil <ph name="DEVICE_TYPE" /> anda.</translation>
 <translation id="8203152941016626022">Nama peranti Kongsi Berdekatan</translation>
 <translation id="8203732864715032075">Hantar pemberitahuan kepada anda dan tetapkan mengingati komputer ini untuk Messages sebagai pilihan lalai. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
@@ -7848,6 +7865,7 @@
 <translation id="844063558976952706">Sentiasa hidup pada laman ini</translation>
 <translation id="8441313165929432954">Dayakan/Lumpuhkan Penambatan</translation>
 <translation id="8443795068008423036">Sila pastikan peranti anda terkini dan cuba lagi</translation>
+<translation id="8443986842926457191">URL melebihi 2048 aksara</translation>
 <translation id="8446884382197647889">Ketahui Lebih Lanjut</translation>
 <translation id="8447409163267621480">Termasuk sama ada Ctrl atau Alt</translation>
 <translation id="844850004779619592">Tiada perintah ditemukan</translation>
@@ -7913,6 +7931,7 @@
 <translation id="851263357009351303">Sentiasa benarkan <ph name="HOST" /> untuk memaparkan imej</translation>
 <translation id="8513108775083588393">Autoputar</translation>
 <translation id="8514746246728959655">Cuba kunci keselamatan lain</translation>
+<translation id="8519895319663397036">Tidak dapat mengimport kata laluan. Saiz fail hendaklah kurang daripada 150 KB.</translation>
 <translation id="8523493869875972733">Simpan Perubahan</translation>
 <translation id="8523849605371521713">Ditambahkan oleh dasar</translation>
 <translation id="8524783101666974011">Simpan kad ke Akaun Google anda</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index ffd4ad94..a6e79ae 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -6734,6 +6734,7 @@
 <translation id="7404065585741198296">USB ကြိုးဖြင့် သင့်ဖုန်း</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{ပြီးခဲ့သည့် ၁ နာရီက လုံခြုံရေးစစ်ဆေးခဲ့သည်}other{ပြီးခဲ့သည့် {NUM_HOURS} နာရီက လုံခြုံရေးစစ်ဆေးခဲ့သည်}}</translation>
 <translation id="740624631517654988">ပေါ့အာပ် ပိတ်ဆို့ထား</translation>
+<translation id="7406912950279255498">အရောင်ပြောင်းပြန်ပြုလုပ်သည့်မုဒ်</translation>
 <translation id="7407430846095439694">တင်သွင်းရန်နှင့် ချိတ်တွဲရန်</translation>
 <translation id="7407504355934009739">လူအများစုသည် ဤဝဘ်ဆိုက်မှ အကြောင်းကြားချက်များကို ပိတ်ကြသည်</translation>
 <translation id="740810853557944681">ပုံနှိပ်စက်ဆာဗာတစ်ခု ထည့်ခြင်း</translation>
@@ -7683,6 +7684,7 @@
     <ph name="BEGIN_PARAGRAPH3" />၎င်းဝန်ဆောင်မှုကို ဆက်တင်များ &gt; အဆင့်မြင့် &gt; Google သို့ ချွတ်ယွင်းချက်နှင့် အသုံးပြုမှုဒေတာများ အလိုအလျောက် ပို့ခြင်းတွင် ပိုင်ရှင်က ထိန်းချုပ်နိုင်ပါသည်။<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />သင့်ကလေးအတွက် ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ဆက်တင်ကို ဖွင့်ထားလျှင် ဤဒေတာကို သူ၏ Google အကောင့်သို့ သိမ်းနိုင်ပါသည်။ ဤဆက်တင်များနှင့် ၎င်းတို့အား မည်သို့ ပြင်ဆင်ရမည်ကို families.google.com တွင် ပိုမိုလေ့လာပါ။<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">ကလိုင်းယင့် အသိအမှတ်ပြုလက်မှတ် မမှန်ကန်ပါ</translation>
+<translation id="8270162672241199380">Steam ထည့်သွင်းသည့်ဆော့ဖ်ဝဲ</translation>
 <translation id="827097179112817503">မူလစာမျက်နှာ ခလုတ် ပြရန်</translation>
 <translation id="8271268254812352141">ညာဘက်ခလုတ်ကို နှိပ်ချိန် (သို့) စာသားကိုတို့ထိ၍ ဖိထားချိန်တွင် အဓိပ္ပာယ်ဖွင့်ဆိုချက်၊ ဘာသာပြန်ဆိုချက် (သို့) ယူနစ်ပြောင်းလဲချက်များကို ရယူနိုင်သည်။ <ph name="LINK_BEGIN" />ဝဘ်ဆိုက် ဘာသာစကားများ<ph name="LINK_END" /> တွင် ဘာသာပြန်ခြင်းဆိုင်ရာ ဘာသာစကားများကို စိတ်ကြိုက်လုပ်ပါ။</translation>
 <translation id="8271379370373330993">နောက်အဆင့်အနည်းငယ်က မိဘများအတွက် ဖြစ်ပါသည်။ အကောင့်စနစ်ထည့်သွင်းမှု ပြီးသောအခါ <ph name="DEVICE_TYPE" /> ကို ကလေးအား ပြန်ပေးနိုင်သည်။</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 4fe46fb..4eccad8e 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">विश्राम लिने समय हुनै लाग्यो</translation>
 <translation id="1062628064301375934">हामीलाई वेब अझ गोप्य बनाउन मद्दत गर्नुहोस्</translation>
 <translation id="1067048845568873861">सिर्जना गरियो</translation>
+<translation id="1067661089446014701">तपाईं आफ्ना पासवर्डहरू अझ सुरक्षित राख्न चाहनुहुन्छ भने तपाईं ती पासवर्डहरू आफ्नो डिभाइसमा इन्क्रिप्ट गरेपछि मात्र Google खातामा सेभ गर्न सक्नुहुन्छ</translation>
 <translation id="1067922213147265141">Google का अन्य सेवाहरू</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> नामक eSIM प्रोफाइल हटाउनुहोस्</translation>
 <translation id="1070377999570795893">तपाईँको कम्प्युटरमा अर्को प्रोग्रामले एउटा विस्तार थप्यो जसले Chrome को कार्य गर्ने तरिकालाई बदल्न सक्छ। <ph name="EXTENSION_NAME" /></translation>
@@ -247,6 +248,7 @@
 <translation id="1223853788495130632">तपाइँको प्रशासकले यस सेटिङकोल लागि एक तोकिएको परिणाम सिफारिस गर्छ।</translation>
 <translation id="1225177025209879837">अनुरोधलाई प्रशोधन गर्दै...</translation>
 <translation id="1227507814927581609">"<ph name="DEVICE_NAME" />" मा जडान गर्दा प्रमाणीकरण असफल भयो।</translation>
+<translation id="1227993798763400520">कास्ट गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="1230417814058465809">'मानक सुरक्षा' सक्रिय छ। अझै बढी सुरक्षित हुन 'उन्नत सुरक्षा' प्रयोग गर्नुहोस्।</translation>
 <translation id="1231733316453485619">सिंक गर्ने सुविधा सक्रिय गर्ने हो?</translation>
 <translation id="1232569758102978740">शीर्षक नभएको</translation>
@@ -689,6 +691,7 @@
 <translation id="1640283014264083726">RSA इन्क्रिप्शनको साथमा PKCS #1 MD4</translation>
 <translation id="1641113438599504367">सुरक्षित ब्राउजिङ</translation>
 <translation id="1641496881756082050"><ph name="NETWORK_NAME" /> का सम्बन्धमा गर्न सकिने थप कारबाहीहरू</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{थप एउटा पासवर्डको फर्म्याट नमिलेको हुनाले उक्त पासवर्ड इम्पोर्ट गरिएन}other{थप {NUM_PASSWORDS} वटा पासवर्डको फर्म्याट नमिलेको हुनाले ती पासवर्डहरू इम्पोर्ट गरिएनन्}}</translation>
 <translation id="1642492862748815878"><ph name="DEVICE" /> र अन्य <ph name="NUMBER_OF_DEVICES" /> वटा ब्लुटुथ डिभाइसमा कनेक्ट गरिएको छ</translation>
 <translation id="1642494467033190216">अन्य डिबगिङ सुविधाहरू सक्षम गर्नुअघि rootfs संरक्षण हटाउनु र रिस्टार्ट गर्नु आवश्यक छ।</translation>
 <translation id="1643072738649235303">SHA-1 सहितको X9.62 ECDSA हस्ताक्षर</translation>
@@ -1109,6 +1112,7 @@
 <translation id="2031914984822377766">आफूले <ph name="LINK_BEGIN" />वेबसाइट हेर्न चाहेका भाषाहरू<ph name="LINK_END" /> हाल्नुहोस्। अनुवाद गर्दा सूचीमा सबैभन्दा माथि रहेको भाषा प्रयोग गरिने छ।</translation>
 <translation id="2033758234986231162">तपाईंको फोनसँग कनेक्ट गरिराख्न सकिएन। तपाईंको फोन नजिकै छ, अनलक गरिएको छ र उक्त फोनमा ब्लुटुथ तथा Wi-Fi अन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्।</translation>
 <translation id="2034346955588403444">अन्य WiFi नेटवर्क थप्नुहोस्</translation>
+<translation id="2035211704574173780">ग्रेस्केल</translation>
 <translation id="203574396658008164">लक स्क्रिनबाटै टिपोट लिने एपलाई सक्षम पार्नुहोस्</translation>
 <translation id="2037445849770872822">यो Google खातामा सुपरिवेक्षण सेटअप गरिएको छ। थप अभिभावकीय नियन्त्रणहरू सेटअप गर्न जारी राख्नुहोस् नामक विकल्प चयन गर्नुहोस्।
 
@@ -1826,6 +1830,7 @@
 <translation id="2673135533890720193">तपाईंको ब्राउजिङ इतिहास पढ्नुहोस्</translation>
 <translation id="2674764818721168631">निष्क्रिय छ</translation>
 <translation id="2678063897982469759">पुन: सक्षम गर्नुहोस्</translation>
+<translation id="2678100101831051676">कास्ट गर्न सकिएन।</translation>
 <translation id="268053382412112343">इति&amp;हास</translation>
 <translation id="2681124317993121768">गेस्ट प्रोफाइल प्रयोग गर्न मिल्दैन</translation>
 <translation id="2682498795777673382">तपाईंका अभिभावकबाट प्राप्त अद्यावधिक</translation>
@@ -2536,6 +2541,7 @@
 <translation id="3363202073972776113">तपाईंको सङ्गठनले यो नयाँ प्रोफाइल व्यवस्थापन गर्ने छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">तपाईंका प्रशासकको सन्देश: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Ctrl वा Alt मध्ये कुनै एक प्रयोग गर्नुहोस्</translation>
+<translation id="3368586359109138591">अन्यत्र प्रयोग गर्नका लागि पासवर्डको कपी डाउनलोड गर्नुहोस्</translation>
 <translation id="3368922792935385530">जडित</translation>
 <translation id="3369067987974711168">यो पोर्टका हकमा गर्न सकिने थप कारबाहीहरू देखाउनुहोस्</translation>
 <translation id="3369624026883419694">होस्ट समाधान गर्दै...</translation>
@@ -2724,6 +2730,7 @@
 <translation id="3532273508346491126">सिंकको व्यवस्थापन</translation>
 <translation id="3532521178906420528">इन्टरनेट कनेक्ट गरिँदै …</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - अडियो म्यूट गरिएको छ</translation>
+<translation id="3536492240554502321">ह्यू रोटेसन</translation>
 <translation id="3537881477201137177">यसलाई पछि सेटिङमा गई परिमार्जन गर्न सकिने छ</translation>
 <translation id="3538066758857505094">Linux को स्थापना गर्ने क्रममा त्रुटि भयो। कृपया फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="354060433403403521">AC एड्याप्टर</translation>
@@ -3049,6 +3056,7 @@
 <translation id="383669374481694771">यो जानकारी यो डिभाइस र यसलाई प्रयोग गरिने तरिकासम्बन्धी सामान्य जानकारी (जस्तै ब्याट्रीको स्तर, प्रणाली तथा एपका गतिविधि र त्रुटिहरू) हो। यो डेटा Android डिभाइसमामा सुधार ल्याउनका लागि प्रयोग गरिने छ र केही समग्र जानकारीले Google का एप र Android का विकासकर्ताहरूलगायत यसका साझेदारहरूलाई आफ्ना एप र उत्पादनहरू अझ राम्रो बनाउन पनि मद्दत गर्ने छ।</translation>
 <translation id="3838085852053358637">विस्तार लोड गर्न सकिएन</translation>
 <translation id="3838486795898716504">थप <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">सेभ गरिएका पासवर्डहरू Google पासवर्ड म्यानेजरमा हाल्नुहोस्</translation>
 <translation id="383891835335927981">कुनै पनि साइटलाई जुम इन वा जुम आउट गरिएको छैन</translation>
 <translation id="3839509547554145593">माउस स्क्रोल हुने गति बढाउने सुविधा सक्षम पार्नुहोस्</translation>
 <translation id="3839516600093027468"><ph name="HOST" /> लाई क्लिपबोर्ड हेर्न सधैँ रोक लगाउनुहोस्</translation>
@@ -3859,6 +3867,7 @@
 <translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" प्रयोग गर्न यो पेज रिलोड गर्नुहोस्</translation>
 <translation id="4617270414136722281">विस्तार सम्बन्धी विकल्पहरू</translation>
 <translation id="4617880081511131945">कनेक्ट गर्न सकिएन</translation>
+<translation id="4618195822946934889">URL मा ASCII वर्णहरू मात्र हाल्न मिल्छ</translation>
 <translation id="4619564267100705184">यो व्यक्ति तपाईं नै हो भन्ने कुरा पुष्टि गर्नुहोस्</translation>
 <translation id="4619615317237390068">अन्य यन्त्रहरूका ट्याबहरू</translation>
 <translation id="4620809267248568679">यो सेटिङ एक विस्तारले जोड दिएको छ ।</translation>
@@ -4120,6 +4129,7 @@
 <translation id="4871568871368204250">सिंक गर्ने सुविधा निष्क्रिय पार्नुहोस्</translation>
 <translation id="4871719318659334896">समूह बन्द गर्नुहोस्</translation>
 <translation id="4872192066608821120">पासवर्डहरू इम्पोर्ट गर्न कुनै CSV फाइल चयन गर्नुहोस्</translation>
+<translation id="4872212987539553601">डिभाइसमै इन्क्रिप्ट गर्ने विधि सेटअप गर्नुहोस्</translation>
 <translation id="4873312501243535625">मिडिया फाइल परीक्षक</translation>
 <translation id="4876273079589074638">हाम्रा इन्जिनियरहरूलाई यो क्र्यासको छानबिन गर्न र त्यसलाई समाधान गर्नमा मद्दत गर्नुहोस्। सम्भव भएसम्म हरेक कदमहरू जस्ताको तस्तै सूचीबद्ध गर्नुहोस्। कुनै पनि विवरण कम महत्त्वपूर्ण हुँदैन!</translation>
 <translation id="4876895919560854374">स्क्रिनलाई लक र अनलक गर्नुहोस्</translation>
@@ -5058,6 +5068,7 @@
 <translation id="5800351251499368110">साइड प्यानलमा खोज्ने सुविधा बन्द गर्नुहोस्। साइड प्यानलमा खोज्ने सुविधा खुला छ।</translation>
 <translation id="5801568494490449797">प्राथमिकताहरू</translation>
 <translation id="5804241973901381774">अनुमतिहरू</translation>
+<translation id="5805268472388605531">उच्चारणका चिन्ह र विशेष वर्णहरू हेर्न किबोर्डका कीहरू थिचिराख्नुहोस्</translation>
 <translation id="5805697420284793859">विन्डोको प्रबन्धक</translation>
 <translation id="5806447147478173900">देखाइएका साइटहरूले प्रयोग गरेको कुल भण्डारण: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">०° (डिफल्ट)</translation>
@@ -5698,6 +5709,7 @@
 <translation id="642469772702851743">मालिकले यो डिभाइस (SN: <ph name="SERIAL_NUMBER" />) लक गर्नुभएको हो।</translation>
 <translation id="6425556984042222041">टेक्स्ट-टू-स्पिचको दर</translation>
 <translation id="642729974267661262">ध्वनि प्ले गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="6427608534767366138">"<ph name="NETWORK_ID" />" का हकमा प्रोक्सी प्रमाणीकरण गर्नु पर्ने हुन्छ</translation>
 <translation id="6429384232893414837">अद्यावधिकसम्बन्धी त्रुटि</translation>
 <translation id="6430814529589430811">आधार 64-सङ्केतन ASCII, एकल प्रमाणपत्र</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> ले यो कम्प्युटरको सबै प्रयोगकर्ताहरूको लागि स्वचालित अपडेटहरू सेटअप गर्ने छ।.</translation>
@@ -6416,6 +6428,7 @@
 <translation id="7093220653036489319">द्रुत जवाफहरू</translation>
 <translation id="7093416310351037609">तपाईंको सङ्गठनको नीतिअनुसार डाउनलोड गर्न मिल्ने फाइलहरू डाउनलोड गर्दा ती फाइलमा भएका डेटा सुरक्षित राख्ने प्रयोजनका लागि ती फाइल तपाईंको सङ्गठनको <ph name="WEB_DRIVE" /> खातामा सेभ गर्नु पर्ने हुन्छ।</translation>
 <translation id="7093866338626856921"><ph name="HOSTNAMES" />: नामको यन्त्रमार्फत डेटा सेयर गर्नुहोस्</translation>
+<translation id="7094680343477712655">आफ्नो <ph name="DEVICE_NAME" /> मा प्राप्त भएको कास्ट गर्ने अनुरोध स्वीकार गर्नुहोस्।</translation>
 <translation id="7098389117866926363">USB-C यन्त्र (पछाडिमा बाँया पोर्ट)</translation>
 <translation id="7098447629416471489">सुरक्षित गरिएका अन्य खोज इन्जिनहरू यहाँ देखापर्ने छन्</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{एप हटाउनुहोस्}other{एपहरू हटाउनुहोस्}}</translation>
@@ -6516,6 +6529,7 @@
 <translation id="7212097698621322584">यसलाई बदल्न आफ्नो हालको PIN प्रविष्टि गर्नुहोस्। तपाईंलाई आफ्नो PIN थाहा छैन भने तपाईंले सुरक्षा साँचो रिसेट गर्नु पर्छ र त्यसपछि नयाँ PIN सिर्जना गर्नु पर्छ।</translation>
 <translation id="7213903639823314449">ठेगाना पट्टीमा प्रयोग गरिने सर्च इन्जिन</translation>
 <translation id="721490496276866468">पासवर्डहरू इम्पोर्ट गर्नुहोस्</translation>
+<translation id="7218514093816577632">आफ्नो <ph name="DEVICE_NAME" /> मा सूचना प्राप्त गर्ने सुविधा अन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्।</translation>
 <translation id="7219473482981809164">हामीले डाउनलोड गर्न मिल्ने एकभन्दा बढी प्रोफाइलहरू भेट्टाएका छौँ। अगाडि बढ्नुअघि आफूले डाउनलोड गर्न चाहेका प्रोफाइलहरू चयन गर्नुहोस्।</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{कुनै पनि पासवर्ड कमजोर छैन}=1{एउटा कमजोर पासवर्ड भेटियो}other{{NUM_WEAK} वटा कमजोर पासवर्ड भेटिए}}</translation>
 <translation id="7220019174139618249">"<ph name="FOLDER" />" मा पासवर्डहरू निर्यात गर्न सकिँदैन</translation>
@@ -6985,6 +6999,7 @@
 <translation id="7664620655576155379">असमर्थित ब्लुतुथ यन्त्र: "<ph name="DEVICE_NAME" />"।</translation>
 <translation id="7665082356120621510">आकार रिजर्भ गर्नुहोस्</translation>
 <translation id="7665369617277396874">खाता थप्नुहोस्</translation>
+<translation id="766635563210446220">पासवर्ड इम्पोर्ट गर्न सकिएन। <ph name="FILENAME" /> हेर्नुहोस् र उक्त फाइल सही तरिकाले फर्म्याट गरिएको छ भन्ने कुरा पुष्टि गर्नुहोस्। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{{NUM_WEEKS} हप्ताभित्र <ph name="DEVICE_TYPE" /> फिर्ता गर्नुहोस्}other{{NUM_WEEKS} हप्ताभित्र <ph name="DEVICE_TYPE" /> फिर्ता गर्नुहोस्}}</translation>
 <translation id="7668423670802040666"><ph name="ACCOUNT" /> को Google पासवर्ड म्यानेजरमा</translation>
 <translation id="7668648754769651616">सर्वसुलभता कायम गर्ने सुविधाहरूले तपाईंको डिभाइस प्रयोग गर्न अझ सजिलो बनाउँछन्। द्रुत सेटिङ प्रयोग गर्न स्क्रिनको फेदमा रहेको समय चयन गर्नुहोस्।</translation>
@@ -7516,6 +7531,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{एउटा भिडियो}other{# वटा भिडियो}}</translation>
 <translation id="8143442547342702591">अमान्य एप</translation>
 <translation id="8143609395536282994">तपाईं आफ्नो जानकारी कसरी व्यवस्थापन गर्न सक्नुहुन्छ:</translation>
+<translation id="8145170459658034418">मेमोरी सेभर</translation>
 <translation id="8146177459103116374">यदि तपाईंले यो डिभाइसमा पहिले नै दर्ता गराउनुभएको छ भने, तपाईंले <ph name="LINK2_START" />एउटा विद्यमान प्रयोगकर्ताको रूपमा साइन इन<ph name="LINK2_END" /> गर्न सक्नुहुन्छ।</translation>
 <translation id="8146287226035613638">आफूले चाहेका भाषाहरू हाल्नुहोस् र तिनको क्रम मिलाउनुहोस्। वेबसाइटहरूले सम्भव भएसम्म तपाईंले चाहेका भाषामा सामग्री देखाउने छन्। यी प्राथमिकताहरू तपाईंको ब्राउजरका सेटिङसँग सिंक गरिन्छन्। <ph name="BEGIN_LINK_LEARN_MORE" />थप जान्नुहोस्<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">साइन इन गर्न सकिएन। कृपया आफ्नो प्रशासकलाई सम्पर्क गर्नुहोस् वा फेरि प्रयास गर्नुहोस्।</translation>
@@ -7575,6 +7591,7 @@
 <translation id="8198456017687137612">ट्याब कास्ट गरिँदै छ</translation>
 <translation id="8199300056570174101">नेटवर्क (सेवा) र डिभाइसका गुणहरू</translation>
 <translation id="8200772114523450471">रिजुमी</translation>
+<translation id="8200789660596905522">आफ्नो <ph name="DEVICE_NAME" /> मा प्राप्त भएको कास्ट गर्ने अनुरोध स्वीकार गर्न नभुल्नुहोला।</translation>
 <translation id="8202160505685531999">कृपया तपाईँको <ph name="DEVICE_TYPE" /> प्रोफाइल अद्यावधिक गर्न तपाईँको पासवर्ड फेरि हाल्नुहोस्।</translation>
 <translation id="8203152941016626022">नजिकैका डिभाइससँग सेयर गर्ने सुविधामा भएको यन्त्रको नामसम्बन्धी सेटिङ</translation>
 <translation id="8203732864715032075">सूचनाहरू प्राप्त गर्न यो कम्प्युटरको प्रयोग गर्नुका साथै यसलाई सन्देश प्रवाह गर्ने डिफल्ट कम्प्युटरका रूपमा सेट गर्नुहोस्।<ph name="LINK_BEGIN" />थप जान्नुहोस्<ph name="LINK_END" /></translation>
@@ -7826,6 +7843,7 @@
 <translation id="844063558976952706">सधैँ यो साइटमा</translation>
 <translation id="8441313165929432954">टेदरिङ अन/अफ गर्नुहोस्</translation>
 <translation id="8443795068008423036">आफ्नो डिभाइस अप टु डेट छ भन्ने कुरा सुनिश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्</translation>
+<translation id="8443986842926457191">URL मा २०४८ भन्दा बढी वर्ण प्रयोग गरिएको छ</translation>
 <translation id="8446884382197647889">थप जान्नुहोस्</translation>
 <translation id="8447409163267621480">Ctrl वा Alt कुञ्जी समावेश गर्नुहोस्</translation>
 <translation id="844850004779619592">कुनै पनि कमान्ड भेटिएन</translation>
@@ -7891,6 +7909,7 @@
 <translation id="851263357009351303">फोटो देखाउन <ph name="HOST" /> लाई सधैँ अनुमति दिनुहोस्</translation>
 <translation id="8513108775083588393">स्वतः परिक्रमा</translation>
 <translation id="8514746246728959655">कुनै अर्को सुरक्षा साँचो प्रयोग गरी हेर्नुहोस्</translation>
+<translation id="8519895319663397036">पासवर्डहरू इम्पोर्ट गर्न सकिँदैन। फाइलको आकार १५० के.बि. भन्दा सानो हुनु पर्छ।</translation>
 <translation id="8523493869875972733">परिवर्तनहरू कायम राख्नुहोस्</translation>
 <translation id="8523849605371521713">नीतिद्वारा थपिएको</translation>
 <translation id="8524783101666974011">आफ्नो Google खातामा कार्डहरू सेभ गर्नुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 572bf9ffc..8647a05d 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -2174,6 +2174,7 @@
 <translation id="2977480621796371840">Uit groep verwijderen</translation>
 <translation id="2979639724566107830">Openen in nieuw venster</translation>
 <translation id="2981113813906970160">Grote muisaanwijzer bekijken</translation>
+<translation id="2981293774053328982">Dit bestand bevat malware die misschien een risico vormt voor je persoonlijke of socialmedia-accounts.</translation>
 <translation id="2983373101216420412">Batterijniveau case: <ph name="PERCENTAGE" />%.</translation>
 <translation id="2985348301114641460">Een verzoek naar je beheerder sturen om '<ph name="EXTENSION_NAME" />' te installeren?</translation>
 <translation id="2987620471460279764">Gedeelde tekst van ander apparaat</translation>
@@ -3757,6 +3758,7 @@
 <translation id="4514610446763173167">Video schakelen tussen afspelen en pauzeren</translation>
 <translation id="451515744433878153">Verwijderen</translation>
 <translation id="4515872537870654449">Neem contact op met Dell voor service. Het dock wordt uitgezet als de ventilator niet werkt.</translation>
+<translation id="4518840066030486079">Modusstijl Shift-toets</translation>
 <translation id="4519331665958994620">Sites kunnen toegang tot je camera vragen</translation>
 <translation id="4519935350946509010">Verbindingsfout.</translation>
 <translation id="4520385623207007473">Gebruikte cookies</translation>
@@ -3852,6 +3854,7 @@
 <translation id="4598345735110653698">Toegangscodes beheren</translation>
 <translation id="4598556348158889687">Opslagbeheer</translation>
 <translation id="4598776695426288251">Wifi beschikbaar via meerdere apparaten</translation>
+<translation id="4600071396330666617">Aantal suggesties</translation>
 <translation id="4601426376352205922">Markeren als ongelezen</translation>
 <translation id="4602466770786743961"><ph name="HOST" /> altijd toegang geven tot je camera en microfoon</translation>
 <translation id="4606551464649945562">Niet toestaan dat sites een 3D-kaart van je omgeving maken of de camerapositie volgen</translation>
@@ -4297,6 +4300,7 @@
 <translation id="5043913660911154449">Of geef de PPD van je printer op. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Onjuist wachtwoord</translation>
 <translation id="504561833207953641">Wordt geopend in een bestaande browsersessie.</translation>
+<translation id="5049614114599109018">Invoergeschiedenis gebruiken</translation>
 <translation id="5051836348807686060">De spellingcontrole wordt niet ondersteund voor de talen die je hebt geselecteerd</translation>
 <translation id="5052499409147950210">Site bewerken</translation>
 <translation id="505347685865235222">Naamloze groep - <ph name="GROUP_CONTENT_STRING" /></translation>
@@ -6716,6 +6720,7 @@
 <translation id="7404065585741198296">Je telefoon met een USB-kabel</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Veiligheidscheck is 1 uur geleden uitgevoerd}other{Veiligheidscheck is {NUM_HOURS} uur geleden uitgevoerd}}</translation>
 <translation id="740624631517654988">Pop-up geblokkeerd</translation>
+<translation id="7406912950279255498">Modus voor kleurinversie</translation>
 <translation id="7407430846095439694">Importeren en binden</translation>
 <translation id="7407504355934009739">De meeste mensen blokkeren meldingen van deze site</translation>
 <translation id="740810853557944681">Een printerserver toevoegen</translation>
@@ -7663,6 +7668,7 @@
     <ph name="BEGIN_PARAGRAPH3" />De eigenaar kan deze functie beheren via Instellingen &gt; Geavanceerd &gt; Automatisch diagnostische en gebruiksgegevens naar Google sturen.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Als de instelling Aanvullende web- en app-activiteit is aangezet voor je kind, kunnen deze gegevens worden opgeslagen in het Google-account van je kind. Ga naar families.google.com voor meer informatie over deze instellingen en hoe je ze kunt aanpassen.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Ongeldig clientcertificaat</translation>
+<translation id="8270162672241199380">Steam-installatieprogramma</translation>
 <translation id="827097179112817503">Homepage-knop bekijken</translation>
 <translation id="8271268254812352141">Als je met de rechtermuisknop op tekst klikt of op tekst tikt en deze vasthoudt, kun je definities, vertalingen of eenheidsconversies opvragen. Pas de talen voor vertaling aan in <ph name="LINK_BEGIN" />Websitetalen<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">De volgende stappen zijn bedoeld voor ouders. Als het account is ingesteld, kun je de <ph name="DEVICE_TYPE" /> teruggeven aan je kind.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 2bbd7a9a..c90291b 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -694,6 +694,7 @@
 <translation id="1640283014264083726"> PKCS #1 MD4 med RSA-kryptering</translation>
 <translation id="1641113438599504367">Safe Browsing</translation>
 <translation id="1641496881756082050">Flere handlinger for <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 annet passord ble ikke importert fordi det er feilformatert}other{{NUM_PASSWORDS} andre passord ble ikke importert fordi de er feilformatert}}</translation>
 <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>
@@ -1841,6 +1842,7 @@
 <translation id="2673135533890720193">lese nettleserloggen din</translation>
 <translation id="2674764818721168631">Av</translation>
 <translation id="2678063897982469759">Aktiver på nytt</translation>
+<translation id="2678100101831051676">Kan ikke caste.</translation>
 <translation id="268053382412112343">Lo&amp;gg</translation>
 <translation id="2681124317993121768">Gjesteprofiler støttes ikke</translation>
 <translation id="2682498795777673382">Oppdatering fra forelderen din</translation>
@@ -3875,6 +3877,7 @@
 <translation id="4617019240346358451">Oppdater siden for å bruke «<ph name="EXTENSION_NAME" />»</translation>
 <translation id="4617270414136722281">Alternativer for utvidelser</translation>
 <translation id="4617880081511131945">Kan ikke opprette forbindelse</translation>
+<translation id="4618195822946934889">Nettadressen kan bare inneholde ASCII-tegn</translation>
 <translation id="4619564267100705184">Bekreft at det er deg</translation>
 <translation id="4619615317237390068">Faner fra andre enheter</translation>
 <translation id="4620809267248568679">Denne innstillingen håndheves av en utvidelse.</translation>
@@ -5074,6 +5077,7 @@
 <translation id="5800351251499368110">Lukk søket i sidepanelet. Søket er åpent i sidepanelet.</translation>
 <translation id="5801568494490449797">Innstillinger</translation>
 <translation id="5804241973901381774">Tillatelser</translation>
+<translation id="5805268472388605531">Trykk og hold på tastaturtastene for å se aksenttegn og spesialtegn</translation>
 <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>
@@ -5715,6 +5719,7 @@
 <translation id="642469772702851743">Denne enheten (SN: <ph name="SERIAL_NUMBER" />) ble låst av eieren.</translation>
 <translation id="6425556984042222041">Hastighet for tekst til tale</translation>
 <translation id="642729974267661262">Nettsteder som ikke har lov til å spille av lyd</translation>
+<translation id="6427608534767366138">Proxy-autentisering kreves for «<ph name="NETWORK_ID" />»</translation>
 <translation id="6429384232893414837">Oppdateringsfeil</translation>
 <translation id="6430814529589430811">Base64-kodede ASCII, enkelt sertifikat</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> velger automatiske oppdateringer for alle brukerne på datamaskinen.</translation>
@@ -7848,6 +7853,7 @@
 <translation id="844063558976952706">Alltid på dette nettstedet</translation>
 <translation id="8441313165929432954">Slå internettdeling av/på</translation>
 <translation id="8443795068008423036">Sørg for at enheten er oppdatert, og prøv på nytt</translation>
+<translation id="8443986842926457191">Nettadressen er lengre enn 2048 tegn</translation>
 <translation id="8446884382197647889">Les mer</translation>
 <translation id="8447409163267621480">Inkluder enten Ctrl eller Alt</translation>
 <translation id="844850004779619592">Fant ingen kommandoer</translation>
@@ -7913,6 +7919,7 @@
 <translation id="851263357009351303">Tillat alltid <ph name="HOST" /> å vise bilder</translation>
 <translation id="8513108775083588393">Autorotasjon</translation>
 <translation id="8514746246728959655">Prøv en annen sikkerhetsnøkkel</translation>
+<translation id="8519895319663397036">Kan ikke importere passordene. Filstørrelsen må være under 150 kB.</translation>
 <translation id="8523493869875972733">Behold endringene</translation>
 <translation id="8523849605371521713">Lagt til som følge av retningslinjer</translation>
 <translation id="8524783101666974011">Lagre kort i Google-kontoen din</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index 5edd2dc..9f0e46e 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -6719,6 +6719,7 @@
 <translation id="7404065585741198296">ଏକ USB କେବୁଲ୍ ସହ ଆପଣଙ୍କ ଫୋନ୍</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{ସୁରକ୍ଷା ଯାଞ୍ଚ 1 ଘଣ୍ଟା ପୂର୍ବେ ଚାଲିଥିଲା}other{ସୁରକ୍ଷା ଯାଞ୍ଚ {NUM_HOURS} ଘଣ୍ଟା ପୂର୍ବେ ଚାଲିଥିଲା}}</translation>
 <translation id="740624631517654988">ପପ୍‍-ଅପ୍ ବ୍ଲକ୍ କରାଯାଇଛି</translation>
+<translation id="7406912950279255498">କଲର ଇନଭର୍ସନ ମୋଡ</translation>
 <translation id="7407430846095439694">ଇମ୍ପୋର୍ଟ ଏବଂ ଆବଦ୍ଧ କରନ୍ତୁ</translation>
 <translation id="7407504355934009739">ଏହି ସାଇଟ୍‌ର ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଅଧିକାଂଶ ଲୋକ ବ୍ଲକ୍ କରିଥାନ୍ତି</translation>
 <translation id="740810853557944681">ଏକ ପ୍ରିଣ୍ଟ ସର୍ଭର୍ ଯୋଗ କରନ୍ତୁ</translation>
@@ -7666,6 +7667,7 @@
     <ph name="BEGIN_PARAGRAPH3" />ସେଟିଂସ୍ &gt; ଉନ୍ନତ &gt; ସ୍ଵଚାଳିତ ଭାବେ Googleକୁ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଓ ବ୍ୟବହାର ପୂର୍ଣ୍ଣ ଡାଟା ପଠାଇବାର ବିକଳ୍ପକୁ ଯାଇ ମାଲିକ ଏହି ସୁବିଧାକୁ ନିୟନ୍ତ୍ରଣ କରିପାରିବେ।<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />ଯଦି ଆପଣଙ୍କ ପିଲାମାନଙ୍କ ପାଇଁ ଆପଣଙ୍କର ଅତିରିକ୍ତ ୱେବ୍ ଓ ଆପ୍ ଗତିବିଧି ସେଟିଂ ଚାଲୁ ଅଛି, ତେବେ ଏହି ଡାଟା ସେମାନଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ କରାଯାଇପାରେ। ଏହି ସେଟିଂସ୍ ଏବଂ ସେଗୁଡ଼ିକୁ families.google.comରେ କିପରି ଆଡ୍‌ଜଷ୍ଟ କରାଯାଏ, ଏସବୁ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ।<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">ଅବୈଧ କ୍ଲାଏଣ୍ଟ ସାର୍ଟିଫିକେଟ୍</translation>
+<translation id="8270162672241199380">ଷ୍ଟିମ ଇନଷ୍ଟଲର</translation>
 <translation id="827097179112817503">ହୋମ୍‌ ବଟନ୍ ଦେଖାନ୍ତୁ</translation>
 <translation id="8271268254812352141">ଯେତେବେଳେ ଆପଣ ଟେକ୍ସଟରେ ଡାହାଣ-କ୍ଲିକ୍ କରନ୍ତି କିମ୍ବା ଏହାକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତି, ସେତେବେଳେ ସଂଜ୍ଞା, ଅନୁବାଦ ବା ୟୁନିଟ୍ କନଭର୍ସନଗୁଡ଼ିକ ପାଆନ୍ତୁ। <ph name="LINK_BEGIN" />ୱେବସାଇଟର ଭାଷାଗୁଡ଼ିକ<ph name="LINK_END" />ରେ ଅନୁବାଦ ଭାଷାଗୁଡ଼ିକୁ କଷ୍ଟମାଇଜ୍ କରନ୍ତୁ।</translation>
 <translation id="8271379370373330993">ବାପାମା, ପରବର୍ତ୍ତୀ ଷ୍ଟେପଗୁଡ଼ିକ ଆପଣଙ୍କ ପାଇଁ ଅଟେ। ଆକାଉଣ୍ଟ ସେଟ୍ ଅପ୍ ହେବା ପରେ ଆପଣ ପିଲାକୁ <ph name="DEVICE_TYPE" /> ଫେରାଇ ପାରିବେ।</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 0854c351..f0215b9 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -2282,6 +2282,7 @@
 <translation id="3090819949319990166">Nie można skopiować zewnętrznego pliku CRX jako <ph name="TEMP_CRX_FILE" />.</translation>
 <translation id="3090871774332213558">Sparowano „<ph name="DEVICE_NAME" />”</translation>
 <translation id="3093714882666365141">Nie zezwalaj witrynom na instalowanie modułów do obsługi płatności</translation>
+<translation id="3093958632721393232">Włączaj tylko wtedy, gdy bateria jest słaba</translation>
 <translation id="3094141017404513551">Spowoduje to oddzielenie Twoich danych przeglądania od danych użytkownika <ph name="EXISTING_USER" /></translation>
 <translation id="3095871294753148861">Zakładki, hasła i inne dane przeglądarki są zsynchronizowane z kontem głównym.</translation>
 <translation id="3099836255427453137">{NUM_EXTENSIONS,plural, =1{1 potencjalnie niebezpieczne rozszerzenie zostało wyłączone. Możesz je też usunąć.}few{{NUM_EXTENSIONS} potencjalnie niebezpieczne rozszerzenia zostały wyłączone. Możesz je też usunąć.}many{{NUM_EXTENSIONS} potencjalnie niebezpiecznych rozszerzeń zostało wyłączonych. Możesz je też usunąć.}other{{NUM_EXTENSIONS} potencjalnie niebezpiecznego rozszerzenia zostało wyłączone. Możesz je też usunąć.}}</translation>
@@ -4999,6 +5000,7 @@
 <translation id="5747552184818312860">Wygasa</translation>
 <translation id="5747785204778348146">Deweloperska – niestabilna</translation>
 <translation id="5747809636523347288">&amp;Wklej i otwórz <ph name="URL" /></translation>
+<translation id="5748137879145720682">Włączaj, gdy komputer jest odłączony od zasilania</translation>
 <translation id="5751345516399502412">Sprawdź gotowość do obsługi tetheringu</translation>
 <translation id="5755022574660047665">wspomnień ze Zdjęć Google</translation>
 <translation id="5756163054456765343">C&amp;entrum pomocy</translation>
@@ -7634,6 +7636,7 @@
 <translation id="8248381369318572865">Dostęp do mikrofonu i analizowanie Twojej mowy</translation>
 <translation id="8248887045858762645">Wskazówka dotycząca Chrome</translation>
 <translation id="8249048954461686687">Folder OEM</translation>
+<translation id="8249239468199142122">Oszczędzanie baterii</translation>
 <translation id="8249615410597138718">Wyślij na swoje urządzenia</translation>
 <translation id="8250210000648910632">Brak dostępnego miejsca</translation>
 <translation id="8251441930213048644">Odśwież teraz</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 3a049641..d5b92d48 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -6744,6 +6744,7 @@
 <translation id="7404065585741198296">Seu smartphone usando um cabo USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{A confirmação de segurança foi executada há 1 hora}one{A confirmação de segurança foi executada há {NUM_HOURS} hora}other{A confirmação de segurança foi executada há {NUM_HOURS} horas}}</translation>
 <translation id="740624631517654988">Pop-up bloqueado</translation>
+<translation id="7406912950279255498">Modo de inversão de cores</translation>
 <translation id="7407430846095439694">Importar e vincular</translation>
 <translation id="7407504355934009739">A maior parte das pessoas bloqueia as notificações deste site</translation>
 <translation id="740810853557944681">Adicionar um servidor de impressão</translation>
@@ -7694,6 +7695,7 @@
     <ph name="BEGIN_PARAGRAPH3" />O proprietário pode controlar esse recurso em "Configurações" &gt; "Avançado" &gt; "Enviar automaticamente dados de uso e diagnóstico ao Google".<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Se a configuração "Atividade na Web e de apps" adicional estiver ativada para seu filho, esses dados poderão ser salvos na Conta do Google dele. Saiba mais sobre essas configurações e como ajustá-las em families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Certificado do cliente inválido</translation>
+<translation id="8270162672241199380">Instalador do Steam</translation>
 <translation id="827097179112817503">Mostrar botão "Página inicial"</translation>
 <translation id="8271268254812352141">Veja definições, traduções ou conversões de unidades ao clicar com o botão direito do mouse no texto ou tocar nele e mantê-lo pressionado. Personalize os idiomas da tradução em <ph name="LINK_BEGIN" />Idiomas de sites<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Pai/mãe, as próximas etapas precisam ser feitas por você. Devolva o <ph name="DEVICE_TYPE" /> para a criança depois de terminar a configuração da conta.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 63583fd..97fe897 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -2175,6 +2175,7 @@
 <translation id="2977480621796371840">Remover do grupo</translation>
 <translation id="2979639724566107830">Abrir numa nova janela</translation>
 <translation id="2981113813906970160">Mostrar cursor grande do rato</translation>
+<translation id="2981293774053328982">Este ficheiro contém software malicioso que pode comprometer as suas contas pessoais ou de redes sociais</translation>
 <translation id="2983373101216420412">Nível da bateria da caixa: <ph name="PERCENTAGE" />%.</translation>
 <translation id="2985348301114641460">Pretende enviar um pedido ao seu administrador para instalar a extensão "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="2987620471460279764">Texto partilhado de outro dispositivo</translation>
@@ -3759,6 +3760,7 @@
 <translation id="4514610446763173167">Ativar/desativar vídeo para reprodução ou pausa.</translation>
 <translation id="451515744433878153">Remover</translation>
 <translation id="4515872537870654449">Contacte a Dell para obter assistência. A estação de ancoragem será encerrada se a ventoinha não estiver a funcionar.</translation>
+<translation id="4518840066030486079">Estilo do modo com tecla Shift</translation>
 <translation id="4519331665958994620">Os sites podem solicitar a utilização da câmara</translation>
 <translation id="4519935350946509010">Erro de ligação.</translation>
 <translation id="4520385623207007473">Cookies em utilização</translation>
@@ -3854,6 +3856,7 @@
 <translation id="4598345735110653698">Gerir chaves de acesso</translation>
 <translation id="4598556348158889687">Gestão de armazenamento</translation>
 <translation id="4598776695426288251">Wi-Fi disponível através de vários dispositivos</translation>
+<translation id="4600071396330666617">Número de sugestões</translation>
 <translation id="4601426376352205922">Marcar como não lido</translation>
 <translation id="4602466770786743961">Permitir sempre que <ph name="HOST" /> aceda à sua câmara e microfone</translation>
 <translation id="4606551464649945562">Não permitir que os sites criem um mapa 3D do ambiente à sua volta nem monitorizem a posição da câmara</translation>
@@ -4300,6 +4303,7 @@
 <translation id="5043913660911154449">Em alternativa, especifique o PPD da impressora. <ph name="LINK_BEGIN" />Saber mais<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Palavra-passe incorrecta</translation>
 <translation id="504561833207953641">A abrir numa sessão existente do navegador…</translation>
+<translation id="5049614114599109018">Usar o histórico de introduções</translation>
 <translation id="5051836348807686060">A verificação ortográfica não é suportada para os idiomas selecionados</translation>
 <translation id="5052499409147950210">Editar site</translation>
 <translation id="505347685865235222">Grupo sem nome – <ph name="GROUP_CONTENT_STRING" /></translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index bcd0199..f4bd195 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -696,6 +696,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 с шифрованием RSA</translation>
 <translation id="1641113438599504367">Безопасный просмотр</translation>
 <translation id="1641496881756082050">Другие действия с сетью "<ph name="NETWORK_NAME" />"</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Не удалось импортировать 1 пароль. У него неверный формат.}one{Не удалось импортировать {NUM_PASSWORDS} пароль. У них неверный формат.}few{Не удалось импортировать {NUM_PASSWORDS} пароля. У них неверный формат.}many{Не удалось импортировать {NUM_PASSWORDS} паролей. У них неверный формат.}other{Не удалось импортировать {NUM_PASSWORDS} пароля. У них неверный формат.}}</translation>
 <translation id="1642492862748815878">Установлено подключение к устройству "<ph name="DEVICE" />" и другим устройствам Bluetooth (<ph name="NUMBER_OF_DEVICES" />)</translation>
 <translation id="1642494467033190216">Перед включением других функций отладки отключите защиту корневой файловой системы и перезагрузите устройство.</translation>
 <translation id="1643072738649235303">Подпись ECDSA X9.62 с SHA-1</translation>
@@ -1834,6 +1835,7 @@
 <translation id="2673135533890720193">Чтение истории просмотров</translation>
 <translation id="2674764818721168631">Отключено</translation>
 <translation id="2678063897982469759">Включить снова</translation>
+<translation id="2678100101831051676">Не удалось запустить трансляцию</translation>
 <translation id="268053382412112343">&amp;История</translation>
 <translation id="2681124317993121768">Гостевые профили не поддерживаются.</translation>
 <translation id="2682498795777673382">Ваш родитель изменил настройки</translation>
@@ -3870,6 +3872,7 @@
 <translation id="4617019240346358451">Чтобы использовать расширение "<ph name="EXTENSION_NAME" />", обновите страницу</translation>
 <translation id="4617270414136722281">Параметры расширений</translation>
 <translation id="4617880081511131945">Не удается подключиться</translation>
+<translation id="4618195822946934889">URL может содержать только символы стандарта ASCII.</translation>
 <translation id="4619564267100705184">Подтвердить личность</translation>
 <translation id="4619615317237390068">Вкладки с других устройств</translation>
 <translation id="4620809267248568679">Этот параметр определяется расширением.</translation>
@@ -5070,6 +5073,7 @@
 <translation id="5800351251499368110">Вы можете закрыть боковое окно поиска. Сейчас оно открыто.</translation>
 <translation id="5801568494490449797">Настройки</translation>
 <translation id="5804241973901381774">Разрешения</translation>
+<translation id="5805268472388605531">Нажмите и удерживайте клавиши, чтобы увидеть диакритические знаки и специальные символы</translation>
 <translation id="5805697420284793859">Менеджер окон</translation>
 <translation id="5806447147478173900">Объем хранилища, занятый указанными сайтами: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (по умолчанию)</translation>
@@ -5711,6 +5715,7 @@
 <translation id="642469772702851743">Устройство (серийный номер <ph name="SERIAL_NUMBER" />) заблокировано владельцем.</translation>
 <translation id="6425556984042222041">Скорость озвучивания текста</translation>
 <translation id="642729974267661262">Запретить сайтам воспроизводить звук</translation>
+<translation id="6427608534767366138">Для доступа к сети "<ph name="NETWORK_ID" />" требуется аутентификация на прокси-сервере.</translation>
 <translation id="6429384232893414837">Ошибка обновления</translation>
 <translation id="6430814529589430811">Единый сертификат ASCII с кодировкой Base64</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> настроит автоматические обновления для всех пользователей на этом компьютере.</translation>
@@ -7850,6 +7855,7 @@
 <translation id="844063558976952706">Всегда на этом сайте</translation>
 <translation id="8441313165929432954">Включение/отключение режима модема</translation>
 <translation id="8443795068008423036">Обновите операционную систему устройства и повторите попытку.</translation>
+<translation id="8443986842926457191">URL должен быть не длиннее 2048 символов.</translation>
 <translation id="8446884382197647889">Подробнее...</translation>
 <translation id="8447409163267621480">Сочетание должно начинаться с клавиши Ctrl или Alt</translation>
 <translation id="844850004779619592">Команды не найдены</translation>
@@ -7915,6 +7921,7 @@
 <translation id="851263357009351303">Всегда показывать изображения с сайта <ph name="HOST" /></translation>
 <translation id="8513108775083588393">Автоповорот</translation>
 <translation id="8514746246728959655">Попробуйте применить другой электронный ключ</translation>
+<translation id="8519895319663397036">Не удалось импортировать пароли. Размер файла должен быть меньше 150 КБ.</translation>
 <translation id="8523493869875972733">Закрыть</translation>
 <translation id="8523849605371521713">Добавлено по правилу</translation>
 <translation id="8524783101666974011">Сохраните карты в аккаунте Google</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 96fd39e..08054c6 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">විවේකයක් සඳහා වේලාවයි</translation>
 <translation id="1062628064301375934">වඩාත් පුද්ගලික වෙබයක් තැනීමට අපට උදවු කරන්න</translation>
 <translation id="1067048845568873861">සාදන ලදි</translation>
+<translation id="1067661089446014701">අමතර ආරක්ෂාව සඳහා, ඔබට ඒවා ඔබේ Google ගිණුමට සුරැකීමට පෙර ඔබේ උපාංගයේ මුරපද සංකේතනය කළ හැක</translation>
 <translation id="1067922213147265141">වෙනත් Google සේවාවන්</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> නම් වූ eSIM පැතිකඩ ඉවත් කරන්න</translation>
 <translation id="1070377999570795893">ඔබේ පරිගණකයේ ඇති වෙනත් ක්‍රමලේඛයක් දිගුවක් එක් කර ඇති අතර එයින් Chrome ක්‍රියා කරන ආකරය වෙනස් විය හැකිය.
@@ -252,6 +253,7 @@
 <translation id="1223853788495130632">ඔබේ පරිපාලක මෙම සැකසුම සඳහා නිශ්චිත අගයක් නිර්දේශ කරයි.</translation>
 <translation id="1225177025209879837">සැකසුම් ඉල්ලීම...</translation>
 <translation id="1227507814927581609">"<ph name="DEVICE_NAME" />" වෙත සම්බන්ධ කරන අතරතුර තහවුරු කිරීම අසාර්ථක විය.</translation>
+<translation id="1227993798763400520">විකාශය කිරීමට අසමත් විය. නැවත උත්සාහ කරන්න.</translation>
 <translation id="1230417814058465809">සම්මත ආරක්ෂව ක්‍රියාත්මකයි. ඊටත් වඩා ආරක්ෂාව සඳහා, වැඩි දියුණු කළ ආරක්ෂාව භාවිතා කරන්න.</translation>
 <translation id="1231733316453485619">සමමුහුව ක්‍රියාත්මක කරන්න ද?</translation>
 <translation id="1232569758102978740">මාතෘකා නොමැති</translation>
@@ -692,6 +694,7 @@
 <translation id="1640283014264083726">RSA සංකේතනය සමඟ PKCS #1 MD4</translation>
 <translation id="1641113438599504367">ආරක්ෂිත බ්‍රවුස් කිරීම</translation>
 <translation id="1641496881756082050"><ph name="NETWORK_NAME" /> සඳහා තවත් ක්‍රියා</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{තව 1 මුරපදයක් වැරදි ලෙස ෆෝමැට් කර ඇති නිසා ආයාත කර නොමැත}one{තව මුරපද {NUM_PASSWORDS}ක් වැරදි ලෙස ෆෝමැට් කර ඇති නිසා ආයාත කර නොමැත}other{තව මුරපද {NUM_PASSWORDS}ක් වැරදි ලෙස ෆෝමැට් කර ඇති නිසා ආයාත කර නොමැත}}</translation>
 <translation id="1642492862748815878"><ph name="DEVICE" /> සහ වෙනත් බ්ලූටූත් උපාංග <ph name="NUMBER_OF_DEVICES" />කට සම්බන්ධ විය</translation>
 <translation id="1642494467033190216">වෙනත් දෝශ නිරාකරණ විශේෂාංග සක්‍රීය කිරීමට පෙර rootfs ආරක්ශාව ඉවත් කර යළි ආරම්භ කිරීම අවශ්‍යයි.</translation>
 <translation id="1643072738649235303">SHA-1 සහිත X9.62 ECDSA අත්සන</translation>
@@ -1113,6 +1116,7 @@
 <translation id="2031914984822377766">ඔබ වඩා කැමති <ph name="LINK_BEGIN" />වෙබ් අඩවි භාෂා<ph name="LINK_END" /> එක් කරන්න ලැයිස්තුවේ ඉහළම භාෂාව පරිවර්තන සඳහා භාවිත කරනු ඇත.</translation>
 <translation id="2033758234986231162">ඔබගේ දුරකථනය සමඟ සම්බන්ධතාවක් පවත්වා ගත නොහැකිය. ඔබගේ දුරකථනය ළඟ තිබෙන බව, අගුලු හැර ඇති බව, බ්ලූටූත් සහ Wi-Fi ක්‍රියාත්මක කර ඇති බව සහතික කර ගන්න.</translation>
 <translation id="2034346955588403444">වෙනත් WiFi ජාල එක් කරන්න</translation>
+<translation id="2035211704574173780">අළු පරිමාණය</translation>
 <translation id="203574396658008164">අගුළු තිරයෙන් සටහන්-ගැනීම සබල කරන්න</translation>
 <translation id="2037445849770872822">මෙම Google ගිණුම සඳහා අධීක්‍ෂණය සකසා ඇත. තවත් මාපිය පාලන සැකසීමට, 'ඉදිරියට යන්න' තෝරන්න.
 
@@ -1833,6 +1837,7 @@
 <translation id="2673135533890720193">ඔබගේ බ්‍රවුස් කිරීමේ ඉතිහාසය කියවන්න</translation>
 <translation id="2674764818721168631">අක්‍රිය</translation>
 <translation id="2678063897982469759">යළි-සබල කරන්න</translation>
+<translation id="2678100101831051676">විකාශය කළ නොහැකි වේ.</translation>
 <translation id="268053382412112343">ඉතිහාසය</translation>
 <translation id="2681124317993121768">අමුත්තන්ගේ පැතිකඩවල් සඳහා සහය නොදක්වයි</translation>
 <translation id="2682498795777673382">ඔබේ මාපියන්ගෙන් යාවත්කාලීනය</translation>
@@ -2542,6 +2547,7 @@
 <translation id="3363202073972776113">මෙම නව පැතිකඩ ඔබේ සංවිධානය විසින් කළමනා කරනු ලැබේ. <ph name="BEGIN_LINK" />තව දැන ගන්න<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">ඔබේ පරිපාලක වෙතින්: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Ctrl හෝ Alt භාවිතා කරන්න</translation>
+<translation id="3368586359109138591">වෙනත් තැනක භාවිතා කිරීමට පිටපතක් බාගන්න</translation>
 <translation id="3368922792935385530">සම්බන්ධ කළ</translation>
 <translation id="3369067987974711168">මෙම තොට සඳහා තවත් ක්‍රියා පෙන්වන්න</translation>
 <translation id="3369624026883419694">සත්කාරක විසඳමින්...</translation>
@@ -2730,6 +2736,7 @@
 <translation id="3532273508346491126">සමමුහුර්ත කළමනාකරණය</translation>
 <translation id="3532521178906420528">ජාල සබැඳුම ස්ථාපනය කරමින් ...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - ශ්‍රව්‍ය නිහඬ කළ</translation>
+<translation id="3536492240554502321">වර්ණ කරකැවීම</translation>
 <translation id="3537881477201137177">පසුව සැකසීම් තුළ මෙය වෙනස් කළ හැක</translation>
 <translation id="3538066758857505094">Linux අස්ථාපනය කිරීමේ දෝෂයකි. කරුණාකර නැවත උත්සාහ කරන්න.</translation>
 <translation id="354060433403403521">AC අනුවර්තකය</translation>
@@ -3055,6 +3062,7 @@
 <translation id="383669374481694771">මේ (බැටරි මට්ටම, පද්ධති සහ යෙදුම් ක්‍රියාකාරකම්, සහ දෝෂ වැනි) මෙම උපාංගය සහ එය භාවිත කෙරෙන ආකාරය පිළිබඳ සාමාන්‍ය තොරතුරු වෙයි. Android වැඩි දියුණු කිරීමට දත්ත භාවිත කරන අතර සමහර රැස් කළ තොරතුරු Google යෙදුම් සහ Android සංවර්ධකයන් වැනි, හවුල්කරුවන්ට ඔවුන්ගේ යෙදුම් සහ නිෂ්පාදන වඩා යහපත් කිරීමට ද උදවු කරයි.</translation>
 <translation id="3838085852053358637">දිගුව පූරණය කිරීම අසාර්ථක විය</translation>
 <translation id="3838486795898716504">තව <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">සුරකින ලද මුරපද Google මුරපද කළමනාකරු වෙත එක් කරන්න</translation>
 <translation id="383891835335927981">කිසිදු අඩවියක් විශාලනය හෝ කුඩා කර නැත</translation>
 <translation id="3839509547554145593">මූසික අනුචලන ත්වරණය සබල කරන්න</translation>
 <translation id="3839516600093027468"><ph name="HOST" /> පසුරු පුවරුව දැකීමෙන් සැමවිටම අවහිර කරන්න</translation>
@@ -3867,6 +3875,7 @@
 <translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" භාවිත කිරීමට පිටුව නැවත පූරණය කරන්න</translation>
 <translation id="4617270414136722281">දිගු විකල්ප</translation>
 <translation id="4617880081511131945">සම්බන්ධතාව ස්ථාපිත කළ නොහැකිය</translation>
+<translation id="4618195822946934889">URL හි ASCII අනුලකුණු පමණක් අඩංගු විය හැක</translation>
 <translation id="4619564267100705184">ඒ ඔබ බව සත්‍යාපනය කරන්න</translation>
 <translation id="4619615317237390068">වෙනත් උපාංග වෙතින් ටැබ</translation>
 <translation id="4620809267248568679">මෙම සැකසුම දිගුවක් මගින් බලකර ඇත.</translation>
@@ -4128,6 +4137,7 @@
 <translation id="4871568871368204250">සමමුහුර්තය ක්‍රියා විරහිත කරන්න</translation>
 <translation id="4871719318659334896">කණ්ඩායම වසන්න</translation>
 <translation id="4872192066608821120">මුරපද ආයාත කිරීමට, CSV ගොනුවක් තෝරන්න</translation>
+<translation id="4872212987539553601">උපාංගය මත සංකේතනය පිහිටුවන්න</translation>
 <translation id="4873312501243535625">මාධ්‍ය ගොනු පරීක්ෂක</translation>
 <translation id="4876273079589074638">අපේ ඉංජිනේරුවන්ට මෙම බිඳ වැටීම විමර්ශනය කර හදන්න උදවු කරන්න. ඔබට හැකි නම් හරියටම පියවර ලැයිස්තුගත කරන්න. කිසිදු විස්තරයක් කුඩා නොවේ!</translation>
 <translation id="4876895919560854374">තිරය අගුළු දමන්න අගුළු හරින්න</translation>
@@ -5067,6 +5077,7 @@
 <translation id="5800351251499368110">පැති පැනලයේ සෙවීම වසන්න. පැති පැනලයේ සෙවීම විවෘතයි.</translation>
 <translation id="5801568494490449797">අභිරුචි</translation>
 <translation id="5804241973901381774">අවසර</translation>
+<translation id="5805268472388605531">උච්චාරණ ලකුණු සහ විශේෂ අනුලකුණු බැලීමට යතුරු පුවරු යතුරු ඔබා අල්ලාගෙන සිටින්න</translation>
 <translation id="5805697420284793859">කවුළු කළමනාකරු</translation>
 <translation id="5806447147478173900">සංදර්ශනය වන අඩවි මගින් භාවිත කරන මුළු ගබඩාව: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (පෙරනිමි)</translation>
@@ -5708,6 +5719,7 @@
 <translation id="642469772702851743">මෙම උපාංගය (SN: <ph name="SERIAL_NUMBER" />) අයිතිකරු විසින් අගුලු දමා ඇත.</translation>
 <translation id="6425556984042222041">කථනයට පාඨය අනුපාතය</translation>
 <translation id="642729974267661262">හඬ වාදනය කිරීමට ඉඩ නොදේ</translation>
+<translation id="6427608534767366138">"<ph name="NETWORK_ID" />" සඳහා ප්‍රොක්සි සත්‍යාපනය අවශ්‍ය වේ</translation>
 <translation id="6429384232893414837">යාවත්කාලීන දෝෂයක්</translation>
 <translation id="6430814529589430811">Base64-සංකේතනය කළ ASCII, තනි සහතිකය</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> විසින් මෙම පරිගණකයේ සියලු භාවිතකරුවන් සඳහා ස්වයංක්‍රීය යාවත්කාල සකසනු ඇත.</translation>
@@ -6426,6 +6438,7 @@
 <translation id="7093220653036489319">ඉක්මන් පිළිතුරු</translation>
 <translation id="7093416310351037609">දත්ත සුරක්ෂිතතාව සහ ආරක්සාව සඳහා, ඔබගේ සංවිධානයට සුදුසුකම් ලබන සියලු බාගැනීම් ඔබගේ සංවිධානයෙහි <ph name="WEB_DRIVE" /> ගිණුමට සුරකිනු ලැබීම අවශ්‍ය වේ.</translation>
 <translation id="7093866338626856921">මෙසේ නම්කළ උපාංගය සමඟ දත්ත හුවමාරු කරගන්න: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">ඔබේ <ph name="DEVICE_NAME" /> හි විකාශ ඉල්ලීම පිළිගන්න.</translation>
 <translation id="7098389117866926363">USB-C උපාංගය (පිටුපස වම් තොට)</translation>
 <translation id="7098447629416471489">වෙනත් සුරැකි සෙවීම් යාන්ත්‍රණ මෙහි දිස් වනු ඇත</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{යෙදුම ඉවත් කරන්න}one{යෙදුම් ඉවත් කරන්න}other{යෙදුම් ඉවත් කරන්න}}</translation>
@@ -6526,6 +6539,7 @@
 <translation id="7212097698621322584">එය වෙනස් කිරීමට ඔබේ රහස් අංකය ඇතුළත් කරන්න. ඔබ ඔබේ රහස් අංකය නොදන්නෙහි නම්, ඔබ ආරක්‍ෂක යතුර යළි සකසා, නව රහස් අංකයක් සෑදිය යුතු ය.</translation>
 <translation id="7213903639823314449">ලිපින තීරුවේ භාවිත වන සෙවීම් යන්ත්‍රය</translation>
 <translation id="721490496276866468">මුරපද ආයාත කරන්න</translation>
+<translation id="7218514093816577632">ඔබේ <ph name="DEVICE_NAME" /> මත දැනුම්දීම් ක්‍රියාත්මක කර ඇති බවට වග බලා ගන්න.</translation>
 <translation id="7219473482981809164">බාගැනීමට පැතිඩවල් කිහිපයක් ඇති බව අප සොයා ගෙන ඇත. ඉදිරියට යාමට පෙර ඔබ බාගැනීමට කැමති ඒවා තෝරන්න.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{දුර්වල මුරපද නැත}=1{දුර්වල මුරපද 1}one{දුර්වල මුරපද {NUM_WEAK}}other{දුර්වල මුරපද {NUM_WEAK}}}</translation>
 <translation id="7220019174139618249">"<ph name="FOLDER" />" වෙත මුරපද නිර්යාත කළ නොහැක</translation>
@@ -6995,6 +7009,7 @@
 <translation id="7664620655576155379">සහාය නොදක්වන බ්ලූටූත් උපාංගය: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">තරම වෙන් කරන්න</translation>
 <translation id="7665369617277396874">ගිණුම එක් කරන්න</translation>
+<translation id="766635563210446220">මුරපද ආයාත කිරීමට නොහැක. <ph name="FILENAME" /> පරීක්ෂා කර බලා එය නිවැරදිව ෆෝමැට් කර තිබෙන බවට වග බලා ගන්න. <ph name="BEGIN_LINK" />තව දැන ගන්න<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{<ph name="DEVICE_TYPE" /> සති {NUM_WEEKS}ක් ඇතුළත ආපසු දෙන්න}one{<ph name="DEVICE_TYPE" /> සති {NUM_WEEKS}ක් ඇතුළත ආපසු දෙන්න}other{<ph name="DEVICE_TYPE" /> සති {NUM_WEEKS}ක් ඇතුළත ආපසු දෙන්න}}</translation>
 <translation id="7668423670802040666"><ph name="ACCOUNT" /> සඳහා Google මුරපද කළමනාකරු තුළ</translation>
 <translation id="7668648754769651616">ප්‍රවේශ්‍යතා විශේෂාංග ඔබේ උපාංගය භාවිතය පහසු කරයි. ඉක්මන් සැකසීම් වෙත ප්‍රවේශ වීම සඳහා, ඔබේ තිරයෙහි පහළින් ඇති වේලාව තෝරන්න.</translation>
@@ -7524,6 +7539,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{වීඩියෝවක්}one{වීඩියෝ #}other{වීඩියෝ #}}</translation>
 <translation id="8143442547342702591">අවලංගු යෙදුමකි</translation>
 <translation id="8143609395536282994">ඔබට ඔබගේ දත්ත කළමනාකරණය කළ හැක්කේ කෙසේද:</translation>
+<translation id="8145170459658034418">මතක සුරකිනය</translation>
 <translation id="8146177459103116374">නොබ දැනටමත් මෙම උපාංගය මත ලියාපදිංචිව ඇත, ඔබට <ph name="LINK2_START" />පවතින පරිශීලකයකු ලෙස පිවිසිය හැක<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">ඔබ කැමති භාෂා එක් කරන්න සහ ශ්‍රේණිගත කරන්න. හැකි විට, වෙබ් අඩවි ඔබගේ කැමති භාෂාවෙන් පෙන්වනු ඇත. මෙම මනාප ඔබගේ බ්‍රව්සර සැකසීම් සමඟ සමමුහුර්ත කර ඇත. <ph name="BEGIN_LINK_LEARN_MORE" />තව දැන ගන්න<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">පිරීමට අසමත් විය. ඔබගේ පරිපාලක අමතන්න නැතහොත් නැවත උත්සාහ කරන්න.</translation>
@@ -7583,6 +7599,7 @@
 <translation id="8198456017687137612">විකාශ ටැබය</translation>
 <translation id="8199300056570174101">ජාල (සේවාව) සහ උපාංග ගුණාංග</translation>
 <translation id="8200772114523450471">කරගෙන යන්න</translation>
+<translation id="8200789660596905522">ඔබ ඔබේ <ph name="DEVICE_NAME" /> හි විකාශ ඉල්ලීම පිළිගන්නා බවට සහතික කර ගන්න.</translation>
 <translation id="8202160505685531999">ඔබේ <ph name="DEVICE_TYPE" /> පැතිකඩ යාවත්කාලීන කිරීමට කරුණාකර ඔබේ මුරපදය යළි-ඇතුළු කරන්න.</translation>
 <translation id="8203152941016626022">ළඟ බෙදා ගැනීමේ උපාංග නම</translation>
 <translation id="8203732864715032075">පණිවුඩ සඳහා මෙම පරිගණකය මතක තබා ගැනීමට ඔබට දැනුම්දීම් සහ පෙරනිමි යවන්න. <ph name="LINK_BEGIN" />තවත් දැන ගන්න<ph name="LINK_END" /></translation>
@@ -7834,6 +7851,7 @@
 <translation id="844063558976952706">සෑම විටම මෙම අඩවියෙහි</translation>
 <translation id="8441313165929432954">ටෙදරින් සබල/අබල කරන්න</translation>
 <translation id="8443795068008423036">කරුණාකර ඔබගේ උපාංගය යාවත්කාලීන බව සහතික කර ගෙන නැවත උත්සාහ කරන්න</translation>
+<translation id="8443986842926457191">URL අනුලකුණු 2048කට වඩා වැඩි වේ</translation>
 <translation id="8446884382197647889">තවත් දැනගන්න</translation>
 <translation id="8447409163267621480">Ctrl හෝ Alt ඇතුළත් කරන්න</translation>
 <translation id="844850004779619592">විධාන හමු නොවීය</translation>
@@ -7899,6 +7917,7 @@
 <translation id="851263357009351303">සැමවිට <ph name="HOST" /> ට රූප පෙන්වීමට ඉඩ දෙන්න</translation>
 <translation id="8513108775083588393">ස්වයංක්‍රීය කරකැවීම</translation>
 <translation id="8514746246728959655">වෙනත් ආරක්‍ෂක යතුරක් උත්සාහ කරන්න</translation>
+<translation id="8519895319663397036">මුරපද ආයාත කිරීමට නොහැක. ගොනු තරම 150 KBකට වඩා අඩු විය යුතු ය.</translation>
 <translation id="8523493869875972733">වෙනස්කම් තබා ගන්න</translation>
 <translation id="8523849605371521713">ප්‍රතිපත්තිය විසින් එක් කර ඇත</translation>
 <translation id="8524783101666974011">ඔබේ Google ගිණුම තුළ කාඩ්පත් සුරකින්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 3d5ade1..6ea3ba2 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -2176,6 +2176,7 @@
 <translation id="2977480621796371840">Odstrániť zo skupiny</translation>
 <translation id="2979639724566107830">Otvoriť v novom okne</translation>
 <translation id="2981113813906970160">Zobraziť veľký kurzor myši</translation>
+<translation id="2981293774053328982">Tento súbor obsahuje malvér, ktorý môže ohroziť vaše osobné účty alebo účty sociálnych sietí</translation>
 <translation id="2983373101216420412">Úroveň batérie puzdra je <ph name="PERCENTAGE" /> %.</translation>
 <translation id="2985348301114641460">Chcete správcovi odoslať žiadosť o inštaláciu rozšírenia <ph name="EXTENSION_NAME" />?</translation>
 <translation id="2987620471460279764">Text zdieľaný z iného zariadenia</translation>
@@ -3760,6 +3761,7 @@
 <translation id="4514610446763173167">Prepnutím prehráte alebo pozastavíte video</translation>
 <translation id="451515744433878153">Odstrániť</translation>
 <translation id="4515872537870654449">Ak potrebujete servis, kontaktujte spoločnosť Dell. Ak ventilátor nefunguje, dok sa vypne.</translation>
+<translation id="4518840066030486079">Štýl režimu klávesa Shift</translation>
 <translation id="4519331665958994620">Weby môžu žiadať o použitie kamery</translation>
 <translation id="4519935350946509010">Chyba pripojenia.</translation>
 <translation id="4520385623207007473">Používané súbory cookie</translation>
@@ -3855,6 +3857,7 @@
 <translation id="4598345735110653698">Spravovať prístupové kľúče</translation>
 <translation id="4598556348158889687">Správa úložiska</translation>
 <translation id="4598776695426288251">Je k dispozícii sieť Wi‑Fi prostredníctvom niekoľkých zariadení</translation>
+<translation id="4600071396330666617">Počet návrhov</translation>
 <translation id="4601426376352205922">Označiť ako neprečítané</translation>
 <translation id="4602466770786743961">Vždy povoliť stránkam <ph name="HOST" /> prístup ku kamere a mikrofónu</translation>
 <translation id="4606551464649945562">Nepovoliť webom vytvoriť 3D mapu vášho okolia ani sledovať umiestnenie kamier</translation>
@@ -4301,6 +4304,7 @@
 <translation id="5043913660911154449">Prípadne špecifikuje PPD svojej tlačiarne <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Nesprávne heslo</translation>
 <translation id="504561833207953641">Otvára sa v existujúcej relácii prehliadača.</translation>
+<translation id="5049614114599109018">Používať históriu vstupov</translation>
 <translation id="5051836348807686060">Kontrola pravopisu nie je v prípade vybraných jazykov podporovaná</translation>
 <translation id="5052499409147950210">Úprava webu</translation>
 <translation id="505347685865235222">Skupina bez názvu – <ph name="GROUP_CONTENT_STRING" /></translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index b355b19..4ebab72 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -6750,6 +6750,7 @@
 <translation id="7404065585741198296">Vaš telefon s kablom USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Varnostno preverjanje je bilo izvedeno pred 1 uro}one{Varnostno preverjanje je bilo izvedeno pred {NUM_HOURS} uro}two{Varnostno preverjanje je bilo izvedeno pred {NUM_HOURS} urama}few{Varnostno preverjanje je bilo izvedeno pred {NUM_HOURS} urami}other{Varnostno preverjanje je bilo izvedeno pred {NUM_HOURS} urami}}</translation>
 <translation id="740624631517654988">Pojavno okno je blokirano</translation>
+<translation id="7406912950279255498">Način inverzije barv</translation>
 <translation id="7407430846095439694">Uvozi in poveži</translation>
 <translation id="7407504355934009739">Večina ljudi blokira obvestila s tega spletnega mesta</translation>
 <translation id="740810853557944681">Dodajanje tiskalnega strežnika</translation>
@@ -7700,6 +7701,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Lastnik lahko nadzira to funkcijo v »Nastavitve« &gt; »Dodatno« &gt; »Samodejno pošiljanje diagnostičnih podatkov in podatkov o uporabi Googlu«.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem Google Računu. Na spletnem mestu families.google.com si podatke lahko ogledate, jih izbrišete ter spremenite nastavitve računa.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Neveljavno potrdilo odjemalca</translation>
+<translation id="8270162672241199380">Namestitveni program za storitev Steam</translation>
 <translation id="827097179112817503">Pokaži gumb za domačo stran</translation>
 <translation id="8271268254812352141">Zagotovite si definicije, prevode ali pretvorbe enot, ko besedilo kliknete z desnim gumbom ali se ga dotaknete in pridržite. Prilagodite jezike za prevajanje v razdelku z <ph name="LINK_BEGIN" />jeziki spletnih mest<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Starši, naslednji koraki so za vas. Po nastavitvi računa lahko napravo <ph name="DEVICE_TYPE" /> vrnete otroku.</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 50318c8..956e15f 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Pothuajse koha për një pushim</translation>
 <translation id="1062628064301375934">Na ndihmo të krijojmë një ueb më privat</translation>
 <translation id="1067048845568873861">U krijua</translation>
+<translation id="1067661089446014701">Për siguri shtesë, mund t'i enkriptosh fjalëkalimet në pajisjen tënde para se të ruhen në "Llogarinë tënde të Google".</translation>
 <translation id="1067922213147265141">Shërbime e tjera të Google</translation>
 <translation id="1069355737714877171">Hiq profilin e kartës eSIM me emrin <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Një program tjetër në kompjuterin tënd shtoi një shtesë që mund të ndryshojë mënyrën e funksionimit të Chrome.
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">Administratori yt rekomandon një vlerë specifike për këtë cilësim.</translation>
 <translation id="1225177025209879837">Po përpunon kërkesën...</translation>
 <translation id="1227507814927581609">Dështoi vërtetimi gjatë lidhjes me "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Transmetimi dështoi. Provo përsëri.</translation>
 <translation id="1230417814058465809">"Mbrojtja standarde" është aktive. Për akoma më shumë mbrojtje, përdor "Mbrojtjen e përparuar".</translation>
 <translation id="1231733316453485619">Të aktivizohet sinkronizimi?</translation>
 <translation id="1232569758102978740">Pa titull</translation>
@@ -689,6 +691,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 me enkriptim RSA</translation>
 <translation id="1641113438599504367">Shfletimi i sigurt</translation>
 <translation id="1641496881756082050">Më shumë veprime për <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 fjalëkalim tjetër nuk u importua për shkak se ishte formatuar gabim}other{{NUM_PASSWORDS} fjalëkalime të tjera nuk u importuan sepse ishin formatuar gabim}}</translation>
 <translation id="1642492862748815878">Lidhur me <ph name="DEVICE" /> dhe <ph name="NUMBER_OF_DEVICES" /> pajisje të tjera me Bluetooth</translation>
 <translation id="1642494467033190216">Kërkohet heqja e mbrojtjes së rrënjës dhe rifillimi para aktivizimit të funksioneve të tjera të korrigjimit të gabimeve.</translation>
 <translation id="1643072738649235303">Nënshkrimi X9.62 ECDSA me SHA-1</translation>
@@ -1109,6 +1112,7 @@
 <translation id="2031914984822377766">Shto gjuhët e tua të preferuara për <ph name="LINK_BEGIN" />sajtet e uebit<ph name="LINK_END" />. Gjuha kryesore nga lista do të përdoret për përkthimet.</translation>
 <translation id="2033758234986231162">Nuk mund të ruhej një lidhje me telefonin tënd. Sigurohu që telefoni yt të jetë pranë, i shkyçur dhe që Bluetooth-i dhe Wi-Fi të jenë të aktivizuar.</translation>
 <translation id="2034346955588403444">Shto një rrjet tjetër WiFi</translation>
+<translation id="2035211704574173780">Nuancat e grisë</translation>
 <translation id="203574396658008164">Aktivizo mbajtjen e shënimeve nga ekrani i kyçjes</translation>
 <translation id="2037445849770872822">Mbikëqyrja është konfiguruar për këtë "Llogari të Google". Për të konfiguruar kontrolle të tjera prindërore, zgjidh "Vazhdo".
 
@@ -1827,6 +1831,7 @@
 <translation id="2673135533890720193">Lexo historikun e shfletimit</translation>
 <translation id="2674764818721168631">Joaktive</translation>
 <translation id="2678063897982469759">Aktivizoje përsëri</translation>
+<translation id="2678100101831051676">Nuk mund të transmetohet.</translation>
 <translation id="268053382412112343">Hi&amp;storiku</translation>
 <translation id="2681124317993121768">Profilet e vizitorëve nuk mbështeten</translation>
 <translation id="2682498795777673382">Përditësim nga prindi</translation>
@@ -2536,6 +2541,7 @@
 <translation id="3363202073972776113">Ky profil i ri do të menaxhohet nga organizata jote. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Nga administratori yt: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Përdor ose Ctrl, ose Alt</translation>
+<translation id="3368586359109138591">Shkarko një kopje për ta përdorur diku tjetër</translation>
 <translation id="3368922792935385530">Lidhur</translation>
 <translation id="3369067987974711168">Shfaq më shumë veprime për këtë portë</translation>
 <translation id="3369624026883419694">Po zgjidh strehuesin...</translation>
@@ -2724,6 +2730,7 @@
 <translation id="3532273508346491126">Menaxhimi i sinkronizimit</translation>
 <translation id="3532521178906420528">Po krijon një lidhje rrjeti...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - audioja u çaktivizua</translation>
+<translation id="3536492240554502321">Rotacioni i nuancave</translation>
 <translation id="3537881477201137177">Kjo mund të modifikohet më vonë te "Cilësimet"</translation>
 <translation id="3538066758857505094">Gabim gjatë çinstalimit të Linux. Provo sërish.</translation>
 <translation id="354060433403403521">Adaptor AC</translation>
@@ -3049,6 +3056,7 @@
 <translation id="383669374481694771">Këto janë informacione të përgjithshme për këtë pajisje dhe se si përdoret (si p.sh. niveli i baterisë, aktiviteti i sistemit dhe aplikacioneve dhe gabimet). Të dhënat do të përdoren për të përmirësuar Android dhe disa informacione të përmbledhura do t'i ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android, që të përmirësojnë aplikacionet dhe produktet e tyre.</translation>
 <translation id="3838085852053358637">Dështoi në ngarkimin e shtesës</translation>
 <translation id="3838486795898716504">Më shumë <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Shto fjalëkalimet e ruajtura te "Menaxheri i fjalëkalimeve i Google"</translation>
 <translation id="383891835335927981">Asnjë sajt nuk është zmadhuar apo zvogëluar</translation>
 <translation id="3839509547554145593">Aktivizo përshpejtimin e lëvizjes së miut</translation>
 <translation id="3839516600093027468">Blloko gjithmonë <ph name="HOST" /> që të mos shikojë kujtesën e fragmenteve</translation>
@@ -3860,6 +3868,7 @@
 <translation id="4617019240346358451">Ringarko faqen për të përdorur "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Opsionet e prapashtesës</translation>
 <translation id="4617880081511131945">Nuk mund të vendoset lidhja</translation>
+<translation id="4618195822946934889">URL-ja mund të përmbajë vetëm karaktere ASCII</translation>
 <translation id="4619564267100705184">Verifiko që je ti</translation>
 <translation id="4619615317237390068">Skedat nga pajisjet e tjera</translation>
 <translation id="4620809267248568679">Ky cilësim është detyruar nga një shtesë.</translation>
@@ -4121,6 +4130,7 @@
 <translation id="4871568871368204250">Çaktivizo sinkronizimin</translation>
 <translation id="4871719318659334896">Mbyll grupin</translation>
 <translation id="4872192066608821120">Për t'i importuar fjalëkalimet, zgjidh një skedar CSV</translation>
+<translation id="4872212987539553601">Konfiguro enkriptimin në pajisje</translation>
 <translation id="4873312501243535625">Kontrolluesi i skedarëve të medias</translation>
 <translation id="4876273079589074638">Ndihmo inxhinierët tanë të hetojnë dhe të rregullojnë këtë ndërprerje aksidentale. Rendit hapat e saktë nëse është e mundur. Nuk ka detaje të tepërta!</translation>
 <translation id="4876895919560854374">Kyç dhe shkyç ekranin</translation>
@@ -5059,6 +5069,7 @@
 <translation id="5800351251499368110">Mbyll kërkimin në panelin anësor. Kërkimi është i hapur në panelin anësor.</translation>
 <translation id="5801568494490449797">Preferencat</translation>
 <translation id="5804241973901381774">Lejet</translation>
+<translation id="5805268472388605531">Shtyp dhe mbaj shtypur tastet e tastierës për të parë shenjat e theksimit dhe karakteret e veçanta</translation>
 <translation id="5805697420284793859">Menaxheri i dritareve</translation>
 <translation id="5806447147478173900">Hapësira ruajtëse në total e përdorur nga sajtet e shfaqura: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (parazgjedhja)</translation>
@@ -5700,6 +5711,7 @@
 <translation id="642469772702851743">Kjo pajisje (NS: <ph name="SERIAL_NUMBER" />) u kyç nga zotëruesi.</translation>
 <translation id="6425556984042222041">Shpejtësia e "tekstit në ligjërim"</translation>
 <translation id="642729974267661262">Nuk lejohen të luajnë tinguj</translation>
+<translation id="6427608534767366138">Kërkohet vërtetimi i proxy-t për "<ph name="NETWORK_ID" />"</translation>
 <translation id="6429384232893414837">Gabim në përditësim</translation>
 <translation id="6430814529589430811">ASCII e koduar me Base64, një certifikatë</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> do të caktojë përditësime automatike për të gjithë përdoruesit e këtij kompjuteri.</translation>
@@ -6418,6 +6430,7 @@
 <translation id="7093220653036489319">Përgjigjet e shpejta</translation>
 <translation id="7093416310351037609">Për sigurinë e të dhënave, organizat jote kërkon që të gjitha shkarkimet e përshtatshme të ruhen në llogarinë <ph name="WEB_DRIVE" /> e organizatës sate.</translation>
 <translation id="7093866338626856921">Shkëmbe të dhëna me pajisjet me emrin: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Prano kërkesën e transmetimit në pajisjen tënde <ph name="DEVICE_NAME" />.</translation>
 <translation id="7098389117866926363">Pajisja USB-C (porta majtas, prapa)</translation>
 <translation id="7098447629416471489">Motorët e tjerë të ruajtur të kërkimit do të shfaqen këtu</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Hiq aplikacionin}other{Hiq aplikacionet}}</translation>
@@ -6518,6 +6531,7 @@
 <translation id="7212097698621322584">Fut kodin PIN aktual për ta ndryshuar. Nëse nuk e di kodin PIN, duhet të rivendosësh çelësin e sigurisë, dhe më pas të krijosh një kod të ri PIN.</translation>
 <translation id="7213903639823314449">Motori i kërkimit i përdorur në shiritin e adresës</translation>
 <translation id="721490496276866468">Importo fjalëkalimet</translation>
+<translation id="7218514093816577632">Sigurohu që njoftimet janë të aktivizuara në pajisjen tënde <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Kemi gjetur disa profile të disponueshme për t'u shkarkuar. Zgjidh ata që dëshiron të shkarkosh përpara se të vazhdosh.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Asnjë fjalëkalim i dobët}=1{1 fjalëkalim i dobët}other{{NUM_WEAK} fjalëkalime të dobëta}}</translation>
 <translation id="7220019174139618249">Fjalëkalimet nuk mund të eksportohen te "<ph name="FOLDER" />"</translation>
@@ -6987,6 +7001,7 @@
 <translation id="7664620655576155379">Pajisje me Bluetooth e pambështetur: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Rezervo madhësinë</translation>
 <translation id="7665369617277396874">Shto një llogari</translation>
+<translation id="766635563210446220">Fjalëkalimet nuk mund të importohen. Kontrollo skedarin <ph name="FILENAME" /> dhe sigurohu që është formatuar si duhet. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Ktheje pajisjen <ph name="DEVICE_TYPE" /> brenda {NUM_WEEKS} jave}other{Ktheje pajisjen <ph name="DEVICE_TYPE" /> brenda {NUM_WEEKS} javësh}}</translation>
 <translation id="7668423670802040666">Në "Menaxherin e fjalëkalimeve të Google" për <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Veçoritë e qasshmërisë e bëjnë më të lehtë përdorimin e pajisjes sate. Për t'u qasur te "Cilësimet e shpejta", zgjidh kohën në fund të ekranit.</translation>
@@ -7516,6 +7531,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{një video}other{# video}}</translation>
 <translation id="8143442547342702591">Aplikacion i pavlefshëm</translation>
 <translation id="8143609395536282994">Si mund t'i menaxhosh të dhënat e tua:</translation>
+<translation id="8145170459658034418">Kursyesi i memories</translation>
 <translation id="8146177459103116374">Nëse je regjistruar tashmë në këtë pajisje, mund <ph name="LINK2_START" />të identifikohesh si përdorues ekzistues<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Shto dhe rendit gjuhët e tua të preferuara. Faqet e internetit do të shfaqen në gjuhët e tua të preferuara, kur të jetë e mundur. Këto preferenca sinkronizohen me cilësimet e shfletuesit tënd. <ph name="BEGIN_LINK_LEARN_MORE" />Mëso më shumë<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Identifikimi dështoi. Kontakto me administratorin ose provo përsëri.</translation>
@@ -7575,6 +7591,7 @@
 <translation id="8198456017687137612">Skeda e transmetimit</translation>
 <translation id="8199300056570174101">Vetitë e rrjetit (shërbimit) dhe pajisjes</translation>
 <translation id="8200772114523450471">Vazhdo</translation>
+<translation id="8200789660596905522">Sigurohu që ta pranosh kërkesën e transmetimit në pajisjen tënde <ph name="DEVICE_NAME" />.</translation>
 <translation id="8202160505685531999">Fut përsëri fjalëkalimin për të përditësuar profilin e pajisjes <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Emri i pajisjes së "Ndarjes në afërsi"</translation>
 <translation id="8203732864715032075">Të dërgon njoftime dhe kthen parazgjedhjen për të kujtuar këtë kompjuter për "Mesazhet". <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation>
@@ -7826,6 +7843,7 @@
 <translation id="844063558976952706">Gjithmonë në këtë sajt</translation>
 <translation id="8441313165929432954">Aktivizo/çaktivizo ndarjen e internetit</translation>
 <translation id="8443795068008423036">Sigurohu që pajisja jote të jetë e përditësuar dhe provo përsëri</translation>
+<translation id="8443986842926457191">URL-ja është më shumë se 2048 karaktere</translation>
 <translation id="8446884382197647889">Mëso më shumë</translation>
 <translation id="8447409163267621480">Përfshi ose Ctrl, ose Alt</translation>
 <translation id="844850004779619592">Nuk u gjetën komanda</translation>
@@ -7891,6 +7909,7 @@
 <translation id="851263357009351303">Lejo gjithmonë që <ph name="HOST" /> të shfaqë imazhet</translation>
 <translation id="8513108775083588393">Autorrotullim</translation>
 <translation id="8514746246728959655">Provo një çelës tjetër sigurie</translation>
+<translation id="8519895319663397036">Fjalëkalimet nuk mund të importohen. Madhësia e skedarit duhet të jetë më e vogël se 150 KB.</translation>
 <translation id="8523493869875972733">Mbaji ndryshimet</translation>
 <translation id="8523849605371521713">Shtuar sipas politikës</translation>
 <translation id="8524783101666974011">Ruaji kartat në "Llogarinë tënde të Google"</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index de82b9b..9c0e88f0 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2173,6 +2173,7 @@
 <translation id="2977480621796371840">Ukloni iz grupe</translation>
 <translation id="2979639724566107830">Otvorite u novom prozoru</translation>
 <translation id="2981113813906970160">Prikaži veliki kursor</translation>
+<translation id="2981293774053328982">Ovaj fajl sadrži malver koji može da ugrozi lične naloge ili naloge na društvenim mrežama</translation>
 <translation id="2983373101216420412">Nivo napunjenosti baterije futrole <ph name="PERCENTAGE" />%.</translation>
 <translation id="2985348301114641460">Želite li da pošaljete zahtev administratoru da instalira „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="2987620471460279764">Tekst koji se deli sa drugog uređaja</translation>
@@ -3757,6 +3758,7 @@
 <translation id="4514610446763173167">Pušta ili pauzira video</translation>
 <translation id="451515744433878153">Ukloni</translation>
 <translation id="4515872537870654449">Obratite se Dell-u za uslugu. Bazna stanica će se isključiti ako ventilator ne radi.</translation>
+<translation id="4518840066030486079">Režim stila tastera Shift</translation>
 <translation id="4519331665958994620">Sajtovi mogu da traže da koriste kameru</translation>
 <translation id="4519935350946509010">Greška pri povezivanju.</translation>
 <translation id="4520385623207007473">Kolačići u upotrebi</translation>
@@ -3852,6 +3854,7 @@
 <translation id="4598345735110653698">Upravljajte pristupnim kodovima</translation>
 <translation id="4598556348158889687">Upravljanje memorijskim prostorom</translation>
 <translation id="4598776695426288251">Dostupan je WiFi preko više uređaja</translation>
+<translation id="4600071396330666617">Broj predloga</translation>
 <translation id="4601426376352205922">Označi kao nepročitano</translation>
 <translation id="4602466770786743961">Uvek dozvoli da <ph name="HOST" /> pristupa kameri i mikrofonu</translation>
 <translation id="4606551464649945562">Ne dozvoljavajte sajtovima da prave 3D mapu okruženja ili da prate položaj kamere</translation>
@@ -4298,6 +4301,7 @@
 <translation id="5043913660911154449">Ili navedite PPD štampača <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Neispravna lozinka</translation>
 <translation id="504561833207953641">Otvara se u postojećoj sesiji pregledača.</translation>
+<translation id="5049614114599109018">Koristi istoriju unosa</translation>
 <translation id="5051836348807686060">Provera pravopisa nije podržana za jezike koje ste izabrali</translation>
 <translation id="5052499409147950210">Izmenite sajt</translation>
 <translation id="505347685865235222">Grupa bez naziva – <ph name="GROUP_CONTENT_STRING" /></translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index c263b8ab..f2eb590f 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2173,6 +2173,7 @@
 <translation id="2977480621796371840">Уклони из групе</translation>
 <translation id="2979639724566107830">Отворите у новом прозору</translation>
 <translation id="2981113813906970160">Прикажи велики курсор</translation>
+<translation id="2981293774053328982">Овај фајл садржи малвер који може да угрози личне налоге или налоге на друштвеним мрежама</translation>
 <translation id="2983373101216420412">Ниво напуњености батерије футроле <ph name="PERCENTAGE" />%.</translation>
 <translation id="2985348301114641460">Желите ли да пошаљете захтев администратору да инсталира „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="2987620471460279764">Текст који се дели са другог уређаја</translation>
@@ -3757,6 +3758,7 @@
 <translation id="4514610446763173167">Пушта или паузира видео</translation>
 <translation id="451515744433878153">Уклони</translation>
 <translation id="4515872537870654449">Обратите се Dell-у за услугу. Базна станица ће се искључити ако вентилатор не ради.</translation>
+<translation id="4518840066030486079">Режим стила тастера Shift</translation>
 <translation id="4519331665958994620">Сајтови могу да траже да користе камеру</translation>
 <translation id="4519935350946509010">Грешка при повезивању.</translation>
 <translation id="4520385623207007473">Колачићи у употреби</translation>
@@ -3852,6 +3854,7 @@
 <translation id="4598345735110653698">Управљајте приступним кодовима</translation>
 <translation id="4598556348158889687">Управљање меморијским простором</translation>
 <translation id="4598776695426288251">Доступан је WiFi преко више уређаја</translation>
+<translation id="4600071396330666617">Број предлога</translation>
 <translation id="4601426376352205922">Означи као непрочитано</translation>
 <translation id="4602466770786743961">Увек дозволи да <ph name="HOST" /> приступа камери и микрофону</translation>
 <translation id="4606551464649945562">Не дозвољавајте сајтовима да праве 3D мапу окружења или да прате положај камере</translation>
@@ -4298,6 +4301,7 @@
 <translation id="5043913660911154449">Или наведите PPD штампача <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Неисправна лозинка</translation>
 <translation id="504561833207953641">Отвара се у постојећој сесији прегледача.</translation>
+<translation id="5049614114599109018">Користи историју уноса</translation>
 <translation id="5051836348807686060">Провера правописа није подржана за језике које сте изабрали</translation>
 <translation id="5052499409147950210">Измените сајт</translation>
 <translation id="505347685865235222">Група без назива – <ph name="GROUP_CONTENT_STRING" /></translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 57bdf774..131f700 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Snart dags för en paus</translation>
 <translation id="1062628064301375934">Hjälp oss att göra webben mer privat</translation>
 <translation id="1067048845568873861">Skapad</translation>
+<translation id="1067661089446014701">Du kan öka säkerheten genom att kryptera lösenord på enheten innan de sparas i Google Lösenordshantering.</translation>
 <translation id="1067922213147265141">Andra Google-tjänster</translation>
 <translation id="1069355737714877171">Ta bort eSIM-profilen som heter <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Ett annat program i datorn har lagt till ett tillägg som kan ändra hur Chrome fungerar.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Administratören rekommenderar ett specifikt värde för den här inställningen.</translation>
 <translation id="1225177025209879837">Begäran bearbetas ...</translation>
 <translation id="1227507814927581609">Autentiseringen misslyckades vid anslutning till <ph name="DEVICE_NAME" />.</translation>
+<translation id="1227993798763400520">Det gick inte att casta. Försök igen.</translation>
 <translation id="1230417814058465809">Standardskydd är aktiverat. Använd det utökade skyddet för ännu bättre säkerhet.</translation>
 <translation id="1231733316453485619">Vill du aktivera synkronisering?</translation>
 <translation id="1232569758102978740">Namnlös</translation>
@@ -695,6 +697,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 med RSA-kryptering</translation>
 <translation id="1641113438599504367">Säker webbsökning</translation>
 <translation id="1641496881756082050">Fler åtgärder för <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{1 annat lösenord importerades inte eftersom det hade fel format}other{{NUM_PASSWORDS} andra lösenord importerades inte eftersom de hade fel format}}</translation>
 <translation id="1642492862748815878">Ansluten till <ph name="DEVICE" /> och <ph name="NUMBER_OF_DEVICES" /> andra Bluetooth-enheter</translation>
 <translation id="1642494467033190216">Borttagning av rootfs-skydd och omstart krävs innan du kan aktivera andra felsökningsfunktioner.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA-signatur med SHA-1</translation>
@@ -1124,6 +1127,7 @@
 <translation id="2031914984822377766">Lägg till önskade <ph name="LINK_BEGIN" />språk för webbplatser<ph name="LINK_END" />. Det första språket på listan används för översättningar.</translation>
 <translation id="2033758234986231162">Det gick inte att upprätthålla anslutningen till telefonen. Kontrollera att telefonen är i närheten, olåst och att Bluetooth och wifi har aktiverats.</translation>
 <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="2037445849770872822">Kontroll har konfigurerats för det här Google-kontot. Välj Fortsätt om du vill konfigurera fler föräldrakontroller.
 
@@ -1844,6 +1848,7 @@
 <translation id="2673135533890720193">Läsa webbhistoriken</translation>
 <translation id="2674764818721168631">Av</translation>
 <translation id="2678063897982469759">Aktivera igen</translation>
+<translation id="2678100101831051676">Det gick inte att casta.</translation>
 <translation id="268053382412112343">Hi&amp;storik</translation>
 <translation id="2681124317993121768">Gästprofiler stöds inte</translation>
 <translation id="2682498795777673382">Uppdatering från din förälder</translation>
@@ -2553,6 +2558,7 @@
 <translation id="3363202073972776113">Den nya profilen hanteras av organisationen. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Från administratören: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Använd Ctrl eller Alt</translation>
+<translation id="3368586359109138591">Ladda ned att använda någon annanstans</translation>
 <translation id="3368922792935385530">Ansluten</translation>
 <translation id="3369067987974711168">Visa fler åtgärder för den här porten</translation>
 <translation id="3369624026883419694">Tolkar värden...</translation>
@@ -2741,6 +2747,7 @@
 <translation id="3532273508346491126">Hantera synkronisering</translation>
 <translation id="3532521178906420528">Nätverksanslutning upprättas …</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> – ljud av</translation>
+<translation id="3536492240554502321">Nyansväxling</translation>
 <translation id="3537881477201137177">Du kan ändra detta senare i Inställningar</translation>
 <translation id="3538066758857505094">Ett fel uppstod när Linux skulle avinstalleras. Försök igen.</translation>
 <translation id="354060433403403521">Laddare</translation>
@@ -3066,6 +3073,7 @@
 <translation id="383669374481694771">Detta är allmän information om enheten och hur den används (till exempel batterinivå, system- och appaktivitet samt fel). Med hjälp av dessa uppgifter kan vi förbättra Android och vissa samlade uppgifter kan även hjälpa Googles appar och Googles partner, till exempel Android-utvecklare, att förbättra sina appar och produkter.</translation>
 <translation id="3838085852053358637">Det gick inte att läsa in tillägget</translation>
 <translation id="3838486795898716504">Mer <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">Lägg till sparade lösenord i Google Lösenordshantering</translation>
 <translation id="383891835335927981">Inga webbplatser har zoomats in eller ut</translation>
 <translation id="3839509547554145593">Aktivera scrollningsacceleration för musen</translation>
 <translation id="3839516600093027468">Blockera alltid tillgången till Urklipp för <ph name="HOST" /></translation>
@@ -3878,6 +3886,7 @@
 <translation id="4617019240346358451">Läs in sidan igen för att använda <ph name="EXTENSION_NAME" /></translation>
 <translation id="4617270414136722281">Tilläggsalternativ</translation>
 <translation id="4617880081511131945">Det gick inte att upprätta en anslutning</translation>
+<translation id="4618195822946934889">Webbadressen får bara innehålla ASCII-tecken</translation>
 <translation id="4619564267100705184">Verifiera din identitet</translation>
 <translation id="4619615317237390068">Flikar från andra enheter</translation>
 <translation id="4620809267248568679">Den här inställningen är låst av ett tillägg.</translation>
@@ -4139,6 +4148,7 @@
 <translation id="4871568871368204250">Inaktivera synkronisering</translation>
 <translation id="4871719318659334896">Stäng grupp</translation>
 <translation id="4872192066608821120">Välj en CSV-fil för att importera lösenord</translation>
+<translation id="4872212987539553601">Konfigurera kryptering på enheten</translation>
 <translation id="4873312501243535625">Mediefilkontroll</translation>
 <translation id="4876273079589074638">Hjälp våra ingenjörer att undersöka och åtgärda den här kraschen. Ange de exakta stegen om du kan. Ingen detalj är för liten.</translation>
 <translation id="4876895919560854374">Låsa och låsa upp skärmen</translation>
@@ -5077,6 +5087,7 @@
 <translation id="5800351251499368110">Stäng sökning på sidopanelen. Sökning är öppet på sidopanelen.</translation>
 <translation id="5801568494490449797">Inställningar</translation>
 <translation id="5804241973901381774">Behörigheter</translation>
+<translation id="5805268472388605531">Tryck länge på tangenterna för att se accenttecken och specialtecken</translation>
 <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>
@@ -5718,6 +5729,7 @@
 <translation id="642469772702851743">Enheten (serienr: <ph name="SERIAL_NUMBER" />) har låsts av ägaren.</translation>
 <translation id="6425556984042222041">Hastighet för text till tal</translation>
 <translation id="642729974267661262">Får inte spela upp ljud</translation>
+<translation id="6427608534767366138">Proxyautentisering krävs för <ph name="NETWORK_ID" /></translation>
 <translation id="6429384232893414837">Uppdateringsfel</translation>
 <translation id="6430814529589430811">Base64-kodad ASCII, enstaka certifikat</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> konfigurerar automatiska uppdateringar för alla användare på den här datorn.</translation>
@@ -6436,6 +6448,7 @@
 <translation id="7093220653036489319">Snabbinfo</translation>
 <translation id="7093416310351037609">Av säkerhetsskäl kräver organisationen att alla nedladdningar som uppfyller villkoren sparas på organisationens <ph name="WEB_DRIVE" />-konto.</translation>
 <translation id="7093866338626856921">Utväxla data med enheterna <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Godkänn begäran om att casta på din <ph name="DEVICE_NAME" /></translation>
 <translation id="7098389117866926363">USB-C-enhet (vänstra porten på baksidan)</translation>
 <translation id="7098447629416471489">Andra sparade sökmotorer visas här</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Ta bort appen}other{Ta bort appar}}</translation>
@@ -6536,6 +6549,7 @@
 <translation id="7212097698621322584">Ange den nuvarande pinkoden om du vill ändra den. Om du inte kan pinkoden måste du återställa säkerhetsnyckeln och sedan ställa in en ny pinkod.</translation>
 <translation id="7213903639823314449">Sökmotorn som används i adressfältet</translation>
 <translation id="721490496276866468">Importera lösenord</translation>
+<translation id="7218514093816577632">Kontrollera att aviseringar har aktiverats på <ph name="DEVICE_NAME" />.</translation>
 <translation id="7219473482981809164">Vi har hittat flera profiler som är tillgängliga för nedladdning. Välj de profiler som du vill ladda ned innan du fortsätter.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Inga svaga lösenord}=1{1 svagt lösenord}other{{NUM_WEAK} svaga lösenord}}</translation>
 <translation id="7220019174139618249">Det gick inte att exportera lösenord till <ph name="FOLDER" /></translation>
@@ -7005,6 +7019,7 @@
 <translation id="7664620655576155379">Bluetooth-enhet som inte stöds: <ph name="DEVICE_NAME" />.</translation>
 <translation id="7665082356120621510">Reservera storlek</translation>
 <translation id="7665369617277396874">Lägg till konto</translation>
+<translation id="766635563210446220">Det gick inte att importera lösenorden. Kontrollera att <ph name="FILENAME" /> är korrekt formaterat. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Returnera <ph name="DEVICE_TYPE" /> inom {NUM_WEEKS} vecka}other{Returnera <ph name="DEVICE_TYPE" /> inom {NUM_WEEKS} veckor}}</translation>
 <translation id="7668423670802040666">I Google Lösenordshantering för <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Med tillgänglighetsfunktioner blir enheten lättare att använda. Du öppnar snabbinställningarna genom att välja klockan längst ned på skärmen.</translation>
@@ -7537,6 +7552,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{en video}other{# videor}}</translation>
 <translation id="8143442547342702591">Ogiltig app</translation>
 <translation id="8143609395536282994">Så här kan du hantera din data:</translation>
+<translation id="8145170459658034418">Minnessparläge</translation>
 <translation id="8146177459103116374">Om du redan är registrerad på den här enheten kan du <ph name="LINK2_START" />logga in som en befintlig användare<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Lägg till och rangordna önskade språk. När det är möjligt visas text på webbplatser på de önskade språken. Dessa inställningar synkroniseras med inställningarna för webbläsaren. <ph name="BEGIN_LINK_LEARN_MORE" />Läs mer<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Inloggningen misslyckades. Kontakta administratören eller försök igen.</translation>
@@ -7596,6 +7612,7 @@
 <translation id="8198456017687137612">Castar flik</translation>
 <translation id="8199300056570174101">Nätverkstjänst och enhetsegenskaper</translation>
 <translation id="8200772114523450471">Återuppta</translation>
+<translation id="8200789660596905522">Godkänn begäran om att casta på din <ph name="DEVICE_NAME" /></translation>
 <translation id="8202160505685531999">Ange lösenordet på nytt om du vill uppdatera din profil på <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Enhetsnamn för Närdelning</translation>
 <translation id="8203732864715032075">Skicka aviseringar till dig och komma ihåg den här datorn som standard för Messages. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
@@ -7847,6 +7864,7 @@
 <translation id="844063558976952706">Alltid på den här webbplatsen</translation>
 <translation id="8441313165929432954">Aktivera/inaktivera internetdelning</translation>
 <translation id="8443795068008423036">Kontrollera att enheten är uppdaterad och försök igen.</translation>
+<translation id="8443986842926457191">Webbadressen är längre än 2 048 tecken</translation>
 <translation id="8446884382197647889">Läs mer</translation>
 <translation id="8447409163267621480">Ctrl- eller alt-tangenten måste finnas med</translation>
 <translation id="844850004779619592">Inga kommandon hittades</translation>
@@ -7912,6 +7930,7 @@
 <translation id="851263357009351303">Tillåt alltid att <ph name="HOST" /> visar bilder</translation>
 <translation id="8513108775083588393">Rotera automatiskt</translation>
 <translation id="8514746246728959655">Testa med en annan säkerhetsnyckel</translation>
+<translation id="8519895319663397036">Det gick inte att importera lösenorden. Filstorleken får högst vara 150 kB.</translation>
 <translation id="8523493869875972733">Behåll ändringarna</translation>
 <translation id="8523849605371521713">Har lagts till av en policy</translation>
 <translation id="8524783101666974011">Spara kort i ditt Google-konto</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 4a4999e..40a045e4 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">Muda wa kupumzika umekaribia</translation>
 <translation id="1062628064301375934">Tusaidie kuunda wavuti wa faragha zaidi</translation>
 <translation id="1067048845568873861">Kiliundwa</translation>
+<translation id="1067661089446014701">Ili kuimarisha usalama, unaweza kusimba manenosiri kwenye kifaa chako kabla hayajahifadhiwa kwenye Akaunti yako ya Google</translation>
 <translation id="1067922213147265141">Huduma zingine za Google</translation>
 <translation id="1069355737714877171">Ondoa wasifu wa eSIM unaoitwa <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">Programu nyingine kwenye kompyuta yako iliongeza kiendelezi ambacho kinaweza kubadilisha jinsi Chrome hufanya kazi.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">Msimamizi wako anapendekeza thamani maalum ya mpangilio huu.</translation>
 <translation id="1225177025209879837">Inachakata ombi...</translation>
 <translation id="1227507814927581609">Uthibitishaji ulishindwa wakati wa kuunganishwa kwenye "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1227993798763400520">Imeshindwa kutuma. Tafadhali jaribu tena.</translation>
 <translation id="1230417814058465809">Kipengele cha ulinzi wa kawaida kimewashwa. Kwa usalama zaidi, tumia kipengele cha usalama ulioboreshwa.</translation>
 <translation id="1231733316453485619">Ungependa kuwasha usawazishaji?</translation>
 <translation id="1232569758102978740">Hakina Jina</translation>
@@ -692,6 +694,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 Na Usimbaji wa RSA</translation>
 <translation id="1641113438599504367">Kuvinjari Salama</translation>
 <translation id="1641496881756082050">Vitendo zaidi vya <ph name="NETWORK_NAME" /></translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{Nenosiri lingine 1 halijapakiwa kwa sababu lina muundo usio sahihi}other{Manenosiri mengine {NUM_PASSWORDS} hayajapakiwa kwa sababu yana muundo usio sahihi}}</translation>
 <translation id="1642492862748815878">Imeunganishwa kwenye <ph name="DEVICE" /> na vifaa vingine <ph name="NUMBER_OF_DEVICES" /> vyenye Bluetooth</translation>
 <translation id="1642494467033190216">Kuondoa ulinzi na kuzima na kuwasha rootfs kunahitajika kabla ya kuwasha vipengele vya kutatua.</translation>
 <translation id="1643072738649235303">Sahihi ya X9.62 ECDSA yenye SHA-1</translation>
@@ -1120,6 +1123,7 @@
 <translation id="2031914984822377766">Weka <ph name="LINK_BEGIN" />lugha unazopendelea zitumike kwenye tovuti<ph name="LINK_END" />. Lugha ya kwanza kwenye orodha itatumika kwa ajili ya tafsiri.</translation>
 <translation id="2033758234986231162">Imeshindwa kudumisha muunganisho na simu yako. Hakikisha simu yako ipo karibu, imefunguliwa na umewasha Bluetooth pamoja na Wi-Fi.</translation>
 <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="2037445849770872822">Mipangilio ya usimamizi ya Akaunti hii ya Google imewekwa. Ili uweke vidhibiti zaidi vya wazazi, bofya 'Endelea'.
 
@@ -1841,6 +1845,7 @@
 <translation id="2673135533890720193">Kusoma historia yako ya kuvinjari</translation>
 <translation id="2674764818721168631">Imezimwa</translation>
 <translation id="2678063897982469759">Washa tena</translation>
+<translation id="2678100101831051676">Imeshindwa kutuma.</translation>
 <translation id="268053382412112343">Historia</translation>
 <translation id="2681124317993121768">Wasifu wa wageni hauwezi kutumika</translation>
 <translation id="2682498795777673382">Taarifa kutoka kwa mzazi wako</translation>
@@ -2550,6 +2555,7 @@
 <translation id="3363202073972776113">Wasifu huu mpya utasimamiwa na shirika lako. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">Kutoka kwa msimamizi wako: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">Tumia Ctrl au Alt</translation>
+<translation id="3368586359109138591">Pakua nakala ya kuitumia sehemu nyingine</translation>
 <translation id="3368922792935385530">Umeunganishwa</translation>
 <translation id="3369067987974711168">Onyesha vitendo zaidi vya mlango huu</translation>
 <translation id="3369624026883419694">Inatafuta seva pangishi...</translation>
@@ -2738,6 +2744,7 @@
 <translation id="3532273508346491126">Udhibiti wa usawazishaji</translation>
 <translation id="3532521178906420528">Inaunganisha kwenye mtandao ...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - Sauti imezimwa</translation>
+<translation id="3536492240554502321">Kichujio cha kubadilisha rangi</translation>
 <translation id="3537881477201137177">Unaweza kubadilisha hali hii baadaye katika Mipangilio</translation>
 <translation id="3538066758857505094">Hitilafu imetokea wakati wa kuondoa Linux. Tafadhali jaribu tena.</translation>
 <translation id="354060433403403521">Kamba ya umeme</translation>
@@ -3063,6 +3070,7 @@
 <translation id="383669374481694771">Haya ni maelezo ya jumla kuhusu kifaa hiki na jinsi kinavyotumika (kama vile hitilafu, kiwango cha chaji ya betri, shughuli za programu na mfumo). Data itatumika kuboresha Android na baadhi ya maelezo yanayojumlishwa yatasaidia pia programu na washirika wa Google, kama vile wasanidi programu za Android, kuboresha programu na bidhaa zao.</translation>
 <translation id="3838085852053358637">Haijafaulu kupakia kiendelezi</translation>
 <translation id="3838486795898716504"><ph name="PAGE_TITLE" /> zaidi</translation>
+<translation id="3838487810283346084">Weka manenosiri yaliyohifadhiwa kwenye Kidhibiti cha Manenosiri cha Google</translation>
 <translation id="383891835335927981">Hakuna tovuti zilizovutwa karibu wala kusogezwa mbali</translation>
 <translation id="3839509547554145593">Ruhusu hali ya kuongeza kasi ya kusogeza kipanya</translation>
 <translation id="3839516600093027468">Zuia <ph name="HOST" /> kila wakati ili isione ubao wa kunakili</translation>
@@ -3873,6 +3881,7 @@
 <translation id="4617019240346358451">Pakia upya ukurasa ili utumie "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Chaguo za viendelezi</translation>
 <translation id="4617880081511131945">Imeshindwa kuunganisha kwenye simu</translation>
+<translation id="4618195822946934889">URL inaweza tu kuwa na herufi za ASCII</translation>
 <translation id="4619564267100705184">Thibitisha kwamba ni wewe</translation>
 <translation id="4619615317237390068">Vichupo kutoka kwenye vifaa vingine</translation>
 <translation id="4620809267248568679">Mpangilio huu unatekelezwa kwa kiendelezi.</translation>
@@ -4134,6 +4143,7 @@
 <translation id="4871568871368204250">Zima usawazishaji</translation>
 <translation id="4871719318659334896">Funga kikundi</translation>
 <translation id="4872192066608821120">Ili upakie manenosiri, chagua faili ya CSV</translation>
+<translation id="4872212987539553601">Weka mipangilio ya usimbaji fiche kwenye kifaa</translation>
 <translation id="4873312501243535625">Kikagua Faili za Maudhui</translation>
 <translation id="4876273079589074638">Wasaidie wahandisi wetu kuchunguza na kurekebisha hitilafu hii ya kuacha kufanya kazi. Orodhesha hatua kamili kama unaweza. Maelezo yote ni muhimu!</translation>
 <translation id="4876895919560854374">Funga na ufungue skrini</translation>
@@ -5072,6 +5082,7 @@
 <translation id="5800351251499368110">Funga utafutaji kwenye kidirisha cha pembeni. Utafutaji upo wazi kwenye kidirisha cha pembeni.</translation>
 <translation id="5801568494490449797">Mapendeleo</translation>
 <translation id="5804241973901381774">Idhini</translation>
+<translation id="5805268472388605531">Bonyeza na ushikilie vitufe vya kibodi ili uone herufi maalum na alama za jinsi herufi zinavyotamkwa</translation>
 <translation id="5805697420284793859">Kidhibiti cha dirisha</translation>
 <translation id="5806447147478173900">Jumla ya nafasi ya hifadhi iliyotumiwa na tovuti zilizoonyeshwa: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Chaguomsingi)</translation>
@@ -5713,6 +5724,7 @@
 <translation id="642469772702851743">Kifaa hiki (SN: <ph name="SERIAL_NUMBER" />) kimefungwa na mmiliki.</translation>
 <translation id="6425556984042222041">Kasi ya kusoma maandishi kwa sauti</translation>
 <translation id="642729974267661262">Zisizoruhusiwa kucheza sauti</translation>
+<translation id="6427608534767366138">Unahitaji kuthibitisha seva mbadala ya mtandao wa "<ph name="NETWORK_ID" />"</translation>
 <translation id="6429384232893414837">Hitilafu ya kusasisha</translation>
 <translation id="6430814529589430811">ASCII iliyosimbwa kwa Base64, cheti kimoja</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" /> itasanidi masasisho ya kiotomatiki kwa wale wote wanaotumia kompyuta hii.</translation>
@@ -6431,6 +6443,7 @@
 <translation id="7093220653036489319">Majibu ya haraka</translation>
 <translation id="7093416310351037609">Ili kuhakikisha usalama wa data, shirika lako linahitaji vipakuliwa vyote vilivyotimiza masharti vihifadhiwe kwenye akaunti ya <ph name="WEB_DRIVE" /> ya shirika lako.</translation>
 <translation id="7093866338626856921">Badilisha data kwa vifaa viitwavyo: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">Kubali ombi la kutuma maudhui kwenye <ph name="DEVICE_NAME" /> yako.</translation>
 <translation id="7098389117866926363">Kifaa cha USB-C (mlango wa kushoto nyuma)</translation>
 <translation id="7098447629416471489">Mitambo mingine ya kutafuta iliyohifadhiwa itaonekana hapa</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{Ondoa Programu}other{Ondoa Programu}}</translation>
@@ -6531,6 +6544,7 @@
 <translation id="7212097698621322584">Weka PIN yako ya sasa ili uibadilishe. Ikiwa hujui PIN yako, utahitaji kubadilisha ufunguo wako wa usalama, kisha uunde PIN mpya.</translation>
 <translation id="7213903639823314449">Mtambo wa kutafuta uliotumiwa kwenye sehemu ya anwani</translation>
 <translation id="721490496276866468">Pakia manenosiri</translation>
+<translation id="7218514093816577632">Hakikisha umewasha arifa kwenye <ph name="DEVICE_NAME" /> yako.</translation>
 <translation id="7219473482981809164">Tumepata wasifu kadhaa unaoweza kupakua. Chagua wasifu ambao ungependa kupakua kabla ya kuendelea.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{Hamna manenosiri dhaifu}=1{Nenosiri moja dhaifu}other{Manenosiri {NUM_WEAK} dhaifu}}</translation>
 <translation id="7220019174139618249">Imeshindwa kuhamishia manenosiri kwenye "<ph name="FOLDER" />"</translation>
@@ -7000,6 +7014,7 @@
 <translation id="7664620655576155379">Kifaa cha Bluetooth kisichoweza kutumiwa: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">Hifadhi nafasi</translation>
 <translation id="7665369617277396874">Ongeza akaunti</translation>
+<translation id="766635563210446220">Imeshindwa kupakia manenosiri. Angalia <ph name="FILENAME" /> na uhakikishe ina muundo sahihi. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{Rudisha <ph name="DEVICE_TYPE" /> ndani ya wiki {NUM_WEEKS}}other{Rudisha <ph name="DEVICE_TYPE" /> ndani ya wiki {NUM_WEEKS}}}</translation>
 <translation id="7668423670802040666">Kwenye Kidhibiti cha Manenosiri cha Google cha <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">Vipengele vya ufikivu vinakifanya kifaa chako kiwe rahisi kutumia. Ili ufikie Mipangilio ya Haraka, chagua muda kwenye sehemu ya chini ya skrini yako.</translation>
@@ -7533,6 +7548,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{video}other{Video #}}</translation>
 <translation id="8143442547342702591">Programu si sahihi</translation>
 <translation id="8143609395536282994">Jinsi ambavyo unaweza kudhibiti data yako:</translation>
+<translation id="8145170459658034418">Mipangilio ya Kuhifadhi Kumbukumbu</translation>
 <translation id="8146177459103116374">Ikiwa tayari umeingia kwenye kifaa hiki, unaweza <ph name="LINK2_START" /> kuingia kama mtumiaji aliyepo<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">Weka lugha unazopendelea na uziorodheshe utakavyo. Tovuti zitaonyeshwa katika lugha unayopendelea, panapowezekana. Mapendeleo haya husawazishwa na mipangilio ya kivinjari chako. <ph name="BEGIN_LINK_LEARN_MORE" />Pata maelezo zaidi<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">Haikufaulu kuingia katika akaunti. Tafadhali wasiliana na msimamizi wako au ujaribu tena.</translation>
@@ -7592,6 +7608,7 @@
 <translation id="8198456017687137612">Inatuma maudhui ya kichupo</translation>
 <translation id="8199300056570174101">Sifa za Kifaa na Mtandao (Huduma)</translation>
 <translation id="8200772114523450471">Endelea</translation>
+<translation id="8200789660596905522">Hakikisha unakubali ombi la Kutuma maudhui kwenye <ph name="DEVICE_NAME" /> yako.</translation>
 <translation id="8202160505685531999">Tafadhali andika tena nenosiri lako ili usasishe wasifu wako kwenye <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8203152941016626022">Jina la kifaa kwenye kipengele cha Uhamishaji wa Karibu</translation>
 <translation id="8203732864715032075">Kukutumia arifa na mipangilio chaguomsingi ili ukumbuke kompyuta hii kwa ajili ya Ujumbe. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation>
@@ -7843,6 +7860,7 @@
 <translation id="844063558976952706">Kila wakati kwenye tovuti hii</translation>
 <translation id="8441313165929432954">Washa au Zima Kipengele cha Kusambaza mtandao</translation>
 <translation id="8443795068008423036">Tafadhali hakikisha kuwa kifaa chako kimesasishwa kisha ujaribu tena</translation>
+<translation id="8443986842926457191">URL imezidi herufi 2048</translation>
 <translation id="8446884382197647889">Pata Maelezo Zaidi</translation>
 <translation id="8447409163267621480">Jumuisha kitufe cha Ctrl au Alt</translation>
 <translation id="844850004779619592">Hakuna amri zilizopatikana</translation>
@@ -7908,6 +7926,7 @@
 <translation id="851263357009351303">Ruhusu <ph name="HOST" /> ionyeshe picha kila wakati</translation>
 <translation id="8513108775083588393">Zungusha kiotomatiki</translation>
 <translation id="8514746246728959655">Jaribu ufunguo tofauti wa usalama</translation>
+<translation id="8519895319663397036">Imeshindwa kupakia manenosiri. Ukubwa wa faili unapaswa kuwa chini ya KB 150.</translation>
 <translation id="8523493869875972733">Hifadhi Mabadiliko</translation>
 <translation id="8523849605371521713">Imeongezwa na sera</translation>
 <translation id="8524783101666974011">Hifadhi kadi kwenye Akaunti yako ya Google</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index 2f9a0a8c..442a368b 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">சாதனம் பூட்டப்பட உள்ளது</translation>
 <translation id="1062628064301375934">இன்னும் சிறந்த தனிப்பட்ட இணையத்தை உருவாக்க எங்களுக்கு உதவுங்கள்</translation>
 <translation id="1067048845568873861">உருவாக்கப்பட்டது</translation>
+<translation id="1067661089446014701">கூடுதல் பாதுகாப்பிற்காக, உங்கள் Google கணக்கில் சேமிக்கப்படுவதற்கு முன்பு உங்கள் சாதனத்தில் கடவுச்சொற்களை என்க்ரிப்ஷன் செய்யலாம்</translation>
 <translation id="1067922213147265141">பிற Google சேவைகள்</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> என்ற eSIM சுயவிவரத்தை அகற்றும்</translation>
 <translation id="1070377999570795893">உங்கள் கம்ப்யூட்டரில் உள்ள மற்றொரு நிரல் Chrome செயல்படும் முறையை மாற்றக்கூடிய ஒரு நீட்டிப்பைச் சேர்த்துள்ளது.
@@ -251,6 +252,7 @@
 <translation id="1223853788495130632">இந்த அமைப்பிற்கான குறிப்பிட்ட மதிப்பை உங்கள் நிர்வாகி பரிந்துரைக்கிறார்.</translation>
 <translation id="1225177025209879837">கோரிக்கை செயலாக்கப்படுகிறது...</translation>
 <translation id="1227507814927581609">"<ph name="DEVICE_NAME" />" உடன் இணைக்கும்போது அங்கீகரிப்பு தோல்வியடைந்தது.</translation>
+<translation id="1227993798763400520">அலைபரப்ப முடியவில்லை. மீண்டும் முயலவும்.</translation>
 <translation id="1230417814058465809">நிலையான பாதுகாப்பு இயக்கப்பட்டுள்ளது. இன்னும் கூடுதலான பாதுகாப்பிற்கு மேம்பட்ட பாதுகாப்பைப் பயன்படுத்துங்கள்.</translation>
 <translation id="1231733316453485619">ஒத்திசைவை இயக்கவா?</translation>
 <translation id="1232569758102978740">தலைப்பிடாதது</translation>
@@ -1125,6 +1127,7 @@
 <translation id="2031914984822377766">விருப்பமான <ph name="LINK_BEGIN" />இணையதள மொழிகளைச்<ph name="LINK_END" /> சேர்க்கவும். மொழிபெயர்ப்புகளுக்கு, பட்டியலில் முதலில் உள்ள மொழி பயன்படுத்தப்படும்.</translation>
 <translation id="2033758234986231162">உங்கள் மொபைலுடன் இணைப்பில் இருக்க முடியவில்லை. மொபைல் அன்லாக் செய்யப்பட்டு அருகில் இருப்பதையும் அதில் புளூடூத், வைஃபை இயக்கப்பட்டிருப்பதையும் உறுதிசெய்துகொள்ளவும்.</translation>
 <translation id="2034346955588403444">பிற வைஃபை நெட்வொர்க்கைச் சேர்</translation>
+<translation id="2035211704574173780">கிரேஸ்கேல்</translation>
 <translation id="203574396658008164">லாக் ஸ்கிரீனில் குறிப்பெடுப்பதை இயக்கு</translation>
 <translation id="2037445849770872822">இந்த Google கணக்கிற்கான கண்காணிப்பு அமைப்பு. கூடுதல் பெற்றோர் கட்டுப்பாடுகளை அமைக்க ’தொடர்க’ என்பதைத் தேர்ந்தெடுக்கவும்.
 
@@ -2555,6 +2558,7 @@
 <translation id="3363202073972776113">இந்தப் புதிய சுயவிவரத்தை உங்கள் நிறுவனம் நிர்வகிக்கும். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">உங்கள் நிர்வாகியிடமிருந்து: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">கன்ட்ரோல் அல்லது ஆல்ட் விசையைப் பயன்படுத்தவும்</translation>
+<translation id="3368586359109138591">வேறு இடத்தில் பயன்படுத்த நகலைப் பதிவிறக்கலாம்</translation>
 <translation id="3368922792935385530">இணைக்கப்பட்டது</translation>
 <translation id="3369067987974711168">இந்தப் போர்ட்டிற்கான கூடுதல் செயல்களைக் காட்டு</translation>
 <translation id="3369624026883419694">ஹோஸ்ட்டைக் கண்டறிகிறது...</translation>
@@ -2743,6 +2747,7 @@
 <translation id="3532273508346491126">ஒத்திசைவு அமைப்புகள்</translation>
 <translation id="3532521178906420528">நெட்வொர்க்குடன் இணைக்கிறது...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - ஆடியோ முடக்கப்பட்டது</translation>
+<translation id="3536492240554502321">நிறச்சாயல் ஸ்லைடர்</translation>
 <translation id="3537881477201137177">இதை அமைப்புகளில் பின்னர் மாற்றிக்கொள்ளலாம்</translation>
 <translation id="3538066758857505094">Linuxஸை நிறுவல் நீக்கும்போது பிழை ஏற்பட்டது. மீண்டும் முயலவும்.</translation>
 <translation id="354060433403403521">AC அடாப்டர்</translation>
@@ -3068,6 +3073,7 @@
 <translation id="383669374481694771">இந்தச் சாதனம் மற்றும் இதைப் பயன்படுத்தும் விதம் (பேட்டரியின் அளவு, சிஸ்டம் மற்றும் ஆப்ஸ் செயல்பாடு மற்றும் பிழைகள் போன்றவை) குறித்த பொதுவான தகவல் இது. Androidடை மேம்படுத்த இந்தத் தரவு பயன்படுத்தப்படும். மேலும், Google ஆப்ஸுக்கும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்கள் தங்களின் ஆப்ஸ் மற்றும் தயாரிப்புகளைச் சிறப்பாக அமைக்கவும் ஒருங்கிணைக்கப்பட்ட சில தரவு உதவும்.</translation>
 <translation id="3838085852053358637">நீட்டிப்பை ஏற்ற முடியவில்லை</translation>
 <translation id="3838486795898716504">மேலும் <ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">சேமிக்கப்பட்ட கடவுச்சொற்களை Google Password Managerரில் சேர்க்கலாம்</translation>
 <translation id="383891835335927981">எந்தத் தளங்களும் பெரிதாக்கப்படவோ சிறிதாக்கப்படவோ இல்லை</translation>
 <translation id="3839509547554145593">'மவுஸைத் துரிதமாக நகர்த்துதல்' அம்சத்தை இயக்கு</translation>
 <translation id="3839516600093027468"><ph name="HOST" />, கிளிப்போர்டைப் பார்ப்பதை எப்போதும் தடைசெய்</translation>
@@ -4142,6 +4148,7 @@
 <translation id="4871568871368204250">ஒத்திசைவை முடக்கவும்</translation>
 <translation id="4871719318659334896">குழுவை மூடுக</translation>
 <translation id="4872192066608821120">கடவுச்சொற்களை ஏற்ற CSV ஃபைலைத் தேர்ந்தெடுக்கவும்</translation>
+<translation id="4872212987539553601">சாதனத்திற்குள்ளான என்க்ரிப்ஷனை அமையுங்கள்</translation>
 <translation id="4873312501243535625">மீடியா ஃபைல் செக்கர்</translation>
 <translation id="4876273079589074638">இந்தச் சிதைவிற்கான காரணங்களை ஆராய்ந்து, சரிசெய்வதற்கு எங்கள் பொறியாளர்களுக்கு உதவவும். முடிந்தால், என்ன நடந்தது என்பதைத் துல்லியமாகப் பட்டியலிடவும். நீங்கள் வழங்கும் சிறிய தகவலும் எங்களுக்கு உதவும்!</translation>
 <translation id="4876895919560854374">திரையை லாக் மற்றும் அன்லாக் செய்தல்</translation>
@@ -6442,6 +6449,7 @@
 <translation id="7093220653036489319">விரைவான பதில்கள்</translation>
 <translation id="7093416310351037609">தரவைப் பாதுகாப்பாகவும் பத்திரமாகவும் வைத்திருக்க, தகுதிபெறும் பதிவிறக்கங்கள் அனைத்தும் நிறுவனத்தின் <ph name="WEB_DRIVE" /> கணக்கில் சேமிக்கப்பட வேண்டுமென உங்கள் நிறுவனம் கோருகிறது.</translation>
 <translation id="7093866338626856921">பின்வரும் பெயரிடப்பட்ட எந்தச் சாதனங்களுடனும் தரவைப் பரிமாறவும்: <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">உங்கள் <ph name="DEVICE_NAME" /> சாதனத்தில் அலைபரப்புக் கோரிக்கையை ஏற்றுக்கொள்ளுங்கள்.</translation>
 <translation id="7098389117866926363">USB-C சாதனம் (பின்பக்கம் உள்ள இடது போர்ட்)</translation>
 <translation id="7098447629416471489">சேமித்த பிற தேடல் இன்ஜின்கள் இங்கே தோன்றும்</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{ஆப்ஸை அகற்று}other{ஆப்ஸை அகற்று}}</translation>
@@ -6542,6 +6550,7 @@
 <translation id="7212097698621322584">தற்போதைய பின்னை மாற்ற அதை உள்ளிடவும். பின் தெரியவில்லை என்றால் புதிய பின்னை உருவாக்க பாதுகாப்பு விசையை மீட்டமைக்க வேண்டும்.</translation>
 <translation id="7213903639823314449">முகவரிப் பட்டியில் பயன்படுத்தப்படும் தேடல் இன்ஜின்</translation>
 <translation id="721490496276866468">கடவுச்சொற்களை ஏற்றுதல்</translation>
+<translation id="7218514093816577632">உங்கள் <ph name="DEVICE_NAME" /> சாதனத்தில் அறிவிப்புகள் இயக்கப்பட்டிருப்பதை உறுதிசெய்துகொள்ளவும்.</translation>
 <translation id="7219473482981809164">நீங்கள் பதிவிறக்கிக் கொள்ளப் பல்வேறு சுயவிவரங்கள் உள்ளன. தொடர்வதற்கு முன் பதிவிறக்க விரும்புபவற்றைத் தேர்ந்தெடுக்கவும்.</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{வலுவற்ற கடவுச்சொற்கள் எதுவுமில்லை}=1{1 வலுவற்ற கடவுச்சொல்}other{{NUM_WEAK} வலுவற்ற கடவுச்சொற்கள்}}</translation>
 <translation id="7220019174139618249">"<ph name="FOLDER" />" எனும் ஃபோல்டருக்குக் கடவுச்சொற்களை ஏற்ற முடியவில்லை</translation>
@@ -7011,6 +7020,7 @@
 <translation id="7664620655576155379">ஆதரிக்கப்படாத புளூடூத் சாதனம்: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="7665082356120621510">அளவை ரிசர்வ் செய்</translation>
 <translation id="7665369617277396874">கணக்கைச் சேர்</translation>
+<translation id="766635563210446220">கடவுச்சொற்களை ஏற்ற முடியவில்லை. <ph name="FILENAME" /> ஃபைலைச் சரிபார்த்து அது சரியாக ஃபார்மேட் செய்யப்பட்டுள்ளதை உறுதிசெய்துகொள்ளவும். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></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">Google கடவுச்சொல் நிர்வாகியில் <ph name="ACCOUNT" /> கணக்கின் கடவுச்சொல் சேமிக்கப்பட்டது</translation>
 <translation id="7668648754769651616">உங்கள் சாதனத்தை எளிதாகப் பயன்படுத்த அணுகல்தன்மை அம்சங்கள் உதவுகின்றன. விரைவு அமைப்புகளை அணுக, திரையின் கீழ்ப்பகுதியில் நேரத்தைத் தேர்ந்தெடுக்கவும்.</translation>
@@ -7543,6 +7553,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{ஒரு வீடியோவை}other{# வீடியோக்களை}}</translation>
 <translation id="8143442547342702591">தவறான ஆப்ஸ்</translation>
 <translation id="8143609395536282994">உங்கள் தரவை நீங்கள் எப்படி நிர்வகிக்கலாம்?</translation>
+<translation id="8145170459658034418">நினைவகச் சேமிப்பான்</translation>
 <translation id="8146177459103116374">இந்த சாதனத்தில் ஏற்கனவே பதிவுசெய்திருந்தால், <ph name="LINK2_START" />நடப்புப் பயனராக உள்நுழையலாம்<ph name="LINK2_END" />.</translation>
 <translation id="8146287226035613638">விருப்பமான மொழிகளைச் சேர்த்து வரிசைப்படுத்தலாம். இணையதளங்கள் அந்த மொழிகளில் காட்டப்படும் (கிடைக்கும்பட்சத்தில்). இந்த விருப்பத்தேர்வுகள் உங்கள் உலாவி அமைப்புகளுடன் ஒத்திசைக்கப்படும். <ph name="BEGIN_LINK_LEARN_MORE" />மேலும் அறிக<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">உள்நுழைய முடியவில்லை. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும் அல்லது மீண்டும் முயலவும்.</translation>
@@ -7602,6 +7613,7 @@
 <translation id="8198456017687137612">தாவலை அலைபரப்புகிறது</translation>
 <translation id="8199300056570174101">நெட்வொர்க் (சேவை) மற்றும் சாதனப் பண்புகள்</translation>
 <translation id="8200772114523450471">மீண்டும் தொடங்கு</translation>
+<translation id="8200789660596905522">உங்கள் <ph name="DEVICE_NAME" /> சாதனத்தில் அலைபரப்புக் கோரிக்கையை அவசியம் ஏற்றுக்கொள்ளுங்கள்.</translation>
 <translation id="8202160505685531999">உங்கள் <ph name="DEVICE_TYPE" /> சுயவிவரத்தைப் புதுப்பிக்க உங்கள் கடவுச்சொல்லை மீண்டும் உள்ளிடவும்.</translation>
 <translation id="8203152941016626022">’அருகிலுள்ளவற்றுடன் பகிர்தல்’ அம்சத்திற்கான சாதனப் பெயர்</translation>
 <translation id="8203732864715032075">இந்தக் கம்ப்யூட்டரை இயல்பாக நினைவில் வைத்து, மெசேஜஸ் அறிவிப்புகளை அனுப்பும். <ph name="LINK_BEGIN" />மேலும் அறிக<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 262439c..1060d511 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -2188,6 +2188,7 @@
 <translation id="2977480621796371840">గుంపు నుండి తీసివేయండి</translation>
 <translation id="2979639724566107830">కొత్త విండోలో తెరువు</translation>
 <translation id="2981113813906970160">పెద్ద మౌస్ కర్సర్‌ను చూపు</translation>
+<translation id="2981293774053328982">ఈ ఫైల్ మాల్‌వేర్‌ను కలిగి ఉంది, దీని వలన మీ వ్యక్తిగత లేదా సోషల్ నెట్‌వర్క్ ఖాతాలకు ప్రమాదం కలగవచ్చు</translation>
 <translation id="2983373101216420412">కేస్ బ్యాటరీ స్థాయి <ph name="PERCENTAGE" />%.</translation>
 <translation id="2985348301114641460">"<ph name="EXTENSION_NAME" />"ను ఇన్‌స్టాల్ చేయడానికి మీ అడ్మినిస్ట్రేటర్‌కు రిక్వెస్ట్‌ పంపాలా?</translation>
 <translation id="2987620471460279764">ఇతర పరికరం నుండి షేర్ చేయబడిన వచనం</translation>
@@ -3773,6 +3774,7 @@
 <translation id="4514610446763173167">ప్లే లేదా పాజ్ చేయడానికి వీడియోని టోగుల్ చేయండి</translation>
 <translation id="451515744433878153">తీసివేయండి</translation>
 <translation id="4515872537870654449">సేవ పొందడానికి డెల్‌ను సంప్రదించండి. ఫ్యాన్ పని చేయలేదంటే, ఈ డాక్ షట్ డౌన్ అవుతుంది.</translation>
+<translation id="4518840066030486079">Shift కీ మోడ్ స్టయిల్</translation>
 <translation id="4519331665958994620">మీ కెమెరాను ఉపయోగించడానికి సైట్‌లు అడగవచ్చు</translation>
 <translation id="4519935350946509010">కనెక్షన్ ఎర్రర్.</translation>
 <translation id="4520385623207007473">ఉపయోగంలో ఉన్న కుక్కీలు</translation>
@@ -3868,6 +3870,7 @@
 <translation id="4598345735110653698">పాస్-కీలను మేనేజ్ చేయండి</translation>
 <translation id="4598556348158889687">నిల్వ నిర్వహణ</translation>
 <translation id="4598776695426288251">బహుళ పరికరాల ద్వారా Wi-Fi అందుబాటులో ఉంది</translation>
+<translation id="4600071396330666617">సూచనల సంఖ్య</translation>
 <translation id="4601426376352205922">చదవనిదిగా మార్క్ చేయండి</translation>
 <translation id="4602466770786743961">మీ కెమెరా మరియు మైక్రోఫోన్‌ను యాక్సెస్ చేయడానికి <ph name="HOST" />ను ఎల్లప్పుడూ అనుమతించండి</translation>
 <translation id="4606551464649945562">మీ పరిసరాల 3D మ్యాప్‌ను రూపొందించడానికి లేదా కెమెరా పొజిషన్‌ను ట్రాక్ చేయడానికి సైట్‌లను అనుమతించవద్దు</translation>
@@ -4314,6 +4317,7 @@
 <translation id="5043913660911154449">లేదా మీ ప్రింటర్ PPDని పేర్కొనండి <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">సరికాని పాస్‌వర్డ్</translation>
 <translation id="504561833207953641">ఇప్పటికే ఉన్న బ్రౌజర్ సెషన్‌లో తెరుస్తోంది.</translation>
+<translation id="5049614114599109018">ఇన్‌పుట్ హిస్టరీని ఉపయోగించండి</translation>
 <translation id="5051836348807686060">మీరు ఎంచుకున్న భాషలకు స్పెల్‌చెక్ మద్దతు లేదు</translation>
 <translation id="5052499409147950210">సైట్‌ను ఎడిట్ చేయండి</translation>
 <translation id="505347685865235222">పేరు లేని గ్రూప్ - <ph name="GROUP_CONTENT_STRING" /></translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 6612657..80ef6ca 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">เกือบถึงเวลาพักแล้ว</translation>
 <translation id="1062628064301375934">ช่วยเราสร้างเว็บที่มีความเป็นส่วนตัวมากขึ้น</translation>
 <translation id="1067048845568873861">สร้างแล้ว</translation>
+<translation id="1067661089446014701">คุณสามารถเข้ารหัสให้กับรหัสผ่านในอุปกรณ์ก่อนบันทึกลงในบัญชี Google เพื่อเพิ่มความปลอดภัย</translation>
 <translation id="1067922213147265141">บริการอื่นๆ ของ Google</translation>
 <translation id="1069355737714877171">ลบโปรไฟล์ eSIM ที่มีชื่อว่า <ph name="PROFILE_NAME" /></translation>
 <translation id="1070377999570795893">โปรแกรมอื่นบนคอมพิวเตอร์ได้เพิ่มส่วนขยายที่อาจเปลี่ยนลักษณะการทำงานของ Chrome
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">ผู้ดูแลระบบของคุณแนะนำให้ใช้ค่าเฉพาะสำหรับการตั้งค่านี้</translation>
 <translation id="1225177025209879837">กำลังดำเนินการตามคำขอ...</translation>
 <translation id="1227507814927581609">การตรวจสอบสิทธิ์ล้มเหลวขณะที่เชื่อมต่อกับ "<ph name="DEVICE_NAME" />"</translation>
+<translation id="1227993798763400520">แคสต์ไม่สำเร็จ โปรดลองอีกครั้ง</translation>
 <translation id="1230417814058465809">การปกป้องแบบมาตรฐานเปิดอยู่ ใช้การปกป้องที่ปรับปรุงแล้วเพื่อความปลอดภัยมากขึ้น</translation>
 <translation id="1231733316453485619">เปิดการซิงค์ไหม</translation>
 <translation id="1232569758102978740">ไม่ระบุชื่อ</translation>
@@ -1113,6 +1115,7 @@
 <translation id="2031914984822377766">เพิ่ม<ph name="LINK_BEGIN" />ภาษาของเว็บไซต์<ph name="LINK_END" />ที่คุณต้องการ ระบบจะใช้ภาษาที่อยู่ด้านบนของรายการสำหรับคำแปล</translation>
 <translation id="2033758234986231162">คงการเชื่อมต่อกับโทรศัพท์ไว้ไม่ได้ ตรวจสอบว่าโทรศัพท์อยู่ใกล้ๆ ปลดล็อกแล้ว และเปิดบลูทูธกับ Wi-Fi ไว้</translation>
 <translation id="2034346955588403444">เพิ่มเครือข่าย Wi-Fi อื่นๆ</translation>
+<translation id="2035211704574173780">โหมดสีเทา</translation>
 <translation id="203574396658008164">เปิดใช้การจดบันทึกจากหน้าจอล็อก</translation>
 <translation id="2037445849770872822">มีการตั้งค่าการควบคุมดูแลสำหรับบัญชี Google นี้ หากต้องการตั้งค่าการควบคุมโดยผู้ปกครองเพิ่มเติม ให้เลือก "ต่อไป"
 
@@ -2541,6 +2544,7 @@
 <translation id="3363202073972776113">โปรไฟล์ใหม่นี้จะจัดการโดยองค์กรของคุณ <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">จากผู้ดูแลระบบ: <ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">ใช้ Ctrl หรือ Alt อย่างใดอย่างหนึ่ง</translation>
+<translation id="3368586359109138591">ดาวน์โหลดสำเนาเพื่อใช้ที่อื่น</translation>
 <translation id="3368922792935385530">เชื่อมต่อแล้ว</translation>
 <translation id="3369067987974711168">แสดงการทำงานเพิ่มเติมสำหรับพอร์ตนี้</translation>
 <translation id="3369624026883419694">กำลังแปลงโฮสต์...</translation>
@@ -2729,6 +2733,7 @@
 <translation id="3532273508346491126">การจัดการการซิงค์</translation>
 <translation id="3532521178906420528">กำลังทำการเชื่อมต่อเครือข่าย...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - ปิดเสียงอยู่</translation>
+<translation id="3536492240554502321">การหมุนโทนสี</translation>
 <translation id="3537881477201137177">แก้ไขค่านี้ในภายหลังได้ในการตั้งค่า</translation>
 <translation id="3538066758857505094">เกิดข้อผิดพลาดขณะถอนการติดตั้ง Linux โปรดลองอีกครั้ง</translation>
 <translation id="354060433403403521">อะแดปเตอร์ AC</translation>
@@ -3054,6 +3059,7 @@
 <translation id="383669374481694771">นี่คือข้อมูลทั่วไปเกี่ยวกับอุปกรณ์และการใช้งานอุปกรณ์ (เช่น ระดับแบตเตอรี่ กิจกรรมในระบบและแอป ตลอดจนข้อผิดพลาด) ระบบจะใช้ข้อมูลเพื่อปรับปรุง Android และข้อมูลที่รวบรวมมาบางส่วนก็ยังจะช่วยให้แอปและพาร์ทเนอร์ของ Google เช่น นักพัฒนาแอป Android พัฒนาแอปและผลิตภัณฑ์ของตนให้ดีขึ้นด้วย</translation>
 <translation id="3838085852053358637">ไม่สามารถโหลดส่วนขยาย</translation>
 <translation id="3838486795898716504"><ph name="PAGE_TITLE" /> เพิ่มเติม</translation>
+<translation id="3838487810283346084">เพิ่มรหัสผ่านที่บันทึกไว้ลงใน Google เครื่องมือจัดการรหัสผ่าน</translation>
 <translation id="383891835335927981">ไม่มีการซูมเข้าหรือซูมออกเว็บไซต์ใดๆ</translation>
 <translation id="3839509547554145593">เปิดใช้การเร่งการเลื่อนเมาส์</translation>
 <translation id="3839516600093027468">บล็อก <ph name="HOST" /> ไม่ให้ดูคลิปบอร์ดเสมอ</translation>
@@ -4129,6 +4135,7 @@
 <translation id="4871568871368204250">ปิดการซิงค์</translation>
 <translation id="4871719318659334896">ปิดกลุ่ม</translation>
 <translation id="4872192066608821120">หากต้องการนำเข้ารหัสผ่าน ให้เลือกไฟล์ CSV</translation>
+<translation id="4872212987539553601">ตั้งค่าการเข้ารหัสในอุปกรณ์</translation>
 <translation id="4873312501243535625">ตัวตรวจสอบไฟล์สื่อ</translation>
 <translation id="4876273079589074638">ช่วยวิศวกรของเราตรวจสอบและแก้ไขข้อขัดข้องนี้ ระบุขั้นตอนที่แน่นอนหากทำได้ ไม่มีรายละเอียดใดที่ไร้ประโยชน์!</translation>
 <translation id="4876895919560854374">ล็อกและปลดล็อกหน้าจอ</translation>
@@ -6426,6 +6433,7 @@
 <translation id="7093220653036489319">คำตอบด่วน</translation>
 <translation id="7093416310351037609">องค์กรของคุณกำหนดให้บันทึกไฟล์ดาวน์โหลดที่มีสิทธิ์ทั้งหมดลงในบัญชี <ph name="WEB_DRIVE" /> ขององค์กร เพื่อความปลอดภัยของข้อมูลและการรักษาความปลอดภัย</translation>
 <translation id="7093866338626856921">แลกเปลี่ยนข้อมูลกับอุปกรณ์ชื่อ <ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">ยอมรับคำขอแคสต์ใน "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7098389117866926363">อุปกรณ์ USB-C (พอร์ตด้านหลังซ้าย)</translation>
 <translation id="7098447629416471489">เครื่องมือค้นหาอื่นๆ ที่บันทึกไว้จะแสดงที่นี่</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{นำแอปออก}other{นำแอปออก}}</translation>
@@ -6526,6 +6534,7 @@
 <translation id="7212097698621322584">ป้อน PIN ปัจจุบันเพื่อเปลี่ยน PIN หากไม่ทราบ PIN คุณจะต้องรีเซ็ตคีย์ความปลอดภัย แล้วสร้าง PIN ใหม่</translation>
 <translation id="7213903639823314449">เครื่องมือค้นหาที่ใช้ในแถบที่อยู่</translation>
 <translation id="721490496276866468">นำเข้ารหัสผ่าน</translation>
+<translation id="7218514093816577632">ตรวจสอบว่าการแจ้งเตือนใน "<ph name="DEVICE_NAME" />" เปิดอยู่</translation>
 <translation id="7219473482981809164">พบหลายโปรไฟล์พร้อมให้ดาวน์โหลด เลือกโปรไฟล์ที่ต้องการก่อนดำเนินการต่อ</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{ไม่มีรหัสผ่านที่ไม่รัดกุม}=1{มีรหัสผ่านที่ไม่รัดกุม 1 รายการ}other{มีรหัสผ่านที่ไม่รัดกุม {NUM_WEAK} รายการ}}</translation>
 <translation id="7220019174139618249">ส่งออกรหัสผ่านไปยัง "<ph name="FOLDER" />" ไม่ได้</translation>
@@ -6996,6 +7005,7 @@
 <translation id="7664620655576155379">อุปกรณ์บลูทูธที่ไม่สนับสนุน: "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7665082356120621510">สำรองพื้นที่</translation>
 <translation id="7665369617277396874">เพิ่มบัญชี</translation>
+<translation id="766635563210446220">นำเข้ารหัสผ่านไม่ได้ ตรวจสอบ <ph name="FILENAME" /> ว่าอยู่ในรูปแบบที่ถูกต้อง <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></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">ในเครื่องมือจัดการรหัสผ่านของ Google สำหรับ <ph name="ACCOUNT" /></translation>
 <translation id="7668648754769651616">ฟีเจอร์การช่วยเหลือพิเศษจะช่วยให้อุปกรณ์ใช้งานง่ายยิ่งขึ้น หากต้องการเข้าถึงการตั้งค่าด่วน ให้เลือกเวลาที่ด้านล่างของหน้าจอ</translation>
@@ -7527,6 +7537,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{1 วิดีโอ}other{# วิดีโอ}}</translation>
 <translation id="8143442547342702591">แอปพลิเคชันไม่ถูกต้อง</translation>
 <translation id="8143609395536282994">วิธีจัดการข้อมูลของตนเอง</translation>
+<translation id="8145170459658034418">การประหยัดหน่วยความจำ</translation>
 <translation id="8146177459103116374">หากคุณได้ลงทะเบียนในอุปกรณ์นี้แล้ว คุณสามารถ<ph name="LINK2_START" />ลงชื่อเข้าใช้ในฐานะผู้ใช้ที่มีอยู่แล้ว<ph name="LINK2_END" />ได้</translation>
 <translation id="8146287226035613638">เพิ่มและจัดอันดับภาษาที่ต้องการ เว็บไซต์จะแสดงในภาษาที่คุณต้องการ เมื่อเป็นไปได้ ระบบจะซิงค์ค่ากำหนดเหล่านี้กับการตั้งค่าเบราว์เซอร์ <ph name="BEGIN_LINK_LEARN_MORE" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">การลงชื่อเข้าใช้ไม่สำเร็จ โปรดติดต่อผู้ดูแลระบบหรือลองอีกครั้ง</translation>
@@ -7586,6 +7597,7 @@
 <translation id="8198456017687137612">กำลังแคสต์แท็บ</translation>
 <translation id="8199300056570174101">เครือข่าย (บริการ) และคุณสมบัติอุปกรณ์</translation>
 <translation id="8200772114523450471">ทำต่อ</translation>
+<translation id="8200789660596905522">อย่าลืมยอมรับคำขอแคสต์ใน "<ph name="DEVICE_NAME" />"</translation>
 <translation id="8202160505685531999">โปรดป้อนรหัสผ่านใหม่เพื่ออัปเดตโปรไฟล์ <ph name="DEVICE_TYPE" /> ของคุณ</translation>
 <translation id="8203152941016626022">ชื่ออุปกรณ์ของการแชร์ใกล้เคียง</translation>
 <translation id="8203732864715032075">ส่งการแจ้งเตือนให้คุณและตั้งค่าเริ่มต้นให้ Messages จดจำคอมพิวเตอร์เครื่องนี้ <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 5e27ef1..27a4b33 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -5385,7 +5385,7 @@
 <translation id="6078769373519310690">"<ph name="CHROME_EXTENSION_NAME" />" muốn kết nối với một thiết bị HID (thiết bị giao diện tương tác với con người)</translation>
 <translation id="608029822688206592">Không tìm thấy mạng. Vui lòng lắp SIM rồi thử lại.</translation>
 <translation id="6080689532560039067">Kiểm tra giờ hệ thống của bạn</translation>
-<translation id="6082877069782862752">Chỉ định khoá</translation>
+<translation id="6082877069782862752">Sơ đồ phím</translation>
 <translation id="608531959444400877"><ph name="WINDOW_TITLE" /> – Thuộc nhóm chưa có tên</translation>
 <translation id="6085886413119427067">Xác định cách kết nối với các trang web qua đường kết nối an toàn</translation>
 <translation id="6086004606538989567">Tài khoản mà bạn đã xác minh không được phép truy cập vào thiết bị này.</translation>
@@ -6739,6 +6739,7 @@
 <translation id="7404065585741198296">Điện thoại có cáp USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Tính năng Kiểm tra an toàn đã chạy 1 giờ trước}other{Tính năng Kiểm tra an toàn đã chạy {NUM_HOURS} giờ trước}}</translation>
 <translation id="740624631517654988">Đã chặn cửa sổ bật lên</translation>
+<translation id="7406912950279255498">Chế độ đảo màu</translation>
 <translation id="7407430846095439694">Nhập và liên kết</translation>
 <translation id="7407504355934009739">Hầu hết mọi người đều chặn thông báo từ trang web này</translation>
 <translation id="740810853557944681">Thêm máy chủ máy in</translation>
@@ -7689,6 +7690,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Chủ sở hữu có thể kiểm soát tính năng này trong mục Cài đặt &gt; Nâng cao &gt; Tự động gửi dữ liệu chẩn đoán và dữ liệu sử dụng cho Google.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Nếu bạn bật tùy chọn cài đặt Hoạt động trên web và ứng dụng bổ sung cho con bạn, thì dữ liệu này có thể được lưu vào Tài khoản Google của con. Bạn có thể tìm hiểu thêm về các tùy chọn cài đặt này cùng cách điều chỉnh tại families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Chứng chỉ ứng dụng khách không hợp lệ</translation>
+<translation id="8270162672241199380">Trình cài đặt Steam</translation>
 <translation id="827097179112817503">Hiển thị nút trang chủ</translation>
 <translation id="8271268254812352141">Xem định nghĩa, bản dịch hoặc kết quả chuyển đổi đơn vị bằng cách nhấp chuột phải hoặc chạm và giữ văn bản. Tùy chỉnh ngôn ngữ dịch trong <ph name="LINK_BEGIN" />Ngôn ngữ cho trang web<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Cha mẹ chỉ cần thực hiện một vài bước nữa là xong. Bạn có thể đưa <ph name="DEVICE_TYPE" /> lại cho trẻ sau khi thiết lập tài khoản.</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index c3c41bf..2c694a2 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">快到休息时间了</translation>
 <translation id="1062628064301375934">帮助我们打造私密性更好的网络环境</translation>
 <translation id="1067048845568873861">创建时间</translation>
+<translation id="1067661089446014701">为了提高安全性,您可以先在设备上对密码进行加密,然后再将其保存到您的 Google 帐号</translation>
 <translation id="1067922213147265141">其他 Google 服务</translation>
 <translation id="1069355737714877171">移除名为“<ph name="PROFILE_NAME" />”的 eSIM 卡配置文件</translation>
 <translation id="1070377999570795893">您计算机上的其他程序擅自安装了一个可能会更改 Chrome 工作方式的扩展程序。
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">您的管理员建议将此设置设为某个特定值。</translation>
 <translation id="1225177025209879837">正在处理请求…</translation>
 <translation id="1227507814927581609">连接到“<ph name="DEVICE_NAME" />”时身份验证失败。</translation>
+<translation id="1227993798763400520">未能投放,请重试。</translation>
 <translation id="1230417814058465809">已开启标准保护。若要进一步提升安全性,请使用增强型保护。</translation>
 <translation id="1231733316453485619">开启同步功能?</translation>
 <translation id="1232569758102978740">无标题</translation>
@@ -687,6 +689,7 @@
 <translation id="1640283014264083726">PKCS #1,带有 RSA 加密的 MD4</translation>
 <translation id="1641113438599504367">安全浏览</translation>
 <translation id="1641496881756082050">显示可对“<ph name="NETWORK_NAME" />”执行的更多操作</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{还有 1 个密码未能导入,因为它的格式不正确}other{还有 {NUM_PASSWORDS} 个密码未能导入,因为它们的格式不正确}}</translation>
 <translation id="1642492862748815878">已连接到设备“<ph name="DEVICE" />”以及另外 <ph name="NUMBER_OF_DEVICES" /> 部蓝牙设备</translation>
 <translation id="1642494467033190216">要启用其他调试功能,必须先取消根文件系统保护并重启设备。</translation>
 <translation id="1643072738649235303">采用 SHA-1 算法的 X9.62 ECDSA 签名</translation>
@@ -1105,6 +1108,7 @@
 <translation id="2031914984822377766">添加您首选的<ph name="LINK_BEGIN" />网站语言<ph name="LINK_END" />。列表中的第一种语言将被用作翻译时的目标语言。</translation>
 <translation id="2033758234986231162">无法保持与您手机的连接。请确保您的手机就在附近、处于解锁状态,且已开启蓝牙和 Wi-Fi。</translation>
 <translation id="2034346955588403444">添加其他 Wi-Fi 网络</translation>
+<translation id="2035211704574173780">灰阶</translation>
 <translation id="203574396658008164">从锁定屏幕启用备注功能</translation>
 <translation id="2037445849770872822">此 Google 帐号的监管功能已设置完毕。要设置更多家长控制,请选择“继续”。
 
@@ -1821,6 +1825,7 @@
 <translation id="2673135533890720193">读取您的浏览记录</translation>
 <translation id="2674764818721168631">已关闭</translation>
 <translation id="2678063897982469759">重新启用</translation>
+<translation id="2678100101831051676">无法投放。</translation>
 <translation id="268053382412112343">历史记录(&amp;S)</translation>
 <translation id="2681124317993121768">访客个人资料不受支持</translation>
 <translation id="2682498795777673382">您的家长已更新设置</translation>
@@ -2530,6 +2535,7 @@
 <translation id="3363202073972776113">这份新个人资料将由贵组织管理。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">来自您的管理员:<ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">使用 Ctrl 键或 Alt 键</translation>
+<translation id="3368586359109138591">下载副本以便在别处使用</translation>
 <translation id="3368922792935385530">已连接</translation>
 <translation id="3369067987974711168">显示可对此端口执行的更多操作</translation>
 <translation id="3369624026883419694">正在解析主机...</translation>
@@ -2718,6 +2724,7 @@
 <translation id="3532273508346491126">同步管理</translation>
 <translation id="3532521178906420528">正在建立网络连接…</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - 音频已静音</translation>
+<translation id="3536492240554502321">色调旋转</translation>
 <translation id="3537881477201137177">日后需要时,您可在“设置”中修改</translation>
 <translation id="3538066758857505094">卸载 Linux 时出错。请重试。</translation>
 <translation id="354060433403403521">交流电源适配器</translation>
@@ -3043,6 +3050,7 @@
 <translation id="383669374481694771">这是关于此设备及其使用情况(例如电池电量、系统与应用活动以及错误)的一般信息。我们会使用这些数据来改善 Android,部分汇总信息还会有助于改善 Google 应用,并会协助我们的合作伙伴(例如 Android 开发者)改善其应用和产品。</translation>
 <translation id="3838085852053358637">未能成功加载扩展程序</translation>
 <translation id="3838486795898716504">更多“<ph name="PAGE_TITLE" />”</translation>
+<translation id="3838487810283346084">将已保存的密码添加到 Google 密码管理工具</translation>
 <translation id="383891835335927981">未对任何网站设置缩放级别</translation>
 <translation id="3839509547554145593">启用鼠标滚屏加速</translation>
 <translation id="3839516600093027468">始终禁止 <ph name="HOST" /> 查看剪贴板</translation>
@@ -3851,6 +3859,7 @@
 <translation id="4617019240346358451">刷新网页才能使用“<ph name="EXTENSION_NAME" />”</translation>
 <translation id="4617270414136722281">扩展程序选项</translation>
 <translation id="4617880081511131945">无法建立连接</translation>
+<translation id="4618195822946934889">网址只能包含 ASCII 字符</translation>
 <translation id="4619564267100705184">请验证是您本人在操作</translation>
 <translation id="4619615317237390068">从其他设备打开的标签页</translation>
 <translation id="4620809267248568679">此设置是由扩展程序强制设置的。</translation>
@@ -4112,6 +4121,7 @@
 <translation id="4871568871368204250">关闭同步功能</translation>
 <translation id="4871719318659334896">关闭组</translation>
 <translation id="4872192066608821120">若要导入密码,请选择一个 CSV 文件</translation>
+<translation id="4872212987539553601">设置设备端加密</translation>
 <translation id="4873312501243535625">媒体文件检查工具</translation>
 <translation id="4876273079589074638">帮助我们的工程师调查并解决此崩溃问题。请列出您的具体操作,越详细越好!</translation>
 <translation id="4876895919560854374">将屏幕锁定和解锁</translation>
@@ -5048,6 +5058,7 @@
 <translation id="5800351251499368110">关闭侧边栏中的搜索工具栏。侧边栏中的搜索工具栏处于打开状态。</translation>
 <translation id="5801568494490449797">偏好设置</translation>
 <translation id="5804241973901381774">权限</translation>
+<translation id="5805268472388605531">按住键盘按键即可查看重音符号和特殊字符</translation>
 <translation id="5805697420284793859">窗口管理器</translation>
 <translation id="5806447147478173900">显示的网站占用的总存储空间:<ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0°(默认)</translation>
@@ -5688,6 +5699,7 @@
 <translation id="642469772702851743">此设备(序列号:<ph name="SERIAL_NUMBER" />)已被所有者锁定。</translation>
 <translation id="6425556984042222041">文字转语音的语速</translation>
 <translation id="642729974267661262">不允许播放声音</translation>
+<translation id="6427608534767366138">必须验证代理身份才能使用“<ph name="NETWORK_ID" />”</translation>
 <translation id="6429384232893414837">更新错误</translation>
 <translation id="6430814529589430811">Base64 编码 ASCII,单一证书</translation>
 <translation id="6431347207794742960"><ph name="PRODUCT_NAME" />将为此计算机上的所有用户设置自动更新。</translation>
@@ -6406,6 +6418,7 @@
 <translation id="7093220653036489319">快速解答</translation>
 <translation id="7093416310351037609">为保障数据安全,贵单位要求将所有符合条件的下载内容保存到贵单位的“<ph name="WEB_DRIVE" />”帐号。</translation>
 <translation id="7093866338626856921">与具有下列名称的设备交换数据:<ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">请在您的“<ph name="DEVICE_NAME" />”上接受投屏请求。</translation>
 <translation id="7098389117866926363">USB-C 设备(背面左侧端口)</translation>
 <translation id="7098447629416471489">其他已保存的搜索引擎将显示在这里</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{移除应用}other{移除应用}}</translation>
@@ -6506,6 +6519,7 @@
 <translation id="7212097698621322584">请输入您的当前 PIN 码以更改它。如果您不知道 PIN 码,则需要重置安全密钥,然后创建新 PIN 码。</translation>
 <translation id="7213903639823314449">地址栏中使用的搜索引擎</translation>
 <translation id="721490496276866468">导入密码</translation>
+<translation id="7218514093816577632">请确保在您的“<ph name="DEVICE_NAME" />”上开启通知功能。</translation>
 <translation id="7219473482981809164">我们找到了多份可供下载的个人资料。请先选择您想下载的个人资料,然后继续操作。</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{没有任何安全系数低的密码}=1{有 1 个安全系数低的密码}other{有 {NUM_WEAK} 个安全系数低的密码}}</translation>
 <translation id="7220019174139618249">无法将密码导出到“<ph name="FOLDER" />”</translation>
@@ -6975,6 +6989,7 @@
 <translation id="7664620655576155379">不支持的蓝牙设备:“<ph name="DEVICE_NAME" />”。</translation>
 <translation id="7665082356120621510">预留大小</translation>
 <translation id="7665369617277396874">添加帐号</translation>
+<translation id="766635563210446220">无法导入密码。请检查 <ph name="FILENAME" /> 并确保其格式无误。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{请在 {NUM_WEEKS} 周内退还 <ph name="DEVICE_TYPE" />}other{请在 {NUM_WEEKS} 周内退还 <ph name="DEVICE_TYPE" />}}</translation>
 <translation id="7668423670802040666">在 <ph name="ACCOUNT" /> 的 Google 密码管理器中</translation>
 <translation id="7668648754769651616">无障碍功能可让设备更易于使用。如果您想查看“快捷设置”,请选择屏幕底部的时间。</translation>
@@ -7506,6 +7521,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{1 个视频}other{# 个视频}}</translation>
 <translation id="8143442547342702591">无效的应用</translation>
 <translation id="8143609395536282994">您可以如何管理自己的数据:</translation>
+<translation id="8145170459658034418">内存节省程序</translation>
 <translation id="8146177459103116374">如果您已在此设备上注册,就能<ph name="LINK2_START" />以现有用户的身份登录<ph name="LINK2_END" />。</translation>
 <translation id="8146287226035613638">添加您的首选语言并为它们排序。网站会尽可能以您的首选语言显示。这些偏好设置会与您的浏览器设置同步。<ph name="BEGIN_LINK_LEARN_MORE" />了解详情<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">登录失败,请与管理员联系或重试。</translation>
@@ -7565,6 +7581,7 @@
 <translation id="8198456017687137612">正在投放标签页</translation>
 <translation id="8199300056570174101">网络(服务)和设备属性</translation>
 <translation id="8200772114523450471">继续</translation>
+<translation id="8200789660596905522">请确保在您的“<ph name="DEVICE_NAME" />”上接受投屏请求。</translation>
 <translation id="8202160505685531999">请重新输入密码,以便更新您的<ph name="DEVICE_TYPE" />资料。</translation>
 <translation id="8203152941016626022">“附近分享”功能的设备名称</translation>
 <translation id="8203732864715032075">向您发送通知,并默认记住这台计算机以便在您收到短信时向其发送通知。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation>
@@ -7816,6 +7833,7 @@
 <translation id="844063558976952706">始终在该网站上</translation>
 <translation id="8441313165929432954">启用/停用网络共享</translation>
 <translation id="8443795068008423036">请确保您的设备已更新到最新版本,然后重试</translation>
+<translation id="8443986842926457191">网址长度超出了 2048 个字符(上限)</translation>
 <translation id="8446884382197647889">了解详情</translation>
 <translation id="8447409163267621480">必须以 Ctrl 键或 Alt 键开头</translation>
 <translation id="844850004779619592">找不到任何命令</translation>
@@ -7881,6 +7899,7 @@
 <translation id="851263357009351303">始终允许 <ph name="HOST" /> 显示图片</translation>
 <translation id="8513108775083588393">自动旋转屏幕</translation>
 <translation id="8514746246728959655">尝试改用一个不同的安全密钥</translation>
+<translation id="8519895319663397036">无法导入密码。文件大小应小于 150 KB。</translation>
 <translation id="8523493869875972733">保留更改</translation>
 <translation id="8523849605371521713">按政策添加</translation>
 <translation id="8524783101666974011">将这些卡保存在您的 Google 帐号中</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 6f93cb42..48fd4a2 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -69,6 +69,7 @@
 <translation id="1061904396131502319">快到休息時間了</translation>
 <translation id="1062628064301375934">協助我們打造更私密的網路</translation>
 <translation id="1067048845568873861">建立時間</translation>
+<translation id="1067661089446014701">為進一步加強安全性,建議先在裝置上將密碼加密,再儲存至你的 Google 帳戶</translation>
 <translation id="1067922213147265141">其他 Google 服務</translation>
 <translation id="1069355737714877171">移除名為「<ph name="PROFILE_NAME" />」的 eSIM 卡設定檔</translation>
 <translation id="1070377999570795893">電腦中的其他程式新增了一個擴充功能,可能會使 Chrome 的運作方式發生變更。
@@ -249,6 +250,7 @@
 <translation id="1223853788495130632">管理員為這項設定推薦特定的值。</translation>
 <translation id="1225177025209879837">正在處理要求...</translation>
 <translation id="1227507814927581609">驗證在連線至「<ph name="DEVICE_NAME" />」時失敗。</translation>
+<translation id="1227993798763400520">無法投放,請再試一次。</translation>
 <translation id="1230417814058465809">已啟用標準防護功能。如需更完整的安全防護,請使用強化防護功能。</translation>
 <translation id="1231733316453485619">要開啟同步功能嗎?</translation>
 <translation id="1232569758102978740">未命名</translation>
@@ -692,6 +694,7 @@
 <translation id="1640283014264083726">PKCS #1 MD4 (使用 RSA 加密)</translation>
 <translation id="1641113438599504367">安全瀏覽</translation>
 <translation id="1641496881756082050">可對 <ph name="NETWORK_NAME" /> 執行的其他動作</translation>
+<translation id="1641884605525735390">{NUM_PASSWORDS,plural, =1{另有 1 個密碼的格式有誤,因此無法匯入}other{另有 {NUM_PASSWORDS} 個密碼的格式有誤,因此無法匯入}}</translation>
 <translation id="1642492862748815878">已連線至「<ph name="DEVICE" />」和另外 <ph name="NUMBER_OF_DEVICES" /> 部藍牙裝置</translation>
 <translation id="1642494467033190216">必須先移除 rootfs 保護並重新啟動,才能啟用其他偵錯功能。</translation>
 <translation id="1643072738649235303">使用 SHA-1 的 X9.62 ECDSA 簽章</translation>
@@ -1112,6 +1115,7 @@
 <translation id="2031914984822377766">新增偏好的<ph name="LINK_BEGIN" />網站語言<ph name="LINK_END" />。系統會將文字翻譯成清單頂端的語言。</translation>
 <translation id="2033758234986231162">無法與你的手機維持連線狀態。請確認你的手機在附近且處於解鎖狀態,並已開啟藍牙和 Wi-Fi。</translation>
 <translation id="2034346955588403444">新增其他 WiFi 網路</translation>
+<translation id="2035211704574173780">灰階</translation>
 <translation id="203574396658008164">允許在螢幕鎖定狀態下建立記事</translation>
 <translation id="2037445849770872822">你已設定這個 Google 帳戶的監督功能。如要設定更多家長監護功能,請選取 [繼續]。
 
@@ -1829,6 +1833,7 @@
 <translation id="2673135533890720193">讀取你的瀏覽記錄</translation>
 <translation id="2674764818721168631">關閉</translation>
 <translation id="2678063897982469759">重新啟用</translation>
+<translation id="2678100101831051676">無法投放。</translation>
 <translation id="268053382412112343">記錄(&amp;S)</translation>
 <translation id="2681124317993121768">不支援訪客設定檔</translation>
 <translation id="2682498795777673382">你的家長已更新設定</translation>
@@ -2538,6 +2543,7 @@
 <translation id="3363202073972776113">這個新的設定檔將由貴機構管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="3364986687961713424">來自系統管理員的訊息:<ph name="ADMIN_MESSAGE" /></translation>
 <translation id="3365598184818502391">請擇一使用 Ctrl 或 Alt 鍵</translation>
+<translation id="3368586359109138591">下載副本以供別處使用</translation>
 <translation id="3368922792935385530">已連線</translation>
 <translation id="3369067987974711168">顯示這個連接埠的更多動作</translation>
 <translation id="3369624026883419694">正在解析主機...</translation>
@@ -2726,6 +2732,7 @@
 <translation id="3532273508346491126">同步功能管理</translation>
 <translation id="3532521178906420528">正在建立網路連線...</translation>
 <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - 靜音</translation>
+<translation id="3536492240554502321">色調旋轉</translation>
 <translation id="3537881477201137177">你稍後可以前往「設定」加以修改</translation>
 <translation id="3538066758857505094">解除安裝 Linux 時發生錯誤,請再試一次。</translation>
 <translation id="354060433403403521">AC 變壓器</translation>
@@ -3051,6 +3058,7 @@
 <translation id="383669374481694771">這個頁面會顯示這部裝置和裝置使用情況的一般資訊 (例如電池電量、系統和應用程式活動,以及錯誤資訊)。這些資料將用於改善 Android,且部分匯總資訊還能協助 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提高應用程式和產品的服務品質。</translation>
 <translation id="3838085852053358637">無法載入擴充功能</translation>
 <translation id="3838486795898716504">更多<ph name="PAGE_TITLE" /></translation>
+<translation id="3838487810283346084">將已儲存的密碼加入 Google 密碼管理工具</translation>
 <translation id="383891835335927981">未針對任何網站設定縮放等級</translation>
 <translation id="3839509547554145593">啟用滑鼠捲動加速功能</translation>
 <translation id="3839516600093027468">一律禁止 <ph name="HOST" /> 讀取剪貼簿</translation>
@@ -3861,6 +3869,7 @@
 <translation id="4617019240346358451">重新載入網頁以使用「<ph name="EXTENSION_NAME" />」</translation>
 <translation id="4617270414136722281">擴充功能選項</translation>
 <translation id="4617880081511131945">無法建立連線</translation>
+<translation id="4618195822946934889">網址只能使用 ASCII 字元</translation>
 <translation id="4619564267100705184">驗證身分</translation>
 <translation id="4619615317237390068">在其他裝置上開啟的分頁</translation>
 <translation id="4620809267248568679">這項設定是由擴充功能執行。</translation>
@@ -4122,6 +4131,7 @@
 <translation id="4871568871368204250">關閉同步處理功能</translation>
 <translation id="4871719318659334896">關閉群組</translation>
 <translation id="4872192066608821120">如要匯入密碼,請選取所需 CSV 檔案</translation>
+<translation id="4872212987539553601">設定裝置端加密功能</translation>
 <translation id="4873312501243535625">媒體檔案檢查工具</translation>
 <translation id="4876273079589074638">協助我們的工程師調查這項當機問題並予以修正。請儘可能列出所有確切步驟,鉅細靡遺!</translation>
 <translation id="4876895919560854374">鎖定及解鎖螢幕</translation>
@@ -5058,6 +5068,7 @@
 <translation id="5800351251499368110">關閉側邊面板中的搜尋工具列。側邊面板中的搜尋工具列已開啟。</translation>
 <translation id="5801568494490449797">偏好設定</translation>
 <translation id="5804241973901381774">權限</translation>
+<translation id="5805268472388605531">按住鍵盤按鍵即可查看重音符號和特殊字元</translation>
 <translation id="5805697420284793859">視窗管理員</translation>
 <translation id="5806447147478173900">所顯示網站使用的總儲存空間:<ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (預設)</translation>
@@ -5698,6 +5709,7 @@
 <translation id="642469772702851743">這部裝置 (序號:<ph name="SERIAL_NUMBER" />) 已被擁有者鎖定。</translation>
 <translation id="6425556984042222041">文字轉語音的速率</translation>
 <translation id="642729974267661262">不得播放音效</translation>
+<translation id="6427608534767366138">「<ph name="NETWORK_ID" />」需要 Proxy 驗證</translation>
 <translation id="6429384232893414837">更新錯誤</translation>
 <translation id="6430814529589430811">Base64-編碼 ASCII,單一憑證</translation>
 <translation id="6431347207794742960">「<ph name="PRODUCT_NAME" />」將為這部電腦的所有使用者設定自動更新。</translation>
@@ -6416,6 +6428,7 @@
 <translation id="7093220653036489319">快速解答</translation>
 <translation id="7093416310351037609">為了維護資料安全,貴機構規定所有符合資格的下載內容都必須儲存至機構的「<ph name="WEB_DRIVE" />」帳戶。</translation>
 <translation id="7093866338626856921">與下列名稱的裝置交換資料:<ph name="HOSTNAMES" /></translation>
+<translation id="7094680343477712655">請在「<ph name="DEVICE_NAME" />」上接受投放要求。</translation>
 <translation id="7098389117866926363">USB-C 裝置 (背面左側連接埠)</translation>
 <translation id="7098447629416471489">你所儲存的其他搜尋引擎會顯示在這裡</translation>
 <translation id="7098936390718461001">{NUM_APPS,plural, =1{移除應用程式}other{移除應用程式}}</translation>
@@ -6516,6 +6529,7 @@
 <translation id="7212097698621322584">請輸入目前的 PIN 碼以進行變更。如果你不知道自己的 PIN 碼,請重設安全金鑰,然後建立新的 PIN 碼。</translation>
 <translation id="7213903639823314449">網址列中使用的搜尋引擎</translation>
 <translation id="721490496276866468">匯入密碼</translation>
+<translation id="7218514093816577632">確認「<ph name="DEVICE_NAME" />」已開啟通知功能。</translation>
 <translation id="7219473482981809164">我們發現多個可供下載的設定檔。請先選取你要下載的設定檔再繼續。</translation>
 <translation id="7219762788664143869">{NUM_WEAK,plural, =0{未發現低強度密碼}=1{有 1 組低強度密碼}other{有 {NUM_WEAK} 組低強度密碼}}</translation>
 <translation id="7220019174139618249">無法將密碼匯出到「<ph name="FOLDER" />」</translation>
@@ -6705,6 +6719,7 @@
 <translation id="7404065585741198296">接上 USB 傳輸線的手機</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{1 小時前已執行安全檢查}other{{NUM_HOURS} 小時前已執行安全檢查}}</translation>
 <translation id="740624631517654988">已封鎖彈出式視窗</translation>
+<translation id="7406912950279255498">色彩反轉模式</translation>
 <translation id="7407430846095439694">匯入和繫結</translation>
 <translation id="7407504355934009739">大多數使用者封鎖了這個網站傳送的通知</translation>
 <translation id="740810853557944681">新增列印伺服器</translation>
@@ -6985,6 +7000,7 @@
 <translation id="7664620655576155379">不支援的藍牙裝置:「<ph name="DEVICE_NAME" />」。</translation>
 <translation id="7665082356120621510">預留大小</translation>
 <translation id="7665369617277396874">新增帳戶</translation>
+<translation id="766635563210446220">無法匯入密碼,請檢查「<ph name="FILENAME" />」的格式是否正確。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{請在 {NUM_WEEKS} 週內退還 <ph name="DEVICE_TYPE" />}other{請在 {NUM_WEEKS} 週內退還 <ph name="DEVICE_TYPE" />}}</translation>
 <translation id="7668423670802040666">前往 <ph name="ACCOUNT" /> 的 Google 密碼管理員進行更新</translation>
 <translation id="7668648754769651616">無障礙功能讓裝置更容易使用。如要存取快速設定,請選取畫面底部的時間。</translation>
@@ -7517,6 +7533,7 @@
 <translation id="814204052173971714">{COUNT,plural, =1{1 部影片}other{# 部影片}}</translation>
 <translation id="8143442547342702591">應用程式無效</translation>
 <translation id="8143609395536282994">你可以透過哪些方式管理資料:</translation>
+<translation id="8145170459658034418">記憶體節省模式</translation>
 <translation id="8146177459103116374">如果你已在這部裝置上註冊,你可以<ph name="LINK2_START" />用現有的使用者身分登入<ph name="LINK2_END" />。</translation>
 <translation id="8146287226035613638">新增偏好語言及指定各語言的優先順序。網站會視情況以你偏好的語言顯示內容。這些偏好設定會與你的瀏覽器設定同步。<ph name="BEGIN_LINK_LEARN_MORE" />瞭解詳情<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="8146793085009540321">登入失敗,請與您的管理員聯絡或再試一次。</translation>
@@ -7576,6 +7593,7 @@
 <translation id="8198456017687137612">正在投放分頁</translation>
 <translation id="8199300056570174101">網路 (服務) 與裝置屬性</translation>
 <translation id="8200772114523450471">繼續</translation>
+<translation id="8200789660596905522">請務必在「<ph name="DEVICE_NAME" />」上接受投放要求。</translation>
 <translation id="8202160505685531999">請再次輸入您的密碼,以更新您的 <ph name="DEVICE_TYPE" /> 設定檔。</translation>
 <translation id="8203152941016626022">鄰近分享裝置名稱</translation>
 <translation id="8203732864715032075">傳送通知給你,並預設記住這部電腦,以便在收到簡訊時傳送通知。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
@@ -7652,6 +7670,7 @@
     <ph name="BEGIN_PARAGRAPH3" />裝置擁有者如要管理這項功能,可依序前往 [設定] &gt; [進階] &gt; [自動將診斷資料和使用情況資料傳送給 Google]。<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />如果你另外為子女開啟了「網路和應用程式活動」設定,這項資料可能會儲存在他們的 Google 帳戶中。如要進一步瞭解這些設定及其調整方式,請前往 families.google.com。<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">用戶端憑證無效</translation>
+<translation id="8270162672241199380">Steam 安裝程式</translation>
 <translation id="827097179112817503">顯示 [首頁] 按鈕</translation>
 <translation id="8271268254812352141">按住文字或在文字上按一下滑鼠右鍵後,就能取得定義、翻譯或單位轉換結果。你也可以前往<ph name="LINK_BEGIN" />網站語言<ph name="LINK_END" />頁面自訂翻譯語言。</translation>
 <translation id="8271379370373330993">後續幾個步驟須由家長完成。你可以在完成帳戶設定後將 <ph name="DEVICE_TYPE" /> 交還給孩子。</translation>
@@ -7827,6 +7846,7 @@
 <translation id="844063558976952706">永遠在這個網站上使用</translation>
 <translation id="8441313165929432954">啟用/停用網路共用</translation>
 <translation id="8443795068008423036">確認裝置為最新版本,然後再試一次</translation>
+<translation id="8443986842926457191">網址包含的字元數超過 2048 個</translation>
 <translation id="8446884382197647889">瞭解詳情</translation>
 <translation id="8447409163267621480">必須包含 Ctrl 或 Alt 鍵</translation>
 <translation id="844850004779619592">找不到任何指令</translation>
@@ -7892,6 +7912,7 @@
 <translation id="851263357009351303">永遠允許 <ph name="HOST" /> 顯示圖片</translation>
 <translation id="8513108775083588393">自動旋轉</translation>
 <translation id="8514746246728959655">請改用其他安全金鑰</translation>
+<translation id="8519895319663397036">無法匯入密碼,檔案大小不得超過 150 KB。</translation>
 <translation id="8523493869875972733">保留變更</translation>
 <translation id="8523849605371521713">依政策新增</translation>
 <translation id="8524783101666974011">將卡片儲存到你的 Google 帳戶</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 2d91c6c2..63470ed 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -6744,6 +6744,7 @@
 <translation id="7404065585741198296">Ifoni yakho enekhebuli ye-USB</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Ukuhlola kokuphepha kusebenze ehoreni elingu-1 eledlule}one{Ukuhlola kokuphepha kusebenze emahoreni angu-{NUM_HOURS} adlule}other{Ukuhlola kokuphepha kusebenze emahoreni angu-{NUM_HOURS} adlule}}</translation>
 <translation id="740624631517654988">Isigelekeqe sivinjiwe</translation>
+<translation id="7406912950279255498">Imodi yokuguqulwa kombala</translation>
 <translation id="7407430846095439694">Ngenisa uphinde ubophezele</translation>
 <translation id="7407504355934009739">Iningi labantu livimbela izaziso kusukela kuleli sayithi</translation>
 <translation id="740810853557944681">Engeza iseva yephrinta</translation>
@@ -7692,6 +7693,7 @@
     <ph name="BEGIN_PARAGRAPH3" />Umnikazi angalawula lesi sici kusuka Kuzilungiselelo &gt; Okuthuthukile &gt; Thumela ngokuzenzakalelayo idatha yokuxilonga nokusebenza ku-Google.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Uma isilungiselelo esingeziwe somsebenzi wewebhu nohlelo lokusebenza sivulelwe ingane yakho, le datha ingalondolozwa ku-akhawunti yakhe ye-Google. Funda kabanzi mayelana nalezi zilungiselelo nokuthi uzilungisa kanjani ku-families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">Isitifiketi seklayenti esingavumelekile</translation>
+<translation id="8270162672241199380">Isifaki Somfutho</translation>
 <translation id="827097179112817503">Bonisa inkinobho yasekhaya</translation>
 <translation id="8271268254812352141">Thola izincazelo, ukuhunyushwa, noma ukuguqulwa kweyunithi lapho uchofoza ngakwesokudla noma uthinta uphinde ubambe umbhalo. Yenza ngendlela oyifisayo izilimi zokuhumusha <ph name="LINK_BEGIN" />Kwizilimi zewebhusayithi<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Bazali, izinyathelo ezimbalwa ezilandelayo ngezenu. Ungabuyisela i-<ph name="DEVICE_TYPE" /> enganeni ngemva kokusethwa kwe-akhawunti.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_af.xtb b/chrome/app/resources/google_chrome_strings_af.xtb
index 667b7bc..6c33e52 100644
--- a/chrome/app/resources/google_chrome_strings_af.xtb
+++ b/chrome/app/resources/google_chrome_strings_af.xtb
@@ -61,6 +61,7 @@
 <translation id="2094648590148273905">Chrome OS Flex-bepalings</translation>
 <translation id="2094919256425865063">Verlaat Chrome in elk geval?</translation>
 <translation id="2106831557840787829">Chrome OS Flex word moontlik gemaak deur bykomende <ph name="BEGIN_LINK_CROS_OSS" />oopbronsagteware<ph name="END_LINK_CROS_OSS" />, soos die geval ook is met die <ph name="BEGIN_LINK_LINUX_OSS" />Linux-ontwikkelingomgewing<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Indien dit aan is, herwin Chrome geheue vanaf oortjies wat jy nie aktief gebruik nie. Dit maak jou rekenaar se hulpbronne beskikbaar vir ander take en hou Chrome vinnig. Onaktiewe oortjies kom leeg voor en herlaai outomaties wanneer jy hulle klik. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /> of <ph name="BEGIN_LINK_2" />stuur terugvoer<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Dit sal <ph name="ITEMS_COUNT" /> items op hierdie toestel uitvee. Meld as <ph name="USER_EMAIL" /> by Chrome aan om jou data later op te haal.</translation>
 <translation id="2121284319307530122">Begin weer om &amp;Chrome op te dateer</translation>
 <translation id="2123055963409958220">Help om Chrome te verbeter deur die <ph name="BEGIN_LINK" />huidige instellings<ph name="END_LINK" /> aan te gee</translation>
diff --git a/chrome/app/resources/google_chrome_strings_am.xtb b/chrome/app/resources/google_chrome_strings_am.xtb
index 741b2d2..802286a1 100644
--- a/chrome/app/resources/google_chrome_strings_am.xtb
+++ b/chrome/app/resources/google_chrome_strings_am.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">የChromeOS Flex ደንቦች</translation>
 <translation id="2094919256425865063">የሆነው ሆኖ Chrome ይቁም?</translation>
 <translation id="2106831557840787829">ChromeOS Flex እና <ph name="BEGIN_LINK_LINUX_OSS" />የLinux ግንባታ አካባቢ<ph name="END_LINK_LINUX_OSS" /> ሊሠሩ የቻሉት በተጨማሪ <ph name="BEGIN_LINK_CROS_OSS" />የክፍት ምንጭ ሶፍትዌር<ph name="END_LINK_CROS_OSS" /> ነው።</translation>
+<translation id="2112742052114331084">ሲበራ፣ Chrome በንቃት እየተጠቀሟቸው ካልሆኑ ትሮች ማህደረ ትውስታን መልሶ ይወስዳል። ይህ የእርስዎን ኮምፒውተር ንብረቶች ለሌሎች ተግባሮች ቦታ ያስለቅቃል እና Chromeን ፈጣን ሆኖ እንዲቆይ ያደርጋል። ንቁ ያልሆኑ ትሮች ባዶ ሆነው ይታያሉ እና ጠቅ ሲያደርጓቸው በራስ-ሰር እንደገና ይጭናሉ። <ph name="BEGIN_LINK" />የበለጠ ይወቁ<ph name="END_LINK" /> ወይም <ph name="BEGIN_LINK_2" />ግብረመልስ ይላኩ<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">ይሄ <ph name="ITEMS_COUNT" /> ንጥሎችን ከዚህ መሣሪያ ይሰርዛል። ውሂብዎን በኋላ ላይ ሰርስረው ለማውጣት እንደ <ph name="USER_EMAIL" /> ሆነው ወደ Chrome ይግቡ።</translation>
 <translation id="2121284319307530122">&amp;Chromeን ለማዘመን ዳግም ያስነሱት</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />የአሁኖቹን ቅንብሮች<ph name="END_LINK" /> ሪፖርት በማድረግ Chromium የተሻለ እንዲሆን ያግዙ።</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb
index dab0a3fe..282e3e0 100644
--- a/chrome/app/resources/google_chrome_strings_az.xtb
+++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -58,6 +58,7 @@
 <translation id="2094648590148273905">ChromeOS Flex şərtləri</translation>
 <translation id="2094919256425865063">İstənilən halda Chrome'dan çıxılsın?</translation>
 <translation id="2106831557840787829">ChromeOS Flex <ph name="BEGIN_LINK_LINUX_OSS" />Linux tərtibat mühiti<ph name="END_LINK_LINUX_OSS" /> kimi əlavə <ph name="BEGIN_LINK_CROS_OSS" />açıq mənbə proqram təminatı<ph name="END_LINK_CROS_OSS" /> ilə əlçatan edilib.</translation>
+<translation id="2112742052114331084">Aktiv olduqda, Chrome aktiv istifadə etmədiyiniz tablardan yaddaşı geri alır. Bu, kompüterinizin resurslarını digər tapşırıqlar üçün boşaldır və Chrome'u sürətləndirir. Qeyri-aktiv tablar boş görünür və kliklədiyiniz zaman avtomatik olaraq yenidən yüklənir. <ph name="BEGIN_LINK" />Ətraflı məlumat əldə edin<ph name="END_LINK" /> və ya <ph name="BEGIN_LINK_2" />rəy göndərin<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941"><ph name="ITEMS_COUNT" /> element bu cihazdan silinəcək. Sonradan datanızı bərpa etmək üçün Chrome'a <ph name="USER_EMAIL" /> kimi daxil olun.</translation>
 <translation id="2121284319307530122">&amp;Chrome'u Güncəlləmək üçün yenidən başladın</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />Cari ayarları<ph name="END_LINK" /> bildirməklə Chrome'u təkmilləşdirməyə kömək edin</translation>
@@ -274,6 +275,7 @@
 <translation id="6735387454586646204">ChromeOS Flex Sistemi</translation>
 <translation id="6739177684496155661">Yeni Chrome profilində davam edilsin?</translation>
 <translation id="6750954913813541382">Orfoqrafik səhvləri düzəltmək üçün Chrome brauzerində yazdığınız mətni Google'a göndərir</translation>
+<translation id="6756581345161130259">Lazım olduqda, Chrome aktiv istifadə etmədiyiniz tablardan yaddaşı geri alır. Bunu istənilən zaman ayarlarda dəyişə bilərsiniz.</translation>
 <translation id="677276454032249905">Chrome'dan istənilən hada çıxılsın?</translation>
 <translation id="6785872064505734160">Chrome'da Google Assistent sizin üçün vebsaytlarda əməliyyatlar icra edə bilər</translation>
 <translation id="683440813066116847">mDNS trafikinə imkan vermək üçün Google Chrome Canary üçün daxil olan qayda.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_be.xtb b/chrome/app/resources/google_chrome_strings_be.xtb
index 29c7634f..f05930e8 100644
--- a/chrome/app/resources/google_chrome_strings_be.xtb
+++ b/chrome/app/resources/google_chrome_strings_be.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">Умовы Chrome OS Flex</translation>
 <translation id="2094919256425865063">Усё роўна выйсці з Chrome?</translation>
 <translation id="2106831557840787829">Chrome OS Flex, як і <ph name="BEGIN_LINK_LINUX_OSS" />Асяроддзе распрацоўкі Linux<ph name="END_LINK_LINUX_OSS" />, працуе дзякуючы дадатковаму <ph name="BEGIN_LINK_CROS_OSS" />праграмнаму забеспячэнню з адкрытым зыходным кодам<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="2112742052114331084">Калі гэта налада ўключана, Chrome не трымае ў аператыўнай памяці ўкладкі, якімі вы актыўна не карыстаецеся. Гэта дазваляе вызваляць рэсурсы камп'ютара для іншых задач і падтрымліваць хуткасць работы Chrome. Неактыўныя ўкладкі пры гэтым паказваюцца як пустыя і аўтаматычна перазагружаюцца, калі вы на іх націскаеце. <ph name="BEGIN_LINK" />Даведайцеся больш<ph name="END_LINK" /> або <ph name="BEGIN_LINK_2" />адпраўце водгук<ph name="END_LINK_2" />.</translation>
 <translation id="2120620239521071941">З гэтай прылады будзе выдалена наступная колькасць элементаў: <ph name="ITEMS_COUNT" />. Каб потым атрымаць свае даныя, увайдзіце ў Chrome як <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Перазапусціць, каб абнавіць &amp;Chrome</translation>
 <translation id="2123055963409958220">Дапамажыце палепшыць Chrome, паведаміўшы <ph name="BEGIN_LINK" />бягучыя налады<ph name="END_LINK" /></translation>
@@ -278,6 +279,7 @@
 <translation id="6735387454586646204">Сістэма Chrome OS Flex</translation>
 <translation id="6739177684496155661">Працягнуць працу ў новым профілі Chrome?</translation>
 <translation id="6750954913813541382">Для выпраўлення арфаграфічных памылак Chrome адпраўляе ў Google тэкст, які вы набіраеце ў браўзеры</translation>
+<translation id="6756581345161130259">Па меры неабходнасці Chrome перастае трымаць у аператыўнай памяці ўкладкі, якімі вы актыўна не карыстаецеся. Гэты параметр можна змяніць у любы час у наладах.</translation>
 <translation id="677276454032249905">Усё роўна выйсці з Chrome?</translation>
 <translation id="6785872064505734160">Памочнік Google у браўзеры Chrome можа завяршаць за вас дзеянні на розных вэб-сайтах</translation>
 <translation id="683440813066116847">Уваходнае правіла для Google Chrome Canary, якое дазваляе трафік mDNS.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb
index f038266..0564389 100644
--- a/chrome/app/resources/google_chrome_strings_bs.xtb
+++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -61,6 +61,7 @@
 <translation id="2094648590148273905">Uslovi za ChromeOS Flex</translation>
 <translation id="2094919256425865063">Ipak želite napustiti Chrome?</translation>
 <translation id="2106831557840787829">ChromeOS Flex je moguć zahvaljujući dodatnom <ph name="BEGIN_LINK_CROS_OSS" />softveru otvorenog koda<ph name="END_LINK_CROS_OSS" />, kao što je <ph name="BEGIN_LINK_LINUX_OSS" />Linuxovo okruženje za razvoj<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Kada je uključeno, Chrome preuzima memorijski prostor od kartica koje ne koristite aktivno. Time se oslobađaju izvori računara za druge zadatke i održava brzi rad Chromea. Neaktivne kartice izgledaju prazno i automatski se ponovo učitavaju kada kliknete na njih. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /> ili <ph name="BEGIN_LINK_2" />pošaljite povratne informacije<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Ovim će se s ovog uređaja izbrisati sljedeći broj stavki: <ph name="ITEMS_COUNT" />. Da preuzmete svoje podatke kasnije, prijavite se u Chrome kao <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Ponovo pokrenite da ažurirate &amp;Chrome</translation>
 <translation id="2123055963409958220">Pomozite nam da poboljšamo Chrome izvještavanjem o <ph name="BEGIN_LINK" />trenutnim postavkama<ph name="END_LINK" /></translation>
@@ -277,7 +278,7 @@
 <translation id="6735387454586646204">Sistem ChromeOS Flex</translation>
 <translation id="6739177684496155661">Želite li nastaviti na novi Chrome profil?</translation>
 <translation id="6750954913813541382">Za ispravak pravopisnih grešaka, Chrome šalje Googleu tekst koji napišete u pregledniku</translation>
-<translation id="6756581345161130259">Chrome prema potrebi vraća memoriju s kartica koje ne upotrebljavate aktivno. To uvijek možete promijeniti u postavkama.</translation>
+<translation id="6756581345161130259">Chrome po potrebi preuzima memorijski prostor od kartica koje ne koristite aktivno. Ovo možete promijeniti bilo kada u postavkama.</translation>
 <translation id="677276454032249905">Ipak želite napustiti Chrome?</translation>
 <translation id="6785872064505734160">Google Asistent u Chromeu može za vas završavati radnje na svim web lokacijama</translation>
 <translation id="683440813066116847">Ulazno pravilo da Google Chrome Canary dozvoli mDNS saobraćaj.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb
index 87699b8..aa7eec8 100644
--- a/chrome/app/resources/google_chrome_strings_cs.xtb
+++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -61,6 +61,7 @@
 <translation id="2094648590148273905">Smluvní podmínky systému ChromeOS Flex</translation>
 <translation id="2094919256425865063">Přesto Chrome ukončit?</translation>
 <translation id="2106831557840787829">Systém ChromeOS Flex by nemohl existovat bez dalšího <ph name="BEGIN_LINK_CROS_OSS" />open source softwaru<ph name="END_LINK_CROS_OSS" />, jako je <ph name="BEGIN_LINK_LINUX_OSS" />vývojové prostředí Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Když je tato možnost zapnutá, Chrome bude využívat paměť z karet, které aktivně nepoužíváte. Uvolní se tak zdroje vašeho počítače k dalším úkolům a prohlížeč Chrome zůstane rychlý. Neaktivní karty se zobrazují prázdné a po kliknutí se automaticky znovu načtou. Můžete si přečíst <ph name="BEGIN_LINK" />další informace<ph name="END_LINK" /> nebo <ph name="BEGIN_LINK_2" />odeslat zpětnou vazbu<ph name="END_LINK_2" />.</translation>
 <translation id="2120620239521071941">Ze zařízení bude smazán následující počet položek: <ph name="ITEMS_COUNT" />. Budete-li chtít své údaje později načíst, přihlaste se do Chromu jako <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Znovu spustit a aktualizovat &amp;Chrome</translation>
 <translation id="2123055963409958220">Pomozte s vylepšováním prohlížeče Chrome tím, že nahlásíte <ph name="BEGIN_LINK" />aktuální nastavení<ph name="END_LINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb
index c96e5d1b..03ddffd9 100644
--- a/chrome/app/resources/google_chrome_strings_el.xtb
+++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -30,6 +30,7 @@
 <translation id="1587223624401073077">Το Google Chrome χρησιμοποιεί την κάμερά σας.</translation>
 <translation id="1587325591171447154">Το αρχείο <ph name="FILE_NAME" /> είναι επικίνδυνο, επομένως έχει αποκλειστεί από το Chrome.</translation>
 <translation id="1597911401261118146">Για να ελέγξετε αν οι κωδικοί πρόσβασής σας είναι ασφαλείς από παραβιάσεις δεδομένων και άλλα ζητήματα ασφαλείας, <ph name="BEGIN_LINK" />συνδεθείτε στο Chrome<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Το Chrome απέκλεισε αυτό το αρχείο επειδή μπορεί να κρύβει κάποιο κακόβουλο πρόγραμμα.</translation>
 <translation id="1619887657840448962">Για να κάνουμε το Chrome πιο ασφαλές, απενεργοποιήσαμε τις ακόλουθες επεκτάσεις που δεν αναφέρονται στο <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> και ενδέχεται να έχουν προστεθεί εν αγνοία σας.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Πώς μπορείτε να διαχειριστείτε τα δεδομένα σας:<ph name="END_BOLD" /> Για την προστασία του απορρήτου σας, διαγράφουμε αυτόματα τα ενδιαφέροντα που είναι παλαιότερα των 4 εβδομάδων. Καθώς συνεχίζετε την περιήγηση, ενδέχεται να εμφανιστεί ξανά ένα ενδιαφέρον στη λίστα. Εναλλακτικά, μπορείτε να καταργήσετε τα ενδιαφέροντα που δεν θέλετε να λαμβάνει υπόψη το Chrome.</translation>
 <translation id="1628000112320670027">Λήψη βοήθειας σχετικά με το Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb
index 0c8cb07b..197e78d 100644
--- a/chrome/app/resources/google_chrome_strings_en-GB.xtb
+++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -230,6 +230,7 @@
 <translation id="5386244825306882791">It also controls what page is shown when you start Chrome or search from the Omnibox.</translation>
 <translation id="5394833366792865639">Share a Chrome tab</translation>
 <translation id="5412485296464121825">Sites can store information with Chrome about your interests. For example, if you visit a site to buy shoes for a marathon, the site might define your interest as running marathons. Later, if you visit a different site to register for a race, that site can show you an ad for running shoes based on your interests.</translation>
+<translation id="5416870378730196769">Chrome turned on Memory Saver</translation>
 <translation id="5430073640787465221">Your preferences file is corrupt or invalid.
 
 Google Chrome is unable to recover your settings.</translation>
@@ -328,6 +329,7 @@
 <translation id="7649070708921625228">Help</translation>
 <translation id="7651907282515937834">Chrome Enterprise logo</translation>
 <translation id="7655455401911432608">Your browsing history, a record of sites that you've visited using Chrome on this device.</translation>
+<translation id="7726773885101561560">To make your browsing faster, Chrome reclaims memory from tabs that you aren't using.</translation>
 <translation id="7747138024166251722">The installer couldn't create a temporary directory. Please check for free disk space and permission to install software.</translation>
 <translation id="7761834446675418963">Click your name to open Chrome and start browsing.</translation>
 <translation id="7777080907402804672">If an image doesn’t have a useful description, Chrome will try to provide one for you. To create descriptions, images are sent to Google. You can turn this off in settings at any time.</translation>
@@ -400,6 +402,7 @@
 <translation id="8986207147630327271">You are adding a work profile to this browser and giving your administrator control over just the work profile.</translation>
 <translation id="8989968390305463310">Your browsing history affects the ads that you see and the interests as estimated below. To protect your privacy, Chrome auto-deletes your interests on a rolling basis each month. Interests can refresh unless you remove them.</translation>
 <translation id="8999208279178790196">{0,plural, =0{A Chrome update is available}=1{A Chrome update is available}other{A Chrome update has been available for # days}}</translation>
+<translation id="9003498785844995646">When on, Chrome conserves battery power by limiting background activity and visual effects, such as smooth scrolling and video frame rates. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /> or <ph name="BEGIN_LINK_2" />send feedback<ph name="END_LINK_2" /></translation>
 <translation id="9053892488859122171">Chrome OS Flex system</translation>
 <translation id="9067395829937117663">Google Chrome requires Windows 7 or higher.</translation>
 <translation id="911206726377975832">Also delete your browsing data?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb
index 84f50ec6..984081b62 100644
--- a/chrome/app/resources/google_chrome_strings_es-419.xtb
+++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -57,6 +57,7 @@
 <translation id="2094648590148273905">Condiciones de Chrome OS Flex</translation>
 <translation id="2094919256425865063">¿Deseas salir de Chrome de todos modos?</translation>
 <translation id="2106831557840787829">Chrome OS Flex funciona gracias a <ph name="BEGIN_LINK_CROS_OSS" />software de código abierto<ph name="END_LINK_CROS_OSS" /> adicional, como <ph name="BEGIN_LINK_LINUX_OSS" />el entorno de desarrollo de Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Cuando está activado, Chrome recupera la memoria de las pestañas que no estás usando activamente. Esto libera los recursos de tu computadora para otras tareas y mantiene la velocidad de Chrome. Las pestañas inactivas aparecen vacías y se vuelven a cargar automáticamente cuando haces clic en ellas. <ph name="BEGIN_LINK" />Obtén más información<ph name="END_LINK" /> o <ph name="BEGIN_LINK_2" />envía comentarios<ph name="END_LINK_2" />.</translation>
 <translation id="2120620239521071941">Esta acción borrará <ph name="ITEMS_COUNT" /> elementos de este dispositivo. Si más adelante deseas recuperar los datos, accede a tu cuenta en Chrome como <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Reiniciar para actualizar &amp;Chrome</translation>
 <translation id="2123055963409958220">Informa tu <ph name="BEGIN_LINK" />configuración actual<ph name="END_LINK" /> para ayudarnos a mejorar Chrome</translation>
@@ -271,6 +272,7 @@
 <translation id="6735387454586646204">Sistema de Chrome OS Flex</translation>
 <translation id="6739177684496155661">¿Deseas continuar en un nuevo perfil de Chrome?</translation>
 <translation id="6750954913813541382">Para corregir los errores ortográficos, Chrome envía a Google lo que escribes en el navegador</translation>
+<translation id="6756581345161130259">Según sea necesario, Chrome recupera la memoria de las pestañas que no estás usando activamente. Puedes cambiar este parámetro cuando lo desees en Configuración.</translation>
 <translation id="677276454032249905">¿Deseas salir de Chrome de todos modos?</translation>
 <translation id="6785872064505734160">El Asistente de Google en Chrome puede completar acciones por ti en diferentes sitios web</translation>
 <translation id="683440813066116847">Regla de entrada para que Google Chrome Canary permita el tráfico mDNS.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb
index 8d650f4..3904fab8 100644
--- a/chrome/app/resources/google_chrome_strings_es.xtb
+++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -61,6 +61,7 @@
 <translation id="2094648590148273905">Términos de ChromeOS Flex</translation>
 <translation id="2094919256425865063">¿Quieres cerrar Chrome de todas formas?</translation>
 <translation id="2106831557840787829">ChromeOS Flex 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="2112742052114331084">Si se activa esta opción, Chrome recuperará la memoria de las pestañas que no estés usando activamente. De esta forma, se liberarán recursos de tu ordenador para otras tareas y Chrome podrá seguir ejecutándose con rapidez. Las pestañas inactivas se mostrarán vacías y se volverán a cargar automáticamente cuando hagas clic en ellas. <ph name="BEGIN_LINK" />Consulta más información<ph name="END_LINK" /> o <ph name="BEGIN_LINK_2" />envíanos comentarios<ph name="END_LINK_2" />.</translation>
 <translation id="2120620239521071941">Se eliminarán <ph name="ITEMS_COUNT" /> elementos de este dispositivo. Para recuperar tus datos en otro momento, inicia sesión en Chrome como <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Reiniciar para actualizar &amp;Chrome</translation>
 <translation id="2123055963409958220">Genera un informe de la <ph name="BEGIN_LINK" />configuración actual<ph name="END_LINK" /> para ayudar a mejorar Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb
index 74802075..e9fd329 100644
--- a/chrome/app/resources/google_chrome_strings_et.xtb
+++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -58,6 +58,7 @@
 <translation id="2094648590148273905">Chrome OS Flexi tingimused</translation>
 <translation id="2094919256425865063">Kas väljuda Chrome'ist ikkagi?</translation>
 <translation id="2106831557840787829">Chrome OS Flexi ja ka <ph name="BEGIN_LINK_LINUX_OSS" />Linuxi arenduskeskkonna<ph name="END_LINK_LINUX_OSS" /> aluseks on <ph name="BEGIN_LINK_CROS_OSS" />avatud lähtekoodiga lisatarkvara<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="2112742052114331084">Kui see on sisse lülitatud, võtab Chrome mälu tagasi vahelehtedelt, mida te aktiivselt ei kasuta. See võimaldab teie arvuti ressursse muude ülesannete jaoks kasutada ja aitab Chrome'il kiiresti töötada. Passiivsed vahelehed kuvatakse tühjana ja laaditakse automaatselt uuesti, kui nendel klõpsate. <ph name="BEGIN_LINK" />Lugege lisateavet<ph name="END_LINK" /> või <ph name="BEGIN_LINK_2" />saatke tagasisidet<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">See kustutab sellest seadmest <ph name="ITEMS_COUNT" /> üksust. Hiljem oma andmete toomiseks logige Chrome'i sisse kasutajana <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Taaskäivitage &amp;Chrome'i värskendamiseks</translation>
 <translation id="2123055963409958220">Aidake Chrome paremaks muuta, teavitades meid <ph name="BEGIN_LINK" />praegustest seadetest<ph name="END_LINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb
index 9d759f0a..edc514d 100644
--- a/chrome/app/resources/google_chrome_strings_fi.xtb
+++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -272,6 +272,7 @@
 <translation id="6735387454586646204">ChromeOS Flexin järjestelmä</translation>
 <translation id="6739177684496155661">Jatketaanko uudessa Chrome-profiilissa?</translation>
 <translation id="6750954913813541382">Chrome lähettää selaimeen kirjoittamasi tekstin Googlelle kirjoitusvirheiden korjaamiseksi</translation>
+<translation id="6756581345161130259">Chrome vapauttaa tarvittaessa muistia välilehdiltä, joita et käytä aktiivisesti. Voit muuttaa valintasi milloin tahansa asetuksista.</translation>
 <translation id="677276454032249905">Suljetaanko Chrome silti?</translation>
 <translation id="6785872064505734160">Chromen Google Assistant voi tehdä puolestasi verkkotoimia eri sivustoilla</translation>
 <translation id="683440813066116847">Google Chrome Canaryn saapuvien yhteyksien sääntö, joka sallii mDNS-liikenteen.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr-CA.xtb b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
index 938b5b2..d4c069e 100644
--- a/chrome/app/resources/google_chrome_strings_fr-CA.xtb
+++ b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">Conditions de Chrome OS Flex</translation>
 <translation id="2094919256425865063">Quitter Chrome quand même?</translation>
 <translation id="2106831557840787829">Chrome OS Flex fonctionne grâce à d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels libres<ph name="END_LINK_CROS_OSS" />, tout comme l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Lorsque cette option est activée, Chrome récupère la mémoire des onglets que vous n'utilisez pas activement. Cela libère les ressources de votre ordinateur pour d'autres tâches et maintient la rapidité de Chrome. Les onglets inactifs apparaissent vides et s'actualisent automatiquement lorsque vous cliquez dessus. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /> ou <ph name="BEGIN_LINK_2" />envoyer des commentaires<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Cette action entraînera la suppression de <ph name="ITEMS_COUNT" /> éléments sur cet appareil. Pour récupérer vos données plus tard, connectez-vous à Chrome en tant que <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Relancer &amp;Chrome pour le mettre à jour</translation>
 <translation id="2123055963409958220">Aidez-nous à améliorer Google Chrome en nous signalant les <ph name="BEGIN_LINK" />paramètres actuels<ph name="END_LINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb
index 97f0a55..e17d30c 100644
--- a/chrome/app/resources/google_chrome_strings_fr.xtb
+++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">Conditions d'utilisation de ChromeOS Flex</translation>
 <translation id="2094919256425865063">Quitter Chrome quand même ?</translation>
 <translation id="2106831557840787829">ChromeOS Flex dépend d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels Open Source<ph name="END_LINK_CROS_OSS" /> et l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" /> en est un.</translation>
+<translation id="2112742052114331084">Lorsque ce mode est activé, Chrome récupère la mémoire des onglets que vous n'utilisez pas activement. Cela libère des ressources de votre ordinateur pour d'autres tâches, tout en maintenant la rapidité de Chrome. Les onglets inactifs apparaissent vides et s'actualisent automatiquement quand vous cliquez dessus. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /> ou <ph name="BEGIN_LINK_2" />envoyer des commentaires<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Cette action aura pour effet de supprimer <ph name="ITEMS_COUNT" /> éléments de cet appareil. Pour récupérer vos données ultérieurement, connectez-vous à Chrome en tant que <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Relancer et mettre à jour &amp;Chrome</translation>
 <translation id="2123055963409958220">Aidez-nous à améliorer Chrome en nous signalant vos <ph name="BEGIN_LINK" />paramètres actuels<ph name="END_LINK" /></translation>
@@ -278,6 +279,7 @@
 <translation id="6735387454586646204">Système ChromeOS Flex</translation>
 <translation id="6739177684496155661">Continuer avec un nouveau profil Chrome ?</translation>
 <translation id="6750954913813541382">Pour corriger les fautes d'orthographe, Chrome envoie à Google le texte que vous saisissez dans le navigateur</translation>
+<translation id="6756581345161130259">Au besoin, Chrome récupère la mémoire des onglets que vous n'utilisez pas activement. Vous pouvez modifier cette option à tout moment dans les paramètres.</translation>
 <translation id="677276454032249905">Quitter Chrome quand même ?</translation>
 <translation id="6785872064505734160">L'Assistant Google dans Chrome peut effectuer des actions sur les sites Web à votre place</translation>
 <translation id="683440813066116847">Règle de trafic entrant pour Google Chrome Canary autorisant le trafic mDNS</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gl.xtb b/chrome/app/resources/google_chrome_strings_gl.xtb
index b0fd5eb..290b5d1 100644
--- a/chrome/app/resources/google_chrome_strings_gl.xtb
+++ b/chrome/app/resources/google_chrome_strings_gl.xtb
@@ -279,6 +279,7 @@
 <translation id="6735387454586646204">Sistema Chrome OS Flex</translation>
 <translation id="6739177684496155661">Queres continuar nun perfil de Chrome novo?</translation>
 <translation id="6750954913813541382">Para corrixir erros ortográficos, Chrome enviaralle a Google o texto que escribas no navegador</translation>
+<translation id="6756581345161130259">Chrome recuperará, segundo sexa necesario, a memoria das pestanas que non esteas a usar de maneira activa. Podes cambiar esta opción en calquera momento en Configuración.</translation>
 <translation id="677276454032249905">Queres saír de Chrome de todas formas?</translation>
 <translation id="6785872064505734160">O Asistente de Google en Chrome pode completar accións por ti nos sitios web</translation>
 <translation id="683440813066116847">Regra de entrada para Google Chrome Canary para permitir tráfico mDNS.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb
index 5e2b9e7b..5af62d1 100644
--- a/chrome/app/resources/google_chrome_strings_gu.xtb
+++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -32,6 +32,7 @@
 <translation id="1587223624401073077">Google Chrome તમારા કૅમેરાનો ઉપયોગ કરી રહ્યું છે.</translation>
 <translation id="1587325591171447154"><ph name="FILE_NAME" /> જોખમી છે, તેથી Chrome એ તેને અવરોધિત કરેલ છે.</translation>
 <translation id="1597911401261118146">ડેટા ઉલ્લંઘન અને અન્ય સુરક્ષાની સમસ્યાથી તમારા પાસવર્ડ સુરક્ષિત છે કે નહીં તે ચેક કરવા માટે, <ph name="BEGIN_LINK" />Chromeમાં સાઇન ઇન કરો<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Chrome દ્વારા આ આર્કાઇવ ફાઇલ બ્લૉક કરવામાં આવી કારણ કે તેમાં માલવેર છુપાવેલા હોઈ શકે છે</translation>
 <translation id="1619887657840448962">Chrome ને સુરક્ષિત બનાવવા માટે, અમે નીચેના એક્સ્ટેન્શનને અક્ષમ કર્યું છે કે જે <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> માં સૂચિબદ્ધ નથી અને તમારી જાણ વિના ઉમેરવામાં આવ્યું હોઈ શકે છે.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />તમે તમારો ડેટા કેવી રીતે મેનેજ કરી શકો છો:<ph name="END_BOLD" /> તમારી પ્રાઇવસીની સુરક્ષા કરવા માટે, અમે 4 અઠવાડિયા કરતાં જૂની હોય એવી તમારી રુચિઓને ઑટોમૅટિક રીતે ડિલીટ કરીએ છીએ. તમે જેમ જેમ બ્રાઉઝ કરતા રહો છો, તેમ તેમ તમારી રુચિનો વિષય ફરી સૂચિમાં દેખાઈ શકે છે. અથવા તમે તમારી રુચિના એવા વિષયો કાઢી નાખી શકો છો કે જેમને તમે Chromeની સૂચિમાં શામેલ કરવા માગતા નથી.</translation>
 <translation id="1628000112320670027">Chrome સાથે સહાય મેળવો</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb
index dadb7383..69012d89 100644
--- a/chrome/app/resources/google_chrome_strings_hr.xtb
+++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -57,6 +57,7 @@
 <translation id="2094648590148273905">Uvjeti za ChromeOS Flex</translation>
 <translation id="2094919256425865063">Želite li ipak zatvoriti Chrome?</translation>
 <translation id="2106831557840787829">ChromeOS Flex omogućuje dodatni <ph name="BEGIN_LINK_CROS_OSS" />softver otvorenog izvornog koda<ph name="END_LINK_CROS_OSS" />, isto kao i <ph name="BEGIN_LINK_LINUX_OSS" />razvojno okruženje Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Kada je to uključeno, Chrome vraća memoriju s kartica koje ne upotrebljavate aktivno. Time se resursi računala oslobađaju za druge zadatke i ubrzava se rad Chromea. Neaktivne kartice prikazuju se prazne i automatski se ponovno učitavaju kad ih kliknete. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /> ili <ph name="BEGIN_LINK_2" />pošaljite povratne informacije<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Time će se izbrisati sljedeći broj stavki s uređaja: <ph name="ITEMS_COUNT" />. Da biste kasnije dohvatili svoje podatke, prijavite se na Chrome kao <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Ponovno pokretanje radi ažuriranja &amp;Chromea</translation>
 <translation id="2123055963409958220">Pomognite poboljšati Chrome tako što ćete prijaviti <ph name="BEGIN_LINK" />trenutačne postavke<ph name="END_LINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb
index 42c4102..96f3b670 100644
--- a/chrome/app/resources/google_chrome_strings_hu.xtb
+++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -57,6 +57,7 @@
 <translation id="2094648590148273905">A ChromeOS Flex feltételei</translation>
 <translation id="2094919256425865063">Biztosan kilép a Chrome-ból?</translation>
 <translation id="2106831557840787829">A ChromeOS Flex létrejöttéhez egyéb <ph name="BEGIN_LINK_CROS_OSS" />nyílt forráskódú szoftverek<ph name="END_LINK_CROS_OSS" /> is hozzájárultak, például a <ph name="BEGIN_LINK_LINUX_OSS" />Linux fejlesztői környezet<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Ha be van kapcsolva, a Chrome visszaveszi a memóriát azoktól a lapoktól, amelyeket nem használ aktívan. Ez felszabadítja a számítógép erőforrásait más feladatok elvégzéséhez, így a Chrome gyors marad. Az inaktív lapok üresnek látszanak, és ha rájuk kattint, automatikusan újratöltődnek. <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="2120620239521071941">Ezzel <ph name="ITEMS_COUNT" /> elemet töröl az eszközről. Az adatok későbbi lekéréséhez jelentkezzen be a Chrome-ba a következő e-mail-címmel: <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Indítsa újra a Chrome frissítéshez</translation>
 <translation id="2123055963409958220">Segítsen a Chrome fejlesztésében a <ph name="BEGIN_LINK" />jelenlegi beállítások<ph name="END_LINK" /> elküldésével</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb
index ca88fb9..66db5f57 100644
--- a/chrome/app/resources/google_chrome_strings_hy.xtb
+++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -58,6 +58,7 @@
 <translation id="2094648590148273905">ChromeOS Flex-ի օգտագործման պայմաններ</translation>
 <translation id="2094919256425865063">Փակե՞լ Chrome-ը։</translation>
 <translation id="2106831557840787829">ChromeOS Flex-ը ստեղծվել է <ph name="BEGIN_LINK_CROS_OSS" />բաց կոդով ծրագրակազմի<ph name="END_LINK_CROS_OSS" /> հիման վրա, ինչպիսին է <ph name="BEGIN_LINK_LINUX_OSS" />Լինուքսի մշակման միջավայրը<ph name="END_LINK_LINUX_OSS" />։</translation>
+<translation id="2112742052114331084">Երբ այս ռեժիմը միացված է, Chrome-ը դադարում է օգտագործել հիշողությունն այն ներդիրների համար, որոնք դուք ակտիվորեն չեք օգտագործում։ Սա ազատում է համակարգչի ռեսուրսները այլ առաջադրանքների համար և ապահովում Chrome-ի արագ աշխատանքը։ Ոչ ակտիվ ներդիրները ցուցադրվում են դատարկ և ավտոմատ վերաբեռնվում են, երբ սեղմում եք դրանց վրա։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /> կամ <ph name="BEGIN_LINK_2" />ուղարկել կարծիք<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941"><ph name="ITEMS_COUNT" /> տարր ձեր սարքից կջնջվի: Հետագայում ձեր տվյալներն առբերելու համար մուտք գործեք Chrome <ph name="USER_EMAIL" /> հաշվով:</translation>
 <translation id="2121284319307530122">Վերագործարկել՝ &amp;Chrome-ը թարմացնելու համար</translation>
 <translation id="2123055963409958220">Օգնեք կատարելագործել Chrome-ը՝ հաղորդելով <ph name="BEGIN_LINK" />ընթացիկ կարգավորումների<ph name="END_LINK" /> մասին</translation>
@@ -276,6 +277,7 @@
 <translation id="6735387454586646204">ChromeOS Flex-ի համակարգ</translation>
 <translation id="6739177684496155661">Շարունակե՞լ Chrome-ի նոր պրոֆիլով</translation>
 <translation id="6750954913813541382">Ուղղագրական սխալները շտկելու համար Chrome-ը Google-ին է ուղարկում դիտարկիչում ձեր մուտքագրած տեքստը</translation>
+<translation id="6756581345161130259">Ըստ անհրաժեշտության՝ Chrome-ը դադարում է օգտագործել հիշողությունն այն ներդիրների համար, որոնք դուք ակտիվորեն չեք օգտագործում։ Այս գործառույթը ցանկացած ժամանակ կարող եք փոփոխել կարգավորումներում։</translation>
 <translation id="677276454032249905">Փակե՞լ Chrome-ը։</translation>
 <translation id="6785872064505734160">Google Օգնականը Chrome-ում կարող է կայքերի հետ կապված գործողություններ կատարել</translation>
 <translation id="683440813066116847">Թույլատրել Google Chrome Canary-ում տվյալների մուտքային հոսքի փոխանցումը mDNS հաղորդակարգով:</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb
index 5c5777f..94f1f575 100644
--- a/chrome/app/resources/google_chrome_strings_is.xtb
+++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">Skilmálar ChromeOS Flex</translation>
 <translation id="2094919256425865063">Viltu samt loka Chrome?</translation>
 <translation id="2106831557840787829">ChromeOS Flex á tilvist sína að þakka öðrum<ph name="BEGIN_LINK_CROS_OSS" />opnum hugbúnaði<ph name="END_LINK_CROS_OSS" /> og það sama á við um <ph name="BEGIN_LINK_LINUX_OSS" />Linux-forritunarumhverfið<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Þegar kveikt er á þessu endurheimtir Chrome minni úr flipum sem eru ekki í virkri notkun. Þetta losar um gagnarými tölvunnar fyrir önnur verkefni og viðheldur hraða Chrome. Óvirkir flipar virðast auðir og endurhlaðast sjálfkrafa þegar þú smellir á þá. <ph name="BEGIN_LINK" />Kynntu þér þetta nánar<ph name="END_LINK" /> eða <ph name="BEGIN_LINK_2" />sendu ábendingu<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Þetta mun eyða <ph name="ITEMS_COUNT" /> atriðum úr þessu tæki. Skráðu þig inn í Chrome sem <ph name="USER_EMAIL" /> til að endurheimta gögnin síðar.</translation>
 <translation id="2121284319307530122">Endurræstu til að uppfæra &amp;Chrome</translation>
 <translation id="2123055963409958220">Hjálpa til við að gera Google Chrome betra með því að tilkynna um <ph name="BEGIN_LINK" />núverandi stillingar<ph name="END_LINK" /></translation>
@@ -278,6 +279,7 @@
 <translation id="6735387454586646204">ChromeOS Flex kerfi</translation>
 <translation id="6739177684496155661">Halda áfram á nýjum Chrome prófíl?</translation>
 <translation id="6750954913813541382">Til að lagfæra stafsetningarvillur sendir Chrome textann sem þú skrifar í vafranum til Google</translation>
+<translation id="6756581345161130259">Chrome endurheimtir minni úr flipum sem eru ekki í virkri notkun eftir þörfum. Þú getur breytt þessu hvenær sem er í stillingunum.</translation>
 <translation id="677276454032249905">Viltu samt loka Chrome?</translation>
 <translation id="6785872064505734160">Google hjálparinn í Chrome getur lokið aðgerðum á ýmsum vefsíðum fyrir þig</translation>
 <translation id="683440813066116847">Regla á innleið til að láta Google Chrome Canary leyfa mDNS-umferð.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb
index f960a505..16568c86 100644
--- a/chrome/app/resources/google_chrome_strings_it.xtb
+++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -56,6 +56,7 @@
 <translation id="2094648590148273905">Termini di Chrome OS Flex</translation>
 <translation id="2094919256425865063">Vuoi chiudere comunque Chrome?</translation>
 <translation id="2106831557840787829">La realizzazione di Chrome OS Flex è stata possibile grazie a un <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivo, noto come <ph name="BEGIN_LINK_LINUX_OSS" />ambiente di sviluppo Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Quando questa impostazione è attiva, Chrome recupera memoria dalle schede che non utilizzi attivamente. Questo consente di liberare risorse del computer da usare per altre attività e di fare in modo che Chrome sia sempre veloce. Le schede non attive appaiono vuote e vengono ricaricate automaticamente quando ci fai clic sopra. <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" /> o <ph name="BEGIN_LINK_2" />invia feedback<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Verranno eliminati <ph name="ITEMS_COUNT" /> elementi da questo dispositivo. Per recuperare i dati in un secondo momento, accedi a Chrome come <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Riavvia per aggiornare &amp;Chrome</translation>
 <translation id="2123055963409958220">Contribuisci a migliorare Chrome indicando le <ph name="BEGIN_LINK" />impostazioni attuali<ph name="END_LINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb
index d02fffa..26302f8 100644
--- a/chrome/app/resources/google_chrome_strings_ka.xtb
+++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -279,6 +279,7 @@
 <translation id="6735387454586646204">ChromeOS Flex სისტემა</translation>
 <translation id="6739177684496155661">გსურთ ახალ Chrome პროფილში გაგრძელება?</translation>
 <translation id="6750954913813541382">მართლწერის შეცდომების შესასწორებლად Chrome უგზავნის Google-ს თქვენ მიერ ბრაუზერში აკრეფილ ტექსტს</translation>
+<translation id="6756581345161130259">საჭიროებისამებრ, Chrome დაიბრუნებს მეხსიერებას ჩანართებიდან, რომლებსაც აქტიურად არ იყენებთ. ამის შეცვლა ნებისმიერ დროს შეგიძლიათ პარამეტრებიდან.</translation>
 <translation id="677276454032249905">მაინც გსურთ Chrome-იდან გასვლა?</translation>
 <translation id="6785872064505734160">Google ასისტენტს Chrome-ში გახსნილ სხვადასხვა ვებსაიტზე შეუძლია გარკვეული მოქმედების შესრულება თქვენ ნაცვლად</translation>
 <translation id="683440813066116847">შიდა წესი Google Chrome Canary-ისთვის mDNS ტრაფიკის დასაშვებად.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb
index ac4d79b..cf73e048 100644
--- a/chrome/app/resources/google_chrome_strings_kk.xtb
+++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">ChromeOS Flex шарттары</translation>
 <translation id="2094919256425865063">Chrome браузерінен бәрібір шығасыз ба?</translation>
 <translation id="2106831557840787829">ChromeOS Flex операциялық жүйесі де <ph name="BEGIN_LINK_LINUX_OSS" />Linux әзірлеу ортасы<ph name="END_LINK_LINUX_OSS" /> сияқты қосымша <ph name="BEGIN_LINK_CROS_OSS" />ашық кодты бағдарламалық құрал<ph name="END_LINK_CROS_OSS" /> арқылы қолжетімді болады.</translation>
+<translation id="2112742052114331084">Қосулы болса, Chrome браузері белсенді түрде пайдаланылмайтын қойындыларды өшіріп, жадты босатады. Мұндайда компьютер ресурстары басқа тапсырмалар үшін босап, Chrome браузері жылдам жұмыс істейді. Белсенді емес қойындылар бос тұрады және оларды басқан кезде, автоматты түрде қайта жүктеледі. <ph name="BEGIN_LINK" />Толық ақпарат алыңыз<ph name="END_LINK" /> немесе <ph name="BEGIN_LINK_2" />пікір жіберіңіз<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941"><ph name="ITEMS_COUNT" /> элемент бұл құрылғыдан жойылады. Деректерді кейінірек алу үшін Chrome жүйесіне <ph name="USER_EMAIL" /> болып кіріңіз.</translation>
 <translation id="2121284319307530122">&amp;Chrome-ды жаңарту үшін қайта іске қосу</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />Ағымдағы параметрлерді<ph name="END_LINK" /> хабарлау арқылы Chrome браузерін жақсартуға көмектесіңіз</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb
index d13051d..459692d 100644
--- a/chrome/app/resources/google_chrome_strings_ky.xtb
+++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -61,6 +61,7 @@
 <translation id="2094648590148273905">ChromeOS Flex шарттары</translation>
 <translation id="2094919256425865063">Баары бир Chrome'ду токтотосузбу?</translation>
 <translation id="2106831557840787829">ChromeOS Flex тутуму, <ph name="BEGIN_LINK_LINUX_OSS" />Linux'ту өнүктүрүү чөйрөсү<ph name="END_LINK_LINUX_OSS" /> сыяктуу, кошумча <ph name="BEGIN_LINK_CROS_OSS" />баштапкы коду ачык программалык камсыздоонун<ph name="END_LINK_CROS_OSS" /> жардамы менен иштейт.</translation>
+<translation id="2112742052114331084">Күйгүзүлсө, Chrome активдүү колдонулбаган өтмөктөрдүн эстутумун колдонот. Ушуну менен компьютердин ресурстары башка тапшырмалар үчүн жеткиликтүү болуп, Chrome ылдам иштейт. Жигерсиз өтмөктөр бош болуп, аларды чыкылдатканыңызда автоматтык түрдө кайрадан жүктөлүшөт. <ph name="BEGIN_LINK" />Кеңири маалымат алыңыз<ph name="END_LINK" /> же <ph name="BEGIN_LINK_2" />пикир билдириңиз<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Ушуну менен түзмөктөгү <ph name="ITEMS_COUNT" /> нерсе өчүрүлөт. Дайын-даректериңизди кийинчерээк чыгарып алуу үчүн Chrome'го <ph name="USER_EMAIL" /> аккаунту менен кириңиз.</translation>
 <translation id="2121284319307530122">&amp;Chrome'ду жаңыртуу үчүн кайра иштетиңиз</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />Учурдагы жөндөөлөр<ph name="END_LINK" /> жөнүндө кабар берип, Chrome'ду өркүндөтүүгө кол кабыш кылыңыз</translation>
@@ -279,6 +280,7 @@
 <translation id="6735387454586646204">ChromeOS Flex тутуму</translation>
 <translation id="6739177684496155661">Жаңы Chrome профилинде улантасызбы?</translation>
 <translation id="6750954913813541382">Орфографиялык каталарды оңдоо үчүн Chrome серепчиде терилген текстти Google кызматтарына жөнөтүп турат</translation>
+<translation id="6756581345161130259">Керек болгондо Chrome активдүү колдонулбаган өтмөктөрдүн эстутумун колдонот. Бул мүмкүнчүлүктү каалаган убакта параметрлерден өзгөртө аласыз.</translation>
 <translation id="677276454032249905">Баары бир Chrome'дон чыгасызбы?</translation>
 <translation id="6785872064505734160">Chrome'догу Google Жардамчы вебсайттардагы аракеттерди сиз үчүн аткара алат</translation>
 <translation id="683440813066116847">mDNS трафигине мүмкүндүк берүү үчүн Google Chrome Canary'нин кайрылуу эрежеси.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb
index c7c9bccf..1ec1788 100644
--- a/chrome/app/resources/google_chrome_strings_lo.xtb
+++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -280,6 +280,7 @@
 <translation id="6735387454586646204">ລະບົບ ChromeOS Flex</translation>
 <translation id="6739177684496155661">ສືບຕໍ່ໃນໂປຣໄຟລ໌ Chrome ໃໝ່ບໍ?</translation>
 <translation id="6750954913813541382">ເພື່ອແກ້ໄຂຂໍ້ຜິດພາດກ່ຽວກັບການສະກົດຄຳ, Chrome ສົ່ງຂໍ້ຄວາມທີ່ທ່ານພິມໃນໂປຣແກຣມທ່ອງເວັບໃຫ້ Google</translation>
+<translation id="6756581345161130259">Chrome ຈະເອີ້ນໜ່ວຍຄວາມຈຳກັບຄືນມາຈາກແຖບທີ່ທ່ານບໍ່ໄດ້ໃຊ້ເປັນປະຈຳຕາມທີ່ຕ້ອງການ. ທ່ານສາມາດປ່ຽນສິ່ງນີ້ຕອນໃດກໍໄດ້ໃນການຕັ້ງຄ່າ.</translation>
 <translation id="677276454032249905">ຢືນຢັນການອອກຈາກ Chrome ບໍ?</translation>
 <translation id="6785872064505734160">ຜູ້ຊ່ວຍ Google ໃນ Chrome ສາມາດເຮັດຄຳສັ່ງຕ່າງໆໃຫ້ສຳເລັດໃນທົ່ວເວັບໄຊໃຫ້ທ່ານໄດ້</translation>
 <translation id="683440813066116847">ກົດລະບຽບຂາເຂົ້າສໍາລັບ Google Chrome Canary ເພື່ອອະນຸຍາດໃຫ້ການຈາລະຈອນ mDNS.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lv.xtb b/chrome/app/resources/google_chrome_strings_lv.xtb
index c0a6cb4..aca16c5 100644
--- a/chrome/app/resources/google_chrome_strings_lv.xtb
+++ b/chrome/app/resources/google_chrome_strings_lv.xtb
@@ -58,6 +58,7 @@
 <translation id="2094648590148273905">Chrome OS Flex noteikumi</translation>
 <translation id="2094919256425865063">Vai tik un tā aizvērt pārlūku Chrome?</translation>
 <translation id="2106831557840787829">Chrome OS Flex, kā arī <ph name="BEGIN_LINK_LINUX_OSS" />Linux izstrādes vides<ph name="END_LINK_LINUX_OSS" /> darbību nodrošina papildu <ph name="BEGIN_LINK_CROS_OSS" />atklātā pirmkoda programmatūra<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="2112742052114331084">Kad šis iestatījums ir ieslēgts, Chrome atgūst atmiņas lietojumu no cilnēm, kuras aktīvi neizmantojat. Tādējādi tiek atbrīvoti datora resursi citiem uzdevumiem un tiek nodrošināta ātra Chrome darbība. Neaktīvās cilnes tiek rādītas tukšas un tiek automātiski atkārtoti ielādētas, kad uz tām noklikšķināt. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" /> vai <ph name="BEGIN_LINK_2" />nosūtiet atsauksmes<ph name="END_LINK_2" />.</translation>
 <translation id="2120620239521071941">Veicot šo darbību, no šīs ierīces tiks dzēsts(-i) <ph name="ITEMS_COUNT" /> vienums(-i). Lai vēlāk izgūtu datus, pierakstieties pārlūkā Chrome kā <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Atkārtoti palaist, lai atjauninātu &amp;Chrome</translation>
 <translation id="2123055963409958220">Palīdziet uzlabot pārlūku Chrome, ziņojot par <ph name="BEGIN_LINK" />pašreizējiem iestatījumiem<ph name="END_LINK" />.</translation>
@@ -274,6 +275,7 @@
 <translation id="6735387454586646204">Chrome OS Flex sistēma</translation>
 <translation id="6739177684496155661">Vai turpināt jaunā Chrome profilā?</translation>
 <translation id="6750954913813541382">Lai labotu pareizrakstības kļūdas, Chrome nosūta jūsu pārlūkprogrammā ievadīto tekstu Google serveriem</translation>
+<translation id="6756581345161130259">Chrome pēc vajadzības atgūst atmiņas lietojumu no cilnēm, kuras jūs aktīvi neizmantojat. Iestatījumos varat jebkurā laikā to mainīt.</translation>
 <translation id="677276454032249905">Vai tik un tā aizvērt pārlūku Chrome?</translation>
 <translation id="6785872064505734160">Google asistents pārlūkprogrammā Chrome var veikt darbības vietnēs jūsu vārdā.</translation>
 <translation id="683440813066116847">Ienākošo savienojumu kārtula pārlūkam Google Chrome Canary, lai atļautu mDNS datplūsmu.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mk.xtb b/chrome/app/resources/google_chrome_strings_mk.xtb
index 8bd1991d..bad5f41 100644
--- a/chrome/app/resources/google_chrome_strings_mk.xtb
+++ b/chrome/app/resources/google_chrome_strings_mk.xtb
@@ -32,6 +32,7 @@
 <translation id="1587223624401073077">Google Chrome ја користи вашата камера.</translation>
 <translation id="1587325591171447154">Датотеката <ph name="FILE_NAME" /> е опасна, па затоа Chrome ја блокираше.</translation>
 <translation id="1597911401261118146">За да проверите дали вашите лозинки се заштитени од упад во податоците и други проблеми со безбедноста, <ph name="BEGIN_LINK" />најавете се на Chrome<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Chrome ја блокираше оваа датотека од архивате бидејќи можеби крие злонамерен софтвер</translation>
 <translation id="1619887657840448962">За Chrome да биде побезбеден, ја оневозможивме следнава екстензија што не е наведена во <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> и може да е додадена без ваше знаење.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Како може да управувате со вашите податоци:<ph name="END_BOLD" /> заради заштита на вашата приватност, автоматски ги бришеме вашите интереси што се постари од 4 седмици. Додека прелистувате, може да се појави интерес на списокот повторно. Или можете да ги отстраните интересите што не сакате Chrome да ги зема предвид.</translation>
 <translation id="1628000112320670027">Добијте помош за Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb
index d511c4b..fc518d8c 100644
--- a/chrome/app/resources/google_chrome_strings_mn.xtb
+++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -32,6 +32,7 @@
 <translation id="1587223624401073077">Google Chrome нь таны камерыг ашиглаж байна.</translation>
 <translation id="1587325591171447154"><ph name="FILE_NAME" /> аюултай тул үүнийг Chrome блок хийсэн.</translation>
 <translation id="1597911401261118146">Нууц үгнүүддээ өгөгдлийн зөрчил болон аюулгүй байдлын өөр асуудал байхгүй болохыг шалгахын тулд <ph name="BEGIN_LINK" />Chrome-д нэвтэрнэ үү<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Энэ архивын файл хортой программ нууж байж магадгүй тул Chrome үүнийг блоклосон</translation>
 <translation id="1619887657840448962">Chrome-г илүү аюулгүй болгохын тулд <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> жагсаалтанд байхгүй, танд мэдэгдэлгүйгээр нэмэгдсэн байж болох дараах өргөтгөлийг идэвхгүй болголоо.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Та өгөгдлөө хэрхэн удирдах боломжтой вэ?:<ph name="END_BOLD" /> Таны нууцлалыг хамгаалахын тулд бид таны 4 долоо хоногоос дээш хугацаатай сонирхлыг автоматаар устгадаг. Таныг үргэлжлүүлэн үзэх үед сонирхол нь жагсаалтад дахин харагдаж магадгүй. Эсвэл та Chrome-г харгалзан үзэхгүй байхыг хүсэж буй сонирхлоо хасах боломжтой.</translation>
 <translation id="1628000112320670027">Chrome-с тусламж авах</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb
index e3ee7af..655e2ca 100644
--- a/chrome/app/resources/google_chrome_strings_ms.xtb
+++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -57,6 +57,7 @@
 <translation id="2094648590148273905">Syarat Chrome OS Flex</translation>
 <translation id="2094919256425865063">Keluar daripada Chrome juga?</translation>
 <translation id="2106831557840787829">ChromeOS Flex menjadi kenyataan dengan <ph name="BEGIN_LINK_CROS_OSS" />perisian sumber terbuka<ph name="END_LINK_CROS_OSS" />tambahan, sebagaimana <ph name="BEGIN_LINK_LINUX_OSS" />persekitaran pembangunan Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Apabila dihidupkan, Chrome memulih guna memori daripada tab yang tidak digunakan secara aktif. Tindakan ini akan membebaskan sumber komputer anda untuk tugasan lain dan memastikan Chrome sentiasa pantas. Tab tidak aktif kelihatan kosong dan memuat semula secara automatik apabila anda mengkliknya. <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="2120620239521071941">Tindakan ini akan memadamkan <ph name="ITEMS_COUNT" /> item daripada peranti ini. Untuk mendapatkan kembali data anda kemudian, log masuk ke Chrome sebagai <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Lancarkan Semula untuk Mengemas Kini &amp;Chrome</translation>
 <translation id="2123055963409958220">Bantu jadikan Chrome lebih baik dengan melaporkan <ph name="BEGIN_LINK" />tetapan semasa<ph name="END_LINK" /></translation>
@@ -271,6 +272,7 @@
 <translation id="6735387454586646204">Sistem Chrome OS Flex</translation>
 <translation id="6739177684496155661">Teruskan dalam profil Chrome baharu?</translation>
 <translation id="6750954913813541382">Untuk membetulkan kesalahan ejaan, Chrome akan menghantar teks yang anda taip dalam penyemak imbas kepada Google</translation>
+<translation id="6756581345161130259">Seperti yang diperlukan, Chrome menuntut semula memori daripada tab yang tidak digunakan secara aktif. Anda boleh menukar pilihan ini pada bila-bila masa dalam tetapan.</translation>
 <translation id="677276454032249905">Keluar daripada Chrome juga?</translation>
 <translation id="6785872064505734160">Google Assistant dalam Chrome boleh melengkapkan tindakan merentas laman web untuk anda</translation>
 <translation id="683440813066116847">Peraturan masuk bagi Google Chrome Canary untuk membenarkan trafik mDNS.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ne.xtb b/chrome/app/resources/google_chrome_strings_ne.xtb
index 9d66535..282627c 100644
--- a/chrome/app/resources/google_chrome_strings_ne.xtb
+++ b/chrome/app/resources/google_chrome_strings_ne.xtb
@@ -59,6 +59,7 @@
 <translation id="2094648590148273905">ChromeOS Flex का सर्तहरू</translation>
 <translation id="2094919256425865063">जे भए पनि Chrome छाडेर बाहिरिने हो?</translation>
 <translation id="2106831557840787829">ChromeOS Flex <ph name="BEGIN_LINK_LINUX_OSS" />Linux डेभलपमेन्ट इनभारमेन्ट<ph name="END_LINK_LINUX_OSS" /> जस्तै अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />खुला स्रोतको सफ्टवेयर<ph name="END_LINK_CROS_OSS" /> प्रयोग गरी निर्माण गरिएको हो।</translation>
+<translation id="2112742052114331084">यो सेटिङ अन हुँदा Chrome ले तपाईंले सक्रिय रूपमा प्रयोग नगरिरहनुभएका ट्याबको मेमोरी रिकभर गर्छ। यसकारण तपाईं आफ्नो कम्प्युटरका स्रोतहरू प्रयोग गरी अन्य काम गर्न सक्नुहुन्छ। साथै, Chrome ले छिटो काम गर्छ। असक्रिय ट्याबहरू खाली देखिन्छन् र तपाईंले ती ट्याबमा क्लिक गरेपछि ती ट्याबहरू स्वतः रिलोड हुन्छन्। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /> वा <ph name="BEGIN_LINK_2" />प्रतिक्रिया पठाउनुहोस्<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">यसले यस डिभाइसका <ph name="ITEMS_COUNT" /> वस्तुहरू मेट्नेछ। पछि आफ्नो डेटा प्राप्त गर्न Chrome मा <ph name="USER_EMAIL" /> को रूपमा साइन इन गर्नुहोस्।</translation>
 <translation id="2121284319307530122">&amp;Chrome अपडेट गर्न पुनः सुरु गर्नुहोस्</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />हालका सेटिङहरू<ph name="END_LINK" /> को रिपोर्ट गरेर Chrome लाई अझ राम्रो बनाउन मद्दत गर्नुहोस्</translation>
@@ -275,6 +276,7 @@
 <translation id="6735387454586646204">ChromeOS Flex सिस्टम</translation>
 <translation id="6739177684496155661">नयाँ Chrome प्रोफाइल प्रयोग गरी साइन इन गर्ने हो?</translation>
 <translation id="6750954913813541382">हिज्जेसम्बन्धी त्रुटि सच्याउने प्रयोजनका लागि Chrome ले तपाईंले ब्राउजरमा टाइप गर्ने पाठ Google लाई पठाउँछ</translation>
+<translation id="6756581345161130259">Chrome ले आवश्यकताअनुसार तपाईंले सक्रिय रूपमा प्रयोग नगरिरहनुभएका ट्याबको मेमोरी रिकभर गर्दछ। तपाईं जुनसुकै बेला सेटिङमा गई यो कुरा बदल्न सक्नुहुन्छ।</translation>
 <translation id="677276454032249905">जे भए पनि Chrome बाट बाहिरिने हो?</translation>
 <translation id="6785872064505734160">Chrome मा रहेको Google सहायकले सबै वेबसाइटहरूमा तपाईंले अह्राएअनुसार काम गर्न सक्छ</translation>
 <translation id="683440813066116847">mDNS ट्राफिक अनुमतिका लागि गूगल क्रोम क्यानरीका लागि अन्तरगामी नियम।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb
index 331e0e0..1aae03c 100644
--- a/chrome/app/resources/google_chrome_strings_nl.xtb
+++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -31,6 +31,7 @@
 <translation id="1587223624401073077">Google Chrome gebruikt je camera.</translation>
 <translation id="1587325591171447154"><ph name="FILE_NAME" /> is gevaarlijk en is daarom door Chrome geblokkeerd.</translation>
 <translation id="1597911401261118146">Als je wilt checken of je wachtwoorden zijn beveiligd tegen gegevenslekken en andere beveiligingsproblemen, <ph name="BEGIN_LINK" />log je in bij Chrome<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Chrome heeft dit archiefbestand geblokkeerd omdat het misschien malware bevat</translation>
 <translation id="1619887657840448962">We hebben de volgende extensie uitgezet die niet wordt vermeld in de <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> en mogelijk zonder je medeweten is toegevoegd. We doen dit om Chrome veiliger te maken.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Hoe je je gegevens kunt beheren:<ph name="END_BOLD" /> Ter bescherming van je privacy verwijderen we automatisch interesses die ouder zijn dan 4 weken. Het kan gebeuren dat een interesse weer in de lijst komt te staan als je blijft browsen. Je kunt ook interesses verwijderen waarvan je niet wilt dat Chrome deze overweegt.</translation>
 <translation id="1628000112320670027">Hulp bij Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb
index 74789e9..01253ea3 100644
--- a/chrome/app/resources/google_chrome_strings_no.xtb
+++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -271,6 +271,7 @@
 <translation id="6735387454586646204">ChromeOS Flex-system</translation>
 <translation id="6739177684496155661">Vil du fortsette i en ny Chrome-profil?</translation>
 <translation id="6750954913813541382">For å rette stavefeil sender Chrome teksten du skriver inn i nettleseren, til Google</translation>
+<translation id="6756581345161130259">Ved behov tar Chrome tilbake minne fra faner du ikke bruker aktivt. Du kan når som helst endre dette i innstillingene.</translation>
 <translation id="677276454032249905">Vil du avslutte Chrome likevel?</translation>
 <translation id="6785872064505734160">Google-assistenten i Chrome kan utføre handlinger for deg på ulike nettsteder</translation>
 <translation id="683440813066116847">Regel om innkommende trafikk for Google Chrome Canary for å tillate mDNS-trafikk.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb
index eba186d..55f2c9a 100644
--- a/chrome/app/resources/google_chrome_strings_pl.xtb
+++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -223,6 +223,7 @@
 <translation id="5386244825306882791">Kontroluje także to, jaka strona wyświetla się po uruchomieniu Chrome lub wyszukiwaniu w omniboksie.</translation>
 <translation id="5394833366792865639">Udostępnij kartę Chrome</translation>
 <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="5416870378730196769">Przeglądarka Chrome włączyła Oszczędzanie pamięci</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="556024056938947818">Google Chrome próbuje pokazać hasła.</translation>
@@ -319,6 +320,7 @@
 <translation id="7649070708921625228">Pomoc</translation>
 <translation id="7651907282515937834">Logo Chrome Enterprise</translation>
 <translation id="7655455401911432608">Twoja historia przeglądania, czyli rejestr witryn, które odwiedzasz w Chrome na tym urządzeniu.</translation>
+<translation id="7726773885101561560">Aby przyspieszyć przeglądanie, Chrome odzyskuje pamięć z nieużywanych kart.</translation>
 <translation id="7747138024166251722">Instalator nie mógł utworzyć katalogu tymczasowego. Sprawdź, czy na dysku jest dość wolnego miejsca oraz sprawdź, czy posiadasz uprawnienia do instalowania programów.</translation>
 <translation id="7761834446675418963">Otwórz Chrome, klikając swoją nazwę, i rozpocznij przeglądanie.</translation>
 <translation id="7777080907402804672">Jeśli obraz nie ma przydatnego opisu, Chrome spróbuje go dla Ciebie stworzyć. W tym celu obrazy zostaną wysłane do Google. W każdej chwili możesz wyłączyć tę funkcję w ustawieniach.</translation>
@@ -391,6 +393,7 @@
 <translation id="8986207147630327271">Dodajesz profil służbowy w tej przeglądarce i dajesz swojemu administratorowi kontrolę tylko nad tym profilem.</translation>
 <translation id="8989968390305463310">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. Zainteresowania mogą być odświeżane, chyba że je usuniesz.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Dostępna jest aktualizacja Chrome}=1{Dostępna jest aktualizacja Chrome}few{Aktualizacja Chrome jest dostępna od # dni}many{Aktualizacja Chrome jest dostępna od # dni}other{Aktualizacja Chrome jest dostępna od # dnia}}</translation>
+<translation id="9003498785844995646">Gdy ta funkcja jest włączona, Chrome oszczędza baterię, ograniczając aktywność w tle i efekty wizualne, takie jak płynne przewijanie i liczba klatek w filmie. <ph name="BEGIN_LINK" />Dowiedz się więcej<ph name="END_LINK" /> lub <ph name="BEGIN_LINK_2" />prześlij opinię<ph name="END_LINK_2" /></translation>
 <translation id="9053892488859122171">System ChromeOS Flex</translation>
 <translation id="9067395829937117663">Google Chrome wymaga systemu Windows 7 lub nowszego.</translation>
 <translation id="911206726377975832">Czy usunąć także dane przeglądania?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
index b1e44321..b2ea79a 100644
--- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb
+++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -30,6 +30,7 @@
 <translation id="1587223624401073077">O Google Chrome está a utilizar a câmara.</translation>
 <translation id="1587325591171447154"><ph name="FILE_NAME" /> é perigoso, por isso o Chrome bloqueou-o.</translation>
 <translation id="1597911401261118146">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 Chrome<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">O Chrome bloqueou este ficheiro de arquivo porque pode ocultar software malicioso</translation>
 <translation id="1619887657840448962">Para tornar o Chrome mais seguro, desativámos a seguinte extensão, que não está listada na <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />, e é possível que tenha sido adicionada sem o seu conhecimento.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Como pode gerir os seus dados:<ph name="END_BOLD" /> para proteger a sua privacidade, eliminamos automaticamente os seus interesses com mais de 4 semanas. Enquanto navega, um interesse pode aparecer novamente na lista. Em alternativa, pode remover os interesses que não quer que o Chrome considere.</translation>
 <translation id="1628000112320670027">Obter ajuda relacionada com o Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb
index 05157f3..d8a2bc27 100644
--- a/chrome/app/resources/google_chrome_strings_ru.xtb
+++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -271,6 +271,7 @@
 <translation id="6735387454586646204">Система Chrome OS Flex</translation>
 <translation id="6739177684496155661">Продолжить работу в новом профиле Chrome?</translation>
 <translation id="6750954913813541382">Для проверки правописания Chrome отправляет в Google текст, который вы вводите в браузере.</translation>
+<translation id="6756581345161130259">При необходимости Chrome освобождает память, закрывая вкладки, которые некоторое время не использовались. Этот параметр можно в любой момент изменить в настройках.</translation>
 <translation id="677276454032249905">Закрыть Chrome?</translation>
 <translation id="6785872064505734160">Google Ассистент в Chrome может помогать вам выполнять действия на сайтах.</translation>
 <translation id="683440813066116847">Разрешить в Google Chrome Canary передачу входящего трафика по протоколу mDNS</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb
index 8257314..9d3c9a13 100644
--- a/chrome/app/resources/google_chrome_strings_si.xtb
+++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">ChromeOS Flex නියම</translation>
 <translation id="2094919256425865063">කෙසේ වුවත් Chrome වෙතින් ඉවත් වන්න ද?</translation>
 <translation id="2106831557840787829">ChromeOS Flex අතිරේක <ph name="BEGIN_LINK_CROS_OSS" />විවෘත මූලාශ්‍ර මෘදුකාංගය<ph name="END_LINK_CROS_OSS" /> මගින්, <ph name="BEGIN_LINK_LINUX_OSS" />Linux සංවර්ධන පරිසරය<ph name="END_LINK_LINUX_OSS" /> ලෙස හැකියාව ලබා දී ඇත.</translation>
+<translation id="2112742052114331084">ක්‍රියාත්මක විට, Chrome ඔබ සක්‍රියව භාවිතා නොකරන පටිතිවලින් මතකය නැවත ලබා ගනී. මෙය වෙනත් කාර්යයන් සඳහා ඔබේ පරිගණකයේ සම්පත් නිදහස් කරන අතර Chrome වේගවත් කරයි. අක්‍රිය පටිති හිස්ව පෙනෙන අතර ඔබ ඒවා ක්ලික් කළ විට ස්වයංක්‍රීයව නැවත පූරණය වේ. <ph name="BEGIN_LINK" />තව දැන ගන්න<ph name="END_LINK" /> හෝ <ph name="BEGIN_LINK_2" />ප්‍රතිපෝෂණය යවන්න<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">මෙය අයිතම <ph name="ITEMS_COUNT" /> මෙම උපාංගයෙන් මකනු ඇත. ඔබගේ දත්ත පසුව ලබා ගැනීමට, <ph name="USER_EMAIL" /> ලෙස Chrome වෙත පුරන්න.</translation>
 <translation id="2121284319307530122">&amp;Chrome යාවත්කාලීන කිරීමට යළි දියත් කරන්න</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />වත්මන් සැකසීම්<ph name="END_LINK" /> වාර්තා කිරීමෙන් Chrome වඩා යහපත් කිරීමට උදවු වන්න</translation>
@@ -278,6 +279,7 @@
 <translation id="6735387454586646204">ChromeOS Flex පද්ධතිය</translation>
 <translation id="6739177684496155661">නව Chrome පැතිකඩක ඉදිරියට යන්නද?</translation>
 <translation id="6750954913813541382">අක්‍ෂර වින්‍යාස දෝෂ නිවැරදි කිරීමට, නිඔබ බ්‍රවුසරය තුළ ටයිප් කරන පාඨය Chrome විසින් Google වෙත යවනු ලැබේ</translation>
+<translation id="6756581345161130259">අවශ්‍ය පරිදි, Chrome ඔබ සක්‍රියව භාවිතා නොකරන පටිතිවලින් මතකය නැවත ලබා ගනී. ඔබට සැකසීම් තුළ මෙය ඕනෑම වේලාවක වෙනස් කළ හැක.</translation>
 <translation id="677276454032249905">කෙසේ වුවත් Chrome වෙතින් ඉවත් වන්න ද?</translation>
 <translation id="6785872064505734160">Chrome තුළ ඇති Google සහකරු ඔබ වෙනුවෙන් වෙබය පුරා කාර්ය ඉටු කළ හැක</translation>
 <translation id="683440813066116847">Google Chrome Canary හි අභ්‍යන්තර නියෝගය වන්නේ   mDNS තදබදයයි.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb
index 3fa73c2..7276404 100644
--- a/chrome/app/resources/google_chrome_strings_sk.xtb
+++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -32,6 +32,7 @@
 <translation id="1587223624401073077">Google Chrome používa vašu kameru.</translation>
 <translation id="1587325591171447154">Súbor <ph name="FILE_NAME" /> je nebezpečný, a preto ho Chrome zablokoval.</translation>
 <translation id="1597911401261118146">Ak chcete skontrolovať, či sú vaše heslá chránené pred porušením ochrany údajov a inými bezpečnostnými hrozbami, <ph name="BEGIN_LINK" />prihláste sa do Chromu<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Chrome tento súbor archívu zablokoval, pretože môže skrývať malvér</translation>
 <translation id="1619887657840448962">Z dôvodu zvýšenia bezpečnosti prehliadača Chrome sme zakázali nasledujúce rozšírenie, ktoré nie je uvedené v službe <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> a mohlo byť pridané bez vášho vedomia.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Ako môžete spravovať svoje údaje:<ph name="END_BOLD" /> v rámci ochrany vášho súkromia automaticky odstraňujeme záujmy, ktoré sú staršie ako štyri týždne. Pri ďalšom prehliadaní sa v zozname môže znova zobraziť určitý záujem. Prípadne môžete odstrániť záujmy, ktoré nemá Chrome posudzovať.</translation>
 <translation id="1628000112320670027">Pomoc s Chromom</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sq.xtb b/chrome/app/resources/google_chrome_strings_sq.xtb
index 75110427..277cfaa0 100644
--- a/chrome/app/resources/google_chrome_strings_sq.xtb
+++ b/chrome/app/resources/google_chrome_strings_sq.xtb
@@ -60,6 +60,7 @@
 <translation id="2094648590148273905">Kushtet e Chrome OS Flex</translation>
 <translation id="2094919256425865063">Dëshiron ta mbyllësh Chrome gjithsesi?</translation>
 <translation id="2106831557840787829">ChromeOS Flex mundësohet nga <ph name="BEGIN_LINK_CROS_OSS" />softuerë shtesë me burim të hapur<ph name="END_LINK_CROS_OSS" />, si p.sh. <ph name="BEGIN_LINK_LINUX_OSS" />mjedisi i zhvillimit të Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Kur është aktiv, Chrome rikuperon memorien nga skedat që ti nuk po i përdor në mënyrë aktive. Kjo liron burimet e kompjuterit për detyra të tjera dhe bën që Chrome të jetë i shpejtë. Skedat joaktive shfaqen bosh dhe ringarkohen automatikisht kur klikon tek ato. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /> ose <ph name="BEGIN_LINK_2" />dërgo komente<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Kjo do të fshijë <ph name="ITEMS_COUNT" /> artikuj nga kjo pajisje. Për t'i marrë më vonë të dhënat, identifikohu te Chrome si <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Nise përsëri për të përditësuar &amp;Chrome</translation>
 <translation id="2123055963409958220">Ndihmo në përmirësimin e Chrome duke raportuar <ph name="BEGIN_LINK" />cilësimet aktuale<ph name="END_LINK" /></translation>
@@ -278,6 +279,7 @@
 <translation id="6735387454586646204">Sistemi Chrome OS Flex</translation>
 <translation id="6739177684496155661">Të vazhdohet te një profil i ri Chrome?</translation>
 <translation id="6750954913813541382">Për të rregulluar gabimet drejtshkrimore, Chrome e dërgon tekstin që shkruan në shfletues te Google</translation>
+<translation id="6756581345161130259">Sipas nevojës, Chrome rikuperon memorien nga skedat që ti nuk po i përdor në mënyrë aktive. Këtë mund ta ndryshosh në çdo kohë te cilësimet.</translation>
 <translation id="677276454032249905">Dëshiron të dalësh nga Chrome gjithsesi?</translation>
 <translation id="6785872064505734160">"Asistenti i Google" në Chrome mund të kryejë veprime nëpër faqe interneti për ty</translation>
 <translation id="683440813066116847">Rregulli hyrës për Google Chrome për të lejuar trafikun mDNS.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
index 013c517..ba50606 100644
--- a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
+++ b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
@@ -32,6 +32,7 @@
 <translation id="1587223624401073077">Google Chrome koristi kameru.</translation>
 <translation id="1587325591171447154">Datoteka <ph name="FILE_NAME" /> je opasna, pa ju je Chrome blokirao.</translation>
 <translation id="1597911401261118146">Da biste proverili da li su lozinke bezbedne od upada u podatke i drugih bezbednosnih problema, <ph name="BEGIN_LINK" />prijavite se u Chrome<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Chrome je blokirao ovaj fajl arhive jer možda krije malver</translation>
 <translation id="1619887657840448962">Da bismo učinili Chrome bezbednijim, onemogućili smo sledeći dodatak koji <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ne navodi i koji je možda dodat bez vašeg znanja.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Kako možete da upravljate podacima:<ph name="END_BOLD" /> Radi zaštite privatnosti automatski brišemo interesovanja starija od 4 nedelje. Kada nastavite da pregledate, interesovanje će se možda ponovo pojaviti na listi. Možete i da uklanjate interesovanja za koja ne želite da ih Chrome uzima u obzir.</translation>
 <translation id="1628000112320670027">Pronađite pomoć za Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb
index 28284c5..b98473b 100644
--- a/chrome/app/resources/google_chrome_strings_sr.xtb
+++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -32,6 +32,7 @@
 <translation id="1587223624401073077">Google Chrome користи камеру.</translation>
 <translation id="1587325591171447154">Датотека <ph name="FILE_NAME" /> је опасна, па ју је Chrome блокирао.</translation>
 <translation id="1597911401261118146">Да бисте проверили да ли су лозинке безбедне од упада у податке и других безбедносних проблема, <ph name="BEGIN_LINK" />пријавите се у Chrome<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Chrome је блокирао овај фајл архиве јер можда крије малвер</translation>
 <translation id="1619887657840448962">Да бисмо учинили Chrome безбеднијим, онемогућили смо следећи додатак који <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> не наводи и који је можда додат без вашег знања.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Како можете да управљате подацима:<ph name="END_BOLD" /> Ради заштите приватности аутоматски бришемо интересовања старија од 4 недеље. Када наставите да прегледате, интересовање ће се можда поново појавити на листи. Можете и да уклањате интересовања за која не желите да их Chrome узима у обзир.</translation>
 <translation id="1628000112320670027">Пронађите помоћ за Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb
index 2a915789..ea6feef 100644
--- a/chrome/app/resources/google_chrome_strings_sv.xtb
+++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -61,6 +61,7 @@
 <translation id="2094648590148273905">Villkor för ChromeOS Flex</translation>
 <translation id="2094919256425865063">Vill du avsluta Chrome ändå?</translation>
 <translation id="2106831557840787829">ChromeOS Flex fungerar tack vare ytterligare <ph name="BEGIN_LINK_CROS_OSS" />program med öppen källkod<ph name="END_LINK_CROS_OSS" />, liksom <ph name="BEGIN_LINK_LINUX_OSS" />utvecklingsmiljön för Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Om aktiverat återtar Chrome minne från flikar som du inte använder aktivt. Då frigörs datorns resurser för andra uppgifter så Chrome fungerar så snabbt som möjligt. Inaktiva flikar verkar tomma och läses in automatiskt när du klickar på 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="2120620239521071941"><ph name="ITEMS_COUNT" /> tas bort från enheten. Logga in i Chrome som <ph name="USER_EMAIL" /> om du vill kunna återställa datan senare.</translation>
 <translation id="2121284319307530122">Starta om för att uppdatera &amp;Chrome</translation>
 <translation id="2123055963409958220">Hjälp oss att förbättra Chrome genom att rapportera <ph name="BEGIN_LINK" />dina aktuella inställningar<ph name="END_LINK" /></translation>
@@ -279,6 +280,7 @@
 <translation id="6735387454586646204">ChromeOS Flex-system</translation>
 <translation id="6739177684496155661">Vill du fortsätta i en ny Chrome-profil?</translation>
 <translation id="6750954913813541382">Text som du skriver i webbläsaren Chrome skickas till Google för att kontrollera stavningen</translation>
+<translation id="6756581345161130259">Om det behövs återtar Chrome minne från flikar som du inte använder aktivt. Du kan när som helst ändra detta i inställningarna.</translation>
 <translation id="677276454032249905">Vill du avsluta Chrome ändå?</translation>
 <translation id="6785872064505734160">Google-assistenten i Chrome kan slutföra åtgärder åt dig på webbplatser</translation>
 <translation id="683440813066116847">Regel som tillåter inkommande mDNS-trafik för Google Chrome Canary.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb
index 36edb93..bb6c4d96 100644
--- a/chrome/app/resources/google_chrome_strings_sw.xtb
+++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -61,6 +61,7 @@
 <translation id="2094648590148273905">Sheria na masharti ya ChromeOS Flex</translation>
 <translation id="2094919256425865063">Ungependa kufunga Chrome?</translation>
 <translation id="2106831557840787829">ChromeOS Flex imewezeshwa na <ph name="BEGIN_LINK_CROS_OSS" />programu huria<ph name="END_LINK_CROS_OSS" /> za ziada kama vile, <ph name="BEGIN_LINK_LINUX_OSS" />mazingira ya wasanidi programu wa Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
+<translation id="2112742052114331084">Ukiwasha mipangilio hii, Chrome hurejesha hifadhi ya vichupo ambavyo huendelei kutumia. Hatua hii hufuta nyenzo katika kompyuta yako na kuongeza nafasi kwa ajili ya shughuli zingine na kuifanya Chrome kufanya kazi kwa kasi. Vichupo visivyotumika huonekana vitupu na hupakia kiotomatiki unapovibofya. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /> au <ph name="BEGIN_LINK_2" />tuma maoni<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">Hatua hii itafuta vipengee <ph name="ITEMS_COUNT" /> kwenye kifaa hiki. Ili urejeshe data yako baadaye, ingia katika Chrome ukitumia <ph name="USER_EMAIL" />.</translation>
 <translation id="2121284319307530122">Fungua tena ili Usasishe &amp;Chrome</translation>
 <translation id="2123055963409958220">Saidia kuboresha Chrome kwa kuripoti kuhusu <ph name="BEGIN_LINK" />mipangilio ya sasa<ph name="END_LINK" /></translation>
@@ -279,6 +280,7 @@
 <translation id="6735387454586646204">Mfumo wa ChromeOS Flex</translation>
 <translation id="6739177684496155661">Ungependa kutumia wasifu mpya kwenye Chrome?</translation>
 <translation id="6750954913813541382">Ili kurekebisha makosa ya tahajia, Chrome hutuma kwa Google maandishi unayoandika kwenye kivinjari</translation>
+<translation id="6756581345161130259">Kulingana na mahitaji, Chrome hurejesha hifadhi ya vichupo ambavyo huendelei kutumia. Unaweza kubadilisha hali hii wakati wowote katika mipangilio.</translation>
 <translation id="677276454032249905">Ungependa kufunga Chrome?</translation>
 <translation id="6785872064505734160">Programu ya Mratibu wa Google katika Chrome inaweza kukukamilishia vitendo kwenye tovuti</translation>
 <translation id="683440813066116847">Sheria ya ndani ya Google Chrome Canary ili kuruhusu trafiki ya mDNS.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ta.xtb b/chrome/app/resources/google_chrome_strings_ta.xtb
index fffd0aeb..19d7667 100644
--- a/chrome/app/resources/google_chrome_strings_ta.xtb
+++ b/chrome/app/resources/google_chrome_strings_ta.xtb
@@ -57,6 +57,7 @@
 <translation id="2094648590148273905">ChromeOS Flex விதிமுறைகள்</translation>
 <translation id="2094919256425865063">Chrome இலிருந்து வெளியேறவா?</translation>
 <translation id="2106831557840787829"><ph name="BEGIN_LINK_LINUX_OSS" />Linux டெவெலப்மெண்ட் சூழல்<ph name="END_LINK_LINUX_OSS" /> போலவே, கூடுதல் <ph name="BEGIN_LINK_CROS_OSS" />ஓப்பன் சோர்ஸ் மென்பொருள்<ph name="END_LINK_CROS_OSS" /> மூலம் ChromeOS Flex உருவாக்கப்பட்டுள்ளது.</translation>
+<translation id="2112742052114331084">இயக்கப்பட்டிருக்கும்போது, நீங்கள் தற்போது பயன்படுத்தாத பக்கங்களில் இருந்து நினைவகத்தை Chrome பயன்படுத்துகிறது. இது கம்ப்யூட்டரின் மற்ற பணிகளுக்கான ரிசோர்ஸ்களை விடுவித்து Chromeமை வேகமாக இயங்கச் செய்கிறது. செயல்பாட்டில் இல்லாத பக்கங்கள் காலியாகத் தோன்றும். நீங்கள் கிளிக் செய்யும்போது அவை தானாகவே ரெஃப்ரெஷ் செய்யப்படும். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /> அல்லது <ph name="BEGIN_LINK_2" />கருத்து வழங்குக<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">வெளியேறினால், இந்தச் சாதனத்திலிருந்து <ph name="ITEMS_COUNT" /> உருப்படிகள் நீக்கப்படும். பின்னர் தரவை மீட்டமைக்க, Chrome இல் <ph name="USER_EMAIL" /> எனும் முகவரியின் மூலம் உள்நுழையவும்.</translation>
 <translation id="2121284319307530122">&amp;Chromeமைப் புதுப்பிக்க மீண்டும் தொடங்கு</translation>
 <translation id="2123055963409958220"><ph name="BEGIN_LINK" />தற்போதைய அமைப்புகளைப்<ph name="END_LINK" />பற்றிய அறிக்கையை அனுப்பி, Chromeஐ இன்னும் சிறந்ததாக்க உதவவும்</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb
index 90f778c..ced9ece7 100644
--- a/chrome/app/resources/google_chrome_strings_te.xtb
+++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -30,6 +30,7 @@
 <translation id="1587223624401073077">Google Chrome మీ కెమెరాను ఉపయోగిస్తోంది.</translation>
 <translation id="1587325591171447154"><ph name="FILE_NAME" /> హానికరం, కావున Chrome దాన్ని బ్లాక్ చేసింది.</translation>
 <translation id="1597911401261118146">డేటా ఉల్లంఘనల నుండి, ఇతర భద్రతా సమస్యల నుండి మీ పాస్‌వర్డ్‌లు సురక్షితంగా ఉన్నాయో లేదో చెక్ చేయడానికి, <ph name="BEGIN_LINK" />Chromeకు సైన్ ఇన్ చేయండి<ph name="END_LINK" />.</translation>
+<translation id="1599904803480101533">Chrome ఈ ఆర్కైవ్ ఫైల్‌ను బ్లాక్ చేసింది ఎందుకంటే ఇందులో మాల్‌వేర్ దాచబడి ఉండవచ్చు</translation>
 <translation id="1619887657840448962">Chromeని సురక్షితం చేయడానికి, మేము కింది ఎక్స్‌టెన్షన్‌ను నిలిపివేసాము, ఇది <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />లో లిస్ట్‌ చేయబడలేదు మరియు మీకు తెలియకుండా జోడించబడి ఉండవచ్చు.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />మీరు మీ డేటాను ఎలా మేనేజ్ చేసుకోగలరు:<ph name="END_BOLD" /> మీ గోప్యతను రక్షించడానికి, 4 వారాల కంటే పాతవైన మీ ఆసక్తులను మేము ఆటోమేటిక్‌గా తొలగిస్తాము. మీరు బ్రౌజ్ చేస్తూ ఉంటే, ఆసక్తి ఉన్న ఆ టాపిక్ మళ్లీ లిస్ట్‌లో కనిపించవచ్చు. లేదా Chrome పరిగణనలోకి తీసుకోకూడదు అని మీరు భావించే ఆసక్తులను తీసివేయవచ్చు.</translation>
 <translation id="1628000112320670027">Chrome గురించి సహాయం పొందండి</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb
index edb450e..1c5fe464 100644
--- a/chrome/app/resources/google_chrome_strings_th.xtb
+++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -57,6 +57,7 @@
 <translation id="2094648590148273905">ข้อกำหนดของ Chrome OS Flex</translation>
 <translation id="2094919256425865063">ปิด Chrome ใช่ไหม</translation>
 <translation id="2106831557840787829">Chrome OS Flex เกิดขึ้นได้ด้วยการสนับสนุนจาก<ph name="BEGIN_LINK_CROS_OSS" />ซอฟต์แวร์โอเพนซอร์ส<ph name="END_LINK_CROS_OSS" />เพิ่มเติม เช่นเดียวกับ<ph name="BEGIN_LINK_LINUX_OSS" />สภาพแวดล้อมในการพัฒนาซอฟต์แวร์ Linux<ph name="END_LINK_LINUX_OSS" /></translation>
+<translation id="2112742052114331084">เมื่อเปิดไว้ Chrome จะเรียกคืนหน่วยความจำจากแท็บที่คุณไม่ได้ใช้งานอยู่ ซึ่งช่วยให้คอมพิวเตอร์มีทรัพยากรสำหรับงานอื่นๆ มากขึ้นและ คงความเร็วของ Chrome ไว้ได้ แท็บที่ไม่ได้ใช้งานจะปรากฏเป็นแท็บว่างและโหลดซ้ำโดยอัตโนมัติเมื่อคุณคลิก <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" />หรือ<ph name="BEGIN_LINK_2" />ส่งความคิดเห็น<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">การดำเนินการนี้จะลบ <ph name="ITEMS_COUNT" /> รายการออกจากอุปกรณ์นี้ หากต้องการดึงข้อมูลภายหลัง ให้ลงชื่อเข้าใช้ Chrome ด้วย <ph name="USER_EMAIL" /></translation>
 <translation id="2121284319307530122">เปิดอีกครั้งเพื่ออัปเดต Chrome</translation>
 <translation id="2123055963409958220">ช่วยให้ Chrome ดียิ่งขึ้นด้วยการรายงาน<ph name="BEGIN_LINK" />การตั้งค่าปัจจุบัน<ph name="END_LINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
index febe9240..b1ab0c3 100644
--- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -56,6 +56,7 @@
 <translation id="2094648590148273905">ChromeOS Flex 条款</translation>
 <translation id="2094919256425865063">仍要退出 Chrome?</translation>
 <translation id="2106831557840787829">ChromeOS Flex 是借助了其他<ph name="BEGIN_LINK_CROS_OSS" />开放源代码软件<ph name="END_LINK_CROS_OSS" />才得以问世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 开发环境<ph name="END_LINK_LINUX_OSS" />也是如此。</translation>
+<translation id="2112742052114331084">开启此设置后,Chrome 会从您目前未主动使用的标签页回收内存。这样可释放计算机的资源以用于执行其他任务,并使 Chrome 保持快速运行。闲置的标签页会显示为空白,在您点击后才会自动重新加载。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" />或<ph name="BEGIN_LINK_2" />发送反馈<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">这会从这台设备上删除 <ph name="ITEMS_COUNT" /> 项内容。如果日后想要检索您的数据,届时请以 <ph name="USER_EMAIL" /> 的身份登录 Chrome。</translation>
 <translation id="2121284319307530122">重新启动以更新 Chrome(&amp;C)</translation>
 <translation id="2123055963409958220">报告<ph name="BEGIN_LINK" />当前设置<ph name="END_LINK" />,协助我们改进 Chrome</translation>
@@ -270,6 +271,7 @@
 <translation id="6735387454586646204">ChromeOS Flex 系统</translation>
 <translation id="6739177684496155661">使用一份新的 Chrome 个人资料继续浏览?</translation>
 <translation id="6750954913813541382">为了修正拼写错误,Chrome 会将您在浏览器中输入的文字发送给 Google</translation>
+<translation id="6756581345161130259">Chrome 会酌情从您目前未主动使用的标签页回收内存。您随时可在“设置”中更改此设置。</translation>
 <translation id="677276454032249905">仍要退出 Chrome?</translation>
 <translation id="6785872064505734160">Chrome 中的 Google 助理可帮您在各网站上完成所需操作</translation>
 <translation id="683440813066116847">Google Chrome Canary版的入站规则,允许mDNS流量。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
index e480677..bcc0a39 100644
--- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -57,6 +57,7 @@
 <translation id="2094648590148273905">ChromeOS Flex 條款</translation>
 <translation id="2094919256425865063">確定要關閉 Chrome 嗎?</translation>
 <translation id="2106831557840787829">ChromeOS Flex 藉助了其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟體<ph name="END_LINK_CROS_OSS" />的相關技術才得以問世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 開發環境<ph name="END_LINK_LINUX_OSS" />也是如此。</translation>
+<translation id="2112742052114331084">啟用這項設定後,Chrome 會針對目前未使用的分頁回收記憶體。這樣做可以釋出電腦的資源來處理其他工作,並維持 Chrome 的運作速度。已停用的分頁標籤會顯示空白,並會在你點選分頁標籤後自動重新載入內容。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" />或<ph name="BEGIN_LINK_2" />提供意見<ph name="END_LINK_2" /></translation>
 <translation id="2120620239521071941">登出後,系統會將 <ph name="ITEMS_COUNT" /> 個項目從這個裝置上刪除。日後如要重新取得你的資料,請以 <ph name="USER_EMAIL" /> 身分登入 Chrome。</translation>
 <translation id="2121284319307530122">重新啟動以更新 &amp;Chrome</translation>
 <translation id="2123055963409958220">只要回報<ph name="BEGIN_LINK" />目前的設定<ph name="END_LINK" />,就能助我們一臂之力,讓 Chrome 更臻完美</translation>
@@ -273,6 +274,7 @@
 <translation id="6735387454586646204">ChromeOS Flex 系統</translation>
 <translation id="6739177684496155661">要繼續使用新的 Chrome 設定檔嗎?</translation>
 <translation id="6750954913813541382">Chrome 會將你在瀏覽器中輸入的文字傳送至 Google,以修正拼字錯誤</translation>
+<translation id="6756581345161130259">如有需要,Chrome 會針對目前未使用的分頁回收記憶體。你隨時可以在「設定」中進行變更。</translation>
 <translation id="677276454032249905">確定要結束 Chrome 嗎?</translation>
 <translation id="6785872064505734160">Chrome 版 Google 助理可協助你在不同的網站上完成動作</translation>
 <translation id="683440813066116847">允許 mDNS 流量的 Google Chrome Canary 輸入規則。</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 5062fb2..0fafe91 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2083,6 +2083,7 @@
     "//components/commerce/core:commerce_subscription_db_content_proto",
     "//components/commerce/core:feature_list",
     "//components/commerce/core:persisted_state_db_content_proto",
+    "//components/commerce/core:pref_names",
     "//components/commerce/core:shopping_service",
     "//components/component_updater",
     "//components/component_updater:crl_set_remover",
@@ -3173,13 +3174,13 @@
       "password_manager/android/password_infobar_utils.h",
       "password_manager/android/password_manager_error_message_delegate.cc",
       "password_manager/android/password_manager_error_message_delegate.h",
+      "password_manager/android/password_manager_error_message_helper_bridge.h",
+      "password_manager/android/password_manager_error_message_helper_bridge_impl.cc",
+      "password_manager/android/password_manager_error_message_helper_bridge_impl.h",
       "password_manager/android/password_manager_infobar_delegate_android.cc",
       "password_manager/android/password_manager_infobar_delegate_android.h",
       "password_manager/android/password_manager_launcher_android.cc",
       "password_manager/android/password_manager_launcher_android.h",
-      "password_manager/android/password_manager_sign_in_helper_bridge.h",
-      "password_manager/android/password_manager_sign_in_helper_bridge_impl.cc",
-      "password_manager/android/password_manager_sign_in_helper_bridge_impl.h",
       "password_manager/android/password_scripts_fetcher_android.cc",
       "password_manager/android/password_store_bridge.cc",
       "password_manager/android/password_store_bridge.h",
diff --git a/chrome/browser/android/examples/custom_tabs_client/BUILD.gn b/chrome/browser/android/examples/custom_tabs_client/BUILD.gn
index efa4999b..50aa84c63 100644
--- a/chrome/browser/android/examples/custom_tabs_client/BUILD.gn
+++ b/chrome/browser/android/examples/custom_tabs_client/BUILD.gn
@@ -82,7 +82,7 @@
   ]
 
   android_manifest = "src/AndroidManifest.xml"
-  target_sdk_version = 21
+  target_sdk_version = 24
   apk_name = "CustomTabsClientExample"
 
   deps = [
diff --git a/chrome/browser/android/foreign_session_helper.cc b/chrome/browser/android/foreign_session_helper.cc
index fc8a532..bec11fb 100644
--- a/chrome/browser/android/foreign_session_helper.cc
+++ b/chrome/browser/android/foreign_session_helper.cc
@@ -212,11 +212,11 @@
   // Use a pref to keep track of sessions that were collapsed by the user.
   // To prevent the pref from accumulating stale sessions, clear it each time
   // and only add back sessions that are still current.
-  DictionaryPrefUpdate pref_update(profile_->GetPrefs(),
+  ScopedDictPrefUpdate pref_update(profile_->GetPrefs(),
                                    prefs::kNtpCollapsedForeignSessions);
-  base::Value* pref_collapsed_sessions = pref_update.Get();
-  base::Value collapsed_sessions(pref_collapsed_sessions->Clone());
-  pref_collapsed_sessions->DictClear();
+  base::Value::Dict& pref_collapsed_sessions = pref_update.Get();
+  base::Value::Dict collapsed_sessions = pref_collapsed_sessions.Clone();
+  pref_collapsed_sessions.clear();
 
   ScopedJavaLocalRef<jobject> last_pushed_session;
 
@@ -227,10 +227,10 @@
       continue;
 
     const bool is_collapsed =
-        (collapsed_sessions.FindKey(session.session_tag) != nullptr);
+        (collapsed_sessions.Find(session.session_tag) != nullptr);
 
     if (is_collapsed)
-      pref_collapsed_sessions->SetBoolKey(session.session_tag, true);
+      pref_collapsed_sessions.Set(session.session_tag, true);
 
     last_pushed_session.Reset(Java_ForeignSessionHelper_pushSession(
         env, result, ConvertUTF8ToJavaString(env, session.session_tag),
diff --git a/chrome/browser/android/ntp/recent_tabs_page_prefs.cc b/chrome/browser/android/ntp/recent_tabs_page_prefs.cc
index 53af13a..1d61edd9 100644
--- a/chrome/browser/android/ntp/recent_tabs_page_prefs.cc
+++ b/chrome/browser/android/ntp/recent_tabs_page_prefs.cc
@@ -83,11 +83,11 @@
   // Store session tags for collapsed sessions in a preference so that the
   // collapsed state persists.
   PrefService* prefs = profile_->GetPrefs();
-  DictionaryPrefUpdate update(prefs, prefs::kNtpCollapsedForeignSessions);
+  ScopedDictPrefUpdate update(prefs, prefs::kNtpCollapsedForeignSessions);
   if (is_collapsed)
-    update.Get()->SetBoolKey(ConvertJavaStringToUTF8(env, session_tag), true);
+    update->Set(ConvertJavaStringToUTF8(env, session_tag), true);
   else
-    update.Get()->RemoveKey(ConvertJavaStringToUTF8(env, session_tag));
+    update->Remove(ConvertJavaStringToUTF8(env, session_tag));
 }
 
 // static
diff --git a/chrome/browser/android/oom_intervention/oom_intervention_decider.cc b/chrome/browser/android/oom_intervention/oom_intervention_decider.cc
index 6b333b9f..9965ec9 100644
--- a/chrome/browser/android/oom_intervention/oom_intervention_decider.cc
+++ b/chrome/browser/android/oom_intervention/oom_intervention_decider.cc
@@ -140,8 +140,7 @@
   const base::Value::List& old_pref_value = prefs_->GetList(kBlacklist);
   if (!old_pref_value.empty()) {
     prefs_->SetList(kBlocklist, old_pref_value.Clone());
-    ListPrefUpdate update(prefs_, kBlacklist);
-    update->GetList().clear();
+    prefs_->SetList(kBlacklist, base::Value::List());
   }
 
   if (delegate_->WasLastShutdownClean())
@@ -175,8 +174,8 @@
                                        const std::string& host) {
   if (IsInList(list_name, host))
     return;
-  ListPrefUpdate update(prefs_, list_name);
-  base::Value::List& update_list = update->GetList();
+  ScopedListPrefUpdate update(prefs_, list_name);
+  base::Value::List& update_list = update.Get();
   update_list.Append(host);
   if (update_list.size() > kMaxListSize)
     update_list.erase(update_list.begin());
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn
index a40000b..5d3cb59 100644
--- a/chrome/browser/ash/BUILD.gn
+++ b/chrome/browser/ash/BUILD.gn
@@ -5,10 +5,13 @@
 import("//build/config/chromebox_for_meetings/buildflags.gni")
 import("//build/config/chromeos/ui_mode.gni")
 import("//build/config/ozone.gni")
+import("//build/config/sanitizers/sanitizers.gni")
 import("//chromeos/ash/components/hibernate/buildflags.gni")
 import("//extensions/buildflags/buildflags.gni")
 import("//media/media_options.gni")
 import("//printing/buildflags/buildflags.gni")
+import("//testing/libfuzzer/fuzzer_test.gni")
+import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni")
 import("//third_party/protobuf/proto_library.gni")
 
 assert(enable_extensions, "Ash Chrome has to be built with extensions")
@@ -2690,6 +2693,7 @@
     "//chromeos/ash/components/trash_service/public/cpp",
     "//chromeos/ash/services/cros_healthd/public/cpp",
     "//chromeos/ash/services/cros_healthd/public/mojom",
+    "//chromeos/ash/services/rollback_network_config/public/mojom",
     "//chromeos/components/mojo_service_manager/mojom",
     "//chromeos/components/onc",
     "//chromeos/components/remote_apps/mojom",
@@ -2711,7 +2715,6 @@
     "//chromeos/services/network_config/public/cpp",
     "//chromeos/services/network_config/public/mojom",
     "//chromeos/services/network_health/public/mojom",
-    "//chromeos/services/rollback_network_config/public/mojom",
     "//chromeos/system",
     "//chromeos/ui/base",
     "//components/account_id",
@@ -3353,3 +3356,104 @@
 
   public_deps = [ ":device_policy_remover_generate" ]
 }
+
+fuzzer_test("smb_url_fuzzer") {
+  sources = [
+    "smb_client/smb_constants.cc",
+    "smb_client/smb_constants.h",
+    "smb_client/smb_url.cc",
+    "smb_client/smb_url.h",
+    "smb_client/smb_url_fuzzer.cc",
+  ]
+
+  deps = [
+    "//base",
+    "//base:i18n",
+    "//url",
+  ]
+
+  dict = "smb_client/fuzzer_data/smb_url_fuzzer.dict"
+
+  seed_corpus = "smb_client/fuzzer_data/smb_url_corpus"
+}
+
+fuzzer_test("zeroconf_printer_detector_fuzzer") {
+  sources = [ "printing/zeroconf_printer_detector_fuzzer.cc" ]
+  deps = [
+    ":ash",
+    "//base",
+    "//base/test:test_support",
+    "//chrome/browser",
+  ]
+}
+
+if (use_libfuzzer) {
+  fuzzer_test("policy_fuzzer") {
+    sources = [ "policy/fuzzer/policy_fuzzer.cc" ]
+
+    deps = [
+      ":policy_fuzzer_proto",
+
+      # :policy_fuzzer_proto should be the first dependency to avoid duplicate
+      # symbols when linking.
+      ":ash",
+      "//base",
+      "//base:i18n",
+      "//base/test:test_support",
+      "//chrome/browser",
+      "//chrome/common:constants",
+      "//chromeos/ash/components/install_attributes",
+      "//components/policy:generated",
+      "//components/policy/core/browser",
+      "//components/policy/core/common",
+      "//components/policy/core/common:common_constants",
+      "//components/prefs",
+      "//third_party/libprotobuf-mutator",
+      "//ui/base",
+    ]
+  }
+
+  fuzzable_proto_library("policy_fuzzer_proto") {
+    sources = [ "policy/fuzzer/policy_fuzzer.proto" ]
+
+    import_dirs = [
+      # Add the fuzzable (full-protobuf) .pb.h files into include directories.
+      # This item should come first, so that regular (lite-protobuf) .pb.h
+      # analogs don't get included, as this would cause compilation issues due
+      # to missing symbols.
+      "//components/policy/proto/fuzzer",
+
+      # For imports of proto files from the source tree.
+      "//components/policy/proto",
+
+      # For imports of autogenerated proto files.
+      "$root_gen_dir/components/policy/proto",
+    ]
+
+    proto_deps = [ "//components/policy/proto/fuzzer" ]
+
+    link_deps = [ "//components/policy/proto/fuzzer" ]
+  }
+
+  fuzzer_test("policy_single_install_event_log_fuzzer") {
+    sources = [ "policy/reporting/single_install_event_log_fuzzer.cc" ]
+
+    deps = [
+      ":ash",
+      "//base",
+      "//chrome/browser",
+    ]
+  }
+
+  fuzzer_test("policy_remote_commands_fuzzer") {
+    sources = [ "policy/remote_commands/remote_commands_fuzzer.cc" ]
+
+    deps = [
+      ":ash",
+      "//base",
+      "//base:i18n",
+      "//chrome/browser",
+      "//components/policy/proto",
+    ]
+  }
+}
diff --git a/chrome/browser/ash/arc/bluetooth/arc_bluetooth_bridge.cc b/chrome/browser/ash/arc/bluetooth/arc_bluetooth_bridge.cc
index be5dfbee..4bd868c5 100644
--- a/chrome/browser/ash/arc/bluetooth/arc_bluetooth_bridge.cc
+++ b/chrome/browser/ash/arc/bluetooth/arc_bluetooth_bridge.cc
@@ -224,20 +224,20 @@
     const device::BluetoothGattService::GattErrorCode& error_code,
     bool is_read_operation) {
   switch (error_code) {
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_INVALID_LENGTH:
+    case device::BluetoothGattService::GattErrorCode::kInvalidLength:
       return arc::mojom::BluetoothGattStatus::GATT_INVALID_ATTRIBUTE_LENGTH;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_PERMITTED:
+    case device::BluetoothGattService::GattErrorCode::kNotPermitted:
       return is_read_operation
                  ? arc::mojom::BluetoothGattStatus::GATT_READ_NOT_PERMITTED
                  : arc::mojom::BluetoothGattStatus::GATT_WRITE_NOT_PERMITTED;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_AUTHORIZED:
+    case device::BluetoothGattService::GattErrorCode::kNotAuthorized:
       return arc::mojom::BluetoothGattStatus::GATT_INSUFFICIENT_AUTHENTICATION;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_SUPPORTED:
+    case device::BluetoothGattService::GattErrorCode::kNotSupported:
       return arc::mojom::BluetoothGattStatus::GATT_REQUEST_NOT_SUPPORTED;
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_UNKNOWN:
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_FAILED:
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_IN_PROGRESS:
-    case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_PAIRED:
+    case device::BluetoothGattService::GattErrorCode::kUnknown:
+    case device::BluetoothGattService::GattErrorCode::kFailed:
+    case device::BluetoothGattService::GattErrorCode::kInProgress:
+    case device::BluetoothGattService::GattErrorCode::kNotPaired:
     default:
       return arc::mojom::BluetoothGattStatus::GATT_FAILURE;
   }
@@ -327,7 +327,7 @@
   if (status == arc::mojom::BluetoothGattStatus::GATT_SUCCESS) {
     std::move(callback).Run(/*error_code=*/absl::nullopt, value);
   } else {
-    std::move(callback).Run(BluetoothGattService::GATT_ERROR_FAILED,
+    std::move(callback).Run(BluetoothGattService::GattErrorCode::kFailed,
                             /*value=*/std::vector<uint8_t>());
   }
 }
@@ -885,7 +885,7 @@
   auto* bluetooth_instance = ARC_GET_INSTANCE_FOR_METHOD(
       arc_bridge_service_->bluetooth(), RequestGattRead);
   if (!bluetooth_instance || !IsGattOffsetValid(offset)) {
-    std::move(callback).Run(BluetoothGattService::GATT_ERROR_FAILED,
+    std::move(callback).Run(BluetoothGattService::GattErrorCode::kFailed,
                             /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -1728,7 +1728,8 @@
     // TODO(b/201737474): Investigate in what case this could happen.
     LOG(ERROR) << "Requested GATT characteristic does not exist";
     OnGattRead(std::move(callback),
-               device::BluetoothGattService::GATT_ERROR_FAILED, /*result=*/{});
+               device::BluetoothGattService::GattErrorCode::kFailed,
+               /*result=*/{});
     return;
   }
 
diff --git a/chrome/browser/ash/arc/policy/arc_policy_bridge.cc b/chrome/browser/ash/arc/policy/arc_policy_bridge.cc
index b470f6f1..9944a15 100644
--- a/chrome/browser/ash/arc/policy/arc_policy_bridge.cc
+++ b/chrome/browser/ash/arc/policy/arc_policy_bridge.cc
@@ -683,10 +683,9 @@
   Profile::FromBrowserContext(context_)->GetPrefs()->SetBoolean(
       prefs::kArcPolicyComplianceReported, true);
 
-  const base::DictionaryValue* dict = nullptr;
-  if (result->GetAsDictionary(&dict)) {
+  if (result->is_dict()) {
     JSONStringValueSerializer serializer(&arc_policy_compliance_report_);
-    serializer.Serialize(*dict);
+    serializer.Serialize(*result);
     for (Observer& observer : observers_) {
       observer.OnComplianceReportReceived(&*result);
     }
diff --git a/chrome/browser/ash/child_accounts/time_limits/app_activity_registry.cc b/chrome/browser/ash/child_accounts/time_limits/app_activity_registry.cc
index 4545a3d..9244ab17 100644
--- a/chrome/browser/ash/child_accounts/time_limits/app_activity_registry.cc
+++ b/chrome/browser/ash/child_accounts/time_limits/app_activity_registry.cc
@@ -626,13 +626,13 @@
 
 void AppActivityRegistry::SaveAppActivity() {
   {
-    ListPrefUpdate update(pref_service_, prefs::kPerAppTimeLimitsAppActivities);
-    base::Value* list_value = update.Get();
+    ScopedListPrefUpdate update(pref_service_,
+                                prefs::kPerAppTimeLimitsAppActivities);
+    base::Value::List& list = update.Get();
 
     const base::Time now = base::Time::Now();
 
-    base::Value::ListView list_view = list_value->GetListDeprecated();
-    for (base::Value& entry : list_view) {
+    for (base::Value& entry : list) {
       absl::optional<AppId> app_id = policy::AppIdFromAppInfoDict(entry);
       DCHECK(app_id.has_value());
 
@@ -652,7 +652,7 @@
       const PersistedAppInfo info = GetPersistedAppInfoForApp(app_id, now);
       base::Value value(base::Value::Type::DICTIONARY);
       info.UpdateAppActivityPreference(&value, /* replace */ false);
-      list_value->Append(std::move(value));
+      list.Append(std::move(value));
     }
     newly_installed_apps_.clear();
   }
@@ -697,11 +697,10 @@
 }
 
 void AppActivityRegistry::CleanRegistry(base::Time timestamp) {
-  ListPrefUpdate update(pref_service_, prefs::kPerAppTimeLimitsAppActivities);
+  ScopedListPrefUpdate update(pref_service_,
+                              prefs::kPerAppTimeLimitsAppActivities);
 
-  base::Value* list_value = update.Get();
-
-  base::Value::List& list = list_value->GetList();
+  base::Value::List& list = update.Get();
 
   for (size_t index = 0; index < list.size();) {
     base::Value& entry = list[index];
diff --git a/chrome/browser/ash/crosapi/BUILD.gn b/chrome/browser/ash/crosapi/BUILD.gn
index dee8b3a..1990806 100644
--- a/chrome/browser/ash/crosapi/BUILD.gn
+++ b/chrome/browser/ash/crosapi/BUILD.gn
@@ -172,6 +172,8 @@
     "networking_attributes_ash.h",
     "networking_private_ash.cc",
     "networking_private_ash.h",
+    "parent_access_ash.cc",
+    "parent_access_ash.h",
     "policy_service_ash.cc",
     "policy_service_ash.h",
     "prefs_ash.cc",
diff --git a/chrome/browser/ash/crosapi/browser_util.cc b/chrome/browser/ash/crosapi/browser_util.cc
index 6300251c..b9929e5 100644
--- a/chrome/browser/ash/crosapi/browser_util.cc
+++ b/chrome/browser/ash/crosapi/browser_util.cc
@@ -1048,18 +1048,17 @@
 
 void SetGotoFilesClicked(PrefService* local_state,
                          const std::string& user_id_hash) {
-  ListPrefUpdate update(local_state, kGotoFilesPref);
-  base::Value* list = update.Get();
+  ScopedListPrefUpdate update(local_state, kGotoFilesPref);
+  base::Value::List& list = update.Get();
   base::Value user_id_hash_value(user_id_hash);
-  if (!base::Contains(list->GetList(), user_id_hash_value))
-    list->GetList().Append(std::move(user_id_hash_value));
+  if (!base::Contains(list, user_id_hash_value))
+    list.Append(std::move(user_id_hash_value));
 }
 
 void ClearGotoFilesClicked(PrefService* local_state,
                            const std::string& user_id_hash) {
-  ListPrefUpdate update(local_state, kGotoFilesPref);
-  base::Value* list = update.Get();
-  list->GetList().EraseValue(base::Value(user_id_hash));
+  ScopedListPrefUpdate update(local_state, kGotoFilesPref);
+  update->EraseValue(base::Value(user_id_hash));
 }
 
 bool WasGotoFilesClicked(PrefService* local_state,
diff --git a/chrome/browser/ash/crosapi/parent_access_ash.cc b/chrome/browser/ash/crosapi/parent_access_ash.cc
new file mode 100644
index 0000000..fd3e5a2c
--- /dev/null
+++ b/chrome/browser/ash/crosapi/parent_access_ash.cc
@@ -0,0 +1,72 @@
+// 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 <vector>
+
+#include "chrome/browser/ash/crosapi/parent_access_ash.h"
+#include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h"
+#include "ui/gfx/codec/png_codec.h"
+#include "ui/gfx/image/image.h"
+#include "ui/gfx/image/image_skia.h"
+
+namespace crosapi {
+
+ParentAccessAsh::ParentAccessAsh() = default;
+
+ParentAccessAsh::~ParentAccessAsh() = default;
+
+void ParentAccessAsh::BindReceiver(
+    mojo::PendingReceiver<mojom::ParentAccess> receiver) {
+  receivers_.Add(this, std::move(receiver));
+}
+
+// crosapi::mojom::ParentAccess:
+void ParentAccessAsh::GetWebsiteParentApproval(
+    const GURL& url,
+    const std::u16string& child_display_name,
+    const gfx::ImageSkia& favicon,
+    GetWebsiteParentApprovalCallback callback) {
+  std::vector<uint8_t> favicon_bitmap;
+  gfx::PNGCodec::FastEncodeBGRASkBitmap(*favicon.bitmap(), false,
+                                        &favicon_bitmap);
+
+  parent_access_ui::mojom::ParentAccessParamsPtr params =
+      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(
+                  url, child_display_name, favicon_bitmap)));
+
+  // TODO(b/200587178): pass ParentAccessDialogCallback when it has been
+  // defined.
+  chromeos::ParentAccessDialog::ShowError show_dialog_result =
+      chromeos::ParentAccessDialog::Show(std::move(params));
+
+  crosapi::mojom::ParentAccessResultPtr result =
+      crosapi::mojom::ParentAccessResult::New();
+
+  // This result indicates basic errors that can occur synchronously.
+  // TODO(b/246671931) Other async results will be dealt with in the
+  // ParentAccessDialogCallback when it is ready.
+  switch (show_dialog_result) {
+    case chromeos::ParentAccessDialog::kDialogAlreadyVisible:
+      result->status = crosapi::mojom::ParentAccessResult::Status::kError;
+      result->error_type =
+          crosapi::mojom::ParentAccessResult::ErrorType::kAlreadyVisible;
+      break;
+    case chromeos::ParentAccessDialog::kNotAChildUser:
+      result->status = crosapi::mojom::ParentAccessResult::Status::kError;
+      result->error_type =
+          crosapi::mojom::ParentAccessResult::ErrorType::kNotAChildUser;
+      break;
+    case chromeos::ParentAccessDialog::kNone:
+      result->status = crosapi::mojom::ParentAccessResult::Status::kUnknown;
+      break;
+  }
+  // TODO(b/246671931): Wait until we get the result form the dialog before
+  // running the crosapi callback.
+  std::move(callback).Run(std::move(result));
+}
+
+}  // namespace crosapi
diff --git a/chrome/browser/ash/crosapi/parent_access_ash.h b/chrome/browser/ash/crosapi/parent_access_ash.h
new file mode 100644
index 0000000..ed58150
--- /dev/null
+++ b/chrome/browser/ash/crosapi/parent_access_ash.h
@@ -0,0 +1,47 @@
+// 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_CROSAPI_PARENT_ACCESS_ASH_H_
+#define CHROME_BROWSER_ASH_CROSAPI_PARENT_ACCESS_ASH_H_
+
+#include <string>
+
+#include "chromeos/crosapi/mojom/parent_access.mojom.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver_set.h"
+
+class GURL;
+
+namespace gfx {
+class ImageSkia;
+}
+
+namespace crosapi {
+
+// Implements the crosapi ParentAccess interface. Lives in ash-chrome on
+// the UI thread. Launches the ParentAccessDialog to get parent approval
+// for an action by a child.
+class ParentAccessAsh : public mojom::ParentAccess {
+ public:
+  ParentAccessAsh();
+  ParentAccessAsh(const ParentAccessAsh&) = delete;
+  ParentAccessAsh& operator=(const ParentAccessAsh&) = delete;
+  ~ParentAccessAsh() override;
+
+  void BindReceiver(mojo::PendingReceiver<mojom::ParentAccess> receiver);
+
+  // crosapi::mojom::ParentAccess:
+  void GetWebsiteParentApproval(
+      const GURL& url,
+      const std::u16string& child_display_name,
+      const gfx::ImageSkia& favicon,
+      GetWebsiteParentApprovalCallback callback) override;
+
+ private:
+  mojo::ReceiverSet<mojom::ParentAccess> receivers_;
+};
+
+}  // namespace crosapi
+
+#endif  // CHROME_BROWSER_ASH_CROSAPI_PARENT_ACCESS_ASH_H_
diff --git a/chrome/browser/ash/crostini/crostini_port_forwarder.cc b/chrome/browser/ash/crostini/crostini_port_forwarder.cc
index c6a075f..e498aec4b 100644
--- a/chrome/browser/ash/crostini/crostini_port_forwarder.cc
+++ b/chrome/browser/ash/crostini/crostini_port_forwarder.cc
@@ -93,8 +93,9 @@
 void CrostiniPortForwarder::AddNewPortPreference(const PortRuleKey& key,
                                                  const std::string& label) {
   PrefService* pref_service = profile_->GetPrefs();
-  ListPrefUpdate update(pref_service, crostini::prefs::kCrostiniPortForwarding);
-  base::Value::List& all_ports = update.Get()->GetList();
+  ScopedListPrefUpdate update(pref_service,
+                              crostini::prefs::kCrostiniPortForwarding);
+  base::Value::List& all_ports = update.Get();
   base::Value::Dict new_port_metadata;
   new_port_metadata.Set(kPortNumberKey, key.port_number);
   new_port_metadata.Set(kPortProtocolKey, static_cast<int>(key.protocol_type));
@@ -107,8 +108,9 @@
 
 bool CrostiniPortForwarder::RemovePortPreference(const PortRuleKey& key) {
   PrefService* pref_service = profile_->GetPrefs();
-  ListPrefUpdate update(pref_service, crostini::prefs::kCrostiniPortForwarding);
-  base::Value::List& update_list = update->GetList();
+  ScopedListPrefUpdate update(pref_service,
+                              crostini::prefs::kCrostiniPortForwarding);
+  base::Value::List& update_list = update.Get();
   auto it = base::ranges::find_if(update_list, [&key, this](const auto& dict) {
     return MatchPortRuleDict(dict, key);
   });
@@ -356,8 +358,9 @@
 void CrostiniPortForwarder::RemoveAllPorts(
     const guest_os::GuestId& container_id) {
   PrefService* pref_service = profile_->GetPrefs();
-  ListPrefUpdate update(pref_service, crostini::prefs::kCrostiniPortForwarding);
-  update->GetList().EraseIf([&container_id, this](const auto& dict) {
+  ScopedListPrefUpdate update(pref_service,
+                              crostini::prefs::kCrostiniPortForwarding);
+  update->EraseIf([&container_id, this](const auto& dict) {
     return MatchPortRuleContainerId(dict, container_id);
   });
 
diff --git a/chrome/browser/ash/dbus/mojo_connection_service_provider.cc b/chrome/browser/ash/dbus/mojo_connection_service_provider.cc
index bde50c5..c9b65cb 100644
--- a/chrome/browser/ash/dbus/mojo_connection_service_provider.cc
+++ b/chrome/browser/ash/dbus/mojo_connection_service_provider.cc
@@ -11,8 +11,8 @@
 #include "base/files/scoped_file.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.h"
+#include "chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
 #include "chromeos/components/sensors/ash/sensor_hal_dispatcher.h"
-#include "chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
 #include "dbus/bus.h"
 #include "dbus/message.h"
 #include "mojo/public/cpp/bindings/remote.h"
@@ -118,7 +118,7 @@
 
   rollback_network_config::BindToInProcessInstance(
       mojo::PendingReceiver<
-          chromeos::rollback_network_config::mojom::RollbackNetworkConfig>(
+          rollback_network_config::mojom::RollbackNetworkConfig>(
           std::move(pipe)));
 
   SendResponse(std::move(platform_channel), method_call,
diff --git a/chrome/browser/ash/file_manager/copy_or_move_io_task_impl.h b/chrome/browser/ash/file_manager/copy_or_move_io_task_impl.h
index c9cde61..1a32c52 100644
--- a/chrome/browser/ash/file_manager/copy_or_move_io_task_impl.h
+++ b/chrome/browser/ash/file_manager/copy_or_move_io_task_impl.h
@@ -46,8 +46,8 @@
   virtual ~CopyOrMoveIOTaskImpl();
 
   // Starts the copy or move.
-  void Execute(ProgressCallback progress_callback,
-               CompleteCallback complete_callback);
+  virtual void Execute(ProgressCallback progress_callback,
+                       CompleteCallback complete_callback);
 
   // Cancels the operation.
   void Cancel();
diff --git a/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.cc b/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.cc
index 8cec3ba..06b871a4 100644
--- a/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.cc
+++ b/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.cc
@@ -14,7 +14,7 @@
 #include "base/check_op.h"
 #include "base/files/file.h"
 #include "base/files/file_path.h"
-#include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/ash/file_manager/file_manager_copy_or_move_hook_delegate.h"
 #include "chrome/browser/ash/file_manager/file_manager_copy_or_move_hook_file_check_delegate.h"
 #include "chrome/browser/ash/file_manager/io_task.h"
@@ -30,12 +30,77 @@
 
 namespace {
 
-CopyOrMoveIOTaskScanningImpl::FileTransferAnalysisDelegateFactory&
-GetFactoryStorage() {
-  static base::NoDestructor<
-      CopyOrMoveIOTaskScanningImpl::FileTransferAnalysisDelegateFactory>
-      factory;
-  return *factory;
+// Scan the `idx`-th entry.
+//
+// Note: We include the previous_file_transfer_analysis_delegate here to manage
+// its lifetime.
+void DoReportOnlyScanning(
+    std::unique_ptr<enterprise_connectors::FileTransferAnalysisDelegate>
+        previous_file_transfer_analysis_delegate,
+    size_t idx,
+    std::vector<absl::optional<enterprise_connectors::AnalysisSettings>>
+        settings,
+    std::vector<storage::FileSystemURL> sources,
+    std::vector<storage::FileSystemURL> outputs,
+    Profile* profile,
+    scoped_refptr<storage::FileSystemContext> file_system_context) {
+  previous_file_transfer_analysis_delegate.reset();
+
+  if (idx >= settings.size()) {
+    // Scanning is complete!
+    return;
+  }
+
+  if (!settings[idx].has_value()) {
+    // Don't scan this entry, but try the next.
+    DoReportOnlyScanning(nullptr, idx + 1, std::move(settings),
+                         std::move(sources), std::move(outputs), profile,
+                         file_system_context);
+    return;
+  }
+
+  std::unique_ptr<enterprise_connectors::FileTransferAnalysisDelegate>
+      file_transfer_analysis_delegate =
+          enterprise_connectors::FileTransferAnalysisDelegate::Create(
+              safe_browsing::DeepScanAccessPoint::FILE_TRANSFER, sources[idx],
+              outputs[idx], profile, file_system_context.get(),
+              std::move(settings[idx].value()));
+
+  // Manage lifetime of the file_transfer_analysis_delegate by binding it to the
+  // completion callback.
+  auto* file_transfer_analysis_delegate_ptr =
+      file_transfer_analysis_delegate.get();
+  file_transfer_analysis_delegate_ptr->UploadData(base::BindOnce(
+      &DoReportOnlyScanning, std::move(file_transfer_analysis_delegate),
+      idx + 1, std::move(settings), std::move(sources), std::move(outputs),
+      profile, file_system_context));
+}
+
+// Start the asynchronous report-only scans.
+//
+// The `io_task_completion_callback` will be run before the scans are executed.
+void StartReportOnlyScanning(
+    IOTask::CompleteCallback io_task_completion_callback,
+    std::vector<absl::optional<enterprise_connectors::AnalysisSettings>>
+        settings,
+    Profile* profile,
+    scoped_refptr<storage::FileSystemContext> file_system_context,
+    ProgressStatus status) {
+  DCHECK_EQ(settings.size(), status.sources.size());
+  DCHECK_EQ(settings.size(), status.outputs.size());
+  std::vector<storage::FileSystemURL> sources(settings.size());
+  std::vector<storage::FileSystemURL> outputs(settings.size());
+  for (size_t i = 0; i < settings.size(); ++i) {
+    sources[i] = status.sources[i].url;
+    outputs[i] = status.outputs[i].url;
+  }
+
+  // Notify the Files app of completion of the copy/move.
+  std::move(io_task_completion_callback).Run(std::move(status));
+
+  // Start the actual scanning.
+  DoReportOnlyScanning(nullptr, 0, std::move(settings), std::move(sources),
+                       std::move(outputs), profile, file_system_context);
 }
 
 }  // namespace
@@ -59,18 +124,46 @@
                            show_notification),
       profile_(profile),
       file_system_context_(file_system_context),
-      settings_(std::move(settings)) {}
+      settings_(std::move(settings)) {
+  // The value of `block_until_verdict` is consistent for all settings, so we
+  // just check the value for the first valid setting.
+  auto valid_setting = base::ranges::find_if(
+      settings_,
+      [](const absl::optional<enterprise_connectors::AnalysisSettings>&
+             setting) { return setting.has_value(); });
+  // We should always find one. Otherwise, we wouldn't need scanning at all and
+  // the normal CopyOrMoveIOTaskImpl should have been created.
+  DCHECK(valid_setting != settings_.end());
+  report_only_scans_ = valid_setting->value().block_until_verdict ==
+                       enterprise_connectors::BlockUntilVerdict::kNoBlock;
+}
 
 CopyOrMoveIOTaskScanningImpl::~CopyOrMoveIOTaskScanningImpl() = default;
 
-// static
-void CopyOrMoveIOTaskScanningImpl::
-    SetFileTransferAnalysisDelegateFactoryForTesting(
-        FileTransferAnalysisDelegateFactory factory) {
-  GetFactoryStorage() = factory;
+void CopyOrMoveIOTaskScanningImpl::Execute(
+    IOTask::ProgressCallback progress_callback,
+    IOTask::CompleteCallback complete_callback) {
+  if (report_only_scans_) {
+    // For report only scans, we perform the scans AFTER the transfer. So we
+    // wrap the completion callback.
+    CopyOrMoveIOTaskImpl::Execute(
+        std::move(progress_callback),
+        base::BindOnce(&StartReportOnlyScanning, std::move(complete_callback),
+                       std::move(settings_), profile_, file_system_context_));
+  } else {
+    CopyOrMoveIOTaskImpl::Execute(std::move(progress_callback),
+                                  std::move(complete_callback));
+  }
 }
 
 void CopyOrMoveIOTaskScanningImpl::VerifyTransfer() {
+  if (report_only_scans_) {
+    // Don't do any scans. Instead, the scans are performed after the copy/move
+    // is completed.
+    StartTransfer();
+    return;
+  }
+
   // Allocate one unique_ptr for each source. If it is not set, scanning is not
   // enabled for this source.
   file_transfer_analysis_delegates_.resize(progress_.sources.size());
@@ -99,30 +192,15 @@
 
   DCHECK_EQ(file_transfer_analysis_delegates_.size(), progress_.sources.size());
 
-  if (GetFactoryStorage().is_null()) {
-    // This code path is always reached outside of tests.
-    file_transfer_analysis_delegates_[idx] =
-        std::make_unique<enterprise_connectors::FileTransferAnalysisDelegate>(
-            safe_browsing::DeepScanAccessPoint::FILE_TRANSFER,
-            progress_.sources[idx].url, progress_.destination_folder, profile_,
-            file_system_context_.get(), std::move(settings_[idx].value()),
-            base::BindOnce(
-                &CopyOrMoveIOTaskScanningImpl::MaybeScanForDisallowedFiles,
-                weak_ptr_factory_.GetWeakPtr(), idx + 1));
-  } else {
-    // Only in tests, GetFactoryStorage() can be set and this code path can be
-    // reached.
-    // Pass `idx` in addition to the constructor parameters to make testing
-    // easier.
-    file_transfer_analysis_delegates_[idx] = GetFactoryStorage().Run(
-        safe_browsing::DeepScanAccessPoint::FILE_TRANSFER,
-        progress_.sources[idx].url, progress_.destination_folder, profile_,
-        file_system_context_.get(), std::move(settings_[idx].value()),
-        base::BindOnce(
-            &CopyOrMoveIOTaskScanningImpl::MaybeScanForDisallowedFiles,
-            weak_ptr_factory_.GetWeakPtr(), idx + 1));
-  }
-  file_transfer_analysis_delegates_[idx]->UploadData();
+  file_transfer_analysis_delegates_[idx] =
+      enterprise_connectors::FileTransferAnalysisDelegate::Create(
+          safe_browsing::DeepScanAccessPoint::FILE_TRANSFER,
+          progress_.sources[idx].url, progress_.destination_folder, profile_,
+          file_system_context_.get(), std::move(settings_[idx].value()));
+
+  file_transfer_analysis_delegates_[idx]->UploadData(
+      base::BindOnce(&CopyOrMoveIOTaskScanningImpl::MaybeScanForDisallowedFiles,
+                     weak_ptr_factory_.GetWeakPtr(), idx + 1));
 }
 
 void CopyOrMoveIOTaskScanningImpl::IsTransferAllowed(
@@ -130,6 +208,7 @@
     const storage::FileSystemURL& source_url,
     const storage::FileSystemURL& destination_url,
     IsTransferAllowedCallback callback) {
+  DCHECK(!report_only_scans_);
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   DCHECK(file_transfer_analysis_delegates_[idx]);
   auto result =
@@ -151,6 +230,9 @@
 
 storage::FileSystemOperation::ErrorBehavior
 CopyOrMoveIOTaskScanningImpl::GetErrorBehavior() {
+  if (report_only_scans_) {
+    return storage::FileSystemOperation::ERROR_BEHAVIOR_ABORT;
+  }
   // For the enterprise connectors, we want files to be copied/moved if they are
   // allowed and files to be prevented from copying/moving if they are blocked.
   // With `ERROR_BEHAVIOR_ABORT`, the first blocked file would result in the
@@ -162,19 +244,25 @@
 
 std::unique_ptr<storage::CopyOrMoveHookDelegate>
 CopyOrMoveIOTaskScanningImpl::GetHookDelegate(size_t idx) {
-  DCHECK_LT(idx, file_transfer_analysis_delegates_.size());
-
   // For all callbacks, we are using CreateRelayCallback to ensure that the
   // callbacks are executed on the current (i.e., UI) thread.
   auto progress_callback = google_apis::CreateRelayCallback(
       base::BindRepeating(&CopyOrMoveIOTaskScanningImpl::OnCopyOrMoveProgress,
                           weak_ptr_factory_.GetWeakPtr()));
 
+  if (report_only_scans_) {
+    // For report-only scans, no blocking should be performed, so we use the
+    // normal delegate.
+    return std::make_unique<FileManagerCopyOrMoveHookDelegate>(
+        progress_callback);
+  }
+
+  DCHECK_LT(idx, file_transfer_analysis_delegates_.size());
   if (!file_transfer_analysis_delegates_[idx]) {
     // If scanning is disabled, use the normal delegate.
-    // This can happen if some source_urls lie on a file system for which
-    // scanning is enabled, while other source_urls lie on a file system for
-    // which scanning is disabled.
+    // Scanning can be disabled if some source_urls lie on a file system for
+    // which scanning is enabled, while other source_urls lie on a file system
+    // for which scanning is disabled.
     return std::make_unique<FileManagerCopyOrMoveHookDelegate>(
         progress_callback);
   }
diff --git a/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.h b/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.h
index a62d2c98..8453db0 100644
--- a/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.h
+++ b/chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.h
@@ -29,23 +29,20 @@
 // the OnFileTransferEnterpriseConnector policy.
 // This class performs enterprise connector checks for each source file system
 // url.
-// Scans are performed before the copy/move operation is started. The scanning
-// results are then used during the transfer to block specific files, i.e.,
-// when they contain malware or sensitive data.
+//
+// For `block_until_verdict == kBlock`, scans are performed before the copy/move
+// operation is started. The scanning results are then used during the transfer
+// to block specific files, i.e., when they contain malware or sensitive data.
+//
+// For `block_until_verdict == kNoBlock`, scans are performed after the
+// copy/move operation has completed and the results are only used for
+// reporting. This is done to minimize the influence of the scan to the user
+// experience. As the source might no longer exist after the scan, e.g., because
+// the operation was a move, the files are scanned at the destination.
 class CopyOrMoveIOTaskScanningImpl : public CopyOrMoveIOTaskImpl {
   using IsTransferAllowedCallback = base::OnceCallback<void(base::File::Error)>;
 
  public:
-  using FileTransferAnalysisDelegateFactory = base::RepeatingCallback<
-      std::unique_ptr<enterprise_connectors::FileTransferAnalysisDelegate>(
-          safe_browsing::DeepScanAccessPoint access_point,
-          storage::FileSystemURL source_url,
-          storage::FileSystemURL destination_url,
-          Profile* profile,
-          storage::FileSystemContext* file_system_context,
-          enterprise_connectors::AnalysisSettings settings,
-          base::OnceClosure result_callback)>;
-
   // `type` must be either kCopy or kMove.
   // Use this constructor if you require the destination entries to have
   // different file names to the source entries. The size of `source_urls` and
@@ -66,8 +63,8 @@
       bool show_notification = true);
   ~CopyOrMoveIOTaskScanningImpl() override;
 
-  static void SetFileTransferAnalysisDelegateFactoryForTesting(
-      FileTransferAnalysisDelegateFactory factory);
+  void Execute(ProgressCallback progress_callback,
+               CompleteCallback complete_callback) override;
 
  private:
   // Verifies the transfer by performing enterprise connector scans.
@@ -116,6 +113,10 @@
       std::unique_ptr<enterprise_connectors::FileTransferAnalysisDelegate>>
       file_transfer_analysis_delegates_;
 
+  // Specifies whether scanning should be used only for reporting.
+  // This is set to true if `block_until_verdict` is 0.
+  bool report_only_scans_ = false;
+
   base::WeakPtrFactory<CopyOrMoveIOTaskScanningImpl> weak_ptr_factory_{this};
 };
 
diff --git a/chrome/browser/ash/file_manager/copy_or_move_io_task_unittest.cc b/chrome/browser/ash/file_manager/copy_or_move_io_task_unittest.cc
index 2c47778..30f428f 100644
--- a/chrome/browser/ash/file_manager/copy_or_move_io_task_unittest.cc
+++ b/chrome/browser/ash/file_manager/copy_or_move_io_task_unittest.cc
@@ -511,8 +511,8 @@
     file_system_context_ = storage::CreateFileSystemContextForTesting(
         nullptr, source_destination_testing_helper_->GetTempDirPath());
 
-    CopyOrMoveIOTaskScanningImpl::
-        SetFileTransferAnalysisDelegateFactoryForTesting(base::BindRepeating(
+    enterprise_connectors::FileTransferAnalysisDelegate::SetFactorForTesting(
+        base::BindRepeating(
             [](base::RepeatingCallback<void(
                    enterprise_connectors::MockFileTransferAnalysisDelegate*,
                    const storage::FileSystemURL& source_url)>
@@ -521,15 +521,13 @@
                storage::FileSystemURL source_url,
                storage::FileSystemURL destination_url, Profile* profile,
                storage::FileSystemContext* file_system_context,
-               enterprise_connectors::AnalysisSettings settings,
-               base::OnceClosure result_callback)
+               enterprise_connectors::AnalysisSettings settings)
                 -> std::unique_ptr<
                     enterprise_connectors::FileTransferAnalysisDelegate> {
               auto delegate = std::make_unique<::testing::StrictMock<
                   enterprise_connectors::MockFileTransferAnalysisDelegate>>(
                   access_point, source_url, destination_url, profile,
-                  file_system_context, std::move(settings),
-                  std::move(result_callback));
+                  file_system_context, std::move(settings));
 
               mock_setup_callback.Run(delegate.get(), source_url);
 
@@ -547,18 +545,18 @@
       const storage::FileSystemURL& source_url) {
     if (auto iter = scanning_expectations_.find(source_url);
         iter != scanning_expectations_.end()) {
-      EXPECT_CALL(*delegate, UploadData()).WillOnce([delegate]() {
-        delegate->RunCallback();
-      });
+      EXPECT_CALL(*delegate, UploadData(_))
+          .WillOnce(
+              [](base::OnceClosure callback) { std::move(callback).Run(); });
 
       EXPECT_CALL(*delegate, GetAnalysisResultAfterScan(source_url))
           .WillOnce(Return(iter->second));
     } else if (auto iter = directory_scanning_expectations_.find(source_url);
                iter != directory_scanning_expectations_.end()) {
       // Scan for directory detected.
-      EXPECT_CALL(*delegate, UploadData()).WillOnce([delegate]() {
-        delegate->RunCallback();
-      });
+      EXPECT_CALL(*delegate, UploadData(_))
+          .WillOnce(
+              [](base::OnceClosure callback) { std::move(callback).Run(); });
 
       for (auto&& scanning_expectation : scanning_expectations_) {
         // Note: We're using IsParent here, so this doesn't support recursive
@@ -573,7 +571,7 @@
       }
     } else {
       // Expect no scans if we set no expectation.
-      EXPECT_CALL(*delegate, UploadData()).Times(0);
+      EXPECT_CALL(*delegate, UploadData(_)).Times(0);
       EXPECT_CALL(*delegate, GetAnalysisResultAfterScan(source_url)).Times(0);
     }
   }
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest.cc b/chrome/browser/ash/file_manager/file_manager_browsertest.cc
index e6ef10c..b9152a7 100644
--- a/chrome/browser/ash/file_manager/file_manager_browsertest.cc
+++ b/chrome/browser/ash/file_manager/file_manager_browsertest.cc
@@ -7,9 +7,12 @@
 
 #include "ash/constants/ash_switches.h"
 #include "ash/public/cpp/keyboard/keyboard_switches.h"
+#include "base/files/file_path.h"
+#include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/threading/thread_restrictions.h"
+#include "chrome/browser/ash/file_manager/copy_or_move_io_task_scanning_impl.h"
 #include "chrome/browser/ash/file_manager/file_manager_browsertest_base.h"
 #include "chrome/browser/ash/policy/dlp/dlp_files_controller.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h"
@@ -17,15 +20,21 @@
 #include "chrome/browser/chromeos/policy/dlp/mock_dlp_rules_manager.h"
 #include "chrome/browser/enterprise/connectors/analysis/fake_content_analysis_delegate.h"
 #include "chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.h"
+#include "chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.h"
+#include "chrome/browser/enterprise/connectors/reporting/realtime_reporting_client_factory.h"
+#include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.h"
+#include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.h"
 #include "chrome/browser/policy/dm_token_utils.h"
 #include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/dbus/dlp/dlp_client.h"
+#include "components/policy/core/common/cloud/mock_cloud_policy_client.h"
 #include "components/prefs/pref_service.h"
 #include "components/session_manager/core/session_manager.h"
 #include "components/signin/public/identity_manager/identity_manager.h"
+#include "components/signin/public/identity_manager/identity_test_environment.h"
 #include "components/signin/public/identity_manager/identity_test_utils.h"
 #include "components/user_manager/user_manager.h"
 #include "components/user_manager/user_manager_base.h"
@@ -173,6 +182,11 @@
     return *this;
   }
 
+  TestCase& FileTransferConnectorReportOnlyMode() {
+    options.file_transfer_connector_report_only = true;
+    return *this;
+  }
+
   std::string GetFullName() const {
     std::string full_name = name;
 
@@ -212,6 +226,9 @@
     if (options.enable_mirrorsync)
       full_name += "_MirrorSync";
 
+    if (options.file_transfer_connector_report_only)
+      full_name += "_ReportOnly";
+
     return full_name;
   }
 
@@ -360,7 +377,7 @@
   StartTest();
 }
 
-constexpr char kBlockingScansForDlpAndMalware[] = R"(
+constexpr char kFileTransferConnectorSettingsForDlp[] = R"(
 {
   "service_provider": "google",
   "enable": [
@@ -375,14 +392,19 @@
           }]
         }
       ],
-      "tags": ["dlp", "malware"]
+      "tags": ["dlp"]
     }
   ],
-  "block_until_verdict": 1
+  "block_until_verdict": %s
 })";
 
 base::TimeDelta kResponseDelay = base::Seconds(0);
 
+const std::set<std::string>* JpgMimeTypes() {
+  static std::set<std::string> set = {"image/jpeg"};
+  return &set;
+}
+
 // A version of FilesAppBrowserTest that supports the file transfer enterprise
 // connector.
 class FileTransferConnectorFilesAppBrowserTest : public FilesAppBrowserTest {
@@ -405,12 +427,82 @@
     SetDMTokenForTesting(
         policy::DMToken::CreateValidTokenForTesting("dm_token"));
 
-    enterprise_connectors::FilesRequestHandler::SetFactoryForTesting(
-        base::BindRepeating(
-            &enterprise_connectors::FakeFilesRequestHandler::Create,
-            base::BindRepeating(&FileTransferConnectorFilesAppBrowserTest::
-                                    FakeFileUploadCallback,
-                                base::Unretained(this))));
+    // Enable reporting.
+    safe_browsing::SetOnSecurityEventReporting(profile()->GetPrefs(),
+                                               /*enabled*/ true,
+                                               /*enabled_event_names*/ {},
+                                               /*enabled_opt_in_events*/ {},
+                                               /*machine_scope*/ false);
+    // Add mock to check reports.
+    cloud_policy_client_ = std::make_unique<policy::MockCloudPolicyClient>();
+    cloud_policy_client_->SetDMToken("dm_token");
+    enterprise_connectors::RealtimeReportingClientFactory::GetForProfile(
+        profile())
+        ->SetBrowserCloudPolicyClientForTesting(cloud_policy_client_.get());
+    // Add IdentityTestEnvironment to verify user name.
+    identity_test_environment_ =
+        std::make_unique<signin::IdentityTestEnvironment>();
+    identity_test_environment_->MakePrimaryAccountAvailable(
+        kUserName, signin::ConsentLevel::kSync);
+    extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile())
+        ->SetIdentityManagerForTesting(
+            identity_test_environment_->identity_manager());
+  }
+
+  std::string GetScanIDForFileName(std::string file_name) {
+    return std::string(kScanId) + file_name;
+  }
+
+  bool IsReportOnlyMode() {
+    return GetOptions().file_transfer_connector_report_only;
+  }
+
+  void ScanningHasCompletedCallback() {
+    DCHECK(run_loop_);
+    ++finished_file_transfer_analysis_delegates_;
+    DCHECK_LE(finished_file_transfer_analysis_delegates_,
+              expected_number_of_file_transfer_analysis_delegates_);
+
+    if (finished_file_transfer_analysis_delegates_ ==
+        expected_number_of_file_transfer_analysis_delegates_) {
+      // If all FileTransferAnalysisDelegates finished, scanning has been
+      // completed.
+      run_loop_->QuitClosure().Run();
+    }
+  }
+
+  // Setup the expectations of the mock.
+  // This function uses the stored expectations from the
+  // `scanning_expectations_` map.
+  void SetupMock(
+      enterprise_connectors::MockFileTransferAnalysisDelegate* delegate) {
+    // Expect one call to UploadData.
+    EXPECT_CALL(*delegate, UploadData(::testing::_))
+        .WillOnce(testing::Invoke([this, delegate](base::OnceClosure callback) {
+          // When scanning is started, start the normal scan.
+          // We modify the callback such that in addition to the normal callback
+          // we also call `ScanningHasCompletedCallback()` to notify the test
+          // that scanning has completed.
+          delegate->FileTransferAnalysisDelegate::UploadData(base::BindOnce(
+              [](base::OnceClosure callback,
+                 base::OnceClosure scanning_has_completed_callback) {
+                // Call the callback
+                std::move(callback).Run();
+                // Notify that scanning of this delegate has completed.
+                std::move(scanning_has_completed_callback).Run();
+              },
+              std::move(callback),
+              base::BindOnce(&FileTransferConnectorFilesAppBrowserTest::
+                                 ScanningHasCompletedCallback,
+                             base::Unretained(this))));
+        }));
+
+    // Call GetAnalysisResultAfterScan from the base class.
+    EXPECT_CALL(*delegate, GetAnalysisResultAfterScan(::testing::_))
+        .WillRepeatedly(testing::Invoke([delegate](storage::FileSystemURL url) {
+          return delegate
+              ->FileTransferAnalysisDelegate::GetAnalysisResultAfterScan(url);
+        }));
   }
 
   bool HandleEnterpriseConnectorCommands(const std::string& name,
@@ -428,8 +520,46 @@
                 << " to " << *destination;
       safe_browsing::SetAnalysisConnector(
           profile()->GetPrefs(), enterprise_connectors::FILE_TRANSFER,
-          base::StringPrintf(kBlockingScansForDlpAndMalware, source->c_str(),
-                             destination->c_str()));
+          base::StringPrintf(kFileTransferConnectorSettingsForDlp,
+                             source->c_str(), destination->c_str(),
+                             IsReportOnlyMode() ? "0" : "1"));
+
+      // Create a FakeFilesRequestHandler that intercepts uploads and fakes
+      // responses.
+      enterprise_connectors::FilesRequestHandler::SetFactoryForTesting(
+          base::BindRepeating(
+              &enterprise_connectors::FakeFilesRequestHandler::Create,
+              base::BindRepeating(&FileTransferConnectorFilesAppBrowserTest::
+                                      FakeFileUploadCallback,
+                                  base::Unretained(this), *source,
+                                  *destination)));
+
+      // Setup FileTransferAnalysisDelegate mock.
+      enterprise_connectors::FileTransferAnalysisDelegate::SetFactorForTesting(
+          base::BindRepeating(
+              [](base::RepeatingCallback<void(
+                     enterprise_connectors::MockFileTransferAnalysisDelegate*)>
+                     mock_setup_callback,
+                 safe_browsing::DeepScanAccessPoint access_point,
+                 storage::FileSystemURL source_url,
+                 storage::FileSystemURL destination_url, Profile* profile,
+                 storage::FileSystemContext* file_system_context,
+                 enterprise_connectors::AnalysisSettings settings)
+                  -> std::unique_ptr<
+                      enterprise_connectors::FileTransferAnalysisDelegate> {
+                auto delegate = std::make_unique<::testing::StrictMock<
+                    enterprise_connectors::MockFileTransferAnalysisDelegate>>(
+                    access_point, source_url, destination_url, profile,
+                    file_system_context, std::move(settings));
+
+                mock_setup_callback.Run(delegate.get());
+
+                return delegate;
+              },
+              base::BindRepeating(
+                  &FileTransferConnectorFilesAppBrowserTest::SetupMock,
+                  base::Unretained(this))));
+
       return true;
     }
     if (name == "issueFileTransferResponses") {
@@ -437,12 +567,100 @@
       IssueResponses();
       return true;
     }
+    if (name == "isReportOnlyFileTransferConnector") {
+      *output = IsReportOnlyMode() ? "true" : "false";
+      return true;
+    }
+    if (name == "setupScanningRunLoop") {
+      // Set the number of expected `FileTransferAnalysisDelegate`s. This is
+      // done to correctly notify when scanning has completed.
+      auto maybe_int = value.FindInt("number_of_expected_delegates");
+      DCHECK(maybe_int.has_value());
+      expected_number_of_file_transfer_analysis_delegates_ = maybe_int.value();
+      DCHECK(!run_loop_);
+      run_loop_ = std::make_unique<base::RunLoop>();
+      return true;
+    }
+    if (name == "waitForFileTransferScanningToComplete") {
+      DCHECK(run_loop_);
+      // Wait until the scanning is complete.
+      run_loop_->Run();
+      return true;
+    }
+    if (name == "expectFileTransferReports") {
+      // Setup expectations for the deep scan reports.
+
+      const std::string* source_volume_name = value.FindString("source_volume");
+      CHECK(source_volume_name);
+      const std::string* destination_volume_name =
+          value.FindString("destination_volume");
+      CHECK(destination_volume_name);
+      const base::Value::List* entry_paths = value.FindList("entry_paths");
+      CHECK(entry_paths);
+
+      std::vector<std::string> file_names;
+      std::vector<std::string> shas;
+      std::vector<enterprise_connectors::ContentAnalysisResponse::Result>
+          expected_dlp_verdicts;
+      std::vector<std::string> expected_results;
+      std::vector<std::string> expected_scan_ids;
+
+      for (const auto& path : *entry_paths) {
+        const std::string* path_str = path.GetIfString();
+        CHECK(path_str);
+        auto file_name = base::FilePath(*path_str).BaseName().AsUTF8Unsafe();
+        if (!base::Contains(file_name, "blocked")) {
+          // If a file name does not contain blocked, expect no report.
+          continue;
+        }
+
+        file_names.push_back(file_name);
+        // sha256sum chrome/test/data/chromeos/file_manager/small.jpg |  tr
+        // '[:lower:]' '[:upper:]'
+        shas.push_back(
+            "28F5754447BBA26238B93B820DFFCB6743876F8A82077BA1ABB0F4B2529AE5BE");
+
+        // Get the expected verdict from the ConnectorStatusCallback.
+        expected_dlp_verdicts.push_back(
+            ConnectorStatusCallback(base::FilePath(*path_str)).results()[0]);
+
+        // For report-only mode, the transfer is always allowed. It's blocked,
+        // otherwise.
+        expected_results.push_back(safe_browsing::EventResultToString(
+            IsReportOnlyMode() ? safe_browsing::EventResult::ALLOWED
+                               : safe_browsing::EventResult::BLOCKED));
+        expected_scan_ids.push_back(GetScanIDForFileName(file_name));
+      }
+
+      validator_ = std::make_unique<safe_browsing::EventReportValidator>(
+          cloud_policy_client());
+      validator_->ExpectSensitiveDataEvents(
+          /*url*/ "",
+          /*source*/ *source_volume_name,
+          /*destination*/ *destination_volume_name,
+          /*filenames*/ file_names,
+          /*sha*/
+          shas,
+          /*trigger*/
+          extensions::SafeBrowsingPrivateEventRouter::kTriggerFileTransfer,
+          /*dlp_verdict*/ expected_dlp_verdicts,
+          /*mimetype*/ JpgMimeTypes(),
+          /*size*/ 886,
+          /*result*/
+          expected_results,
+          /*username*/ kUserName,
+          /*scan_ids*/ expected_scan_ids);
+
+      return true;
+    }
 
     return false;
   }
 
   // Upload callback to issue responses.
   void FakeFileUploadCallback(
+      const std::string& expected_source,
+      const std::string& expected_destination,
       safe_browsing::BinaryUploadService::Result result,
       const base::FilePath& path,
       std::unique_ptr<safe_browsing::BinaryUploadService::Request> request,
@@ -451,6 +669,13 @@
     DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
     EXPECT_FALSE(path.empty());
     EXPECT_EQ(request->device_token(), "dm_token");
+
+    // Verify source and destination of the request.
+    EXPECT_EQ(request->content_analysis_request().request_data().source(),
+              expected_source);
+    EXPECT_EQ(request->content_analysis_request().request_data().destination(),
+              expected_destination);
+
     // Simulate a response.
     base::OnceClosure response =
         base::BindOnce(std::move(callback), path,
@@ -483,29 +708,43 @@
 
   enterprise_connectors::ContentAnalysisResponse ConnectorStatusCallback(
       const base::FilePath& path) {
+    enterprise_connectors::ContentAnalysisResponse response;
     // We return a block verdict if the basename contains "blocked".
     if (base::Contains(path.BaseName().value(), "blocked")) {
-      return enterprise_connectors::FakeContentAnalysisDelegate::
-          FakeContentAnalysisDelegate::MalwareAndDlpResponse(
-              enterprise_connectors::TriggeredRule::BLOCK,
+      response = enterprise_connectors::FakeContentAnalysisDelegate::
+          FakeContentAnalysisDelegate::DlpResponse(
               enterprise_connectors::ContentAnalysisResponse::Result::SUCCESS,
               "rule", enterprise_connectors::TriggeredRule::BLOCK);
     } else {
-      return enterprise_connectors::FakeContentAnalysisDelegate::
-          SuccessfulResponse([]() {
-            std::set<std::string> tags;
-            tags.insert("dlp");
-            tags.insert("malware");
-            return tags;
-          }());
+      response = enterprise_connectors::FakeContentAnalysisDelegate::
+          SuccessfulResponse({"dlp"});
     }
+    response.set_request_token(
+        GetScanIDForFileName(path.BaseName().AsUTF8Unsafe()));
+    return response;
   }
 
+  policy::MockCloudPolicyClient* cloud_policy_client() {
+    return cloud_policy_client_.get();
+  }
+
+  // Used to test reporting.
+  std::unique_ptr<policy::MockCloudPolicyClient> cloud_policy_client_;
+  std::unique_ptr<signin::IdentityTestEnvironment> identity_test_environment_;
+  std::unique_ptr<safe_browsing::EventReportValidator> validator_;
+  static constexpr char kUserName[] = "test@chromium.org";
+  static constexpr char kScanId[] = "scan id";
+
   // The saved scanning responses.
   std::vector<base::OnceClosure> saved_responses_;
   // Determines whether a current scanning response should be saved for later or
   // issued directly.
   bool save_response_for_later_ = true;
+
+  size_t finished_file_transfer_analysis_delegates_ = 0;
+  size_t expected_number_of_file_transfer_analysis_delegates_ = 0;
+
+  std::unique_ptr<base::RunLoop> run_loop_;
 };
 
 IN_PROC_BROWSER_TEST_P(FileTransferConnectorFilesAppBrowserTest, Test) {
@@ -1042,11 +1281,19 @@
         FILE_TRANSFER_TEST_CASE("transferConnectorFromCrostiniToDownloadsDeep"),
         FILE_TRANSFER_TEST_CASE("transferConnectorFromCrostiniToDownloadsFlat"),
         FILE_TRANSFER_TEST_CASE("transferConnectorFromDriveToDownloadsDeep"),
+        FILE_TRANSFER_TEST_CASE("transferConnectorFromDriveToDownloadsDeep")
+            .FileTransferConnectorReportOnlyMode(),
         FILE_TRANSFER_TEST_CASE("transferConnectorFromDriveToDownloadsFlat"),
+        FILE_TRANSFER_TEST_CASE("transferConnectorFromDriveToDownloadsFlat")
+            .FileTransferConnectorReportOnlyMode(),
         FILE_TRANSFER_TEST_CASE(
             "transferConnectorFromDriveToDownloadsMoveDeep"),
+        FILE_TRANSFER_TEST_CASE("transferConnectorFromDriveToDownloadsMoveDeep")
+            .FileTransferConnectorReportOnlyMode(),
         FILE_TRANSFER_TEST_CASE(
             "transferConnectorFromDriveToDownloadsMoveFlat"),
+        FILE_TRANSFER_TEST_CASE("transferConnectorFromDriveToDownloadsMoveFlat")
+            .FileTransferConnectorReportOnlyMode(),
         FILE_TRANSFER_TEST_CASE("transferConnectorFromMtpToDownloadsDeep"),
         FILE_TRANSFER_TEST_CASE("transferConnectorFromMtpToDownloadsFlat"),
         FILE_TRANSFER_TEST_CASE("transferConnectorFromSmbfsToDownloadsDeep"),
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.h b/chrome/browser/ash/file_manager/file_manager_browsertest_base.h
index 2915e0a..ea248c7 100644
--- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.h
+++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.h
@@ -135,6 +135,9 @@
 
     // Whether test should enable the file transfer connector.
     bool enable_file_transfer_connector = false;
+
+    // Whether test should use report-only mode for the file transfer connector.
+    bool file_transfer_connector_report_only = false;
   };
 
   FileManagerBrowserTestBase(const FileManagerBrowserTestBase&) = delete;
diff --git a/chrome/browser/ash/login/enrollment/enrollment_screen.cc b/chrome/browser/ash/login/enrollment/enrollment_screen.cc
index 991c96c..66370d87 100644
--- a/chrome/browser/ash/login/enrollment/enrollment_screen.cc
+++ b/chrome/browser/ash/login/enrollment/enrollment_screen.cc
@@ -11,6 +11,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
+#include "base/check_is_test.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
@@ -96,6 +97,7 @@
 }
 
 constexpr char kUserActionCancelTPMCheck[] = "cancel-tpm-check";
+constexpr char kUserActionSkipDialogConfirmation[] = "skip-confirmation";
 
 // Max number of retries to check install attributes state.
 constexpr int kMaxInstallAttributesStateCheckRetries = 60;
@@ -247,6 +249,13 @@
   std::move(callback).Run();
 }
 
+void EnrollmentScreen::ShowSkipEnrollmentDialogue() {
+  DCHECK(config_.is_license_packaged_with_device);
+  if (view_) {
+    view_->ShowSkipConfirmationDialog();
+  }
+}
+
 bool EnrollmentScreen::MaybeSkip(WizardContext& context) {
   // TODO(crbug.com/1271134): Logging as "WARNING" to make sure it's preserved
   // in the logs.
@@ -475,8 +484,13 @@
 
 bool EnrollmentScreen::HandleAccelerator(LoginAcceleratorAction action) {
   if (action == LoginAcceleratorAction::kCancelScreenAction) {
-    OnCancel();
-    return true;
+    if (config_.is_license_packaged_with_device) {
+      ShowSkipEnrollmentDialogue();
+      return true;
+    } else {
+      OnCancel();
+      return true;
+    }
   }
   return false;
 }
@@ -798,9 +812,13 @@
 void EnrollmentScreen::OnUserActionDeprecated(const std::string& action_id) {
   if (action_id == kUserActionCancelTPMCheck) {
     OnCancel();
-  } else {
-    BaseScreen::OnUserActionDeprecated(action_id);
+    return;
   }
+  if (action_id == kUserActionSkipDialogConfirmation) {
+    OnCancel();
+    return;
+  }
+  BaseScreen::OnUserActionDeprecated(action_id);
 }
 
 void EnrollmentScreen::UpdateChromadMigrationOobeFlow(bool exists) {
diff --git a/chrome/browser/ash/login/enrollment/enrollment_screen.h b/chrome/browser/ash/login/enrollment/enrollment_screen.h
index 83cb272..2dd6e3f 100644
--- a/chrome/browser/ash/login/enrollment/enrollment_screen.h
+++ b/chrome/browser/ash/login/enrollment/enrollment_screen.h
@@ -93,6 +93,9 @@
                                  const std::string& location) override;
   void OnIdentifierEntered(const std::string& email) override;
 
+  // Shows skip enrollment dialogue confiromation for license packaged devices.
+  void ShowSkipEnrollmentDialogue();
+
   // EnterpriseEnrollmentHelper::EnrollmentStatusConsumer implementation:
   void OnAuthError(const GoogleServiceAuthError& error) override;
   void OnEnrollmentError(policy::EnrollmentStatus status) override;
diff --git a/chrome/browser/ash/login/enrollment/enrollment_screen_browsertest.cc b/chrome/browser/ash/login/enrollment/enrollment_screen_browsertest.cc
index b2ed0734..69888566 100644
--- a/chrome/browser/ash/login/enrollment/enrollment_screen_browsertest.cc
+++ b/chrome/browser/ash/login/enrollment/enrollment_screen_browsertest.cc
@@ -36,6 +36,20 @@
 
 namespace ash {
 namespace {
+constexpr char kEnterpriseEnrollment[] = "enterprise-enrollment";
+
+const test::UIPath kEnterpriseEnrollmentDialogue = {kEnterpriseEnrollment,
+                                                    "step-signin"};
+
+const test::UIPath kEnterpriseEnrollmentSkipDialogue = {
+    kEnterpriseEnrollment, "skipConfirmationDialog"};
+
+const test::UIPath kEnterpriseEnrollmentSkipDialogueGoback = {
+    kEnterpriseEnrollment, "goBackButton"};
+
+const test::UIPath kEnterpriseEnrollmentSkipDialogueSkip = {
+    kEnterpriseEnrollment, "skipButton"};
+
 const test::UIPath kEnrollmentTPMCheckCancelButton = {
     "enterprise-enrollment", "step-tpm-checking", "cancelButton"};
 }  // namespace
@@ -303,12 +317,98 @@
   EXPECT_TRUE(StartupUtils::IsDeviceRegistered());
 }
 
+IN_PROC_BROWSER_TEST_F(EnrollmentScreenTest, SkipEnrollmentDialogueGoBack) {
+  enrollment_ui_.SetExitHandler();
+  policy::EnrollmentConfig enrollment_config;
+  enrollment_config.mode = policy::EnrollmentConfig::MODE_MANUAL;
+  enrollment_config.auth_mechanism =
+      policy::EnrollmentConfig::AUTH_MECHANISM_INTERACTIVE;
+
+  enrollment_config.is_license_packaged_with_device = true;
+
+  enrollment_screen()->SetEnrollmentConfig(enrollment_config);
+  enrollment_helper_.ResetMock();
+
+  WizardContext context;
+  enrollment_screen()->Show(&context);
+
+  OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
+  enrollment_ui_.WaitForStep(test::ui::kEnrollmentStepSignin);
+
+  test::OobeJS().ExpectVisiblePath(kEnterpriseEnrollmentDialogue);
+  LoginDisplayHost::default_host()->HandleAccelerator(
+      LoginAcceleratorAction::kCancelScreenAction);
+
+  test::OobeJS().ExpectDialogOpen(kEnterpriseEnrollmentSkipDialogue);
+  test::OobeJS().ClickOnPath(kEnterpriseEnrollmentSkipDialogueGoback);
+  test::OobeJS().ExpectDialogClosed(kEnterpriseEnrollmentSkipDialogue);
+  test::OobeJS().ExpectVisiblePath(kEnterpriseEnrollmentDialogue);
+}
+
+IN_PROC_BROWSER_TEST_F(EnrollmentScreenTest,
+                       SkipEnrollmentDialogueSkipConfirmation) {
+  enrollment_ui_.SetExitHandler();
+  policy::EnrollmentConfig enrollment_config;
+  enrollment_config.mode = policy::EnrollmentConfig::MODE_MANUAL;
+  enrollment_config.auth_mechanism =
+      policy::EnrollmentConfig::AUTH_MECHANISM_INTERACTIVE;
+
+  enrollment_config.is_license_packaged_with_device = true;
+
+  enrollment_screen()->SetEnrollmentConfig(enrollment_config);
+  enrollment_helper_.ResetMock();
+
+  WizardContext context;
+  enrollment_screen()->Show(&context);
+
+  OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
+  enrollment_ui_.WaitForStep(test::ui::kEnrollmentStepSignin);
+
+  test::OobeJS().ExpectVisiblePath(kEnterpriseEnrollmentDialogue);
+
+  LoginDisplayHost::default_host()->HandleAccelerator(
+      LoginAcceleratorAction::kCancelScreenAction);
+
+  test::OobeJS().ExpectDialogOpen(kEnterpriseEnrollmentSkipDialogue);
+
+  test::OobeJS().ClickOnPath(kEnterpriseEnrollmentSkipDialogueSkip);
+  test::OobeJS().ExpectDialogClosed(kEnterpriseEnrollmentSkipDialogue);
+
+  EnrollmentScreen::Result screen_result = enrollment_ui_.WaitForScreenExit();
+  EXPECT_EQ(EnrollmentScreen::Result::BACK, screen_result);
+}
+
+IN_PROC_BROWSER_TEST_F(EnrollmentScreenTest, SkipEnrollmentDialogueNoLPDevice) {
+  enrollment_ui_.SetExitHandler();
+  policy::EnrollmentConfig enrollment_config;
+  enrollment_config.mode = policy::EnrollmentConfig::MODE_MANUAL;
+  enrollment_config.auth_mechanism =
+      policy::EnrollmentConfig::AUTH_MECHANISM_INTERACTIVE;
+
+  enrollment_config.is_license_packaged_with_device = false;
+
+  enrollment_screen()->SetEnrollmentConfig(enrollment_config);
+  enrollment_helper_.ResetMock();
+
+  WizardContext context;
+  enrollment_screen()->Show(&context);
+
+  OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
+  enrollment_ui_.WaitForStep(test::ui::kEnrollmentStepSignin);
+
+  test::OobeJS().ExpectVisiblePath(kEnterpriseEnrollmentDialogue);
+
+  LoginDisplayHost::default_host()->HandleAccelerator(
+      LoginAcceleratorAction::kCancelScreenAction);
+
+  EnrollmentScreen::Result screen_result = enrollment_ui_.WaitForScreenExit();
+  EXPECT_EQ(EnrollmentScreen::Result::BACK, screen_result);
+}
+
 IN_PROC_BROWSER_TEST_F(EnrollmentScreenTest, ManualEnrollmentSuccess) {
   enrollment_ui_.SetExitHandler();
   policy::EnrollmentConfig enrollment_config;
   enrollment_config.mode = policy::EnrollmentConfig::MODE_MANUAL_REENROLLMENT;
-  enrollment_config.auth_mechanism =
-      policy::EnrollmentConfig::AUTH_MECHANISM_INTERACTIVE;
 
   enrollment_helper_.ExpectEnrollmentMode(
       policy::EnrollmentConfig::MODE_MANUAL_REENROLLMENT);
diff --git a/chrome/browser/ash/login/enrollment/enrollment_screen_view.h b/chrome/browser/ash/login/enrollment/enrollment_screen_view.h
index d1431a0a..6d282e96 100644
--- a/chrome/browser/ash/login/enrollment/enrollment_screen_view.h
+++ b/chrome/browser/ash/login/enrollment/enrollment_screen_view.h
@@ -71,6 +71,8 @@
   // Sets which flow should GAIA show.
   virtual void SetFlowType(FlowType flow_type) = 0;
 
+  virtual void ShowSkipConfirmationDialog() = 0;
+
   // Sets which buttons should GAIA screen show.
   virtual void SetGaiaButtonsType(GaiaButtonsType buttons_type) = 0;
 
diff --git a/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h b/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h
index 45a4ad4..1335fc8 100644
--- a/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h
+++ b/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h
@@ -55,6 +55,7 @@
   MOCK_METHOD(void,
               ShowLicenseTypeSelectionScreen,
               (const base::DictionaryValue&));
+  MOCK_METHOD(void, ShowSkipConfirmationDialog, ());
   MOCK_METHOD(void,
               ShowActiveDirectoryScreen,
               (const std::string& domain_join_config,
diff --git a/chrome/browser/ash/login/login_manager_test.cc b/chrome/browser/ash/login/login_manager_test.cc
index 3a80ecf3..c1621e1430 100644
--- a/chrome/browser/ash/login/login_manager_test.cc
+++ b/chrome/browser/ash/login/login_manager_test.cc
@@ -61,9 +61,10 @@
 }
 
 void LoginManagerTest::RegisterUser(const AccountId& account_id) {
-  ListPrefUpdate users_pref(g_browser_process->local_state(), "LoggedInUsers");
+  ScopedListPrefUpdate users_pref(g_browser_process->local_state(),
+                                  "LoggedInUsers");
   base::Value email_value(account_id.GetUserEmail());
-  if (!base::Contains(users_pref->GetListDeprecated(), email_value))
+  if (!base::Contains(users_pref.Get(), email_value))
     users_pref->Append(std::move(email_value));
   if (user_manager::UserManager::IsInitialized()) {
     user_manager::KnownUser(g_browser_process->local_state())
diff --git a/chrome/browser/ash/login/screens/update_required_screen_browsertest.cc b/chrome/browser/ash/login/screens/update_required_screen_browsertest.cc
index b2de9a0..9cd49a0 100644
--- a/chrome/browser/ash/login/screens/update_required_screen_browsertest.cc
+++ b/chrome/browser/ash/login/screens/update_required_screen_browsertest.cc
@@ -559,11 +559,6 @@
     proto.mutable_device_minimum_version()->set_value(policy_value);
   }
 
-  void SetAndRefreshMinimumChromeVersionPolicy(const base::Value& value) {
-    SetMinimumChromeVersionPolicy(value);
-    policy_helper_.RefreshDevicePolicy();
-  }
-
   void SetAndRefreshMinimumChromeVersionPolicy(const base::Value::Dict& value) {
     SetMinimumChromeVersionPolicy(base::Value(value.Clone()));
     policy_helper_.RefreshDevicePolicy();
diff --git a/chrome/browser/ash/login/test/login_manager_mixin.cc b/chrome/browser/ash/login/test/login_manager_mixin.cc
index 3860934..e237bb05 100644
--- a/chrome/browser/ash/login/test/login_manager_mixin.cc
+++ b/chrome/browser/ash/login/test/login_manager_mixin.cc
@@ -128,10 +128,10 @@
 
 void LoginManagerMixin::SetUpLocalState() {
   for (const auto& user : initial_users_) {
-    ListPrefUpdate users_pref(g_browser_process->local_state(),
-                              "LoggedInUsers");
+    ScopedListPrefUpdate users_pref(g_browser_process->local_state(),
+                                    "LoggedInUsers");
     base::Value email_value(user.account_id.GetUserEmail());
-    if (!base::Contains(users_pref->GetListDeprecated(), email_value))
+    if (!base::Contains(users_pref.Get(), email_value))
       users_pref->Append(std::move(email_value));
 
     DictionaryPrefUpdate user_type_update(g_browser_process->local_state(),
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
index ca9fdaf2..282228d 100644
--- a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
+++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
@@ -764,9 +764,9 @@
   // If ephemeral users are enabled and we are on the login screen, take this
   // opportunity to clean up by removing all regular users except the owner.
   if (GetEphemeralUsersEnabled() && !IsUserLoggedIn()) {
-    ListPrefUpdate prefs_users_update(GetLocalState(),
-                                      user_manager::kRegularUsersPref);
-    prefs_users_update->ClearList();
+    ScopedListPrefUpdate prefs_users_update(GetLocalState(),
+                                            user_manager::kRegularUsersPref);
+    prefs_users_update->clear();
     for (user_manager::UserList::iterator it = users_.begin();
          it != users_.end();) {
       const AccountId account_id = (*it)->GetAccountId();
@@ -1018,9 +1018,9 @@
   // will be loaded in LoadDeviceLocalAccounts() on the next reboot regardless
   // of whether they still exist in kAccountsPrefDeviceLocalAccounts, allowing
   // us to clean up associated data if they disappear from policy.
-  ListPrefUpdate prefs_device_local_accounts_update(
+  ScopedListPrefUpdate prefs_device_local_accounts_update(
       GetLocalState(), kDeviceLocalAccountsWithSavedData);
-  prefs_device_local_accounts_update->ClearList();
+  prefs_device_local_accounts_update->clear();
   for (const auto& account : device_local_accounts)
     prefs_device_local_accounts_update->Append(account.user_id);
 
@@ -1283,15 +1283,15 @@
 }
 
 void ChromeUserManagerImpl::AddReportingUser(const AccountId& account_id) {
-  ListPrefUpdate users_update(GetLocalState(), ::prefs::kReportingUsers);
+  ScopedListPrefUpdate users_update(GetLocalState(), ::prefs::kReportingUsers);
   base::Value email_value(account_id.GetUserEmail());
-  if (!base::Contains(users_update->GetListDeprecated(), email_value))
+  if (!base::Contains(users_update.Get(), email_value))
     users_update->Append(std::move(email_value));
 }
 
 void ChromeUserManagerImpl::RemoveReportingUser(const AccountId& account_id) {
-  ListPrefUpdate users_update(GetLocalState(), ::prefs::kReportingUsers);
-  base::Value::List& update_list = users_update->GetList();
+  ScopedListPrefUpdate users_update(GetLocalState(), ::prefs::kReportingUsers);
+  base::Value::List& update_list = users_update.Get();
   auto it =
       std::find(update_list.begin(), update_list.end(),
                 base::Value(FullyCanonicalize(account_id.GetUserEmail())));
diff --git a/chrome/browser/ash/login/users/supervised_user_manager_impl.cc b/chrome/browser/ash/login/users/supervised_user_manager_impl.cc
index 902725d..41fdf2d4 100644
--- a/chrome/browser/ash/login/users/supervised_user_manager_impl.cc
+++ b/chrome/browser/ash/login/users/supervised_user_manager_impl.cc
@@ -252,8 +252,8 @@
 void SupervisedUserManagerImpl::RemoveNonCryptohomeData(
     const std::string& user_id) {
   PrefService* prefs = g_browser_process->local_state();
-  ListPrefUpdate prefs_new_users_update(prefs, kSupervisedUsersFirstRun);
-  prefs_new_users_update->GetList().EraseValue(base::Value(user_id));
+  ScopedListPrefUpdate prefs_new_users_update(prefs, kSupervisedUsersFirstRun);
+  prefs_new_users_update->EraseValue(base::Value(user_id));
 
   CleanPref(user_id, kSupervisedUserSyncId);
   CleanPref(user_id, kSupervisedUserManagers);
@@ -274,9 +274,9 @@
 }
 
 bool SupervisedUserManagerImpl::CheckForFirstRun(const std::string& user_id) {
-  ListPrefUpdate prefs_new_users_update(g_browser_process->local_state(),
-                                        kSupervisedUsersFirstRun);
-  return prefs_new_users_update->GetList().EraseValue(base::Value(user_id));
+  ScopedListPrefUpdate prefs_new_users_update(g_browser_process->local_state(),
+                                              kSupervisedUsersFirstRun);
+  return prefs_new_users_update->EraseValue(base::Value(user_id));
 }
 
 }  // namespace ash
diff --git a/chrome/browser/ash/login/wizard_controller.cc b/chrome/browser/ash/login/wizard_controller.cc
index 49361b59..403eb63 100644
--- a/chrome/browser/ash/login/wizard_controller.cc
+++ b/chrome/browser/ash/login/wizard_controller.cc
@@ -200,7 +200,7 @@
 #include "chromeos/ash/components/network/network_state.h"
 #include "chromeos/ash/components/network/network_state_handler.h"
 #include "chromeos/ash/components/network/portal_detector/network_portal_detector.h"
-#include "chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
+#include "chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
 #include "components/crash/core/app/breakpad_linux.h"
 #include "components/crash/core/app/crashpad.h"
 #include "components/metrics/structured/neutrino_logging.h"
@@ -2151,8 +2151,8 @@
   auto* network_config =
       wizard_context_->configuration.FindString(configuration::kNetworkConfig);
   if (network_config) {
-    auto rollback_network_config = std::make_unique<mojo::Remote<
-        chromeos::rollback_network_config::mojom::RollbackNetworkConfig>>();
+    auto rollback_network_config = std::make_unique<
+        mojo::Remote<rollback_network_config::mojom::RollbackNetworkConfig>>();
     rollback_network_config::BindToInProcessInstance(
         rollback_network_config->BindNewPipeAndPassReceiver());
     rollback_network_config->get()->RollbackConfigImport(*network_config,
diff --git a/chrome/browser/ash/net/network_portal_detector_impl.cc b/chrome/browser/ash/net/network_portal_detector_impl.cc
index d7f79086..3b0f444a 100644
--- a/chrome/browser/ash/net/network_portal_detector_impl.cc
+++ b/chrome/browser/ash/net/network_portal_detector_impl.cc
@@ -246,9 +246,19 @@
 
   state_ = STATE_CHECKING_FOR_PORTAL;
 
-  NET_LOG(EVENT) << "Starting captive portal detection.";
+  const NetworkState* default_network = DefaultNetwork();
+  if (!default_network) {
+    NET_LOG(EVENT) << "Start attempt called with no default network, aborting.";
+    return;
+  }
+
+  GURL url = default_network->probe_url();
+  if (url.is_empty())
+    url = GURL(captive_portal::CaptivePortalDetector::kDefaultURL);
+  NET_LOG(EVENT) << "Starting captive portal detection for: "
+                 << NetworkId(default_network) << " Probe url: " << url;
   captive_portal_detector_->DetectCaptivePortal(
-      GURL(CaptivePortalDetector::kDefaultURL),
+      url,
       base::BindOnce(&NetworkPortalDetectorImpl::OnAttemptCompleted,
                      weak_factory_.GetWeakPtr()),
       NO_TRAFFIC_ANNOTATION_YET);
diff --git a/chrome/browser/ash/net/rollback_network_config/rollback_network_config.cc b/chrome/browser/ash/net/rollback_network_config/rollback_network_config.cc
index 4006a19..448ad5b6 100644
--- a/chrome/browser/ash/net/rollback_network_config/rollback_network_config.cc
+++ b/chrome/browser/ash/net/rollback_network_config/rollback_network_config.cc
@@ -468,8 +468,7 @@
 RollbackNetworkConfig::~RollbackNetworkConfig() = default;
 
 void RollbackNetworkConfig::BindReceiver(
-    mojo::PendingReceiver<
-        chromeos::rollback_network_config::mojom::RollbackNetworkConfig>
+    mojo::PendingReceiver<rollback_network_config::mojom::RollbackNetworkConfig>
         receiver) {
   receivers_.Add(this, std::move(receiver));
 }
diff --git a/chrome/browser/ash/net/rollback_network_config/rollback_network_config.h b/chrome/browser/ash/net/rollback_network_config/rollback_network_config.h
index 9edabf1..53a15b1 100644
--- a/chrome/browser/ash/net/rollback_network_config/rollback_network_config.h
+++ b/chrome/browser/ash/net/rollback_network_config/rollback_network_config.h
@@ -13,7 +13,7 @@
 #include "base/values.h"
 #include "chrome/browser/ash/settings/device_settings_service.h"
 #include "chromeos/ash/components/network/network_policy_observer.h"
-#include "chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
+#include "chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
 
 namespace ash {
@@ -29,12 +29,12 @@
 // If implot or export are called multiple times, all but the latest request
 // will be cancelled.
 class RollbackNetworkConfig
-    : public chromeos::rollback_network_config::mojom::RollbackNetworkConfig {
+    : public rollback_network_config::mojom::RollbackNetworkConfig {
  public:
-  using ExportCallback = chromeos::rollback_network_config::mojom::
-      RollbackNetworkConfig::RollbackConfigExportCallback;
-  using ImportCallback = chromeos::rollback_network_config::mojom::
-      RollbackNetworkConfig::RollbackConfigImportCallback;
+  using ExportCallback = rollback_network_config::mojom::RollbackNetworkConfig::
+      RollbackConfigExportCallback;
+  using ImportCallback = rollback_network_config::mojom::RollbackNetworkConfig::
+      RollbackConfigImportCallback;
 
   RollbackNetworkConfig();
   RollbackNetworkConfig(const RollbackNetworkConfig&) = delete;
@@ -43,8 +43,7 @@
 
   void BindReceiver(
       mojo::PendingReceiver<
-          chromeos::rollback_network_config::mojom::RollbackNetworkConfig>
-          receiver);
+          rollback_network_config::mojom::RollbackNetworkConfig> receiver);
 
   void RollbackConfigImport(const std::string& config,
                             ImportCallback callback) override;
@@ -58,8 +57,7 @@
   std::unique_ptr<Importer> importer_;
   std::unique_ptr<Exporter> exporter_;
 
-  mojo::ReceiverSet<
-      chromeos::rollback_network_config::mojom::RollbackNetworkConfig>
+  mojo::ReceiverSet<rollback_network_config::mojom::RollbackNetworkConfig>
       receivers_;
 };
 
diff --git a/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.cc b/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.cc
index bf0ac99..54762da 100644
--- a/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.cc
+++ b/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.cc
@@ -8,7 +8,7 @@
 #include "base/logging.h"
 #include "chrome/browser/ash/net/rollback_network_config/rollback_network_config.h"
 #include "chromeos/ash/components/network/network_handler.h"
-#include "chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
+#include "chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
 
 namespace ash {
 namespace rollback_network_config {
@@ -32,9 +32,7 @@
 }
 
 void BindToInProcessInstance(
-    mojo::PendingReceiver<
-        chromeos::rollback_network_config::mojom::RollbackNetworkConfig>
-        receiver) {
+    mojo::PendingReceiver<mojom::RollbackNetworkConfig> receiver) {
   // This service requires a network handler to fetch configurations or apply
   // configurations.
   if (!NetworkHandler::IsInitialized()) {
diff --git a/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.h b/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.h
index fef38617..4ea0328 100644
--- a/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.h
+++ b/chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.h
@@ -6,7 +6,7 @@
 #define CHROME_BROWSER_ASH_NET_ROLLBACK_NETWORK_CONFIG_ROLLBACK_NETWORK_CONFIG_SERVICE_H_
 
 #include "chrome/browser/ash/net/rollback_network_config/rollback_network_config.h"
-#include "chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
+#include "chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 
 namespace ash {
@@ -19,9 +19,7 @@
 // Binds a receiver to the in-process instance of `RollbackNetworkConfig`. Will
 // create the in-process instance if it has not been created yet.
 void BindToInProcessInstance(
-    mojo::PendingReceiver<
-        chromeos::rollback_network_config::mojom::RollbackNetworkConfig>
-        receiver);
+    mojo::PendingReceiver<mojom::RollbackNetworkConfig> receiver);
 
 void OverrideInProcessInstanceForTesting(
     std::unique_ptr<RollbackNetworkConfig> instance);
diff --git a/chrome/browser/ash/notifications/update_required_notification_unittest.cc b/chrome/browser/ash/notifications/update_required_notification_unittest.cc
index e46e2ae4..d775b1ed 100644
--- a/chrome/browser/ash/notifications/update_required_notification_unittest.cc
+++ b/chrome/browser/ash/notifications/update_required_notification_unittest.cc
@@ -77,7 +77,6 @@
   const MinimumVersionRequirement* GetState() const;
 
   // Set new value for policy pref.
-  void SetPolicyPref(base::Value value);
   void SetPolicyPref(base::Value::Dict value);
 
   void VerifyUpdateRequiredNotification(const std::u16string& expected_title,
@@ -176,13 +175,9 @@
   return *current_version_;
 }
 
-void UpdateRequiredNotificationTest::SetPolicyPref(base::Value value) {
-  scoped_testing_cros_settings_.device_settings()->Set(kDeviceMinimumVersion,
-                                                       value);
-}
-
 void UpdateRequiredNotificationTest::SetPolicyPref(base::Value::Dict value) {
-  SetPolicyPref(base::Value(std::move(value)));
+  scoped_testing_cros_settings_.device_settings()->Set(
+      kDeviceMinimumVersion, base::Value(std::move(value)));
 }
 
 void UpdateRequiredNotificationTest::VerifyUpdateRequiredNotification(
diff --git a/chrome/browser/ash/policy/affiliation/affiliation_test_helper.cc b/chrome/browser/ash/policy/affiliation/affiliation_test_helper.cc
index d91a147..9573d317 100644
--- a/chrome/browser/ash/policy/affiliation/affiliation_test_helper.cc
+++ b/chrome/browser/ash/policy/affiliation/affiliation_test_helper.cc
@@ -168,9 +168,10 @@
 
 // static
 void AffiliationTestHelper::PreLoginUser(const AccountId& account_id) {
-  ListPrefUpdate users_pref(g_browser_process->local_state(), "LoggedInUsers");
+  ScopedListPrefUpdate users_pref(g_browser_process->local_state(),
+                                  "LoggedInUsers");
   base::Value email_value(account_id.GetUserEmail());
-  if (!base::Contains(users_pref->GetListDeprecated(), email_value))
+  if (!base::Contains(users_pref.Get(), email_value))
     users_pref->Append(std::move(email_value));
 
   user_manager::KnownUser(g_browser_process->local_state())
diff --git a/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc b/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc
index 5f27645..6179631 100644
--- a/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc
+++ b/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc
@@ -245,8 +245,8 @@
 IN_PROC_BROWSER_TEST_F(DataTransferDlpAshBrowserTest, MAYBE_BlockComponent) {
   SetupCrostini();
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
 
     base::Value src_urls(base::Value::Type::LIST);
     src_urls.Append(kMailUrl);
@@ -307,8 +307,8 @@
   SetupCrostini();
 
   {
-    ListPrefUpdate update(g_browser_process->local_state(),
-                          policy_prefs::kDlpRulesList);
+    ScopedListPrefUpdate update(g_browser_process->local_state(),
+                                policy_prefs::kDlpRulesList);
     base::Value rule(base::Value::Type::DICTIONARY);
     base::Value src_urls(base::Value::Type::DICTIONARY);
     base::Value src_urls_list(base::Value::Type::LIST);
diff --git a/chrome/browser/ash/policy/remote_commands/remote_commands_fuzzer.cc b/chrome/browser/ash/policy/remote_commands/remote_commands_fuzzer.cc
index 57d7f80..6df4e00 100644
--- a/chrome/browser/ash/policy/remote_commands/remote_commands_fuzzer.cc
+++ b/chrome/browser/ash/policy/remote_commands/remote_commands_fuzzer.cc
@@ -18,7 +18,6 @@
 #include "base/syslog_logging.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
-#include "build/chromeos_buildflags.h"
 #include "chrome/browser/ash/policy/remote_commands/device_command_get_routine_update_job.h"
 #include "chrome/browser/ash/policy/remote_commands/device_command_run_routine_job.h"
 #include "chrome/browser/ash/policy/remote_commands/device_command_screenshot_job.h"
diff --git a/chrome/browser/ash/smb_client/smb_persisted_share_registry.cc b/chrome/browser/ash/smb_client/smb_persisted_share_registry.cc
index 6399a1a..c18f4a5 100644
--- a/chrome/browser/ash/smb_client/smb_persisted_share_registry.cc
+++ b/chrome/browser/ash/smb_client/smb_persisted_share_registry.cc
@@ -97,10 +97,10 @@
     : profile_(profile) {}
 
 void SmbPersistedShareRegistry::Save(const SmbShareInfo& share) {
-  ListPrefUpdate pref(profile_->GetPrefs(),
-                      prefs::kNetworkFileSharesSavedShares);
+  ScopedListPrefUpdate pref(profile_->GetPrefs(),
+                            prefs::kNetworkFileSharesSavedShares);
 
-  base::Value::ListView share_list = pref->GetListDeprecated();
+  base::Value::List& share_list = pref.Get();
   for (auto it = share_list.begin(); it != share_list.end(); ++it) {
     if (GetStringValue(*it, kShareUrlKey) == share.share_url().ToString()) {
       *it = ShareToDict(share);
@@ -113,10 +113,10 @@
 }
 
 void SmbPersistedShareRegistry::Delete(const SmbUrl& share_url) {
-  ListPrefUpdate pref(profile_->GetPrefs(),
-                      prefs::kNetworkFileSharesSavedShares);
+  ScopedListPrefUpdate pref(profile_->GetPrefs(),
+                            prefs::kNetworkFileSharesSavedShares);
 
-  base::Value::List& list_update = pref->GetList();
+  base::Value::List& list_update = pref.Get();
   for (auto it = list_update.begin(); it != list_update.end(); ++it) {
     if (GetStringValue(*it, kShareUrlKey) == share_url.ToString()) {
       list_update.erase(it);
diff --git a/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc b/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc
index 638cbaf..c3e05a7 100644
--- a/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc
+++ b/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc
@@ -1426,10 +1426,10 @@
                    .GetAppIdForSystemApp(SystemWebAppType::SETTINGS)
                    .has_value());
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->Append(static_cast<int>(policy::SystemFeature::kOsSettings));
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->Append(static_cast<int>(policy::SystemFeature::kOsSettings));
   }
   WaitForTestSystemAppInstall();
   absl::optional<web_app::AppId> settings_id =
@@ -1441,10 +1441,10 @@
               GetAppIconKey(*settings_id)->icon_effects);
 
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->ClearList();
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->clear();
   }
   EXPECT_EQ(apps::Readiness::kReady, GetAppReadiness(*settings_id));
   EXPECT_FALSE(apps::IconEffects::kBlocked &
@@ -1462,10 +1462,10 @@
   EXPECT_EQ(apps::Readiness::kReady, GetAppReadiness(*settings_id));
 
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->Append(static_cast<int>(policy::SystemFeature::kOsSettings));
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->Append(static_cast<int>(policy::SystemFeature::kOsSettings));
   }
 
   EXPECT_EQ(apps::Readiness::kDisabledByPolicy, GetAppReadiness(*settings_id));
@@ -1473,10 +1473,10 @@
               GetAppIconKey(*settings_id)->icon_effects);
 
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->ClearList();
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->clear();
   }
   EXPECT_EQ(apps::Readiness::kReady, GetAppReadiness(*settings_id));
   EXPECT_FALSE(apps::IconEffects::kBlocked &
diff --git a/chrome/browser/ash/web_applications/scanning_app_integration_browsertest.cc b/chrome/browser/ash/web_applications/scanning_app_integration_browsertest.cc
index 8e65bcd..0ea4136f 100644
--- a/chrome/browser/ash/web_applications/scanning_app_integration_browsertest.cc
+++ b/chrome/browser/ash/web_applications/scanning_app_integration_browsertest.cc
@@ -33,10 +33,10 @@
 // set to be disabled via the SystemFeaturesDisableList policy.
 IN_PROC_BROWSER_TEST_P(ScanningAppIntegrationTest, ScanningAppDisabled) {
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->Append(static_cast<int>(policy::SystemFeature::kScanning));
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->Append(static_cast<int>(policy::SystemFeature::kScanning));
   }
 
   ASSERT_FALSE(GetManager()
diff --git a/chrome/browser/ash/web_applications/settings_app_integration_browsertest.cc b/chrome/browser/ash/web_applications/settings_app_integration_browsertest.cc
index 1fbf871..76d8cb9 100644
--- a/chrome/browser/ash/web_applications/settings_app_integration_browsertest.cc
+++ b/chrome/browser/ash/web_applications/settings_app_integration_browsertest.cc
@@ -31,10 +31,10 @@
 // via SystemFeaturesDisableList policy, but doesn't launch.
 IN_PROC_BROWSER_TEST_P(SettingsAppIntegrationTest, SettingsAppDisabled) {
   {
-    ListPrefUpdate update(TestingBrowserProcess::GetGlobal()->local_state(),
-                          policy::policy_prefs::kSystemFeaturesDisableList);
-    base::Value* list = update.Get();
-    list->Append(static_cast<int>(policy::SystemFeature::kOsSettings));
+    ScopedListPrefUpdate update(
+        TestingBrowserProcess::GetGlobal()->local_state(),
+        policy::policy_prefs::kSystemFeaturesDisableList);
+    update->Append(static_cast<int>(policy::SystemFeature::kOsSettings));
   }
 
   ASSERT_FALSE(GetManager()
diff --git a/chrome/browser/bluetooth/web_bluetooth_browsertest.cc b/chrome/browser/bluetooth/web_bluetooth_browsertest.cc
index 005c946..6100f37c 100644
--- a/chrome/browser/bluetooth/web_bluetooth_browsertest.cc
+++ b/chrome/browser/bluetooth/web_bluetooth_browsertest.cc
@@ -174,8 +174,9 @@
 
   void ReadRemoteCharacteristic(ValueCallback callback) override {
     if (!(GetProperties() & BluetoothGattCharacteristic::PROPERTY_READ)) {
-      std::move(callback).Run(BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
-                              std::vector<uint8_t>());
+      std::move(callback).Run(
+          BluetoothGattService::GattErrorCode::kNotPermitted,
+          std::vector<uint8_t>());
       return;
     }
     if (defer_read_until_notification_start_) {
@@ -190,7 +191,7 @@
                           ErrorCallback error_callback) override {
     if (!(GetProperties() & BluetoothGattCharacteristic::PROPERTY_NOTIFY)) {
       std::move(error_callback)
-          .Run(BluetoothGattService::GATT_ERROR_NOT_PERMITTED);
+          .Run(BluetoothGattService::GattErrorCode::kNotPermitted);
       return;
     }
     auto fake_notify_session =
diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc
index e2c1eed..f7d39b25 100644
--- a/chrome/browser/browser_features.cc
+++ b/chrome/browser/browser_features.cc
@@ -16,45 +16,48 @@
 
 // Enables using the ClosedTabCache to instantly restore recently closed tabs
 // using the "Reopen Closed Tab" button.
-const base::Feature kClosedTabCache{"ClosedTabCache",
-                                    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kClosedTabCache,
+             "ClosedTabCache",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Whether or not to delegate color queries from the ThemeProvider to the
 // ColorProvider.
-const base::Feature kColorProviderRedirectionForThemeProvider = {
-    "ColorProviderRedirectionForThemeProvider",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kColorProviderRedirectionForThemeProvider,
+             "ColorProviderRedirectionForThemeProvider",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Destroy profiles when their last browser window is closed, instead of when
 // the browser exits.
-const base::Feature kDestroyProfileOnBrowserClose {
-  "DestroyProfileOnBrowserClose",
+BASE_FEATURE(kDestroyProfileOnBrowserClose,
+             "DestroyProfileOnBrowserClose",
 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
-      base::FEATURE_ENABLED_BY_DEFAULT
-};
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
-};
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // DestroyProfileOnBrowserClose only covers deleting regular (non-System)
 // Profiles. This flags lets us destroy the System Profile, as well.
-const base::Feature kDestroySystemProfiles{"DestroySystemProfiles",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDestroySystemProfiles,
+             "DestroySystemProfiles",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Let DevTools front-end talk to the target of type "tab" rather than
 // "frame" when inspecting a WebContents.
-const base::Feature kDevToolsTabTarget{"DevToolsTabTarget",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDevToolsTabTarget,
+             "DevToolsTabTarget",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Nukes profile directory before creating a new profile using
 // ProfileManager::CreateMultiProfileAsync().
-const base::Feature kNukeProfileBeforeCreateMultiAsync{
-    "NukeProfileBeforeCreateMultiAsync", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kNukeProfileBeforeCreateMultiAsync,
+             "NukeProfileBeforeCreateMultiAsync",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables executing the browser commands sent by the NTP promos.
-const base::Feature kPromoBrowserCommands{"PromoBrowserCommands",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kPromoBrowserCommands,
+             "PromoBrowserCommands",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Parameter name for the promo browser command ID provided along with
 // kPromoBrowserCommands.
@@ -65,38 +68,44 @@
 
 // Enables using policy::ManagementService to get the browser's and platform
 // management state everywhere.
-const base::Feature kUseManagementService{"UseManagementService",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUseManagementService,
+             "UseManagementService",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_MAC)
 // Enables integration with the macOS feature Universal Links.
-const base::Feature kEnableUniveralLinks{"EnableUniveralLinks",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableUniveralLinks,
+             "EnableUniveralLinks",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 // Enables reading and writing PWA notification permissions from quick settings
 // menu.
-const base::Feature kQuickSettingsPWANotifications{
-    "QuickSettingsPWA", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kQuickSettingsPWANotifications,
+             "QuickSettingsPWA",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 #if BUILDFLAG(IS_CHROMEOS)
 // Enables being able to zoom a web page by double tapping in Chrome OS tablet
 // mode.
-const base::Feature kDoubleTapToZoomInTabletMode{
-    "DoubleTapToZoomInTabletMode", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDoubleTapToZoomInTabletMode,
+             "DoubleTapToZoomInTabletMode",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 #if !BUILDFLAG(IS_ANDROID)
 // Adds an item to the context menu that copies a link to the page with the
 // selected text highlighted.
-const base::Feature kCopyLinkToText{"CopyLinkToText",
-                                    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCopyLinkToText,
+             "CopyLinkToText",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Adds a "Snooze" action to mute notifications during screen sharing sessions.
-const base::Feature kMuteNotificationSnoozeAction{
-    "MuteNotificationSnoozeAction", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kMuteNotificationSnoozeAction,
+             "MuteNotificationSnoozeAction",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Gates sandboxed iframe navigation toward external protocol behind any of:
@@ -118,36 +127,41 @@
 // I2S: https://groups.google.com/a/chromium.org/g/blink-dev/c/-t-f7I6VvOI
 //
 // Enabled in M103. Flag to be removed in M106
-const base::Feature kSandboxExternalProtocolBlocked{
-    "SandboxExternalProtocolBlocked", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSandboxExternalProtocolBlocked,
+             "SandboxExternalProtocolBlocked",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 // Enabled in M100. Flag to be removed in M106
-const base::Feature kSandboxExternalProtocolBlockedWarning{
-    "SandboxExternalProtocolBlockedWarning", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSandboxExternalProtocolBlockedWarning,
+             "SandboxExternalProtocolBlockedWarning",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables migration of the network context data from `unsandboxed_data_path` to
 // `data_path`. See the explanation in network_context.mojom.
-const base::Feature kTriggerNetworkDataMigration {
-  "TriggerNetworkDataMigration",
+BASE_FEATURE(kTriggerNetworkDataMigration,
+             "TriggerNetworkDataMigration",
 #if BUILDFLAG(IS_WIN)
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #endif
-};
+);
 
 // Enables runtime detection of USB devices which provide a WebUSB landing page
 // descriptor.
-const base::Feature kWebUsbDeviceDetection{"WebUsbDeviceDetection",
-                                           base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kWebUsbDeviceDetection,
+             "WebUsbDeviceDetection",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_ANDROID)
 // Enables Certificate Transparency on Android.
-const base::Feature kCertificateTransparencyAndroid{
-    "CertificateTransparencyAndroid", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCertificateTransparencyAndroid,
+             "CertificateTransparencyAndroid",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
-const base::Feature kLargeFaviconFromGoogle{"LargeFaviconFromGoogle",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLargeFaviconFromGoogle,
+             "LargeFaviconFromGoogle",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const base::FeatureParam<int> kLargeFaviconFromGoogleSizeInDip{
     &kLargeFaviconFromGoogle, "favicon_size_in_dip", 128};
 
@@ -155,34 +169,39 @@
 // init step of the browser startup. This affects the initialization order of
 // some features with the goal to improve startup performance in some cases.
 // See https://bit.ly/chromium-startup-no-guest-profile.
-const base::Feature kObserverBasedPostProfileInit{
-    "ObserverBasedPostProfileInit", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kObserverBasedPostProfileInit,
+             "ObserverBasedPostProfileInit",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether the static key pinning list can be updated via component
 // updater.
-const base::Feature kKeyPinningComponentUpdater{
-    "KeyPinningComponentUpdater", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kKeyPinningComponentUpdater,
+             "KeyPinningComponentUpdater",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When this feature is enabled, the network service will restart unsandboxed if
 // a previous attempt to launch it sandboxed failed.
-const base::Feature kRestartNetworkServiceUnsandboxedForFailedLaunch{
-    "RestartNetworkServiceUnsandboxedForFailedLaunch",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kRestartNetworkServiceUnsandboxedForFailedLaunch,
+             "RestartNetworkServiceUnsandboxedForFailedLaunch",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_WIN)
 // When this feature is enabled, metrics are gathered regarding the performance
 // and reliability of app-bound encryption primitives on a background thread.
-const base::Feature kAppBoundEncryptionMetrics{
-    "AppBoundEncryptionMetrics", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAppBoundEncryptionMetrics,
+             "AppBoundEncryptionMetrics",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 // Enables showing the email of the flex org admin that setup CBCM in the
 // management disclosures.
 #if BUILDFLAG(IS_CHROMEOS)
-extern const base::Feature kFlexOrgManagementDisclosure{
-    "FlexOrgManagementDisclosure", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kFlexOrgManagementDisclosure,
+             "FlexOrgManagementDisclosure",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #else
-extern const base::Feature kFlexOrgManagementDisclosure{
-    "FlexOrgManagementDisclosure", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kFlexOrgManagementDisclosure,
+             "FlexOrgManagementDisclosure",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_CHROMEOS)
 }  // namespace features
diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h
index 8101442..8fb1ce0 100644
--- a/chrome/browser/browser_features.h
+++ b/chrome/browser/browser_features.h
@@ -18,63 +18,63 @@
 // All features in alphabetical order. The features should be documented
 // alongside the definition of their values in the .cc file.
 
-extern const base::Feature kClosedTabCache;
+BASE_DECLARE_FEATURE(kClosedTabCache);
 
-extern const base::Feature kColorProviderRedirectionForThemeProvider;
+BASE_DECLARE_FEATURE(kColorProviderRedirectionForThemeProvider);
 
-extern const base::Feature kDestroyProfileOnBrowserClose;
-extern const base::Feature kDestroySystemProfiles;
+BASE_DECLARE_FEATURE(kDestroyProfileOnBrowserClose);
+BASE_DECLARE_FEATURE(kDestroySystemProfiles);
 
-extern const base::Feature kDevToolsTabTarget;
+BASE_DECLARE_FEATURE(kDevToolsTabTarget);
 
-extern const base::Feature kNukeProfileBeforeCreateMultiAsync;
+BASE_DECLARE_FEATURE(kNukeProfileBeforeCreateMultiAsync);
 
-extern const base::Feature kPromoBrowserCommands;
+BASE_DECLARE_FEATURE(kPromoBrowserCommands);
 extern const char kBrowserCommandIdParam[];
 
-extern const base::Feature kUseManagementService;
+BASE_DECLARE_FEATURE(kUseManagementService);
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-extern const base::Feature kQuickSettingsPWANotifications;
+BASE_DECLARE_FEATURE(kQuickSettingsPWANotifications);
 #endif
 
 #if BUILDFLAG(IS_CHROMEOS)
-extern const base::Feature kDoubleTapToZoomInTabletMode;
+BASE_DECLARE_FEATURE(kDoubleTapToZoomInTabletMode);
 #endif
 
 #if BUILDFLAG(IS_MAC)
-extern const base::Feature kEnableUniveralLinks;
+BASE_DECLARE_FEATURE(kEnableUniveralLinks);
 #endif
 
 #if !BUILDFLAG(IS_ANDROID)
-extern const base::Feature kCopyLinkToText;
-extern const base::Feature kMuteNotificationSnoozeAction;
+BASE_DECLARE_FEATURE(kCopyLinkToText);
+BASE_DECLARE_FEATURE(kMuteNotificationSnoozeAction);
 #endif
 
-extern const base::Feature kSandboxExternalProtocolBlocked;
-extern const base::Feature kSandboxExternalProtocolBlockedWarning;
-extern const base::Feature kTriggerNetworkDataMigration;
+BASE_DECLARE_FEATURE(kSandboxExternalProtocolBlocked);
+BASE_DECLARE_FEATURE(kSandboxExternalProtocolBlockedWarning);
+BASE_DECLARE_FEATURE(kTriggerNetworkDataMigration);
 
-extern const base::Feature kWebUsbDeviceDetection;
+BASE_DECLARE_FEATURE(kWebUsbDeviceDetection);
 
 #if BUILDFLAG(IS_ANDROID)
-extern const base::Feature kCertificateTransparencyAndroid;
+BASE_DECLARE_FEATURE(kCertificateTransparencyAndroid);
 #endif
 
-extern const base::Feature kLargeFaviconFromGoogle;
+BASE_DECLARE_FEATURE(kLargeFaviconFromGoogle);
 extern const base::FeatureParam<int> kLargeFaviconFromGoogleSizeInDip;
 
-extern const base::Feature kObserverBasedPostProfileInit;
+BASE_DECLARE_FEATURE(kObserverBasedPostProfileInit);
 
-extern const base::Feature kRestartNetworkServiceUnsandboxedForFailedLaunch;
+BASE_DECLARE_FEATURE(kRestartNetworkServiceUnsandboxedForFailedLaunch);
 
-extern const base::Feature kKeyPinningComponentUpdater;
+BASE_DECLARE_FEATURE(kKeyPinningComponentUpdater);
 
 #if BUILDFLAG(IS_WIN)
-extern const base::Feature kAppBoundEncryptionMetrics;
+BASE_DECLARE_FEATURE(kAppBoundEncryptionMetrics);
 #endif
 
-extern const base::Feature kFlexOrgManagementDisclosure;
+BASE_DECLARE_FEATURE(kFlexOrgManagementDisclosure);
 
 }  // namespace features
 
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index c92da74..d74bd47 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -950,7 +950,8 @@
       >(map);
 
   RegisterWebUIControllerInterfaceBinder<
-      help_bubble::mojom::HelpBubbleHandlerFactory, InternalsUI>(map);
+      help_bubble::mojom::HelpBubbleHandlerFactory, InternalsUI,
+      settings::SettingsUI>(map);
 
 #if !defined(OFFICIAL_BUILD)
   RegisterWebUIControllerInterfaceBinder<foo::mojom::FooHandler, NewTabPageUI>(
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 50a765b..c5c01b2 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -12,8 +12,6 @@
 import("//media/media_options.gni")
 import("//ppapi/buildflags/buildflags.gni")
 import("//printing/buildflags/buildflags.gni")
-import("//testing/libfuzzer/fuzzer_test.gni")
-import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni")
 import("//third_party/protobuf/proto_library.gni")
 
 assert(is_chromeos_ash)
@@ -335,6 +333,7 @@
     "//chromeos/ash/services/cros_healthd/private/cpp",
     "//chromeos/ash/services/cros_healthd/public/cpp",
     "//chromeos/ash/services/cros_healthd/public/mojom",
+    "//chromeos/ash/services/rollback_network_config/public/mojom",
     "//chromeos/components/cdm_factory_daemon:cdm_factory_daemon_browser",
     "//chromeos/components/certificate_provider:certificate_provider",
     "//chromeos/components/disks:prefs",
@@ -369,7 +368,6 @@
     "//chromeos/services/network_config:in_process_instance",
     "//chromeos/services/network_config/public/cpp:cpp",
     "//chromeos/services/network_health/public/mojom",
-    "//chromeos/services/rollback_network_config/public/mojom",
     "//chromeos/startup:constants",
     "//chromeos/system",
     "//chromeos/ui/base",
@@ -2703,100 +2701,3 @@
   sources =
       [ "../ash/policy/reporting/user_event_reporter_testing_record.proto" ]
 }
-
-fuzzer_test("smb_url_fuzzer") {
-  sources = [
-    "../ash/smb_client/smb_constants.cc",
-    "../ash/smb_client/smb_constants.h",
-    "../ash/smb_client/smb_url.cc",
-    "../ash/smb_client/smb_url.h",
-    "../ash/smb_client/smb_url_fuzzer.cc",
-  ]
-
-  deps = [
-    "//base:i18n",
-    "//base/test:test_support",
-    "//url",
-  ]
-
-  dict = "../ash/smb_client/fuzzer_data/smb_url_fuzzer.dict"
-
-  seed_corpus = "../ash/smb_client/fuzzer_data/smb_url_corpus"
-}
-
-fuzzer_test("zeroconf_printer_detector_fuzzer") {
-  sources = [ "../ash/printing/zeroconf_printer_detector_fuzzer.cc" ]
-  deps = [
-    "//base/test:test_support",
-    "//chrome/browser",
-    "//chrome/browser/ash:ash",
-    "//chrome/browser/chromeos",
-    "//components/exo/wayland:weston_test",
-  ]
-}
-
-if (use_libfuzzer) {
-  fuzzer_test("policy_fuzzer") {
-    sources = [ "../ash/policy/fuzzer/policy_fuzzer.cc" ]
-
-    deps = [
-      ":policy_fuzzer_proto",
-      "//ash/components/tpm",
-      "//base/test:test_support",
-      "//chrome/browser",
-      "//chrome/browser/ash",
-      "//chrome/browser/chromeos",
-      "//components:components_tests_pak",
-      "//components/exo/wayland:weston_test",
-      "//components/policy/core/browser:internal",
-      "//third_party/libprotobuf-mutator",
-      "//ui/resources:ui_test_pak",
-    ]
-  }
-
-  fuzzable_proto_library("policy_fuzzer_proto") {
-    sources = [ "../ash/policy/fuzzer/policy_fuzzer.proto" ]
-
-    import_dirs = [
-      # Add the fuzzable (full-protobuf) .pb.h files into include directories.
-      # This item should come first, so that regular (lite-protobuf) .pb.h
-      # analogs don't get included, as this would cause compilation issues due
-      # to missing symbols.
-      "//components/policy/proto/fuzzer",
-
-      # For imports of proto files from the source tree.
-      "//components/policy/proto",
-
-      # For imports of autogenerated proto files.
-      "$root_gen_dir/components/policy/proto",
-    ]
-
-    proto_deps = [ "//components/policy/proto/fuzzer" ]
-
-    link_deps = [ "//components/policy/proto/fuzzer" ]
-  }
-
-  fuzzer_test("policy_single_install_event_log_fuzzer") {
-    sources = [ "../ash/policy/reporting/single_install_event_log_fuzzer.cc" ]
-
-    deps = [
-      "//base",
-      "//chrome/browser",
-      "//chrome/browser/ash:ash",
-      "//chrome/browser/chromeos",
-      "//components/exo/wayland:weston_test",
-    ]
-  }
-
-  fuzzer_test("policy_remote_commands_fuzzer") {
-    sources = [ "../ash/policy/remote_commands/remote_commands_fuzzer.cc" ]
-
-    deps = [
-      "//base",
-      "//chrome/browser",
-      "//chrome/browser/ash",
-      "//chrome/browser/chromeos",
-      "//components/exo/wayland:weston_test",
-    ]
-  }
-}
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 39e76ca4..9691ed7c 100644
--- a/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.cc
+++ b/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.cc
@@ -9,7 +9,10 @@
 
 #include "base/bind.h"
 #include "base/callback_forward.h"
+#include "base/memory/ptr_util.h"
+#include "base/no_destructor.h"
 #include "chrome/browser/ash/file_manager/volume_manager.h"
+#include "chrome/browser/enterprise/connectors/analysis/analysis_settings.h"
 #include "chrome/browser/enterprise/connectors/analysis/files_request_handler.h"
 #include "chrome/browser/enterprise/connectors/analysis/source_destination_matcher_ash.h"
 #include "chrome/browser/enterprise/connectors/connectors_service.h"
@@ -28,6 +31,17 @@
 using safe_browsing::BinaryUploadService;
 
 namespace {
+
+enterprise_connectors::FileTransferAnalysisDelegate::
+    FileTransferAnalysisDelegateFactory&
+    GetFactoryStorage() {
+  static base::NoDestructor<
+      enterprise_connectors::FileTransferAnalysisDelegate::
+          FileTransferAnalysisDelegateFactory>
+      factory;
+  return *factory;
+}
+
 // GetFileURLsDelegate is used to get the `FileSystemURL`s of all files lying
 // within `root`. A vector of these urls is passed to `callback`. If `root` is
 // a file, the vector will only contain `root`. If `root` is a directory all
@@ -142,6 +156,38 @@
 namespace enterprise_connectors {
 
 // static
+std::unique_ptr<FileTransferAnalysisDelegate>
+FileTransferAnalysisDelegate::Create(
+    safe_browsing::DeepScanAccessPoint access_point,
+    storage::FileSystemURL source_url,
+    storage::FileSystemURL destination_url,
+    Profile* profile,
+    storage::FileSystemContext* file_system_context,
+    AnalysisSettings settings) {
+  if (GetFactoryStorage().is_null()) {
+    // This code path is always reached outside of tests.
+    return base::WrapUnique(
+        new enterprise_connectors::FileTransferAnalysisDelegate(
+            access_point, source_url, destination_url, profile,
+            file_system_context, std::move(settings)));
+  } else {
+    // Only in tests, GetFactoryStorage() can be set and this code path can be
+    // reached.
+    // Pass `idx` in addition to the constructor parameters to make testing
+    // easier.
+    return GetFactoryStorage().Run(access_point, source_url, destination_url,
+                                   profile, file_system_context,
+                                   std::move(settings));
+  }
+}
+
+// static
+void FileTransferAnalysisDelegate::SetFactorForTesting(
+    FileTransferAnalysisDelegateFactory factory) {
+  GetFactoryStorage() = factory;
+}
+
+// static
 std::vector<absl::optional<AnalysisSettings>>
 FileTransferAnalysisDelegate::IsEnabledVec(
     Profile* profile,
@@ -182,8 +228,10 @@
 FileTransferAnalysisDelegate::FileTransferAnalysisResult
 FileTransferAnalysisDelegate::GetAnalysisResultAfterScan(
     storage::FileSystemURL url) {
-  for (size_t i = 0; i < source_urls_.size(); ++i) {
-    if (source_urls_[i] == url) {
+  // Should only be called for blocking scans.
+  DCHECK_EQ(settings_.block_until_verdict, BlockUntilVerdict::kBlock);
+  for (size_t i = 0; i < scanning_urls_.size(); ++i) {
+    if (scanning_urls_[i] == url) {
       // TODO(crbug.com/1340312): Support warning mode.
       return results_[i].complies ? FileTransferAnalysisResult::RESULT_ALLOWED
                                   : FileTransferAnalysisResult::RESULT_BLOCKED;
@@ -192,7 +240,11 @@
   return FileTransferAnalysisResult::RESULT_UNKNOWN;
 }
 
-void FileTransferAnalysisDelegate::UploadData() {
+void FileTransferAnalysisDelegate::UploadData(
+    base::OnceClosure completion_callback) {
+  callback_ = std::move(completion_callback);
+  DCHECK(!callback_.is_null());
+
   // This will start aggregating the needed file urls and pass them to
   // OnGotFileSourceURLs.
   // The usage of the WeakPtr is only safe if `get_file_urls_delegate_` is
@@ -209,20 +261,25 @@
     storage::FileSystemURL destination_url,
     Profile* profile,
     storage::FileSystemContext* file_system_context,
-    AnalysisSettings settings,
-    base::OnceClosure callback)
+    AnalysisSettings settings)
     : settings_{std::move(settings)},
       profile_{profile},
       access_point_{access_point},
       source_url_(std::move(source_url)),
-      destination_url_{std::move(destination_url)},
-      callback_{std::move(callback)} {
+      destination_url_{std::move(destination_url)} {
   DCHECK(profile);
-  DCHECK(!callback_.is_null());
+
+  // For blocking scans, scanning is performed before the copy/move and
+  // thus scanning should be performed on the source.
+  // For non-blocking report-only scans, scanning is performed after the
+  // copy/move and thus scanning should be performed on the destination.
+  auto scanning_url = settings_.block_until_verdict == BlockUntilVerdict::kBlock
+                          ? source_url_
+                          : destination_url_;
 
   get_file_urls_delegate_ = std::make_unique<GetFileURLsDelegate>(
-      file_system_context, source_url_,
-      base::BindOnce(&FileTransferAnalysisDelegate::OnGotFileSourceURLs,
+      file_system_context, scanning_url,
+      base::BindOnce(&FileTransferAnalysisDelegate::OnGotFileURLs,
                      weak_ptr_factory_.GetWeakPtr()));
 }
 
@@ -263,18 +320,18 @@
   return request_handler_.get();
 }
 
-void FileTransferAnalysisDelegate::OnGotFileSourceURLs(
-    std::vector<storage::FileSystemURL> source_urls) {
+void FileTransferAnalysisDelegate::OnGotFileURLs(
+    std::vector<storage::FileSystemURL> scanning_urls) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  source_urls_ = std::move(source_urls);
-  if (source_urls_.empty()) {
+  scanning_urls_ = std::move(scanning_urls);
+  if (scanning_urls_.empty()) {
     ContentAnalysisCompleted(std::vector<RequestHandlerResult>());
     return;
   }
 
   std::vector<base::FilePath> paths;
-  for (const storage::FileSystemURL& url : source_urls_) {
+  for (const storage::FileSystemURL& url : scanning_urls_) {
     paths.push_back(url.path());
   }
 
diff --git a/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.h b/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.h
index 830974f2..6c51d0f 100644
--- a/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.h
+++ b/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.h
@@ -45,6 +45,15 @@
 // file will be scanned.
 class FileTransferAnalysisDelegate : public ContentAnalysisDelegateBase {
  public:
+  using FileTransferAnalysisDelegateFactory = base::RepeatingCallback<
+      std::unique_ptr<enterprise_connectors::FileTransferAnalysisDelegate>(
+          safe_browsing::DeepScanAccessPoint access_point,
+          storage::FileSystemURL source_url,
+          storage::FileSystemURL destination_url,
+          Profile* profile,
+          storage::FileSystemContext* file_system_context,
+          enterprise_connectors::AnalysisSettings settings)>;
+
   enum FileTransferAnalysisResult {
     RESULT_ALLOWED,
     RESULT_BLOCKED,
@@ -53,6 +62,24 @@
 
   ~FileTransferAnalysisDelegate() override;
 
+  // Create the FileTransferAnalysisDelegate. This function uses the factory if
+  // it is set via `SetFactorForTesting()`.
+  //
+  // For `block_until_verdict == 0`, the `destination_url` has to point to the
+  // copied file/directory and not its parent. If it points to the parent, all
+  // files within the destination directory are scanned.
+  static std::unique_ptr<FileTransferAnalysisDelegate> Create(
+      safe_browsing::DeepScanAccessPoint access_point,
+      storage::FileSystemURL source_url,
+      storage::FileSystemURL destination_url,
+      Profile* profile,
+      storage::FileSystemContext* file_system_context,
+      AnalysisSettings settings);
+
+  // Set a factory for the FileTransferAnalysisDelegate.
+  // Can be used in testing to create `MockFileTransferAnalysisDelegate`s.
+  static void SetFactorForTesting(FileTransferAnalysisDelegateFactory factory);
+
   // Returns a vector with the AnalysisSettings for file transfers from the
   // respective source url to the destination_url.
   // If the transfer is not enabled for any of the transfers an empty vector is
@@ -64,17 +91,9 @@
       const std::vector<storage::FileSystemURL>& source_urls,
       storage::FileSystemURL destination_url);
 
-  FileTransferAnalysisDelegate(safe_browsing::DeepScanAccessPoint access_point,
-                               storage::FileSystemURL source_url,
-                               storage::FileSystemURL destination_url,
-                               Profile* profile,
-                               storage::FileSystemContext* file_system_context,
-                               AnalysisSettings settings,
-                               base::OnceClosure result_callback);
-
   // Main entrypoint to start the file uploads.
   // Once scanning is complete `callback_` will be called.
-  virtual void UploadData();
+  virtual void UploadData(base::OnceClosure completion_callback);
 
   // Calling this function is only allowed after the scan is complete!
   virtual FileTransferAnalysisResult GetAnalysisResultAfterScan(
@@ -92,15 +111,26 @@
 
   FilesRequestHandler* GetFilesRequestHandlerForTesting();
 
+ protected:
+  // For `block_until_verdict == 0`, the `destination_url` has to point to the
+  // copied file/directory and not its parent. If it points to the parent, all
+  // files within the destination directory are scanned.
+  FileTransferAnalysisDelegate(safe_browsing::DeepScanAccessPoint access_point,
+                               storage::FileSystemURL source_url,
+                               storage::FileSystemURL destination_url,
+                               Profile* profile,
+                               storage::FileSystemContext* file_system_context,
+                               AnalysisSettings settings);
+
  private:
-  void OnGotFileSourceURLs(std::vector<storage::FileSystemURL> source_urls);
+  void OnGotFileURLs(std::vector<storage::FileSystemURL> source_urls);
 
   void ContentAnalysisCompleted(std::vector<RequestHandlerResult> results);
 
   AnalysisSettings settings_;
   Profile* profile_;
   safe_browsing::DeepScanAccessPoint access_point_;
-  std::vector<storage::FileSystemURL> source_urls_;
+  std::vector<storage::FileSystemURL> scanning_urls_;
   storage::FileSystemURL source_url_;
   storage::FileSystemURL destination_url_;
   base::OnceClosure callback_;
diff --git a/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate_unittest.cc b/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate_unittest.cc
index 54ae6cd..caae4ff 100644
--- a/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate_unittest.cc
+++ b/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate_unittest.cc
@@ -93,6 +93,28 @@
   "block_large_files": 0
 })";
 
+constexpr char kBlockingScansForDlpAndMalwareReportOnly[] = R"(
+{
+  "service_provider": "google",
+  "enable": [
+    {
+      "source_destination_list": [
+        {
+          "sources": [{
+            "file_system_type": "*"
+          }],
+          "destinations": [{
+            "file_system_type": "*"
+          }]
+        }
+      ],
+      "tags": ["dlp", "malware"]
+    }
+  ],
+  "block_until_verdict": 0,
+  "block_large_files": 0
+})";
+
 constexpr char kBlockingScansForDlp[] = R"(
 {
   "service_provider": "google",
@@ -780,13 +802,11 @@
     destination_url_ = destination_url;
     // The access point is only used for metrics, so its value doesn't affect
     // the tests in this file and can always be the same.
-    file_transfer_analysis_delegate_ =
-        std::make_unique<FileTransferAnalysisDelegate>(
-            safe_browsing::DeepScanAccessPoint::FILE_TRANSFER, source_url,
-            destination_url, profile_, file_system_context_.get(),
-            GetSettings(), run_loop_.QuitClosure());
+    file_transfer_analysis_delegate_ = FileTransferAnalysisDelegate::Create(
+        safe_browsing::DeepScanAccessPoint::FILE_TRANSFER, source_url,
+        destination_url, profile_, file_system_context_.get(), GetSettings());
 
-    file_transfer_analysis_delegate_->UploadData();
+    file_transfer_analysis_delegate_->UploadData(run_loop_.QuitClosure());
     RunUntilDone();
   }
 
@@ -1035,6 +1055,58 @@
       file_transfer_analysis_delegate_->GetFilesRequestHandlerForTesting());
 }
 
+TEST_F(FileTransferAnalysisDelegateAuditOnlyTest,
+       SingleFileBlockedDlpReportOnly) {
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_TRANSFER,
+                                      kBlockingScansForDlpAndMalwareReportOnly);
+
+  // For report-only mode, the destination is scanned, because we perform the
+  // scan after a transfer. So we create the file at the destination.
+  std::vector<base::FilePath> paths = CreateFilesForTest(
+      {FILE_PATH_LITERAL("foo.doc")}, destination_directory_url_.path());
+
+  // Mark all files and text with failed scans.
+  std::string scan_id = "scan_id";
+  ContentAnalysisResponse response = FakeContentAnalysisDelegate::DlpResponse(
+      ContentAnalysisResponse::Result::SUCCESS, "rule", TriggeredRule::BLOCK);
+  response.set_request_token(scan_id);
+
+  SetDLPResponse(response);
+
+  storage::FileSystemURL source_url = PathToFileSystemURL(
+      source_directory_url_.path().Append(FILE_PATH_LITERAL("foo.doc")));
+  storage::FileSystemURL destination_url = PathToFileSystemURL(paths[0]);
+
+  // Check reporting.
+  safe_browsing::EventReportValidator validator(cloud_policy_client());
+  validator.ExpectSensitiveDataEvent(
+      /*url*/ "",
+      /*source*/ kSourceVolumeInfo.fs_config_string,
+      /*destination*/ kDestinationVolumeInfo.fs_config_string,
+      /*filename*/ "foo.doc",
+      // printf "content" | sha256sum  |  tr '[:lower:]' '[:upper:]'
+      /*sha*/
+      "ED7002B439E9AC845F22357D822BAC1444730FBDB6016D3EC9432297B9EC9F73",
+      /*trigger*/
+      extensions::SafeBrowsingPrivateEventRouter::kTriggerFileTransfer,
+      /*dlp_verdict*/ response.results()[0],
+      /*mimetype*/ DocMimeTypes(),
+      /*size*/ std::string("content").size(),
+      /*result*/
+      safe_browsing::EventResultToString(safe_browsing::EventResult::ALLOWED),
+      /*username*/ kUserName,
+      /*scan_id*/ scan_id);
+
+  ScanUpload(source_url, destination_url);
+
+  // No checks for GetAnalysisResultAfterScan, because it's not allowed to be
+  // called for report-only mode.
+
+  // Checks that some scanning was performed.
+  EXPECT_TRUE(
+      file_transfer_analysis_delegate_->GetFilesRequestHandlerForTesting());
+}
+
 TEST_F(FileTransferAnalysisDelegateAuditOnlyTest, SingleFileBlockedMalware) {
   std::vector<base::FilePath> paths = CreateFilesForTest(
       {FILE_PATH_LITERAL("foo.doc")}, source_directory_url_.path());
diff --git a/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.cc b/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.cc
index 3678ebc..221b114 100644
--- a/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.cc
+++ b/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.cc
@@ -19,17 +19,13 @@
     storage::FileSystemURL destination_url,
     Profile* profile,
     storage::FileSystemContext* file_system_context,
-    AnalysisSettings settings,
-    base::OnceClosure result_callback)
+    AnalysisSettings settings)
     : FileTransferAnalysisDelegate(access_point,
                                    source_url,
                                    destination_url,
                                    profile,
                                    file_system_context,
-                                   std::move(settings),
-                                   base::DoNothing()) {
-  callback_ = std::move(result_callback);
-}
+                                   std::move(settings)) {}
 
 MockFileTransferAnalysisDelegate::~MockFileTransferAnalysisDelegate() = default;
 
diff --git a/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.h b/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.h
index dfd9c95..9efa672 100644
--- a/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.h
+++ b/chrome/browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.h
@@ -22,22 +22,16 @@
       storage::FileSystemURL destination_url,
       Profile* profile,
       storage::FileSystemContext* file_system_context,
-      AnalysisSettings settings,
-      base::OnceClosure result_callback);
+      AnalysisSettings settings);
 
   ~MockFileTransferAnalysisDelegate() override;
 
-  MOCK_METHOD(void, UploadData, (), (override));
+  MOCK_METHOD(void, UploadData, (base::OnceClosure callback), (override));
 
   MOCK_METHOD(FileTransferAnalysisResult,
               GetAnalysisResultAfterScan,
               (storage::FileSystemURL url),
               (override));
-
-  void RunCallback() { std::move(callback_).Run(); }
-
- private:
-  base::OnceClosure callback_;
 };
 
 }  // namespace enterprise_connectors
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 589dc1f..e5f9deba7 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
@@ -720,9 +720,9 @@
   std::vector<uint8_t> value;
   EXPECT_CALL(*chrc0_, ReadRemoteCharacteristic_(_))
       .Times(2)
-      .WillOnce(
-          InvokeCallbackArgument<0>(BluetoothGattService::GATT_ERROR_FAILED,
-                                    /*value=*/std::vector<uint8_t>()))
+      .WillOnce(InvokeCallbackArgument<0>(
+          BluetoothGattService::GattErrorCode::kFailed,
+          /*value=*/std::vector<uint8_t>()))
       .WillOnce(InvokeCallbackArgument<0>(absl::nullopt, value));
 
   ExtensionTestMessageListener listener("ready", ReplyBehavior::kWillReply);
@@ -763,8 +763,8 @@
   std::vector<uint8_t> write_value;
   EXPECT_CALL(*chrc0_, DeprecatedWriteRemoteCharacteristic_(_, _, _))
       .Times(2)
-      .WillOnce(
-          InvokeCallbackArgument<2>(BluetoothGattService::GATT_ERROR_FAILED))
+      .WillOnce(InvokeCallbackArgument<2>(
+          BluetoothGattService::GattErrorCode::kFailed))
       .WillOnce(DoAll(SaveArg<0>(&write_value), InvokeCallbackArgument<1>()));
 
   EXPECT_CALL(*chrc0_, GetValue()).Times(1).WillOnce(ReturnRef(write_value));
@@ -988,26 +988,26 @@
   std::vector<uint8_t> value;
   EXPECT_CALL(*desc0_, ReadRemoteDescriptor_(_))
       .Times(8)
-      .WillOnce(
-          InvokeCallbackArgument<0>(BluetoothGattService::GATT_ERROR_FAILED,
-                                    /*value=*/std::vector<uint8_t>()))
       .WillOnce(InvokeCallbackArgument<0>(
-          BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+          BluetoothGattService::GattErrorCode::kFailed,
           /*value=*/std::vector<uint8_t>()))
       .WillOnce(InvokeCallbackArgument<0>(
-          BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
+          BluetoothGattService::GattErrorCode::kInvalidLength,
           /*value=*/std::vector<uint8_t>()))
       .WillOnce(InvokeCallbackArgument<0>(
-          BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED,
-          /*value=*/std::vector<uint8_t>()))
-      .WillOnce(
-          InvokeCallbackArgument<0>(BluetoothGattService::GATT_ERROR_NOT_PAIRED,
-                                    /*value=*/std::vector<uint8_t>()))
-      .WillOnce(InvokeCallbackArgument<0>(
-          BluetoothGattService::GATT_ERROR_NOT_SUPPORTED,
+          BluetoothGattService::GattErrorCode::kNotPermitted,
           /*value=*/std::vector<uint8_t>()))
       .WillOnce(InvokeCallbackArgument<0>(
-          BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+          BluetoothGattService::GattErrorCode::kNotAuthorized,
+          /*value=*/std::vector<uint8_t>()))
+      .WillOnce(InvokeCallbackArgument<0>(
+          BluetoothGattService::GattErrorCode::kNotPaired,
+          /*value=*/std::vector<uint8_t>()))
+      .WillOnce(InvokeCallbackArgument<0>(
+          BluetoothGattService::GattErrorCode::kNotSupported,
+          /*value=*/std::vector<uint8_t>()))
+      .WillOnce(InvokeCallbackArgument<0>(
+          BluetoothGattService::GattErrorCode::kInProgress,
           /*value=*/std::vector<uint8_t>()))
       .WillOnce(InvokeCallbackArgument<0>(/*error_code=*/absl::nullopt, value));
 
@@ -1055,8 +1055,8 @@
   std::vector<uint8_t> write_value;
   EXPECT_CALL(*desc0_, WriteRemoteDescriptor_(_, _, _))
       .Times(2)
-      .WillOnce(
-          InvokeCallbackArgument<2>(BluetoothGattService::GATT_ERROR_FAILED))
+      .WillOnce(InvokeCallbackArgument<2>(
+          BluetoothGattService::GattErrorCode::kFailed))
       .WillOnce(DoAll(SaveArg<0>(&write_value), InvokeCallbackArgument<1>()));
 
   EXPECT_CALL(*desc0_, GetValue()).Times(1).WillOnce(ReturnRef(write_value));
@@ -1307,8 +1307,8 @@
 
   EXPECT_CALL(*chrc0_, StartNotifySession_(_, _))
       .Times(2)
-      .WillOnce(
-          InvokeCallbackArgument<1>(BluetoothGattService::GATT_ERROR_FAILED))
+      .WillOnce(InvokeCallbackArgument<1>(
+          BluetoothGattService::GattErrorCode::kFailed))
       .WillOnce(InvokeCallbackWithScopedPtrArg<0, BluetoothGattNotifySession>(
           session0));
   EXPECT_CALL(*chrc1_, StartNotifySession_(_, _))
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
index 832fb8c3..acba245 100644
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -95,7 +95,6 @@
     &autofill::features::kAutofillRefreshStyleAndroid,
     &autofill::features::kAutofillEnableSupportForHonorificPrefixes,
     &autofill::features::kAutofillEnableSupportForMoreStructureInAddresses,
-    &autofill::features::kAutofillEnableSupportForMoreStructureInNames,
     &autofill::features::kAutofillEnableUpdateVirtualCardEnrollment,
     &autofill::features::kAutofillEnableVirtualCardMetadata,
     &blink::features::kPrerender2,
@@ -450,533 +449,684 @@
 
 // Alphabetical:
 
-const base::Feature kAdaptiveButtonInTopToolbar{
-    "AdaptiveButtonInTopToolbar", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAdaptiveButtonInTopToolbar,
+             "AdaptiveButtonInTopToolbar",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
-    "AdaptiveButtonInTopToolbarCustomizationV2",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAdaptiveButtonInTopToolbarCustomizationV2,
+             "AdaptiveButtonInTopToolbarCustomizationV2",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kAddToHomescreenIPH{"AddToHomescreenIPH",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAddToHomescreenIPH,
+             "AddToHomescreenIPH",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAllowNewIncognitoTabIntents{
-    "AllowNewIncognitoTabIntents", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAllowNewIncognitoTabIntents,
+             "AllowNewIncognitoTabIntents",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kFocusOmniboxInIncognitoTabIntents{
-    "FocusOmniboxInIncognitoTabIntents", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kFocusOmniboxInIncognitoTabIntents,
+             "FocusOmniboxInIncognitoTabIntents",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kAndroidScrollOptimizations{
-    "AndroidScrollOptimizations", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAndroidScrollOptimizations,
+             "AndroidScrollOptimizations",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kAndroidSearchEngineChoiceNotification{
-    "AndroidSearchEngineChoiceNotification", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAndroidSearchEngineChoiceNotification,
+             "AndroidSearchEngineChoiceNotification",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kAssistantConsentModal{"AssistantConsentModal",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAssistantConsentModal,
+             "AssistantConsentModal",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAssistantConsentSimplifiedText{
-    "AssistantConsentSimplifiedText", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAssistantConsentSimplifiedText,
+             "AssistantConsentSimplifiedText",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAssistantConsentV2{"AssistantConsentV2",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAssistantConsentV2,
+             "AssistantConsentV2",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAssistantIntentExperimentId{
-    "AssistantIntentExperimentId", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAssistantIntentExperimentId,
+             "AssistantIntentExperimentId",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAssistantIntentPageUrl{"AssistantIntentPageUrl",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAssistantIntentPageUrl,
+             "AssistantIntentPageUrl",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAssistantIntentTranslateInfo{
-    "AssistantIntentTranslateInfo", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAssistantIntentTranslateInfo,
+             "AssistantIntentTranslateInfo",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAssistantNonPersonalizedVoiceSearch{
-    "AssistantNonPersonalizedVoiceSearch", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAssistantNonPersonalizedVoiceSearch,
+             "AssistantNonPersonalizedVoiceSearch",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAppLaunchpad{"AppLaunchpad",
-                                  base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAppLaunchpad, "AppLaunchpad", base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAppMenuMobileSiteOption,
+             "AppMenuMobileSiteOption",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kAppToWebAttribution{"AppToWebAttribution",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAppToWebAttribution,
+             "AppToWebAttribution",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kBackgroundThreadPool{"BackgroundThreadPool",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBackgroundThreadPool,
+             "BackgroundThreadPool",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kBulkTabRestore{"BulkTabRestore",
-                                    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kBulkTabRestore,
+             "BulkTabRestore",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kConditionalTabStripAndroid{
-    "ConditionalTabStripAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kConditionalTabStripAndroid,
+             "ConditionalTabStripAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Used in downstream code.
-const base::Feature kCastDeviceFilter{"CastDeviceFilter",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCastDeviceFilter,
+             "CastDeviceFilter",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kClearOmniboxFocusAfterNavigation{
-    "ClearOmniboxFocusAfterNavigation", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kClearOmniboxFocusAfterNavigation,
+             "ClearOmniboxFocusAfterNavigation",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCloseTabSuggestions{"CloseTabSuggestions",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCloseTabSuggestions,
+             "CloseTabSuggestions",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCriticalPersistedTabData{
-    "CriticalPersistedTabData", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCriticalPersistedTabData,
+             "CriticalPersistedTabData",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCommerceCoupons{"CommerceCoupons",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCommerceCoupons,
+             "CommerceCoupons",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTBackgroundTab{"CCTBackgroundTab",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTBackgroundTab,
+             "CCTBackgroundTab",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTBrandTransparency{"CCTBrandTransparency",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTBrandTransparency,
+             "CCTBrandTransparency",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTClientDataHeader{"CCTClientDataHeader",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTClientDataHeader,
+             "CCTClientDataHeader",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTNewDownloadTab{"CCTNewDownloadTab",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTNewDownloadTab,
+             "CCTNewDownloadTab",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTIncognito{"CCTIncognito",
-                                  base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTIncognito, "CCTIncognito", base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTIncognitoAvailableToThirdParty{
-    "CCTIncognitoAvailableToThirdParty", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTIncognitoAvailableToThirdParty,
+             "CCTIncognitoAvailableToThirdParty",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTPackageNameRecording{"CCTPackageNameRecording",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTPackageNameRecording,
+             "CCTPackageNameRecording",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTPostMessageAPI{"CCTPostMessageAPI",
-                                       base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTPostMessageAPI,
+             "CCTPostMessageAPI",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTRealTimeEngagementSignals{
-    "CCTRealTimeEngagementSignals", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTRealTimeEngagementSignals,
+             "CCTRealTimeEngagementSignals",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTRedirectPreconnect{"CCTRedirectPreconnect",
-                                           base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTRedirectPreconnect,
+             "CCTRedirectPreconnect",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTRemoveRemoteViewIds{"CCTRemoveRemoteViewIds",
-                                            base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTRemoveRemoteViewIds,
+             "CCTRemoveRemoteViewIds",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTReportParallelRequestStatus{
-    "CCTReportParallelRequestStatus", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTReportParallelRequestStatus,
+             "CCTReportParallelRequestStatus",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTResizable90MaximumHeight{
-    "CCTResizable90MaximumHeight", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTResizable90MaximumHeight,
+             "CCTResizable90MaximumHeight",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTResizableAllowResizeByUserGesture{
-    "CCTResizableAllowResizeByUserGesture", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTResizableAllowResizeByUserGesture,
+             "CCTResizableAllowResizeByUserGesture",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTResizableForFirstParties{
-    "CCTResizableForFirstParties", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTResizableForFirstParties,
+             "CCTResizableForFirstParties",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTResizableForThirdParties{
-    "CCTResizableForThirdParties", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTResizableForThirdParties,
+             "CCTResizableForThirdParties",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCCTResizableWindowAboveNavbar{
-    "CCTResizableWindowAboveNavbar", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTResizableWindowAboveNavbar,
+             "CCTResizableWindowAboveNavbar",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTResourcePrefetch{"CCTResourcePrefetch",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTResourcePrefetch,
+             "CCTResourcePrefetch",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTRetainingState{"CCTRetainingState",
-                                       base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTRetainingState,
+             "CCTRetainingState",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCCTToolbarCustomizations{"CCTToolbarCustomizations",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCCTToolbarCustomizations,
+             "CCTToolbarCustomizations",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDontAutoHideBrowserControls{
-    "DontAutoHideBrowserControls", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDontAutoHideBrowserControls,
+             "DontAutoHideBrowserControls",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kCacheDeprecatedSystemLocationSetting{
-    "CacheDeprecatedSystemLocationSetting", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCacheDeprecatedSystemLocationSetting,
+             "CacheDeprecatedSystemLocationSetting",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kChromeNewDownloadTab{"ChromeNewDownloadTab",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeNewDownloadTab,
+             "ChromeNewDownloadTab",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kChromeShareLongScreenshot{
-    "ChromeShareLongScreenshot", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeShareLongScreenshot,
+             "ChromeShareLongScreenshot",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kChromeSharingHub{"ChromeSharingHub",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeSharingHub,
+             "ChromeSharingHub",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kChromeSharingHubLaunchAdjacent{
-    "ChromeSharingHubLaunchAdjacent", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeSharingHubLaunchAdjacent,
+             "ChromeSharingHubLaunchAdjacent",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kChromeSurveyNextAndroid{"ChromeSurveyNextAndroid",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeSurveyNextAndroid,
+             "ChromeSurveyNextAndroid",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kCommandLineOnNonRooted{"CommandLineOnNonRooted",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCommandLineOnNonRooted,
+             "CommandLineOnNonRooted",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextMenuEnableLensShoppingAllowlist{
-    "ContextMenuEnableLensShoppingAllowlist",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextMenuEnableLensShoppingAllowlist,
+             "ContextMenuEnableLensShoppingAllowlist",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextMenuGoogleLensChip{
-    "ContextMenuGoogleLensChip", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextMenuGoogleLensChip,
+             "ContextMenuGoogleLensChip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextMenuPopupStyle{"ContextMenuPopupStyle",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextMenuPopupStyle,
+             "ContextMenuPopupStyle",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextMenuSearchWithGoogleLens{
-    "ContextMenuSearchWithGoogleLens", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kContextMenuSearchWithGoogleLens,
+             "ContextMenuSearchWithGoogleLens",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kContextMenuShopWithGoogleLens{
-    "ContextMenuShopWithGoogleLens", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextMenuShopWithGoogleLens,
+             "ContextMenuShopWithGoogleLens",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextMenuSearchAndShopWithGoogleLens{
-    "ContextMenuSearchAndShopWithGoogleLens",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextMenuSearchAndShopWithGoogleLens,
+             "ContextMenuSearchAndShopWithGoogleLens",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextMenuTranslateWithGoogleLens{
-    "ContextMenuTranslateWithGoogleLens", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextMenuTranslateWithGoogleLens,
+             "ContextMenuTranslateWithGoogleLens",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kLensCameraAssistedSearch{"LensCameraAssistedSearch",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kLensCameraAssistedSearch,
+             "LensCameraAssistedSearch",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kLensOnQuickActionSearchWidget{
-    "LensOnQuickActionSearchWidget", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kLensOnQuickActionSearchWidget,
+             "LensOnQuickActionSearchWidget",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kContextualSearchDelayedIntelligence{
-    "ContextualSearchDelayedIntelligence", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualSearchDelayedIntelligence,
+             "ContextualSearchDelayedIntelligence",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextualSearchDisableOnlineDetection{
-    "ContextualSearchDisableOnlineDetection",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualSearchDisableOnlineDetection,
+             "ContextualSearchDisableOnlineDetection",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextualSearchForceCaption{
-    "ContextualSearchForceCaption", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualSearchForceCaption,
+             "ContextualSearchForceCaption",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextualSearchSuppressShortView{
-    "ContextualSearchSuppressShortView", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualSearchSuppressShortView,
+             "ContextualSearchSuppressShortView",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextualSearchThinWebViewImplementation{
-    "ContextualSearchThinWebViewImplementation",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualSearchThinWebViewImplementation,
+             "ContextualSearchThinWebViewImplementation",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextualTriggersSelectionHandles{
-    "ContextualTriggersSelectionHandles", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualTriggersSelectionHandles,
+             "ContextualTriggersSelectionHandles",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextualTriggersSelectionMenu{
-    "ContextualTriggersSelectionMenu", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualTriggersSelectionMenu,
+             "ContextualTriggersSelectionMenu",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kContextualTriggersSelectionSize{
-    "ContextualTriggersSelectionSize", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kContextualTriggersSelectionSize,
+             "ContextualTriggersSelectionSize",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kDirectActions{"DirectActions",
-                                   base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDirectActions, "DirectActions", base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDisableCompositedProgressBar{
-    "DisableCompositedProgressBar", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDisableCompositedProgressBar,
+             "DisableCompositedProgressBar",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kDownloadAutoResumptionThrottling{
-    "DownloadAutoResumptionThrottling", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadAutoResumptionThrottling,
+             "DownloadAutoResumptionThrottling",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-extern const base::Feature kDownloadHomeForExternalApp{
-    "DownloadHomeForExternalApp", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadHomeForExternalApp,
+             "DownloadHomeForExternalApp",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDownloadFileProvider{"DownloadFileProvider",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadFileProvider,
+             "DownloadFileProvider",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDownloadNotificationBadge{
-    "DownloadNotificationBadge", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadNotificationBadge,
+             "DownloadNotificationBadge",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDownloadRename{"DownloadRename",
-                                    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDownloadRename,
+             "DownloadRename",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDuetTabStripIntegrationAndroid{
-    "DuetTabStripIntegrationAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDuetTabStripIntegrationAndroid,
+             "DuetTabStripIntegrationAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kExperimentsForAgsa{"ExperimentsForAgsa",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kExperimentsForAgsa,
+             "ExperimentsForAgsa",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kExploreSites{"ExploreSites",
-                                  base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kExploreSites, "ExploreSites", base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kGridTabSwitcherForTablets{
-    "GridTabSwitcherForTablets", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kGridTabSwitcherForTablets,
+             "GridTabSwitcherForTablets",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kHandleMediaIntents{"HandleMediaIntents",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kHandleMediaIntents,
+             "HandleMediaIntents",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kImmersiveUiMode{"ImmersiveUiMode",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kImmersiveUiMode,
+             "ImmersiveUiMode",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kIncognitoReauthenticationForAndroid{
-    "IncognitoReauthenticationForAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIncognitoReauthenticationForAndroid,
+             "IncognitoReauthenticationForAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIncognitoScreenshot,
+             "IncognitoScreenshot",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kInfobarScrollOptimization{
-    "InfobarScrollOptimization", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kInfobarScrollOptimization,
+             "InfobarScrollOptimization",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kInstantStart{"InstantStart",
-                                  base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kInstantStart, "InstantStart", base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kIsVoiceSearchEnabledCache{
-    "IsVoiceSearchEnabledCache", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIsVoiceSearchEnabledCache,
+             "IsVoiceSearchEnabledCache",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kKitKatSupported{"KitKatSupported",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kKitKatSupported,
+             "KitKatSupported",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSearchEnginePromoExistingDevice{
-    "SearchEnginePromo.ExistingDevice", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSearchEnginePromoExistingDevice,
+             "SearchEnginePromo.ExistingDevice",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSearchEnginePromoExistingDeviceV2{
-    "SearchEnginePromo.ExistingDeviceVer2", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSearchEnginePromoExistingDeviceV2,
+             "SearchEnginePromo.ExistingDeviceVer2",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSearchEnginePromoNewDevice{
-    "SearchEnginePromo.NewDevice", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSearchEnginePromoNewDevice,
+             "SearchEnginePromo.NewDevice",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSearchEnginePromoNewDeviceV2{
-    "SearchEnginePromo.NewDeviceVer2", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSearchEnginePromoNewDeviceV2,
+             "SearchEnginePromo.NewDeviceVer2",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kMostRecentTabOnBackgroundCloseTab{
-    "MostRecentTabOnBackgroundCloseTab", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kMostRecentTabOnBackgroundCloseTab,
+             "MostRecentTabOnBackgroundCloseTab",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kNewInstanceFromDraggedLink{
-    "NewInstanceFromDraggedLink", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kNewInstanceFromDraggedLink,
+             "NewInstanceFromDraggedLink",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kNewTabPageTilesTitleWrapAround{
-    "NewTabPageTilesTitleWrapAround", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kNewTabPageTilesTitleWrapAround,
+             "NewTabPageTilesTitleWrapAround",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kNewWindowAppMenu{"NewWindowAppMenu",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kNewWindowAppMenu,
+             "NewWindowAppMenu",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kNotificationPermissionVariant{
-    "NotificationPermissionVariant", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kNotificationPermissionVariant,
+             "NotificationPermissionVariant",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kInstanceSwitcher{"InstanceSwitcher",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kInstanceSwitcher,
+             "InstanceSwitcher",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kPageAnnotationsService{"PageAnnotationsService",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPageAnnotationsService,
+             "PageAnnotationsService",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kBookmarksImprovedSaveFlow{
-    "BookmarksImprovedSaveFlow", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBookmarksImprovedSaveFlow,
+             "BookmarksImprovedSaveFlow",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kBookmarksRefresh{"BookmarksRefresh",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBookmarksRefresh,
+             "BookmarksRefresh",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kBackGestureRefactorAndroid{
-    "BackGestureRefactorAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBackGestureRefactorAndroid,
+             "BackGestureRefactorAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kOmahaMinSdkVersionAndroid{
-    "OmahaMinSdkVersionAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOmahaMinSdkVersionAndroid,
+             "OmahaMinSdkVersionAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kOmniboxModernizeVisualUpdate{
-    "OmniboxModernizeVisualUpdate", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOmniboxModernizeVisualUpdate,
+             "OmniboxModernizeVisualUpdate",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kOptimizeGeolocationHeaderGeneration{
-    "OptimizeGeolocationHeaderGeneration", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOptimizeGeolocationHeaderGeneration,
+             "OptimizeGeolocationHeaderGeneration",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kOSKResizesVisualViewport{
-    "OSKResizesVisualViewport", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOSKResizesVisualViewport,
+             "OSKResizesVisualViewport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kOptimizeLayoutsForPullRefresh{
-    "OptimizeLayoutsForPullRefresh", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOptimizeLayoutsForPullRefresh,
+             "OptimizeLayoutsForPullRefresh",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kPostTaskFocusTab{"PostTaskFocusTab",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPostTaskFocusTab,
+             "PostTaskFocusTab",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kProbabilisticCryptidRenderer{
-    "ProbabilisticCryptidRenderer", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kProbabilisticCryptidRenderer,
+             "ProbabilisticCryptidRenderer",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kReachedCodeProfiler{"ReachedCodeProfiler",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kReachedCodeProfiler,
+             "ReachedCodeProfiler",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kReaderModeInCCT{"ReaderModeInCCT",
-                                     base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kReaderModeInCCT,
+             "ReaderModeInCCT",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kReengagementNotification{
-    "ReengagementNotification", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kReengagementNotification,
+             "ReengagementNotification",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRelatedSearches{"RelatedSearches",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRelatedSearches,
+             "RelatedSearches",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRelatedSearchesAlternateUx{
-    "RelatedSearchesAlternateUx", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRelatedSearchesAlternateUx,
+             "RelatedSearchesAlternateUx",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRelatedSearchesInBar{"RelatedSearchesInBar",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRelatedSearchesInBar,
+             "RelatedSearchesInBar",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRelatedSearchesSimplifiedUx{
-    "RelatedSearchesSimplifiedUx", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRelatedSearchesSimplifiedUx,
+             "RelatedSearchesSimplifiedUx",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRelatedSearchesUi{"RelatedSearchesUi",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRelatedSearchesUi,
+             "RelatedSearchesUi",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRequestDesktopSiteDefaults{
-    "RequestDesktopSiteDefaults", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRequestDesktopSiteDefaults,
+             "RequestDesktopSiteDefaults",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRequestDesktopSiteDefaultsSynthetic{
-    "RequestDesktopSiteDefaults_Synthetic", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRequestDesktopSiteDefaultsSynthetic,
+             "RequestDesktopSiteDefaults_Synthetic",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRequestDesktopSiteDefaultsControl{
-    "RequestDesktopSiteDefaultsControl", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRequestDesktopSiteDefaultsControl,
+             "RequestDesktopSiteDefaultsControl",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRequestDesktopSiteDefaultsControlSynthetic{
-    "RequestDesktopSiteDefaultsControl_Synthetic",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRequestDesktopSiteDefaultsControlSynthetic,
+             "RequestDesktopSiteDefaultsControl_Synthetic",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kRequestDesktopSiteDefaultsDowngrade{
-    "RequestDesktopSiteDefaultsDowngrade", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRequestDesktopSiteDefaultsDowngrade,
+             "RequestDesktopSiteDefaultsDowngrade",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSafeModeForCachedFlags{"SafeModeForCachedFlags",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSafeModeForCachedFlags,
+             "SafeModeForCachedFlags",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kShareButtonInTopToolbar{"ShareButtonInTopToolbar",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kShareButtonInTopToolbar,
+             "ShareButtonInTopToolbar",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kShowScrollableMVTOnNTPAndroid{
-    "ShowScrollableMVTOnNTPAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kShowScrollableMVTOnNTPAndroid,
+             "ShowScrollableMVTOnNTPAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSpannableInlineAutocomplete{
-    "SpannableInlineAutocomplete", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSpannableInlineAutocomplete,
+             "SpannableInlineAutocomplete",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSpecialLocaleWrapper{"SpecialLocaleWrapper",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSpecialLocaleWrapper,
+             "SpecialLocaleWrapper",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSpecialUserDecision{"SpecialUserDecision",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSpecialUserDecision,
+             "SpecialUserDecision",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSplitCompositorTask{"SplitCompositorTask",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSplitCompositorTask,
+             "SplitCompositorTask",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kStoreHoursAndroid{"StoreHoursAndroid",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kStoreHoursAndroid,
+             "StoreHoursAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSuppressToolbarCaptures{"SuppressToolbarCaptures",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSuppressToolbarCaptures,
+             "SuppressToolbarCaptures",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSwapPixelFormatToFixConvertFromTranslucent{
-    "SwapPixelFormatToFixConvertFromTranslucent",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSwapPixelFormatToFixConvertFromTranslucent,
+             "SwapPixelFormatToFixConvertFromTranslucent",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kTabEngagementReportingAndroid{
-    "TabEngagementReportingAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabEngagementReportingAndroid,
+             "TabEngagementReportingAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTabGroupsAndroid{"TabGroupsAndroid",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabGroupsAndroid,
+             "TabGroupsAndroid",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kTabGroupsContinuationAndroid{
-    "TabGroupsContinuationAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabGroupsContinuationAndroid,
+             "TabGroupsContinuationAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTabGroupsUiImprovementsAndroid{
-    "TabGroupsUiImprovementsAndroid", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabGroupsUiImprovementsAndroid,
+             "TabGroupsUiImprovementsAndroid",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kTabGroupsForTablets{"TabGroupsForTablets",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabGroupsForTablets,
+             "TabGroupsForTablets",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTabGridLayoutAndroid{"TabGridLayoutAndroid",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabGridLayoutAndroid,
+             "TabGridLayoutAndroid",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kTabReparenting{"TabReparenting",
-                                    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabReparenting,
+             "TabReparenting",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kTabSelectionEditorV2{"TabSelectionEditorV2",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabSelectionEditorV2,
+             "TabSelectionEditorV2",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTabStripImprovements{"TabStripImprovements",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabStripImprovements,
+             "TabStripImprovements",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDiscoverFeedMultiColumn{"DiscoverFeedMultiColumn",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDiscoverFeedMultiColumn,
+             "DiscoverFeedMultiColumn",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTabSwitcherOnReturn{"TabSwitcherOnReturn",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabSwitcherOnReturn,
+             "TabSwitcherOnReturn",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kTabToGTSAnimation{"TabToGTSAnimation",
-                                       base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabToGTSAnimation,
+             "TabToGTSAnimation",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kTestDefaultDisabled{"TestDefaultDisabled",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTestDefaultDisabled,
+             "TestDefaultDisabled",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTestDefaultEnabled{"TestDefaultEnabled",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTestDefaultEnabled,
+             "TestDefaultEnabled",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kToolbarMicIphAndroid{"ToolbarMicIphAndroid",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kToolbarMicIphAndroid,
+             "ToolbarMicIphAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kToolbarPhoneOptimizations{
-    "ToolbarPhoneOptimizations", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kToolbarPhoneOptimizations,
+             "ToolbarPhoneOptimizations",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kToolbarScrollAblationAndroid{
-    "ToolbarScrollAblationAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kToolbarScrollAblationAndroid,
+             "ToolbarScrollAblationAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTrustedWebActivityPostMessage{
-    "TrustedWebActivityPostMessage", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTrustedWebActivityPostMessage,
+             "TrustedWebActivityPostMessage",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTrustedWebActivityQualityEnforcement{
-    "TrustedWebActivityQualityEnforcement", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTrustedWebActivityQualityEnforcement,
+             "TrustedWebActivityQualityEnforcement",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTrustedWebActivityQualityEnforcementForced{
-    "TrustedWebActivityQualityEnforcementForced",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTrustedWebActivityQualityEnforcementForced,
+             "TrustedWebActivityQualityEnforcementForced",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTrustedWebActivityQualityEnforcementWarning{
-    "TrustedWebActivityQualityEnforcementWarning",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTrustedWebActivityQualityEnforcementWarning,
+             "TrustedWebActivityQualityEnforcementWarning",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kShowExtendedPreloadingSetting{
-    "ShowExtendedPreloadingSetting", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kShowExtendedPreloadingSetting,
+             "ShowExtendedPreloadingSetting",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kStartSurfaceAndroid{"StartSurfaceAndroid",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kStartSurfaceAndroid,
+             "StartSurfaceAndroid",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kFeedPositionAndroid{"FeedPositionAndroid",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kFeedPositionAndroid,
+             "FeedPositionAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSearchResumptionModuleAndroid{
-    "SearchResumptionModuleAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSearchResumptionModuleAndroid,
+             "SearchResumptionModuleAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kStartSurfaceReturnTime{"StartSurfaceReturnTime",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kStartSurfaceReturnTime,
+             "StartSurfaceReturnTime",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kStartSurfaceRefactor{"StartSurfaceRefactor",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kStartSurfaceRefactor,
+             "StartSurfaceRefactor",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kStartSurfaceDisabledFeedImprovement{
-    "StartSurfaceDisabledFeedImprovement", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kStartSurfaceDisabledFeedImprovement,
+             "StartSurfaceDisabledFeedImprovement",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, keep logging and reporting UMA while chrome is backgrounded.
-const base::Feature kUmaBackgroundSessions{"UMABackgroundSessions",
-                                           base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUmaBackgroundSessions,
+             "UMABackgroundSessions",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kUpdateHistoryEntryPointsInIncognito{
-    "UpdateHistoryEntryPointsInIncognito", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUpdateHistoryEntryPointsInIncognito,
+             "UpdateHistoryEntryPointsInIncognito",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kUpdateNotificationScheduleServiceImmediateShowOption{
-    "UpdateNotificationScheduleServiceImmediateShowOption",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUpdateNotificationScheduleServiceImmediateShowOption,
+             "UpdateNotificationScheduleServiceImmediateShowOption",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kUserMediaScreenCapturing{
-    "UserMediaScreenCapturing", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUserMediaScreenCapturing,
+             "UserMediaScreenCapturing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kVoiceSearchAudioCapturePolicy{
-    "VoiceSearchAudioCapturePolicy", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVoiceSearchAudioCapturePolicy,
+             "VoiceSearchAudioCapturePolicy",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kVoiceButtonInTopToolbar{"VoiceButtonInTopToolbar",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVoiceButtonInTopToolbar,
+             "VoiceButtonInTopToolbar",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kVrBrowsingFeedback{"VrBrowsingFeedback",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kVrBrowsingFeedback,
+             "VrBrowsingFeedback",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Shows only the remote device name on the Android notification instead of
 // a descriptive text.
-const base::Feature kWebOtpCrossDeviceSimpleString{
-    "WebOtpCrossDeviceSimpleString", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kWebOtpCrossDeviceSimpleString,
+             "WebOtpCrossDeviceSimpleString",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the Chrome Android WebAPK-install service.
-const base::Feature kWebApkInstallService{"WebApkInstallService",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kWebApkInstallService,
+             "WebApkInstallService",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kWebApkTrampolineOnInitialIntent{
-    "WebApkTrampolineOnInitialIntent", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kWebApkTrampolineOnInitialIntent,
+             "WebApkTrampolineOnInitialIntent",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 static jboolean JNI_ChromeFeatureList_IsEnabled(
     JNIEnv* env,
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
index c6f63414..68b5518c 100644
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -13,186 +13,185 @@
 namespace android {
 
 // Alphabetical:
-extern const base::Feature kAdaptiveButtonInTopToolbar;
-extern const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2;
-extern const base::Feature kAddToHomescreenIPH;
-extern const base::Feature kAllowNewIncognitoTabIntents;
-extern const base::Feature kAndroidScrollOptimizations;
-extern const base::Feature kAndroidSearchEngineChoiceNotification;
-extern const base::Feature kAssistantConsentModal;
-extern const base::Feature kAssistantConsentSimplifiedText;
-extern const base::Feature kAssistantConsentV2;
-extern const base::Feature kAssistantIntentExperimentId;
-extern const base::Feature kAssistantIntentPageUrl;
-extern const base::Feature kAssistantIntentTranslateInfo;
-extern const base::Feature kAssistantNonPersonalizedVoiceSearch;
-extern const base::Feature kAppLaunchpad;
-extern const base::Feature kAppMenuMobileSiteOption;
-extern const base::Feature kAppToWebAttribution;
-extern const base::Feature kBackgroundThreadPool;
-extern const base::Feature kBulkTabRestore;
-extern const base::Feature kClearOmniboxFocusAfterNavigation;
-extern const base::Feature kCloseTabSuggestions;
-extern const base::Feature kCriticalPersistedTabData;
-extern const base::Feature kCommerceCoupons;
-extern const base::Feature kCastDeviceFilter;
-extern const base::Feature kCCTBackgroundTab;
-extern const base::Feature kCCTBrandTransparency;
-extern const base::Feature kCCTClientDataHeader;
-extern const base::Feature kCCTIncognito;
-extern const base::Feature kCCTIncognitoAvailableToThirdParty;
-extern const base::Feature kCCTNewDownloadTab;
-extern const base::Feature kCCTPackageNameRecording;
-extern const base::Feature kCCTPostMessageAPI;
-extern const base::Feature kCCTRealTimeEngagementSignals;
-extern const base::Feature kCCTRedirectPreconnect;
-extern const base::Feature kCCTRemoveRemoteViewIds;
-extern const base::Feature kCCTReportParallelRequestStatus;
-extern const base::Feature kCCTResizable90MaximumHeight;
-extern const base::Feature kCCTResizableAllowResizeByUserGesture;
-extern const base::Feature kCCTResizableForFirstParties;
-extern const base::Feature kCCTResizableForThirdParties;
-extern const base::Feature kCCTResizableWindowAboveNavbar;
-extern const base::Feature kCCTResourcePrefetch;
-extern const base::Feature kCCTRetainingState;
-extern const base::Feature kCCTToolbarCustomizations;
-extern const base::Feature kDontAutoHideBrowserControls;
-extern const base::Feature kCacheDeprecatedSystemLocationSetting;
-extern const base::Feature kChromeNewDownloadTab;
-extern const base::Feature kChromeShareLongScreenshot;
-extern const base::Feature kChromeShareScreenshot;
-extern const base::Feature kChromeSharingHub;
-extern const base::Feature kChromeSharingHubLaunchAdjacent;
-extern const base::Feature kChromeSurveyNextAndroid;
-extern const base::Feature kCommandLineOnNonRooted;
-extern const base::Feature kConditionalTabStripAndroid;
-extern const base::Feature kContextMenuEnableLensShoppingAllowlist;
-extern const base::Feature kContextMenuGoogleLensChip;
-extern const base::Feature kContextMenuPerformanceInfo;
-extern const base::Feature kContextMenuPopupStyle;
-extern const base::Feature kContextMenuSearchWithGoogleLens;
-extern const base::Feature kContextMenuShopWithGoogleLens;
-extern const base::Feature kContextMenuSearchAndShopWithGoogleLens;
-extern const base::Feature kContextMenuTranslateWithGoogleLens;
-extern const base::Feature kContextualSearchDelayedIntelligence;
-extern const base::Feature kContextualSearchDisableOnlineDetection;
-extern const base::Feature kContextualSearchForceCaption;
-extern const base::Feature kContextualSearchSuppressShortView;
-extern const base::Feature kContextualSearchThinWebViewImplementation;
-extern const base::Feature kContextualTriggersSelectionHandles;
-extern const base::Feature kContextualTriggersSelectionMenu;
-extern const base::Feature kContextualTriggersSelectionSize;
-extern const base::Feature kDirectActions;
-extern const base::Feature kDisableCompositedProgressBar;
-extern const base::Feature kDontPrefetchLibraries;
-extern const base::Feature kDownloadAutoResumptionThrottling;
-extern const base::Feature kDownloadFileProvider;
-extern const base::Feature kDownloadHomeForExternalApp;
-extern const base::Feature kDownloadNotificationBadge;
-extern const base::Feature kDownloadRename;
-extern const base::Feature kDuetTabStripIntegrationAndroid;
-extern const base::Feature kExperimentsForAgsa;
-extern const base::Feature kExploreSites;
-extern const base::Feature kFocusOmniboxInIncognitoTabIntents;
-extern const base::Feature kGridTabSwitcherForTablets;
-extern const base::Feature kHandleMediaIntents;
-extern const base::Feature kImmersiveUiMode;
-extern const base::Feature kIncognitoReauthenticationForAndroid;
-extern const base::Feature kIncognitoScreenshot;
-extern const base::Feature kInfobarScrollOptimization;
-extern const base::Feature kImprovedA2HS;
-extern const base::Feature kInstanceSwitcher;
-extern const base::Feature kInstantStart;
-extern const base::Feature kIsVoiceSearchEnabledCache;
-extern const base::Feature kKitKatSupported;
-extern const base::Feature kLanguagesPreference;
-extern const base::Feature kLensCameraAssistedSearch;
-extern const base::Feature kLensOnQuickActionSearchWidget;
-extern const base::Feature kLocationBarModelOptimizations;
-extern const base::Feature kMostRecentTabOnBackgroundCloseTab;
-extern const base::Feature kNewInstanceFromDraggedLink;
-extern const base::Feature kNewTabPageTilesTitleWrapAround;
-extern const base::Feature kNewWindowAppMenu;
-extern const base::Feature kNotificationPermissionVariant;
-extern const base::Feature kOmahaMinSdkVersionAndroid;
-extern const base::Feature kOmniboxModernizeVisualUpdate;
-extern const base::Feature kOptimizeGeolocationHeaderGeneration;
-extern const base::Feature kOSKResizesVisualViewport;
-extern const base::Feature kPageAnnotationsService;
-extern const base::Feature kBookmarksImprovedSaveFlow;
-extern const base::Feature kBookmarksRefresh;
-extern const base::Feature kBackGestureRefactorAndroid;
-extern const base::Feature kOptimizeLayoutsForPullRefresh;
-extern const base::Feature kPostTaskFocusTab;
-extern const base::Feature kProbabilisticCryptidRenderer;
-extern const base::Feature kReachedCodeProfiler;
-extern const base::Feature kReengagementNotification;
-extern const base::Feature kReaderModeInCCT;
-extern const base::Feature kRelatedSearches;
-extern const base::Feature kRelatedSearchesAlternateUx;
-extern const base::Feature kRelatedSearchesInBar;
-extern const base::Feature kRelatedSearchesSimplifiedUx;
-extern const base::Feature kRelatedSearchesUi;
-extern const base::Feature kRequestDesktopSiteDefaults;
-extern const base::Feature kRequestDesktopSiteDefaultsSynthetic;
-extern const base::Feature kRequestDesktopSiteDefaultsControl;
-extern const base::Feature kRequestDesktopSiteDefaultsControlSynthetic;
-extern const base::Feature kRequestDesktopSiteDefaultsDowngrade;
-extern const base::Feature kSearchEnginePromoExistingDevice;
-extern const base::Feature kSearchEnginePromoExistingDeviceV2;
-extern const base::Feature kSearchEnginePromoNewDevice;
-extern const base::Feature kSearchEnginePromoNewDeviceV2;
-extern const base::Feature kShareButtonInTopToolbar;
-extern const base::Feature kSharingHubLinkToggle;
-extern const base::Feature kShowScrollableMVTOnNTPAndroid;
-extern const base::Feature kFeedPositionAndroid;
-extern const base::Feature kSafeModeForCachedFlags;
-extern const base::Feature kSearchResumptionModuleAndroid;
-extern const base::Feature kSpannableInlineAutocomplete;
-extern const base::Feature kSpecialLocaleWrapper;
-extern const base::Feature kSpecialUserDecision;
-extern const base::Feature kSplitCompositorTask;
-extern const base::Feature kStoreHoursAndroid;
-extern const base::Feature kSuppressToolbarCaptures;
-extern const base::Feature kSwapPixelFormatToFixConvertFromTranslucent;
-extern const base::Feature kTabEngagementReportingAndroid;
-extern const base::Feature kTabGroupsAndroid;
-extern const base::Feature kTabGroupsContinuationAndroid;
-extern const base::Feature kTabGroupsUiImprovementsAndroid;
-extern const base::Feature kTabGroupsForTablets;
-extern const base::Feature kTabGridLayoutAndroid;
-extern const base::Feature kTabReparenting;
-extern const base::Feature kTabSelectionEditorV2;
-extern const base::Feature kTabStripImprovements;
-extern const base::Feature kDiscoverFeedMultiColumn;
-extern const base::Feature kTabSwitcherOnReturn;
-extern const base::Feature kTabToGTSAnimation;
-extern const base::Feature kTestDefaultDisabled;
-extern const base::Feature kTestDefaultEnabled;
-extern const base::Feature kToolbarMicIphAndroid;
-extern const base::Feature kToolbarPhoneOptimizations;
-extern const base::Feature kToolbarScrollAblationAndroid;
-extern const base::Feature kToolbarUseHardwareBitmapDraw;
-extern const base::Feature kTrustedWebActivityPostMessage;
-extern const base::Feature kTrustedWebActivityQualityEnforcement;
-extern const base::Feature kTrustedWebActivityQualityEnforcementForced;
-extern const base::Feature kTrustedWebActivityQualityEnforcementWarning;
-extern const base::Feature kShowExtendedPreloadingSetting;
-extern const base::Feature kStartSurfaceAndroid;
-extern const base::Feature kStartSurfaceReturnTime;
-extern const base::Feature kStartSurfaceRefactor;
-extern const base::Feature kStartSurfaceDisabledFeedImprovement;
-extern const base::Feature kUmaBackgroundSessions;
-extern const base::Feature kUpdateHistoryEntryPointsInIncognito;
-extern const base::Feature
-    kUpdateNotificationScheduleServiceImmediateShowOption;
-extern const base::Feature kUserMediaScreenCapturing;
-extern const base::Feature kVoiceSearchAudioCapturePolicy;
-extern const base::Feature kVoiceButtonInTopToolbar;
-extern const base::Feature kVrBrowsingFeedback;
-extern const base::Feature kWebOtpCrossDeviceSimpleString;
-extern const base::Feature kWebApkInstallService;
-extern const base::Feature kWebApkTrampolineOnInitialIntent;
+BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbar);
+BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbarCustomizationV2);
+BASE_DECLARE_FEATURE(kAddToHomescreenIPH);
+BASE_DECLARE_FEATURE(kAllowNewIncognitoTabIntents);
+BASE_DECLARE_FEATURE(kAndroidScrollOptimizations);
+BASE_DECLARE_FEATURE(kAndroidSearchEngineChoiceNotification);
+BASE_DECLARE_FEATURE(kAssistantConsentModal);
+BASE_DECLARE_FEATURE(kAssistantConsentSimplifiedText);
+BASE_DECLARE_FEATURE(kAssistantConsentV2);
+BASE_DECLARE_FEATURE(kAssistantIntentExperimentId);
+BASE_DECLARE_FEATURE(kAssistantIntentPageUrl);
+BASE_DECLARE_FEATURE(kAssistantIntentTranslateInfo);
+BASE_DECLARE_FEATURE(kAssistantNonPersonalizedVoiceSearch);
+BASE_DECLARE_FEATURE(kAppLaunchpad);
+BASE_DECLARE_FEATURE(kAppMenuMobileSiteOption);
+BASE_DECLARE_FEATURE(kAppToWebAttribution);
+BASE_DECLARE_FEATURE(kBackgroundThreadPool);
+BASE_DECLARE_FEATURE(kBulkTabRestore);
+BASE_DECLARE_FEATURE(kClearOmniboxFocusAfterNavigation);
+BASE_DECLARE_FEATURE(kCloseTabSuggestions);
+BASE_DECLARE_FEATURE(kCriticalPersistedTabData);
+BASE_DECLARE_FEATURE(kCommerceCoupons);
+BASE_DECLARE_FEATURE(kCastDeviceFilter);
+BASE_DECLARE_FEATURE(kCCTBackgroundTab);
+BASE_DECLARE_FEATURE(kCCTBrandTransparency);
+BASE_DECLARE_FEATURE(kCCTClientDataHeader);
+BASE_DECLARE_FEATURE(kCCTIncognito);
+BASE_DECLARE_FEATURE(kCCTIncognitoAvailableToThirdParty);
+BASE_DECLARE_FEATURE(kCCTNewDownloadTab);
+BASE_DECLARE_FEATURE(kCCTPackageNameRecording);
+BASE_DECLARE_FEATURE(kCCTPostMessageAPI);
+BASE_DECLARE_FEATURE(kCCTRealTimeEngagementSignals);
+BASE_DECLARE_FEATURE(kCCTRedirectPreconnect);
+BASE_DECLARE_FEATURE(kCCTRemoveRemoteViewIds);
+BASE_DECLARE_FEATURE(kCCTReportParallelRequestStatus);
+BASE_DECLARE_FEATURE(kCCTResizable90MaximumHeight);
+BASE_DECLARE_FEATURE(kCCTResizableAllowResizeByUserGesture);
+BASE_DECLARE_FEATURE(kCCTResizableForFirstParties);
+BASE_DECLARE_FEATURE(kCCTResizableForThirdParties);
+BASE_DECLARE_FEATURE(kCCTResizableWindowAboveNavbar);
+BASE_DECLARE_FEATURE(kCCTResourcePrefetch);
+BASE_DECLARE_FEATURE(kCCTRetainingState);
+BASE_DECLARE_FEATURE(kCCTToolbarCustomizations);
+BASE_DECLARE_FEATURE(kDontAutoHideBrowserControls);
+BASE_DECLARE_FEATURE(kCacheDeprecatedSystemLocationSetting);
+BASE_DECLARE_FEATURE(kChromeNewDownloadTab);
+BASE_DECLARE_FEATURE(kChromeShareLongScreenshot);
+BASE_DECLARE_FEATURE(kChromeShareScreenshot);
+BASE_DECLARE_FEATURE(kChromeSharingHub);
+BASE_DECLARE_FEATURE(kChromeSharingHubLaunchAdjacent);
+BASE_DECLARE_FEATURE(kChromeSurveyNextAndroid);
+BASE_DECLARE_FEATURE(kCommandLineOnNonRooted);
+BASE_DECLARE_FEATURE(kConditionalTabStripAndroid);
+BASE_DECLARE_FEATURE(kContextMenuEnableLensShoppingAllowlist);
+BASE_DECLARE_FEATURE(kContextMenuGoogleLensChip);
+BASE_DECLARE_FEATURE(kContextMenuPerformanceInfo);
+BASE_DECLARE_FEATURE(kContextMenuPopupStyle);
+BASE_DECLARE_FEATURE(kContextMenuSearchWithGoogleLens);
+BASE_DECLARE_FEATURE(kContextMenuShopWithGoogleLens);
+BASE_DECLARE_FEATURE(kContextMenuSearchAndShopWithGoogleLens);
+BASE_DECLARE_FEATURE(kContextMenuTranslateWithGoogleLens);
+BASE_DECLARE_FEATURE(kContextualSearchDelayedIntelligence);
+BASE_DECLARE_FEATURE(kContextualSearchDisableOnlineDetection);
+BASE_DECLARE_FEATURE(kContextualSearchForceCaption);
+BASE_DECLARE_FEATURE(kContextualSearchSuppressShortView);
+BASE_DECLARE_FEATURE(kContextualSearchThinWebViewImplementation);
+BASE_DECLARE_FEATURE(kContextualTriggersSelectionHandles);
+BASE_DECLARE_FEATURE(kContextualTriggersSelectionMenu);
+BASE_DECLARE_FEATURE(kContextualTriggersSelectionSize);
+BASE_DECLARE_FEATURE(kDirectActions);
+BASE_DECLARE_FEATURE(kDisableCompositedProgressBar);
+BASE_DECLARE_FEATURE(kDontPrefetchLibraries);
+BASE_DECLARE_FEATURE(kDownloadAutoResumptionThrottling);
+BASE_DECLARE_FEATURE(kDownloadFileProvider);
+BASE_DECLARE_FEATURE(kDownloadHomeForExternalApp);
+BASE_DECLARE_FEATURE(kDownloadNotificationBadge);
+BASE_DECLARE_FEATURE(kDownloadRename);
+BASE_DECLARE_FEATURE(kDuetTabStripIntegrationAndroid);
+BASE_DECLARE_FEATURE(kExperimentsForAgsa);
+BASE_DECLARE_FEATURE(kExploreSites);
+BASE_DECLARE_FEATURE(kFocusOmniboxInIncognitoTabIntents);
+BASE_DECLARE_FEATURE(kGridTabSwitcherForTablets);
+BASE_DECLARE_FEATURE(kHandleMediaIntents);
+BASE_DECLARE_FEATURE(kImmersiveUiMode);
+BASE_DECLARE_FEATURE(kIncognitoReauthenticationForAndroid);
+BASE_DECLARE_FEATURE(kIncognitoScreenshot);
+BASE_DECLARE_FEATURE(kInfobarScrollOptimization);
+BASE_DECLARE_FEATURE(kImprovedA2HS);
+BASE_DECLARE_FEATURE(kInstanceSwitcher);
+BASE_DECLARE_FEATURE(kInstantStart);
+BASE_DECLARE_FEATURE(kIsVoiceSearchEnabledCache);
+BASE_DECLARE_FEATURE(kKitKatSupported);
+BASE_DECLARE_FEATURE(kLanguagesPreference);
+BASE_DECLARE_FEATURE(kLensCameraAssistedSearch);
+BASE_DECLARE_FEATURE(kLensOnQuickActionSearchWidget);
+BASE_DECLARE_FEATURE(kLocationBarModelOptimizations);
+BASE_DECLARE_FEATURE(kMostRecentTabOnBackgroundCloseTab);
+BASE_DECLARE_FEATURE(kNewInstanceFromDraggedLink);
+BASE_DECLARE_FEATURE(kNewTabPageTilesTitleWrapAround);
+BASE_DECLARE_FEATURE(kNewWindowAppMenu);
+BASE_DECLARE_FEATURE(kNotificationPermissionVariant);
+BASE_DECLARE_FEATURE(kOmahaMinSdkVersionAndroid);
+BASE_DECLARE_FEATURE(kOmniboxModernizeVisualUpdate);
+BASE_DECLARE_FEATURE(kOptimizeGeolocationHeaderGeneration);
+BASE_DECLARE_FEATURE(kOSKResizesVisualViewport);
+BASE_DECLARE_FEATURE(kPageAnnotationsService);
+BASE_DECLARE_FEATURE(kBookmarksImprovedSaveFlow);
+BASE_DECLARE_FEATURE(kBookmarksRefresh);
+BASE_DECLARE_FEATURE(kBackGestureRefactorAndroid);
+BASE_DECLARE_FEATURE(kOptimizeLayoutsForPullRefresh);
+BASE_DECLARE_FEATURE(kPostTaskFocusTab);
+BASE_DECLARE_FEATURE(kProbabilisticCryptidRenderer);
+BASE_DECLARE_FEATURE(kReachedCodeProfiler);
+BASE_DECLARE_FEATURE(kReengagementNotification);
+BASE_DECLARE_FEATURE(kReaderModeInCCT);
+BASE_DECLARE_FEATURE(kRelatedSearches);
+BASE_DECLARE_FEATURE(kRelatedSearchesAlternateUx);
+BASE_DECLARE_FEATURE(kRelatedSearchesInBar);
+BASE_DECLARE_FEATURE(kRelatedSearchesSimplifiedUx);
+BASE_DECLARE_FEATURE(kRelatedSearchesUi);
+BASE_DECLARE_FEATURE(kRequestDesktopSiteDefaults);
+BASE_DECLARE_FEATURE(kRequestDesktopSiteDefaultsSynthetic);
+BASE_DECLARE_FEATURE(kRequestDesktopSiteDefaultsControl);
+BASE_DECLARE_FEATURE(kRequestDesktopSiteDefaultsControlSynthetic);
+BASE_DECLARE_FEATURE(kRequestDesktopSiteDefaultsDowngrade);
+BASE_DECLARE_FEATURE(kSearchEnginePromoExistingDevice);
+BASE_DECLARE_FEATURE(kSearchEnginePromoExistingDeviceV2);
+BASE_DECLARE_FEATURE(kSearchEnginePromoNewDevice);
+BASE_DECLARE_FEATURE(kSearchEnginePromoNewDeviceV2);
+BASE_DECLARE_FEATURE(kShareButtonInTopToolbar);
+BASE_DECLARE_FEATURE(kSharingHubLinkToggle);
+BASE_DECLARE_FEATURE(kShowScrollableMVTOnNTPAndroid);
+BASE_DECLARE_FEATURE(kFeedPositionAndroid);
+BASE_DECLARE_FEATURE(kSafeModeForCachedFlags);
+BASE_DECLARE_FEATURE(kSearchResumptionModuleAndroid);
+BASE_DECLARE_FEATURE(kSpannableInlineAutocomplete);
+BASE_DECLARE_FEATURE(kSpecialLocaleWrapper);
+BASE_DECLARE_FEATURE(kSpecialUserDecision);
+BASE_DECLARE_FEATURE(kSplitCompositorTask);
+BASE_DECLARE_FEATURE(kStoreHoursAndroid);
+BASE_DECLARE_FEATURE(kSuppressToolbarCaptures);
+BASE_DECLARE_FEATURE(kSwapPixelFormatToFixConvertFromTranslucent);
+BASE_DECLARE_FEATURE(kTabEngagementReportingAndroid);
+BASE_DECLARE_FEATURE(kTabGroupsAndroid);
+BASE_DECLARE_FEATURE(kTabGroupsContinuationAndroid);
+BASE_DECLARE_FEATURE(kTabGroupsUiImprovementsAndroid);
+BASE_DECLARE_FEATURE(kTabGroupsForTablets);
+BASE_DECLARE_FEATURE(kTabGridLayoutAndroid);
+BASE_DECLARE_FEATURE(kTabReparenting);
+BASE_DECLARE_FEATURE(kTabSelectionEditorV2);
+BASE_DECLARE_FEATURE(kTabStripImprovements);
+BASE_DECLARE_FEATURE(kDiscoverFeedMultiColumn);
+BASE_DECLARE_FEATURE(kTabSwitcherOnReturn);
+BASE_DECLARE_FEATURE(kTabToGTSAnimation);
+BASE_DECLARE_FEATURE(kTestDefaultDisabled);
+BASE_DECLARE_FEATURE(kTestDefaultEnabled);
+BASE_DECLARE_FEATURE(kToolbarMicIphAndroid);
+BASE_DECLARE_FEATURE(kToolbarPhoneOptimizations);
+BASE_DECLARE_FEATURE(kToolbarScrollAblationAndroid);
+BASE_DECLARE_FEATURE(kToolbarUseHardwareBitmapDraw);
+BASE_DECLARE_FEATURE(kTrustedWebActivityPostMessage);
+BASE_DECLARE_FEATURE(kTrustedWebActivityQualityEnforcement);
+BASE_DECLARE_FEATURE(kTrustedWebActivityQualityEnforcementForced);
+BASE_DECLARE_FEATURE(kTrustedWebActivityQualityEnforcementWarning);
+BASE_DECLARE_FEATURE(kShowExtendedPreloadingSetting);
+BASE_DECLARE_FEATURE(kStartSurfaceAndroid);
+BASE_DECLARE_FEATURE(kStartSurfaceReturnTime);
+BASE_DECLARE_FEATURE(kStartSurfaceRefactor);
+BASE_DECLARE_FEATURE(kStartSurfaceDisabledFeedImprovement);
+BASE_DECLARE_FEATURE(kUmaBackgroundSessions);
+BASE_DECLARE_FEATURE(kUpdateHistoryEntryPointsInIncognito);
+BASE_DECLARE_FEATURE(kUpdateNotificationScheduleServiceImmediateShowOption);
+BASE_DECLARE_FEATURE(kUserMediaScreenCapturing);
+BASE_DECLARE_FEATURE(kVoiceSearchAudioCapturePolicy);
+BASE_DECLARE_FEATURE(kVoiceButtonInTopToolbar);
+BASE_DECLARE_FEATURE(kVrBrowsingFeedback);
+BASE_DECLARE_FEATURE(kWebOtpCrossDeviceSimpleString);
+BASE_DECLARE_FEATURE(kWebApkInstallService);
+BASE_DECLARE_FEATURE(kWebApkTrampolineOnInitialIntent);
 
 }  // namespace android
 }  // namespace chrome
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
index 11c86fc..b296051b 100644
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -214,8 +214,6 @@
             "AutofillEnableSupportForHonorificPrefixes";
     public static final String AUTOFILL_ENABLE_SUPPORT_FOR_MORE_STRUCTURE_IN_ADDRESSES =
             "AutofillEnableSupportForMoreStructureInAddresses";
-    public static final String AUTOFILL_ENABLE_SUPPORT_FOR_MORE_STRUCTURE_IN_NAMES =
-            "AutofillEnableSupportForMoreStructureInNames";
     public static final String AUTOFILL_ENABLE_UPDATE_VIRTUAL_CARD_ENROLLMENT =
             "AutofillEnableUpdateVirtualCardEnrollment";
     public static final String AUTOFILL_RANKING_FORMULA_USAGE_HALF_LIFE =
diff --git a/chrome/browser/history_clusters/BUILD.gn b/chrome/browser/history_clusters/BUILD.gn
index f97f85f..351d5e2 100644
--- a/chrome/browser/history_clusters/BUILD.gn
+++ b/chrome/browser/history_clusters/BUILD.gn
@@ -66,6 +66,7 @@
     "//components/strings:components_strings_grd",
     "//content/public/android:content_java",
     "//content/public/android:content_java_resources",
+    "//third_party/android_deps:com_android_support_support_annotations_java",
     "//third_party/androidx:androidx_annotation_annotation_java",
     "//third_party/androidx:androidx_appcompat_appcompat_java",
     "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
diff --git a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClusterView.java b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClusterView.java
index 7d036ed..55059c1f 100644
--- a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClusterView.java
+++ b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClusterView.java
@@ -8,6 +8,7 @@
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.graphics.drawable.Drawable;
+import android.support.annotation.DrawableRes;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.accessibility.AccessibilityNodeInfo;
@@ -16,6 +17,7 @@
 import androidx.annotation.IntDef;
 import androidx.annotation.Nullable;
 
+import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.components.browser_ui.styles.SemanticColorUtils;
 import org.chromium.components.browser_ui.widget.selectable_list.SelectableItemView;
 
@@ -95,6 +97,11 @@
         super.setStartIconDrawable(drawable);
     }
 
+    public void setStartIconBackgroundRes(@DrawableRes int resId) {
+        mStartIconView.setBackgroundResource(resId);
+        ApiCompatibilityUtils.setImageTintList(mStartIconView, getDefaultStartIconTint());
+    }
+
     void setEndButtonDrawable(Drawable drawable) {
         mEndButtonView.setVisibility(VISIBLE);
         mEndButtonView.setImageDrawable(drawable);
diff --git a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersItemProperties.java b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersItemProperties.java
index 0cf784e..5852e1bf 100644
--- a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersItemProperties.java
+++ b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersItemProperties.java
@@ -58,6 +58,7 @@
             new WritableObjectPropertyKey<>();
     static final WritableBooleanPropertyKey SHOW_VERTICALLY_CENTERED =
             new WritableBooleanPropertyKey();
+    static final WritableIntPropertyKey START_ICON_BACKGROUND_RES = new WritableIntPropertyKey();
     static final WritableIntPropertyKey START_ICON_VISIBILITY = new WritableIntPropertyKey();
     static final WritableObjectPropertyKey<CharSequence> TITLE = new WritableObjectPropertyKey<>();
     static final WritableObjectPropertyKey<CharSequence> URL = new WritableObjectPropertyKey<>();
@@ -66,6 +67,6 @@
     static final PropertyKey[] ALL_KEYS = {ACCESSIBILITY_STATE, CHIP_CLICK_HANDLER, CLICK_HANDLER,
             CLUSTER_VISIT, DIVIDER_IS_THICK, DIVIDER_VISIBLE, END_BUTTON_CLICK_HANDLER,
             END_BUTTON_DRAWABLE, END_BUTTON_VISIBLE, ICON_DRAWABLE, LABEL, PROGRESS_BUTTON_STATE,
-            RELATED_SEARCHES, SHOW_VERTICALLY_CENTERED, START_ICON_VISIBILITY, TITLE, URL,
-            VISIBILITY};
+            RELATED_SEARCHES, SHOW_VERTICALLY_CENTERED, START_ICON_BACKGROUND_RES,
+            START_ICON_VISIBILITY, TITLE, URL, VISIBILITY};
 }
\ No newline at end of file
diff --git a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersMediator.java b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersMediator.java
index daa26731..caf02299 100644
--- a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersMediator.java
+++ b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersMediator.java
@@ -437,6 +437,8 @@
                                         ClusterViewAccessibilityState.CLICKABLE)
                                 .with(HistoryClustersItemProperties.START_ICON_VISIBILITY,
                                         View.VISIBLE)
+                                .with(HistoryClustersItemProperties.START_ICON_BACKGROUND_RES,
+                                        R.drawable.rounded_rectangle_surface_1)
                                 .with(HistoryClustersItemProperties.CLICK_HANDLER,
                                         (v)
                                                 -> setQueryState(QueryState.forQuery(rawLabel,
diff --git a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersViewBinder.java b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersViewBinder.java
index ef82238..acf02229 100644
--- a/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersViewBinder.java
+++ b/chrome/browser/history_clusters/java/src/org/chromium/chrome/browser/history_clusters/HistoryClustersViewBinder.java
@@ -95,6 +95,9 @@
             clusterView.setIconDrawable(model.get(HistoryClustersItemProperties.ICON_DRAWABLE));
         } else if (key == HistoryClustersItemProperties.LABEL) {
             clusterView.setLabel(model.get(HistoryClustersItemProperties.LABEL));
+        } else if (key == HistoryClustersItemProperties.START_ICON_BACKGROUND_RES) {
+            clusterView.setStartIconBackgroundRes(
+                    model.get(HistoryClustersItemProperties.START_ICON_BACKGROUND_RES));
         } else if (key == HistoryClustersItemProperties.START_ICON_VISIBILITY) {
             clusterView.setIconDrawableVisibility(
                     model.get(HistoryClustersItemProperties.START_ICON_VISIBILITY));
diff --git a/chrome/browser/image_editor/event_capture_mac.mm b/chrome/browser/image_editor/event_capture_mac.mm
index aea31ac..92be6858 100644
--- a/chrome/browser/image_editor/event_capture_mac.mm
+++ b/chrome/browser/image_editor/event_capture_mac.mm
@@ -91,6 +91,10 @@
              web_contents_view_ == view) {
     // We do not need to record mouse clicks outside of the web contents.
     event_handler_->OnMouseEvent(ui_event->AsMouseEvent());
+  } else if (type == ui::ET_MOUSE_MOVED && web_contents_view_ != view) {
+    // Manually set arrow cursor when region search UI is open and cursor is
+    // moved from web contents.
+    [[NSCursor arrowCursor] set];
   } else if (type == ui::ET_SCROLL) {
     event_handler_->OnScrollEvent(ui_event->AsScrollEvent());
   }
diff --git a/chrome/browser/media/router/discovery/access_code/access_code_cast_pref_updater.cc b/chrome/browser/media/router/discovery/access_code/access_code_cast_pref_updater.cc
index 9666864..624b24b 100644
--- a/chrome/browser/media/router/discovery/access_code/access_code_cast_pref_updater.cc
+++ b/chrome/browser/media/router/discovery/access_code/access_code_cast_pref_updater.cc
@@ -7,14 +7,11 @@
 #include "base/json/values_util.h"
 #include "base/values.h"
 #include "chrome/browser/media/router/discovery/access_code/access_code_media_sink_util.h"
+#include "components/prefs/scoped_user_pref_update.h"
 #include "services/preferences/public/cpp/dictionary_value_update.h"
-#include "services/preferences/public/cpp/scoped_pref_update.h"
 
 namespace media_router {
 
-using ::prefs::DictionaryValueUpdate;
-using ::prefs::ScopedDictionaryPrefUpdate;
-
 AccessCodeCastPrefUpdater::AccessCodeCastPrefUpdater(PrefService* service)
     : pref_service_(service) {
   DCHECK(pref_service_) << "The pref service does not exist!";
@@ -39,16 +36,10 @@
 
 void AccessCodeCastPrefUpdater::UpdateDevicesDict(
     const MediaSinkInternal& sink) {
-  ScopedDictionaryPrefUpdate update(pref_service_,
-                                    prefs::kAccessCodeCastDevices);
-  std::unique_ptr<DictionaryValueUpdate> devices_pref = update.Get();
-  DCHECK(devices_pref) << "The " << prefs::kAccessCodeCastDevices
-                       << " pref does not exist.";
+  ScopedDictPrefUpdate update(pref_service_, prefs::kAccessCodeCastDevices);
 
   // TODO(b/231748126): Add IP based-deduping for storing Access Code Cast Sinks
-  devices_pref->SetDictionary(
-      sink.id(), base::DictionaryValue::From(base::Value::ToUniquePtrValue(
-                     CreateValueDictFromMediaSinkInternal(sink))));
+  update->Set(sink.id(), CreateValueDictFromMediaSinkInternal(sink));
 }
 
 // This stored preference looks like:
@@ -60,16 +51,12 @@
 //   }
 void AccessCodeCastPrefUpdater::UpdateDeviceAddedTimeDict(
     const MediaSink::Id sink_id) {
-  ScopedDictionaryPrefUpdate update(pref_service_,
-                                    prefs::kAccessCodeCastDeviceAdditionTime);
-
-  std::unique_ptr<DictionaryValueUpdate> device_time_pref = update.Get();
-  DCHECK(device_time_pref) << "The " << prefs::kAccessCodeCastDeviceAdditionTime
-                           << " pref does not exist.";
+  ScopedDictPrefUpdate update(pref_service_,
+                              prefs::kAccessCodeCastDeviceAdditionTime);
 
   // If the key doesn't exist, or exists but isn't a DictionaryValue, a new
   // DictionaryValue will be created and attached to the path in that location.
-  device_time_pref->SetKey(sink_id, base::TimeToValue(base::Time::Now()));
+  update->Set(sink_id, base::TimeToValue(base::Time::Now()));
 }
 
 const base::Value::Dict& AccessCodeCastPrefUpdater::GetDevicesDict() {
@@ -118,42 +105,24 @@
 
 void AccessCodeCastPrefUpdater::RemoveSinkIdFromDevicesDict(
     const MediaSink::Id sink_id) {
-  ScopedDictionaryPrefUpdate update(pref_service_,
-                                    prefs::kAccessCodeCastDevices);
-  std::unique_ptr<DictionaryValueUpdate> devices_pref = update.Get();
-  DCHECK(devices_pref) << "The " << prefs::kAccessCodeCastDevices
-                       << " pref does not exist.";
-  devices_pref->Remove(sink_id);
+  ScopedDictPrefUpdate update(pref_service_, prefs::kAccessCodeCastDevices);
+  update->Remove(sink_id);
 }
 
 void AccessCodeCastPrefUpdater::RemoveSinkIdFromDeviceAddedTimeDict(
     const MediaSink::Id sink_id) {
-  ScopedDictionaryPrefUpdate update(pref_service_,
-                                    prefs::kAccessCodeCastDeviceAdditionTime);
-
-  std::unique_ptr<DictionaryValueUpdate> device_time_pref = update.Get();
-  DCHECK(device_time_pref) << "The " << prefs::kAccessCodeCastDeviceAdditionTime
-                           << " pref does not exist.";
-  device_time_pref->Remove(sink_id);
+  ScopedDictPrefUpdate update(pref_service_,
+                              prefs::kAccessCodeCastDeviceAdditionTime);
+  update->Remove(sink_id);
 }
 
 void AccessCodeCastPrefUpdater::ClearDevicesDict() {
-  ScopedDictionaryPrefUpdate update(pref_service_,
-                                    prefs::kAccessCodeCastDevices);
-  std::unique_ptr<DictionaryValueUpdate> devices_pref = update.Get();
-  DCHECK(devices_pref) << "The " << prefs::kAccessCodeCastDevices
-                       << " pref does not exist.";
-  devices_pref->Clear();
+  pref_service_->SetDict(prefs::kAccessCodeCastDevices, base::Value::Dict());
 }
 
 void AccessCodeCastPrefUpdater::ClearDeviceAddedTimeDict() {
-  ScopedDictionaryPrefUpdate update(pref_service_,
-                                    prefs::kAccessCodeCastDeviceAdditionTime);
-
-  std::unique_ptr<DictionaryValueUpdate> device_time_pref = update.Get();
-  DCHECK(device_time_pref) << "The " << prefs::kAccessCodeCastDeviceAdditionTime
-                           << " pref does not exist.";
-  device_time_pref->Clear();
+  pref_service_->SetDict(prefs::kAccessCodeCastDeviceAdditionTime,
+                         base::Value::Dict());
 }
 
 base::WeakPtr<AccessCodeCastPrefUpdater>
diff --git a/chrome/browser/media_galleries/media_galleries_preferences.cc b/chrome/browser/media_galleries/media_galleries_preferences.cc
index 0e05460e..c66e2a6 100644
--- a/chrome/browser/media_galleries/media_galleries_preferences.cc
+++ b/chrome/browser/media_galleries/media_galleries_preferences.cc
@@ -802,9 +802,9 @@
       return *pref_id_it;
 
     PrefService* prefs = profile_->GetPrefs();
-    auto update = std::make_unique<ListPrefUpdate>(
+    auto update = std::make_unique<ScopedListPrefUpdate>(
         prefs, prefs::kMediaGalleriesRememberedGalleries);
-    base::Value::List& list = update->Get()->GetList();
+    base::Value::List& list = update->Get();
 
     for (auto& gallery_value : list) {
       base::Value::Dict* gallery_dict = gallery_value.GetIfDict();
@@ -872,9 +872,9 @@
   gallery_info.default_gallery_type = default_gallery_type;
 
   {
-    ListPrefUpdate update(prefs, prefs::kMediaGalleriesRememberedGalleries);
-    base::Value::List& list = update->GetList();
-    list.Append(CreateGalleryPrefInfoDictionary(gallery_info));
+    ScopedListPrefUpdate update(prefs,
+                                prefs::kMediaGalleriesRememberedGalleries);
+    update->Append(CreateGalleryPrefInfoDictionary(gallery_info));
   }
   InitFromPrefs();
   for (auto& observer : gallery_change_observers_)
@@ -895,9 +895,9 @@
       base::PathService::Get(chrome::DIR_USER_VIDEOS, &videos_path);
 
   PrefService* prefs = profile_->GetPrefs();
-  auto update = std::make_unique<ListPrefUpdate>(
+  auto update = std::make_unique<ScopedListPrefUpdate>(
       prefs, prefs::kMediaGalleriesRememberedGalleries);
-  base::Value::List& list = update->Get()->GetList();
+  base::Value::List& list = update->Get();
 
   std::vector<MediaGalleryPrefId> pref_ids;
 
@@ -989,9 +989,9 @@
     bool erase) {
   DCHECK(IsInitialized());
   PrefService* prefs = profile_->GetPrefs();
-  auto update = std::make_unique<ListPrefUpdate>(
+  auto update = std::make_unique<ScopedListPrefUpdate>(
       prefs, prefs::kMediaGalleriesRememberedGalleries);
-  base::Value::List& list = update->Get()->GetList();
+  base::Value::List& list = update->Get();
 
   if (!base::Contains(known_galleries_, id))
     return;
diff --git a/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc b/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc
index 87ca1cf..d3c36d8 100644
--- a/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc
+++ b/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc
@@ -189,11 +189,12 @@
 
   void RemovePersistedDefaultGalleryValues() {
     PrefService* prefs = profile_->GetPrefs();
-    std::unique_ptr<ListPrefUpdate> update(
-        new ListPrefUpdate(prefs, prefs::kMediaGalleriesRememberedGalleries));
-    base::Value* list = update->Get();
+    std::unique_ptr<ScopedListPrefUpdate> update =
+        std::make_unique<ScopedListPrefUpdate>(
+            prefs, prefs::kMediaGalleriesRememberedGalleries);
+    base::Value::List& list = update->Get();
 
-    for (auto& entry : list->GetList()) {
+    for (auto& entry : list) {
       if (entry.is_dict()) {
         base::Value::Dict& dict = entry.GetDict();
         // Setting the prefs version to 2 which is the version before
diff --git a/chrome/browser/new_tab_page/modules/recipes/recipes_service.cc b/chrome/browser/new_tab_page/modules/recipes/recipes_service.cc
index 85266ad6..ed6eacf 100644
--- a/chrome/browser/new_tab_page/modules/recipes/recipes_service.cc
+++ b/chrome/browser/new_tab_page/modules/recipes/recipes_service.cc
@@ -153,16 +153,16 @@
 }
 
 void RecipesService::DismissTask(const std::string& task_name) {
-  ListPrefUpdate update(profile_->GetPrefs(), kDismissedTasksPrefName);
-  base::Value::List& update_list = update->GetList();
+  ScopedListPrefUpdate update(profile_->GetPrefs(), kDismissedTasksPrefName);
+  base::Value::List& update_list = update.Get();
   base::Value task_name_value(task_name);
   if (!base::Contains(update_list, task_name_value))
     update_list.Append(std::move(task_name_value));
 }
 
 void RecipesService::RestoreTask(const std::string& task_name) {
-  ListPrefUpdate update(profile_->GetPrefs(), kDismissedTasksPrefName);
-  update->GetList().EraseValue(base::Value(task_name));
+  ScopedListPrefUpdate update(profile_->GetPrefs(), kDismissedTasksPrefName);
+  update->EraseValue(base::Value(task_name));
 }
 
 void RecipesService::OnDataLoaded(network::SimpleURLLoader* loader,
diff --git a/chrome/browser/new_tab_page/promos/promo_service.cc b/chrome/browser/new_tab_page/promos/promo_service.cc
index 1fd0d82..6e55aac 100644
--- a/chrome/browser/new_tab_page/promos/promo_service.cc
+++ b/chrome/browser/new_tab_page/promos/promo_service.cc
@@ -309,9 +309,9 @@
     return;
   }
 
-  DictionaryPrefUpdate update(profile_->GetPrefs(), prefs::kNtpPromoBlocklist);
+  ScopedDictPrefUpdate update(profile_->GetPrefs(), prefs::kNtpPromoBlocklist);
   double now = base::Time::Now().ToDeltaSinceWindowsEpoch().InSecondsF();
-  update->SetDoubleKey(promo_id, now);
+  update->Set(promo_id, now);
 
   // Check if the promo id to be blocked is the same as the promo id of the
   // current promo being served.
@@ -328,8 +328,8 @@
     return;
   }
 
-  DictionaryPrefUpdate update(profile_->GetPrefs(), prefs::kNtpPromoBlocklist);
-  update->RemoveKey(promo_id);
+  ScopedDictPrefUpdate update(profile_->GetPrefs(), prefs::kNtpPromoBlocklist);
+  update->Remove(promo_id);
 
   // Refresh promo service since cached promo data was cleared in
   // BlocklistPromo(), which is called before UndoBlocklistPromo().
@@ -375,10 +375,10 @@
   }
 
   if (!expired_ids.empty()) {
-    DictionaryPrefUpdate update(profile_->GetPrefs(),
+    ScopedDictPrefUpdate update(profile_->GetPrefs(),
                                 prefs::kNtpPromoBlocklist);
     for (const std::string& key : expired_ids)
-      update->RemoveKey(key);
+      update->Remove(key);
   }
 
   return found;
diff --git a/chrome/browser/new_tab_page/promos/promo_service_unittest.cc b/chrome/browser/new_tab_page/promos/promo_service_unittest.cc
index 0a529af..9ae2195 100644
--- a/chrome/browser/new_tab_page/promos/promo_service_unittest.cc
+++ b/chrome/browser/new_tab_page/promos/promo_service_unittest.cc
@@ -222,9 +222,9 @@
   feature_list.InitAndEnableFeature(ntp_features::kNtpMiddleSlotPromoDismissal);
 
   {
-    DictionaryPrefUpdate update(prefs(), prefs::kNtpPromoBlocklist);
+    ScopedDictPrefUpdate update(prefs(), prefs::kNtpPromoBlocklist);
     base::Time recent = base::Time::Now() - base::Hours(2);
-    update->SetDoubleKey("42", recent.ToDeltaSinceWindowsEpoch().InSecondsF());
+    update->Set("42", recent.ToDeltaSinceWindowsEpoch().InSecondsF());
   }
 
   std::string response_string =
@@ -284,10 +284,10 @@
   feature_list.InitAndEnableFeature(ntp_features::kNtpMiddleSlotPromoDismissal);
 
   {
-    DictionaryPrefUpdate update(prefs(), prefs::kNtpPromoBlocklist);
-    ASSERT_EQ(0u, update->DictSize());
+    ScopedDictPrefUpdate update(prefs(), prefs::kNtpPromoBlocklist);
+    ASSERT_EQ(0u, update->size());
     base::Time past = base::Time::Now() - base::Days(365);
-    update->SetDoubleKey("42", past.ToDeltaSinceWindowsEpoch().InSecondsF());
+    update->Set("42", past.ToDeltaSinceWindowsEpoch().InSecondsF());
   }
 
   ASSERT_EQ(1u, prefs()->GetDict(prefs::kNtpPromoBlocklist).size());
@@ -319,10 +319,10 @@
   feature_list.InitAndEnableFeature(ntp_features::kNtpMiddleSlotPromoDismissal);
 
   {
-    DictionaryPrefUpdate update(prefs(), prefs::kNtpPromoBlocklist);
-    ASSERT_EQ(0u, update->DictSize());
-    update->SetDoubleKey("42", 5);
-    update->SetStringKey("84", "wrong type");
+    ScopedDictPrefUpdate update(prefs(), prefs::kNtpPromoBlocklist);
+    ASSERT_EQ(0u, update->size());
+    update->Set("42", 5);
+    update->Set("84", "wrong type");
   }
 
   ASSERT_GT(prefs()->GetDict(prefs::kNtpPromoBlocklist).size(), 0u);
diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn
index 6e71ba4..17958ac 100644
--- a/chrome/browser/password_manager/android/BUILD.gn
+++ b/chrome/browser/password_manager/android/BUILD.gn
@@ -132,9 +132,9 @@
     "java/src/org/chromium/chrome/browser/password_manager/PasswordChangeSuccessTrackerBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupClientMetricsRecorder.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java",
+    "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLifecycleHelper.java",
-    "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerSignInHelperBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordScriptsFetcherBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterMetricsRecorder.java",
@@ -160,8 +160,8 @@
   ]
   sources = [
     "java/src/org/chromium/chrome/browser/password_manager/PasswordChangeSuccessTrackerBridge.java",
+    "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLifecycleHelper.java",
-    "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerSignInHelperBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordScriptsFetcherBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterBridge.java",
     "java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java",
@@ -181,6 +181,7 @@
     "junit/src/org/chromium/chrome/browser/password_manager/OutdatedGmsCoreDialogTest.java",
     "junit/src/org/chromium/chrome/browser/password_manager/PasswordCheckupClientMetricsRecorderTest.java",
     "junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtilTest.java",
+    "junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java",
     "junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java",
     "junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerLifecycleHelperTest.java",
     "junit/src/org/chromium/chrome/browser/password_manager/PasswordSettingsAccessorFactoryTest.java",
@@ -408,8 +409,8 @@
     "fake_password_manager_lifecycle_helper.cc",
     "fake_password_manager_lifecycle_helper.h",
     "generated_password_saved_message_delegate_unittest.cc",
-    "mock_password_manager_sign_in_helper_bridge.cc",
-    "mock_password_manager_sign_in_helper_bridge.h",
+    "mock_password_manager_error_message_helper_bridge.cc",
+    "mock_password_manager_error_message_helper_bridge.h",
     "mock_password_sync_controller_delegate_bridge.cc",
     "mock_password_sync_controller_delegate_bridge.h",
     "password_accessory_controller_impl_unittest.cc",
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java
new file mode 100644
index 0000000..4eede4b
--- /dev/null
+++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java
@@ -0,0 +1,87 @@
+// 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.password_manager;
+
+import android.app.Activity;
+
+import androidx.annotation.VisibleForTesting;
+
+import org.chromium.base.TimeUtils;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+import org.chromium.chrome.browser.preferences.Pref;
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
+import org.chromium.components.prefs.PrefService;
+import org.chromium.components.signin.AccountManagerFacadeProvider;
+import org.chromium.components.signin.base.CoreAccountInfo;
+import org.chromium.components.signin.identitymanager.ConsentLevel;
+import org.chromium.components.user_prefs.UserPrefs;
+import org.chromium.ui.base.WindowAndroid;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ *  The bridge provides a way to interact with the Android sign in flow.
+ */
+public class PasswordManagerErrorMessageHelperBridge {
+    @VisibleForTesting
+    static final long MINIMAL_INTERVAL_BETWEEN_PROMPTS_MS =
+            TimeUnit.MILLISECONDS.convert(24, TimeUnit.HOURS);
+    @VisibleForTesting
+    static final long MINIMAL_INTERVAL_TO_SYNC_ERROR_MS =
+            TimeUnit.MILLISECONDS.convert(30, TimeUnit.MINUTES);
+
+    /**
+     * Checks whether the right amount of time has passed since the last error UI messages
+     * were shown.
+     *
+     * The error UI should be shown at least {@link #MINIMAL_INTERVAL_BETWEEN_PROMPTS_MS} from the
+     * previous one and at least {@link #MINIMAL_INTERVAL_TO_SYNC_ERROR_MS} from the last sync error
+     * UI.
+     *
+     * @return whether the UI can be shown given the conditions above.
+     */
+    @CalledByNative
+    static boolean shouldShowErrorUi() {
+        PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile());
+        long lastShownTimestamp =
+                Long.valueOf(prefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP));
+        long lastShownSyncErrorTimestamp = SharedPreferencesManager.getInstance().readLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, 0);
+        long currentTime = TimeUtils.currentTimeMillis();
+        return (currentTime - lastShownTimestamp > MINIMAL_INTERVAL_BETWEEN_PROMPTS_MS)
+                && (currentTime - lastShownSyncErrorTimestamp) > MINIMAL_INTERVAL_TO_SYNC_ERROR_MS;
+    }
+
+    /**
+     * Saves the timestamp in ms since UNIX epoch at which the error UI was shown.
+     */
+    @CalledByNative
+    static void saveErrorUiShownTimestamp() {
+        PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile());
+        prefService.setString(
+                Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP, Long.toString(TimeUtils.currentTimeMillis()));
+    }
+
+    /**
+     * Starts the Android process to update credentials for the primary account in Chrome.
+     * This method will only work for users that have been previously signed in Chrome on the
+     * device.
+     */
+    @CalledByNative
+    static void startUpdateAccountCredentialsFlow(WindowAndroid windowAndroid) {
+        Profile profile = Profile.getLastUsedRegularProfile();
+        final CoreAccountInfo primaryAccountInfo =
+                IdentityServicesProvider.get().getIdentityManager(profile).getPrimaryAccountInfo(
+                        ConsentLevel.SIGNIN);
+        // It's not possible to call updateCredentials without an account.
+        assert primaryAccountInfo != null;
+        final Activity activity = windowAndroid.getActivity().get();
+        AccountManagerFacadeProvider.getInstance().updateCredentials(
+                CoreAccountInfo.getAndroidAccountFrom(primaryAccountInfo), activity, null);
+    }
+}
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerSignInHelperBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerSignInHelperBridge.java
deleted file mode 100644
index 5d46eac..0000000
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerSignInHelperBridge.java
+++ /dev/null
@@ -1,38 +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.
-
-package org.chromium.chrome.browser.password_manager;
-
-import android.app.Activity;
-
-import org.chromium.base.annotations.CalledByNative;
-import org.chromium.chrome.browser.profiles.Profile;
-import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
-import org.chromium.components.signin.AccountManagerFacadeProvider;
-import org.chromium.components.signin.base.CoreAccountInfo;
-import org.chromium.components.signin.identitymanager.ConsentLevel;
-import org.chromium.ui.base.WindowAndroid;
-
-/**
- *  The bridge provides a way to interact with the Android sign in flow.
- */
-public class PasswordManagerSignInHelperBridge {
-    /**
-     * Starts the Android process to update credentials for the primary account in Chrome.
-     * This method will only work for users that have been previously signed in Chrome on the
-     * device.
-     */
-    @CalledByNative
-    public static void startUpdateAccountCredentialsFlow(WindowAndroid windowAndroid) {
-        Profile profile = Profile.getLastUsedRegularProfile();
-        final CoreAccountInfo primaryAccountInfo =
-                IdentityServicesProvider.get().getIdentityManager(profile).getPrimaryAccountInfo(
-                        ConsentLevel.SIGNIN);
-        // It's not possible to call updateCredentials without an account.
-        assert primaryAccountInfo != null;
-        final Activity activity = windowAndroid.getActivity().get();
-        AccountManagerFacadeProvider.getInstance().updateCredentials(
-                CoreAccountInfo.getAndroidAccountFrom(primaryAccountInfo), activity, null);
-    }
-}
diff --git a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java
new file mode 100644
index 0000000..657f680
--- /dev/null
+++ b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java
@@ -0,0 +1,124 @@
+// 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.password_manager;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+import org.chromium.base.FakeTimeTestRule;
+import org.chromium.base.TimeUtils;
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.base.test.util.JniMocker;
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+import org.chromium.chrome.browser.preferences.Pref;
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.components.prefs.PrefService;
+import org.chromium.components.user_prefs.UserPrefs;
+import org.chromium.components.user_prefs.UserPrefsJni;
+
+/**
+ * Unit tests for the error message helper bridge.
+ * */
+@RunWith(BaseRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class PasswordManagerErrorMessageHelperBridgeTest {
+    @Rule
+    public JniMocker mJniMocker = new JniMocker();
+
+    @Rule
+    public FakeTimeTestRule mFakeTimeTestRule = new FakeTimeTestRule();
+
+    @Mock
+    private Profile mProfile;
+
+    @Mock
+    private PrefService mPrefService;
+
+    @Mock
+    private UserPrefs.Natives mUserPrefsJniMock;
+
+    private SharedPreferencesManager mSharedPrefsManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Profile.setLastUsedProfileForTesting(mProfile);
+        mJniMocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsJniMock);
+        when(mUserPrefsJniMock.get(mProfile)).thenReturn(mPrefService);
+        mSharedPrefsManager = SharedPreferencesManager.getInstance();
+    }
+
+    @After
+    public void tearDown() {
+        mSharedPrefsManager.removeKey(ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME);
+        mFakeTimeTestRule.resetTimes();
+    }
+
+    @Test
+    public void testNotEnoughTimeSinceLastUI() {
+        final long timeOfFirstUpmPrompt = TimeUtils.currentTimeMillis();
+        final long timeOfSyncPrompt = timeOfFirstUpmPrompt
+                + PasswordManagerErrorMessageHelperBridge.MINIMAL_INTERVAL_TO_SYNC_ERROR_MS;
+        when(mPrefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP))
+                .thenReturn(Long.toString(timeOfFirstUpmPrompt));
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfSyncPrompt);
+        mFakeTimeTestRule.advanceMillis(
+                PasswordManagerErrorMessageHelperBridge.MINIMAL_INTERVAL_BETWEEN_PROMPTS_MS);
+        assertFalse(PasswordManagerErrorMessageHelperBridge.shouldShowErrorUi());
+    }
+
+    @Test
+    public void testNotEnoughTimeSinceLastSyncUI() {
+        final long timeOfFirstUpmPrompt = TimeUtils.currentTimeMillis();
+        mFakeTimeTestRule.advanceMillis(
+                PasswordManagerErrorMessageHelperBridge.MINIMAL_INTERVAL_BETWEEN_PROMPTS_MS + 1);
+        final long timeOfSyncPrompt = TimeUtils.currentTimeMillis()
+                - PasswordManagerErrorMessageHelperBridge.MINIMAL_INTERVAL_TO_SYNC_ERROR_MS;
+        when(mPrefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP))
+                .thenReturn(Long.toString(timeOfFirstUpmPrompt));
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfSyncPrompt);
+        assertFalse(PasswordManagerErrorMessageHelperBridge.shouldShowErrorUi());
+    }
+
+    @Test
+    public void testEnoughTimeSinceBothUis() {
+        final long timeOfFirstUpmPrompt = TimeUtils.currentTimeMillis();
+        final long timeOfSyncPrompt = timeOfFirstUpmPrompt
+                + PasswordManagerErrorMessageHelperBridge.MINIMAL_INTERVAL_TO_SYNC_ERROR_MS;
+
+        when(mPrefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP))
+                .thenReturn(Long.toString(timeOfFirstUpmPrompt));
+        mSharedPrefsManager.writeLong(
+                ChromePreferenceKeys.SYNC_ERROR_PROMPT_SHOWN_AT_TIME, timeOfSyncPrompt);
+        mFakeTimeTestRule.advanceMillis(
+                PasswordManagerErrorMessageHelperBridge.MINIMAL_INTERVAL_BETWEEN_PROMPTS_MS + 1);
+        assertTrue(PasswordManagerErrorMessageHelperBridge.shouldShowErrorUi());
+    }
+
+    @Test
+    public void testSaveErrorUIShownTimestamp() {
+        final long currentTimeMs = TimeUtils.currentTimeMillis();
+        final long timeIncrementMs = 30;
+        mFakeTimeTestRule.advanceMillis(timeIncrementMs);
+        PasswordManagerErrorMessageHelperBridge.saveErrorUiShownTimestamp();
+        verify(mPrefService)
+                .setString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP,
+                        Long.toString(currentTimeMs + timeIncrementMs));
+    }
+}
diff --git a/chrome/browser/password_manager/android/mock_password_manager_error_message_helper_bridge.cc b/chrome/browser/password_manager/android/mock_password_manager_error_message_helper_bridge.cc
new file mode 100644
index 0000000..537d123
--- /dev/null
+++ b/chrome/browser/password_manager/android/mock_password_manager_error_message_helper_bridge.cc
@@ -0,0 +1,11 @@
+// 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/password_manager/android/mock_password_manager_error_message_helper_bridge.h"
+
+MockPasswordManagerErrorMessageHelperBridge::
+    MockPasswordManagerErrorMessageHelperBridge() = default;
+
+MockPasswordManagerErrorMessageHelperBridge::
+    ~MockPasswordManagerErrorMessageHelperBridge() = default;
diff --git a/chrome/browser/password_manager/android/mock_password_manager_error_message_helper_bridge.h b/chrome/browser/password_manager/android/mock_password_manager_error_message_helper_bridge.h
new file mode 100644
index 0000000..26d04f2
--- /dev/null
+++ b/chrome/browser/password_manager/android/mock_password_manager_error_message_helper_bridge.h
@@ -0,0 +1,28 @@
+// 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 CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_MOCK_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_H_
+#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_MOCK_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_H_
+
+#include <jni.h>
+
+#include "chrome/browser/password_manager/android/password_manager_error_message_helper_bridge.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+class MockPasswordManagerErrorMessageHelperBridge
+    : public PasswordManagerErrorMessageHelperBridge {
+ public:
+  MockPasswordManagerErrorMessageHelperBridge();
+  ~MockPasswordManagerErrorMessageHelperBridge() override;
+
+  MOCK_METHOD(void,
+              StartUpdateAccountCredentialsFlow,
+              (content::WebContents * web_contents),
+              (override));
+
+  MOCK_METHOD(bool, ShouldShowErrorUI, (), (override));
+  MOCK_METHOD(void, SaveErrorUIShownTimestamp, (), (override));
+};
+
+#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_MOCK_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_H_
diff --git a/chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.cc b/chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.cc
deleted file mode 100644
index dbc917fd..0000000
--- a/chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.cc
+++ /dev/null
@@ -1,11 +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.
-
-#include "chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.h"
-
-MockPasswordManagerSignInHelperBridge::MockPasswordManagerSignInHelperBridge() =
-    default;
-
-MockPasswordManagerSignInHelperBridge::
-    ~MockPasswordManagerSignInHelperBridge() = default;
diff --git a/chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.h b/chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.h
deleted file mode 100644
index 50edb78..0000000
--- a/chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.h
+++ /dev/null
@@ -1,25 +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.
-
-#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_MOCK_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_H_
-#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_MOCK_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_H_
-
-#include <jni.h>
-
-#include "chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge.h"
-#include "testing/gmock/include/gmock/gmock.h"
-
-class MockPasswordManagerSignInHelperBridge
-    : public PasswordManagerSignInHelperBridge {
- public:
-  MockPasswordManagerSignInHelperBridge();
-  ~MockPasswordManagerSignInHelperBridge() override;
-
-  MOCK_METHOD(void,
-              startUpdateAccountCredentialsFlow,
-              (JNIEnv * env, content::WebContents* web_contents),
-              (override));
-};
-
-#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_MOCK_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_H_
diff --git a/chrome/browser/password_manager/android/password_manager_error_message_delegate.cc b/chrome/browser/password_manager/android/password_manager_error_message_delegate.cc
index 14f8529..23e18d6 100644
--- a/chrome/browser/password_manager/android/password_manager_error_message_delegate.cc
+++ b/chrome/browser/password_manager/android/password_manager_error_message_delegate.cc
@@ -8,34 +8,35 @@
 #include "base/metrics/histogram_functions.h"
 #include "chrome/browser/android/android_theme_resources.h"
 #include "chrome/browser/android/resource_mapper.h"
-#include "chrome/browser/android/signin/signin_bridge.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/messages/android/message_dispatcher_bridge.h"
-#include "components/signin/public/base/signin_metrics.h"
 #include "content/public/browser/web_contents.h"
 #include "ui/android/window_android.h"
 #include "ui/aura/window.h"
 #include "ui/base/l10n/l10n_util.h"
 
 PasswordManagerErrorMessageDelegate::PasswordManagerErrorMessageDelegate(
-    std::unique_ptr<PasswordManagerSignInHelperBridge> bridge_)
-    : sign_in_bridge_(std::move(bridge_)) {}
+    std::unique_ptr<PasswordManagerErrorMessageHelperBridge> bridge_)
+    : helper_bridge_(std::move(bridge_)) {}
 
 PasswordManagerErrorMessageDelegate::~PasswordManagerErrorMessageDelegate() =
     default;
 
-void PasswordManagerErrorMessageDelegate::DisplayPasswordManagerErrorMessage(
+void PasswordManagerErrorMessageDelegate::MaybeDisplayErrorMessage(
     content::WebContents* web_contents,
     bool save_password) {
   DCHECK(web_contents);
 
-  // Dismiss previous message if it is displayed.
-  DismissPasswordManagerErrorMessage(messages::DismissReason::UNKNOWN);
+  if (!helper_bridge_->ShouldShowErrorUI())
+    return;
+
+  DCHECK(!message_);
 
   CreateMessage(web_contents, save_password);
   messages::MessageDispatcherBridge::Get()->EnqueueMessage(
       message_.get(), web_contents, messages::MessageScopeType::WEB_CONTENTS,
       messages::MessagePriority::kUrgent);
+  helper_bridge_->SaveErrorUIShownTimestamp();
 }
 
 void PasswordManagerErrorMessageDelegate::DismissPasswordManagerErrorMessage(
@@ -91,8 +92,7 @@
 
 void PasswordManagerErrorMessageDelegate::HandleSignInButtonClicked(
     content::WebContents* web_contents) {
-  sign_in_bridge_->startUpdateAccountCredentialsFlow(
-      base::android::AttachCurrentThread(), web_contents);
+  helper_bridge_->StartUpdateAccountCredentialsFlow(web_contents);
   DismissPasswordManagerErrorMessage(messages::DismissReason::PRIMARY_ACTION);
 }
 
diff --git a/chrome/browser/password_manager/android/password_manager_error_message_delegate.h b/chrome/browser/password_manager/android/password_manager_error_message_delegate.h
index 8a16a8d..f76c5908 100644
--- a/chrome/browser/password_manager/android/password_manager_error_message_delegate.h
+++ b/chrome/browser/password_manager/android/password_manager_error_message_delegate.h
@@ -7,7 +7,7 @@
 
 #include <memory>
 
-#include "chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge.h"
+#include "chrome/browser/password_manager/android/password_manager_error_message_helper_bridge.h"
 #include "components/messages/android/message_wrapper.h"
 
 namespace content {
@@ -17,14 +17,15 @@
 class PasswordManagerErrorMessageDelegate {
  public:
   explicit PasswordManagerErrorMessageDelegate(
-      std::unique_ptr<PasswordManagerSignInHelperBridge> bridge_);
+      std::unique_ptr<PasswordManagerErrorMessageHelperBridge> bridge_);
   ~PasswordManagerErrorMessageDelegate();
 
-  // Displays a password error message for current `web_contents`.
+  // Displays a password error message for current `web_contents` if enough
+  // time has passed since the last error message was displayed.
   // `save_password` decides whether the error message mentions the inability to
   // save or use passwords.
-  void DisplayPasswordManagerErrorMessage(content::WebContents* web_contents,
-                                          bool save_password);
+  void MaybeDisplayErrorMessage(content::WebContents* web_contents,
+                                bool save_password);
   void DismissPasswordManagerErrorMessage(
       messages::DismissReason dismiss_reason);
 
@@ -32,7 +33,7 @@
   friend class PasswordManagerErrorMessageDelegateTest;
 
   std::unique_ptr<messages::MessageWrapper> message_;
-  std::unique_ptr<PasswordManagerSignInHelperBridge> sign_in_bridge_;
+  std::unique_ptr<PasswordManagerErrorMessageHelperBridge> helper_bridge_;
 
   void CreateMessage(content::WebContents* web_contents, bool save_password);
 
diff --git a/chrome/browser/password_manager/android/password_manager_error_message_delegate_unittest.cc b/chrome/browser/password_manager/android/password_manager_error_message_delegate_unittest.cc
index 4176bdb..f821751 100644
--- a/chrome/browser/password_manager/android/password_manager_error_message_delegate_unittest.cc
+++ b/chrome/browser/password_manager/android/password_manager_error_message_delegate_unittest.cc
@@ -6,14 +6,14 @@
 
 #include "base/android/jni_android.h"
 #include "base/test/metrics/histogram_tester.h"
-#include "chrome/browser/password_manager/android/mock_password_manager_sign_in_helper_bridge.h"
+#include "chrome/browser/password_manager/android/mock_password_manager_error_message_helper_bridge.h"
 #include "chrome/grit/generated_resources.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "components/messages/android/mock_message_dispatcher_bridge.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/l10n/l10n_util.h"
 
-using testing::_;
+using testing::Return;
 
 namespace {
 constexpr char kErrorMessageDismissalReasonHistogramName[] =
@@ -33,25 +33,32 @@
 
   void DismissMessageAndExpectDismissed(messages::DismissReason dismiss_reason);
 
-  raw_ptr<MockPasswordManagerSignInHelperBridge> signin_helper_bridge() {
-    return sign_in_helper_bridge_;
+  MockPasswordManagerErrorMessageHelperBridge* helper_bridge() {
+    return helper_bridge_;
   }
+
+  PasswordManagerErrorMessageDelegate* delegate() { return delegate_.get(); }
+
+  const messages::MockMessageDispatcherBridge& message_dispatcher_bridge() {
+    return message_dispatcher_bridge_;
+  }
+
   messages::MessageWrapper* GetMessageWrapper();
 
  private:
   std::unique_ptr<PasswordManagerErrorMessageDelegate> delegate_;
-  // The `sign_in_helper_bridge_` is owned by the `delegate_`.
-  raw_ptr<MockPasswordManagerSignInHelperBridge> sign_in_helper_bridge_;
+  // The `helper_bridge_` is owned by the `delegate_`.
+  raw_ptr<MockPasswordManagerErrorMessageHelperBridge> helper_bridge_;
   messages::MockMessageDispatcherBridge message_dispatcher_bridge_;
 };
 
 PasswordManagerErrorMessageDelegateTest::
     PasswordManagerErrorMessageDelegateTest() {
-  auto mock_sign_in_bridge =
-      std::make_unique<MockPasswordManagerSignInHelperBridge>();
-  sign_in_helper_bridge_ = mock_sign_in_bridge.get();
+  auto mock_helper_bridge =
+      std::make_unique<MockPasswordManagerErrorMessageHelperBridge>();
+  helper_bridge_ = mock_helper_bridge.get();
   delegate_ = std::make_unique<PasswordManagerErrorMessageDelegate>(
-      std::move(mock_sign_in_bridge));
+      std::move(mock_helper_bridge));
 }
 
 void PasswordManagerErrorMessageDelegateTest::SetUp() {
@@ -67,8 +74,9 @@
 
 void PasswordManagerErrorMessageDelegateTest::DisplayMessageAndExpectEnqueued(
     bool save_password) {
+  EXPECT_CALL(*helper_bridge_, ShouldShowErrorUI()).WillOnce(Return(true));
   EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage);
-  delegate_->DisplayPasswordManagerErrorMessage(web_contents(), save_password);
+  delegate_->MaybeDisplayErrorMessage(web_contents(), save_password);
 }
 
 void PasswordManagerErrorMessageDelegateTest::DismissMessageAndExpectDismissed(
@@ -128,8 +136,8 @@
   DisplayMessageAndExpectEnqueued(/*save_password=*/true);
   EXPECT_NE(nullptr, GetMessageWrapper());
 
-  EXPECT_CALL(*signin_helper_bridge(),
-              startUpdateAccountCredentialsFlow(_, web_contents()));
+  EXPECT_CALL(*helper_bridge(),
+              StartUpdateAccountCredentialsFlow(web_contents()));
   // Trigger the click action on the "Sign in" button and dismiss the message.
   GetMessageWrapper()->HandleActionClick(base::android::AttachCurrentThread());
   DismissMessageAndExpectDismissed(messages::DismissReason::PRIMARY_ACTION);
@@ -152,3 +160,15 @@
   histogram_tester.ExpectUniqueSample(kErrorMessageDismissalReasonHistogramName,
                                       messages::DismissReason::TIMER, 1);
 }
+
+TEST_F(PasswordManagerErrorMessageDelegateTest,
+       NotDisplayedWhenCondiditonNotMet) {
+  EXPECT_CALL(*helper_bridge(), ShouldShowErrorUI()).WillOnce(Return(false));
+  EXPECT_CALL(message_dispatcher_bridge(), EnqueueMessage).Times(0);
+  delegate()->MaybeDisplayErrorMessage(web_contents(), /*save_password=*/true);
+}
+
+TEST_F(PasswordManagerErrorMessageDelegateTest, DisplayeSavesTimestamp) {
+  EXPECT_CALL(*helper_bridge(), SaveErrorUIShownTimestamp());
+  DisplayMessageAndExpectEnqueued(/*save_password=*/true);
+}
diff --git a/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge.h b/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge.h
similarity index 60%
rename from chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge.h
rename to chrome/browser/password_manager/android/password_manager_error_message_helper_bridge.h
index d62b4e9..82d63689c 100644
--- a/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge.h
+++ b/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge.h
@@ -2,22 +2,28 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_H_
-#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_H_
+#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_H_
+#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_H_
 
 #include <jni.h>
 #include "content/public/browser/web_contents.h"
 
-class PasswordManagerSignInHelperBridge {
+class PasswordManagerErrorMessageHelperBridge {
  public:
-  virtual ~PasswordManagerSignInHelperBridge();
+  virtual ~PasswordManagerErrorMessageHelperBridge();
+
   // An implementation of this method should call the Java method that starts
   // the Android process to update credentials for the primary account in
   // Chrome. This method will only work for users that have been previously
   // signed in Chrome on the device.
-  virtual void startUpdateAccountCredentialsFlow(
-      JNIEnv* env,
+  virtual void StartUpdateAccountCredentialsFlow(
       content::WebContents* web_contents) = 0;
+
+  // Checks if enough time has passed since the last error UI was shown.
+  virtual bool ShouldShowErrorUI() = 0;
+
+  // Saves the timestam at which the error UI was shown.
+  virtual void SaveErrorUIShownTimestamp() = 0;
 };
 
-#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_H_
+#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_H_
diff --git a/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge_impl.cc b/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge_impl.cc
new file mode 100644
index 0000000..0e25953d
--- /dev/null
+++ b/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge_impl.cc
@@ -0,0 +1,32 @@
+// 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/password_manager/android/password_manager_error_message_helper_bridge_impl.h"
+
+#include "chrome/browser/password_manager/android/jni_headers/PasswordManagerErrorMessageHelperBridge_jni.h"
+#include "ui/android/view_android.h"
+#include "ui/android/window_android.h"
+
+PasswordManagerErrorMessageHelperBridge::
+    ~PasswordManagerErrorMessageHelperBridge() = default;
+
+void PasswordManagerErrorMessageHelperBridgeImpl::
+    StartUpdateAccountCredentialsFlow(content::WebContents* web_contents) {
+  ui::WindowAndroid* window_android =
+      web_contents->GetNativeView()->GetWindowAndroid();
+  if (window_android == nullptr)
+    return;
+  Java_PasswordManagerErrorMessageHelperBridge_startUpdateAccountCredentialsFlow(
+      base::android::AttachCurrentThread(), window_android->GetJavaObject());
+}
+
+bool PasswordManagerErrorMessageHelperBridgeImpl::ShouldShowErrorUI() {
+  return Java_PasswordManagerErrorMessageHelperBridge_shouldShowErrorUi(
+      base::android::AttachCurrentThread());
+}
+
+void PasswordManagerErrorMessageHelperBridgeImpl::SaveErrorUIShownTimestamp() {
+  Java_PasswordManagerErrorMessageHelperBridge_saveErrorUiShownTimestamp(
+      base::android::AttachCurrentThread());
+}
diff --git a/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge_impl.h b/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge_impl.h
new file mode 100644
index 0000000..1c515725
--- /dev/null
+++ b/chrome/browser/password_manager/android/password_manager_error_message_helper_bridge_impl.h
@@ -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.
+
+#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_IMPL_H_
+#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_IMPL_H_
+
+#include <jni.h>
+
+#include "chrome/browser/password_manager/android/password_manager_error_message_helper_bridge.h"
+#include "content/public/browser/web_contents.h"
+
+class PasswordManagerErrorMessageHelperBridgeImpl
+    : public PasswordManagerErrorMessageHelperBridge {
+ public:
+  void StartUpdateAccountCredentialsFlow(
+      content::WebContents* web_contents) override;
+  bool ShouldShowErrorUI() override;
+  void SaveErrorUIShownTimestamp() override;
+};
+
+#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_ERROR_MESSAGE_HELPER_BRIDGE_IMPL_H_
diff --git a/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge_impl.cc b/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge_impl.cc
deleted file mode 100644
index 1f98683..0000000
--- a/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge_impl.cc
+++ /dev/null
@@ -1,23 +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.
-
-#include "chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge_impl.h"
-
-#include "chrome/browser/password_manager/android/jni_headers/PasswordManagerSignInHelperBridge_jni.h"
-#include "ui/android/view_android.h"
-#include "ui/android/window_android.h"
-
-PasswordManagerSignInHelperBridge::~PasswordManagerSignInHelperBridge() =
-    default;
-
-void PasswordManagerSignInHelperBridgeImpl::startUpdateAccountCredentialsFlow(
-    JNIEnv* env,
-    content::WebContents* web_contents) {
-  ui::WindowAndroid* window_android =
-      web_contents->GetNativeView()->GetWindowAndroid();
-  if (window_android == nullptr)
-    return;
-  Java_PasswordManagerSignInHelperBridge_startUpdateAccountCredentialsFlow(
-      env, window_android->GetJavaObject());
-}
diff --git a/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge_impl.h b/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge_impl.h
deleted file mode 100644
index 63b601d0f..0000000
--- a/chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge_impl.h
+++ /dev/null
@@ -1,21 +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.
-
-#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_IMPL_H_
-#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_IMPL_H_
-
-#include <jni.h>
-
-#include "chrome/browser/password_manager/android/password_manager_sign_in_helper_bridge.h"
-#include "content/public/browser/web_contents.h"
-
-class PasswordManagerSignInHelperBridgeImpl
-    : public PasswordManagerSignInHelperBridge {
- public:
-  void startUpdateAccountCredentialsFlow(
-      JNIEnv* env,
-      content::WebContents* web_contents) override;
-};
-
-#endif  // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_MANAGER_SIGN_IN_HELPER_BRIDGE_IMPL_H_
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index c93cb0ae..bb6b11f 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -61,6 +61,7 @@
 #include "components/bookmarks/managed/managed_bookmarks_policy_handler.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/certificate_transparency/pref_names.h"
+#include "components/commerce/core/pref_names.h"
 #include "components/component_updater/pref_names.h"
 #include "components/content_settings/core/browser/cookie_settings_policy_handler.h"
 #include "components/content_settings/core/browser/insecure_private_network_policy_handler.h"
@@ -1756,6 +1757,11 @@
     ash::prefs::kRecoveryFactorBehavior,
     base::Value::Type::BOOLEAN },
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+#if !BUILDFLAG(IS_FUCHSIA)
+  { key::kShoppingListEnabled,
+    commerce::kShoppingListEnabledPrefName,
+    base::Value::Type::BOOLEAN},
+#endif  // !BUILDFLAG(IS_FUCHSIA)
 };
 // clang-format on
 
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 4c5581f60..f729275 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -92,7 +92,7 @@
 #include "components/blocked_content/safe_browsing_triggered_popup_blocker.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/certificate_transparency/pref_names.h"
-#include "components/commerce/core/shopping_service.h"
+#include "components/commerce/core/pref_names.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/custom_handlers/protocol_handler_registry.h"
 #include "components/dom_distiller/core/distilled_page_prefs.h"
@@ -1280,7 +1280,7 @@
   ChromeVersionService::RegisterProfilePrefs(registry);
   chrome_browser_net::NetErrorTabHelper::RegisterProfilePrefs(registry);
   chrome_prefs::RegisterProfilePrefs(registry);
-  commerce::ShoppingService::RegisterPrefs(registry);
+  commerce::RegisterPrefs(registry);
   DocumentProvider::RegisterProfilePrefs(registry);
   enterprise_reporting::RegisterProfilePrefs(registry);
   dom_distiller::DistilledPagePrefs::RegisterProfilePrefs(registry);
diff --git a/chrome/browser/printing/print_browsertest.cc b/chrome/browser/printing/print_browsertest.cc
index d6f4b31..abac7f22 100644
--- a/chrome/browser/printing/print_browsertest.cc
+++ b/chrome/browser/printing/print_browsertest.cc
@@ -299,6 +299,10 @@
       context->SetAskUserForSettingsCanceled();
 #endif
 
+    context->SetNewDocumentCalledClosure(base::BindRepeating(
+        &PrintBackendPrintingContextFactoryForTest::NewDocumentCalled,
+        base::Unretained(this)));
+
     return std::move(context);
   }
 
@@ -334,6 +338,10 @@
   }
 #endif
 
+  void NewDocumentCalled() { ++new_document_called_count_; }
+
+  int new_document_called_count() { return new_document_called_count_; }
+
  private:
   std::string printer_name_;
   bool access_denied_errors_for_new_document_ = false;
@@ -346,6 +354,7 @@
 #if BUILDFLAG(IS_WIN)
   bool cancel_on_ask_user_for_settings_ = false;
 #endif
+  int new_document_called_count_ = 0;
 };
 
 class PrintPreviewObserver : PrintPreviewUI::TestDelegate {
@@ -3557,6 +3566,10 @@
     AddTestBackendPrinter(test_backend_.get(), printer_name);
   }
 
+  int new_document_called_count() {
+    return test_printing_context_factory_.new_document_called_count();
+  }
+
  private:
   base::test::ScopedFeatureList feature_list_;
   scoped_refptr<TestPrintBackend> test_backend_;
@@ -3597,6 +3610,8 @@
     print_view_manager->WaitOnScanning();
     ASSERT_EQ(print_view_manager->scripted_print_called(),
               content_analysis_allows_print());
+    // TODO(crbug.com/1352193): Update this to expect 0 calls.
+    ASSERT_EQ(new_document_called_count(), 1);
   }
 };
 
@@ -3628,6 +3643,8 @@
   ASSERT_TRUE(print_view_manager->print_now_called());
   ASSERT_EQ(print_view_manager->scripted_print_called(),
             content_analysis_allows_print());
+  // TODO(crbug.com/1352193): Update this to expect 0 calls.
+  ASSERT_EQ(new_document_called_count(), 1);
 }
 
 IN_PROC_BROWSER_TEST_P(MAYBE_ContentAnalysisPrintBrowserTest,
@@ -3652,6 +3669,8 @@
   print_view_manager->WaitOnScanning();
   ASSERT_EQ(print_view_manager->preview_allowed(),
             content_analysis_allows_print());
+  // TODO(crbug.com/1352193): Update this to expect 0 calls.
+  ASSERT_EQ(new_document_called_count(), 1);
 }
 
 IN_PROC_BROWSER_TEST_P(MAYBE_ContentAnalysisScriptedPreviewlessPrintBrowserTest,
@@ -3690,6 +3709,9 @@
   print_view_manager->WaitOnPreview();
   ASSERT_TRUE(print_view_manager->preview_allowed().has_value());
   ASSERT_FALSE(print_view_manager->preview_allowed().value());
+
+  // This is always 0 because printing is always blocked by the DLP policy.
+  ASSERT_EQ(new_document_called_count(), 0);
 }
 #endif  // BUILDFLAG(IS_CHROMEOS)
 
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fa.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fa.xtb
index c2e2bf78..bdd99d2 100644
--- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fa.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fa.xtb
@@ -247,7 +247,7 @@
 <translation id="2654172656519784359">یک واژه به جلو بروید</translation>
 <translation id="2661530546602071611">اطلاعیه</translation>
 <translation id="2673280813984708147">درحال ویرایش</translation>
-<translation id="267442004702508783">بازخوانی</translation>
+<translation id="267442004702508783">بازآوری</translation>
 <translation id="2675533876313964202">سبز فسفری</translation>
 <translation id="2684412629217766642">‏بستن برنامه آموزشی ChromeVox</translation>
 <translation id="2692503699962701720">تغییر زیروبمی صدا هنگام خوانده شدن انواع عناصر و نوشتار قالب‌بندی‌شده</translation>
diff --git a/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.html b/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.html
index 529b4ea..a3c509c 100644
--- a/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.html
+++ b/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.html
@@ -33,6 +33,7 @@
 <link rel="import" href="../../components/common_styles/oobe_dialog_host_styles.html">
 <link rel="import" href="../../components/dialogs/oobe_adaptive_dialog.html">
 <link rel="import" href="../../components/dialogs/oobe_loading_dialog.html">
+<link rel="import" href="../../components/dialogs/oobe_modal_dialog.html">
 
 <dom-module id="enterprise-enrollment-element">
   <template>
@@ -41,6 +42,10 @@
         padding: 0;
       }
 
+      #step-signin {
+        flex: auto;
+      }
+
       #learnMoreLink {
         display: inline;
       }
@@ -272,6 +277,22 @@
             on-click="submitAttributes_"></oobe-next-button>
       </div>
     </oobe-adaptive-dialog>
+
+    <!-- Skip Enrollment confirmation dialog for LP device -->
+    <oobe-modal-dialog id="skipConfirmationDialog">
+      <div slot="title">[[i18nDynamic(locale,
+                    'skipConfirmationDialogTitle')]]</div>
+      <div slot="content">[[i18nDynamic(locale,
+                    'skipConfirmationDialogText')]]</div>
+      <div slot="buttons">
+        <oobe-text-button id="skipButton" border on-click="onDialogSkip_"
+            text-key="skipConfirmationSkipButton"></oobe-text-button>
+        <oobe-text-button inverse on-click="onDialogClosed_"
+            id="goBackButton"
+            text-key="skipConfirmationgoBackButton"></oobe-text-button>
+      </div>
+    </oobe-modal-dialog>
+
   </template>
   <script src="enterprise_enrollment.js"></script>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.js b/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.js
index bfb1b31..dede43c 100644
--- a/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.js
+++ b/chrome/browser/resources/chromeos/login/screens/oobe/enterprise_enrollment.js
@@ -178,6 +178,7 @@
       'showAttributePromptStep',
       'showError',
       'showStep',
+      'showSkipConfirmationDialog',
     ];
   }
 
@@ -671,6 +672,27 @@
   onTPMCheckCanceled_() {
     this.userActed('cancel-tpm-check');
   }
+
+  // Skip enrollment dialogue section.
+
+  /*
+   * Called when we click go back button.
+   */
+  onDialogClosed_() {
+    this.$.skipConfirmationDialog.hideDialog();
+  }
+
+  /*
+   * Called when we click skip button.
+   */
+  onDialogSkip_() {
+    this.$.skipConfirmationDialog.hideDialog();
+    this.userActed('skip-confirmation');
+  }
+
+  showSkipConfirmationDialog() {
+    this.$.skipConfirmationDialog.showDialog();
+  }
 }
 
 customElements.define(
diff --git a/chrome/browser/resources/chromeos/network_ui/BUILD.gn b/chrome/browser/resources/chromeos/network_ui/BUILD.gn
index ad6b3e8..96325d6 100644
--- a/chrome/browser/resources/chromeos/network_ui/BUILD.gn
+++ b/chrome/browser/resources/chromeos/network_ui/BUILD.gn
@@ -84,8 +84,8 @@
 js_library("network_ui") {
   deps = [
     ":network_ui_browser_proxy",
+    "//ash/webui/common/resources/network_health:network_diagnostics",
     "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics",
     "//ui/webui/resources/cr_elements:i18n_behavior",
     "//ui/webui/resources/js:load_time_data.m",
   ]
diff --git a/chrome/browser/resources/chromeos/network_ui/network_ui.js b/chrome/browser/resources/chromeos/network_ui/network_ui.js
index 6024705..220f95e 100644
--- a/chrome/browser/resources/chromeos/network_ui/network_ui.js
+++ b/chrome/browser/resources/chromeos/network_ui/network_ui.js
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 import 'chrome://resources/cr_components/chromeos/network/network_select.js';
-import 'chrome://resources/cr_components/chromeos/network_health/network_diagnostics.js';
-import 'chrome://resources/cr_components/chromeos/network_health/network_health_summary.js';
+import 'chrome://resources/ash/common/network_health/network_diagnostics.js';
+import 'chrome://resources/ash/common/network_health/network_health_summary.js';
 import 'chrome://resources/ash/common/traffic_counters/traffic_counters.js';
 import 'chrome://resources/cr_elements/cr_button/cr_button.js';
 import 'chrome://resources/cr_elements/cr_input/cr_input.js';
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn
index 822fc13..eca21002 100644
--- a/chrome/browser/resources/settings/BUILD.gn
+++ b/chrome/browser/resources/settings/BUILD.gn
@@ -438,6 +438,7 @@
   ts_deps = [
     "//third_party/polymer/v3_0:library",
     "//ui/webui/resources:library",
+    "//ui/webui/resources/cr_components/help_bubble:build_ts",
   ]
 
   if (!is_chromeos_ash) {
diff --git a/chrome/browser/resources/settings/autofill_page/user_util_mixin.ts b/chrome/browser/resources/settings/autofill_page/user_util_mixin.ts
index 6a7773c..555c881 100644
--- a/chrome/browser/resources/settings/autofill_page/user_util_mixin.ts
+++ b/chrome/browser/resources/settings/autofill_page/user_util_mixin.ts
@@ -118,17 +118,12 @@
               this.addWebUIListener('sync-prefs-changed', syncPrefsChanged);
               syncBrowserProxy.sendSyncPrefsChanged();
 
-
-              // <if expr="not is_chromeos">
-              // For non-ChromeOS, non-Lacros, also check whether accounts are
-              // available.
               const storedAccountsChanged = (accounts: StoredAccount[]) => {
                 this.storedAccounts_ = accounts;
               };
               syncBrowserProxy.getStoredAccounts().then(storedAccountsChanged);
               this.addWebUIListener(
                   'stored-accounts-updated', storedAccountsChanged);
-              // </if>
             }
 
             override disconnectedCallback() {
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
index f683068..c07a054 100644
--- a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
@@ -92,6 +92,7 @@
     ":network_proxy_section",
     ":settings_traffic_counters",
     ":tether_connection_dialog",
+    "//ash/webui/common/resources/network_health:network_health_container",
     "//ash/webui/common/resources/traffic_counters:traffic_counters",
     "//chrome/browser/resources/settings:router",
     "//chrome/browser/resources/settings/chromeos:deep_linking_behavior",
@@ -116,7 +117,6 @@
     "//ui/webui/resources/cr_components/chromeos/network:network_property_list_mojo",
     "//ui/webui/resources/cr_components/chromeos/network:network_siminfo",
     "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_health_container",
     "//ui/webui/resources/cr_elements:i18n_behavior",
     "//ui/webui/resources/cr_elements:web_ui_listener_behavior",
     "//ui/webui/resources/js:assert.m",
diff --git a/chrome/browser/resources/settings/privacy_page/security_page.ts b/chrome/browser/resources/settings/privacy_page/security_page.ts
index f252dbd..32e28883 100644
--- a/chrome/browser/resources/settings/privacy_page/security_page.ts
+++ b/chrome/browser/resources/settings/privacy_page/security_page.ts
@@ -14,9 +14,10 @@
 import '../settings_shared.css.js';
 import './disable_safebrowsing_dialog.js';
 
+import {HelpBubbleMixin, HelpBubbleMixinInterface} from 'chrome://resources/cr_components/help_bubble/help_bubble_mixin.js';
+import {I18nMixin, I18nMixinInterface} from 'chrome://resources/cr_elements/i18n_mixin.js';
 import {assert} from 'chrome://resources/js/assert_ts.js';
 import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.js';
-import {I18nMixin, I18nMixinInterface} from 'chrome://resources/cr_elements/i18n_mixin.js';
 import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {SettingsRadioGroupElement} from '../controls/settings_radio_group.js';
@@ -60,9 +61,11 @@
 }
 
 const SettingsSecurityPageElementBase =
-    RouteObserverMixin(I18nMixin(PrefsMixin(PolymerElement))) as {
+    HelpBubbleMixin(
+        RouteObserverMixin(I18nMixin(PrefsMixin(PolymerElement)))) as {
       new (): PolymerElement & I18nMixinInterface &
-          RouteObserverMixinInterface & PrefsMixinInterface,
+          RouteObserverMixinInterface & PrefsMixinInterface &
+          HelpBubbleMixinInterface,
     };
 
 export class SettingsSecurityPageElement extends
@@ -227,6 +230,9 @@
         this.$.safeBrowsingStandard.expanded = true;
       }
     });
+
+    this.registerHelpBubbleIdentifier(
+        'kEnhancedProtectionSettingElementId', 'safeBrowsingEnhanced');
   }
 
   /**
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java
index 9545cdb..63e6fbd0 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionView.java
@@ -60,6 +60,11 @@
         mRecyclerView.setItemAnimator(null);
         mRecyclerView.setLayoutManager(
                 new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
+        mRecyclerView.setClipToPadding(false);
+        mRecyclerView.setPaddingRelative(
+                getResources().getDimensionPixelSize(R.dimen.omnibox_suggestion_list_padding_side),
+                mRecyclerView.getPaddingTop(), mRecyclerView.getPaddingEnd(),
+                mRecyclerView.getPaddingBottom());
 
         mSelectionManager =
                 new BaseCarouselSuggestionSelectionManager(mRecyclerView.getLayoutManager());
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
index 1840921c..ed412f8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">Λήψη περιγραφών εικόνων</translation>
 <translation id="6196315980958524839">Οι κωδικοί πρόσβασης αποθηκεύονται στον Διαχειριστή κωδικών πρόσβασης Google σε αυτήν τη συσκευή.</translation>
 <translation id="620197886010707372">Θέλετε να ανοίξετε την εφαρμογή <ph name="APPNAME" /> με το Google Play;</translation>
+<translation id="6202812185118613467">Συνδεθείτε ξανά για να ξεκινήσετε τον συγχρονισμό</translation>
 <translation id="6203593061661911168">Η λήψη θα ξεκινήσει κατά τη σύνδεση σε Wi-Fi.</translation>
 <translation id="6210748933810148297">Δεν είστε ο χρήστης <ph name="EMAIL" />;</translation>
 <translation id="6211386937064921208">Πραγματοποιείται προεπισκόπηση αυτής της σελίδας</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 cb2f598..375432a 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
@@ -46,7 +46,7 @@
 <translation id="1209206284964581585">فعلاً پنهان شود</translation>
 <translation id="1227058898775614466">سابقه پیمایش</translation>
 <translation id="1231733316453485619">همگام‌سازی روشن شود؟</translation>
-<translation id="123724288017357924">تازه‌سازی صفحه اصلی با نادیده گرفتن محتوای حافظه پنهان</translation>
+<translation id="123724288017357924">بار کردن مجدد صفحه اصلی با نادیده گرفتن محتوای حافظه پنهان</translation>
 <translation id="1239792311949352652">به‌سرعت این صفحه را هم‌رسانی کنید. برای ویرایش این میان‌بر، به «تنظیمات» بروید.</translation>
 <translation id="1240190568154816272">‏نکته‌های Chrome</translation>
 <translation id="1240288207750131269">درحال بار کردن <ph name="LANG" /></translation>
@@ -429,7 +429,7 @@
 <translation id="3282568296779691940">‏ورود به Chrome</translation>
 <translation id="3284510035090979597">کمک کنش‌گرایانه</translation>
 <translation id="3285080554353377245">‏ویدیوهایی درباره نحوه استفاده از Chrome</translation>
-<translation id="3288003805934695103">تازه‌سازی صفحه</translation>
+<translation id="3288003805934695103">بار کردن مجدد صفحه</translation>
 <translation id="3290249595466894471">نمونه کوچکی از صفحات، بارگیری‌ها، فعالیت افزونه، و اطلاعات سیستم را هم ارسال می‌کند تا به کشف تهدیدهای جدید کمک کند</translation>
 <translation id="3297344142967351106">دستیار صوتی</translation>
 <translation id="3303414029551471755">ادامه می‌دهید و محتوا را بارگیری می‌کنید؟</translation>
@@ -452,7 +452,7 @@
 <translation id="3428747202529429621">‏وقتی به سیستم وارد شده باشید، امنیت شما را در Chrome حفظ می‌کند و ممکن است برای بهبود امنیت شما در برنامه‌های دیگر Google استفاده شود</translation>
 <translation id="3429160811076349561">ویژگی‌های آزمایشی خاموش است</translation>
 <translation id="3435465986463792564">پنجره‌های زیادی دارید؟ می‌توانید از اینجا مدیریتشان کنید</translation>
-<translation id="3443221991560634068">تازه‌سازی صفحه کنونی</translation>
+<translation id="3443221991560634068">بار کردن مجدد صفحه کنونی</translation>
 <translation id="3444179773590444986">مایلید بازخوردتان را درباره زمینه تیره برای سایت‌ها هم‌رسانی کنید؟</translation>
 <translation id="3452832259067974318">‏برای حفظ حریم‌خصوصی‌تان، Chrome گذرواژه‌تان را به‌طور خودکار در این فیلد وارد نخواهد کرد.</translation>
 <translation id="3469665409713263828">{FILE_COUNT,plural, =1{یک بارگیری زمان‌بندی شد}one{# بارگیری زمان‌بندی شد}other{# بارگیری زمان‌بندی شد}}</translation>
@@ -759,7 +759,7 @@
 <translation id="5126510351761255129">کارتتان را تأیید کنید</translation>
 <translation id="5132942445612118989">همگام‌سازی گذرواژه‌ها، سابقه و موارد دیگر در همه دستگاه‌ها</translation>
 <translation id="5139940364318403933">‏آشنایی با نحوه استفاده از Google Drive</translation>
-<translation id="5142281402488957685">برای داستان‌های جدید، صفحه را به‌طرف پایین بکشید تا بازخوانی شود</translation>
+<translation id="5142281402488957685">برای داستان‌های جدید، صفحه را به‌طرف پایین بکشید تا بازآوری شود</translation>
 <translation id="5152843274749979095">هیچ برنامه پشتیبانی‌شده‌ای نصب نشده است</translation>
 <translation id="5161254044473106830">عنوان مورد نیاز است</translation>
 <translation id="5170568018924773124">نمایش در پوشه</translation>
@@ -828,7 +828,7 @@
 <translation id="5524843473235508879">هدایت کردن مسدود شد.</translation>
 <translation id="5548606607480005320">بررسی ایمنی</translation>
 <translation id="5555525474779371165">انتخاب ویژگی حفاظتی «مرور ایمن»</translation>
-<translation id="5556459405103347317">تازه‌سازی</translation>
+<translation id="5556459405103347317">بار کردن مجدد</translation>
 <translation id="555816257274242153">پیگیری قیمت متوقف شد</translation>
 <translation id="5561162485081632007">رویدادهای خطرناک را درصورت وقوع شناسایی می‌کند و به شما هشدار می‌دهد</translation>
 <translation id="5561549206367097665">در انتظار شبکه…</translation>
@@ -861,7 +861,7 @@
 <translation id="5749237766298580851">خاموش <ph name="SEPARATOR" /> توصیه نمی‌شود</translation>
 <translation id="5752232708629533680">‏فقط هم‌رسانی GIF</translation>
 <translation id="5753139477036638699">‏می‌توانید از صدایتان برای جستجو در Chrome استفاده کنید</translation>
-<translation id="5754350196967618083">«یافته‌ها» بازخوانی نمی‌شود</translation>
+<translation id="5754350196967618083">«یافته‌ها» بازآوری نمی‌شود</translation>
 <translation id="5763382633136178763">برگه‌های ناشناس</translation>
 <translation id="5763514718066511291">برای کپی کردن نشانی وب این برنامه ضربه بزنید</translation>
 <translation id="5765517223145864268">درباره تجربه‌تان به ما بگویید. یا <ph name="BEGIN_LINK" />تنظیماتتان را تغییر دهید<ph name="END_LINK" />.</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 c9d0ad43..e74806b 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
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">છબીના વર્ણનો મેળવો</translation>
 <translation id="6196315980958524839">પાસવર્ડ આ ડિવાઇસના Google Password Managerમાં સાચવવામાં આવે છે</translation>
 <translation id="620197886010707372"><ph name="APPNAME" /> માટે Google Play વડે ઍપ ખોલીએ?</translation>
+<translation id="6202812185118613467">સિંક શરૂ કરવા ફરી સાઇન ઇન કરો</translation>
 <translation id="6203593061661911168">વાઇ-ફાઇ ચાલુ થવા પર, ડાઉનલોડ શરૂ થશે</translation>
 <translation id="6210748933810148297"><ph name="EMAIL" /> નથી?</translation>
 <translation id="6211386937064921208">આ પેજનો પ્રીવ્યૂ કરી રહ્યાં છીએ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
index 8cf4874..14c0c9f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
@@ -1243,7 +1243,7 @@
 <translation id="7698359219371678927"><ph name="APP_NAME" /> қолданбасында электрондық пошта жасау</translation>
 <translation id="7704317875155739195">Іздеулер мен URL мекенжайларын автотолтыру</translation>
 <translation id="770741401784017797">GIF жасалып жатыр</translation>
-<translation id="7707922173985738739">Мобильдік деректерді пайдалану</translation>
+<translation id="7707922173985738739">Мобильдік интернетті пайдалану</translation>
 <translation id="7709094866268987903">Сіз өшірген қызығушылықтар осы жерде болады.</translation>
 <translation id="7709918231054955894">Барлық қойындыны көріңіз</translation>
 <translation id="7725024127233776428">Бетбелгі қойылған беттер осы жерде көрсетіледі</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
index 4e4a55c..3037043 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">Добивајте описи на слики</translation>
 <translation id="6196315980958524839">Лозинките се зачувани во „Управникот со лозинки на Google“ на уредов</translation>
 <translation id="620197886010707372">Да се отвори аплиација за <ph name="APPNAME" /> со Google Play?</translation>
+<translation id="6202812185118613467">Најавете се повторно за да започнете со синхронизација</translation>
 <translation id="6203593061661911168">Преземањето ќе започне кога ќе бидете на Wi-Fi</translation>
 <translation id="6210748933810148297">Не сте <ph name="EMAIL" />?</translation>
 <translation id="6211386937064921208">Преглед на страницава</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 a8546da..d9aa226 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
@@ -949,6 +949,7 @@
 <translation id="6192907950379606605">Зургийн тайлбарыг авах</translation>
 <translation id="6196315980958524839">Нууц үгнүүдийг энэ төхөөрөмж дээр Google Password Manager-т хадгалдаг</translation>
 <translation id="620197886010707372">Google Play-р <ph name="APPNAME" />-н аппыг нээх үү?</translation>
+<translation id="6202812185118613467">Синк хийж эхлэхийн тулд буцаж нэвтэрнэ үү</translation>
 <translation id="6203593061661911168">Таталтыг Wi-Fi-р эхлүүлнэ</translation>
 <translation id="6210748933810148297"><ph name="EMAIL" /> биш үү?</translation>
 <translation id="6211386937064921208">Энэ хуудсыг урьдчилан үзэж байна</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
index c632598c..7bbcb3f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">Afbeeldingsbeschrijvingen ophalen</translation>
 <translation id="6196315980958524839">Wachtwoorden worden opgeslagen in Google Wachtwoordmanager op dit apparaat</translation>
 <translation id="620197886010707372">App voor <ph name="APPNAME" /> openen met Google Play?</translation>
+<translation id="6202812185118613467">Log weer in om de synchronisatie te starten</translation>
 <translation id="6203593061661911168">Download wordt gestart zodra je wifi hebt</translation>
 <translation id="6210748933810148297">Niet <ph name="EMAIL" />?</translation>
 <translation id="6211386937064921208">Voorbeeld van deze pagina bekijken</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
index c1bbf2e..bb835d0e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">Obter descrições de imagens</translation>
 <translation id="6196315980958524839">As palavras-passe são guardadas no Gestor de Palavras-passe da Google neste dispositivo</translation>
 <translation id="620197886010707372">Abrir a app <ph name="APPNAME" /> com o Google Play?</translation>
+<translation id="6202812185118613467">Inicie sessão novamente para iniciar a sincronização</translation>
 <translation id="6203593061661911168">A transferência vai ser iniciada quando tiver ligação ao Wi-Fi</translation>
 <translation id="6210748933810148297"><ph name="EMAIL" /> não é o seu email?</translation>
 <translation id="6211386937064921208">A pré-visualizar esta página…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
index 7e72ef7..53c9c001 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">Získať popisy obrázkov</translation>
 <translation id="6196315980958524839">Heslá sa ukladajú do Správcu hesiel Google v tomto zariadení.</translation>
 <translation id="620197886010707372">Chcete otvoriť aplikáciu pre aplikáciu <ph name="APPNAME" /> pomocou služby Google Play?</translation>
+<translation id="6202812185118613467">Ak chcete spustiť synchronizáciu, znova sa prihláste</translation>
 <translation id="6203593061661911168">Sťahovanie sa začne po pripojení k sieti Wi‑Fi</translation>
 <translation id="6210748933810148297">Nie som <ph name="EMAIL" /></translation>
 <translation id="6211386937064921208">Je zobrazená ukážka tejto stránky</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
index ba06a10b..3e37cbf 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">Preuzimaj opise slika</translation>
 <translation id="6196315980958524839">Lozinke se čuvaju u Google menadžeru lozinki na ovom uređaju</translation>
 <translation id="620197886010707372">Želite da otvorite aplikaciju <ph name="APPNAME" /> pomoću Google Play-a?</translation>
+<translation id="6202812185118613467">Ponovo se prijavite da biste započeli sinhronizaciju</translation>
 <translation id="6203593061661911168">Preuzimanje će početi preko WiFi mreže</translation>
 <translation id="6210748933810148297">Niste <ph name="EMAIL" />?</translation>
 <translation id="6211386937064921208">Pregled ove stranice</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
index 5d5a9a2..58e26893 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">Преузимај описе слика</translation>
 <translation id="6196315980958524839">Лозинке се чувају у Google менаџеру лозинки на овом уређају</translation>
 <translation id="620197886010707372">Желите да отворите апликацију <ph name="APPNAME" /> помоћу Google Play-а?</translation>
+<translation id="6202812185118613467">Поново се пријавите да бисте започели синхронизацију</translation>
 <translation id="6203593061661911168">Преузимање ће почети преко WiFi мреже</translation>
 <translation id="6210748933810148297">Нисте <ph name="EMAIL" />?</translation>
 <translation id="6211386937064921208">Преглед ове странице</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 e5ac0591..3f6dbe5bc 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
@@ -950,6 +950,7 @@
 <translation id="6192907950379606605">ఇమేజ్ వివరణలను పొందండి</translation>
 <translation id="6196315980958524839">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడతాయి</translation>
 <translation id="620197886010707372">Google Playలో <ph name="APPNAME" /> యాప్‌ను తెరవాలా?</translation>
+<translation id="6202812185118613467">సింక్‌ను ప్రారంభించడం కోసం తిరిగి సైన్ ఇన్ చేయండి</translation>
 <translation id="6203593061661911168">Wi-Fi ఆన్ చేసినప్పుడు, డౌన్‌లోడ్ ప్రారంభమవుతుంది</translation>
 <translation id="6210748933810148297"><ph name="EMAIL" /> కాదా?</translation>
 <translation id="6211386937064921208">ఈ పేజీని ప్రివ్యూ చేస్తోంది</translation>
diff --git a/chrome/browser/ui/browser_element_identifiers.cc b/chrome/browser/ui/browser_element_identifiers.cc
index 0d2f238..b849f819 100644
--- a/chrome/browser/ui/browser_element_identifiers.cc
+++ b/chrome/browser/ui/browser_element_identifiers.cc
@@ -14,6 +14,7 @@
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kAvatarButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kBatterySaverButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kBookmarkStarViewElementId);
+DEFINE_ELEMENT_IDENTIFIER_VALUE(kEnhancedProtectionSettingElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kHighEfficiencyChipElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kInstallPwaElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kIntentChipElementId);
diff --git a/chrome/browser/ui/browser_element_identifiers.h b/chrome/browser/ui/browser_element_identifiers.h
index e842b65..f9ded69 100644
--- a/chrome/browser/ui/browser_element_identifiers.h
+++ b/chrome/browser/ui/browser_element_identifiers.h
@@ -23,6 +23,7 @@
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kAvatarButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kBatterySaverButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kBookmarkStarViewElementId);
+DECLARE_ELEMENT_IDENTIFIER_VALUE(kEnhancedProtectionSettingElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kHighEfficiencyChipElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kInstallPwaElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kIntentChipElementId);
diff --git a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
index 8b9e04b..b55fdd3 100644
--- a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
+++ b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
@@ -188,6 +188,10 @@
   }
 }
 
+bool PasswordGenerationPopupControllerImpl::IsVisible() const {
+  return view_;
+}
+
 bool PasswordGenerationPopupControllerImpl::PossiblyAcceptPassword() {
   if (password_selected_) {
     PasswordAccepted();  // This will delete |this|.
@@ -222,7 +226,7 @@
     weak_this->HideImpl();
 }
 
-bool PasswordGenerationPopupControllerImpl::Show(GenerationUIState state) {
+void PasswordGenerationPopupControllerImpl::Show(GenerationUIState state) {
   // When switching from editing to generation state, regenerate the password.
   if (state == kOfferGeneration &&
       (state_ != state || current_generated_password_.empty())) {
@@ -233,13 +237,16 @@
   }
   state_ = state;
 
+  // TODO(crbug.com/1345766): Call the password strength calculation from the
+  // utility process. Store the strength and use it accordingly in the
+  // PasswordGenerationPopupViewViews.
   if (!view_) {
     view_ = PasswordGenerationPopupView::Create(GetWeakPtr());
 
     // Treat popup as being hidden if creation fails.
     if (!view_) {
       HideImpl();
-      return false;
+      return;
     }
     key_press_handler_manager_->RegisterKeyPressHandler(base::BindRepeating(
         [](base::WeakPtr<PasswordGenerationPopupControllerImpl> weak_this,
@@ -249,20 +256,18 @@
         GetWeakPtr()));
     if (!view_->Show()) {
       // The instance is deleted after this point.
-      return false;
+      return;
     }
   } else {
     view_->UpdateState();
     if (!view_->UpdateBoundsAndRedrawPopup()) {
       // The instance is deleted after this point.
-      return false;
+      return;
     }
   }
 
   if (observer_)
     observer_->OnPopupShown(state_);
-
-  return true;
 }
 
 void PasswordGenerationPopupControllerImpl::UpdateTypedPassword(
diff --git a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.h b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.h
index 1b64d7d..068a555 100644
--- a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.h
+++ b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.h
@@ -88,8 +88,7 @@
   ~PasswordGenerationPopupControllerImpl() override;
 
   // Create a PasswordGenerationPopupView if one doesn't already exist.
-  // Returns |true| in case of success, |false| otherwise.
-  bool Show(GenerationUIState state);
+  void Show(GenerationUIState state);
 
   // Update the password typed by the user.
   void UpdateTypedPassword(const std::u16string& new_user_typed_password);
@@ -112,10 +111,15 @@
   // automatically on that field.
   void GeneratedPasswordRejected();
 
+  base::WeakPtr<PasswordGenerationPopupControllerImpl> GetWeakPtr();
+
   // content::WebContentsObserver overrides
   void WebContentsDestroyed() override;
   void PrimaryPageChanged(content::Page& page) override;
 
+  // Returns true if the popup is visible, or false otherwise.
+  bool IsVisible() const;
+
 #if !BUILDFLAG(IS_ANDROID)
   // ZoomObserver implementation.
   void OnZoomChanged(
@@ -159,8 +163,6 @@
   std::u16string SuggestedText() override;
   const std::u16string& HelpText() override;
 
-  base::WeakPtr<PasswordGenerationPopupControllerImpl> GetWeakPtr();
-
   bool HandleKeyPressEvent(const content::NativeWebKeyboardEvent& event);
 
   // Set if the password is currently selected.
diff --git a/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc b/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc
index 039cb7a..9e30738 100644
--- a/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc
+++ b/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc
@@ -81,8 +81,8 @@
                        MouseMovementInEditingPopup) {
   controller_ =
       new autofill::TestPasswordGenerationPopupController(GetWebContents());
-  EXPECT_TRUE(controller_->Show(
-      PasswordGenerationPopupController::kEditGeneratedPassword));
+  controller_->Show(PasswordGenerationPopupController::kEditGeneratedPassword);
+  EXPECT_TRUE(controller_->IsVisible());
 
   GetViewTester()->SimulateMouseMovementAt(
       gfx::Point(GetWebContents()->GetContainerBounds().x() + 1,
@@ -97,8 +97,8 @@
                        CloseWebContentsWithVisiblePopup) {
   controller_ =
       new autofill::TestPasswordGenerationPopupController(GetWebContents());
-  EXPECT_TRUE(controller_->Show(
-      PasswordGenerationPopupController::kEditGeneratedPassword));
+  controller_->Show(PasswordGenerationPopupController::kEditGeneratedPassword);
+  EXPECT_TRUE(controller_->IsVisible());
 
   GetWebContents()->Close();
 }
@@ -107,10 +107,16 @@
 // for showing popup.
 IN_PROC_BROWSER_TEST_F(PasswordGenerationPopupViewTest,
                        DoNotCrashInCaseOfInsuffucientVertialSpace) {
+  // TODO(crbug.com/1365893): Remove TestPasswordGenerationPopupController class
+  // so that only GetOrCreate() would be used and then GetWeakPtr() won't be
+  // needed.
   controller_ = new autofill::TestPasswordGenerationPopupController(
       GetWebContents(), /*vertical_offset=*/-20);
-  EXPECT_FALSE(controller_->Show(
-      PasswordGenerationPopupController::kEditGeneratedPassword));
+  base::WeakPtr<PasswordGenerationPopupControllerImpl> weak_controller =
+      controller_->GetWeakPtr();
+  controller_->Show(PasswordGenerationPopupController::kEditGeneratedPassword);
+  // Check that the object |controller_| points to was invalidated.
+  EXPECT_FALSE(weak_controller);
 }
 
 }  // namespace autofill
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
index 6a7a136..94334a3 100644
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -13,119 +13,133 @@
 
 // Enables the tab dragging fallback when full window dragging is not supported
 // by the platform (e.g. Wayland). See https://crbug.com/896640
-const base::Feature kAllowWindowDragUsingSystemDragDrop{
-    "AllowWindowDragUsingSystemDragDrop", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAllowWindowDragUsingSystemDragDrop,
+             "AllowWindowDragUsingSystemDragDrop",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
-const base::Feature kDesktopPWAsAppHomePage{"DesktopPWAsAppHomePage",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDesktopPWAsAppHomePage,
+             "DesktopPWAsAppHomePage",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif  // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
 
 // Enables Chrome Labs menu in the toolbar. See https://crbug.com/1145666
-const base::Feature kChromeLabs{"ChromeLabs",
-                                base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeLabs, "ChromeLabs", base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
 // Enables "Tips for Chrome" in Main Chrome Menu | Help.
-const base::Feature kChromeTipsInMainMenu{"ChromeTipsInMainMenu",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeTipsInMainMenu,
+             "ChromeTipsInMainMenu",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables "Tips for Chrome" in Main Chrome Menu | Help.
-const base::Feature kChromeTipsInMainMenuNewBadge{
-    "ChromeTipsInMainMenuNewBadge", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeTipsInMainMenuNewBadge,
+             "ChromeTipsInMainMenuNewBadge",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Enables "Chrome What's New" UI.
-const base::Feature kChromeWhatsNewUI {
-  "ChromeWhatsNewUI",
+BASE_FEATURE(kChromeWhatsNewUI,
+             "ChromeWhatsNewUI",
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING) && !defined(ANDROID) && \
     !BUILDFLAG(IS_CHROMEOS_LACROS) && !BUILDFLAG(IS_CHROMEOS_ASH)
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #endif
-};
+);
 
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
 // Enables "new" badge for "Chrome What's New" in Main Chrome Menu | Help.
-const base::Feature kChromeWhatsNewInMainMenuNewBadge{
-    "ChromeWhatsNewInMainMenuNewBadge", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeWhatsNewInMainMenuNewBadge,
+             "ChromeWhatsNewInMainMenuNewBadge",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 #if !defined(ANDROID)
 // Enables "Access Code Cast" UI.
-const base::Feature kAccessCodeCastUI{"AccessCodeCastUI",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAccessCodeCastUI,
+             "AccessCodeCastUI",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 // Enables displaying the submenu to open a link with a different profile
 // even if there is no other profile opened in a separate window
-const base::Feature kDisplayOpenLinkAsProfile{
-    "DisplayOpenLinkAsProfile", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDisplayOpenLinkAsProfile,
+             "DisplayOpenLinkAsProfile",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables showing the EV certificate details in the Page Info bubble.
-const base::Feature kEvDetailsInPageInfo{"EvDetailsInPageInfo",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEvDetailsInPageInfo,
+             "EvDetailsInPageInfo",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 // Controls whether we use a different UX for simple extensions overriding
 // settings.
-const base::Feature kLightweightExtensionOverrideConfirmations{
-    "LightweightExtensionOverrideConfirmations",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kLightweightExtensionOverrideConfirmations,
+             "LightweightExtensionOverrideConfirmations",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 // Enables the reauth flow for authenticated profiles with invalid credentials
 // when the force sign-in policy is enabled.
-const base::Feature kForceSignInReauth{"ForceSignInReauth",
-                                       base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kForceSignInReauth,
+             "ForceSignInReauth",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables a more prominent active tab title in dark mode to aid with
 // accessibility.
-const base::Feature kProminentDarkModeActiveTabTitle{
-    "ProminentDarkModeActiveTabTitle", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kProminentDarkModeActiveTabTitle,
+             "ProminentDarkModeActiveTabTitle",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the QuickCommands UI surface. See https://crbug.com/1014639
-const base::Feature kQuickCommands{"QuickCommands",
-                                   base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kQuickCommands,
+             "QuickCommands",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the side search feature for Google Search. Presents recent Google
 // search results in a browser side panel.
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 // Enable by default as the ChromeOS iteration of Side Search has launched (See
 // crbug.com/1242730).
-const base::Feature kSideSearch{"SideSearch", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSideSearch, "SideSearch", base::FEATURE_ENABLED_BY_DEFAULT);
 #else
 // Disable by default on remaining desktop platforms until desktop UX has
 // launched (See crbug.com/1279696).
-const base::Feature kSideSearch{"SideSearch",
-                                base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSideSearch, "SideSearch", base::FEATURE_DISABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
-const base::Feature kSideSearchFeedback{"SideSearchFeedback",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSideSearchFeedback,
+             "SideSearchFeedback",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether the Side Search feature is configured to support any
 // participating Chrome search engine. This should always be enabled with
 // kSideSearch on non-ChromeOS platforms.
-const base::Feature kSideSearchDSESupport{"SideSearchDSESupport",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSideSearchDSESupport,
+             "SideSearchDSESupport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Displays right-click search results of a highlighted text in side panel,
 // So users are not forced to switch to a new tab to view the search results
-const base::Feature kSearchWebInSidePanel{"SearchWebInSidePanel",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSearchWebInSidePanel,
+             "SearchWebInSidePanel",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Whether to clobber all side search side panels in the current browser window
 // or only the side search in the current tab before read later or lens side
 // panel is open.
-const base::Feature kClobberAllSideSearchSidePanels{
-    "ClobberAllSideSearchSidePanels", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kClobberAllSideSearchSidePanels,
+             "ClobberAllSideSearchSidePanels",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Feature that controls whether or not feature engagement configurations can be
 // used to control automatic triggering for side search.
-const base::Feature kSideSearchAutoTriggering{"SideSearchAutoTriggering",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSideSearchAutoTriggering,
+             "SideSearchAutoTriggering",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Feature param that determines how many times a user has to return to a given
 // SRP before we automatically trigger the side search side panel for that SRP
@@ -136,51 +150,58 @@
 // Adds improved support for handling multiple contextual and global RHS browser
 // side panels. Designed specifically to handle the interim state before the v2
 // side panel project launches.
-const base::Feature kSidePanelImprovedClobbering{
-    "SidePanelImprovedClobbering", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSidePanelImprovedClobbering,
+             "SidePanelImprovedClobbering",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSidePanelWebView{"SidePanelWebView",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSidePanelWebView,
+             "SidePanelWebView",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kSidePanelJourneys{"SidePanelJourneys",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSidePanelJourneys,
+             "SidePanelJourneys",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // If enabled, and the main flag is also enabled, the Journeys omnibox
 // entrypoints open Journeys in Side Panel rather than the History WebUI.
 const base::FeatureParam<bool> kSidePanelJourneysOpensFromOmnibox{
     &kSidePanelJourneys, "SidePanelJourneysOpensFromOmnibox", false};
 
 // Enables tabs to scroll in the tabstrip. https://crbug.com/951078
-const base::Feature kScrollableTabStrip{"ScrollableTabStrip",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kScrollableTabStrip,
+             "ScrollableTabStrip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const char kMinimumTabWidthFeatureParameterName[] = "minTabWidth";
 
 // Splits pinned and unpinned tabs into separate TabStrips.
 // https://crbug.com/1346019
-const base::Feature kSplitTabStrip("SplitTabStrip",
-                                   base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kSplitTabStrip,
+             "SplitTabStrip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Directly controls the "new" badge (as opposed to old "master switch"; see
 // https://crbug.com/1169907 for master switch deprecation and
 // https://crbug.com/968587 for the feature itself)
 // https://crbug.com/1173792
-const base::Feature kTabGroupsNewBadgePromo{"TabGroupsNewBadgePromo",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabGroupsNewBadgePromo,
+             "TabGroupsNewBadgePromo",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables users to explicitly save and recall tab groups.
 // https://crbug.com/1223929
-const base::Feature kTabGroupsSave{"TabGroupsSave",
-                                   base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabGroupsSave,
+             "TabGroupsSave",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables preview images in tab-hover cards.
 // https://crbug.com/928954
-const base::Feature kTabHoverCardImages {
-  "TabHoverCardImages",
+BASE_FEATURE(kTabHoverCardImages,
+             "TabHoverCardImages",
 #if BUILDFLAG(IS_MAC)
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
 const char kTabHoverCardImagesNotReadyDelayParameterName[] =
     "page_not_ready_delay";
@@ -194,19 +215,23 @@
 const char kTabHoverCardAlternateFormat[] = "alternate_format";
 
 // Enables tab outlines in additional situations for accessibility.
-const base::Feature kTabOutlinesInLowContrastThemes{
-    "TabOutlinesInLowContrastThemes", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabOutlinesInLowContrastThemes,
+             "TabOutlinesInLowContrastThemes",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kTabSearchChevronIcon{"TabSearchChevronIcon",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabSearchChevronIcon,
+             "TabSearchChevronIcon",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables the tab search submit feedback button.
-const base::Feature kTabSearchFeedback{"TabSearchFeedback",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabSearchFeedback,
+             "TabSearchFeedback",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether or not to use fuzzy search for tab search.
-const base::Feature kTabSearchFuzzySearch{"TabSearchFuzzySearch",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabSearchFuzzySearch,
+             "TabSearchFuzzySearch",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 const char kTabSearchSearchThresholdName[] = "TabSearchSearchThreshold";
 
@@ -237,8 +262,9 @@
     &kTabSearchFuzzySearch, "TabSearchMoveActiveTabToBottom", true};
 
 // Controls feature parameters for Tab Search's `Recently Closed` entries.
-const base::Feature kTabSearchRecentlyClosed{"TabSearchRecentlyClosed",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kTabSearchRecentlyClosed,
+             "TabSearchRecentlyClosed",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 const base::FeatureParam<int> kTabSearchRecentlyClosedDefaultItemDisplayCount{
     &kTabSearchRecentlyClosed, "TabSearchRecentlyClosedDefaultItemDisplayCount",
@@ -247,60 +273,65 @@
 const base::FeatureParam<int> kTabSearchRecentlyClosedTabCountThreshold{
     &kTabSearchRecentlyClosed, "TabSearchRecentlyClosedTabCountThreshold", 100};
 
-const base::Feature kTabSearchUseMetricsReporter{
-    "TabSearchUseMetricsReporter", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTabSearchUseMetricsReporter,
+             "TabSearchUseMetricsReporter",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kToolbarUseHardwareBitmapDraw{
-    "ToolbarUseHardwareBitmapDraw", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kToolbarUseHardwareBitmapDraw,
+             "ToolbarUseHardwareBitmapDraw",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether top chrome pages will use the spare renderer if no top
 // chrome renderers are present.
-const base::Feature kTopChromeWebUIUsesSpareRenderer{
-    "TopChromeWebUIUsesSpareRenderer", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTopChromeWebUIUsesSpareRenderer,
+             "TopChromeWebUIUsesSpareRenderer",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kUnifiedSidePanel{"UnifiedSidePanel",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUnifiedSidePanel,
+             "UnifiedSidePanel",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // This enables enables persistence of a WebContents in a 1-to-1 association
 // with the current Profile for WebUI bubbles. See https://crbug.com/1177048.
-const base::Feature kWebUIBubblePerProfilePersistence{
-    "WebUIBubblePerProfilePersistence", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kWebUIBubblePerProfilePersistence,
+             "WebUIBubblePerProfilePersistence",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables a web-based tab strip. See https://crbug.com/989131. Note this
 // feature only works when the ENABLE_WEBUI_TAB_STRIP buildflag is enabled.
-const base::Feature kWebUITabStrip {
-  "WebUITabStrip",
+BASE_FEATURE(kWebUITabStrip,
+             "WebUITabStrip",
 #if BUILDFLAG(IS_CHROMEOS)
-      base::FEATURE_ENABLED_BY_DEFAULT
-};
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
-};
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // The default value of this flag is aligned with platform behavior to handle
 // context menu with touch.
 // TODO(crbug.com/1257626): Enable this flag for all platforms after launch.
-const base::Feature kWebUITabStripContextMenuAfterTap {
-  "WebUITabStripContextMenuAfterTap",
+BASE_FEATURE(kWebUITabStripContextMenuAfterTap,
+             "WebUITabStripContextMenuAfterTap",
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
 #if BUILDFLAG(IS_CHROMEOS)
-const base::Feature kChromeOSTabSearchCaptionButton{
-    "ChromeOSTabSearchCaptionButton", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kChromeOSTabSearchCaptionButton,
+             "ChromeOSTabSearchCaptionButton",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 #if BUILDFLAG(IS_MAC)
 // Enabled an experiment which increases the prominence to grant MacOS system
 // location permission to Chrome when location permissions have already been
 // approved. https://crbug.com/1211052
-const base::Feature kLocationPermissionsExperiment{
-    "LocationPermissionsExperiment", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLocationPermissionsExperiment,
+             "LocationPermissionsExperiment",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 constexpr base::FeatureParam<int>
     kLocationPermissionsExperimentBubblePromptLimit{
         &kLocationPermissionsExperiment, "bubble_prompt_count", 3};
@@ -308,14 +339,17 @@
     kLocationPermissionsExperimentLabelPromptLimit{
         &kLocationPermissionsExperiment, "label_prompt_count", 5};
 
-const base::Feature kViewsFirstRunDialog{"ViewsFirstRunDialog",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kViewsFirstRunDialog,
+             "ViewsFirstRunDialog",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kViewsTaskManager{"ViewsTaskManager",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kViewsTaskManager,
+             "ViewsTaskManager",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kViewsJSAppModalDialog{"ViewsJSAppModalDialog",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kViewsJSAppModalDialog,
+             "ViewsJSAppModalDialog",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 int GetLocationPermissionsExperimentBubblePromptLimit() {
   return kLocationPermissionsExperimentBubblePromptLimit.Get();
@@ -329,8 +363,9 @@
 
 // Moves the Tab Search button into the browser frame's caption button area on
 // Windows 10 (crbug.com/1223847).
-const base::Feature kWin10TabSearchCaptionButton{
-    "Win10TabSearchCaptionButton", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kWin10TabSearchCaptionButton,
+             "Win10TabSearchCaptionButton",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #endif
 
diff --git a/chrome/browser/ui/ui_features.h b/chrome/browser/ui/ui_features.h
index a53d44b..27349370 100644
--- a/chrome/browser/ui/ui_features.h
+++ b/chrome/browser/ui/ui_features.h
@@ -23,72 +23,72 @@
 
 // TODO(https://crbug.com/896640): Remove this when the tab dragging
 // interactive_ui_tests pass on Wayland.
-extern const base::Feature kAllowWindowDragUsingSystemDragDrop;
+BASE_DECLARE_FEATURE(kAllowWindowDragUsingSystemDragDrop);
 
 #if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
-extern const base::Feature kDesktopPWAsAppHomePage;
+BASE_DECLARE_FEATURE(kDesktopPWAsAppHomePage);
 #endif  // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
 
-extern const base::Feature kChromeLabs;
+BASE_DECLARE_FEATURE(kChromeLabs);
 
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-extern const base::Feature kChromeTipsInMainMenu;
+BASE_DECLARE_FEATURE(kChromeTipsInMainMenu);
 
-extern const base::Feature kChromeTipsInMainMenuNewBadge;
+BASE_DECLARE_FEATURE(kChromeTipsInMainMenuNewBadge);
 #endif
 
-extern const base::Feature kChromeWhatsNewUI;
+BASE_DECLARE_FEATURE(kChromeWhatsNewUI);
 
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-extern const base::Feature kChromeWhatsNewInMainMenuNewBadge;
+BASE_DECLARE_FEATURE(kChromeWhatsNewInMainMenuNewBadge);
 #endif
 
 #if !defined(ANDROID)
-extern const base::Feature kAccessCodeCastUI;
+BASE_DECLARE_FEATURE(kAccessCodeCastUI);
 #endif
 
-extern const base::Feature kDisplayOpenLinkAsProfile;
+BASE_DECLARE_FEATURE(kDisplayOpenLinkAsProfile);
 
-extern const base::Feature kEvDetailsInPageInfo;
+BASE_DECLARE_FEATURE(kEvDetailsInPageInfo);
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-extern const base::Feature kLightweightExtensionOverrideConfirmations;
+BASE_DECLARE_FEATURE(kLightweightExtensionOverrideConfirmations);
 #endif
 
-extern const base::Feature kForceSignInReauth;
+BASE_DECLARE_FEATURE(kForceSignInReauth);
 
-extern const base::Feature kProminentDarkModeActiveTabTitle;
+BASE_DECLARE_FEATURE(kProminentDarkModeActiveTabTitle);
 
-extern const base::Feature kQuickCommands;
+BASE_DECLARE_FEATURE(kQuickCommands);
 
-extern const base::Feature kScrollableTabStrip;
+BASE_DECLARE_FEATURE(kScrollableTabStrip);
 extern const char kMinimumTabWidthFeatureParameterName[];
 
-extern const base::Feature kSplitTabStrip;
+BASE_DECLARE_FEATURE(kSplitTabStrip);
 
 // TODO(pbos): Once kReadLater is cleaned up on Desktop, move definition into
 // ui_features.cc. This is currently temporarily in reading_list_switches.h.
-extern const base::Feature kSidePanelImprovedClobbering;
+BASE_DECLARE_FEATURE(kSidePanelImprovedClobbering);
 
-extern const base::Feature kSidePanelWebView;
+BASE_DECLARE_FEATURE(kSidePanelWebView);
 
-extern const base::Feature kSidePanelJourneys;
+BASE_DECLARE_FEATURE(kSidePanelJourneys);
 extern const base::FeatureParam<bool> kSidePanelJourneysOpensFromOmnibox;
 
-extern const base::Feature kSideSearch;
-extern const base::Feature kSideSearchFeedback;
-extern const base::Feature kSideSearchDSESupport;
-extern const base::Feature kSearchWebInSidePanel;
-extern const base::Feature kClobberAllSideSearchSidePanels;
+BASE_DECLARE_FEATURE(kSideSearch);
+BASE_DECLARE_FEATURE(kSideSearchFeedback);
+BASE_DECLARE_FEATURE(kSideSearchDSESupport);
+BASE_DECLARE_FEATURE(kSearchWebInSidePanel);
+BASE_DECLARE_FEATURE(kClobberAllSideSearchSidePanels);
 
-extern const base::Feature kSideSearchAutoTriggering;
+BASE_DECLARE_FEATURE(kSideSearchAutoTriggering);
 extern const base::FeatureParam<int> kSideSearchAutoTriggeringReturnCount;
 
-extern const base::Feature kTabGroupsNewBadgePromo;
+BASE_DECLARE_FEATURE(kTabGroupsNewBadgePromo);
 
-extern const base::Feature kTabGroupsSave;
+BASE_DECLARE_FEATURE(kTabGroupsSave);
 
-extern const base::Feature kTabHoverCardImages;
+BASE_DECLARE_FEATURE(kTabHoverCardImages);
 
 // These parameters control how long the hover card system waits before
 // requesting a preview image from a tab where no preview image is available.
@@ -117,13 +117,13 @@
 // on top. 0 is the default layout.
 extern const char kTabHoverCardAlternateFormat[];
 
-extern const base::Feature kTabOutlinesInLowContrastThemes;
+BASE_DECLARE_FEATURE(kTabOutlinesInLowContrastThemes);
 
-extern const base::Feature kTabSearchChevronIcon;
+BASE_DECLARE_FEATURE(kTabSearchChevronIcon);
 
-extern const base::Feature kTabSearchFeedback;
+BASE_DECLARE_FEATURE(kTabSearchFeedback);
 
-extern const base::Feature kTabSearchFuzzySearch;
+BASE_DECLARE_FEATURE(kTabSearchFuzzySearch);
 
 extern const char kTabSearchSearchThresholdName[];
 
@@ -163,7 +163,7 @@
 // Whether to move the active tab to the bottom of the list.
 extern const base::FeatureParam<bool> kTabSearchMoveActiveTabToBottom;
 
-extern const base::Feature kTabSearchRecentlyClosed;
+BASE_DECLARE_FEATURE(kTabSearchRecentlyClosed);
 
 // Default number of recently closed entries to display by default when no
 // search text is provided.
@@ -175,42 +175,42 @@
 // count have been met.
 extern const base::FeatureParam<int> kTabSearchRecentlyClosedTabCountThreshold;
 
-extern const base::Feature kTabSearchUseMetricsReporter;
+BASE_DECLARE_FEATURE(kTabSearchUseMetricsReporter);
 
 // Determines how screenshots of the toolbar uses Software or Hardware drawing.
 // Works on Android 10+.
-extern const base::Feature kToolbarUseHardwareBitmapDraw;
+BASE_DECLARE_FEATURE(kToolbarUseHardwareBitmapDraw);
 
-extern const base::Feature kTopChromeWebUIUsesSpareRenderer;
+BASE_DECLARE_FEATURE(kTopChromeWebUIUsesSpareRenderer);
 
-extern const base::Feature kUnifiedSidePanel;
+BASE_DECLARE_FEATURE(kUnifiedSidePanel);
 
-extern const base::Feature kWebUIBubblePerProfilePersistence;
+BASE_DECLARE_FEATURE(kWebUIBubblePerProfilePersistence);
 
-extern const base::Feature kWebUITabStrip;
+BASE_DECLARE_FEATURE(kWebUITabStrip);
 
 // Controls whether the context menu is shown on a touch press or a touch
 // tap gesture on the WebUI Tab Strip.
-extern const base::Feature kWebUITabStripContextMenuAfterTap;
+BASE_DECLARE_FEATURE(kWebUITabStripContextMenuAfterTap);
 
 #if BUILDFLAG(IS_CHROMEOS)
-extern const base::Feature kChromeOSTabSearchCaptionButton;
+BASE_DECLARE_FEATURE(kChromeOSTabSearchCaptionButton);
 #endif
 
 // Cocoa to views migration.
 #if BUILDFLAG(IS_MAC)
-extern const base::Feature kLocationPermissionsExperiment;
+BASE_DECLARE_FEATURE(kLocationPermissionsExperiment);
 
-extern const base::Feature kViewsFirstRunDialog;
-extern const base::Feature kViewsTaskManager;
-extern const base::Feature kViewsJSAppModalDialog;
+BASE_DECLARE_FEATURE(kViewsFirstRunDialog);
+BASE_DECLARE_FEATURE(kViewsTaskManager);
+BASE_DECLARE_FEATURE(kViewsJSAppModalDialog);
 
 int GetLocationPermissionsExperimentBubblePromptLimit();
 int GetLocationPermissionsExperimentLabelPromptLimit();
 #endif
 
 #if BUILDFLAG(IS_WIN)
-extern const base::Feature kWin10TabSearchCaptionButton;
+BASE_DECLARE_FEATURE(kWin10TabSearchCaptionButton);
 #endif
 
 }  // namespace features
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc
index 58e8a552..7ed72df 100644
--- a/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc
+++ b/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/ui/test/test_browser_dialog.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/location_bar/location_icon_view.h"
+#include "chrome/browser/ui/views/page_info/page_info_cookies_content_view.h"
 #include "chrome/browser/ui/views/page_info/page_info_main_view.h"
 #include "chrome/browser/ui/views/page_info/page_info_view_factory.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
@@ -652,3 +653,141 @@
                        InvokeUi_History) {
   ShowAndVerifyUi();
 }
+
+class PageInfoBubbleViewCookiesSubpageBrowserTest : public DialogBrowserTest {
+ public:
+  PageInfoBubbleViewCookiesSubpageBrowserTest() {
+    feature_list_.InitWithFeatures(
+        {page_info::kPageInfoCookiesSubpage,
+         privacy_sandbox::kPrivacySandboxFirstPartySetsUI},
+        {});
+  }
+
+  // DialogBrowserTest:
+  void ShowUi(const std::string& name_with_param_suffix) override {
+    // Bubble dialogs' bounds may exceed the display's work area.
+    // https://crbug.com/893292.
+    set_should_verify_dialog_bounds(false);
+
+    const std::string& name =
+        name_with_param_suffix.substr(0, name_with_param_suffix.find("/"));
+
+    constexpr char kCookiesSubpageFpsBlocked3pcAllowed[] =
+        "CookiesSubpageFpsBlocked3pcAllowed";
+    constexpr char kCookiesSubpageFpsAllowed3pcBlocked[] =
+        "CookiesSubpageFpsAllowed3pcBlocked";
+    constexpr char kCookiesSubpageFpsBlocked3pcBlocked[] =
+        "CookiesSubpageFpsBlocked3pcBlocked";
+    constexpr char kCookiesSubpageFpsAllowed3pcAllowed[] =
+        "CookiesSubpageFpsAllowed3pcAllowed";
+    constexpr char kCookiesSubpageFpsAllowed3pcEnforcedByPolicy[] =
+        "CookiesSubpageFpsAllowed3pcEnforcedByPolicy";
+    constexpr char kCookiesSubpageFpsAllowed3pcEnforcedByExtension[] =
+        "CookiesSubpageFpsAllowed3pcEnforcedByExtension";
+    constexpr char kCookiesSubpageFpsAllowed3pcEnforcedByCookieSetting[] =
+        "CookiesSubpageFpsAllowed3pcEnforcedByCookieSetting";
+
+    const int blocked_sites_count = 8;
+    const int allowed_sites_count = 9;
+    const std::u16string kSiteOrigin = u"example.com";
+
+    PageInfoUI::CookiesNewInfo cookie_info;
+    cookie_info.allowed_sites_count = allowed_sites_count;
+    cookie_info.blocked_sites_count = blocked_sites_count;
+    cookie_info.enforcement = CookieControlsEnforcement::kNoEnforcement;
+    cookie_info.status = CookieControlsStatus::kEnabled;
+    // TODO(crbug.com/1346305): Add fps enforcement info when finished
+    // implementing it.
+    if (name == kCookiesSubpageFpsAllowed3pcAllowed ||
+        name == kCookiesSubpageFpsAllowed3pcBlocked ||
+        name == kCookiesSubpageFpsAllowed3pcEnforcedByPolicy ||
+        name == kCookiesSubpageFpsAllowed3pcEnforcedByExtension ||
+        name == kCookiesSubpageFpsAllowed3pcEnforcedByCookieSetting) {
+      cookie_info.fps_info = {PageInfoUI::CookiesFpsInfo(kSiteOrigin)};
+    }  // Otherwise by default it's null
+
+    if (name == kCookiesSubpageFpsAllowed3pcBlocked ||
+        name == kCookiesSubpageFpsBlocked3pcBlocked ||
+        name == kCookiesSubpageFpsAllowed3pcEnforcedByPolicy ||
+        name == kCookiesSubpageFpsAllowed3pcEnforcedByExtension ||
+        name == kCookiesSubpageFpsAllowed3pcEnforcedByCookieSetting) {
+      cookie_info.status = CookieControlsStatus::kEnabled;
+      if (name == kCookiesSubpageFpsAllowed3pcEnforcedByPolicy) {
+        cookie_info.enforcement = CookieControlsEnforcement::kEnforcedByPolicy;
+      } else if (name == kCookiesSubpageFpsAllowed3pcEnforcedByExtension) {
+        cookie_info.enforcement =
+            CookieControlsEnforcement::kEnforcedByExtension;
+      } else if (name == kCookiesSubpageFpsAllowed3pcEnforcedByCookieSetting) {
+        cookie_info.enforcement =
+            CookieControlsEnforcement::kEnforcedByCookieSetting;
+      }
+    } else if (name == kCookiesSubpageFpsAllowed3pcAllowed ||
+               name == kCookiesSubpageFpsBlocked3pcAllowed) {
+      cookie_info.status = CookieControlsStatus::kDisabled;
+    }
+
+    // Open Page Info and wait for it to be fully initialized.
+    base::RunLoop run_loop;
+    GetPageInfoDialogCreatedCallbackForTesting() = run_loop.QuitClosure();
+    OpenPageInfoBubble(browser());
+    run_loop.Run();
+
+    auto* bubble_view = static_cast<PageInfoBubbleView*>(
+        PageInfoBubbleView::GetPageInfoBubbleForTesting());
+    auto* presenter = bubble_view->presenter_for_testing();
+    EXPECT_TRUE(presenter);
+    EXPECT_TRUE(presenter->ui_for_testing());
+
+    // Open Cookies Subpage and wait for it to be fully initialized.
+    base::RunLoop run_loop2;
+    bubble_view->OpenCookiesPage();
+    auto* cookies_subpage_content = static_cast<PageInfoCookiesContentView*>(
+        bubble_view
+            ->GetViewByID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_CURRENT_VIEW)
+            ->children()[1]);
+    cookies_subpage_content->SetInitializedCallbackForTesting(
+        run_loop2.QuitClosure());
+    run_loop2.Run();
+
+    presenter->ui_for_testing()->SetCookieInfo(cookie_info);
+
+    // Removing the focus as with tests run in parallel it causes different
+    // outputs.
+    bubble_view->GetFocusManager()->SetFocusedView(nullptr);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(PageInfoBubbleViewCookiesSubpageBrowserTest,
+                       InvokeUi_CookiesSubpageFpsBlocked3pcAllowed) {
+  ShowAndVerifyUi();
+}
+
+IN_PROC_BROWSER_TEST_F(PageInfoBubbleViewCookiesSubpageBrowserTest,
+                       InvokeUi_CookiesSubpageFpsAllowed3pcBlocked) {
+  ShowAndVerifyUi();
+}
+IN_PROC_BROWSER_TEST_F(PageInfoBubbleViewCookiesSubpageBrowserTest,
+                       InvokeUi_CookiesSubpageFpsBlocked3pcBlocked) {
+  ShowAndVerifyUi();
+}
+IN_PROC_BROWSER_TEST_F(PageInfoBubbleViewCookiesSubpageBrowserTest,
+                       InvokeUi_CookiesSubpageFpsAllowed3pcAllowed) {
+  ShowAndVerifyUi();
+}
+IN_PROC_BROWSER_TEST_F(PageInfoBubbleViewCookiesSubpageBrowserTest,
+                       InvokeUi_CookiesSubpageFpsAllowed3pcEnforcedByPolicy) {
+  ShowAndVerifyUi();
+}
+IN_PROC_BROWSER_TEST_F(
+    PageInfoBubbleViewCookiesSubpageBrowserTest,
+    InvokeUi_CookiesSubpageFpsAllowed3pcEnforcedByExtension) {
+  ShowAndVerifyUi();
+}
+IN_PROC_BROWSER_TEST_F(
+    PageInfoBubbleViewCookiesSubpageBrowserTest,
+    InvokeUi_CookiesSubpageFpsAllowed3pcEnforcedByCookieSetting) {
+  ShowAndVerifyUi();
+}
diff --git a/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc b/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc
index 5961910..40efa96f 100644
--- a/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc
+++ b/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc
@@ -274,9 +274,10 @@
       l10n_util::GetStringUTF16(IDS_PAGE_INFO_BLOCK_THIRD_PARTY_COOKIES_TITLE);
   const auto icon = PageInfoViewFactory::GetBlockingThirdPartyCookiesIcon();
 
+  // |blocking_third_party_cookies_row_| has to be the first cookie button.
   blocking_third_party_cookies_row_ =
-      cookies_buttons_container_view_->AddChildView(
-          std::make_unique<PageInfoRowView>());
+      cookies_buttons_container_view_->AddChildViewAt(
+          std::make_unique<PageInfoRowView>(), 0);
   blocking_third_party_cookies_row_->SetTitle(title);
   blocking_third_party_cookies_row_->SetIcon(icon);
   blocking_third_party_cookies_row_->SetID(
diff --git a/chrome/browser/ui/views/profiles/dice_web_signin_interception_bubble_view_browsertest.cc b/chrome/browser/ui/views/profiles/dice_web_signin_interception_bubble_view_browsertest.cc
index 76f4159..10ef32a 100644
--- a/chrome/browser/ui/views/profiles/dice_web_signin_interception_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/dice_web_signin_interception_bubble_view_browsertest.cc
@@ -172,11 +172,15 @@
       public testing::WithParamInterface<TestParam> {
  public:
   DiceWebSigninInterceptionBubblePixelTest() {
+    std::vector<base::Feature> enabled_features = {};
+    // `kSigninInterceptBubbleV2` feature is tested in
+    // `DiceWebSigninInterceptionBubbleV2PixelTest`
+    std::vector<base::Feature> disabled_features = {kSigninInterceptBubbleV2};
     if (GetParam().use_dark_theme) {
-      base_scoped_feature_list_.InitAndEnableFeature(features::kWebUIDarkMode);
-    } else {
-      base_scoped_feature_list_.Init();
+      enabled_features.push_back(features::kWebUIDarkMode);
     }
+    base_scoped_feature_list_.InitWithFeatures(enabled_features,
+                                               disabled_features);
   }
 
   // DialogBrowserTest:
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
index b2481f76..f9a01e5 100644
--- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
@@ -714,6 +714,14 @@
   builder->Add("TPMCheckSubtitle", IDS_TPM_CHECK_SUBTITLE);
   builder->Add("cancelButton", IDS_CANCEL);
 
+  // Skip Confirmation Dialogue strings
+  builder->Add("skipConfirmationDialogTitle", IDS_SKIP_ENROLLMENT_DIALOG_TITLE);
+  builder->Add("skipConfirmationDialogText", IDS_SKIP_ENROLLMENT_DIALOG_TEXT);
+  builder->Add("skipConfirmationgoBackButton",
+               IDS_SKIP_ENROLLMENT_DIALOG_GO_BACK_BUTTON);
+  builder->Add("skipConfirmationSkipButton",
+               IDS_SKIP_ENROLLMENT_DIALOG_SKIP_BUTTON);
+
   /* Active Directory strings */
   builder->Add("oauthEnrollAdMachineNameInput", IDS_AD_DEVICE_NAME_INPUT_LABEL);
   builder->Add("oauthEnrollAdDomainJoinWelcomeMessage",
@@ -789,6 +797,10 @@
   UpdateStateInternal(reason, false);
 }
 
+void EnrollmentScreenHandler::ShowSkipConfirmationDialog() {
+  CallJS("login.OAuthEnrollmentScreen.showSkipConfirmationDialog");
+}
+
 // TODO(rsorokin): This function is mostly copied from SigninScreenHandler and
 // should be refactored in the future.
 void EnrollmentScreenHandler::UpdateStateInternal(
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
index e369ede..31e2c81 100644
--- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
@@ -84,6 +84,7 @@
   void Bind(ash::EnrollmentScreen* screen) override;
   void Unbind() override;
   void ShowSigninScreen() override;
+  void ShowSkipConfirmationDialog() override;
   void ShowUserError(UserErrorType error_type,
                      const std::string& email) override;
   void ShowEnrollmentDuringTrialNotAllowedError() override;
diff --git a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc
index b89e3fc7..5fc97eb 100644
--- a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc
+++ b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc
@@ -15,6 +15,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
+#include "base/time/time_to_iso8601.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/history/history_service_factory.h"
 #include "chrome/browser/history_clusters/history_clusters_metrics_logger.h"
@@ -176,6 +177,8 @@
     visit_mojom->debug_info["visit_id"] =
         base::NumberToString(annotated_visit.visit_row.visit_id);
     visit_mojom->debug_info["score"] = base::NumberToString(visit.score);
+    visit_mojom->debug_info["visit_time"] =
+        base::TimeToISO8601(visit.annotated_visit.visit_row.visit_time);
     visit_mojom->debug_info["visit_duration"] = base::NumberToString(
         annotated_visit.visit_row.visit_duration.InSecondsF());
   }
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc
index 61d4c90..ea3753c 100644
--- a/chrome/browser/ui/webui/settings/settings_ui.cc
+++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -21,6 +21,7 @@
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/ui/browser_element_identifiers.h"
 #include "chrome/browser/ui/hats/hats_service.h"
 #include "chrome/browser/ui/hats/hats_service_factory.h"
 #include "chrome/browser/ui/managed_ui.h"
@@ -83,6 +84,7 @@
 #include "content/public/browser/web_ui_data_source.h"
 #include "crypto/crypto_buildflags.h"
 #include "printing/buildflags/buildflags.h"
+#include "ui/base/interaction/element_identifier.h"
 
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
 #include "chrome/grit/chrome_unscaled_resources.h"
@@ -173,13 +175,7 @@
 }
 
 SettingsUI::SettingsUI(content::WebUI* web_ui)
-    :
-#if !BUILDFLAG(IS_CHROMEOS_ASH)
-      ui::MojoWebUIController(web_ui, /*enable_chrome_send=*/true),
-      customize_themes_factory_receiver_(this),
-#else  // !BUILDFLAG(IS_CHROMEOS_ASH)
-      content::WebUIController(web_ui),
-#endif
+    : ui::MojoWebUIController(web_ui, /*enable_chrome_send=*/true),
       webui_load_timer_(web_ui->GetWebContents(),
                         "Settings.LoadDocumentTime.MD",
                         "Settings.LoadCompletedTime.MD") {
@@ -341,7 +337,7 @@
 
   // This is the browser settings page.
   html_source->AddBoolean("isOSSettings", false);
-#endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
 #if BUILDFLAG(IS_CHROMEOS_LACROS)
   // Lacros has no access to AccountHasUserFacingPassword() (Ash only). Assign
@@ -519,6 +515,14 @@
 }
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
+void SettingsUI::BindInterface(
+    mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandlerFactory>
+        pending_receiver) {
+  if (help_bubble_handler_factory_receiver_.is_bound())
+    help_bubble_handler_factory_receiver_.reset();
+  help_bubble_handler_factory_receiver_.Bind(std::move(pending_receiver));
+}
+
 void SettingsUI::AddSettingsPageUIHandler(
     std::unique_ptr<content::WebUIMessageHandler> handler) {
   DCHECK(handler);
@@ -547,6 +551,14 @@
 }
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
+void SettingsUI::CreateHelpBubbleHandler(
+    mojo::PendingRemote<help_bubble::mojom::HelpBubbleClient> client,
+    mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandler> handler) {
+  help_bubble_handler_ = std::make_unique<user_education::HelpBubbleHandler>(
+      std::move(handler), std::move(client), web_ui()->GetWebContents(),
+      std::vector<ui::ElementIdentifier>{kEnhancedProtectionSettingElementId});
+}
+
 WEB_UI_CONTROLLER_TYPE_IMPL(SettingsUI)
 
 }  // namespace settings
diff --git a/chrome/browser/ui/webui/settings/settings_ui.h b/chrome/browser/ui/webui/settings/settings_ui.h
index 5c48c62..316a9c2 100644
--- a/chrome/browser/ui/webui/settings/settings_ui.h
+++ b/chrome/browser/ui/webui/settings/settings_ui.h
@@ -9,13 +9,15 @@
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/webui/webui_load_timer.h"
+#include "components/user_education/webui/help_bubble_handler.h"
 #include "content/public/browser/web_ui_controller.h"
-
-#if !BUILDFLAG(IS_CHROMEOS_ASH)
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "ui/webui/mojo_web_ui_controller.h"
+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h"
+
+#if !BUILDFLAG(IS_CHROMEOS_ASH)
 #include "ui/webui/resources/cr_components/customize_themes/customize_themes.mojom.h"
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
@@ -34,14 +36,13 @@
 namespace settings {
 
 // The WebUI handler for chrome://settings.
-class SettingsUI :
+class SettingsUI : public ui::MojoWebUIController,
+                   public help_bubble::mojom::HelpBubbleHandlerFactory
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
     // chrome://settings/manageProfile which only exists on !OS_CHROMEOS
     // requires mojo bindings.
-    public ui::MojoWebUIController,
-    public customize_themes::mojom::CustomizeThemesHandlerFactory
-#else   // !BUILDFLAG(IS_CHROMEOS_ASH)
-    public content::WebUIController
+    ,
+                   public customize_themes::mojom::CustomizeThemesHandlerFactory
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 {
  public:
@@ -58,7 +59,9 @@
   // Initializes the WebUI message handlers for CrOS-specific settings that are
   // still shown in the browser settings UI.
   void InitBrowserSettingsWebUIHandlers();
-#else   // BUILDFLAG(IS_CHROMEOS_ASH)
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+#if !BUILDFLAG(IS_CHROMEOS_ASH)
   // Instantiates the implementor of the
   // customize_themes::mojom::CustomizeThemesHandlerFactory mojo interface
   // passing the pending receiver that will be internally bound.
@@ -67,6 +70,12 @@
                          pending_receiver);
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
+  // Implements support for help bubbles (IPH, tutorials, etc.) in settings
+  // pages.
+  void BindInterface(
+      mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandlerFactory>
+          pending_receiver);
+
  private:
   void AddSettingsPageUIHandler(
       std::unique_ptr<content::WebUIMessageHandler> handler);
@@ -84,9 +93,19 @@
 
   std::unique_ptr<ChromeCustomizeThemesHandler> customize_themes_handler_;
   mojo::Receiver<customize_themes::mojom::CustomizeThemesHandlerFactory>
-      customize_themes_factory_receiver_;
+      customize_themes_factory_receiver_{this};
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
+  // help_bubble::mojom::HelpBubbleHandlerFactory:
+  void CreateHelpBubbleHandler(
+      mojo::PendingRemote<help_bubble::mojom::HelpBubbleClient> client,
+      mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandler> handler)
+      override;
+
+  std::unique_ptr<user_education::HelpBubbleHandler> help_bubble_handler_;
+  mojo::Receiver<help_bubble::mojom::HelpBubbleHandlerFactory>
+      help_bubble_handler_factory_receiver_{this};
+
   WebuiLoadTimer webui_load_timer_;
 
   WEB_UI_CONTROLLER_TYPE_DECL();
diff --git a/chrome/browser/webauthn/cablev2_devices.cc b/chrome/browser/webauthn/cablev2_devices.cc
index 8e0fdc8..2931993c 100644
--- a/chrome/browser/webauthn/cablev2_devices.cc
+++ b/chrome/browser/webauthn/cablev2_devices.cc
@@ -351,14 +351,15 @@
   // This is called when doing a QR-code pairing with a phone and the phone
   // sends long-term pairing information during the handshake. The pairing
   // information is saved in preferences for future operations.
-  ListPrefUpdate update(profile->GetPrefs(), kWebAuthnCablePairingsPrefName);
+  ScopedListPrefUpdate update(profile->GetPrefs(),
+                              kWebAuthnCablePairingsPrefName);
 
   // Find any existing entries with the same public key and replace them. The
   // handshake protocol requires the phone to prove possession of the public
   // key so it's not possible for an evil phone to displace another's pairing.
   std::string public_key_base64 =
       base::Base64Encode(pairing->peer_public_key_x962);
-  DeletePairingByPublicKey(update->GetList(), public_key_base64);
+  DeletePairingByPublicKey(*update, public_key_base64);
 
   base::Value::Dict dict;
   dict.Set(kPairingPrefPublicKey, std::move(public_key_base64));
@@ -381,7 +382,7 @@
       base::StringPrintf("%04d-%02d-%02dT%02d:%02d:%02dZ", now.year, now.month,
                          now.day_of_month, now.hour, now.minute, now.second));
 
-  update->GetList().Append(std::move(dict));
+  update->Append(std::move(dict));
 }
 
 // DeletePairingByPublicKey erases any pairing with the given public key
@@ -389,8 +390,8 @@
 void DeletePairingByPublicKey(
     PrefService* pref_service,
     std::array<uint8_t, device::kP256X962Length> public_key) {
-  ListPrefUpdate update(pref_service, kWebAuthnCablePairingsPrefName);
-  DeletePairingByPublicKey(update->GetList(), base::Base64Encode(public_key));
+  ScopedListPrefUpdate update(pref_service, kWebAuthnCablePairingsPrefName);
+  DeletePairingByPublicKey(*update, base::Base64Encode(public_key));
 }
 
 bool RenamePairing(
@@ -401,9 +402,9 @@
   const std::string name = FindUniqueName(new_name, existing_names);
   const std::string public_key_base64 = base::Base64Encode(public_key);
 
-  ListPrefUpdate update(pref_service, kWebAuthnCablePairingsPrefName);
+  ScopedListPrefUpdate update(pref_service, kWebAuthnCablePairingsPrefName);
 
-  for (base::Value& value : update->GetList()) {
+  for (base::Value& value : *update) {
     if (!value.is_dict()) {
       continue;
     }
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index fa0788c..eb96b6e7 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-main-1663653378-32dfa6272ea1a26fb7478f74f68041a68c735910.profdata
+chrome-linux-main-1663675099-b0fc5dcf15047027f51d17ab689682638bf92d91.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index 80d74e4f..12cc067 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1663588623-0d21a7834a2120d659431afc87e83e7fbb336a63.profdata
+chrome-mac-arm-main-1663675099-cda4ac060569fae9d457ef34e2ad0dfdd3bbbaaf.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 6cbf0e5ef..0a40318 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-main-1663653378-d098ba2f6b5967183cf45c994137e5b98c67cb71.profdata
+chrome-mac-main-1663675099-bc8ab9e36a81cc91bc5a09ff1068b064f466510d.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 8f6b725a..519843a 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1663653378-583177abc9e9662f5ca67f662386ba050fef85bf.profdata
+chrome-win32-main-1663675099-9146ce015c2ad093773fb92d8c840fb2f42b35a2.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index b5e701a1..9015d08 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1663664392-a8dc3577fe292ed32f45c4bd9a17972c2a94e2da.profdata
+chrome-win64-main-1663675099-c78c6f68e5b23eebb4dea58a0a5a6f330e0a5833.profdata
diff --git a/chrome/services/qrcode_generator/public/mojom/qrcode_generator.mojom b/chrome/services/qrcode_generator/public/mojom/qrcode_generator.mojom
index e55c2ba..e1c0f89 100644
--- a/chrome/services/qrcode_generator/public/mojom/qrcode_generator.mojom
+++ b/chrome/services/qrcode_generator/public/mojom/qrcode_generator.mojom
@@ -69,7 +69,7 @@
 
 // Interface for generating QR codes for a given string of input data.
 // This is usually run outside the browser process if the data is untrusted.
-[ServiceSandbox=sandbox.mojom.Sandbox.kUtility]
+[ServiceSandbox=sandbox.mojom.Sandbox.kService]
 interface QRCodeGeneratorService {
   // Tries to generate a QR code for |data|.
   // Populates |response.error| on error; if kNone then |response.data|
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 6882cb4..db34c75 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -3921,6 +3921,8 @@
         "../browser/chromeos/tablet_mode/tablet_mode_page_behavior_browsertest.cc",
         "../browser/device_api/device_attribute_api_browsertest.cc",
         "../browser/drive/drive_notification_manager_factory_browsertest.cc",
+        "../browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.cc",
+        "../browser/enterprise/connectors/analysis/mock_file_transfer_analysis_delegate.h",
         "../browser/enterprise/connectors/device_trust/signals/decorators/ash/ash_signals_decorator_browsertest.cc",
         "../browser/feedback/show_feedback_page_browsertest.cc",
         "../browser/metrics/chromeos_family_link_user_metrics_provider_browsertest.cc",
diff --git a/chrome/test/chromedriver/commands_unittest.cc b/chrome/test/chromedriver/commands_unittest.cc
index acd11a8a..4b4527a5 100644
--- a/chrome/test/chromedriver/commands_unittest.cc
+++ b/chrome/test/chromedriver/commands_unittest.cc
@@ -507,14 +507,13 @@
   Session session("id");
   session.implicit_wait = base::Seconds(1);
   session.SwitchToSubFrame("frame_id3", std::string());
-  base::Value params(base::Value::Type::DICTIONARY);
-  params.SetStringKey("using", "css selector");
-  params.SetStringKey("value", "div");
+  base::Value::Dict params;
+  params.Set("using", "css selector");
+  params.Set("value", "div");
   std::string element_id = "1";
   std::unique_ptr<base::Value> result;
   ASSERT_EQ(kOk, ExecuteFindChildElement(1, &session, &web_view, element_id,
-                                         base::Value::AsDictionaryValue(params),
-                                         &result)
+                                         params, &result)
                      .code());
   base::Value locator_param(base::Value::Type::DICTIONARY);
   locator_param.SetStringKey("css selector", "div");
@@ -529,14 +528,13 @@
 TEST(CommandsTest, FailedFindChildElement) {
   Session session("id");
   FindElementWebView web_view(true, kElementNotExistsQueryOnce);
-  base::Value params(base::Value::Type::DICTIONARY);
-  params.SetStringKey("using", "css selector");
-  params.SetStringKey("value", "#a");
+  base::Value::Dict params;
+  params.Set("using", "css selector");
+  params.Set("value", "#a");
   std::string element_id = "1";
   std::unique_ptr<base::Value> result;
-  ASSERT_EQ(kNoSuchElement, ExecuteFindChildElement(
-                                1, &session, &web_view, element_id,
-                                base::Value::AsDictionaryValue(params), &result)
+  ASSERT_EQ(kNoSuchElement, ExecuteFindChildElement(1, &session, &web_view,
+                                                    element_id, params, &result)
                                 .code());
 }
 
@@ -545,14 +543,13 @@
   Session session("id");
   session.implicit_wait = base::Seconds(1);
   session.SwitchToSubFrame("frame_id4", std::string());
-  base::Value params(base::Value::Type::DICTIONARY);
-  params.SetStringKey("using", "css selector");
-  params.SetStringKey("value", ".c");
+  base::Value::Dict params;
+  params.Set("using", "css selector");
+  params.Set("value", ".c");
   std::string element_id = "1";
   std::unique_ptr<base::Value> result;
-  ASSERT_EQ(kOk, ExecuteFindChildElements(
-                     1, &session, &web_view, element_id,
-                     base::Value::AsDictionaryValue(params), &result)
+  ASSERT_EQ(kOk, ExecuteFindChildElements(1, &session, &web_view, element_id,
+                                          params, &result)
                      .code());
   base::Value locator_param(base::Value::Type::DICTIONARY);
   locator_param.SetStringKey("css selector", ".c");
@@ -567,14 +564,13 @@
 TEST(CommandsTest, FailedFindChildElements) {
   Session session("id");
   FindElementWebView web_view(false, kElementNotExistsQueryOnce);
-  base::Value params(base::Value::Type::DICTIONARY);
-  params.SetStringKey("using", "css selector");
-  params.SetStringKey("value", "#a");
+  base::Value::Dict params;
+  params.Set("using", "css selector");
+  params.Set("value", "#a");
   std::string element_id = "1";
   std::unique_ptr<base::Value> result;
-  ASSERT_EQ(kOk, ExecuteFindChildElements(
-                     1, &session, &web_view, element_id,
-                     base::Value::AsDictionaryValue(params), &result)
+  ASSERT_EQ(kOk, ExecuteFindChildElements(1, &session, &web_view, element_id,
+                                          params, &result)
                      .code());
   ASSERT_TRUE(result->is_list());
   ASSERT_EQ(0U, result->GetList().size());
@@ -634,21 +630,19 @@
 TEST(CommandsTest, ErrorFindChildElement) {
   Session session("id");
   ErrorCallFunctionWebView web_view(kStaleElementReference);
-  base::Value params(base::Value::Type::DICTIONARY);
-  params.SetStringKey("using", "css selector");
-  params.SetStringKey("value", "#a");
+  base::Value::Dict params;
+  params.Set("using", "css selector");
+  params.Set("value", "#a");
   std::string element_id = "1";
   std::unique_ptr<base::Value> result;
-  ASSERT_EQ(
-      kStaleElementReference,
-      ExecuteFindChildElement(1, &session, &web_view, element_id,
-                              base::Value::AsDictionaryValue(params), &result)
-          .code());
-  ASSERT_EQ(
-      kStaleElementReference,
-      ExecuteFindChildElements(1, &session, &web_view, element_id,
-                               base::Value::AsDictionaryValue(params), &result)
-          .code());
+  ASSERT_EQ(kStaleElementReference,
+            ExecuteFindChildElement(1, &session, &web_view, element_id, params,
+                                    &result)
+                .code());
+  ASSERT_EQ(kStaleElementReference,
+            ExecuteFindChildElements(1, &session, &web_view, element_id, params,
+                                     &result)
+                .code());
 }
 
 namespace {
diff --git a/chrome/test/chromedriver/element_commands.cc b/chrome/test/chromedriver/element_commands.cc
index 2a40303..2ec304d 100644
--- a/chrome/test/chromedriver/element_commands.cc
+++ b/chrome/test/chromedriver/element_commands.cc
@@ -188,9 +188,7 @@
   if (!id)
     id = params.FindString("element");
   if (id) {
-    return command.Run(
-        session, web_view, *id,
-        base::Value::AsDictionaryValue(base::Value(params.Clone())), value);
+    return command.Run(session, web_view, *id, params, value);
   }
   return Status(kInvalidArgument, "element identifier must be a string");
 }
@@ -199,7 +197,7 @@
                                Session* session,
                                WebView* web_view,
                                const std::string& element_id,
-                               const base::DictionaryValue& params,
+                               const base::Value::Dict& params,
                                std::unique_ptr<base::Value>* value) {
   return FindElement(
       interval_ms, true, &element_id, session, web_view, params, value);
@@ -210,7 +208,7 @@
     Session* session,
     WebView* web_view,
     const std::string& shadow_root_id,
-    const base::DictionaryValue& params,
+    const base::Value::Dict& params,
     std::unique_ptr<base::Value>* value) {
   return FindShadowElement(interval_ms, true, &shadow_root_id, session,
                            web_view, params, value);
@@ -221,7 +219,7 @@
     Session* session,
     WebView* web_view,
     const std::string& shadow_root_id,
-    const base::DictionaryValue& params,
+    const base::Value::Dict& params,
     std::unique_ptr<base::Value>* value) {
   return FindShadowElement(interval_ms, false, &shadow_root_id, session,
                            web_view, params, value);
@@ -230,7 +228,7 @@
 Status ExecuteGetElementShadowRoot(Session* session,
                                    WebView* web_view,
                                    const std::string& element_id,
-                                   const base::DictionaryValue& params,
+                                   const base::Value::Dict& params,
                                    std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
 
@@ -265,7 +263,7 @@
                                 Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value) {
   return FindElement(
       interval_ms, false, &element_id, session, web_view, params, value);
@@ -274,7 +272,7 @@
 Status ExecuteClickElement(Session* session,
                            WebView* web_view,
                            const std::string& element_id,
-                           const base::DictionaryValue& params,
+                           const base::Value::Dict& params,
                            std::unique_ptr<base::Value>* value) {
   std::string tag_name;
   Status status = GetElementTagName(session, web_view, element_id, &tag_name);
@@ -330,7 +328,7 @@
 Status ExecuteTouchSingleTap(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value) {
   WebPoint location;
   Status status = GetElementClickableLocation(
@@ -352,7 +350,7 @@
 Status ExecuteTouchDoubleTap(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value) {
   if (!session->chrome->HasTouchScreen()) {
     // TODO(samuong): remove this once we stop supporting M44.
@@ -369,7 +367,7 @@
 Status ExecuteTouchLongPress(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value) {
   if (!session->chrome->HasTouchScreen()) {
     // TODO(samuong): remove this once we stop supporting M44.
@@ -386,7 +384,7 @@
 Status ExecuteFlick(Session* session,
                     WebView* web_view,
                     const std::string& element_id,
-                    const base::DictionaryValue& params,
+                    const base::Value::Dict& params,
                     std::unique_ptr<base::Value>* value) {
   WebPoint location;
   Status status = GetElementClickableLocation(
@@ -396,17 +394,17 @@
 
   int xoffset, yoffset, speed;
 
-  absl::optional<int> maybe_xoffset = params.FindIntKey("xoffset");
+  absl::optional<int> maybe_xoffset = params.FindInt("xoffset");
   if (!maybe_xoffset)
     return Status(kInvalidArgument, "'xoffset' must be an integer");
   xoffset = *maybe_xoffset;
 
-  absl::optional<int> maybe_yoffset = params.FindIntKey("yoffset");
+  absl::optional<int> maybe_yoffset = params.FindInt("yoffset");
   if (!maybe_yoffset)
     return Status(kInvalidArgument, "'yoffset' must be an integer");
   yoffset = *maybe_yoffset;
 
-  speed = params.FindIntKey("speed").value_or(-1);
+  speed = params.FindInt("speed").value_or(-1);
   if (speed < 1)
     return Status(kInvalidArgument, "'speed' must be a positive integer");
 
@@ -440,7 +438,7 @@
 Status ExecuteClearElement(Session* session,
                            WebView* web_view,
                            const std::string& element_id,
-                           const base::DictionaryValue& params,
+                           const base::Value::Dict& params,
                            std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -483,9 +481,9 @@
 
   std::unique_ptr<base::Value> get_readonly;
   bool is_readonly = false;
-  base::DictionaryValue params_readOnly;
+  base::Value::Dict params_readOnly;
   if (!is_content_editable) {
-    params_readOnly.SetString("name", "readOnly");
+    params_readOnly.Set("name", "readOnly");
     status = ExecuteGetElementProperty(session, web_view, element_id,
                                        params_readOnly, &get_readonly);
     if (status.IsError())
@@ -532,7 +530,7 @@
 Status ExecuteSendKeysToElement(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -541,13 +539,13 @@
   base::Value::List key_list_local;
   const base::Value* text = nullptr;
   if (session->w3c_compliant) {
-    text = params.FindKey("text");
+    text = params.Find("text");
     if (text == nullptr || !text->is_string())
       return Status(kInvalidArgument, "'text' must be a string");
     key_list_local.Append(text->Clone());
     key_list = &key_list_local;
   } else {
-    key_list = params.GetDict().FindList("value");
+    key_list = params.FindList("value");
   }
 
   bool is_input = false;
@@ -724,7 +722,7 @@
 Status ExecuteSubmitElement(Session* session,
                             WebView* web_view,
                             const std::string& element_id,
-                            const base::DictionaryValue& params,
+                            const base::Value::Dict& params,
                             std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -741,7 +739,7 @@
 Status ExecuteGetElementText(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -758,7 +756,7 @@
 Status ExecuteGetElementValue(Session* session,
                               WebView* web_view,
                               const std::string& element_id,
-                              const base::DictionaryValue& params,
+                              const base::Value::Dict& params,
                               std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -773,20 +771,20 @@
 }
 
 Status ExecuteGetElementProperty(Session* session,
-                              WebView* web_view,
-                              const std::string& element_id,
-                              const base::DictionaryValue& params,
-                              std::unique_ptr<base::Value>* value) {
+                                 WebView* web_view,
+                                 const std::string& element_id,
+                                 const base::Value::Dict& params,
+                                 std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
     return status;
   base::Value::List args;
   args.Append(CreateElement(element_id));
 
-  std::string name;
-  if (!params.GetString("name", &name))
+  const std::string* name = params.FindString("name");
+  if (!name)
     return Status(kInvalidArgument, "missing 'name'");
-  args.Append(name);
+  args.Append(*name);
 
   return web_view->CallFunction(
       session->GetCurrentFrameId(),
@@ -798,7 +796,7 @@
 Status ExecuteGetElementTagName(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -815,7 +813,7 @@
 Status ExecuteIsElementSelected(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -832,7 +830,7 @@
 Status ExecuteIsElementEnabled(Session* session,
                                WebView* web_view,
                                const std::string& element_id,
-                               const base::DictionaryValue& params,
+                               const base::Value::Dict& params,
                                std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -860,7 +858,7 @@
 Status ExecuteGetComputedLabel(Session* session,
                                WebView* web_view,
                                const std::string& element_id,
-                               const base::DictionaryValue& params,
+                               const base::Value::Dict& params,
                                std::unique_ptr<base::Value>* value) {
   std::unique_ptr<base::Value> axNode;
   Status status = GetAXNodeByElementId(session, web_view, element_id, &axNode);
@@ -888,7 +886,7 @@
 Status ExecuteGetComputedRole(Session* session,
                               WebView* web_view,
                               const std::string& element_id,
-                              const base::DictionaryValue& params,
+                              const base::Value::Dict& params,
                               std::unique_ptr<base::Value>* value) {
   std::unique_ptr<base::Value> axNode;
   Status status = GetAXNodeByElementId(session, web_view, element_id, &axNode);
@@ -915,7 +913,7 @@
 Status ExecuteIsElementDisplayed(Session* session,
                                  WebView* web_view,
                                  const std::string& element_id,
-                                 const base::DictionaryValue& params,
+                                 const base::Value::Dict& params,
                                  std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -932,7 +930,7 @@
 Status ExecuteGetElementLocation(Session* session,
                                  WebView* web_view,
                                  const std::string& element_id,
-                                 const base::DictionaryValue& params,
+                                 const base::Value::Dict& params,
                                  std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -949,7 +947,7 @@
 Status ExecuteGetElementRect(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -1010,7 +1008,7 @@
     Session* session,
     WebView* web_view,
     const std::string& element_id,
-    const base::DictionaryValue& params,
+    const base::Value::Dict& params,
     std::unique_ptr<base::Value>* value) {
   WebPoint offset(0, 0);
   WebPoint location;
@@ -1025,7 +1023,7 @@
 Status ExecuteGetElementSize(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value) {
   Status status = CheckElement(element_id);
   if (status.IsError())
@@ -1042,15 +1040,15 @@
 Status ExecuteGetElementAttribute(Session* session,
                                   WebView* web_view,
                                   const std::string& element_id,
-                                  const base::DictionaryValue& params,
+                                  const base::Value::Dict& params,
                                   std::unique_ptr<base::Value>* value) {
-  std::string attribute_name;
-  if (!params.GetString("name", &attribute_name))
+  const std::string* attribute_name = params.FindString("name");
+  if (!attribute_name)
     return Status(kInvalidArgument, "missing 'name'");
 
   // In legacy mode, use old behavior for backward compatibility.
   if (!session->w3c_compliant) {
-    return GetElementAttribute(session, web_view, element_id, attribute_name,
+    return GetElementAttribute(session, web_view, element_id, *attribute_name,
                                value);
   }
 
@@ -1059,21 +1057,21 @@
     return status;
   base::Value::List args;
   args.Append(CreateElement(element_id));
-  args.Append(attribute_name);
+  args.Append(*attribute_name);
   return web_view->CallFunction(
       session->GetCurrentFrameId(),
-      booleanAttributes.count(base::ToLowerASCII(attribute_name))
+      booleanAttributes.count(base::ToLowerASCII(*attribute_name))
           ? "(elem, attribute) => elem.hasAttribute(attribute) ? 'true' : null"
           : "(elem, attribute) => elem.getAttribute(attribute)",
       args, value);
 }
 
 Status ExecuteGetElementValueOfCSSProperty(
-                                      Session* session,
-                                      WebView* web_view,
-                                      const std::string& element_id,
-                                      const base::DictionaryValue& params,
-                                      std::unique_ptr<base::Value>* value) {
+    Session* session,
+    WebView* web_view,
+    const std::string& element_id,
+    const base::Value::Dict& params,
+    std::unique_ptr<base::Value>* value) {
   bool is_xml = false;
   Status status = IsDocumentTypeXml(session, web_view, &is_xml);
   if (status.IsError())
@@ -1082,12 +1080,12 @@
   if (is_xml) {
     *value = std::make_unique<base::Value>("");
   } else {
-    std::string property_name;
-    if (!params.GetString("propertyName", &property_name))
+    const std::string* property_name = params.FindString("propertyName");
+    if (!property_name)
       return Status(kInvalidArgument, "missing 'propertyName'");
     std::string property_value;
-    status = GetElementEffectiveStyle(
-        session, web_view, element_id, property_name, &property_value);
+    status = GetElementEffectiveStyle(session, web_view, element_id,
+                                      *property_name, &property_value);
     if (status.IsError())
       return status;
     *value = std::make_unique<base::Value>(property_value);
@@ -1098,19 +1096,19 @@
 Status ExecuteElementEquals(Session* session,
                             WebView* web_view,
                             const std::string& element_id,
-                            const base::DictionaryValue& params,
+                            const base::Value::Dict& params,
                             std::unique_ptr<base::Value>* value) {
-  std::string other_element_id;
-  if (!params.GetString("other", &other_element_id))
+  const std::string* other_element_id = params.FindString("other");
+  if (!other_element_id)
     return Status(kInvalidArgument, "'other' must be a string");
-  *value = std::make_unique<base::Value>(element_id == other_element_id);
+  *value = std::make_unique<base::Value>(element_id == *other_element_id);
   return Status(kOk);
 }
 
 Status ExecuteElementScreenshot(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value) {
   Status status = session->chrome->ActivateWebView(web_view->GetId());
   if (status.IsError())
diff --git a/chrome/test/chromedriver/element_commands.h b/chrome/test/chromedriver/element_commands.h
index df5d101..5f98ccf 100644
--- a/chrome/test/chromedriver/element_commands.h
+++ b/chrome/test/chromedriver/element_commands.h
@@ -20,7 +20,7 @@
     base::RepeatingCallback<Status(Session* session,
                                    WebView* web_view,
                                    const std::string&,
-                                   const base::DictionaryValue&,
+                                   const base::Value::Dict&,
                                    std::unique_ptr<base::Value>*)>;
 
 // Execute a command on a specific element.
@@ -36,7 +36,7 @@
                                Session* session,
                                WebView* web_view,
                                const std::string& element_id,
-                               const base::DictionaryValue& params,
+                               const base::Value::Dict& params,
                                std::unique_ptr<base::Value>* value);
 
 // Search for multiple elements on the page, starting from the given element.
@@ -44,134 +44,134 @@
                                 Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value);
 
 // Click on the element.
 Status ExecuteClickElement(Session* session,
                            WebView* web_view,
                            const std::string& element_id,
-                           const base::DictionaryValue& params,
+                           const base::Value::Dict& params,
                            std::unique_ptr<base::Value>* value);
 
 // Touch click on the element.
 Status ExecuteTouchSingleTap(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value);
 
 // Double tap on the element.
 Status ExecuteTouchDoubleTap(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value);
 
 // Long press on the element.
 Status ExecuteTouchLongPress(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value);
 
 // Touch flick starting on the element.
 Status ExecuteFlick(Session* session,
                     WebView* web_view,
                     const std::string& element_id,
-                    const base::DictionaryValue& params,
+                    const base::Value::Dict& params,
                     std::unique_ptr<base::Value>* value);
 
 // Clear a TEXTAREA or text INPUT element's value.
 Status ExecuteClearElement(Session* session,
                            WebView* web_view,
                            const std::string& element_id,
-                           const base::DictionaryValue& params,
+                           const base::Value::Dict& params,
                            std::unique_ptr<base::Value>* value);
 
 // Send a sequence of key strokes to an element.
 Status ExecuteSendKeysToElement(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value);
 
 // Submit a form element.
 Status ExecuteSubmitElement(Session* session,
                             WebView* web_view,
                             const std::string& element_id,
-                            const base::DictionaryValue& params,
+                            const base::Value::Dict& params,
                             std::unique_ptr<base::Value>* value);
 
 // Returns the text of a given element.
 Status ExecuteGetElementText(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value);
 
 // Returns the value of a given element.
 Status ExecuteGetElementValue(Session* session,
                               WebView* web_view,
                               const std::string& element_id,
-                              const base::DictionaryValue& params,
+                              const base::Value::Dict& params,
                               std::unique_ptr<base::Value>* value);
 
 // Returns the value of a given element property.
 Status ExecuteGetElementProperty(Session* session,
-                              WebView* web_view,
-                              const std::string& element_id,
-                              const base::DictionaryValue& params,
-                              std::unique_ptr<base::Value>* value);
+                                 WebView* web_view,
+                                 const std::string& element_id,
+                                 const base::Value::Dict& params,
+                                 std::unique_ptr<base::Value>* value);
 
 // Returns the lower case tag name of a given element.
 Status ExecuteGetElementTagName(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value);
 
 Status ExecuteIsElementSelected(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value);
 
 Status ExecuteIsElementEnabled(Session* session,
                                WebView* web_view,
                                const std::string& element_id,
-                               const base::DictionaryValue& params,
+                               const base::Value::Dict& params,
                                std::unique_ptr<base::Value>* value);
 
 Status ExecuteGetComputedLabel(Session* session,
                                WebView* web_view,
                                const std::string& element_id,
-                               const base::DictionaryValue& params,
+                               const base::Value::Dict& params,
                                std::unique_ptr<base::Value>* value);
 
 Status ExecuteGetComputedRole(Session* session,
                               WebView* web_view,
                               const std::string& element_id,
-                              const base::DictionaryValue& params,
+                              const base::Value::Dict& params,
                               std::unique_ptr<base::Value>* value);
 
 Status ExecuteIsElementDisplayed(Session* session,
                                  WebView* web_view,
                                  const std::string& element_id,
-                                 const base::DictionaryValue& params,
+                                 const base::Value::Dict& params,
                                  std::unique_ptr<base::Value>* value);
 
 // Returns the location of a given element in page coordinates.
 Status ExecuteGetElementLocation(Session* session,
                                  WebView* web_view,
                                  const std::string& element_id,
-                                 const base::DictionaryValue& params,
+                                 const base::Value::Dict& params,
                                  std::unique_ptr<base::Value>* value);
 
 Status ExecuteGetElementRect(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value);
 
 // Returns the location of a given element in client coordinates, after
@@ -180,46 +180,46 @@
     Session* session,
     WebView* web_view,
     const std::string& element_id,
-    const base::DictionaryValue& params,
+    const base::Value::Dict& params,
     std::unique_ptr<base::Value>* value);
 
 Status ExecuteGetElementSize(Session* session,
                              WebView* web_view,
                              const std::string& element_id,
-                             const base::DictionaryValue& params,
+                             const base::Value::Dict& params,
                              std::unique_ptr<base::Value>* value);
 
 Status ExecuteGetElementAttribute(Session* session,
                                   WebView* web_view,
                                   const std::string& element_id,
-                                  const base::DictionaryValue& params,
+                                  const base::Value::Dict& params,
                                   std::unique_ptr<base::Value>* value);
 
 // Returns the effective style for a given property of the specified element.
 Status ExecuteGetElementValueOfCSSProperty(Session* session,
                                            WebView* web_view,
                                            const std::string& element_id,
-                                           const base::DictionaryValue& params,
+                                           const base::Value::Dict& params,
                                            std::unique_ptr<base::Value>* value);
 
 // Returns whether the two given elements are equivalent.
 Status ExecuteElementEquals(Session* session,
                             WebView* web_view,
                             const std::string& element_id,
-                            const base::DictionaryValue& params,
+                            const base::Value::Dict& params,
                             std::unique_ptr<base::Value>* value);
 
 // Retrieves a screenshot of a specific element
 Status ExecuteElementScreenshot(Session* session,
                                 WebView* web_view,
                                 const std::string& element_id,
-                                const base::DictionaryValue& params,
+                                const base::Value::Dict& params,
                                 std::unique_ptr<base::Value>* value);
 
 Status ExecuteGetElementShadowRoot(Session* session,
                                    WebView* web_view,
                                    const std::string& element_id,
-                                   const base::DictionaryValue& params,
+                                   const base::Value::Dict& params,
                                    std::unique_ptr<base::Value>* value);
 
 Status ExecuteFindChildElementFromShadowRoot(
@@ -227,7 +227,7 @@
     Session* session,
     WebView* web_view,
     const std::string& shadow_root_id,
-    const base::DictionaryValue& params,
+    const base::Value::Dict& params,
     std::unique_ptr<base::Value>* value);
 
 Status ExecuteFindChildElementsFromShadowRoot(
@@ -235,7 +235,7 @@
     Session* session,
     WebView* web_view,
     const std::string& shadow_root_id,
-    const base::DictionaryValue& params,
+    const base::Value::Dict& params,
     std::unique_ptr<base::Value>* value);
 
 #endif  // CHROME_TEST_CHROMEDRIVER_ELEMENT_COMMANDS_H_
diff --git a/chrome/test/chromedriver/element_commands_unittest.cc b/chrome/test/chromedriver/element_commands_unittest.cc
index 5a3525d..69f1fea 100644
--- a/chrome/test/chromedriver/element_commands_unittest.cc
+++ b/chrome/test/chromedriver/element_commands_unittest.cc
@@ -38,13 +38,13 @@
 typedef Status (*Command)(Session* session,
                           WebView* web_view,
                           const std::string& element_id,
-                          const base::DictionaryValue& params,
+                          const base::Value::Dict& params,
                           std::unique_ptr<base::Value>* value);
 
 Status CallElementCommand(Command command,
                           StubWebView* web_view,
                           const std::string& element_id,
-                          const base::DictionaryValue& params = {},
+                          const base::Value::Dict& params = {},
                           std::unique_ptr<base::Value>* value = nullptr) {
   MockChrome* chrome = new MockChrome();
   Session session("id", std::unique_ptr<Chrome>(chrome));
@@ -89,7 +89,7 @@
 
 TEST(ElementCommandsTest, ExecuteGetElementRect_SizeError) {
   MockResponseWebView webview = MockResponseWebView();
-  base::DictionaryValue params;
+  base::Value::Dict params;
   std::unique_ptr<base::Value> result_value;
   Status status = CallElementCommand(ExecuteGetElementRect, &webview,
                                      "3247f4d1-ce70-49e9-9a99-bdc7591e032f",
diff --git a/chrome/test/chromedriver/element_util.cc b/chrome/test/chromedriver/element_util.cc
index d5806eb..88b4536 100644
--- a/chrome/test/chromedriver/element_util.cc
+++ b/chrome/test/chromedriver/element_util.cc
@@ -362,18 +362,15 @@
                          const std::string* root_element_id,
                          Session* session,
                          WebView* web_view,
-                         const base::DictionaryValue& params,
+                         const base::Value::Dict& params,
                          std::unique_ptr<base::Value>* value,
                          bool isShadowRoot) {
-  std::string strategy;
-  if (!params.GetString("using", &strategy))
+  const std::string* strategy = params.FindString("using");
+  if (!strategy)
     return Status(kInvalidArgument, "'using' must be a string");
-  if (session->w3c_compliant &&
-      strategy != "css selector" &&
-      strategy != "link text" &&
-      strategy != "partial link text" &&
-      strategy != "tag name" &&
-      strategy != "xpath")
+  if (session->w3c_compliant && *strategy != "css selector" &&
+      *strategy != "link text" && *strategy != "partial link text" &&
+      *strategy != "tag name" && *strategy != "xpath")
     return Status(kInvalidArgument, "invalid locator");
 
   /*
@@ -383,12 +380,12 @@
    * We have them disabled for now.
    * https://github.com/w3c/webdriver/issues/1610
    */
-  if (isShadowRoot && (strategy == "tag name" || strategy == "xpath")) {
+  if (isShadowRoot && (*strategy == "tag name" || *strategy == "xpath")) {
     return Status(kInvalidArgument, "invalid locator");
   }
 
-  std::string target;
-  if (!params.GetString("value", &target))
+  const std::string* target = params.FindString("value");
+  if (!target)
     return Status(kInvalidArgument, "'value' must be a string");
 
   std::string script;
@@ -396,10 +393,10 @@
     script = webdriver::atoms::asString(webdriver::atoms::FIND_ELEMENT);
   else
     script = webdriver::atoms::asString(webdriver::atoms::FIND_ELEMENTS);
-  std::unique_ptr<base::DictionaryValue> locator(new base::DictionaryValue());
-  locator->SetString(strategy, target);
+  base::Value::Dict locator;
+  locator.Set(*strategy, *target);
   base::Value::List arguments;
-  arguments.Append(base::Value::FromUniquePtrValue(std::move(locator)));
+  arguments.Append(std::move(locator));
   if (root_element_id) {
     if (isShadowRoot)
       arguments.Append(CreateShadowRoot(*root_element_id));
@@ -437,8 +434,9 @@
 
     if (base::TimeTicks::Now() - start_time >= session->implicit_wait) {
       if (only_one) {
-        return Status(kNoSuchElement, "Unable to locate element: {\"method\":\""
-         + strategy + "\",\"selector\":\"" + target + "\"}");
+        return Status(kNoSuchElement,
+                      "Unable to locate element: {\"method\":\"" + *strategy +
+                          "\",\"selector\":\"" + *target + "\"}");
       }
       *value =
           base::Value::ToUniquePtrValue(base::Value(base::Value::Type::LIST));
@@ -454,7 +452,7 @@
                    const std::string* root_element_id,
                    Session* session,
                    WebView* web_view,
-                   const base::DictionaryValue& params,
+                   const base::Value::Dict& params,
                    std::unique_ptr<base::Value>* value) {
   return FindElementCommon(interval_ms, only_one, root_element_id, session,
                            web_view, params, value, false);
@@ -465,7 +463,7 @@
                          const std::string* shadow_root_id,
                          Session* session,
                          WebView* web_view,
-                         const base::DictionaryValue& params,
+                         const base::Value::Dict& params,
                          std::unique_ptr<base::Value>* value) {
   return FindElementCommon(interval_ms, only_one, shadow_root_id, session,
                            web_view, params, value, true);
diff --git a/chrome/test/chromedriver/element_util.h b/chrome/test/chromedriver/element_util.h
index 53439d2d..c8b2800 100644
--- a/chrome/test/chromedriver/element_util.h
+++ b/chrome/test/chromedriver/element_util.h
@@ -29,7 +29,7 @@
                    const std::string* root_element_id,
                    Session* session,
                    WebView* web_view,
-                   const base::DictionaryValue& params,
+                   const base::Value::Dict& params,
                    std::unique_ptr<base::Value>* value);
 
 Status FindShadowElement(int interval_ms,
@@ -37,7 +37,7 @@
                          const std::string* shadow_root_id,
                          Session* session,
                          WebView* web_view,
-                         const base::DictionaryValue& params,
+                         const base::Value::Dict& params,
                          std::unique_ptr<base::Value>* value);
 
 Status GetActiveElement(Session* session,
diff --git a/chrome/test/chromedriver/window_commands.cc b/chrome/test/chromedriver/window_commands.cc
index 25fee057..963e652 100644
--- a/chrome/test/chromedriver/window_commands.cc
+++ b/chrome/test/chromedriver/window_commands.cc
@@ -985,9 +985,8 @@
                           const base::Value::Dict& params,
                           std::unique_ptr<base::Value>* value,
                           Timeout* timeout) {
-  return FindElement(
-      interval_ms, true, nullptr, session, web_view,
-      base::Value::AsDictionaryValue(base::Value(params.Clone())), value);
+  return FindElement(interval_ms, true, nullptr, session, web_view, params,
+                     value);
 }
 
 Status ExecuteFindElements(int interval_ms,
@@ -996,9 +995,8 @@
                            const base::Value::Dict& params,
                            std::unique_ptr<base::Value>* value,
                            Timeout* timeout) {
-  return FindElement(
-      interval_ms, false, nullptr, session, web_view,
-      base::Value::AsDictionaryValue(base::Value(params.Clone())), value);
+  return FindElement(interval_ms, false, nullptr, session, web_view, params,
+                     value);
 }
 
 Status ExecuteGetCurrentUrl(Session* session,
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 431bbe2..04c3a04 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -20017,5 +20017,25 @@
         }
       }
     ]
+  },
+  "ShoppingListEnabled": {
+    "os": [
+      "win",
+      "linux",
+      "mac",
+      "android",
+      "chromeos_ash",
+      "chromeos_lacros"
+    ],
+    "policy_pref_mapping_tests": [
+      {
+        "policies": {
+          "ShoppingListEnabled": false
+        },
+        "prefs": {
+          "shopping_list_enabled": {}
+        }
+      }
+    ]
   }
 }
diff --git a/chrome/test/data/webui/chromeos/diagnostics/battery_status_card_test.js b/chrome/test/data/webui/chromeos/diagnostics/battery_status_card_test.js
index 0d72c7e..287c894 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/battery_status_card_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/battery_status_card_test.js
@@ -5,12 +5,15 @@
 import 'chrome://diagnostics/battery_status_card.js';
 import 'chrome://resources/cr_elements/cr_button/cr_button.js';
 
+import {BatteryStatusCardElement} from 'chrome://diagnostics/battery_status_card.js';
 import {BatteryChargeStatus, BatteryHealth, BatteryInfo, ExternalPowerSource, RoutineType} from 'chrome://diagnostics/diagnostics_types.js';
 import {getDiagnosticsIcon} from 'chrome://diagnostics/diagnostics_utils.js';
 import {fakeBatteryChargeStatus, fakeBatteryChargeStatus2, fakeBatteryChargeStatus3, fakeBatteryHealth, fakeBatteryHealth2, fakeBatteryHealth3, fakeBatteryInfo} from 'chrome://diagnostics/fake_data.js';
 import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js';
 import {getSystemDataProvider, setSystemDataProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
 import {mojoString16ToString} from 'chrome://diagnostics/mojo_utils.js';
+import {RoutineSectionElement} from 'chrome://diagnostics/routine_section.js';
+import {TextBadgeElement} from 'chrome://diagnostics/text_badge.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -75,7 +78,7 @@
    */
   function getRoutineSection() {
     const routineSection = /** @type {!RoutineSectionElement} */ (
-        batteryStatusElement.$$('routine-section'));
+        batteryStatusElement.shadowRoot.querySelector('routine-section'));
     assertTrue(!!routineSection);
     return routineSection;
   }
@@ -88,7 +91,7 @@
     const routineSectionElement = getRoutineSection();
 
     return /** @type {!TextBadgeElement} */ (
-        routineSectionElement.$$('#testStatusBadge'));
+        routineSectionElement.shadowRoot.querySelector('#testStatusBadge'));
   }
 
   /**
@@ -100,7 +103,7 @@
 
     const statusText =
         /** @type {!HTMLElement} */ (
-            routineSectionElement.$$('#testStatusText'));
+            routineSectionElement.shadowRoot.querySelector('#testStatusText'));
     assertTrue(!!statusText);
     return statusText;
   }
@@ -160,7 +163,8 @@
                   .tooltipText,
               loadTimeData.getString('currentNowTooltipText'));
           dx_utils.assertElementContainsText(
-              batteryStatusElement.$$('#batteryStatusChipInfo'),
+              batteryStatusElement.shadowRoot.querySelector(
+                  '#batteryStatusChipInfo'),
               `${fakeBatteryHealth[0].chargeFullDesignMilliampHours}`);
           const barChart =
               dx_utils.getPercentBarChartElement(batteryStatusElement);
@@ -215,7 +219,7 @@
               loadTimeData.getString('batteryChargeTestFullMessage'));
           assertTrue(isRunTestsButtonDisabled());
           assertTrue(isVisible(/** @type {!HTMLElement} */ (
-              routineSectionElement.$$('#messageIcon'))));
+              routineSectionElement.shadowRoot.querySelector('#messageIcon'))));
         });
   });
 
diff --git a/chrome/test/data/webui/chromeos/diagnostics/connectivity_card_test.js b/chrome/test/data/webui/chromeos/diagnostics/connectivity_card_test.js
index 0977587..9d0e5d90 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/connectivity_card_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/connectivity_card_test.js
@@ -4,10 +4,12 @@
 
 import 'chrome://diagnostics/connectivity_card.js';
 
+import {ConnectivityCardElement} from 'chrome://diagnostics/connectivity_card.js';
 import {Network, RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
 import {fakeCellularNetwork, fakeEthernetNetwork, fakeNetworkGuidInfoList, fakePowerRoutineResults, fakeRoutineResults, fakeWifiNetwork} from 'chrome://diagnostics/fake_data.js';
 import {FakeNetworkHealthProvider} from 'chrome://diagnostics/fake_network_health_provider.js';
 import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js';
+import {IpConfigInfoDrawerElement} from 'chrome://diagnostics/ip_config_info_drawer.js';
 import {setNetworkHealthProviderForTesting, setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
 import {RoutineGroup} from 'chrome://diagnostics/routine_group.js';
 import {TestSuiteStatus} from 'chrome://diagnostics/routine_list_executor.js';
@@ -145,14 +147,15 @@
   test('CardTitleEthernetOnlineInitializedCorrectly', () => {
     return initializeConnectivityCard('ethernetGuid').then(() => {
       dx_utils.assertElementContainsText(
-          connectivityCardElement.$$('#cardTitle'), 'Ethernet');
+          connectivityCardElement.shadowRoot.querySelector('#cardTitle'),
+          'Ethernet');
     });
   });
 
   test('CardMacAddressChipInitializedCorrectly', () => {
     return initializeConnectivityCard('ethernetGuid').then(() => {
       dx_utils.assertElementContainsText(
-          connectivityCardElement.$$('#macAddressChip'),
+          connectivityCardElement.shadowRoot.querySelector('#macAddressChip'),
           'MAC: 81:C5:A6:30:3F:31');
     });
   });
@@ -160,7 +163,8 @@
   test('CardNetworkIconEthernetOnlineInitializedCorrectly', () => {
     return initializeConnectivityCard('ethernetGuid').then(() => {
       assertTrue(isVisible(
-          /** @type {!Element} */ (connectivityCardElement.$$('#icon'))));
+          /** @type {!Element} */ (
+              connectivityCardElement.shadowRoot.querySelector('#icon'))));
     });
   });
 
@@ -176,8 +180,9 @@
       'CardIpConfigurationDrawerInitializedCorrectly', () => {
         return initializeConnectivityCard('ethernetGuid').then(() => {
           const ipConfigInfoDrawerElement =
-              /** @type IpConfigInfoDrawerElement */ (
-                  connectivityCardElement.$$('#ipConfigInfoDrawer'));
+              /** @type {IpConfigInfoDrawerElement} */ (
+                  connectivityCardElement.shadowRoot.querySelector(
+                      '#ipConfigInfoDrawer'));
           assertTrue(isVisible(
               /** @type {!HTMLElement} */ (ipConfigInfoDrawerElement)));
           assertDeepEquals(
diff --git a/chrome/test/data/webui/chromeos/diagnostics/cpu_card_test.js b/chrome/test/data/webui/chromeos/diagnostics/cpu_card_test.js
index 0cdaea1..2b1528c 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/cpu_card_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/cpu_card_test.js
@@ -4,10 +4,12 @@
 
 import 'chrome://diagnostics/cpu_card.js';
 
+import {CpuCardElement} from 'chrome://diagnostics/cpu_card.js';
 import {CpuUsage, RoutineType, SystemDataProviderInterface, SystemInfo} from 'chrome://diagnostics/diagnostics_types.js';
 import {fakeCpuUsage, fakeSystemInfo} from 'chrome://diagnostics/fake_data.js';
 import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js';
 import {getSystemDataProvider, setSystemDataProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
+import {RoutineSectionElement} from 'chrome://diagnostics/routine_section.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -67,7 +69,7 @@
   function getRoutineSection() {
     const routineSection =
         /** @type {!RoutineSectionElement} */ (
-            cpuElement.$$('routine-section'));
+            cpuElement.shadowRoot.querySelector('routine-section'));
     assertTrue(!!routineSection);
     return routineSection;
   }
@@ -109,11 +111,13 @@
           dx_utils.getDataPointValue(cpuElement, '#cpuSpeed'),
           `${convertkhzToGhz(fakeCpuUsage[0].scalingCurrentFrequencyKhz)}`);
       dx_utils.assertElementContainsText(
-          cpuElement.$$('#cpuChipInfo'), `${fakeSystemInfo.cpuModelName}`);
+          cpuElement.shadowRoot.querySelector('#cpuChipInfo'),
+          `${fakeSystemInfo.cpuModelName}`);
       dx_utils.assertElementContainsText(
-          cpuElement.$$('#cpuChipInfo'), `${fakeSystemInfo.cpuThreadsCount}`);
+          cpuElement.shadowRoot.querySelector('#cpuChipInfo'),
+          `${fakeSystemInfo.cpuThreadsCount}`);
       dx_utils.assertElementContainsText(
-          cpuElement.$$('#cpuChipInfo'),
+          cpuElement.shadowRoot.querySelector('#cpuChipInfo'),
           `${fakeSystemInfo.cpuMaxClockSpeedKhz}`);
 
       const cpuChart = dx_utils.getRealtimeCpuChartElement(cpuElement);
diff --git a/chrome/test/data/webui/chromeos/diagnostics/data_point_test.js b/chrome/test/data/webui/chromeos/diagnostics/data_point_test.js
index 61b3c7f..b58b3ec 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/data_point_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/data_point_test.js
@@ -3,6 +3,9 @@
 // found in the LICENSE file.
 
 import 'chrome://diagnostics/data_point.js';
+
+import {DataPointElement} from 'chrome://diagnostics/data_point.js';
+
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks, isVisible} from '../../test_util.js';
 
@@ -52,12 +55,15 @@
     const tooltipText = 'Test tooltip';
     return initializeDataPoint(header, value, tooltipText).then(() => {
       dx_utils.assertElementContainsText(
-          dataPointElement.$$('.header > span'), header);
-      dx_utils.assertElementContainsText(dataPointElement.$$('.value'), value);
-      assertTrue(isVisible(
-          /**@type {!HTMLElement} */ (dataPointElement.$$('#infoIcon'))));
+          dataPointElement.shadowRoot.querySelector('.header > span'), header);
       dx_utils.assertElementContainsText(
-          dataPointElement.$$('paper-tooltip'), tooltipText);
+          dataPointElement.shadowRoot.querySelector('.value'), value);
+      assertTrue(isVisible(
+          /**@type {!HTMLElement} */ (
+              dataPointElement.shadowRoot.querySelector('#infoIcon'))));
+      dx_utils.assertElementContainsText(
+          dataPointElement.shadowRoot.querySelector('paper-tooltip'),
+          tooltipText);
     });
   });
 
@@ -67,7 +73,8 @@
     return initializeDataPoint(header, value).then(() => {
       // Icon should be hidden when tooltip text is not provided.
       assertFalse(isVisible(
-          /**@type {!HTMLElement} */ (dataPointElement.$$('#infoIcon'))));
+          /**@type {!HTMLElement} */ (
+              dataPointElement.shadowRoot.querySelector('#infoIcon'))));
     });
   });
 
@@ -76,7 +83,7 @@
     const value = 'Test value';
     return initializeDataPoint(header, value, '', true).then(() => {
       dx_utils.assertElementContainsText(
-          dataPointElement.$$('.text-red'), value);
+          dataPointElement.shadowRoot.querySelector('.text-red'), value);
     });
   });
 }
diff --git a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_test.js b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_test.js
index b819727..0ce2ed3 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_test.js
@@ -5,6 +5,7 @@
 import 'chrome://diagnostics/diagnostics_app.js';
 import 'chrome://resources/cr_elements/cr_button/cr_button.js';
 
+import {DiagnosticsAppElement} from 'chrome://diagnostics/diagnostics_app.js';
 import {DiagnosticsBrowserProxyImpl} from 'chrome://diagnostics/diagnostics_browser_proxy.js';
 import {BatteryChargeStatus, BatteryHealth, BatteryInfo, CpuUsage, KeyboardInfo, MemoryUsage, SystemInfo} from 'chrome://diagnostics/diagnostics_types.js';
 import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeCellularNetwork, fakeCpuUsage, fakeEthernetNetwork, fakeKeyboards, fakeMemoryUsage, fakeNetworkGuidInfoList, fakePowerRoutineResults, fakeRoutineResults, fakeSystemInfo, fakeTouchDevices, fakeWifiNetwork} from 'chrome://diagnostics/fake_data.js';
@@ -73,7 +74,8 @@
   function getCautionBanner() {
     assertTrue(!!page);
 
-    return /** @type {!HTMLElement} */ (page.$$('diagnostics-sticky-banner'));
+    return /** @type {!HTMLElement} */ (
+        page.shadowRoot.querySelector('diagnostics-sticky-banner'));
   }
 
   /** @return {!HTMLElement} */
@@ -88,7 +90,8 @@
   function getSessionLogButton() {
     assertTrue(!!page);
 
-    return /** @type {!CrButtonElement} */ (page.$$('.session-log-button'));
+    return /** @type {!CrButtonElement} */ (
+        page.shadowRoot.querySelector('.session-log-button'));
   }
 
   /**
@@ -98,7 +101,7 @@
     assertTrue(!!page);
 
     return /** @type {!HTMLElement} */ (
-        page.$$('[slot=bottom-nav-content-drawer]'));
+        page.shadowRoot.querySelector('[slot=bottom-nav-content-drawer]'));
   }
 
   /**
@@ -108,7 +111,7 @@
     assertTrue(!!page);
 
     return /** @type {!HTMLElement} */ (
-        page.$$('[slot=bottom-nav-content-panel]'));
+        page.shadowRoot.querySelector('[slot=bottom-nav-content-panel]'));
   }
 
   /**
@@ -293,7 +296,7 @@
 
   /** @param {!string} id */
   function navigationSelectorHasId(id) {
-    const items = page.$$('navigation-view-panel')
+    const items = page.shadowRoot.querySelector('navigation-view-panel')
                       .shadowRoot.querySelector('navigation-selector')
                       .selectorItems;
     return !!items.find((item) => item.id === id);
diff --git a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_test_utils.js b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_test_utils.js
index e31c191..24719cd3 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_test_utils.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_test_utils.js
@@ -4,6 +4,18 @@
 
 import 'chrome://resources/cr_elements/cr_button/cr_button.js';
 
+import {CellularInfoElement} from 'chrome://diagnostics/cellular_info.js';
+import {CpuCardElement} from 'chrome://diagnostics/cpu_card.js';
+import {DataPointElement} from 'chrome://diagnostics/data_point.js';
+import {DiagnosticsCardElement} from 'chrome://diagnostics/diagnostics_card.js';
+import {EthernetInfoElement} from 'chrome://diagnostics/ethernet_info.js';
+import {PercentBarChartElement} from 'chrome://diagnostics/percent_bar_chart.js';
+import {RealtimeCpuChartElement} from 'chrome://diagnostics/realtime_cpu_chart.js';
+import {RoutineResultEntryElement} from 'chrome://diagnostics/routine_result_entry.js';
+import {RoutineResultListElement} from 'chrome://diagnostics/routine_result_list.js';
+import {RoutineSectionElement} from 'chrome://diagnostics/routine_section.js';
+import {WifiInfoElement} from 'chrome://diagnostics/wifi_info.js';
+
 import {assertEquals, assertTrue} from '../../chai_assert.js';
 import {isVisible} from '../../test_util.js';
 
@@ -91,7 +103,8 @@
  */
 export function getRunTestsButtonFromSection(element) {
   const button =
-      /** @type {!CrButtonElement} */ (element.$$('#runTestsButton'));
+      /** @type {!CrButtonElement} */ (
+          element.shadowRoot.querySelector('#runTestsButton'));
   assertTrue(!!button);
   return button;
 }
@@ -103,7 +116,8 @@
  */
 export function getStopTestsButtonFromSection(element) {
   const button =
-      /** @type {!CrButtonElement} */ (element.$$('#stopTestsButton'));
+      /** @type {!CrButtonElement} */ (
+          element.shadowRoot.querySelector('#stopTestsButton'));
   assertTrue(!!button);
   return button;
 }
@@ -116,7 +130,8 @@
  */
 export function getToggleTestReportButtonFromSection(element) {
   const button =
-      /** @type {!CrButtonElement} */ (element.$$('#toggleReportButton'));
+      /** @type {!CrButtonElement} */ (
+          element.shadowRoot.querySelector('#toggleReportButton'));
   assertTrue(!!button);
   return button;
 }
@@ -199,7 +214,8 @@
  */
 export function getRoutineSection(element) {
   const routineSection =
-      /** @type {!RoutineSectionElement} */ (element.$$('routine-section'));
+      /** @type {!RoutineSectionElement} */ (
+          element.shadowRoot.querySelector('routine-section'));
   assertTrue(!!routineSection);
   return routineSection;
 }
@@ -248,7 +264,7 @@
  * @return {!HTMLElement}
  */
 export function getNavigationViewPanelElement(element, selector) {
-  const navPanel = element.$$('navigation-view-panel');
+  const navPanel = element.shadowRoot.querySelector('navigation-view-panel');
   return /** @type {!HTMLElement} */ (
       navPanel.shadowRoot.querySelector(`#${selector}`));
 }
diff --git a/chrome/test/data/webui/chromeos/diagnostics/input_card_test.js b/chrome/test/data/webui/chromeos/diagnostics/input_card_test.js
index 9126c3d7..6f7c96f 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/input_card_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/input_card_test.js
@@ -3,7 +3,8 @@
 // found in the LICENSE file.
 
 import {ConnectionType, KeyboardInfo, MechanicalLayout, NumberPadPresence, PhysicalLayout, TopRightKey, TopRowKey} from 'chrome://diagnostics/diagnostics_types.js';
-import {InputCardType} from 'chrome://diagnostics/input_card.js';
+import {InputCardElement, InputCardType} from 'chrome://diagnostics/input_card.js';
+
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks} from '../../test_util.js';
 
@@ -75,7 +76,9 @@
 
   test('KeyboardsListedCorrectly', async () => {
     await initializeInputCard(InputCardType.kKeyboard, keyboards);
-    assertEquals(2, inputCardElement.$$('dom-repeat').items.length);
+    assertEquals(
+        2,
+        inputCardElement.shadowRoot.querySelector('dom-repeat').items.length);
     const elements = inputCardElement.root.querySelectorAll('.device');
     assertEquals(
         keyboards[0].name, elements[0].querySelector('.device-name').innerText);
@@ -96,7 +99,9 @@
       listenerCalled = true;
       assertEquals(10, e.detail.evdevId);
     });
-    inputCardElement.$$('.device[data-evdev-id="10"] cr-button').click();
+    inputCardElement.shadowRoot
+        .querySelector('.device[data-evdev-id="10"] cr-button')
+        .click();
     await flushTasks();
     assertTrue(listenerCalled);
   });
diff --git a/chrome/test/data/webui/chromeos/diagnostics/input_list_test.js b/chrome/test/data/webui/chromeos/diagnostics/input_list_test.js
index 3cff735..c4a0cda0b 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/input_list_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/input_list_test.js
@@ -8,6 +8,8 @@
 import {ConnectionType, KeyboardInfo, MechanicalLayout, NavigationView, NumberPadPresence, PhysicalLayout, TopRightKey, TopRowKey, TouchDeviceInfo, TouchDeviceType} from 'chrome://diagnostics/diagnostics_types.js';
 import {fakeKeyboards, fakeTouchDevices} from 'chrome://diagnostics/fake_data.js';
 import {FakeInputDataProvider} from 'chrome://diagnostics/fake_input_data_provider.js';
+import {InputCardElement} from 'chrome://diagnostics/input_card.js';
+import {InputListElement} from 'chrome://diagnostics/input_list.js';
 import {setInputDataProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
 
 import {assertArrayEquals, assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -59,7 +61,8 @@
 
   /** @return {!InputCardElement} */
   function getCardByDeviceType(deviceType) {
-    const card = inputListElement.$$(`input-card[device-type="${deviceType}"]`);
+    const card = inputListElement.shadowRoot.querySelector(
+        `input-card[device-type="${deviceType}"]`);
     return /** @type {!InputCardElement} */ (card);
   }
 
@@ -116,12 +119,14 @@
 
   test('KeyboardTesterShow', async () => {
     await initializeInputList([fakeKeyboards[0]], []);
-    const testButton = getCardByDeviceType('keyboard').$$('cr-button');
+    const testButton =
+        getCardByDeviceType('keyboard').shadowRoot.querySelector('cr-button');
     assertTrue(!!testButton);
     testButton.click();
     await flushTasks();
 
-    const keyboardTester = inputListElement.$$('keyboard-tester');
+    const keyboardTester =
+        inputListElement.shadowRoot.querySelector('keyboard-tester');
     assertTrue(keyboardTester.isOpen());
   });
 
diff --git a/chrome/test/data/webui/chromeos/diagnostics/ip_config_info_drawer_test.js b/chrome/test/data/webui/chromeos/diagnostics/ip_config_info_drawer_test.js
index 0dafe31..8cd1ab2 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/ip_config_info_drawer_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/ip_config_info_drawer_test.js
@@ -7,6 +7,7 @@
 import {DiagnosticsBrowserProxyImpl} from 'chrome://diagnostics/diagnostics_browser_proxy.js';
 import {Network} from 'chrome://diagnostics/diagnostics_types.js';
 import {fakeEthernetNetwork, fakeWifiNetwork, fakeWifiNetworkEmptyNameServers, fakeWifiNetworkMultipleNameServers, fakeWifiNetworkNoNameServers} from 'chrome://diagnostics/fake_data.js';
+import {IpConfigInfoDrawerElement} from 'chrome://diagnostics/ip_config_info_drawer.js';
 
 import {assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks, isVisible} from '../../test_util.js';
@@ -53,7 +54,8 @@
    */
   function getDrawerContentContainer() {
     return /** @type {!HTMLElement} */ (
-        ipConfigInfoDrawerElement.$$('#ipConfigInfoElement'));
+        ipConfigInfoDrawerElement.shadowRoot.querySelector(
+            '#ipConfigInfoElement'));
   }
 
   /**
@@ -61,7 +63,8 @@
    * @return {!HTMLElement}
    */
   function getDrawerToggle() {
-    const toggleButton = ipConfigInfoDrawerElement.$$('#drawerToggle');
+    const toggleButton =
+        ipConfigInfoDrawerElement.shadowRoot.querySelector('#drawerToggle');
     assertTrue(!!toggleButton);
     return /** @type {!HTMLElement} */ (toggleButton);
   }
@@ -93,7 +96,8 @@
       assertTrue(isVisible(getDrawerToggle()));
       dx_utils.assertElementContainsText(
           /** @type {HTMLElement} */ (
-              ipConfigInfoDrawerElement.$$('#drawerTitle')),
+              ipConfigInfoDrawerElement.shadowRoot.querySelector(
+                  '#drawerTitle')),
           ipConfigInfoDrawerElement.i18n('ipConfigInfoDrawerTitle'));
     });
   });
diff --git a/chrome/test/data/webui/chromeos/diagnostics/keyboard_tester_test.js b/chrome/test/data/webui/chromeos/diagnostics/keyboard_tester_test.js
index 94e7658..91d067b 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/keyboard_tester_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/keyboard_tester_test.js
@@ -38,7 +38,8 @@
     });
     await flushTasks();
 
-    const diagramElement = keyboardTesterElement.$$('#diagram');
+    const diagramElement =
+        keyboardTesterElement.shadowRoot.querySelector('#diagram');
     assertEquals(DiagramTopRightKey.kPower, diagramElement.topRightKey);
 
     /** @type {!KeyEvent} */
@@ -61,7 +62,8 @@
     });
     await flushTasks();
 
-    const diagramElement = keyboardTesterElement.$$('#diagram');
+    const diagramElement =
+        keyboardTesterElement.shadowRoot.querySelector('#diagram');
     const mockController = new MockController();
     const mockSetKeyState =
         mockController.createFunctionMock(diagramElement, 'setKeyState');
@@ -89,7 +91,8 @@
     });
     await flushTasks();
 
-    const diagramElement = keyboardTesterElement.$$('#diagram');
+    const diagramElement =
+        keyboardTesterElement.shadowRoot.querySelector('#diagram');
     assertFalse(diagramElement.showNumberPad);
 
     /** @type {!KeyEvent} */
@@ -115,7 +118,8 @@
     });
     await flushTasks();
 
-    const diagramElement = keyboardTesterElement.$$('#diagram');
+    const diagramElement =
+        keyboardTesterElement.shadowRoot.querySelector('#diagram');
     assertFalse(diagramElement.showNumberPad);
 
     /** @type {!KeyEvent} */
@@ -141,7 +145,8 @@
     });
     await flushTasks();
 
-    const diagramElement = keyboardTesterElement.$$('#diagram');
+    const diagramElement =
+        keyboardTesterElement.shadowRoot.querySelector('#diagram');
     assertFalse(diagramElement.showNumberPad);
 
     /** @type {!KeyEvent} */
diff --git a/chrome/test/data/webui/chromeos/diagnostics/memory_card_test.js b/chrome/test/data/webui/chromeos/diagnostics/memory_card_test.js
index ed05757..13fd6260 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/memory_card_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/memory_card_test.js
@@ -9,7 +9,9 @@
 import {convertKibToGibDecimalString} from 'chrome://diagnostics/diagnostics_utils.js';
 import {fakeMemoryUsage, fakeMemoryUsageLowAvailableMemory} from 'chrome://diagnostics/fake_data.js';
 import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js';
+import {MemoryCardElement} from 'chrome://diagnostics/memory_card.js';
 import {setSystemDataProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
+import {RoutineSectionElement} from 'chrome://diagnostics/routine_section.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -66,7 +68,7 @@
    */
   function getRoutineSection() {
     const routineSection = /** @type {!RoutineSectionElement} */ (
-        memoryElement.$$('routine-section'));
+        memoryElement.shadowRoot.querySelector('routine-section'));
     assertTrue(!!routineSection);
     return routineSection;
   }
@@ -122,7 +124,7 @@
           loadTimeData.getString('notEnoughAvailableMemoryMessage'));
       assertTrue(isRunTestsButtonDisabled());
       assertTrue(isVisible(/** @type {!HTMLElement} */ (
-          routineSectionElement.$$('#messageIcon'))));
+          routineSectionElement.shadowRoot.querySelector('#messageIcon'))));
     });
   });
 }
diff --git a/chrome/test/data/webui/chromeos/diagnostics/network_card_test.js b/chrome/test/data/webui/chromeos/diagnostics/network_card_test.js
index 750c847..32a5dde 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/network_card_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/network_card_test.js
@@ -6,7 +6,9 @@
 
 import {fakeCellularDisabledNetwork, fakeCellularDisconnectedNetwork, fakeCellularNetwork, fakeCellularWithIpConfigNetwork, fakeConnectingEthernetNetwork, fakeDisconnectedEthernetNetwork, fakeDisconnectedWifiNetwork, fakeEthernetNetwork, fakeNetworkGuidInfoList, fakePortalWifiNetwork, fakeWifiNetwork, fakeWifiNetworkDisabled, fakeWifiNetworkInvalidNameServers, fakeWifiNetworkNoIpAddress} from 'chrome://diagnostics/fake_data.js';
 import {FakeNetworkHealthProvider} from 'chrome://diagnostics/fake_network_health_provider.js';
+import {IpConfigInfoDrawerElement} from 'chrome://diagnostics/ip_config_info_drawer.js';
 import {setNetworkHealthProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
+import {NetworkCardElement} from 'chrome://diagnostics/network_card.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertDeepEquals, assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -92,7 +94,7 @@
    */
   function getTroubleConnectingElement() {
     return /** @type {!HTMLElement} */ (
-        networkCardElement.$$('#networkTroubleshooting'));
+        networkCardElement.shadowRoot.querySelector('#networkTroubleshooting'));
   }
 
   /** @return {!Element} */
@@ -100,21 +102,23 @@
     assertTrue(!!networkCardElement);
 
     return /** @type {!Element} */ (
-        networkCardElement.$$('#ipConfigInfoDrawer'));
+        networkCardElement.shadowRoot.querySelector('#ipConfigInfoDrawer'));
   }
 
   /** @return {!Element} */
   function getNetworkInfoElement() {
     assertTrue(!!networkCardElement);
 
-    return /** @type {!Element} */ (networkCardElement.$$('network-info'));
+    return /** @type {!Element} */ (
+        networkCardElement.shadowRoot.querySelector('network-info'));
   }
 
   /** @return {!Element} */
   function getNetworkIcon() {
     assertTrue(!!networkCardElement);
 
-    return /** @type {!Element} */ (networkCardElement.$$('#icon'));
+    return /** @type {!Element} */ (
+        networkCardElement.shadowRoot.querySelector('#icon'));
   }
 
   /** @return {!Element} */
@@ -149,7 +153,9 @@
 
   /** @return {!Promise} */
   function openIpConfigDrawer() {
-    networkCardElement.$$('#ipConfigInfoDrawer').$$('#drawerToggle').click();
+    networkCardElement.shadowRoot.querySelector('#ipConfigInfoDrawer')
+        .shadowRoot.querySelector('#drawerToggle')
+        .click();
     return flushTasks();
   }
 
@@ -184,7 +190,7 @@
   test('CardTitleWiFiConnectedInitializedCorrectly', () => {
     return initializeNetworkCard('wifiGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), 'Wi-Fi');
+          networkCardElement.shadowRoot.querySelector('#cardTitle'), 'Wi-Fi');
       assertTrue(isVisible(getNetworkIcon()));
       assertFalse(isVisible(getTroubleConnectingElement()));
       assertTrue(isVisible(getWifiInfoElement()));
@@ -195,7 +201,7 @@
   test('CardTitleWiFiDisabledInitializedCorrectly', () => {
     return initializeNetworkCard('wifiGuidDisabled').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), 'Wi-Fi');
+          networkCardElement.shadowRoot.querySelector('#cardTitle'), 'Wi-Fi');
       assertTrue(isVisible(getTroubleConnectingElement()));
       assertFalse(isVisible(getNetworkInfoElement()));
       assertFalse(isVisible(getIpConfigDrawerElement()));
@@ -209,7 +215,8 @@
     const networkType = 'Wi-Fi';
     return initializeNetworkCard('wifiDisconnectedGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), networkType);
+          networkCardElement.shadowRoot.querySelector('#cardTitle'),
+          networkType);
       assertTrue(isVisible(getTroubleConnectingElement()));
       assertFalse(isVisible(getNetworkInfoElement()));
       assertFalse(isVisible(getIpConfigDrawerElement()));
@@ -225,7 +232,7 @@
   test('WifiPortalShowTroubleShooting', () => {
     return initializeNetworkCard('wifiPortalGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), 'Wi-Fi');
+          networkCardElement.shadowRoot.querySelector('#cardTitle'), 'Wi-Fi');
       assertTrue(isVisible(getNetworkIcon()));
       assertTrue(isVisible(getTroubleConnectingElement()));
       assertTrue(isVisible(getNetworkInfoElement()));
@@ -239,7 +246,8 @@
   test('CardTitleEthernetOnlineInitializedCorrectly', () => {
     return initializeNetworkCard('ethernetGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), 'Ethernet');
+          networkCardElement.shadowRoot.querySelector('#cardTitle'),
+          'Ethernet');
       assertTrue(isVisible(getNetworkIcon()));
       assertFalse(isVisible(getTroubleConnectingElement()));
       assertTrue(isVisible(getEthernetInfoElement()));
@@ -250,7 +258,8 @@
     const networkType = 'Ethernet';
     return initializeNetworkCard('ethernetDisconnectedGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), networkType);
+          networkCardElement.shadowRoot.querySelector('#cardTitle'),
+          networkType);
       assertTrue(isVisible(getNetworkIcon()));
       assertTrue(isVisible(getTroubleConnectingElement()));
       assertFalse(isVisible(getNetworkInfoElement()));
@@ -267,7 +276,8 @@
   test('NetworkConnectingHideTroubleShooting', () => {
     return initializeNetworkCard('ethernetConnectingGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), 'Ethernet');
+          networkCardElement.shadowRoot.querySelector('#cardTitle'),
+          'Ethernet');
       assertTrue(isVisible(getNetworkIcon()));
       assertFalse(isVisible(getTroubleConnectingElement()));
       assertTrue(isVisible(getNetworkInfoElement()));
@@ -279,7 +289,8 @@
     return initializeNetworkCard('wifiGuid').then(() => {
       const ipConfigInfoDrawerElement =
           /** @type {!IpConfigInfoDrawerElement} */ (
-              networkCardElement.$$('#ipConfigInfoDrawer'));
+              networkCardElement.shadowRoot.querySelector(
+                  '#ipConfigInfoDrawer'));
       assertTrue(
           isVisible(/** @type {!HTMLElement} */ (ipConfigInfoDrawerElement)));
       assertDeepEquals(fakeWifiNetwork, ipConfigInfoDrawerElement.network);
@@ -293,7 +304,8 @@
           assertFalse(getNameServers().includes('0.0.0.0'));
           const ipConfigInfoDrawerElement =
               /** @type {!IpConfigInfoDrawerElement} */ (
-                  networkCardElement.$$('#ipConfigInfoDrawer'));
+                  networkCardElement.shadowRoot.querySelector(
+                      '#ipConfigInfoDrawer'));
           // Valid name server should not have been filtered from the list.
           assertEquals(
               dx_utils.getDataPointValue(
@@ -345,7 +357,8 @@
   test('CardTitleCellularConnectedInitializedCorrectly', () => {
     return initializeNetworkCard('cellularWithIpConfigGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), 'Mobile data');
+          networkCardElement.shadowRoot.querySelector('#cardTitle'),
+          'Mobile data');
       assertTrue(isVisible(getNetworkIcon()));
       assertFalse(isVisible(getTroubleConnectingElement()));
       assertTrue(isVisible(getCellularInfoElement()));
@@ -356,7 +369,8 @@
   test('CardTitleCellularDisabledInitializedCorrectly', () => {
     return initializeNetworkCard('cellularDisabledGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), 'Mobile data');
+          networkCardElement.shadowRoot.querySelector('#cardTitle'),
+          'Mobile data');
       assertTrue(isVisible(getTroubleConnectingElement()));
       assertFalse(isVisible(getNetworkInfoElement()));
       assertFalse(isVisible(getIpConfigDrawerElement()));
@@ -370,7 +384,8 @@
     const networkType = 'Mobile data';
     return initializeNetworkCard('cellularDisconnectedGuid').then(() => {
       dx_utils.assertElementContainsText(
-          networkCardElement.$$('#cardTitle'), networkType);
+          networkCardElement.shadowRoot.querySelector('#cardTitle'),
+          networkType);
       assertTrue(isVisible(getTroubleConnectingElement()));
       assertFalse(isVisible(getNetworkInfoElement()));
       assertFalse(isVisible(getIpConfigDrawerElement()));
diff --git a/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js b/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js
index 6646bf61..55bf97d 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js
@@ -6,6 +6,7 @@
 
 import {Network} from 'chrome://diagnostics/diagnostics_types.js';
 import {fakeCellularNetwork, fakeEthernetNetwork, fakeWifiNetwork} from 'chrome://diagnostics/fake_data.js';
+import {NetworkInfoElement} from 'chrome://diagnostics/network_info.js';
 
 import {assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks, isVisible} from '../../test_util.js';
diff --git a/chrome/test/data/webui/chromeos/diagnostics/network_list_test.js b/chrome/test/data/webui/chromeos/diagnostics/network_list_test.js
index d2c21cee..1126990 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/network_list_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/network_list_test.js
@@ -4,12 +4,14 @@
 
 import 'chrome://diagnostics/network_list.js';
 
+import {ConnectivityCardElement} from 'chrome://diagnostics/connectivity_card.js';
 import {DiagnosticsBrowserProxyImpl} from 'chrome://diagnostics/diagnostics_browser_proxy.js';
 import {NavigationView, NetworkGuidInfo} from 'chrome://diagnostics/diagnostics_types.js';
 import {fakeCellularNetwork, fakeEthernetNetwork, fakeNetworkGuidInfoList, fakePowerRoutineResults, fakeRoutineResults, fakeWifiNetwork} from 'chrome://diagnostics/fake_data.js';
 import {FakeNetworkHealthProvider} from 'chrome://diagnostics/fake_network_health_provider.js';
 import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js';
 import {setNetworkHealthProviderForTesting, setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
+import {NetworkListElement} from 'chrome://diagnostics/network_list.js';
 
 import {assertArrayEquals, assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks, isVisible} from '../../test_util.js';
@@ -80,7 +82,7 @@
   function getConnectivityCard() {
     const connectivityCard =
         /** @type {!ConnectivityCardElement} */ (
-            networkListElement.$$('connectivity-card'));
+            networkListElement.shadowRoot.querySelector('connectivity-card'));
     assertTrue(!!connectivityCard);
     return connectivityCard;
   }
@@ -115,7 +117,8 @@
   function getSettingsLink() {
     assertTrue(!!networkListElement);
 
-    return /** @type {!HTMLElement} */ (networkListElement.$$('#settingsLink'));
+    return /** @type {!HTMLElement} */ (
+        networkListElement.shadowRoot.querySelector('#settingsLink'));
   }
 
   /**
@@ -170,7 +173,8 @@
         .then(() => {
           networkGuids = getOtherNetworkGuids();
           numDomRepeatInstances =
-              networkListElement.$$('#networkCardList').items.length;
+              networkListElement.shadowRoot.querySelector('#networkCardList')
+                  .items.length;
           networkCardElements = getNetworkCardElements();
           assertEquals(numDomRepeatInstances, networkGuids.length);
           for (let i = 0; i < networkCardElements.length; i++) {
@@ -181,7 +185,8 @@
         .then(() => {
           networkGuids = getOtherNetworkGuids();
           numDomRepeatInstances =
-              networkListElement.$$('#networkCardList').items.length;
+              networkListElement.shadowRoot.querySelector('#networkCardList')
+                  .items.length;
           networkCardElements = getNetworkCardElements();
           assertEquals(numDomRepeatInstances, networkGuids.length);
           for (let i = 0; i < networkCardElements.length; i++) {
@@ -201,9 +206,9 @@
           // and WiFi. The connectivity-card is responsbile for the Ethernet
           // guid as it's the currently active guid.
           const wifiInfoElement = dx_utils.getWifiInfoElement(
-              networkCardElements[0].$$('network-info'));
+              networkCardElements[0].shadowRoot.querySelector('network-info'));
           dx_utils.assertTextContains(
-              wifiInfoElement.$$('#ssid').value,
+              wifiInfoElement.shadowRoot.querySelector('#ssid').value,
               fakeWifiNetwork.typeProperties.wifi.ssid);
 
           assertEquals(
@@ -216,9 +221,9 @@
         .then(() => {
           networkCardElements = getNetworkCardElements();
           const cellularInfoElement = dx_utils.getCellularInfoElement(
-              networkCardElements[0].$$('network-info'));
+              networkCardElements[0].shadowRoot.querySelector('network-info'));
           dx_utils.assertTextContains(
-              cellularInfoElement.$$('#iccid').value,
+              cellularInfoElement.shadowRoot.querySelector('#iccid').value,
               fakeCellularNetwork.typeProperties.cellular.iccid);
           assertEquals(
               getConnectivityCard().activeGuid,
@@ -229,7 +234,9 @@
   test('ConnectivityCardHiddenWithNoActiveGuid', () => {
     return initializeNetworkList(fakeNetworkGuidInfoList)
         .then(() => changeActiveGuid(''))
-        .then(() => assertFalse(!!networkListElement.$$('connectivity-card')));
+        .then(
+            () => assertFalse(!!networkListElement.shadowRoot.querySelector(
+                'connectivity-card')));
   });
 
   test('SettingsLinkHiddenWhenNotLoggedIn', () => {
@@ -274,7 +281,8 @@
     return initializeNetworkList(fakeNetworkGuidInfoList)
         .then(
             () => assertTrue(isVisible(
-                /** @type {!HTMLElement} */ (networkListElement.$$(
-                    '.diagnostics-network-list-container')))));
+                /** @type {!HTMLElement} */ (
+                    networkListElement.shadowRoot.querySelector(
+                        '.diagnostics-network-list-container')))));
   });
 }
diff --git a/chrome/test/data/webui/chromeos/diagnostics/overview_card_test.js b/chrome/test/data/webui/chromeos/diagnostics/overview_card_test.js
index 0ef9431..cce641f 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/overview_card_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/overview_card_test.js
@@ -8,6 +8,7 @@
 import {fakeSystemInfo, fakeSystemInfoWithoutBoardName, fakeSystemInfoWithTBD} from 'chrome://diagnostics/fake_data.js';
 import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js';
 import {getSystemDataProvider, setSystemDataProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
+import {OverviewCardElement} from 'chrome://diagnostics/overview_card.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -56,11 +57,13 @@
   test('OverviewCardPopulated', () => {
     return initializeOverviewCard(fakeSystemInfo).then(() => {
       dx_utils.assertElementContainsText(
-          overviewElement.$$('#marketingName'), fakeSystemInfo.marketingName);
+          overviewElement.shadowRoot.querySelector('#marketingName'),
+          fakeSystemInfo.marketingName);
       dx_utils.assertElementContainsText(
-          overviewElement.$$('#deviceInfo'), fakeSystemInfo.boardName);
+          overviewElement.shadowRoot.querySelector('#deviceInfo'),
+          fakeSystemInfo.boardName);
       dx_utils.assertElementContainsText(
-          overviewElement.$$('#deviceInfo'),
+          overviewElement.shadowRoot.querySelector('#deviceInfo'),
           fakeSystemInfo.versionInfo.milestoneVersion);
     });
   });
@@ -68,11 +71,13 @@
   test('TBDMarketingNameHidden', () => {
     return initializeOverviewCard(fakeSystemInfoWithTBD).then(() => {
       assertFalse(isVisible(
-          /** @type {!HTMLElement} */ (overviewElement.$$('#marketingName'))));
+          /** @type {!HTMLElement} */ (
+              overviewElement.shadowRoot.querySelector('#marketingName'))));
 
       // Device info should not be surrounded by parentheses when the marketing
       // name is hidden.
-      const deviceInfoText = overviewElement.$$('#deviceInfo').textContent;
+      const deviceInfoText =
+          overviewElement.shadowRoot.querySelector('#deviceInfo').textContent;
       assertTrue(deviceInfoText[0] !== '(');
       assertTrue(deviceInfoText[deviceInfoText.length - 1] !== ')');
     });
@@ -84,7 +89,7 @@
           'versionInfo',
           fakeSystemInfoWithoutBoardName.versionInfo.fullVersionString);
       assertEquals(
-          overviewElement.$$('#deviceInfo').textContent,
+          overviewElement.shadowRoot.querySelector('#deviceInfo').textContent,
           versionInfo[0].toUpperCase() + versionInfo.slice(1));
     });
   });
diff --git a/chrome/test/data/webui/chromeos/diagnostics/percent_bar_chart_test.js b/chrome/test/data/webui/chromeos/diagnostics/percent_bar_chart_test.js
index 27c44c06..8fd38be 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/percent_bar_chart_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/percent_bar_chart_test.js
@@ -4,6 +4,8 @@
 
 import 'chrome://diagnostics/percent_bar_chart.js';
 
+import {PercentBarChartElement} from 'chrome://diagnostics/percent_bar_chart.js';
+
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks} from '../../test_util.js';
 
@@ -50,12 +52,15 @@
     const max = 30;
     const percent = Math.round(100 * value / max);
     return initializePercentBarChart(header, value, max).then(() => {
-      const paperProgress = percentBarChartElement.$$('paper-progress');
+      const paperProgress =
+          percentBarChartElement.shadowRoot.querySelector('paper-progress');
       assertEquals(value, paperProgress.value);
       assertEquals(max, paperProgress.max);
 
       assertEquals(
-          header, percentBarChartElement.$$('#chartName').textContent.trim());
+          header,
+          percentBarChartElement.shadowRoot.querySelector('#chartName')
+              .textContent.trim());
     });
   });
 
@@ -64,7 +69,8 @@
     const value = 101;
     const max = 100;
     return initializePercentBarChart(header, value, max).then(() => {
-      const paperProgress = percentBarChartElement.$$('paper-progress');
+      const paperProgress =
+          percentBarChartElement.shadowRoot.querySelector('paper-progress');
       assertEquals(paperProgress.value, paperProgress.max);
     });
   });
diff --git a/chrome/test/data/webui/chromeos/diagnostics/realtime_cpu_chart_test.js b/chrome/test/data/webui/chromeos/diagnostics/realtime_cpu_chart_test.js
index 3fd6646..0d4a280 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/realtime_cpu_chart_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/realtime_cpu_chart_test.js
@@ -4,6 +4,8 @@
 
 import 'chrome://diagnostics/realtime_cpu_chart.js';
 
+import {RealtimeCpuChartElement} from 'chrome://diagnostics/realtime_cpu_chart.js';
+
 import {assertEquals, assertFalse, assertGT, assertTrue} from '../../chai_assert.js';
 import {flushTasks} from '../../test_util.js';
 
@@ -82,9 +84,12 @@
     const system = 30;
     return initializeRealtimeCpuChart(user, system).then(() => {
       diagnostics_test_utils.assertElementContainsText(
-          realtimeCpuChartElement.$$('#legend-user>span'), `${user}`);
+          realtimeCpuChartElement.shadowRoot.querySelector('#legend-user>span'),
+          `${user}`);
       diagnostics_test_utils.assertElementContainsText(
-          realtimeCpuChartElement.$$('#legend-system>span'), `${system}`);
+          realtimeCpuChartElement.shadowRoot.querySelector(
+              '#legend-system>span'),
+          `${system}`);
 
       assertEquals(user, realtimeCpuChartElement.user);
       assertEquals(system, realtimeCpuChartElement.system);
@@ -95,8 +100,9 @@
     const user = 10;
     const system = 30;
     return initializeRealtimeCpuChart(user, system).then(() => {
-      const svg = realtimeCpuChartElement.$$('#chart');
-      const boundary = realtimeCpuChartElement.$$('#defClip>rect');
+      const svg = realtimeCpuChartElement.shadowRoot.querySelector('#chart');
+      const boundary =
+          realtimeCpuChartElement.shadowRoot.querySelector('#defClip>rect');
 
       // Chart area boundary must fit within svg.
       assertGT(
@@ -106,7 +112,8 @@
           Number(svg.getAttribute('height')),
           Number(boundary.getAttribute('height')));
 
-      const chartGroup = realtimeCpuChartElement.$$('#chartGroup');
+      const chartGroup =
+          realtimeCpuChartElement.shadowRoot.querySelector('#chartGroup');
 
       // Margins are in effect.
       assertEquals(
@@ -121,7 +128,8 @@
 
     return initializeRealtimeCpuChart(user, system).then(() => {
       // yAxis is drawn.
-      assertTrue(!!realtimeCpuChartElement.$$('#gridLines>path.domain'));
+      assertTrue(!!realtimeCpuChartElement.shadowRoot.querySelector(
+          '#gridLines>path.domain'));
 
       // Correct number of yAxis ticks drawn.
       assertEquals(
@@ -131,9 +139,11 @@
               .length);
 
       // Plot lines are drawn.
-      assertTrue(!!realtimeCpuChartElement.$$('#plotGroup>path.user-area')
+      assertTrue(!!realtimeCpuChartElement.shadowRoot
+                       .querySelector('#plotGroup>path.user-area')
                        .getAttribute('d'));
-      assertTrue(!!realtimeCpuChartElement.$$('#plotGroup>path.system-area')
+      assertTrue(!!realtimeCpuChartElement.shadowRoot
+                       .querySelector('#plotGroup>path.system-area')
                        .getAttribute('d'));
     });
   });
diff --git a/chrome/test/data/webui/chromeos/diagnostics/routine_result_entry_test.js b/chrome/test/data/webui/chromeos/diagnostics/routine_result_entry_test.js
index 25b2c03..9a8746a 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/routine_result_entry_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/routine_result_entry_test.js
@@ -7,7 +7,8 @@
 import {RoutineResult, RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
 import {RoutineGroup} from 'chrome://diagnostics/routine_group.js';
 import {ExecutionProgress, ResultStatusItem} from 'chrome://diagnostics/routine_list_executor.js';
-import {BadgeType} from 'chrome://diagnostics/text_badge.js';
+import {RoutineResultEntryElement} from 'chrome://diagnostics/routine_result_entry.js';
+import {BadgeType, TextBadgeElement} from 'chrome://diagnostics/text_badge.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -92,7 +93,7 @@
    * @return {string}
    */
   function getNameText() {
-    const name = routineResultEntryElement.$$('#routine');
+    const name = routineResultEntryElement.shadowRoot.querySelector('#routine');
     assertTrue(!!name);
     return name.textContent.trim();
   }
@@ -103,7 +104,7 @@
    */
   function getStatusBadge() {
     const badge = /** @type{!TextBadgeElement} */ (
-        routineResultEntryElement.$$('#status'));
+        routineResultEntryElement.shadowRoot.querySelector('#status'));
     assertTrue(!!badge);
     return badge;
   }
@@ -114,7 +115,8 @@
    */
   function getFailedTestContainer() {
     const failedTestContainer = /** @type {!HTMLSpanElement} */ (
-        routineResultEntryElement.$$('#failed-test-text'));
+        routineResultEntryElement.shadowRoot.querySelector(
+            '#failed-test-text'));
     assertTrue(!!failedTestContainer);
     return failedTestContainer;
   }
@@ -122,7 +124,8 @@
   test('ElementRendered', () => {
     return initializeRoutineResultEntry().then(() => {
       // Verify the element rendered.
-      const div = routineResultEntryElement.$$('.entry-row');
+      const div =
+          routineResultEntryElement.shadowRoot.querySelector('.entry-row');
       assertTrue(!!div);
     });
   });
diff --git a/chrome/test/data/webui/chromeos/diagnostics/routine_result_list_test.js b/chrome/test/data/webui/chromeos/diagnostics/routine_result_list_test.js
index 098dc26f..3877999 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/routine_result_list_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/routine_result_list_test.js
@@ -6,6 +6,8 @@
 
 import {RoutineResult, RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
 import {ExecutionProgress, ResultStatusItem} from 'chrome://diagnostics/routine_list_executor.js';
+import {RoutineResultEntryElement} from 'chrome://diagnostics/routine_result_entry.js';
+import {RoutineResultListElement} from 'chrome://diagnostics/routine_result_list.js';
 
 import {assertDeepEquals, assertEquals, assertFalse, assertNotEquals, assertTrue} from '../../chai_assert.js';
 import {flushTasks} from '../../test_util.js';
@@ -67,7 +69,8 @@
   test('ElementRendered', () => {
     return initializeRoutineResultList([]).then(() => {
       // Verify the element rendered.
-      const div = routineResultListElement.$$('#resultListContainer');
+      const div = routineResultListElement.shadowRoot.querySelector(
+          '#resultListContainer');
       assertTrue(!!div);
     });
   });
@@ -76,15 +79,17 @@
     return initializeRoutineResultList([])
         .then(() => {
           assertFalse(routineResultListElement.hidden);
-          assertFalse(
-              routineResultListElement.$$('#resultListContainer').hidden);
+          assertFalse(routineResultListElement.shadowRoot
+                          .querySelector('#resultListContainer')
+                          .hidden);
           routineResultListElement.hidden = true;
           return flushTasks();
         })
         .then(() => {
           assertTrue(routineResultListElement.hidden);
-          assertTrue(
-              routineResultListElement.$$('#resultListContainer').hidden);
+          assertTrue(routineResultListElement.shadowRoot
+                         .querySelector('#resultListContainer')
+                         .hidden);
         });
   });
 
diff --git a/chrome/test/data/webui/chromeos/diagnostics/routine_section_test.js b/chrome/test/data/webui/chromeos/diagnostics/routine_section_test.js
index f8d758d..29b1044 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/routine_section_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/routine_section_test.js
@@ -12,8 +12,10 @@
 import {setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
 import {RoutineGroup} from 'chrome://diagnostics/routine_group.js';
 import {ExecutionProgress, TestSuiteStatus} from 'chrome://diagnostics/routine_list_executor.js';
-import {getRoutineType} from 'chrome://diagnostics/routine_result_entry.js';
-import {BadgeType} from 'chrome://diagnostics/text_badge.js';
+import {getRoutineType, RoutineResultEntryElement} from 'chrome://diagnostics/routine_result_entry.js';
+import {RoutineResultListElement} from 'chrome://diagnostics/routine_result_list.js';
+import {RoutineSectionElement} from 'chrome://diagnostics/routine_section.js';
+import {BadgeType, TextBadgeElement} from 'chrome://diagnostics/text_badge.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -130,7 +132,7 @@
    */
   function getStatusBadge() {
     return /** @type {!TextBadgeElement} */ (
-        routineSectionElement.$$('#testStatusBadge'));
+        routineSectionElement.shadowRoot.querySelector('#testStatusBadge'));
   }
 
   /**
@@ -140,7 +142,7 @@
   function getStatusTextElement() {
     const statusText =
         /** @type {!HTMLElement} */ (
-            routineSectionElement.$$('#testStatusText'));
+            routineSectionElement.shadowRoot.querySelector('#testStatusText'));
     assertTrue(!!statusText);
     return statusText;
   }
@@ -250,15 +252,6 @@
   }
 
   /**
-   * @param {boolean} runTestsAutomatically
-   * @return {!Promise}
-   */
-  function setRunTestsAutomatically(runTestsAutomatically) {
-    routineSectionElement.runTestsAutomatically = runTestsAutomatically;
-    return flushTasks();
-  }
-
-  /**
    * @param {!Array<!RoutineType>} routines
    * @return {!Promise}
    */
@@ -283,7 +276,7 @@
   function getLearnMoreButton() {
     const learnMoreButton =
         /** @type {!CrButtonElement} */ (
-            routineSectionElement.$$('#learnMoreButton'));
+            routineSectionElement.shadowRoot.querySelector('#learnMoreButton'));
     assertTrue(!!learnMoreButton);
     return learnMoreButton;
   }
@@ -291,7 +284,8 @@
   test('ElementRenders', () => {
     return initializeRoutineSection([]).then(() => {
       // Verify the element rendered.
-      assertTrue(!!routineSectionElement.$$('#routineSection'));
+      assertTrue(
+          !!routineSectionElement.shadowRoot.querySelector('#routineSection'));
     });
   });
 
@@ -300,13 +294,15 @@
         .then(() => {
           // Verify the element is hidden.
           assertFalse(isVisible(/** @type {!HTMLElement} */ (
-              routineSectionElement.$$('#routineSection'))));
+              routineSectionElement.shadowRoot.querySelector(
+                  '#routineSection'))));
         })
         .then(() => setRoutines([RoutineType.kLanConnectivity]))
         .then(() => {
           // Verify the element is not hidden.
           assertTrue(isVisible(/** @type {!HTMLElement} */ (
-              routineSectionElement.$$('#routineSection'))));
+              routineSectionElement.shadowRoot.querySelector(
+                  '#routineSection'))));
         });
   });
 
@@ -977,9 +973,11 @@
         .then(() => {
           assertFalse(isVisible(getLearnMoreButton()));
           assertFalse(isVisible(/** @type {!HTMLElement} */ (
-              routineSectionElement.$$('.routine-status-container'))));
+              routineSectionElement.shadowRoot.querySelector(
+                  '.routine-status-container'))));
           assertFalse(isVisible(/** @type {!HTMLElement} */ (
-              routineSectionElement.$$('.button-container'))));
+              routineSectionElement.shadowRoot.querySelector(
+                  '.button-container'))));
         });
   });
 
@@ -1044,7 +1042,7 @@
           // Text badge should display 'FAILED' for the first group.
           const textBadge = entries[0].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'FAILED');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'FAILED');
 
           // Remaining routine groups should display the skipped state.
           assertEquals(ExecutionProgress.kSkipped, entries[1].item.progress);
@@ -1114,7 +1112,7 @@
           // Text badge should display 'WARNING' for the first group.
           const textBadge = entries[0].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'WARNING');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'WARNING');
 
           // Resolve the running test.
           return routineController.resolveRoutineForTesting();
@@ -1126,7 +1124,7 @@
           // Text badge should still display 'WARNING' for the first group.
           const textBadge = entries[0].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'WARNING');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'WARNING');
 
           // First routine in the second group should be running.
           assertEquals(
@@ -1144,7 +1142,7 @@
           // Text badge should display 'PASSED' for the second group.
           const textBadge = entries[1].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'PASSED');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'PASSED');
           assertEquals(ExecutionProgress.kCompleted, entries[1].item.progress);
           assertEquals(
               routineSectionElement.testSuiteStatus,
@@ -1188,7 +1186,7 @@
           // Text badge should display 'WARNING' for the first group.
           const textBadge = entries[0].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'WARNING');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'WARNING');
           // Failed test text should be set properly.
           assertEquals(entries[0].item.failedTest, RoutineType.kSignalStrength);
           // Resolve the running test.
@@ -1200,7 +1198,7 @@
           // Text badge should still display 'WARNING' for the first group.
           const textBadge = entries[0].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'WARNING');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'WARNING');
           // Failed test does not get overwritten.
           assertEquals(entries[0].item.failedTest, RoutineType.kSignalStrength);
         });
@@ -1241,7 +1239,7 @@
           // routines in this group.
           const textBadge = entries[0].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'RUNNING');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'RUNNING');
           // Failed test text should be unset.
           assertFalse(!!entries[0].item.failedTest);
           // Resolve the running test.
@@ -1254,7 +1252,7 @@
           // state.
           const textBadge = entries[0].shadowRoot.querySelector('#status');
           dx_utils.assertElementContainsText(
-              textBadge.$$('#textBadge'), 'WARNING');
+              textBadge.shadowRoot.querySelector('#textBadge'), 'WARNING');
           assertEquals(entries[0].item.progress, ExecutionProgress.kCompleted);
           // Failed test text should be set properly.
           assertEquals(entries[0].item.failedTest, RoutineType.kCaptivePortal);
diff --git a/chrome/test/data/webui/chromeos/diagnostics/system_page_test.js b/chrome/test/data/webui/chromeos/diagnostics/system_page_test.js
index f2d1d1ea..6fa7461 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/system_page_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/system_page_test.js
@@ -13,6 +13,8 @@
 import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js';
 import {setNetworkHealthProviderForTesting, setSystemDataProviderForTesting, setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
 import {TestSuiteStatus} from 'chrome://diagnostics/routine_list_executor.js';
+import {RoutineSectionElement} from 'chrome://diagnostics/routine_section.js';
+import {SystemPageElement} from 'chrome://diagnostics/system_page.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {assertArrayEquals, assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
@@ -139,7 +141,8 @@
    * @return {!CrButtonElement}
    */
   function getSessionLogButton() {
-    return /** @type {!CrButtonElement} */ (page.$$('.session-log-button'));
+    return /** @type {!CrButtonElement} */ (
+        page.shadowRoot.querySelector('.session-log-button'));
   }
 
   /**
@@ -156,7 +159,7 @@
    * @return {boolean}
    */
   function isToastVisible() {
-    return page.$$('cr-toast').open;
+    return page.shadowRoot.querySelector('cr-toast').open;
   }
 
   /**
@@ -174,7 +177,8 @@
    * @return {!HTMLElement}
    */
   function getCautionBanner() {
-    return /** @type {!HTMLElement} */ (page.$$('#banner'));
+    return /** @type {!HTMLElement} */ (
+        page.shadowRoot.querySelector('#banner'));
   }
 
   test('LandingPageLoaded', () => {
@@ -183,23 +187,25 @@
                fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage)
         .then(() => {
           // Verify the overview card is in the page.
-          const overview = page.$$('#overviewCard');
+          const overview = page.shadowRoot.querySelector('#overviewCard');
           assertTrue(!!overview);
 
           // Verify the memory card is in the page.
-          const memory = page.$$('#memoryCard');
+          const memory = page.shadowRoot.querySelector('#memoryCard');
           assertTrue(!!memory);
 
           // Verify the CPU card is in the page.
-          const cpu = page.$$('#cpuCard');
+          const cpu = page.shadowRoot.querySelector('#cpuCard');
           assertTrue(!!cpu);
 
           // Verify the battery status card is in the page.
-          const batteryStatus = page.$$('#batteryStatusCard');
+          const batteryStatus =
+              page.shadowRoot.querySelector('#batteryStatusCard');
           assertTrue(!!batteryStatus);
 
           // Verify the session log button is in the page.
-          const sessionLog = page.$$('.session-log-button');
+          const sessionLog =
+              page.shadowRoot.querySelector('.session-log-button');
           assertTrue(!!sessionLog);
         });
   });
@@ -211,7 +217,8 @@
                fakeMemoryUsage)
         .then(() => {
           // Verify the battery status card is not in the page.
-          const batteryStatus = page.$$('#batteryStatusCard');
+          const batteryStatus =
+              page.shadowRoot.querySelector('#batteryStatusCard');
           assertFalse(!!batteryStatus);
         });
   });
@@ -223,9 +230,10 @@
                fakeSystemInfo, fakeBatteryChargeStatus, fakeBatteryHealth,
                fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage)
         .then(() => {
-          const batteryStatusCard = page.$$('battery-status-card');
-          const cpuCard = page.$$('cpu-card');
-          const memoryCard = page.$$('memory-card');
+          const batteryStatusCard =
+              page.shadowRoot.querySelector('battery-status-card');
+          const cpuCard = page.shadowRoot.querySelector('cpu-card');
+          const memoryCard = page.shadowRoot.querySelector('memory-card');
           cards = [batteryStatusCard, cpuCard, memoryCard];
 
           memoryRoutinesSection = dx_utils.getRoutineSection(memoryCard);
@@ -266,7 +274,7 @@
           clickSessionLogButton().then(() => {
             assertTrue(isToastVisible());
             dx_utils.assertElementContainsText(
-                page.$$('#toast'),
+                page.shadowRoot.querySelector('#toast'),
                 loadTimeData.getString('sessionLogToastTextSuccess'));
           });
         });
@@ -281,7 +289,7 @@
           clickSessionLogButton().then(() => {
             assertTrue(isToastVisible());
             dx_utils.assertElementContainsText(
-                page.$$('#toast'),
+                page.shadowRoot.querySelector('#toast'),
                 loadTimeData.getString('sessionLogToastTextFailure'));
           });
         });
@@ -320,7 +328,8 @@
                  fakeSystemInfo, fakeBatteryChargeStatus, fakeBatteryHealth,
                  fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage)
           .then(() => {
-            routineSection = dx_utils.getRoutineSection(page.$$('cpu-card'));
+            routineSection = dx_utils.getRoutineSection(
+                page.shadowRoot.querySelector('cpu-card'));
             routineSection.routines = routines;
             assertFalse(isVisible(getCautionBanner()));
             return flushTasks();
@@ -348,7 +357,8 @@
                  fakeSystemInfo, fakeBatteryChargeStatus, fakeBatteryHealth,
                  fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage)
           .then(() => {
-            routineSection = dx_utils.getRoutineSection(page.$$('memory-card'));
+            routineSection = dx_utils.getRoutineSection(
+                page.shadowRoot.querySelector('memory-card'));
             routineSection.routines = routines;
             assertFalse(isVisible(getCautionBanner()));
             return flushTasks();
@@ -359,7 +369,7 @@
           })
           .then(() => {
             dx_utils.assertElementContainsText(
-                page.$$('#banner > #bannerMsg'),
+                page.shadowRoot.querySelector('#banner > #bannerMsg'),
                 loadTimeData.getString('memoryBannerMessage'));
             assertTrue(isVisible(getCautionBanner()));
             return routineController.resolveRoutineForTesting();
diff --git a/chrome/test/data/webui/chromeos/diagnostics/text_badge_test.js b/chrome/test/data/webui/chromeos/diagnostics/text_badge_test.js
index 8b184ee..39eace3f 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/text_badge_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/text_badge_test.js
@@ -4,7 +4,7 @@
 
 import 'chrome://diagnostics/text_badge.js';
 
-import {BadgeType} from 'chrome://diagnostics/text_badge.js';
+import {BadgeType, TextBadgeElement} from 'chrome://diagnostics/text_badge.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks} from '../../test_util.js';
@@ -47,7 +47,7 @@
     const badgeType = BadgeType.QUEUED;
     const value = 'Test value';
     return initializeBadge(badgeType, value).then(() => {
-      const textBadge = textBadgeElement.$$('#textBadge');
+      const textBadge = textBadgeElement.shadowRoot.querySelector('#textBadge');
       assertEquals(badgeType, textBadge.getAttribute('class'));
       dx_utils.assertTextContains(textBadge.textContent, value);
     });
diff --git a/chrome/test/data/webui/chromeos/diagnostics/wifi_info_test.js b/chrome/test/data/webui/chromeos/diagnostics/wifi_info_test.js
index cab1a29..44a12be 100644
--- a/chrome/test/data/webui/chromeos/diagnostics/wifi_info_test.js
+++ b/chrome/test/data/webui/chromeos/diagnostics/wifi_info_test.js
@@ -3,9 +3,11 @@
 // found in the LICENSE file.
 
 import 'chrome://diagnostics/wifi_info.js';
+
 import {Network, SecurityType, WiFiStateProperties} from 'chrome://diagnostics/diagnostics_types.js';
 import {getSignalStrength} from 'chrome://diagnostics/diagnostics_utils.js';
 import {fakeDisconnectedWifiNetwork, fakeWifiNetwork, fakeWiFiStateProperties} from 'chrome://diagnostics/fake_data.js';
+import {WifiInfoElement} from 'chrome://diagnostics/wifi_info.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
 import {flushTasks} from '../../test_util.js';
diff --git a/chrome/test/data/webui/cr_components/chromeos/network_health/BUILD.gn b/chrome/test/data/webui/cr_components/chromeos/network_health/BUILD.gn
index 5a5c2fa..a64c6091 100644
--- a/chrome/test/data/webui/cr_components/chromeos/network_health/BUILD.gn
+++ b/chrome/test/data/webui/cr_components/chromeos/network_health/BUILD.gn
@@ -24,10 +24,10 @@
     ":fake_network_diagnostics_routines",
     ":network_health_test_utils",
     "../../..:chai_assert",
+    "//ash/webui/common/resources/network_health:mojo_interface_provider",
+    "//ash/webui/common/resources/network_health:network_diagnostics",
     "//chromeos/services/network_health/public/mojom:mojom_webui_js",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_components/chromeos/network_health:mojo_interface_provider",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics",
   ]
   externs_list = [ "$externs_path/mocha-2.5.js" ]
 }
@@ -36,17 +36,17 @@
   deps = [
     ":network_health_test_utils",
     "../../..:chai_assert",
+    "//ash/webui/common/resources/network_health:network_diagnostics",
     "//chromeos/services/network_health/public/mojom:mojom_webui_js",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics",
   ]
   externs_list = [ "$externs_path/mocha-2.5.js" ]
 }
 
 js_library("network_health_test_utils") {
   deps = [
+    "//ash/webui/common/resources/network_health:network_diagnostics",
     "//chromeos/services/network_health/public/mojom:mojom_webui_js",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics",
   ]
 }
 
@@ -54,7 +54,7 @@
   deps = [
     ":network_health_test_utils",
     "../../..:chai_assert",
+    "//ash/webui/common/resources/network_health:network_diagnostics",
     "//chromeos/services/network_health/public/mojom:mojom_webui_js",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics",
   ]
 }
diff --git a/chrome/test/data/webui/cr_components/chromeos/network_health/network_diagnostics_test.js b/chrome/test/data/webui/cr_components/chromeos/network_health/network_diagnostics_test.js
index e187eeb..344b676 100644
--- a/chrome/test/data/webui/cr_components/chromeos/network_health/network_diagnostics_test.js
+++ b/chrome/test/data/webui/cr_components/chromeos/network_health/network_diagnostics_test.js
@@ -3,10 +3,10 @@
 // found in the LICENSE file.
 
 import 'chrome://connectivity-diagnostics/strings.m.js';
-import 'chrome://resources/cr_components/chromeos/network_health/network_diagnostics.js';
+import 'chrome://resources/ash/common/network_health/network_diagnostics.js';
 
-import {setNetworkDiagnosticsServiceForTesting} from 'chrome://resources/cr_components/chromeos/network_health/mojo_interface_provider.js';
-import {Icons} from 'chrome://resources/cr_components/chromeos/network_health/network_diagnostics_types.js';
+import {setNetworkDiagnosticsServiceForTesting} from 'chrome://resources/ash/common/network_health/mojo_interface_provider.js';
+import {Icons} from 'chrome://resources/ash/common/network_health/network_diagnostics_types.js';
 import {RoutineVerdict} from 'chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_diagnostics.mojom-webui.js';
 
 import {assertEquals, assertFalse, assertGT, assertNotReached, assertTrue} from '../../../chai_assert.js';
diff --git a/chrome/test/data/webui/cr_components/chromeos/network_health/routine_group_test.js b/chrome/test/data/webui/cr_components/chromeos/network_health/routine_group_test.js
index 40517bb..b074d0cf 100644
--- a/chrome/test/data/webui/cr_components/chromeos/network_health/routine_group_test.js
+++ b/chrome/test/data/webui/cr_components/chromeos/network_health/routine_group_test.js
@@ -3,9 +3,9 @@
 // found in the LICENSE file.
 
 import 'chrome://connectivity-diagnostics/strings.m.js';
-import 'chrome://resources/cr_components/chromeos/network_health/routine_group.js';
+import 'chrome://resources/ash/common/network_health/routine_group.js';
 
-import {Icons, Routine} from 'chrome://resources/cr_components/chromeos/network_health/network_diagnostics_types.js';
+import {Icons, Routine} from 'chrome://resources/ash/common/network_health/network_diagnostics_types.js';
 import {RoutineVerdict} from 'chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_diagnostics.mojom-webui.js';
 import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
diff --git a/chrome/test/data/webui/cr_components/chromeos/traffic_counters/BUILD.gn b/chrome/test/data/webui/cr_components/chromeos/traffic_counters/BUILD.gn
index 623b4114..1a239d1 100644
--- a/chrome/test/data/webui/cr_components/chromeos/traffic_counters/BUILD.gn
+++ b/chrome/test/data/webui/cr_components/chromeos/traffic_counters/BUILD.gn
@@ -21,6 +21,7 @@
 js_library("traffic_counters_test") {
   deps = [
     "../../..:chai_assert",
+    "//ash/webui/common/resources/network_health:network_health_container",
     "//ash/webui/common/resources/traffic_counters:traffic_counters",
     "//chrome/test/data/webui/chromeos:fake_network_config_mojom",
     "//chromeos/services/network_config/public/mojom:mojom_webui_js",
@@ -28,7 +29,6 @@
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
     "//ui/webui/resources/cr_components/chromeos/network:mojo_interface_provider",
     "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
-    "//ui/webui/resources/cr_components/chromeos/network_health:network_health_container",
     "//ui/webui/resources/cr_elements:i18n_behavior",
   ]
   externs_list = [ "$externs_path/mocha-2.5.js" ]
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 5a71582..52590fe3 100644
--- a/chrome/test/data/webui/new_tab_page/app_test.ts
+++ b/chrome/test/data/webui/new_tab_page/app_test.ts
@@ -284,8 +284,23 @@
       // Assert.
       assertEquals(1, backgroundManager.getCallCount('setShowBackgroundImage'));
       assertTrue(await backgroundManager.whenCalled('setShowBackgroundImage'));
-      assertNotStyle(
-          $$(app, '#backgroundImageAttribution')!, 'text-shadow', 'none');
+
+      // Scrim removal will remove text shadows as background protection is
+      // applied to the background element instead.
+      if (loadTimeData.getBoolean('removeScrim')) {
+        assertNotStyle(
+            $$(app, '#backgroundImageAttribution')!, 'background-color',
+            'rgba(0, 0, 0, 0)');
+        assertStyle(
+            $$(app, '#backgroundImageAttribution')!, 'text-shadow', 'none');
+      } else {
+        assertStyle(
+            $$(app, '#backgroundImageAttribution')!, 'background-color',
+            'rgba(0, 0, 0, 0)');
+        assertNotStyle(
+            $$(app, '#backgroundImageAttribution')!, 'text-shadow', 'none');
+      }
+
       assertEquals(1, backgroundManager.getCallCount('setBackgroundImage'));
       assertEquals(
           'https://img.png',
diff --git a/chrome/test/data/webui/signin/local_profile_customization_focus_test.ts b/chrome/test/data/webui/signin/local_profile_customization_focus_test.ts
index 00390fd..e16cd22d 100644
--- a/chrome/test/data/webui/signin/local_profile_customization_focus_test.ts
+++ b/chrome/test/data/webui/signin/local_profile_customization_focus_test.ts
@@ -26,6 +26,9 @@
   }
 
   setup(function() {
+    loadTimeData.overrideValues({
+      isLocalProfileCreationDialogEnabled: false,
+    });
     browserProxy = new TestManageProfilesBrowserProxy();
     ManageProfilesBrowserProxyImpl.setInstance(browserProxy);
     return resetTestElement(Routes.MAIN);
@@ -69,7 +72,7 @@
 
   test('ProfileCreationFlowWithSigninPromo', async function() {
     assertTrue(loadTimeData.getValue('isBrowserSigninAllowed'));
-    navigateTo(Routes.NEW_PROFILE);
+    await resetTestElement(Routes.NEW_PROFILE);
     await setupProfileCreation();
     const choice = testElement.shadowRoot!.querySelector('profile-type-choice');
     assertTrue(!!choice);
diff --git a/chrome/test/data/webui/signin/profile_picker_app_test.ts b/chrome/test/data/webui/signin/profile_picker_app_test.ts
index e6511f2..47d9148 100644
--- a/chrome/test/data/webui/signin/profile_picker_app_test.ts
+++ b/chrome/test/data/webui/signin/profile_picker_app_test.ts
@@ -146,6 +146,9 @@
   });
 
   test('ThemeColorConsistentInProfileCreationViews', async function() {
+    loadTimeData.overrideValues({
+      isLocalProfileCreationDialogEnabled: false,
+    });
     await resetTestElement(Routes.NEW_PROFILE);
     await waitForProfileCreationLoad();
     const choice = testElement.shadowRoot!.querySelector('profile-type-choice');
diff --git a/chromecast/crash/build_info.cc b/chromecast/crash/build_info.cc
index 6d097bf..21fdc78 100644
--- a/chromecast/crash/build_info.cc
+++ b/chromecast/crash/build_info.cc
@@ -35,6 +35,9 @@
 
 const std::string GetVersionString(const std::string& cast_release_number,
                                    const std::string& cast_incremental_number) {
+  if (cast_release_number.empty() || cast_incremental_number.empty()) {
+    return VersionToCrashString(CAST_BUILD_REVISION);
+  }
   return VersionToCrashString(
       base::JoinString({cast_release_number, cast_incremental_number}, "."));
 }
diff --git a/chromecast/crash/build_info_unittest.cc b/chromecast/crash/build_info_unittest.cc
index 07e2209..83006186a 100644
--- a/chromecast/crash/build_info_unittest.cc
+++ b/chromecast/crash/build_info_unittest.cc
@@ -24,6 +24,10 @@
             "1.51.224083.1.51.eng");
 }
 
+TEST(VersionStringTest, EmptyVersionStringIsCorrect) {
+  ASSERT_FALSE(GetVersionString("", "").empty());
+}
+
 TEST(VersionStringTest, ReleaseVersionUnchanged) {
   ASSERT_EQ(VersionToCrashString(kReleaseBuild), kReleaseBuild);
 }
diff --git a/chromeos/ash/components/chromebox_for_meetings/features.cc b/chromeos/ash/components/chromebox_for_meetings/features.cc
index f0166f8..9d02eb59 100644
--- a/chromeos/ash/components/chromebox_for_meetings/features.cc
+++ b/chromeos/ash/components/chromebox_for_meetings/features.cc
@@ -12,4 +12,7 @@
 const base::Feature kMojoServices{"MeetDevicesMojoServices",
                                   base::FEATURE_ENABLED_BY_DEFAULT};
 
+const base::Feature kXuControls{"MeetDevicesXuControls",
+                                  base::FEATURE_DISABLED_BY_DEFAULT};
+
 }  // namespace ash::cfm::features
diff --git a/chromeos/ash/components/chromebox_for_meetings/features.h b/chromeos/ash/components/chromebox_for_meetings/features.h
index 2c9b9519b..fe9a9802 100644
--- a/chromeos/ash/components/chromebox_for_meetings/features.h
+++ b/chromeos/ash/components/chromebox_for_meetings/features.h
@@ -24,6 +24,10 @@
 COMPONENT_EXPORT(CFM_FEATURES)
 extern const base::Feature kMojoServices;
 
+// Enables or disables the ability to use Meet XU controls.
+COMPONENT_EXPORT(CFM_FEATURES)
+extern const base::Feature kXuControls;
+
 }  // namespace ash::cfm::features
 
 #endif  // CHROMEOS_ASH_COMPONENTS_CHROMEBOX_FOR_MEETINGS_FEATURES_H_
diff --git a/chromeos/services/rollback_network_config/README.md b/chromeos/ash/services/rollback_network_config/README.md
similarity index 100%
rename from chromeos/services/rollback_network_config/README.md
rename to chromeos/ash/services/rollback_network_config/README.md
diff --git a/chromeos/services/rollback_network_config/public/mojom/BUILD.gn b/chromeos/ash/services/rollback_network_config/public/mojom/BUILD.gn
similarity index 70%
rename from chromeos/services/rollback_network_config/public/mojom/BUILD.gn
rename to chromeos/ash/services/rollback_network_config/public/mojom/BUILD.gn
index 31aad2b..587e4d5 100644
--- a/chromeos/services/rollback_network_config/public/mojom/BUILD.gn
+++ b/chromeos/ash/services/rollback_network_config/public/mojom/BUILD.gn
@@ -2,8 +2,11 @@
 # 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")
 import("//mojo/public/tools/bindings/mojom.gni")
 
+assert(is_chromeos_ash, "Non ChromeOS builds must not depend on //chromeos/ash")
+
 mojom("mojom") {
   sources = [ "rollback_network_config.mojom" ]
 
diff --git a/chromeos/services/rollback_network_config/public/mojom/OWNERS b/chromeos/ash/services/rollback_network_config/public/mojom/OWNERS
similarity index 100%
rename from chromeos/services/rollback_network_config/public/mojom/OWNERS
rename to chromeos/ash/services/rollback_network_config/public/mojom/OWNERS
diff --git a/chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom b/chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom
similarity index 90%
rename from chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom
rename to chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom
index 4d79169..ec96e4b 100644
--- a/chromeos/services/rollback_network_config/public/mojom/rollback_network_config.mojom
+++ b/chromeos/ash/services/rollback_network_config/public/mojom/rollback_network_config.mojom
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-module chromeos.rollback_network_config.mojom;
+module ash.rollback_network_config.mojom;
 
 // Interface for Chrome OS Enterprise rollback.
 interface RollbackNetworkConfig {
diff --git a/chromeos/crosapi/mojom/BUILD.gn b/chromeos/crosapi/mojom/BUILD.gn
index 381586e5..afb8cec 100644
--- a/chromeos/crosapi/mojom/BUILD.gn
+++ b/chromeos/crosapi/mojom/BUILD.gn
@@ -69,6 +69,7 @@
     "networking_private.mojom",
     "notification.mojom",
     "nullable_primitives.mojom",
+    "parent_access.mojom",
     "policy_namespace.mojom",
     "policy_service.mojom",
     "power.mojom",
diff --git a/chromeos/crosapi/mojom/parent_access.mojom b/chromeos/crosapi/mojom/parent_access.mojom
new file mode 100644
index 0000000..afa9086
--- /dev/null
+++ b/chromeos/crosapi/mojom/parent_access.mojom
@@ -0,0 +1,75 @@
+// 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.
+
+module crosapi.mojom;
+
+import "mojo/public/mojom/base/string16.mojom";
+import "ui/gfx/image/mojom/image.mojom";
+import "url/mojom/url.mojom";
+
+
+[Stable]
+struct ParentAccessResult {
+  // Result status of the request.
+  // kUnknown:  default status that shouldn't be returned.
+  // kApproved: the parent was verified and approved the request.
+  // kDeclined: the parent explicitly declined the request.
+  // kCancelled: the request was dismissed/cancelled but
+  //             not explicitly declined.
+  // kError: there was an error in the request. Example error_type.
+  [Stable, Extensible]
+  enum Status {
+    [Default] kUnknown = 0,
+    kApproved = 1,
+    kDeclined = 2,
+    kCancelled = 3,
+    kError = 4,
+  };
+
+  // The type of error that occurred
+  // kNone:  no error, the default value.
+  // kUnknown: an unknown error occurred.
+  // kNotAChildUser: the user requesting permission
+  //                 is not a child.
+  // kAlreadyVisible: the dialog is already visible and
+  //                  handling another permission request.
+  [Stable, Extensible]
+  enum ErrorType {
+    [Default] kNone = 0,
+    kUnknown = 1,
+    kNotAChildUser = 2,
+    kAlreadyVisible = 3,
+  };
+
+  // The terminal status of the request.
+  Status status@0;
+
+  // The type of error which occurred.  Only set if status is kError.
+  ErrorType error_type@1;
+};
+
+// Interface that provides access to the Parent Access Widget.
+// New use cases that integrate with the Parent Access Widget should add
+// a new interface method below, with a different MinVersion, and then
+// increment the interface's MinVersion.
+//
+// The caller side of this interface must check the MinVersion of the Lacros
+// API using LacrosService::GetInterfaceVersion() to determine whether it
+// supports the functionality it requires.  It should never send an IPC over
+// the interface to an incompatible version.
+[Stable, Uuid="9be7bba2-a67d-4f8a-bf18-e37338dc7c8e"]
+// Interface that provides access to the ParentAccessDialog to ChromeOS.
+interface ParentAccess {
+  // Request parental approval for website access.
+  // url:  The url being requested
+  // display_name: The child's display name
+  // favicon:  The favicon for the website requested (can be empty if
+  //           it couldn't be retrieved).
+  [MinVersion=0]
+  GetWebsiteParentApproval@0(
+      url.mojom.Url url,
+      mojo_base.mojom.String16 child_display_name,
+      gfx.mojom.ImageSkia favicon) => (ParentAccessResult result);
+};
+
diff --git a/chromeos/services/network_health/README.md b/chromeos/services/network_health/README.md
index d326bcf7..d0c1aba 100644
--- a/chromeos/services/network_health/README.md
+++ b/chromeos/services/network_health/README.md
@@ -8,5 +8,5 @@
 e.g. for Captive Portal state.
 
 The mojom lives here so that it is available to other components, e.g. as a
-WebUI component in ui/webui/resources/cr_components/chromeos/network_health/.
+WebUI component in ash/webui/common/resources/network_health/.
 
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb
index bc5a8f5..9f4e570 100644
--- a/chromeos/strings/chromeos_strings_fa.xtb
+++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -174,7 +174,7 @@
 <translation id="2491955442992294626">وقتی درحال استفاده از پنجره دیگری هستید، کلیدها آزمایش نمی‌شوند</translation>
 <translation id="2493126929778606526">بهترین عکس‌هایتان که به‌طور خودکار انتخاب شده‌اند</translation>
 <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation>
-<translation id="2505327257735685095">بازخوانی کاغذدیواری کنونی</translation>
+<translation id="2505327257735685095">بازآوری کاغذدیواری کنونی</translation>
 <translation id="2513396635448525189">تصویر ورود به سیستم</translation>
 <translation id="2517472476991765520">اسکن</translation>
 <translation id="2526590354069164005">دسک تاپ</translation>
@@ -184,7 +184,7 @@
 <translation id="2570743873672969996">درحال اجرای آزمایش <ph name="TEST_NAME" />…</translation>
 <translation id="2584559707064218956">برای راه‌اندازی، به «تنظیمات» بروید</translation>
 <translation id="2597774443162333062">‏فایل‌ها برای اشکال‌زدایی به Google ارسال خواهد شد</translation>
-<translation id="2619761439309613843">بازخوانی روزانه</translation>
+<translation id="2619761439309613843">بازآوری روزانه</translation>
 <translation id="2620436844016719705">سیستم</translation>
 <translation id="2638662041295312666">تصویر ورود به سیستم</translation>
 <translation id="2640549051766135490">آلبوم <ph name="TITLE" /> <ph name="DESC" /> انتخاب شد</translation>
@@ -203,7 +203,7 @@
 <translation id="2874939134665556319">آهنگ قبلی</translation>
 <translation id="2878387241690264070"><ph name="RATE" /> در <ph name="NUM_SECONDS" /> ثانیه تخلیه شد.</translation>
 <translation id="2926057806159140518">نام کاربری و گذرواژه‌تان را وارد کنید یا رمزینه پاسخ‌سریع را اسکن کنید</translation>
-<translation id="3008341117444806826">بازخوانی</translation>
+<translation id="3008341117444806826">بازآوری</translation>
 <translation id="3009958530611748826">پوشه‌ای را برای ذخیره در آن انتخاب کنید</translation>
 <translation id="3017079585324758401">پس‌زمینه</translation>
 <translation id="3027578600144895987">بستن دوربین</translation>
@@ -636,7 +636,7 @@
 <translation id="7170236477717446850">عکس نمایه</translation>
 <translation id="7172721935181587524">یک تصویر</translation>
 <translation id="7177485034254901881">این <ph name="DEVICE_TYPE" /> توسط <ph name="MANAGER" /> مدیریت می‌شود. سرپرستان می‌توانند این دستگاه را ازراه‌دور پیکربندی کنند.</translation>
-<translation id="7180611975245234373">بازخوانی</translation>
+<translation id="7180611975245234373">بازآوری</translation>
 <translation id="7212734716605298123">به‌روزرسانی‌های سفت‌افزار برای دستگاه‌های خارجی</translation>
 <translation id="7216409898977639127">ارائه‌دهنده شبکه تلفن همراه</translation>
 <translation id="725133483556299729">انتخاب ایمیل</translation>
@@ -734,7 +734,7 @@
 <translation id="8230672074305416752">پینگ کردن دروازه شبکه پیش‌فرض انجام نشد</translation>
 <translation id="8246209727385807362">شرکت مخابراتی ناشناس</translation>
 <translation id="827422111966801947">نیلی سیر</translation>
-<translation id="8286154143153872371">لطفاً برای مشاهده کاغذدیواری، به شبکه متصل شوید و صفحه را تازه‌سازی کنید.</translation>
+<translation id="8286154143153872371">لطفاً برای مشاهده کاغذدیواری، به شبکه متصل شوید و صفحه را بار کردن مجدد کنید.</translation>
 <translation id="8291967909914612644">کشور ارائه‌دهنده اصلی</translation>
 <translation id="8294431847097064396">منبع</translation>
 <translation id="8297006494302853456">ضعیف</translation>
@@ -825,7 +825,7 @@
 <translation id="9088306295921699330">مصرف فعلی</translation>
 <translation id="9092255287806472980">‏بازخورد شما به بهبود Chrome OS کمک می‌کند و تیم ما آن را مرور خواهد کرد. به‌دلیل تعداد بالای گزارش‌ها، قادر به ارسال پاسخ نخواهیم بود.</translation>
 <translation id="9095775724867566971">Pluginvm</translation>
-<translation id="910415269708673980">بازخوانی بلیت برای <ph name="PRINCIPAL_NAME" /></translation>
+<translation id="910415269708673980">بازآوری بلیت برای <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">درحال اسکن کردن صفحه <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">باز کردن قفل</translation>
 <translation id="9122602430962285795">برای اتصال مجدد، به «تنظیمات» بروید</translation>
diff --git a/components/autofill/core/browser/autofill_field.cc b/components/autofill/core/browser/autofill_field.cc
index 450e07c8..c4032624 100644
--- a/components/autofill/core/browser/autofill_field.cc
+++ b/components/autofill/core/browser/autofill_field.cc
@@ -184,15 +184,10 @@
                                 FieldTypeGroup::kPasswordField &&
                             heuristic_type() == CREDIT_CARD_VERIFICATION_CODE);
 
-    // For new name tokens the heuristic predictions get precedence over the
-    // server predictions.
-    // TODO(crbug.com/1098943): Remove feature check once launched.
-    believe_server =
-        believe_server &&
-        !(base::FeatureList::IsEnabled(
-              features::kAutofillEnableSupportForMoreStructureInNames) &&
-          (heuristic_type() == NAME_LAST_SECOND ||
-           heuristic_type() == NAME_LAST_FIRST));
+    // For structured last name tokens the heuristic predictions get precedence
+    // over the server predictions.
+    believe_server = believe_server && heuristic_type() != NAME_LAST_SECOND &&
+                     heuristic_type() != NAME_LAST_FIRST;
 
     // For new address tokens the heuristic predictions get precedence over
     // the server predictions.
diff --git a/components/autofill/core/browser/autofill_test_utils.cc b/components/autofill/core/browser/autofill_test_utils.cc
index 7cf208e..16017f5 100644
--- a/components/autofill/core/browser/autofill_test_utils.cc
+++ b/components/autofill/core/browser/autofill_test_utils.cc
@@ -307,23 +307,13 @@
   types->push_back({NAME_MIDDLE});
   test::CreateTestFormField("Last Name", "lastname", "", "text", &field);
   form->fields.push_back(field);
-  if (base::FeatureList::IsEnabled(
-          features::kAutofillEnableSupportForMoreStructureInNames)) {
-    types->push_back({NAME_LAST, NAME_LAST_SECOND});
-  } else {
-    types->push_back({NAME_LAST});
-  }
+  types->push_back({NAME_LAST, NAME_LAST_SECOND});
   test::CreateTestFormField("Address Line 1", "addr1", "", "text", &field);
   form->fields.push_back(field);
   types->push_back({ADDRESS_HOME_LINE1});
   test::CreateTestFormField("Address Line 2", "addr2", "", "text", &field);
   form->fields.push_back(field);
-  if (base::FeatureList::IsEnabled(
-          features::kAutofillEnableSupportForMoreStructureInAddresses)) {
-    types->push_back({ADDRESS_HOME_SUBPREMISE, ADDRESS_HOME_LINE2});
-  } else {
-    types->push_back({ADDRESS_HOME_LINE2});
-  }
+  types->push_back({ADDRESS_HOME_SUBPREMISE, ADDRESS_HOME_LINE2});
   test::CreateTestFormField("City", "city", "", "text", &field);
   form->fields.push_back(field);
   types->push_back({ADDRESS_HOME_CITY});
diff --git a/components/autofill/core/browser/data_model/autofill_profile.cc b/components/autofill/core/browser/data_model/autofill_profile.cc
index 62d1e2f..434c806 100644
--- a/components/autofill/core/browser/data_model/autofill_profile.cc
+++ b/components/autofill/core/browser/data_model/autofill_profile.cc
@@ -577,15 +577,11 @@
 
   // Structured names should not be simply overwritten but it should be
   // attempted to merge the names.
-  bool use_structured_name = base::FeatureList::IsEnabled(
-      features::kAutofillEnableSupportForMoreStructureInNames);
   bool is_structured_name_mergeable = false;
   NameInfo name_info = GetNameInfo();
-  if (use_structured_name) {
-    is_structured_name_mergeable =
-        name_info.IsStructuredNameMergeable(profile.GetNameInfo());
-    name_info.MergeStructuredName(profile.GetNameInfo());
-  }
+  is_structured_name_mergeable =
+      name_info.IsStructuredNameMergeable(profile.GetNameInfo());
+  name_info.MergeStructuredName(profile.GetNameInfo());
 
   *this = profile;
 
@@ -604,11 +600,7 @@
   // is empty.  For the legacy implementation, set the full name if |profile|
   // does not contain a full name.
   if (!HasRawInfo(NAME_FULL)) {
-    if (use_structured_name) {
-      name_ = name_info;
-    } else {
-      SetRawInfo(NAME_FULL, name_info.GetRawInfo(NAME_FULL));
-    }
+    name_ = name_info;
   }
 }
 
@@ -628,8 +620,7 @@
   // names and addresses are mergeable.
   // However, the structure should only be merged if the full names or addresses
   // are token equivalent.
-  if (structured_address::StructuredNamesEnabled() &&
-      structured_address::AreStringTokenEquivalent(
+  if (structured_address::AreStringTokenEquivalent(
           GetRawInfo(NAME_FULL), profile.GetRawInfo(NAME_FULL))) {
     NameInfo name;
     if (!comparator.MergeNames(profile, *this, name)) {
@@ -642,8 +633,7 @@
     }
   }
 
-  if (structured_address::StructuredAddressesEnabled() &&
-      structured_address::AreStringTokenEquivalent(
+  if (structured_address::AreStringTokenEquivalent(
           GetRawInfo(ADDRESS_HOME_STREET_ADDRESS),
           profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS))) {
     Address address;
diff --git a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
index 1922583..498f75b 100644
--- a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
+++ b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
@@ -434,53 +434,28 @@
   // structure should be possible.
   // * One name is a variant of the other. In this scenario, use the non-variant
   // name. Note, p1 is the newer profile.
-  if (structured_address::StructuredNamesEnabled()) {
-    // First, set info to the original profile.
-    name_info = p2.GetNameInfo();
-    // If the name of the |p1| is empty, just keep the state of p2.
-    if (HasOnlySkippableCharacters(full_name_1))
-      return true;
-    // Vice verse set name to the one of |p1| if |p2| has an empty name
-    if (HasOnlySkippableCharacters(full_name_2)) {
-      name_info = p1.GetNameInfo();
-      return true;
-    }
-    // Try to apply a direct merging.
-    if (name_info.MergeStructuredName(p1.GetNameInfo()))
-      return true;
-    // If the name in |p2| is a variant of |p1| use the one in |p1|.
-    if (IsNameVariantOf(NormalizeForComparison(full_name_1),
-                        NormalizeForComparison(full_name_2))) {
-      name_info = p1.GetNameInfo();
-      return true;
-    }
-    // The only left case is that |p1| is a variant of |p2|.
-    DCHECK(IsNameVariantOf(NormalizeForComparison(full_name_2),
-                           NormalizeForComparison(full_name_1)));
+  // First, set info to the original profile.
+  name_info = p2.GetNameInfo();
+  // If the name of the |p1| is empty, just keep the state of p2.
+  if (HasOnlySkippableCharacters(full_name_1))
+    return true;
+  // Vice verse set name to the one of |p1| if |p2| has an empty name
+  if (HasOnlySkippableCharacters(full_name_2)) {
+    name_info = p1.GetNameInfo();
     return true;
   }
-  const std::u16string* best_name = nullptr;
-  if (HasOnlySkippableCharacters(full_name_1)) {
-    // p1 has no name, so use the name from p2.
-    best_name = &full_name_2;
-  } else if (HasOnlySkippableCharacters(full_name_2)) {
-    // p2 has no name, so use the name from p1.
-    best_name = &full_name_1;
-  } else if (data_util::IsCJKName(full_name_1) &&
-             data_util::IsCJKName(full_name_2)) {
-    // Use a separate logic for CJK names.
-    return MergeCJKNames(p1, p2, name_info);
-  } else if (IsNameVariantOf(NormalizeForComparison(full_name_1),
-                             NormalizeForComparison(full_name_2))) {
-    // full_name_2 is a variant of full_name_1.
-    best_name = &full_name_1;
-  } else {
-    // If the assertion that p1 and p2 have mergeable names is true, then
-    // full_name_1 must be a name variant of full_name_2;
-    best_name = &full_name_2;
+  // Try to apply a direct merging.
+  if (name_info.MergeStructuredName(p1.GetNameInfo()))
+    return true;
+  // If the name in |p2| is a variant of |p1| use the one in |p1|.
+  if (IsNameVariantOf(NormalizeForComparison(full_name_1),
+                      NormalizeForComparison(full_name_2))) {
+    name_info = p1.GetNameInfo();
+    return true;
   }
-
-  name_info.SetInfo(AutofillType(NAME_FULL), *best_name, app_locale_);
+  // The only left case is that |p1| is a variant of |p2|.
+  DCHECK(IsNameVariantOf(NormalizeForComparison(full_name_2),
+                         NormalizeForComparison(full_name_1)));
   return true;
 }
 
@@ -1249,8 +1224,7 @@
 
   // If the two names are just a permutation of each other, they are mergeable
   // for structured names.
-  if (structured_address::StructuredNamesEnabled() &&
-      structured_address::AreStringTokenEquivalent(full_name_1, full_name_2))
+  if (structured_address::AreStringTokenEquivalent(full_name_1, full_name_2))
     return true;
 
   std::u16string canon_full_name_1 = NormalizeForComparison(full_name_1);
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc b/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc
index b9420ea..fdcd50f 100644
--- a/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc
+++ b/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc
@@ -62,11 +62,6 @@
   return status == MATCH;
 }
 
-bool StructuredNamesEnabled() {
-  return base::FeatureList::IsEnabled(
-      features::kAutofillEnableSupportForMoreStructureInNames);
-}
-
 bool StructuredAddressesEnabled() {
   return base::FeatureList::IsEnabled(
       features::kAutofillEnableSupportForMoreStructureInAddresses);
@@ -74,9 +69,7 @@
 
 bool HonorificPrefixEnabled() {
   return base::FeatureList::IsEnabled(
-             features::kAutofillEnableSupportForHonorificPrefixes) &&
-         base::FeatureList::IsEnabled(
-             features::kAutofillEnableSupportForMoreStructureInNames);
+      features::kAutofillEnableSupportForHonorificPrefixes);
 }
 
 Re2RegExCache::Re2RegExCache() = default;
diff --git a/components/autofill/core/browser/data_model/contact_info.cc b/components/autofill/core/browser/data_model/contact_info.cc
index bbcd0158..f770a63 100644
--- a/components/autofill/core/browser/data_model/contact_info.cc
+++ b/components/autofill/core/browser/data_model/contact_info.cc
@@ -49,16 +49,8 @@
   if (this == &info)
     return *this;
 
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured names
-  // are fully launched.
-  if (structured_address::StructuredNamesEnabled()) {
-    name_->CopyFrom(*info.name_);
-  } else {
-    given_ = info.given_;
-    middle_ = info.middle_;
-    family_ = info.family_;
-    full_ = info.full_;
-  }
+  name_->CopyFrom(*info.name_);
+
   return *this;
 }
 
@@ -71,31 +63,19 @@
 }
 
 bool NameInfo::IsStructuredNameMergeable(const NameInfo& newer) const {
-  if (!structured_address::StructuredNamesEnabled())
-    NOTREACHED();
-
   return name_->IsMergeableWithComponent(newer.GetStructuredName());
 }
 
 bool NameInfo::FinalizeAfterImport(bool profile_is_verified) {
-  if (structured_address::StructuredNamesEnabled()) {
-    name_->MigrateLegacyStructure(profile_is_verified);
-    return name_->CompleteFullTree();
-  }
-  return true;
+  name_->MigrateLegacyStructure(profile_is_verified);
+  return name_->CompleteFullTree();
 }
 
 bool NameInfo::operator==(const NameInfo& other) const {
   if (this == &other)
     return true;
 
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured names
-  // are fully launched.
-  if (structured_address::StructuredNamesEnabled())
-    return name_->SameAs(*other.name_);
-
-  return given_ == other.given_ && middle_ == other.middle_ &&
-         family_ == other.family_ && full_ == other.full_;
+  return name_->SameAs(*other.name_);
 }
 
 std::u16string NameInfo::GetRawInfo(ServerFieldType type) const {
@@ -106,9 +86,6 @@
       !structured_address::HonorificPrefixEnabled()) {
     type = NAME_FULL;
   }
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured names
-  // are fully launched.
-  if (structured_address::StructuredNamesEnabled()) {
     // Without the second generation of the structured name tree, honorific
     // prefixes and the name including the prefix are unsupported types.
     if (type == NAME_HONORIFIC_PREFIX &&
@@ -117,98 +94,29 @@
     }
 
     return name_->GetValueForType(type);
-  }
-  switch (type) {
-    case NAME_FIRST:
-      return given_;
-
-    case NAME_MIDDLE:
-      return middle_;
-
-    case NAME_LAST:
-      return family_;
-
-    case NAME_MIDDLE_INITIAL:
-      return MiddleInitial();
-
-    case NAME_FULL:
-      return full_;
-
-    default:
-      return std::u16string();
-  }
 }
 
 void NameInfo::SetRawInfoWithVerificationStatus(ServerFieldType type,
                                                 const std::u16string& value,
                                                 VerificationStatus status) {
   DCHECK_EQ(FieldTypeGroup::kName, AutofillType(type).group());
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured names
-  // are fully launched.
-  if (structured_address::StructuredNamesEnabled()) {
-    // Without the second generation of the structured name tree, honorific
-    // prefixes and the name including the prefix are unsupported types.
-    if ((type == NAME_HONORIFIC_PREFIX ||
-         type == NAME_FULL_WITH_HONORIFIC_PREFIX) &&
-        !structured_address::HonorificPrefixEnabled()) {
-      return;
-    }
-    bool success = name_->SetValueForTypeIfPossible(type, value, status);
-    DCHECK(success) << AutofillType::ServerFieldTypeToString(type);
+  // Without the second generation of the structured name tree, honorific
+  // prefixes and the name including the prefix are unsupported types.
+  if ((type == NAME_HONORIFIC_PREFIX ||
+       type == NAME_FULL_WITH_HONORIFIC_PREFIX) &&
+      !structured_address::HonorificPrefixEnabled()) {
     return;
   }
-  switch (type) {
-    case NAME_FIRST:
-      given_ = value;
-      break;
-
-    case NAME_MIDDLE:
-    case NAME_MIDDLE_INITIAL:
-      middle_ = value;
-      break;
-
-    case NAME_LAST:
-      family_ = value;
-      break;
-
-    case NAME_FULL:
-      full_ = value;
-      break;
-
-    case NAME_LAST_FIRST:
-    case NAME_LAST_SECOND:
-    case NAME_LAST_CONJUNCTION:
-    case NAME_HONORIFIC_PREFIX:
-    case NAME_FULL_WITH_HONORIFIC_PREFIX:
-      break;
-
-    default:
-      NOTREACHED();
-  }
+  bool success = name_->SetValueForTypeIfPossible(type, value, status);
+  DCHECK(success) << AutofillType::ServerFieldTypeToString(type);
 }
 
 void NameInfo::GetSupportedTypes(ServerFieldTypeSet* supported_types) const {
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured names
-  // are fully launched.
-  if (structured_address::StructuredNamesEnabled()) {
-    name_->GetSupportedTypes(supported_types);
-  } else {
-    supported_types->insert(NAME_FIRST);
-    supported_types->insert(NAME_MIDDLE);
-    supported_types->insert(NAME_LAST);
-    supported_types->insert(NAME_MIDDLE_INITIAL);
-    supported_types->insert(NAME_FULL);
-  }
+  name_->GetSupportedTypes(supported_types);
 }
 
 std::u16string NameInfo::GetInfoImpl(const AutofillType& type,
                                      const std::string& app_locale) const {
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured names
-  // are fully launched.
-  if (!structured_address::StructuredNamesEnabled()) {
-    if (type.GetStorableType() == NAME_FULL)
-      return FullName();
-  }
   return GetRawInfo(type.GetStorableType());
 }
 
@@ -216,29 +124,15 @@
                                                  const std::u16string& value,
                                                  const std::string& app_locale,
                                                  VerificationStatus status) {
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured names
-  // are fully launched.
-  if (structured_address::StructuredNamesEnabled()) {
-    if (type.GetStorableType() == NAME_FULL) {
-      // If the set string is token equivalent to the old one, the value can
-      // just be updated, otherwise create a new name record and complete it in
-      // the end.
-      bool token_equivalent = structured_address::AreStringTokenEquivalent(
-          value, name_->GetValueForType(NAME_FULL));
-      name_->SetValueForTypeIfPossible(
-          type.GetStorableType(), value, status,
-          /*invalidate_child_nodes=*/!token_equivalent);
-      return true;
-    }
-    return FormGroup::SetInfoWithVerificationStatusImpl(type, value, app_locale,
-                                                        status);
-  }
-  // Always clear out the full name if we're making a change.
-  if (value != GetInfo(type, app_locale))
-    full_.clear();
-
   if (type.GetStorableType() == NAME_FULL) {
-    SetFullName(value);
+    // If the set string is token equivalent to the old one, the value can
+    // just be updated, otherwise create a new name record and complete it in
+    // the end.
+    bool token_equivalent = structured_address::AreStringTokenEquivalent(
+        value, name_->GetValueForType(NAME_FULL));
+    name_->SetValueForTypeIfPossible(
+        type.GetStorableType(), value, status,
+        /*invalidate_child_nodes=*/!token_equivalent);
     return true;
   }
   return FormGroup::SetInfoWithVerificationStatusImpl(type, value, app_locale,
@@ -260,12 +154,9 @@
 
 VerificationStatus NameInfo::GetVerificationStatusImpl(
     ServerFieldType type) const {
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured
-  // names are fully launched.
   // Without the second generation of the structured name tree, honorific
   // prefixes and the name including the prefix are unsupported types.
-  if (structured_address::StructuredNamesEnabled() &&
-      !((type == NAME_HONORIFIC_PREFIX ||
+  if (!((type == NAME_HONORIFIC_PREFIX ||
          type == NAME_FULL_WITH_HONORIFIC_PREFIX) &&
         !structured_address::HonorificPrefixEnabled())) {
     return name_->GetVerificationStatusForType(type);
@@ -273,37 +164,6 @@
   return VerificationStatus::kNoStatus;
 }
 
-std::u16string NameInfo::FullName() const {
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured
-  // names are fully launched.
-  if (structured_address::StructuredNamesEnabled())
-    NOTREACHED();
-  if (!full_.empty())
-    return full_;
-
-  return data_util::JoinNameParts(given_, middle_, family_);
-}
-
-std::u16string NameInfo::MiddleInitial() const {
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured
-  // names are fully launched.
-  if (structured_address::StructuredNamesEnabled())
-    NOTREACHED();
-  return middle_.empty() ? std::u16string() : middle_.substr(0U, 1U);
-}
-
-void NameInfo::SetFullName(const std::u16string& full) {
-  // TODO(crbug.com/1103421): Clean legacy implementation once structured
-  // names are fully launched.
-  if (structured_address::StructuredNamesEnabled())
-    NOTREACHED();
-  full_ = full;
-  data_util::NameParts parts = data_util::SplitName(full);
-  given_ = parts.given;
-  middle_ = parts.middle;
-  family_ = parts.family;
-}
-
 EmailInfo::EmailInfo() = default;
 
 EmailInfo::EmailInfo(const EmailInfo& info) {
diff --git a/components/autofill/core/browser/data_model/contact_info.h b/components/autofill/core/browser/data_model/contact_info.h
index 604390d5..b534b2d 100644
--- a/components/autofill/core/browser/data_model/contact_info.h
+++ b/components/autofill/core/browser/data_model/contact_info.h
@@ -88,24 +88,6 @@
   structured_address::VerificationStatus GetVerificationStatusImpl(
       ServerFieldType type) const override;
 
-  // Returns the full name, which is either |full_|, or if |full_| is empty,
-  // is composed of given, middle and family.
-  std::u16string FullName() const;
-
-  // Returns the middle initial if |middle_| is non-empty.  Returns an empty
-  // string otherwise.
-  std::u16string MiddleInitial() const;
-
-  // Sets |given_|, |middle_|, and |family_| to the tokenized |full|.
-  void SetFullName(const std::u16string& full);
-
-  // Legacy fields to store the unstructured representation of the name when
-  // |features::kAutofillEnableSupportForMoreStructureInNames| is not enabled.
-  std::u16string given_;
-  std::u16string middle_;
-  std::u16string family_;
-  std::u16string full_;
-
   // This data structure stores the more-structured representation of the name
   // when |features::kAutofillEnableSupportForMoreStructureInNames| is enabled.
   const std::unique_ptr<structured_address::AddressComponent> name_;
diff --git a/components/autofill/core/browser/form_parsing/name_field.cc b/components/autofill/core/browser/form_parsing/name_field.cc
index 94be7c5..ecdaeef 100644
--- a/components/autofill/core/browser/form_parsing/name_field.cc
+++ b/components/autofill/core/browser/form_parsing/name_field.cc
@@ -136,8 +136,7 @@
   // Try |FirstLastNameField| and |FirstTwoLastNamesField| first since they are
   // more specific.
   std::unique_ptr<FormField> field;
-  if (!field && base::FeatureList::IsEnabled(
-                    features::kAutofillEnableSupportForMoreStructureInNames)) {
+  if (!field) {
     field = FirstTwoLastNamesField::Parse(scanner, page_language,
                                           pattern_source, log_manager);
   }
@@ -452,16 +451,11 @@
     // Scan for the honorific prefix before checking for unrelated fields
     // because a honorific prefix field is expected to have very specific labels
     // including "Title:". The latter is matched with |kNameIgnoredRe|.
-    // TODO(crbug.com/1098943): Remove branching once feature is launched or
-    // removed.
-    if (base::FeatureList::IsEnabled(
-            features::kAutofillEnableSupportForMoreStructureInNames)) {
-      if (!v->honorific_prefix_ &&
-          ParseField(scanner, kHonorificPrefixRe, honorific_prefix_patterns,
-                     &v->honorific_prefix_,
-                     {log_manager, "kHonorificPrefixRe"})) {
-        continue;
-      }
+    if (!v->honorific_prefix_ &&
+        ParseField(scanner, kHonorificPrefixRe, honorific_prefix_patterns,
+                   &v->honorific_prefix_,
+                   {log_manager, "kHonorificPrefixRe"})) {
+      continue;
     }
 
     // Skip over any unrelated name fields, e.g. "username" or "nickname".
diff --git a/components/autofill/core/browser/proto/api_v1.proto b/components/autofill/core/browser/proto/api_v1.proto
index 2602854..27a068e 100644
--- a/components/autofill/core/browser/proto/api_v1.proto
+++ b/components/autofill/core/browser/proto/api_v1.proto
@@ -68,13 +68,37 @@
     // Next ID: 7
     message FieldSuggestion {
       // Prediction made on a field.
+      // Next ID: 4
       message FieldPrediction {
+        // This lists all the different ways predictions can be provided,
+        // including some experiments.
+        enum Source {
+          // No source for this prediction. This is only valid for
+          // NO_SERVER_DATA predictions.
+          SOURCE_UNSPECIFIED = 0;
+          // The autofill prediction, with no experiments enabled.
+          SOURCE_AUTOFILL_DEFAULT = 1;
+          // The password manager prediction, with no experiments enabled.
+          SOURCE_PASSWORDS_DEFAULT = 2;
+          // The prediction came from an override list.
+          SOURCE_OVERRIDE = 3;
+          // The autofill prediction came from the experiment which combines all
+          // approved experiments.
+          SOURCE_ALL_APPROVED_EXPERIMENTS = 4;
+          // The autofill prediction came from the experiment which considers
+          // fields ranks.
+          SOURCE_FIELD_RANKS = 5;
+        }
+
         // The predicted field type.
         // See components/autofill/core/browser/field_types.h for defined types.
         // It is not guaranteed that the value of |type| is known to the enum.
         optional int32 type = 1;
         // Indicates if the prediction is an override.
         optional bool override = 2 [default = false];
+        // The source of the prediction. E.g. which pipeline, which experiment,
+        // etc.
+        optional Source source = 3;
       }
       // Signature identifying the field that is the same as in the request.
       optional fixed32 field_signature = 1;
diff --git a/components/autofill/core/browser/test_utils/test_profiles.cc b/components/autofill/core/browser/test_utils/test_profiles.cc
index f837006..f9646be1 100644
--- a/components/autofill/core/browser/test_utils/test_profiles.cc
+++ b/components/autofill/core/browser/test_utils/test_profiles.cc
@@ -27,22 +27,6 @@
   if (finalize) {
     profile->FinalizeAfterImport();
   }
-
-  // If structured names are not enabled, the first, middle and last names must
-  // be derived from the full name if they are not explicitly set.
-  if (!base::FeatureList::IsEnabled(
-          features::kAutofillEnableSupportForMoreStructureInNames)) {
-    if (profile->GetRawInfo(NAME_FULL).empty()) {
-      return;
-    }
-    // If first, middle and last names are empty, use the 'SetInfo()' method to
-    // trigger the completion.
-    if (profile->GetRawInfo(NAME_FIRST).empty() &&
-        profile->GetRawInfo(NAME_MIDDLE).empty() &&
-        profile->GetRawInfo(NAME_LAST).empty()) {
-      profile->SetInfo(NAME_FULL, profile->GetRawInfo(NAME_FULL), "en_US");
-    }
-  }
 }
 
 void CopyGUID(const AutofillProfile& from, AutofillProfile* to) {
diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc
index 827463f..a0472a11 100644
--- a/components/autofill/core/browser/webdata/autofill_table.cc
+++ b/components/autofill/core/browser/webdata/autofill_table.cc
@@ -487,11 +487,6 @@
   statement.BindInt64(1, high);
 }
 
-// Constant to assign an unset verification status to structured address
-// components stored for legacy profiles.
-constexpr structured_address::VerificationStatus kNoStatus =
-    structured_address::VerificationStatus::kNoStatus;
-
 // Helper struct for AutofillTable::RemoveFormElementsAddedBetween().
 // Contains all the necessary fields to update a row in the 'autofill' table.
 struct AutofillUpdate {
@@ -654,36 +649,23 @@
 
 bool AddAutofillProfileNames(const AutofillProfile& profile,
                              sql::Database* db) {
-  if (base::FeatureList::IsEnabled(
-          features::kAutofillEnableSupportForMoreStructureInNames)) {
-    sql::Statement s;
-    InsertBuilder(
-        db, s, kAutofillProfileNamesTable,
-        {kGuid, kHonorificPrefix, kHonorificPrefixStatus, kFirstName,
-         kFirstNameStatus, kMiddleName, kMiddleNameStatus, kFirstLastName,
-         kFirstLastNameStatus, kConjunctionLastName, kConjunctionLastNameStatus,
-         kSecondLastName, kSecondLastNameStatus, kLastName, kLastNameStatus,
-         kFullName, kFullNameStatus, kFullNameWithHonorificPrefix,
-         kFullNameWithHonorificPrefixStatus});
-    s.BindString(0, profile.guid());
-    int index = 1;
-    for (ServerFieldType type :
-         {NAME_HONORIFIC_PREFIX, NAME_FIRST, NAME_MIDDLE, NAME_LAST_FIRST,
-          NAME_LAST_CONJUNCTION, NAME_LAST_SECOND, NAME_LAST, NAME_FULL,
-          NAME_FULL_WITH_HONORIFIC_PREFIX}) {
-      s.BindString16(index++, profile.GetRawInfo(type));
-      s.BindInt(index++, profile.GetVerificationStatusInt(type));
-    }
-    return s.Run();
-  }
-  // Add the new name.
   sql::Statement s;
-  InsertBuilder(db, s, kAutofillProfileNamesTable,
-                {kGuid, kFirstName, kMiddleName, kLastName, kFullName});
+  InsertBuilder(
+      db, s, kAutofillProfileNamesTable,
+      {kGuid, kHonorificPrefix, kHonorificPrefixStatus, kFirstName,
+       kFirstNameStatus, kMiddleName, kMiddleNameStatus, kFirstLastName,
+       kFirstLastNameStatus, kConjunctionLastName, kConjunctionLastNameStatus,
+       kSecondLastName, kSecondLastNameStatus, kLastName, kLastNameStatus,
+       kFullName, kFullNameStatus, kFullNameWithHonorificPrefix,
+       kFullNameWithHonorificPrefixStatus});
   s.BindString(0, profile.guid());
   int index = 1;
-  for (ServerFieldType type : {NAME_FIRST, NAME_MIDDLE, NAME_LAST, NAME_FULL}) {
+  for (ServerFieldType type :
+       {NAME_HONORIFIC_PREFIX, NAME_FIRST, NAME_MIDDLE, NAME_LAST_FIRST,
+        NAME_LAST_CONJUNCTION, NAME_LAST_SECOND, NAME_LAST, NAME_FULL,
+        NAME_FULL_WITH_HONORIFIC_PREFIX}) {
     s.BindString16(index++, profile.GetRawInfo(type));
+    s.BindInt(index++, profile.GetVerificationStatusInt(type));
   }
   return s.Run();
 }
@@ -758,31 +740,14 @@
           profile->guid())) {
     DCHECK_EQ(profile->guid(), s.ColumnString(0));
 
-    if (base::FeatureList::IsEnabled(
-            features::kAutofillEnableSupportForMoreStructureInNames)) {
-      // Whether or not the name has a legacy structure, set all
-      // components. The Profile can detect that it must be migrated because
-      // all values have the validation status |kNoStatus|.
-      int index = 1;
-      for (ServerFieldType type :
-           {NAME_HONORIFIC_PREFIX, NAME_FIRST, NAME_MIDDLE, NAME_LAST_FIRST,
-            NAME_LAST_CONJUNCTION, NAME_LAST_SECOND, NAME_LAST, NAME_FULL,
-            NAME_FULL_WITH_HONORIFIC_PREFIX}) {
-        profile->SetRawInfoWithVerificationStatusInt(
-            type, s.ColumnString16(index), s.ColumnInt(index + 1));
-        index += 2;
-      }
-    } else {
-      // If structured components are not enabled, only use the legacy
-      // structure.
-      profile->SetRawInfoWithVerificationStatus(NAME_FULL, s.ColumnString16(15),
-                                                kNoStatus);
-      profile->SetRawInfoWithVerificationStatus(NAME_FIRST, s.ColumnString16(3),
-                                                kNoStatus);
-      profile->SetRawInfoWithVerificationStatus(NAME_MIDDLE,
-                                                s.ColumnString16(5), kNoStatus);
-      profile->SetRawInfoWithVerificationStatus(NAME_LAST, s.ColumnString16(13),
-                                                kNoStatus);
+    int index = 1;
+    for (ServerFieldType type :
+         {NAME_HONORIFIC_PREFIX, NAME_FIRST, NAME_MIDDLE, NAME_LAST_FIRST,
+          NAME_LAST_CONJUNCTION, NAME_LAST_SECOND, NAME_LAST, NAME_FULL,
+          NAME_FULL_WITH_HONORIFIC_PREFIX}) {
+      profile->SetRawInfoWithVerificationStatusInt(
+          type, s.ColumnString16(index), s.ColumnInt(index + 1));
+      index += 2;
     }
   }
   return s.Succeeded();
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc
index 71637f2..5faaf9a 100644
--- a/components/autofill/core/common/autofill_features.cc
+++ b/components/autofill/core/common/autofill_features.cc
@@ -11,15 +11,17 @@
 
 // Controls whether to flatten and fill cross-iframe forms.
 // TODO(crbug.com/1187842) Remove once launched.
-const base::Feature kAutofillAcrossIframes{"AutofillAcrossIframes",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAcrossIframes,
+             "AutofillAcrossIframes",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // TODO(crbug.com/1135188): Remove this feature flag after the explicit save
 // prompts for address profiles is complete.
 // When enabled, a save prompt will be shown to user upon form submission before
 // storing any detected address profile.
-const base::Feature kAutofillAddressProfileSavePrompt{
-    "AutofillAddressProfileSavePrompt", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAddressProfileSavePrompt,
+             "AutofillAddressProfileSavePrompt",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // This parameter controls if save profile prompts are automatically blocked for
 // a given domain after N (default is 3) subsequent declines.
@@ -57,39 +59,42 @@
 // When enabled, address data will be verified and autocorrected in the
 // save/update prompt before saving an address profile. Relevant only if the
 // AutofillAddressProfileSavePrompt feature is enabled.
-const base::Feature kAutofillAddressProfileSavePromptAddressVerificationSupport{
-    "AutofillAddressProfileSavePromptAddressVerificationSupport",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAddressProfileSavePromptAddressVerificationSupport,
+             "AutofillAddressProfileSavePromptAddressVerificationSupport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // TODO(crbug.com/1135188): Remove this feature flag after the explicit save
 // prompts for address profiles is complete.
 // When enabled, address profile save problem will contain a dropdown for
 // assigning a nickname to the address profile. Relevant only if the
 // AutofillAddressProfileSavePrompt feature is enabled.
-const base::Feature kAutofillAddressProfileSavePromptNicknameSupport{
-    "AutofillAddressProfileSavePromptNicknameSupport",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAddressProfileSavePromptNicknameSupport,
+             "AutofillAddressProfileSavePromptNicknameSupport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // By default, AutofillAgent and, if |kAutofillProbableFormSubmissionInBrowser|
 // is enabled, also ContentAutofillDriver omit duplicate form submissions, even
 // though the form's data may have changed substantially. If enabled, the
 // below feature allows duplicate form submissions.
 // TODO(crbug/1117451): Remove once the form-submission experiment is over.
-const base::Feature kAutofillAllowDuplicateFormSubmissions{
-    "AutofillAllowDuplicateFormSubmissions", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAllowDuplicateFormSubmissions,
+             "AutofillAllowDuplicateFormSubmissions",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether autofill activates on non-HTTP(S) pages. Useful for
 // automated with data URLS in cases where it's too difficult to use the
 // embedded test server. Generally avoid using.
-const base::Feature kAutofillAllowNonHttpActivation{
-    "AutofillAllowNonHttpActivation", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAllowNonHttpActivation,
+             "AutofillAllowNonHttpActivation",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, the two most recent address forms and the most recent credit card
 // forms, which were submitted on the same origin, are associated with each
 // other. The association only happens if at most `kAutofillAssociateFormsTTL`
 // time passes between all submissions.
-const base::Feature kAutofillAssociateForms{"AutofillAssociateForms",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAssociateForms,
+             "AutofillAssociateForms",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const base::FeatureParam<base::TimeDelta> kAutofillAssociateFormsTTL{
     &kAutofillAssociateForms, "associate_forms_ttl", base::Minutes(5)};
 
@@ -97,85 +102,95 @@
 // would otherwise prevent an import. Instead, ignoring it will trigger the
 // country complemention logic.
 // TODO(crbug.com/1362472): Cleanup when launched.
-extern const base::Feature kAutofillIgnoreInvalidCountryOnImport{
-    "AutofillIgnoreInvalidCountryOnImport", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillIgnoreInvalidCountryOnImport,
+             "AutofillIgnoreInvalidCountryOnImport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, the country calling code for nationally formatted phone numbers
 // is inferred from the profile's country, if available.
 // TODO(crbug.com/1311937): Cleanup when launched.
-const base::Feature kAutofillInferCountryCallingCode{
-    "AutofillInferCountryCallingCode", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillInferCountryCallingCode,
+             "AutofillInferCountryCallingCode",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, label inference considers strings entirely made up of  '(', ')'
 // and '-' as valid labels.
 // TODO(crbug.com/1311937): Cleanup when launched.
-const base::Feature kAutofillConsiderPhoneNumberSeparatorsValidLabels{
-    "AutofillConsiderPhoneNumberSeparatorsValidLabels",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillConsiderPhoneNumberSeparatorsValidLabels,
+             "AutofillConsiderPhoneNumberSeparatorsValidLabels",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, local heuristics fall back to the fields placeholder attribute.
-const base::Feature kAutofillConsiderPlaceholderForParsing{
-    "AutofillConsiderPlaceholderForParsing", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillConsiderPlaceholderForParsing,
+             "AutofillConsiderPlaceholderForParsing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, the variation country code is used as the phone number's region,
 // instead of defaulting to app locale.
 // TODO(crbug.com/1295721): Cleanup when launched.
-const base::Feature kAutofillConsiderVariationCountryCodeForPhoneNumbers{
-    "AutofillConsiderVariationCountryCodeForPhoneNumbers",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillConsiderVariationCountryCodeForPhoneNumbers,
+             "AutofillConsiderVariationCountryCodeForPhoneNumbers",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Chrome needs to map country names ("Italy"/"Italien") to country codes
 // ("IT"). If enabled, the lookup considers all locales that are registered
 // for a country. This helps in case a Chrome fails to determine the language
 // of a website.
 // TODO(crbug.com/1360502): Cleanup when launched.
-const base::Feature kAutofillCountryFromLocalName{
-    "AutofillCountryFromLocalName", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillCountryFromLocalName,
+             "AutofillCountryFromLocalName",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, three address profiles are created for testing.
-const base::Feature kAutofillCreateDataForTest{
-    "AutofillCreateDataForTest", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillCreateDataForTest,
+             "AutofillCreateDataForTest",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, checking whether a form has disappeared after an Ajax response is
 // delayed because subsequent Ajax responses may restore the form. If disabled,
 // the check happens right after a successful Ajax response.
-const base::Feature kAutofillDeferSubmissionClassificationAfterAjax{
-    "AutofillDeferSubmissionClassificationAfterAjax",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillDeferSubmissionClassificationAfterAjax,
+             "AutofillDeferSubmissionClassificationAfterAjax",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, we try to fill and import from fields based on available
 // heuristic or server suggestions even if the autocomplete attribute is not
 // specified by the web standard. This does not affect the moments when the UI
 // is shown.
 // TODO(crbug.com/1295728): Remove the feature when the experiment is completed.
-const base::Feature kAutofillFillAndImportFromMoreFields{
-    "AutofillFillAndImportFromMoreFields", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillFillAndImportFromMoreFields,
+             "AutofillFillAndImportFromMoreFields",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, autofill searches for format strings (like "MM/YY", "MM / YY",
 // "MM/YYYY") in the label or placeholder of input elements and uses these
 // to fill expiration dates.
 // TODO(crbug.com/1326244): Cleanup when launched.
-const base::Feature kAutofillFillCreditCardAsPerFormatString{
-    "AutofillFillCreditCardAsPerFormatString",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillFillCreditCardAsPerFormatString,
+             "AutofillFillCreditCardAsPerFormatString",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Kill switch for Autofill filling.
-const base::Feature kAutofillDisableFilling{"AutofillDisableFilling",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillDisableFilling,
+             "AutofillDisableFilling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Kill switch for Autofill address import.
-const base::Feature kAutofillDisableAddressImport{
-    "AutofillDisableAddressImport", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillDisableAddressImport,
+             "AutofillDisableAddressImport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Kill switch for computing heuristics other than the active ones
 // (GetActivePatternSource()).
-const base::Feature kAutofillDisableShadowHeuristics{
-    "AutofillDisableShadowHeuristics", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillDisableShadowHeuristics,
+             "AutofillDisableShadowHeuristics",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, autofill will use the new ranking algorithm for card and
 // profile autofill suggestions.
-const base::Feature kAutofillEnableRankingFormula{
-    "AutofillEnableRankingFormula", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableRankingFormula,
+             "AutofillEnableRankingFormula",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // The half life applied to the use count.
 const base::FeatureParam<int> kAutofillRankingFormulaUsageHalfLife{
     &kAutofillEnableRankingFormula, "autofill_ranking_formula_usage_half_life",
@@ -191,65 +206,68 @@
 
 // Controls if the heuristic field parsing utilizes shared labels.
 // TODO(crbug.com/1165780): Remove once shared labels are launched.
-const base::Feature kAutofillEnableSupportForParsingWithSharedLabels{
-    "AutofillEnableSupportForParsingWithSharedLabels",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableSupportForParsingWithSharedLabels,
+             "AutofillEnableSupportForParsingWithSharedLabels",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls if Chrome support filling and importing apartment numbers.
 // TODO(crbug.com/1153715): Remove once launched.
-const base::Feature kAutofillEnableSupportForApartmentNumbers{
-    "AutofillEnableSupportForApartmentNumbers",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableSupportForApartmentNumbers,
+             "AutofillEnableSupportForApartmentNumbers",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether we download server credit cards to the ephemeral
 // account-based storage when sync the transport is enabled.
-const base::Feature kAutofillEnableAccountWalletStorage {
-  "AutofillEnableAccountWalletStorage",
+BASE_FEATURE(kAutofillEnableAccountWalletStorage,
+             "AutofillEnableAccountWalletStorage",
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-      // Wallet transport is currently unavailable on ChromeOS.
-      base::FEATURE_DISABLED_BY_DEFAULT
+             // Wallet transport is currently unavailable on ChromeOS.
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
 // Controls whether to detect and fill the augmented phone country code field
 // when enabled.
 // TODO(crbug.com/1150890) Remove once launched
-const base::Feature kAutofillEnableAugmentedPhoneCountryCode{
-    "AutofillEnableAugmentedPhoneCountryCode",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableAugmentedPhoneCountryCode,
+             "AutofillEnableAugmentedPhoneCountryCode",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables parsing for birthdate fields. Filling is not supported and parsing
 // is meant to prevent false positive credit card expiration dates.
 // TODO(crbug.com/1306654): Remove once launched.
-const base::Feature kAutofillEnableBirthdateParsing{
-    "AutofillEnableBirthdateParsing", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableBirthdateParsing,
+             "AutofillEnableBirthdateParsing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls if Autofill parses ADDRESS_HOME_DEPENDENT_LOCALITY.
 // TODO(crbug.com/1157405): Remove once launched.
-const base::Feature kAutofillEnableDependentLocalityParsing{
-    "AutofillEnableDependentLocalityParsing",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableDependentLocalityParsing,
+             "AutofillEnableDependentLocalityParsing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the augmentation layer for setting-inaccessible fields, which allows
 // extending Autofill's address format by additional fields.
 // TODO(crbug.com/1300548) Remove when launched.
-const base::Feature kAutofillEnableExtendedAddressFormats{
-    "AutofillEnableExtendedAddressFormats", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableExtendedAddressFormats,
+             "AutofillEnableExtendedAddressFormats",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether to save the first number in a form with multiple phone
 // numbers instead of aborting the import.
 // TODO(crbug.com/1167484) Remove once launched.
-const base::Feature kAutofillEnableImportWhenMultiplePhoneNumbers{
-    "AutofillEnableImportWhenMultiplePhoneNumbers",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableImportWhenMultiplePhoneNumbers,
+             "AutofillEnableImportWhenMultiplePhoneNumbers",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, candidate profiles are temporary stored on import, and merged
 // with future candidate profiles, to create an importable profile. This makes
 // importing from multi-step input flows possible.
-const base::Feature kAutofillEnableMultiStepImports{
-    "AutofillEnableMultiStepImports", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableMultiStepImports,
+             "AutofillEnableMultiStepImports",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // When enabled, imported profiles are stored as multi-step candidates too,
 // which enables complementing a recently imported profile during later steps of
 // a multi-step input flow.
@@ -262,60 +280,56 @@
 
 // When enabled, phone number local heuristics match empty labels when looking
 // for composite phone number inputs. E.g. Phone number <input><input>.
-const base::Feature kAutofillEnableParsingEmptyPhoneNumberLabels{
-    "AutofillEnableParsingEmptyPhoneNumberLabels",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableParsingEmptyPhoneNumberLabels,
+             "AutofillEnableParsingEmptyPhoneNumberLabels",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, the precedence is given to the field label over the name when
 // they match different types. Applied only for parsing of address forms in
 // Turkish.
 // TODO(crbug.com/1156315): Remove once launched.
-const base::Feature kAutofillEnableLabelPrecedenceForTurkishAddresses{
-    "AutofillEnableLabelPrecedenceForTurkishAddresses",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableLabelPrecedenceForTurkishAddresses,
+             "AutofillEnableLabelPrecedenceForTurkishAddresses",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the parsing of a sequence of fields that follows the pattern of Name,
 // Surname.
 // TODO(crbug.com/1277480): Remove once launched.
-const base::Feature kAutofillEnableNameSurenameParsing{
-    "AutofillEnableNameSurenameParsing", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableNameSurenameParsing,
+             "AutofillEnableNameSurenameParsing",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, the address profile deduplication logic runs after the browser
 // startup, once per chrome version.
-const base::Feature kAutofillEnableProfileDeduplication{
-    "AutofillEnableProfileDeduplication", base::FEATURE_DISABLED_BY_DEFAULT};
-
-// Controls if Autofill supports new structure in names.
-// TODO(crbug.com/1098943): Remove once launched.
-const base::Feature kAutofillEnableSupportForMoreStructureInNames{
-    "AutofillEnableSupportForMoreStructureInNames",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableProfileDeduplication,
+             "AutofillEnableProfileDeduplication",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls if Autofill supports new structure in addresses.
 // TODO(crbug.com/1098943): Remove once launched.
-const base::Feature kAutofillEnableSupportForMoreStructureInAddresses{
-    "AutofillEnableSupportForMoreStructureInAddresses",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableSupportForMoreStructureInAddresses,
+             "AutofillEnableSupportForMoreStructureInAddresses",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls if Autofill supports merging subset names.
 // TODO(crbug.com/1098943): Remove once launched.
-const base::Feature kAutofillEnableSupportForMergingSubsetNames{
-    "AutofillEnableSupportForMergingSubsetNames",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableSupportForMergingSubsetNames,
+             "AutofillEnableSupportForMergingSubsetNames",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether honorific prefix is shown and editable in Autofill Settings
 // on Android, iOS and Desktop.
 // TODO(crbug.com/1141460): Remove once launched.
-const base::Feature kAutofillEnableSupportForHonorificPrefixes{
-    "AutofillEnableSupportForHonorificPrefixes",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableSupportForHonorificPrefixes,
+             "AutofillEnableSupportForHonorificPrefixes",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, trunk prefix-related phone number types are added to the
 // supported and matching types of |PhoneNumber|. Local heuristics for these
 // types are enabled as well.
-const base::Feature kAutofillEnableSupportForPhoneNumberTrunkTypes{
-    "AutofillEnableSupportForPhoneNumberTrunkTypes",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableSupportForPhoneNumberTrunkTypes,
+             "AutofillEnableSupportForPhoneNumberTrunkTypes",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Autofill monitors whether JavaScript modifies autofilled
 // credit card expiration dates and tries to fix a specific failure scenario.
@@ -323,67 +337,75 @@
 // formatting and replace it with "05 / 20" instead of "05 / 23". When this
 // experiment is enabled, Chrome replaces the "05 / 20" with "05 / 23".
 // TODO(crbug.com/1314360): Remove once launched.
-const base::Feature kAutofillRefillModifiedCreditCardExpirationDates{
-    "AutofillRefillModifiedCreditCardExpirationDates",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillRefillModifiedCreditCardExpirationDates,
+             "AutofillRefillModifiedCreditCardExpirationDates",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables autofill to function within a FencedFrame, and is disabled by
 // default.
 // TODO(crbug.com/1294378): Remove once launched.
-const base::Feature kAutofillEnableWithinFencedFrame{
-    "AutofillEnableWithinFencedFrame", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableWithinFencedFrame,
+             "AutofillEnableWithinFencedFrame",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether or not all datalist shall be extracted into FormFieldData.
 // This feature is enabled in both WebView and WebLayer where all datalists
 // instead of only the focused one shall be extracted and sent to Android
 // autofill service when the autofill session created.
-const base::Feature kAutofillExtractAllDatalists{
-    "AutofillExtractAllDatalists", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillExtractAllDatalists,
+             "AutofillExtractAllDatalists",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls if type-specific popup widths are used.
 // TODO(crbug.com/1250729): Remove once launched.
-const base::Feature kAutofillTypeSpecificPopupWidth{
-    "AutofillTypeSpecificPopupWidth", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillTypeSpecificPopupWidth,
+             "AutofillTypeSpecificPopupWidth",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, HTML autocomplete values that do not map to any known type, but
 // look reasonable (e.g. contain "address") are simply ignored. Without the
 // feature, Autofill is disabled on such fields.
-const base::Feature kAutofillIgnoreUnmappableAutocompleteValues{
-    "AutofillIgnoreUnmappableAutocompleteValues",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillIgnoreUnmappableAutocompleteValues,
+             "AutofillIgnoreUnmappableAutocompleteValues",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, <label for=..> inference relies on control.labels() instead of
 // iterating through all <label> tags manually.
 // TODO(crbug.com/1339277) Remove once launched.
-const base::Feature kAutofillImprovedLabelForInference{
-    "AutofillImprovedLabelForInference", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillImprovedLabelForInference,
+             "AutofillImprovedLabelForInference",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, only changed values are highlighted in preview mode.
 // TODO(crbug/1248585): Remove when launched.
-const base::Feature kAutofillHighlightOnlyChangedValuesInPreviewMode{
-    "AutofillHighlightOnlyChangedValuesInPreviewMode",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillHighlightOnlyChangedValuesInPreviewMode,
+             "AutofillHighlightOnlyChangedValuesInPreviewMode",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls if a server prediction with a prediction source |OVERRIDE| is
 // granted precedence over html type attributes.
 // TODO(crbug.com/1170384) Remove once launched
-const base::Feature kAutofillServerTypeTakesPrecedence{
-    "AutofillServerTypeTakesPrecedence", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillServerTypeTakesPrecedence,
+             "AutofillServerTypeTakesPrecedence",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, Autofill suggestions are displayed in the keyboard accessory
 // instead of the regular popup.
-const base::Feature kAutofillKeyboardAccessory{
-    "AutofillKeyboardAccessory", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillKeyboardAccessory,
+             "AutofillKeyboardAccessory",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Autofill will use new logic to strip both prefixes
 // and suffixes when setting FormStructure::parseable_name_
-extern const base::Feature kAutofillLabelAffixRemoval{
-    "AutofillLabelAffixRemoval", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillLabelAffixRemoval,
+             "AutofillLabelAffixRemoval",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enabled a suggestion menu that is aligned to the center of the field.
 // TODO(crbug/1248339): Remove once experiment is finished.
-extern const base::Feature kAutofillCenterAlignedSuggestions{
-    "AutofillCenterAlignedSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillCenterAlignedSuggestions,
+             "AutofillCenterAlignedSuggestions",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls the maximum pixels the popup is shifted towards the center.
 // TODO(crbug/1248339): Remove once experiment is finished.
@@ -406,9 +428,9 @@
 // When enabled, Autofill would not override the field values that were either
 // filled by Autofill or on page load.
 // TODO(crbug/1275649): Remove once experiment is finished.
-extern const base::Feature kAutofillPreventOverridingPrefilledValues{
-    "AutofillPreventOverridingPrefilledValues",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillPreventOverridingPrefilledValues,
+             "AutofillPreventOverridingPrefilledValues",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, use the parsing patterns from a JSON file for heuristics, rather
 // than the hardcoded ones from autofill_regex_constants.cc.
@@ -419,8 +441,9 @@
 //
 // Enabling this feature is also a prerequisite for emitting shadow metrics.
 // TODO(crbug/1121990): Remove once launched.
-const base::Feature kAutofillParsingPatternProvider{
-    "AutofillParsingPatternProvider", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillParsingPatternProvider,
+             "AutofillParsingPatternProvider",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // The specific pattern set is controlled by the `kAutofillParsingPatternActive`
 // parameter. One of "legacy", "default", "experimental", "nextgen". All other
@@ -431,61 +454,66 @@
 
 // Enables detection of language from Translate.
 // TODO(crbug/1150895): Cleanup when launched.
-const base::Feature kAutofillPageLanguageDetection{
-    "AutofillPageLanguageDetection", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillPageLanguageDetection,
+             "AutofillPageLanguageDetection",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, AutofillManager::ParseForm() isn't called synchronously.
 // Instead, all incoming events parse the form asynchronously and proceed
 // afterwards.
 // TODO(crbug.com/1309848) Remove once launched.
-const base::Feature kAutofillParseAsync{"AutofillParseAsync",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillParseAsync,
+             "AutofillParseAsync",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, local heuristics fall back to interpreting the fields' name as an
 // autocomplete type.
 // TODO(crbug.com/1345879) Remove once launched.
-const base::Feature kAutofillParseNameAsAutocompleteType{
-    "AutofillParseNameAsAutocompleteType", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillParseNameAsAutocompleteType,
+             "AutofillParseNameAsAutocompleteType",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If the feature is enabled, FormTracker's probable-form-submission detection
 // is disabled and replaced with browser-side detection.
 // TODO(crbug/1117451): Remove once it works.
-const base::Feature kAutofillProbableFormSubmissionInBrowser{
-    "AutofillProbableFormSubmissionInBrowser",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillProbableFormSubmissionInBrowser,
+             "AutofillProbableFormSubmissionInBrowser",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If we observe a sequence of fields of (street address, address line 2), these
 // get rationalized to (address line 1, address line 2).
 // TODO(crbug.com/1326425): Remove once feature is lanuched.
-const base::Feature kAutofillRationalizeStreetAddressAndAddressLine{
-    "AutofillRationalizeStreetAddressAndAddressLine",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillRationalizeStreetAddressAndAddressLine,
+             "AutofillRationalizeStreetAddressAndAddressLine",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Removes setting-inaccessible field types from existing profiles on startup.
 // TODO(crbug.com/1300548): Cleanup when launched.
-const base::Feature kAutofillRemoveInaccessibleProfileValuesOnStartup{
-    "AutofillRemoveInaccessibleProfileValuesOnStartup",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillRemoveInaccessibleProfileValuesOnStartup,
+             "AutofillRemoveInaccessibleProfileValuesOnStartup",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, invalid phone numbers are removed on profile import, rather than
 // invalidating the entire profile.
 // TODO(crbug.com/1298424): Cleanup when launched.
-const base::Feature kAutofillRemoveInvalidPhoneNumberOnImport{
-    "AutofillRemoveInvalidPhoneNumberOnImport",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillRemoveInvalidPhoneNumberOnImport,
+             "AutofillRemoveInvalidPhoneNumberOnImport",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether or not overall prediction are retrieved from the cache.
-const base::Feature kAutofillRetrieveOverallPredictionsFromCache{
-    "AutofillRetrieveOverallPredictionsFromCache",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillRetrieveOverallPredictionsFromCache,
+             "AutofillRetrieveOverallPredictionsFromCache",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether UPI/VPA values will be saved and filled into payment forms.
-const base::Feature kAutofillSaveAndFillVPA{"AutofillSaveAndFillVPA",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillSaveAndFillVPA,
+             "AutofillSaveAndFillVPA",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls non-default Autofill API predictions. See crbug.com/1331322.
-const base::Feature kAutofillServerBehaviors{"AutofillServerBehaviors",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillServerBehaviors,
+             "AutofillServerBehaviors",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // Chrome doesn't need to know the meaning of the value. Chrome only needs to
 // forward it to the Autofill API, to let the server know which group the client
 // belongs to.
@@ -498,14 +526,16 @@
 // autofill server API url up to the parent "directory" of the "query" and
 // "upload" resources.
 // i.e., https://other.autofill.server:port/tbproxy/af/
-const base::Feature kAutofillServerCommunication{
-    "AutofillServerCommunication", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillServerCommunication,
+             "AutofillServerCommunication",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether Autofill may fill across origins as part of the
 // AutofillAcrossIframes experiment.
 // TODO(crbug.com/1304721): Clean up when launched.
-const base::Feature kAutofillSharedAutofill{"AutofillSharedAutofill",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillSharedAutofill,
+             "AutofillSharedAutofill",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // Relaxes the conditions under which a field is safe to fill.
 // See FormForest::GetRendererFormsOfBrowserForm() for details.
 const base::FeatureParam<bool> kAutofillSharedAutofillRelaxedParam{
@@ -514,83 +544,92 @@
 // Controls whether Manual fallbacks would be shown in the context menu for
 // filling. Used only in Desktop.
 // TODO(crbug.com/1326895): Clean up when launched.
-const base::Feature kAutofillShowManualFallbackInContextMenu{
-    "AutofillShowManualFallbackInContextMenu",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillShowManualFallbackInContextMenu,
+             "AutofillShowManualFallbackInContextMenu",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls attaching the autofill type predictions to their respective
 // element in the DOM.
-const base::Feature kAutofillShowTypePredictions{
-    "AutofillShowTypePredictions", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillShowTypePredictions,
+             "AutofillShowTypePredictions",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Allows silent profile updates even when the profile import requirements are
 // not met.
-const base::Feature kAutofillSilentProfileUpdateForInsufficientImport{
-    "AutofillSilentProfileUpdateForInsufficientImport",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillSilentProfileUpdateForInsufficientImport,
+             "AutofillSilentProfileUpdateForInsufficientImport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether inferred label is considered for comparing in
 // FormFieldData.SimilarFieldAs.
 // TODO(crbug.com/1211834): The experiment seems dead; remove?
-const base::Feature kAutofillSkipComparingInferredLabels{
-    "AutofillSkipComparingInferredLabels", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillSkipComparingInferredLabels,
+             "AutofillSkipComparingInferredLabels",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether Autofill should search prefixes of all words/tokens when
 // filtering profiles, or only on prefixes of the whole string.
-const base::Feature kAutofillTokenPrefixMatching{
-    "AutofillTokenPrefixMatching", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillTokenPrefixMatching,
+             "AutofillTokenPrefixMatching",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Autofill upload throttling is used for testing.
-const base::Feature kAutofillUploadThrottling{"AutofillUploadThrottling",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUploadThrottling,
+             "AutofillUploadThrottling",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether to use the AutofillUseAlternativeStateNameMap for filling
 // of state selection fields, comparison of profiles and sending state votes to
 // the server.
 // TODO(crbug.com/1143516): Remove the feature when the experiment is completed.
-const base::Feature kAutofillUseAlternativeStateNameMap{
-    "AutofillUseAlternativeStateNameMap", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUseAlternativeStateNameMap,
+             "AutofillUseAlternativeStateNameMap",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether suggestions' labels use the improved label disambiguation
 // format.
-const base::Feature kAutofillUseImprovedLabelDisambiguation{
-    "AutofillUseImprovedLabelDisambiguation",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUseImprovedLabelDisambiguation,
+             "AutofillUseImprovedLabelDisambiguation",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to use the same icon for the settings section in the popup
 // footer.
-const base::Feature kAutofillUseConsistentPopupSettingsIcons{
-    "AutofillUseConsistentPopupSettingsIcons",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUseConsistentPopupSettingsIcons,
+             "AutofillUseConsistentPopupSettingsIcons",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether to use the combined heuristic and the autocomplete section
 // implementation for section splitting or not. See https://crbug.com/1076175.
-const base::Feature kAutofillUseNewSectioningMethod{
-    "AutofillUseNewSectioningMethod", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUseNewSectioningMethod,
+             "AutofillUseNewSectioningMethod",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to use the newest, parameterized sectioning algorithm.
 // Use together with `kAutofillRefillByFormRendererId`.
 // TODO(crbug.com/1153539): Remove the feature when the experiment is completed.
-const base::Feature kAutofillUseParameterizedSectioning{
-    "AutofillUseParameterizedSectioning", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUseParameterizedSectioning,
+             "AutofillUseParameterizedSectioning",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to use form renderer IDs to find the form which contains the
 // field that was last interacted with in
 // `AutofillAgent::TriggerRefillIfNeeded()`.
 // TODO(crbug.com/1360988): Remove the feature when the experiment is completed.
-const base::Feature kAutofillRefillByFormRendererId{
-    "AutofillRefillByFormRendererId", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillRefillByFormRendererId,
+             "AutofillRefillByFormRendererId",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Introduces various visual improvements of the Autofill suggestion UI that is
 // also used for the password manager.
-const base::Feature kAutofillVisualImprovementsForSuggestionUi{
-    "AutofillVisualImprovementsForSuggestionUi",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillVisualImprovementsForSuggestionUi,
+             "AutofillVisualImprovementsForSuggestionUi",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls an ablation study in which autofill for addresses and payment data
 // can be suppressed.
-const base::Feature kAutofillEnableAblationStudy{
-    "AutofillEnableAblationStudy", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableAblationStudy,
+             "AutofillEnableAblationStudy",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // The following parameters are only effective if the study is enabled.
 const base::FeatureParam<bool> kAutofillAblationStudyEnabledForAddressesParam{
     &kAutofillEnableAblationStudy, "enabled_for_addresses", false};
@@ -605,24 +644,27 @@
 #if BUILDFLAG(IS_ANDROID)
 // Controls whether the Autofill manual fallback for Addresses and Payments is
 // present on Android.
-const base::Feature kAutofillManualFallbackAndroid{
-    "AutofillManualFallbackAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillManualFallbackAndroid,
+             "AutofillManualFallbackAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether to use modernized style for the Autofill dropdown.
-const base::Feature kAutofillRefreshStyleAndroid{
-    "AutofillRefreshStyleAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillRefreshStyleAndroid,
+             "AutofillRefreshStyleAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls whether the touch to fill surface is shown for credit cards on
 // Android.
-const base::Feature kAutofillTouchToFillForCreditCardsAndroid{
-    "AutofillTouchToFillForCreditCardsAndroid",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillTouchToFillForCreditCardsAndroid,
+             "AutofillTouchToFillForCreditCardsAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #endif  // BUILDFLAG(IS_ANDROID)
 
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
-const base::Feature kAutofillUseMobileLabelDisambiguation{
-    "AutofillUseMobileLabelDisambiguation", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUseMobileLabelDisambiguation,
+             "AutofillUseMobileLabelDisambiguation",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const char kAutofillUseMobileLabelDisambiguationParameterName[] = "variant";
 const char kAutofillUseMobileLabelDisambiguationParameterShowAll[] = "show-all";
 const char kAutofillUseMobileLabelDisambiguationParameterShowOne[] = "show-one";
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h
index 25340c2..bbb22c83 100644
--- a/components/autofill/core/common/autofill_features.h
+++ b/components/autofill/core/common/autofill_features.h
@@ -14,9 +14,9 @@
 namespace autofill::features {
 
 // All features in alphabetical order.
-COMPONENT_EXPORT(AUTOFILL) extern const base::Feature kAutofillAcrossIframes;
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillAcrossIframes);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillAddressProfileSavePrompt;
+BASE_DECLARE_FEATURE(kAutofillAddressProfileSavePrompt);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<bool>
     kAutofillAutoBlockSaveAddressProfilePrompt;
@@ -36,68 +36,63 @@
 extern const base::FeatureParam<int>
     kAutofillAutoBlockUpdateAddressProfilePromptStrikeLimit;
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature
-    kAutofillAddressProfileSavePromptAddressVerificationSupport;
+BASE_DECLARE_FEATURE(
+    kAutofillAddressProfileSavePromptAddressVerificationSupport);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillAddressProfileSavePromptNicknameSupport;
+BASE_DECLARE_FEATURE(kAutofillAddressProfileSavePromptNicknameSupport);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillAllowDuplicateFormSubmissions;
+BASE_DECLARE_FEATURE(kAutofillAllowDuplicateFormSubmissions);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillAllowNonHttpActivation;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillAssociateForms;
+BASE_DECLARE_FEATURE(kAutofillAllowNonHttpActivation);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillAssociateForms);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<base::TimeDelta> kAutofillAssociateFormsTTL;
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillIgnoreInvalidCountryOnImport;
+BASE_DECLARE_FEATURE(kAutofillIgnoreInvalidCountryOnImport);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillInferCountryCallingCode;
+BASE_DECLARE_FEATURE(kAutofillInferCountryCallingCode);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillConsiderPhoneNumberSeparatorsValidLabels;
+BASE_DECLARE_FEATURE(kAutofillConsiderPhoneNumberSeparatorsValidLabels);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillConsiderPlaceholderForParsing;
+BASE_DECLARE_FEATURE(kAutofillConsiderPlaceholderForParsing);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillConsiderVariationCountryCodeForPhoneNumbers;
+BASE_DECLARE_FEATURE(kAutofillConsiderVariationCountryCodeForPhoneNumbers);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillCountryFromLocalName);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillCountryFromLocalName;
+BASE_DECLARE_FEATURE(kAutofillDeferSubmissionClassificationAfterAjax);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillDeferSubmissionClassificationAfterAjax;
+BASE_DECLARE_FEATURE(kAutofillEnableWithinFencedFrame);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillCreateDataForTest);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableWithinFencedFrame;
+BASE_DECLARE_FEATURE(kAutofillFillAndImportFromMoreFields);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillCreateDataForTest;
+BASE_DECLARE_FEATURE(kAutofillFillCreditCardAsPerFormatString);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillDisableFilling);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillDisableAddressImport);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillFillAndImportFromMoreFields;
+BASE_DECLARE_FEATURE(kAutofillDisableShadowHeuristics);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillFillCreditCardAsPerFormatString;
-COMPONENT_EXPORT(AUTOFILL) extern const base::Feature kAutofillDisableFilling;
+BASE_DECLARE_FEATURE(kAutofillEnableAccountWalletStorage);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillDisableAddressImport;
+BASE_DECLARE_FEATURE(kAutofillEnableAugmentedPhoneCountryCode);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillDisableShadowHeuristics;
+BASE_DECLARE_FEATURE(kAutofillEnableBirthdateParsing);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableAccountWalletStorage;
+BASE_DECLARE_FEATURE(kAutofillEnableDependentLocalityParsing);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableAugmentedPhoneCountryCode;
+BASE_DECLARE_FEATURE(kAutofillEnableExtendedAddressFormats);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableBirthdateParsing;
+BASE_DECLARE_FEATURE(kAutofillEnableImportWhenMultiplePhoneNumbers);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableDependentLocalityParsing;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableExtendedAddressFormats;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableImportWhenMultiplePhoneNumbers;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableMultiStepImports;
+BASE_DECLARE_FEATURE(kAutofillEnableMultiStepImports);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<bool> kAutofillEnableMultiStepImportComplements;
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<base::TimeDelta>
     kAutofillMultiStepImportCandidateTTL;
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableParsingEmptyPhoneNumberLabels;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableRankingFormula;
+BASE_DECLARE_FEATURE(kAutofillEnableParsingEmptyPhoneNumberLabels);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillEnableRankingFormula);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<int> kAutofillRankingFormulaUsageHalfLife;
 COMPONENT_EXPORT(AUTOFILL)
@@ -106,114 +101,101 @@
 extern const base::FeatureParam<int>
     kAutofillRankingFormulaVirtualCardBoostHalfLife;
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableSupportForApartmentNumbers;
+BASE_DECLARE_FEATURE(kAutofillEnableSupportForApartmentNumbers);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableLabelPrecedenceForTurkishAddresses;
+BASE_DECLARE_FEATURE(kAutofillEnableLabelPrecedenceForTurkishAddresses);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableNameSurenameParsing;
+BASE_DECLARE_FEATURE(kAutofillEnableNameSurenameParsing);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableProfileDeduplication;
+BASE_DECLARE_FEATURE(kAutofillEnableProfileDeduplication);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableSupportForParsingWithSharedLabels;
+BASE_DECLARE_FEATURE(kAutofillEnableSupportForParsingWithSharedLabels);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableSupportForMoreStructureInNames;
+BASE_DECLARE_FEATURE(kAutofillEnableSupportForMoreStructureInAddresses);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableSupportForMoreStructureInAddresses;
+BASE_DECLARE_FEATURE(kAutofillEnableSupportForMergingSubsetNames);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableSupportForMergingSubsetNames;
+BASE_DECLARE_FEATURE(kAutofillEnableSupportForHonorificPrefixes);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillExtractAllDatalists);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableSupportForHonorificPrefixes;
+BASE_DECLARE_FEATURE(kAutofillEnableSupportForPhoneNumberTrunkTypes);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillExtractAllDatalists;
+BASE_DECLARE_FEATURE(kAutofillRefillModifiedCreditCardExpirationDates);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableSupportForPhoneNumberTrunkTypes;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillRefillModifiedCreditCardExpirationDates;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillTypeSpecificPopupWidth;
+BASE_DECLARE_FEATURE(kAutofillTypeSpecificPopupWidth);
 COMPONENT_EXPORT(AUTOFILL)
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillIgnoreUnmappableAutocompleteValues;
+BASE_DECLARE_FEATURE(kAutofillIgnoreUnmappableAutocompleteValues);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillImprovedLabelForInference;
+BASE_DECLARE_FEATURE(kAutofillImprovedLabelForInference);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillHighlightOnlyChangedValuesInPreviewMode;
+BASE_DECLARE_FEATURE(kAutofillHighlightOnlyChangedValuesInPreviewMode);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillServerTypeTakesPrecedence;
+BASE_DECLARE_FEATURE(kAutofillServerTypeTakesPrecedence);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillKeyboardAccessory);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillLabelAffixRemoval);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillKeyboardAccessory;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillLabelAffixRemoval;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillCenterAlignedSuggestions;
+BASE_DECLARE_FEATURE(kAutofillCenterAlignedSuggestions);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<int>
     kAutofillMaximumPixelsToMoveSuggestionopupToCenter;
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<int>
     kAutofillMaxiumWidthPercentageToMoveSuggestionPopupToCenter;
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillPageLanguageDetection);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillParseAsync);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillPageLanguageDetection;
+BASE_DECLARE_FEATURE(kAutofillParseNameAsAutocompleteType);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillParseAsync;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillParseNameAsAutocompleteType;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillParsingPatternProvider;
+BASE_DECLARE_FEATURE(kAutofillParsingPatternProvider);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<std::string>
     kAutofillParsingPatternActiveSource;
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillPreventOverridingPrefilledValues;
+BASE_DECLARE_FEATURE(kAutofillPreventOverridingPrefilledValues);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillProbableFormSubmissionInBrowser;
+BASE_DECLARE_FEATURE(kAutofillProbableFormSubmissionInBrowser);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillRationalizeStreetAddressAndAddressLine;
+BASE_DECLARE_FEATURE(kAutofillRationalizeStreetAddressAndAddressLine);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillRemoveInvalidPhoneNumberOnImport;
+BASE_DECLARE_FEATURE(kAutofillRemoveInvalidPhoneNumberOnImport);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillRemoveInaccessibleProfileValuesOnStartup;
+BASE_DECLARE_FEATURE(kAutofillRemoveInaccessibleProfileValuesOnStartup);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillRetrieveOverallPredictionsFromCache;
-COMPONENT_EXPORT(AUTOFILL) extern const base::Feature kAutofillSaveAndFillVPA;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillServerBehaviors;
+BASE_DECLARE_FEATURE(kAutofillRetrieveOverallPredictionsFromCache);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillSaveAndFillVPA);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillServerBehaviors);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<int> kAutofillServerBehaviorsParam;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillServerCommunication;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillSharedAutofill;
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillServerCommunication);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillSharedAutofill);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<bool> kAutofillSharedAutofillRelaxedParam;
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillShowManualFallbackInContextMenu;
+BASE_DECLARE_FEATURE(kAutofillShowManualFallbackInContextMenu);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillShowTypePredictions);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillShowTypePredictions;
+BASE_DECLARE_FEATURE(kAutofillSilentProfileUpdateForInsufficientImport);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillSilentProfileUpdateForInsufficientImport;
+BASE_DECLARE_FEATURE(kAutofillSkipComparingInferredLabels);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillTokenPrefixMatching);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillUploadThrottling);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillSkipComparingInferredLabels;
+BASE_DECLARE_FEATURE(kAutofillUseAlternativeStateNameMap);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillTokenPrefixMatching;
-COMPONENT_EXPORT(AUTOFILL) extern const base::Feature kAutofillUploadThrottling;
+BASE_DECLARE_FEATURE(kAutofillUseImprovedLabelDisambiguation);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillUseAlternativeStateNameMap;
+BASE_DECLARE_FEATURE(kAutofillUseNewSectioningMethod);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillUseImprovedLabelDisambiguation;
+BASE_DECLARE_FEATURE(kAutofillUseParameterizedSectioning);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillUseNewSectioningMethod;
+BASE_DECLARE_FEATURE(kAutofillRefillByFormRendererId);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillUseParameterizedSectioning;
+BASE_DECLARE_FEATURE(kAutofillUseConsistentPopupSettingsIcons);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillRefillByFormRendererId;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillUseConsistentPopupSettingsIcons;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillVisualImprovementsForSuggestionUi;
+BASE_DECLARE_FEATURE(kAutofillVisualImprovementsForSuggestionUi);
 
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillEnableAblationStudy;
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillEnableAblationStudy);
 COMPONENT_EXPORT(AUTOFILL)
 extern const base::FeatureParam<bool>
     kAutofillAblationStudyEnabledForAddressesParam;
@@ -225,17 +207,15 @@
     kAutofillAblationStudyAblationWeightPerMilleParam;
 
 #if BUILDFLAG(IS_ANDROID)
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillManualFallbackAndroid);
+COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillRefreshStyleAndroid);
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillManualFallbackAndroid;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillRefreshStyleAndroid;
-COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillTouchToFillForCreditCardsAndroid;
+BASE_DECLARE_FEATURE(kAutofillTouchToFillForCreditCardsAndroid);
 #endif  // BUILDFLAG(IS_ANDROID)
 
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
 COMPONENT_EXPORT(AUTOFILL)
-extern const base::Feature kAutofillUseMobileLabelDisambiguation;
+BASE_DECLARE_FEATURE(kAutofillUseMobileLabelDisambiguation);
 COMPONENT_EXPORT(AUTOFILL)
 extern const char kAutofillUseMobileLabelDisambiguationParameterName[];
 COMPONENT_EXPORT(AUTOFILL)
diff --git a/components/autofill/core/common/autofill_payments_features.cc b/components/autofill/core/common/autofill_payments_features.cc
index 2bc4109..7712258 100644
--- a/components/autofill/core/common/autofill_payments_features.cc
+++ b/components/autofill/core/common/autofill_payments_features.cc
@@ -25,182 +25,195 @@
 
 // Controls whether or not Autofill client will populate form with CPAN and
 // dCVV, rather than FPAN.
-const base::Feature kAutofillAlwaysReturnCloudTokenizedCard{
-    "AutofillAlwaysReturnCloudTokenizedCard",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAlwaysReturnCloudTokenizedCard,
+             "AutofillAlwaysReturnCloudTokenizedCard",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, manual fallback will be auto-triggered on form interaction in
 // the case where autofill failed to fill a credit card form accurately.
-const base::Feature kAutofillAutoTriggerManualFallbackForCards{
-    "AutofillAutoTriggerManualFallbackForCards",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillAutoTriggerManualFallbackForCards,
+             "AutofillAutoTriggerManualFallbackForCards",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the use of platform authenticators through WebAuthn to retrieve
 // credit cards from Google payments.
-const base::Feature kAutofillCreditCardAuthentication{
-  "AutofillCreditCardAuthentication",
+BASE_FEATURE(kAutofillCreditCardAuthentication,
+             "AutofillCreditCardAuthentication",
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID)
-      // Better Auth project is fully launched on Win/Mac/Clank.
-      base::FEATURE_ENABLED_BY_DEFAULT
+             // Better Auth project is fully launched on Win/Mac/Clank.
+             base::FEATURE_ENABLED_BY_DEFAULT
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #endif
-};
+);
 
 // When enabled, card art images (instead of network icons) will be shown in
 // Payments Autofill UI.
-const base::Feature kAutofillEnableCardArtImage{
-    "AutofillEnableCardArtImage", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableCardArtImage,
+             "AutofillEnableCardArtImage",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, card product name (instead of issuer network) will be shown in
 // Payments Autofill UI.
-const base::Feature kAutofillEnableCardProductName{
-    "AutofillEnableCardProductName", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableCardProductName,
+             "AutofillEnableCardProductName",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, the GetDetailsForEnrollResponseDetails in the
 // UploadCardResponseDetails will be parsed, which will allow the Virtual Card
 // Enrollment flow to skip making a new GetDetailsForEnroll request. This is an
 // optimization to improve the latency of the Virtual Card Enrollment flow.
-const base::Feature
-    kAutofillEnableGetDetailsForEnrollParsingInUploadCardResponse{
-        "AutofillEnableGetDetailsForEnrollParsingInUploadCardResponse",
-        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableGetDetailsForEnrollParsingInUploadCardResponse,
+             "AutofillEnableGetDetailsForEnrollParsingInUploadCardResponse",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, a progress dialog will display while authenticating with FIDO.
 // TODO(crbug.com/1337380): Clean up kAutofillEnableFIDOProgressDialog when it's
 // fully rolled out.
-const base::Feature kAutofillEnableFIDOProgressDialog{
-    "AutofillEnableFIDOProgressDialog", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableFIDOProgressDialog,
+             "AutofillEnableFIDOProgressDialog",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, enable manual falling component for virtual cards on Android.
-const base::Feature kAutofillEnableManualFallbackForVirtualCards{
-    "AutofillEnableManualFallbackForVirtualCards",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableManualFallbackForVirtualCards,
+             "AutofillEnableManualFallbackForVirtualCards",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, if the user attempts to use a virtual card on a website
 // where the merchant has opted out of virtual cards, a descriptive error
 // message will appear letting the user know that the merchant has opted
 // out.
-const base::Feature kAutofillEnableMerchantOptOutErrorDialog{
-    "AutofillEnableMerchantOptOutErrorDialog",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableMerchantOptOutErrorDialog,
+             "AutofillEnableMerchantOptOutErrorDialog",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, a notification will be displayed on page navigation if the
 // domain has an eligible merchant promo code offer or reward.
-const base::Feature kAutofillEnableOfferNotificationForPromoCodes{
-    "AutofillEnableOfferNotificationForPromoCodes",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableOfferNotificationForPromoCodes,
+             "AutofillEnableOfferNotificationForPromoCodes",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, offers will be displayed in the Clank keyboard accessory during
 // downstream.
-const base::Feature kAutofillEnableOffersInClankKeyboardAccessory{
-    "AutofillEnableOffersInClankKeyboardAccessory",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableOffersInClankKeyboardAccessory,
+             "AutofillEnableOffersInClankKeyboardAccessory",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, some extra metrics logging for Autofill Downstream will start.
-const base::Feature kAutofillEnableRemadeDownstreamMetrics{
-    "AutofillEnableRemadeDownstreamMetrics", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableRemadeDownstreamMetrics,
+             "AutofillEnableRemadeDownstreamMetrics",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Controls whether we send billing customer number in GetUploadDetails
 // preflight call.
-const base::Feature kAutofillEnableSendingBcnInGetUploadDetails{
-    "AutofillEnableSendingBcnInGetUploadDetails",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableSendingBcnInGetUploadDetails,
+             "AutofillEnableSendingBcnInGetUploadDetails",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, if the user interacts with the manual fallback bottom sheet
 // on Android, it'll remain sticky until the user dismisses it.
-const base::Feature kAutofillEnableStickyManualFallbackForCards{
-    "AutofillEnableStickyManualFallbackForCards",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableStickyManualFallbackForCards,
+             "AutofillEnableStickyManualFallbackForCards",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, UnmaskCardRequest will set instrument id, which is Chrome-side
 // field for non-legacy ID.
-const base::Feature kAutofillEnableUnmaskCardRequestSetInstrumentId{
-    "AutofillEnableUnmaskCardRequestSetInstrumentId",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableUnmaskCardRequestSetInstrumentId,
+             "AutofillEnableUnmaskCardRequestSetInstrumentId",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, the user will have the ability to update the virtual card
 // enrollment of a credit card through their chrome browser after certain
 // autofill flows (for example, downstream and upstream), and from the settings
 // page.
-const base::Feature kAutofillEnableUpdateVirtualCardEnrollment{
-  "AutofillEnableUpdateVirtualCardEnrollment",
+BASE_FEATURE(kAutofillEnableUpdateVirtualCardEnrollment,
+             "AutofillEnableUpdateVirtualCardEnrollment",
 #if BUILDFLAG(IS_IOS)
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
 // When enabled, the option of using cloud token virtual card will be offered
 // when all requirements are met.
-const base::Feature kAutofillEnableVirtualCard{
-    "AutofillEnableVirtualCard", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableVirtualCard,
+             "AutofillEnableVirtualCard",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, after a successful authentication to autofill a virtual card,
 // the user will be prompted to opt-in to FIDO if the user is not currently
 // opted-in, and if the user is opted-in already and the virtual card is FIDO
 // eligible the user will be prompted to register the virtual card into FIDO.
-const base::Feature kAutofillEnableVirtualCardFidoEnrollment(
-    "AutofillEnableVirtualCardFidoEnrollment",
-    base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kAutofillEnableVirtualCardFidoEnrollment,
+             "AutofillEnableVirtualCardFidoEnrollment",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, in the payments settings page on desktop, virtual card
 // enrollment management will be provided so that the user can enroll/unenroll a
 // card in virtual card.
-const base::Feature kAutofillEnableVirtualCardManagementInDesktopSettingsPage{
-    "AutofillEnableVirtualCardManagementInDesktopSettingsPage",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableVirtualCardManagementInDesktopSettingsPage,
+             "AutofillEnableVirtualCardManagementInDesktopSettingsPage",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, Chrome will show metadata along with other card information
 // when the virtual card is presented to users.
-const base::Feature kAutofillEnableVirtualCardMetadata{
-    "AutofillEnableVirtualCardMetadata", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnableVirtualCardMetadata,
+             "AutofillEnableVirtualCardMetadata",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, if the previous feature offer was declined, a delay will be
 // added before Chrome attempts to show offer again.
-const base::Feature kAutofillEnforceDelaysInStrikeDatabase{
-    "AutofillEnforceDelaysInStrikeDatabase", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillEnforceDelaysInStrikeDatabase,
+             "AutofillEnforceDelaysInStrikeDatabase",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Autofill will attempt to fill IBAN (International Bank Account
 // Number) fields when data is available.
-const base::Feature kAutofillFillIbanFields{"AutofillFillIbanFields",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillFillIbanFields,
+             "AutofillFillIbanFields",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Autofill will attempt to fill merchant promo/coupon/gift code
 // fields when data is available.
-const base::Feature kAutofillFillMerchantPromoCodeFields{
-    "AutofillFillMerchantPromoCodeFields", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillFillMerchantPromoCodeFields,
+             "AutofillFillMerchantPromoCodeFields",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Autofill will attempt to find International Bank Account Number
 // (IBAN) fields when parsing forms.
-const base::Feature kAutofillParseIBANFields{"AutofillParseIBANFields",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillParseIBANFields,
+             "AutofillParseIBANFields",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Autofill will attempt to find merchant promo/coupon/gift code
 // fields when parsing forms.
-const base::Feature kAutofillParseMerchantPromoCodeFields{
-    "AutofillParseMerchantPromoCodeFields", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillParseMerchantPromoCodeFields,
+             "AutofillParseMerchantPromoCodeFields",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Autofill will attempt to find standalone CVC fields for VCN
 // card on file when parsing forms.
-const base::Feature kAutofillParseVcnCardOnFileStandaloneCvcFields{
-    "AutofillParseVcnCardOnFileStandaloneCvcFields",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillParseVcnCardOnFileStandaloneCvcFields,
+             "AutofillParseVcnCardOnFileStandaloneCvcFields",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, the Save Card infobar will be dismissed by a user initiated
 // navigation other than one caused by submitted form.
-const base::Feature kAutofillSaveCardDismissOnNavigation{
-    "AutofillSaveCardDismissOnNavigation", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillSaveCardDismissOnNavigation,
+             "AutofillSaveCardDismissOnNavigation",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, the Save Card infobar supports editing before submitting.
-const base::Feature kAutofillSaveCardInfobarEditSupport{
-    "AutofillSaveCardInfobarEditSupport", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillSaveCardInfobarEditSupport,
+             "AutofillSaveCardInfobarEditSupport",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, Chrome will display experimental UI variants to the user
 // during the upload save card process.
-const base::Feature kAutofillSaveCardUiExperiment{
-    "AutofillSaveCardUiExperiment", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillSaveCardUiExperiment,
+             "AutofillSaveCardUiExperiment",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // This will select one of the options for the save card UI bubble which we
 // want to display to the user. The value will be an integer(number).
@@ -210,29 +223,31 @@
 
 // When enabled, the entire PAN and the CVC details of the unmasked cached card
 // will be shown in the manual filling view.
-const base::Feature kAutofillShowUnmaskedCachedCardInManualFillingView{
-    "AutofillShowUnmaskedCachedCardInManualFillingView",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillShowUnmaskedCachedCardInManualFillingView,
+             "AutofillShowUnmaskedCachedCardInManualFillingView",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls offering credit card upload to Google Payments. Cannot ever be
 // ENABLED_BY_DEFAULT because the feature state depends on the user's country.
 // The set of launched countries is listed in autofill_experiments.cc, and this
 // flag remains as a way to easily enable upload credit card save for testers,
 // as well as enable non-fully-launched countries on a trial basis.
-const base::Feature kAutofillUpstream{"AutofillUpstream",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUpstream,
+             "AutofillUpstream",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // When enabled, Chrome allows credit card upload to Google Payments if the
 // user's email domain is from a common email provider (thus unlikely to be an
 // enterprise or education user).
-const base::Feature kAutofillUpstreamAllowAdditionalEmailDomains{
-    "AutofillUpstreamAllowAdditionalEmailDomains",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUpstreamAllowAdditionalEmailDomains,
+             "AutofillUpstreamAllowAdditionalEmailDomains",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When enabled, Chrome allows credit card upload to Google Payments, no matter
 // the user's email domain.
-const base::Feature kAutofillUpstreamAllowAllEmailDomains{
-    "AutofillUpstreamAllowAllEmailDomains", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAutofillUpstreamAllowAllEmailDomains,
+             "AutofillUpstreamAllowAllEmailDomains",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // The delay required since the last strike before offering another virtual card
 // enrollment attempt.
diff --git a/components/autofill/core/common/autofill_payments_features.h b/components/autofill/core/common/autofill_payments_features.h
index 0bb0ba3..8c44dea 100644
--- a/components/autofill/core/common/autofill_payments_features.h
+++ b/components/autofill/core/common/autofill_payments_features.h
@@ -13,43 +13,42 @@
 namespace features {
 
 // All features in alphabetical order.
-extern const base::Feature kAutofillAlwaysReturnCloudTokenizedCard;
-extern const base::Feature kAutofillAutoTriggerManualFallbackForCards;
-extern const base::Feature kAutofillCreditCardAuthentication;
-extern const base::Feature kAutofillEnableCardArtImage;
-extern const base::Feature kAutofillEnableCardProductName;
-extern const base::Feature
-    kAutofillEnableGetDetailsForEnrollParsingInUploadCardResponse;
-extern const base::Feature kAutofillEnableFIDOProgressDialog;
-extern const base::Feature kAutofillEnableManualFallbackForVirtualCards;
-extern const base::Feature kAutofillEnableMerchantOptOutErrorDialog;
-extern const base::Feature kAutofillEnableOfferNotificationForPromoCodes;
-extern const base::Feature kAutofillEnableOffersInClankKeyboardAccessory;
-extern const base::Feature kAutofillEnableRemadeDownstreamMetrics;
-extern const base::Feature kAutofillEnableSendingBcnInGetUploadDetails;
-extern const base::Feature kAutofillEnableStickyManualFallbackForCards;
-extern const base::Feature kAutofillEnableUnmaskCardRequestSetInstrumentId;
-extern const base::Feature kAutofillEnableUpdateVirtualCardEnrollment;
-extern const base::Feature kAutofillEnableVirtualCard;
-extern const base::Feature kAutofillEnableVirtualCardFidoEnrollment;
-extern const base::Feature
-    kAutofillEnableVirtualCardManagementInDesktopSettingsPage;
-extern const base::Feature kAutofillEnableVirtualCardMetadata;
-extern const base::Feature kAutofillEnforceDelaysInStrikeDatabase;
-extern const base::Feature kAutofillFillIbanFields;
-extern const base::Feature kAutofillFillMerchantPromoCodeFields;
-extern const base::Feature kAutofillParseIBANFields;
-extern const base::Feature kAutofillParseMerchantPromoCodeFields;
-extern const base::Feature kAutofillParseVcnCardOnFileStandaloneCvcFields;
-extern const base::Feature kAutofillSaveCardDismissOnNavigation;
-extern const base::Feature kAutofillSaveCardInfobarEditSupport;
-extern const base::Feature kAutofillSaveCardUiExperiment;
+BASE_DECLARE_FEATURE(kAutofillAlwaysReturnCloudTokenizedCard);
+BASE_DECLARE_FEATURE(kAutofillAutoTriggerManualFallbackForCards);
+BASE_DECLARE_FEATURE(kAutofillCreditCardAuthentication);
+BASE_DECLARE_FEATURE(kAutofillEnableCardArtImage);
+BASE_DECLARE_FEATURE(kAutofillEnableCardProductName);
+BASE_DECLARE_FEATURE(
+    kAutofillEnableGetDetailsForEnrollParsingInUploadCardResponse);
+BASE_DECLARE_FEATURE(kAutofillEnableFIDOProgressDialog);
+BASE_DECLARE_FEATURE(kAutofillEnableManualFallbackForVirtualCards);
+BASE_DECLARE_FEATURE(kAutofillEnableMerchantOptOutErrorDialog);
+BASE_DECLARE_FEATURE(kAutofillEnableOfferNotificationForPromoCodes);
+BASE_DECLARE_FEATURE(kAutofillEnableOffersInClankKeyboardAccessory);
+BASE_DECLARE_FEATURE(kAutofillEnableRemadeDownstreamMetrics);
+BASE_DECLARE_FEATURE(kAutofillEnableSendingBcnInGetUploadDetails);
+BASE_DECLARE_FEATURE(kAutofillEnableStickyManualFallbackForCards);
+BASE_DECLARE_FEATURE(kAutofillEnableUnmaskCardRequestSetInstrumentId);
+BASE_DECLARE_FEATURE(kAutofillEnableUpdateVirtualCardEnrollment);
+BASE_DECLARE_FEATURE(kAutofillEnableVirtualCard);
+BASE_DECLARE_FEATURE(kAutofillEnableVirtualCardFidoEnrollment);
+BASE_DECLARE_FEATURE(kAutofillEnableVirtualCardManagementInDesktopSettingsPage);
+BASE_DECLARE_FEATURE(kAutofillEnableVirtualCardMetadata);
+BASE_DECLARE_FEATURE(kAutofillEnforceDelaysInStrikeDatabase);
+BASE_DECLARE_FEATURE(kAutofillFillIbanFields);
+BASE_DECLARE_FEATURE(kAutofillFillMerchantPromoCodeFields);
+BASE_DECLARE_FEATURE(kAutofillParseIBANFields);
+BASE_DECLARE_FEATURE(kAutofillParseMerchantPromoCodeFields);
+BASE_DECLARE_FEATURE(kAutofillParseVcnCardOnFileStandaloneCvcFields);
+BASE_DECLARE_FEATURE(kAutofillSaveCardDismissOnNavigation);
+BASE_DECLARE_FEATURE(kAutofillSaveCardInfobarEditSupport);
+BASE_DECLARE_FEATURE(kAutofillSaveCardUiExperiment);
 extern const base::FeatureParam<int>
     kAutofillSaveCardUiExperimentSelectorInNumber;
-extern const base::Feature kAutofillShowUnmaskedCachedCardInManualFillingView;
-extern const base::Feature kAutofillUpstream;
-extern const base::Feature kAutofillUpstreamAllowAdditionalEmailDomains;
-extern const base::Feature kAutofillUpstreamAllowAllEmailDomains;
+BASE_DECLARE_FEATURE(kAutofillShowUnmaskedCachedCardInManualFillingView);
+BASE_DECLARE_FEATURE(kAutofillUpstream);
+BASE_DECLARE_FEATURE(kAutofillUpstreamAllowAdditionalEmailDomains);
+BASE_DECLARE_FEATURE(kAutofillUpstreamAllowAllEmailDomains);
 extern const base::FeatureParam<int>
     kAutofillVirtualCardEnrollDelayInStrikeDatabaseInDays;
 
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
index 8937a1b9..3742c20 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Saytların hərəkət sensorlarınıza daxil olmasına icazə verin (tövsiyə edilir)</translation>
 <translation id="5050380848339752099">Bu sayt Anonim rejimdə olmayan tətbiqlə məlumat paylaşmaq üzrədir.</translation>
 <translation id="5063480226653192405">Istifadə</translation>
+<translation id="5091013926750941408">Mobil sayt</translation>
 <translation id="509133520954049755">Masaüstü görünüş tələb edin</translation>
 <translation id="5100237604440890931">Yığcamlaşdırıldı - genişləndirmək üçün klikləyin.</translation>
 <translation id="5123685120097942451">Aanonim tab</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 a2950d2..5517cff 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Дазваляць сайтам доступ да датчыкаў руху (рэкамендуецца)</translation>
 <translation id="5050380848339752099">Гэты сайт будзе абагульваць звесткі з праграмай па-за рэжымам інкогніта.</translation>
 <translation id="5063480226653192405">Выкарыстанне</translation>
+<translation id="5091013926750941408">Мабільны сайт</translation>
 <translation id="509133520954049755">Запытваць версію для камп'ютараў</translation>
 <translation id="5100237604440890931">Згорнута – каб разгарнуць, націсніце тут.</translation>
 <translation id="5123685120097942451">Укладка інкогніта</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb
index a65acc2..9be54a96 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb
@@ -182,7 +182,7 @@
 <translation id="5048398596102334565">Dozvoli web lokacijama pristup senzorima pokreta (preporučeno)</translation>
 <translation id="5050380848339752099">Ova web lokacija će podijeliti informacije s aplikacijom izvan anonimnog načina rada.</translation>
 <translation id="5063480226653192405">Korištenje</translation>
-<translation id="5091013926750941408">Web-lokacija za mobilne uređaje</translation>
+<translation id="5091013926750941408">Web lokacija za mobilne uređaje</translation>
 <translation id="509133520954049755">Zatraži prikaz na računaru</translation>
 <translation id="5100237604440890931">Suženo – kliknite da proširite.</translation>
 <translation id="5123685120097942451">Anonimna kartica</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
index abc6122..11d303c8 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Όλες οι επαφές</translation>
 <translation id="3362437373201486687">Σάρωση για συσκευές Bluetooth</translation>
 <translation id="3386292677130313581">Να γίνεται ερώτηση προτού επιτραπεί η κοινοποίηση της τοποθεσίας σας σε ιστότοπους (συνιστάται)</translation>
+<translation id="3521663503435878242">Ιστότοποι του τομέα <ph name="DOMAIN" /></translation>
 <translation id="3538390592868664640">Αποκλείστε ιστοτόπους από τη δημιουργία ενός τρισδιάστατου χάρτη του περιβάλλοντα χώρου σας ή την παρακολούθηση της θέσης της κάμερας.</translation>
 <translation id="3551268116566418498">Έξοδος από ανώνυμη περιήγηση;</translation>
 <translation id="3586500876634962664">Χρήση κάμερας και μικροφώνου</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb
index 9cb8fa8..404999a 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_es-419.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Permitir que los sitios accedan a los sensores de movimiento (recomendado)</translation>
 <translation id="5050380848339752099">Este sitio está a punto de compartir información con una app fuera del modo Incógnito.</translation>
 <translation id="5063480226653192405">Uso</translation>
+<translation id="5091013926750941408">Sitio para móviles</translation>
 <translation id="509133520954049755">Solicitar vista para computadoras de escritorio</translation>
 <translation id="5100237604440890931">Contraído; haz clic para expandir.</translation>
 <translation id="5123685120097942451">Pestaña de incógnito</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 746c679f..337072c 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
@@ -211,7 +211,7 @@
 <translation id="5516455585884385570">باز کردن تنظیمات اعلان</translation>
 <translation id="5527111080432883924">قبل از اینکه به سایت‌ها اجازه داده شود به نوشتار و تصاویر بریده‌دان دسترسی پیدا کنند سؤال شود (توصیه می‌شود)</translation>
 <translation id="5553374991681107062">جدیدترین</translation>
-<translation id="5556459405103347317">تازه‌سازی</translation>
+<translation id="5556459405103347317">بار کردن مجدد</translation>
 <translation id="5596627076506792578">گزینه‌های بیشتر</translation>
 <translation id="5649053991847567735">بارگیری‌های خودکار</translation>
 <translation id="5668404140385795438">لغو درخواست وب‌سایت برای جلوگیری از بزرگ‌نمایی</translation>
@@ -286,7 +286,7 @@
 <translation id="7087918508125750058"><ph name="ITEM_COUNT" /> مورد انتخاب شد.  گزینه‌ها در نزدیکی بالای صفحه دردسترس است</translation>
 <translation id="7141896414559753902">مسدود کردن نمایش پنجره‌های بازشو و هدایت‌ها در سایت‌ها (توصیه می‌شود)</translation>
 <translation id="7176368934862295254"><ph name="KILOBYTES" /> کیلوبایت</translation>
-<translation id="7180611975245234373">بازخوانی</translation>
+<translation id="7180611975245234373">بازآوری</translation>
 <translation id="7203150201908454328">باز شده</translation>
 <translation id="723171743924126238">انتخاب تصاویر</translation>
 <translation id="7243308994586599757">گزینه‌ها در نزدیک پایین صفحه نمایش در دسترس هستند</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 4506fb4b..b9646b6 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Anna sivustojen käyttää liiketunnistimien lukemia (suositus)</translation>
 <translation id="5050380848339752099">Tämä sivusto aikoo jakaa tietoja sovellukselle incognito-tilan ulkopuolella.</translation>
 <translation id="5063480226653192405">Käyttö</translation>
+<translation id="5091013926750941408">Mobiilisivusto</translation>
 <translation id="509133520954049755">Pyydä tietokonenäkymää</translation>
 <translation id="5100237604440890931">Tiivistetty – laajenna klikkaamalla.</translation>
 <translation id="5123685120097942451">Incognito-välilehti</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb
index dff943e..14791f3 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fr.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Autoriser les sites à accéder à vos capteurs de mouvement (recommandé)</translation>
 <translation id="5050380848339752099">Ce site s'apprête à partager des informations avec une appli en dehors du mode navigation privée.</translation>
 <translation id="5063480226653192405">Utilisation</translation>
+<translation id="5091013926750941408">Site mobile</translation>
 <translation id="509133520954049755">Demander l'affichage sur ordinateur</translation>
 <translation id="5100237604440890931">Réduit – Cliquer pour développer</translation>
 <translation id="5123685120097942451">Onglet de navigation privée</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb
index 5730b011..923b29a 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_gl.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Permite aos sitios acceder aos teus sensores de movemento (recomendado)</translation>
 <translation id="5050380848339752099">Neste sitio estase a piques de compartir información cunha aplicación fóra do modo de incógnito.</translation>
 <translation id="5063480226653192405">Uso</translation>
+<translation id="5091013926750941408">Sitio para móbiles</translation>
 <translation id="509133520954049755">Solicita a vista para ordenadores</translation>
 <translation id="5100237604440890931">Vista contraída (fai clic para ampliala).</translation>
 <translation id="5123685120097942451">Pestana do modo de incógnito</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 93805f2..b64df0eb 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
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">બધા સંપર્કો</translation>
 <translation id="3362437373201486687">બ્લૂટૂથ ડિવાઇસ માટે સ્કૅન કરી રહ્યાં છીએ</translation>
 <translation id="3386292677130313581">સાઇટને તમારા સ્થાનને જાણવાની મંજૂરી આપતાં પહેલાં પૂછો (સુઝાવ આપેલો છે)</translation>
+<translation id="3521663503435878242"><ph name="DOMAIN" /> હેઠળની સાઇટ</translation>
 <translation id="3538390592868664640">કોઈ સાઇટને તમારી આજુબાજુનો 3D નકશો બનાવવા અથવા કૅમેરાના સ્ટેટસને ટ્રૅક કરી શકવા માટે બ્લૉક કરો</translation>
 <translation id="3551268116566418498">છૂપો મોડ છોડીએ?</translation>
 <translation id="3586500876634962664">કૅમેરા અને માઇક્રોફોનનો ઉપયોગ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb
index a184f26..8d5fa98 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Թույլ տալ կայքերին օգտագործել ձեր տվիչները (խորհուրդ է տրվում)</translation>
 <translation id="5050380848339752099">Այս կայքը պատրաստվում է ուղարկել տվյալները մի հավելվածի, որն ինկոգնիտո ռեժիմից դուրս է գտնվում։</translation>
 <translation id="5063480226653192405">Վիճակագրություն</translation>
+<translation id="5091013926750941408">Կայքի բջջային տարբերակ</translation>
 <translation id="509133520954049755">Համակարգչային տարբերակի հարցում</translation>
 <translation id="5100237604440890931">Կոծկված - ընդլայնելու համար սեղմեք</translation>
 <translation id="5123685120097942451">Ինկոգնիտո ներդիր</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 f0e5d428..42b0703 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Leyfa vefsvæðum að fá aðgang að hreyfiskynjurunum (ráðlagt)</translation>
 <translation id="5050380848339752099">Vefsvæðið er við það að deila upplýsingum með forriti fyrir utan huliðsstillingu.</translation>
 <translation id="5063480226653192405">Notkun</translation>
+<translation id="5091013926750941408">Snjallvefur</translation>
 <translation id="509133520954049755">Biðja um tölvuútgáfu</translation>
 <translation id="5100237604440890931">Minnkað – smelltu til að stækka.</translation>
 <translation id="5123685120097942451">Huliðsflipi</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb
index d61f3a1..4c06ae5 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">საიტებისთვის მოძრაობის სენსორებზე წვდომის დაშვება (რეკომენდებული)</translation>
 <translation id="5050380848339752099">ეს საიტი აპირებს, ინკოგნიტო რეჟიმის გარეთ გაუზიაროს ინფორმაცია აპს.</translation>
 <translation id="5063480226653192405">გამოყენება</translation>
+<translation id="5091013926750941408">მობილური საიტი</translation>
 <translation id="509133520954049755">დესკტოპის ხედის მოთხოვნა</translation>
 <translation id="5100237604440890931">ჩაკეცილია — დააწკაპუნეთ გასაშლელად.</translation>
 <translation id="5123685120097942451">ინკოგნიტო ჩანართი</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 6467764e..1b50e219 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Сайттарга сенсорлорду колдонууга уруксат берүү (сунушталат)</translation>
 <translation id="5050380848339752099">Бул сайт жашыруун режимден сырткары колдонмо менен маалыматты бөлүшкөнү жатат.</translation>
 <translation id="5063480226653192405">Колдонулушу</translation>
+<translation id="5091013926750941408">Мобилдик түзмөктөгү сайт</translation>
 <translation id="509133520954049755">Компьютердик версиясын сурануу</translation>
 <translation id="5100237604440890931">Жыйналган – жайып көрсөтүү үчүн чыкылдатыңыз.</translation>
 <translation id="5123685120097942451">Жашыруун өтмөк</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 82a11565..fc12f7f 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">ອະນຸຍາດໃຫ້ເວັບໄຊເຂົ້າເຖິງເຊັນເຊີກວດຈັບການເຄື່ອນໄຫວ (ແນະນຳ)</translation>
 <translation id="5050380848339752099">ເວັບໄຊນີ້ກຳລັງຈະແບ່ງປັນຂໍ້ມູນກັບແອັບນອກໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ.</translation>
 <translation id="5063480226653192405">ການນໍາໃຊ້</translation>
+<translation id="5091013926750941408">ເວັບໄຊມືຖື</translation>
 <translation id="509133520954049755">ຮ້ອງຂໍມຸມມອງເດັສທັອບ</translation>
 <translation id="5100237604440890931">ຫຍໍ້ລົງແລ້ວ - ຄລິກ​ເພື່ອ​ຂະ​ຫຍາຍ.</translation>
 <translation id="5123685120097942451">ແຖບທີ່ບໍ່ເຜີຍຕົວຕົນ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb
index a630759..8e3c787 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Atļaut vietnēm piekļūt kustību sensoriem (ieteicams)</translation>
 <translation id="5050380848339752099">Šī vietne tūlīt kopīgos informāciju ar lietotni, kas nav inkognito režīmā.</translation>
 <translation id="5063480226653192405">Lietojums</translation>
+<translation id="5091013926750941408">Vietne mobilajām ierīcēm</translation>
 <translation id="509133520954049755">Pieprasīt skatu datorā</translation>
 <translation id="5100237604440890931">Sakļauts — noklikšķiniet, lai izvērstu.</translation>
 <translation id="5123685120097942451">Inkognito cilne</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb
index 0d07900..36ff9ca 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Сите контакти</translation>
 <translation id="3362437373201486687">Скенира за уреди со Bluetooth</translation>
 <translation id="3386292677130313581">Прашај пред да дозволиш сајтовите да ја дознаат локацијата (се препорачува)</translation>
+<translation id="3521663503435878242">Сајт под <ph name="DOMAIN" /></translation>
 <translation id="3538390592868664640">Не дозволувај им на сајтовите да создаваат 3D-карта на опкружувањето или да ја следат позицијата на камерата</translation>
 <translation id="3551268116566418498">Да се излезе од „Инкогнито“?</translation>
 <translation id="3586500876634962664">Користење камера и микрофон</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 495570c..0d90c272 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
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Бүх харилцагч</translation>
 <translation id="3362437373201486687">Bluetooth төхөөрөмжүүдийг скан хийж байна</translation>
 <translation id="3386292677130313581">Сайтууд байршил мэдэх зөвшөөрөл авах (санал болгосон)</translation>
+<translation id="3521663503435878242"><ph name="DOMAIN" />-н сайтууд</translation>
 <translation id="3538390592868664640">Сайтуудад таны эргэн тойрны 3D газрын зургийг үүсгэх эсвэл камерын хөдөлгөөнийг хянахыг хориглох</translation>
 <translation id="3551268116566418498">Нууцлалтай горимоос гарах уу?</translation>
 <translation id="3586500876634962664">Камер болон микрофоны ашиглалт</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 cdd308e..454d9207 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Benarkan tapak mengakses penderia gerakan (disyorkan)</translation>
 <translation id="5050380848339752099">Laman ini akan berkongsi maklumat dengan apl di luar mod Inkognito.</translation>
 <translation id="5063480226653192405">Penggunaan</translation>
+<translation id="5091013926750941408">Laman mudah alih</translation>
 <translation id="509133520954049755">Minta paparan desktop</translation>
 <translation id="5100237604440890931">Diruntuhkan - klik untuk mengembangkan.</translation>
 <translation id="5123685120097942451">Tab Inkognito</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 e29bf8f..a14a92ad 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">साइटहरूलाई चालसम्बन्धी सेन्सरहरूमाथि पहुँच राख्ने अनुमति दिनुहोस्‌ (सिफारिस गरिएको)</translation>
 <translation id="5050380848339752099">यो साइटले इन्कोग्निटो मोडबाहिरको एपसँग जानकारी सेयर गर्न लागिरहेको छ।</translation>
 <translation id="5063480226653192405">उपयोग</translation>
+<translation id="5091013926750941408">मोबाइल साइट</translation>
 <translation id="509133520954049755">डेस्कटप भ्यू देखाउन अनुरोध गरियोस्</translation>
 <translation id="5100237604440890931">संक्षिप्त भयो - विस्तृत गर्न क्लिक गर्नुहोस्</translation>
 <translation id="5123685120097942451">इन्कोग्निटो ट्याब</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb
index 694acf17a..51e7ab01 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Alle contacten</translation>
 <translation id="3362437373201486687">Scannen naar bluetooth-apparaten</translation>
 <translation id="3386292677130313581">Eerst vragen voordat sites toegang krijgen tot je locatie (aanbevolen)</translation>
+<translation id="3521663503435878242">Sites onder <ph name="DOMAIN" /></translation>
 <translation id="3538390592868664640">Voorkomen dat sites een 3D-kaart van je omgeving maken of de camerapositie volgen</translation>
 <translation id="3551268116566418498">Incognitomodus verlaten?</translation>
 <translation id="3586500876634962664">Camera- en microfoongebruik</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb
index 73003b2..e067a51 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_no.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Gi nettsteder tilgang til bevegelsessensorer (anbefalt)</translation>
 <translation id="5050380848339752099">Dette nettstedet er i ferd med å dele informasjon med en app utenfor Inkognitomodus.</translation>
 <translation id="5063480226653192405">Bruk</translation>
+<translation id="5091013926750941408">Mobilnettsted</translation>
 <translation id="509133520954049755">Be om datamaskinvisning</translation>
 <translation id="5100237604440890931">Minimert – klikk for å utvide</translation>
 <translation id="5123685120097942451">Inkognitofane</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
index 515a617..d0e2f2d 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Todos os contactos</translation>
 <translation id="3362437373201486687">A procurar dispositivos Bluetooth</translation>
 <translation id="3386292677130313581">Perguntar antes de permitir que os sites conheçam a sua localização (recomendado)</translation>
+<translation id="3521663503435878242">Sites no domínio <ph name="DOMAIN" /></translation>
 <translation id="3538390592868664640">Impeça que os sites criem um mapa 3D do ambiente à sua volta ou monitorizem a posição da câmara</translation>
 <translation id="3551268116566418498">Quer sair da Navegação anónima?</translation>
 <translation id="3586500876634962664">Utilização da câmara e do microfone</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb
index b6e4cf2..ae54d101 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Предоставить сайтам доступ к датчикам движения (рекомендуется)</translation>
 <translation id="5050380848339752099">Этот сайт передает информацию стороннему приложению, пока вы находитесь в режиме инкогнито.</translation>
 <translation id="5063480226653192405">Использование</translation>
+<translation id="5091013926750941408">Мобильный сайт</translation>
 <translation id="509133520954049755">Запрос версии для ПК</translation>
 <translation id="5100237604440890931">Свернуто. Нажмите, чтобы развернуть.</translation>
 <translation id="5123685120097942451">Вкладка инкогнито</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
index b66791b..f4de7b2 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">වෙබ් අඩවිවලට චලන සංවේදකවලට ප්‍රවේශ වීමට ඉඩ දෙන්න (නිර්දේශිතයි)</translation>
 <translation id="5050380848339752099">මෙම අඩවිය අප්‍රසිද්ධ ප්‍රකාරයෙන් පිටත යෙදුමක් සමග තොරතුරු බෙදා ගැනීමට සූදානම්ය.</translation>
 <translation id="5063480226653192405">භාවිතය</translation>
+<translation id="5091013926750941408">ජංගම අඩවිය</translation>
 <translation id="509133520954049755">ඩෙස්ක්ටොප් දසුන ඉල්ලන්න</translation>
 <translation id="5100237604440890931">හකුළන ලදි - දිග හැරීමට ක්ලික් කරන්න</translation>
 <translation id="5123685120097942451">අප්‍රකට පටිත්ත</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb
index 661e497..5fa7120 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Všetky kontakty</translation>
 <translation id="3362437373201486687">Hľadajú sa zariadenia Bluetooth…</translation>
 <translation id="3386292677130313581">Pýtať sa, či chcete povoliť webu zisťovať vašu polohu (odporúčané)</translation>
+<translation id="3521663503435878242">Weby v doméne <ph name="DOMAIN" /></translation>
 <translation id="3538390592868664640">Brániť webom vytvárať priestorovú mapu okolia a sledovať pozíciu kamery</translation>
 <translation id="3551268116566418498">Chcete ukončiť režim inkognito?</translation>
 <translation id="3586500876634962664">Používanie kamery a mikrofónu</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb
index 41799720..dc8300a5 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Lejoju faqeve të të hapin sensorët e lëvizjes (rekomandohet)</translation>
 <translation id="5050380848339752099">Ky sajt është gati për të ndarë informacione me një aplikacion jashtë modalitetit "të fshehtë".</translation>
 <translation id="5063480226653192405">Përdorimi</translation>
+<translation id="5091013926750941408">Sajti për celular</translation>
 <translation id="509133520954049755">Kërko pamjen për desktop</translation>
 <translation id="5100237604440890931">I palosur - kliko për ta zgjeruar</translation>
 <translation id="5123685120097942451">Skeda "e fshehtë"</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb
index 2bdc807..eddb8164 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Svi kontakti</translation>
 <translation id="3362437373201486687">Traže se Bluetooth uređaji</translation>
 <translation id="3386292677130313581">Pitaj pre nego što dozvoliš sajtovima da znaju lokaciju (preporučeno)</translation>
+<translation id="3521663503435878242">Sajtovi na domenu <ph name="DOMAIN" /></translation>
 <translation id="3538390592868664640">Sprečite sajtove da prave 3D mapu okruženja ili da prate položaj kamere</translation>
 <translation id="3551268116566418498">Izlazite iz rež. bez arhiviranja?</translation>
 <translation id="3586500876634962664">Korišćenje kamere i mikrofona</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb
index ccf4d8fe..fe11bc6 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">Сви контакти</translation>
 <translation id="3362437373201486687">Траже се Bluetooth уређаји</translation>
 <translation id="3386292677130313581">Питај пре него што дозволиш сајтовима да знају локацију (препоручено)</translation>
+<translation id="3521663503435878242">Сајтови на домену <ph name="DOMAIN" /></translation>
 <translation id="3538390592868664640">Спречите сајтове да праве 3D мапу окружења или да прате положај камере</translation>
 <translation id="3551268116566418498">Излазите из реж. без архивирања?</translation>
 <translation id="3586500876634962664">Коришћење камере и микрофона</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 6ca9d4c..9178cfe 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Tillåt webbplatser att använda enhetens rörelsesensorer (rekommenderas)</translation>
 <translation id="5050380848339752099">Data på den här webbplatsen delas med en app utanför inkognitoläget.</translation>
 <translation id="5063480226653192405">Användning</translation>
+<translation id="5091013926750941408">Mobil webbplats</translation>
 <translation id="509133520954049755">Begär datorvy</translation>
 <translation id="5100237604440890931">Vyn har komprimerats. Expandera den genom att klicka.</translation>
 <translation id="5123685120097942451">Inkognitoflik</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 82697534..590899f 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">Ruhusu tovuti zifikie vitambuzi vyako vya mwendo (inapendekezwa)</translation>
 <translation id="5050380848339752099">Tovuti hii inaelekea kushiriki maelezo na programu nyingine nje ya Hali fiche.</translation>
 <translation id="5063480226653192405">Matumizi</translation>
+<translation id="5091013926750941408">Tovuti ya kifaa cha mkononi</translation>
 <translation id="509133520954049755">Omba mwonekano wa kompyuta</translation>
 <translation id="5100237604440890931">Imekunjwa - bofya ili upanue.</translation>
 <translation id="5123685120097942451">Kichupo fiche</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 4fd2191c..8587877 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
@@ -115,6 +115,7 @@
 <translation id="3333961966071413176">మొత్తం కాంటాక్ట్‌లు</translation>
 <translation id="3362437373201486687">బ్లూటూత్ పరికరాల కోసం స్కాన్ చేస్తోంది</translation>
 <translation id="3386292677130313581">మీ స్థానాన్ని సైట్‌లు తెలుసుకునేలా వాటిని అనుమతించే ముందు, మిమ్మల్ని అడుగుతుంది (సిఫార్సు చేయబడింది)</translation>
+<translation id="3521663503435878242"><ph name="DOMAIN" />‌లో ఉన్న సైట్‌లు</translation>
 <translation id="3538390592868664640">మీ పరిసరాల 3D మ్యాప్‌ను సృష్టించకుండా లేదా కెమెరా పొజిషన్‌ను ట్రాక్ చేయకుండా సైట్‌లను బ్లాక్ చేయండి</translation>
 <translation id="3551268116566418498">అజ్ఞాత మోడ్‌ను నిష్క్రమించాలా?</translation>
 <translation id="3586500876634962664">కెమెరా, మైక్రోఫోన్‌ల ఉపయోగం</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
index fe86030..f798797 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">允许网站使用移动传感器(推荐)</translation>
 <translation id="5050380848339752099">该网站即将与某个并非处于无痕模式下的应用共享信息。</translation>
 <translation id="5063480226653192405">空间占用量</translation>
+<translation id="5091013926750941408">移动网站</translation>
 <translation id="509133520954049755">请求获取桌面版视图</translation>
 <translation id="5100237604440890931">已收起 - 点击此处即可展开。</translation>
 <translation id="5123685120097942451">无痕式标签页</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 6234d07..6efb281 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
@@ -182,6 +182,7 @@
 <translation id="5048398596102334565">允許網站存取動作感應器 (建議)</translation>
 <translation id="5050380848339752099">這個網站即將退出無痕模式並與外部應用程式分享資訊。</translation>
 <translation id="5063480226653192405">用量</translation>
+<translation id="5091013926750941408">行動版網站</translation>
 <translation id="509133520954049755">要求電腦檢視畫面</translation>
 <translation id="5100237604440890931">已收合 - 按一下即可展開。</translation>
 <translation id="5123685120097942451">無痕式分頁</translation>
diff --git a/components/captive_portal/core/captive_portal_detector.cc b/components/captive_portal/core/captive_portal_detector.cc
index 66707434..d0d81896 100644
--- a/components/captive_portal/core/captive_portal_detector.cc
+++ b/components/captive_portal/core/captive_portal_detector.cc
@@ -10,7 +10,6 @@
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/task_runner_util.h"
-#include "build/chromeos_buildflags.h"
 #include "net/base/load_flags.h"
 #include "net/http/http_response_headers.h"
 #include "net/http/http_util.h"
@@ -18,25 +17,6 @@
 #include "services/network/public/mojom/url_response_head.mojom.h"
 #include "url/gurl.h"
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "chromeos/ash/components/network/network_configuration_handler.h"
-#include "chromeos/ash/components/network/network_handler.h"
-#include "chromeos/ash/components/network/network_state_handler.h"
-#endif
-
-namespace {
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-GURL GetProbeUrl(const GURL& default_url) {
-  DCHECK_EQ(ash::NetworkHandler::Get()->task_runner(),
-            base::ThreadTaskRunnerHandle::Get().get());
-  const ash::NetworkState* network =
-      ash::NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
-  return network && !network->probe_url().is_empty() ? network->probe_url()
-                                                     : default_url;
-}
-#endif
-}  // namespace
-
 namespace captive_portal {
 
 const char CaptivePortalDetector::kDefaultURL[] =
@@ -44,13 +24,7 @@
 
 CaptivePortalDetector::CaptivePortalDetector(
     network::mojom::URLLoaderFactory* loader_factory)
-    : loader_factory_(loader_factory)
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-      ,
-      weak_factory_(this)
-#endif
-{
-}
+    : loader_factory_(loader_factory) {}
 
 CaptivePortalDetector::~CaptivePortalDetector() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -67,16 +41,6 @@
 
   detection_callback_ = std::move(detection_callback);
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  if (ash::NetworkHandler::IsInitialized()) {
-    base::PostTaskAndReplyWithResult(
-        ash::NetworkHandler::Get()->task_runner(), FROM_HERE,
-        base::BindOnce(&GetProbeUrl, url),
-        base::BindOnce(&CaptivePortalDetector::StartProbe,
-                       weak_factory_.GetWeakPtr(), traffic_annotation));
-    return;
-  }
-#endif
   StartProbe(traffic_annotation, url);
 }
 
@@ -111,10 +75,6 @@
 void CaptivePortalDetector::Cancel() {
   simple_loader_.reset();
   detection_callback_.Reset();
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  // Cancel any pending calls to StartProbe().
-  weak_factory_.InvalidateWeakPtrs();
-#endif
   state_ = State::kCancelled;
 }
 
diff --git a/components/captive_portal/core/captive_portal_detector.h b/components/captive_portal/core/captive_portal_detector.h
index c5e91fa2..049084de 100644
--- a/components/captive_portal/core/captive_portal_detector.h
+++ b/components/captive_portal/core/captive_portal_detector.h
@@ -13,7 +13,6 @@
 #include "base/memory/ref_counted.h"
 #include "base/sequence_checker.h"
 #include "base/time/time.h"
-#include "build/chromeos_buildflags.h"
 #include "components/captive_portal/core/captive_portal_export.h"
 #include "components/captive_portal/core/captive_portal_types.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
@@ -21,10 +20,6 @@
 #include "services/network/public/mojom/url_loader_factory.mojom.h"
 #include "url/gurl.h"
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "base/memory/weak_ptr.h"
-#endif
-
 class GURL;
 
 namespace captive_portal {
@@ -123,10 +118,6 @@
   State state_ = State::kInit;
 
   SEQUENCE_CHECKER(sequence_checker_);
-
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  base::WeakPtrFactory<CaptivePortalDetector> weak_factory_;
-#endif
 };
 
 }  // namespace captive_portal
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json
index 7610923..a4515b9 100644
--- a/components/certificate_transparency/data/log_list.json
+++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@
 {
-  "version": "12.5",
-  "log_list_timestamp": "2022-09-19T12:54:38Z",
+  "version": "12.6",
+  "log_list_timestamp": "2022-09-20T12:55:37Z",
   "operators": [
     {
       "name": "Google",
diff --git a/components/commerce/core/BUILD.gn b/components/commerce/core/BUILD.gn
index 0049711..e0cc2dd6 100644
--- a/components/commerce/core/BUILD.gn
+++ b/components/commerce/core/BUILD.gn
@@ -25,8 +25,10 @@
 
   deps = [
     ":commerce_heuristics_data",
+    ":pref_names",
     "//base",
     "//components/flags_ui",
+    "//components/prefs",
     "//components/search",
     "//third_party/re2:re2",
     "//url:url",
@@ -176,7 +178,6 @@
     "//components/optimization_guide/proto:optimization_guide_proto",
     "//components/power_bookmarks/core",
     "//components/power_bookmarks/core:proto",
-    "//components/pref_registry",
     "//components/prefs:prefs",
     "//components/resources:components_resources_grit",
     "//components/session_proto_db:core",
@@ -266,7 +267,11 @@
     "pref_names.h",
   ]
 
-  deps = [ "//base" ]
+  deps = [
+    "//base",
+    "//components/pref_registry",
+    "//components/prefs",
+  ]
 }
 
 source_set("account_checker") {
diff --git a/components/commerce/core/bookmark_update_manager_unittest.cc b/components/commerce/core/bookmark_update_manager_unittest.cc
index bac0a422..7cc053d8 100644
--- a/components/commerce/core/bookmark_update_manager_unittest.cc
+++ b/components/commerce/core/bookmark_update_manager_unittest.cc
@@ -46,7 +46,7 @@
     // The update manager should not have an update scheduled by default.
     EXPECT_FALSE(IsUpdateScheduled());
 
-    ShoppingService::RegisterPrefs(pref_service_->registry());
+    RegisterPrefs(pref_service_->registry());
   }
 
   void TearDown() override { update_manager_->CancelUpdates(); }
diff --git a/components/commerce/core/commerce_feature_list.cc b/components/commerce/core/commerce_feature_list.cc
index 2587e34..ef3a5b9b 100644
--- a/components/commerce/core/commerce_feature_list.cc
+++ b/components/commerce/core/commerce_feature_list.cc
@@ -7,11 +7,13 @@
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/no_destructor.h"
+#include "base/values.h"
 #include "build/buildflag.h"
 #if !BUILDFLAG(IS_ANDROID)
 #include "components/commerce/core/commerce_heuristics_data.h"
 #endif  // !BUILDFLAG(IS_ANDROID)
 #include "components/commerce/core/commerce_heuristics_data_metrics_helper.h"
+#include "components/commerce/core/pref_names.h"
 #include "third_party/re2/src/re2/re2.h"
 
 namespace commerce {
@@ -273,6 +275,14 @@
          kContextualConsentShowOnSRP.Get();
 }
 
+bool IsShoppingListAllowedForEnterprise(PrefService* prefs) {
+  const base::Value* pref =
+      prefs->GetUserPrefValue(kShoppingListEnabledPrefName);
+
+  // Default to true if there is no value set.
+  return !pref || pref->GetBool();
+}
+
 #if !BUILDFLAG(IS_ANDROID)
 base::TimeDelta GetDiscountFetchDelay() {
   auto delay_from_component =
diff --git a/components/commerce/core/commerce_feature_list.h b/components/commerce/core/commerce_feature_list.h
index 5b3b127..d75084e 100644
--- a/components/commerce/core/commerce_feature_list.h
+++ b/components/commerce/core/commerce_feature_list.h
@@ -9,9 +9,12 @@
 #include "base/metrics/field_trial_params.h"
 #include "base/time/time.h"
 #include "components/flags_ui/feature_entry.h"
+#include "components/prefs/pref_service.h"
 #include "components/search/ntp_features.h"
 #include "url/gurl.h"
 
+class PrefService;
+
 namespace commerce {
 
 namespace switches {
@@ -301,6 +304,8 @@
 bool IsFakeDataEnabled();
 // Check if the contextual consent for discount is enabled.
 bool isContextualConsentEnabled();
+// Check if the shopping list feature is allowed for enterprise.
+bool IsShoppingListAllowedForEnterprise(PrefService* prefs);
 
 #if !BUILDFLAG(IS_ANDROID)
 // Get the time delay between discount fetches.
diff --git a/components/commerce/core/pref_names.cc b/components/commerce/core/pref_names.cc
index 90694d6..481a9cb 100644
--- a/components/commerce/core/pref_names.cc
+++ b/components/commerce/core/pref_names.cc
@@ -4,14 +4,31 @@
 
 #include "components/commerce/core/pref_names.h"
 
+#include "components/pref_registry/pref_registry_syncable.h"
+#include "components/prefs/pref_registry_simple.h"
+
 namespace commerce {
 
 const char kShoppingListBookmarkLastUpdateTime[] =
     "shopping_list_bookmark_last_update_time";
-
+const char kShoppingListEnabledPrefName[] = "shopping_list_enabled";
 const char kWebAndAppActivityEnabledForShopping[] =
     "web_and_app_activity_enabled_for_shopping";
 const char kPriceEmailNotificationsEnabled[] =
     "price_tracking.email_notifications_enabled";
 
+void RegisterPrefs(PrefRegistrySimple* registry) {
+  // This pref value is queried from server. Set initial value as true so our
+  // features can be correctly set up while waiting for the server response.
+  registry->RegisterBooleanPref(kWebAndAppActivityEnabledForShopping, true);
+
+  registry->RegisterBooleanPref(
+      kPriceEmailNotificationsEnabled, true,
+      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+
+  registry->RegisterTimePref(kShoppingListBookmarkLastUpdateTime, base::Time());
+
+  registry->RegisterBooleanPref(kShoppingListEnabledPrefName, true);
+}
+
 }  // namespace commerce
\ No newline at end of file
diff --git a/components/commerce/core/pref_names.h b/components/commerce/core/pref_names.h
index 77f18e46..0df5629 100644
--- a/components/commerce/core/pref_names.h
+++ b/components/commerce/core/pref_names.h
@@ -5,12 +5,22 @@
 #ifndef COMPONENTS_COMMERCE_CORE_PREF_NAMES_H_
 #define COMPONENTS_COMMERCE_CORE_PREF_NAMES_H_
 
+class PrefRegistrySimple;
+
 namespace commerce {
 
 extern const char kShoppingListBookmarkLastUpdateTime[];
+
+// This setting is primarily for enabling or disabling the shopping list feature
+// in enterprise settings.
+extern const char kShoppingListEnabledPrefName[];
+
 extern const char kWebAndAppActivityEnabledForShopping[];
 extern const char kPriceEmailNotificationsEnabled[];
 
+// Register preference names for commerce features.
+void RegisterPrefs(PrefRegistrySimple* registry);
+
 }  // namespace commerce
 
 #endif  // COMPONENTS_COMMERCE_CORE_PREF_NAMES_H_
\ No newline at end of file
diff --git a/components/commerce/core/shopping_service.cc b/components/commerce/core/shopping_service.cc
index e51138e..602cd08 100644
--- a/components/commerce/core/shopping_service.cc
+++ b/components/commerce/core/shopping_service.cc
@@ -38,7 +38,6 @@
 #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/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/session_proto_db/session_proto_storage.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
@@ -123,18 +122,6 @@
       this, bookmark_model_, pref_service_);
 }
 
-void ShoppingService::RegisterPrefs(PrefRegistrySimple* registry) {
-  // This pref value is queried from server. Set initial value as true so our
-  // features can be correctly set up while waiting for the server response.
-  registry->RegisterBooleanPref(kWebAndAppActivityEnabledForShopping, true);
-
-  registry->RegisterBooleanPref(
-      commerce::kPriceEmailNotificationsEnabled, true,
-      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-
-  registry->RegisterTimePref(kShoppingListBookmarkLastUpdateTime, base::Time());
-}
-
 void ShoppingService::WebWrapperCreated(WebWrapper* web) {}
 
 void ShoppingService::DidNavigatePrimaryMainFrame(WebWrapper* web) {
diff --git a/components/commerce/core/shopping_service.h b/components/commerce/core/shopping_service.h
index b0bdd035..151dc85 100644
--- a/components/commerce/core/shopping_service.h
+++ b/components/commerce/core/shopping_service.h
@@ -27,8 +27,6 @@
 class GURL;
 class PrefService;
 
-class PrefRegistrySimple;
-
 template <typename T>
 class SessionProtoStorage;
 
@@ -169,8 +167,6 @@
   ShoppingService(const ShoppingService&) = delete;
   ShoppingService& operator=(const ShoppingService&) = delete;
 
-  static void RegisterPrefs(PrefRegistrySimple* registry);
-
   // This API retrieves the product information for the provided |url| and
   // passes the payload back to the caller via |callback|. At minimum, this
   // API will wait for data from the backend but may provide a "partial" result
diff --git a/components/device_signals/core/common/mojom/system_signals.mojom b/components/device_signals/core/common/mojom/system_signals.mojom
index 872e106b..bf3db11 100644
--- a/components/device_signals/core/common/mojom/system_signals.mojom
+++ b/components/device_signals/core/common/mojom/system_signals.mojom
@@ -4,6 +4,7 @@
 
 module device_signals.mojom;
 
+import "sandbox/policy/mojom/context.mojom";
 import "sandbox/policy/mojom/sandbox.mojom";
 import "mojo/public/mojom/base/byte_string.mojom";
 import "mojo/public/mojom/base/file_path.mojom";
@@ -75,7 +76,8 @@
 // of these signals is platform-specific and, in some cases (i.e. Windows), may
 // need to be run a separate process.
 // This service can be accessed from the browser process.
-[ServiceSandbox=sandbox.mojom.Sandbox.kNoSandbox]
+[ServiceSandbox=sandbox.mojom.Sandbox.kNoSandbox,
+ RequireContext=sandbox.mojom.Context.kBrowser]
 interface SystemSignalsService {
   // Collects signals about a set of file system items specified by `requests`.
   // Returns the collected information in `items`.
diff --git a/components/embedder_support/origin_trials/component_updater_utils.cc b/components/embedder_support/origin_trials/component_updater_utils.cc
index 1937089..f58d61f 100644
--- a/components/embedder_support/origin_trials/component_updater_utils.cc
+++ b/components/embedder_support/origin_trials/component_updater_utils.cc
@@ -10,7 +10,6 @@
 #include "base/values.h"
 #include "components/embedder_support/origin_trials/pref_names.h"
 #include "components/prefs/pref_service.h"
-#include "components/prefs/scoped_user_pref_update.h"
 
 namespace {
 
@@ -28,30 +27,31 @@
                                                  base::Value manifest) {
   DCHECK(local_state);
 
+  base::Value::Dict& manifest_dict = manifest.GetDict();
+
   if (std::string* override_public_key =
-          manifest.FindStringPath(kManifestPublicKeyPath)) {
+          manifest_dict.FindStringByDottedPath(kManifestPublicKeyPath)) {
     local_state->Set(prefs::kOriginTrialPublicKey,
                      base::Value(*override_public_key));
   } else {
     local_state->ClearPref(prefs::kOriginTrialPublicKey);
   }
 
-  base::Value* override_disabled_feature_list =
-      manifest.FindListPath(kManifestDisabledFeaturesPath);
+  base::Value::List* override_disabled_feature_list =
+      manifest_dict.FindListByDottedPath(kManifestDisabledFeaturesPath);
   if (override_disabled_feature_list &&
-      !override_disabled_feature_list->GetListDeprecated().empty()) {
-    ListPrefUpdate update(local_state, prefs::kOriginTrialDisabledFeatures);
-    *update = std::move(*override_disabled_feature_list);
+      !override_disabled_feature_list->empty()) {
+    local_state->SetList(prefs::kOriginTrialDisabledFeatures,
+                         std::move(*override_disabled_feature_list));
   } else {
     local_state->ClearPref(prefs::kOriginTrialDisabledFeatures);
   }
 
-  base::Value* disabled_tokens_list =
-      manifest.FindListPath(kManifestDisabledTokenSignaturesPath);
-  if (disabled_tokens_list &&
-      !disabled_tokens_list->GetListDeprecated().empty()) {
-    ListPrefUpdate update(local_state, prefs::kOriginTrialDisabledTokens);
-    *update = std::move(*disabled_tokens_list);
+  base::Value::List* disabled_tokens_list =
+      manifest_dict.FindListByDottedPath(kManifestDisabledTokenSignaturesPath);
+  if (disabled_tokens_list && !disabled_tokens_list->empty()) {
+    local_state->SetList(prefs::kOriginTrialDisabledTokens,
+                         std::move(*disabled_tokens_list));
   } else {
     local_state->ClearPref(prefs::kOriginTrialDisabledTokens);
   }
diff --git a/components/embedder_support/origin_trials/component_updater_utils_unittest.cc b/components/embedder_support/origin_trials/component_updater_utils_unittest.cc
index 96885cb..79a6948 100644
--- a/components/embedder_support/origin_trials/component_updater_utils_unittest.cc
+++ b/components/embedder_support/origin_trials/component_updater_utils_unittest.cc
@@ -81,11 +81,11 @@
   }
 
   void AddDisabledFeaturesToPrefs(const std::vector<std::string>& features) {
-    base::Value disabled_feature_list(base::Value::Type::LIST);
+    base::Value::List disabled_feature_list;
     for (const std::string& feature : features) {
       disabled_feature_list.Append(feature);
     }
-    ListPrefUpdate update(
+    ScopedListPrefUpdate update(
         local_state(), embedder_support::prefs::kOriginTrialDisabledFeatures);
     *update = std::move(disabled_feature_list);
   }
@@ -114,12 +114,12 @@
   }
 
   void AddDisabledTokensToPrefs(const std::vector<std::string>& tokens) {
-    base::Value disabled_token_list(base::Value::Type::LIST);
+    base::Value::List disabled_token_list;
     for (const std::string& token : tokens) {
       disabled_token_list.Append(token);
     }
-    ListPrefUpdate update(local_state(),
-                          embedder_support::prefs::kOriginTrialDisabledTokens);
+    ScopedListPrefUpdate update(
+        local_state(), embedder_support::prefs::kOriginTrialDisabledTokens);
     *update = std::move(disabled_token_list);
   }
 
diff --git a/components/exo/pointer.cc b/components/exo/pointer.cc
index 8ea90b9..9ee52ae0 100644
--- a/components/exo/pointer.cc
+++ b/components/exo/pointer.cc
@@ -842,6 +842,7 @@
   // First generate a leave event if we currently have a target in focus.
   if (focus_surface_) {
     delegate_->OnPointerLeave(focus_surface_);
+    delegate_->OnPointerFrame();
     // Require SetCursor() to be called and cursor to be re-defined in
     // response to each OnPointerEnter() call.
     Surface* old_surface = focus_surface_;
@@ -852,12 +853,12 @@
   // Second generate an enter event if focus moved to a new surface.
   if (surface) {
     delegate_->OnPointerEnter(surface, location, button_flags);
+    delegate_->OnPointerFrame();
     location_ = GetLocationInRoot(surface, location);
     focus_surface_ = surface;
     if (!focus_surface_->HasSurfaceObserver(this))
       focus_surface_->AddSurfaceObserver(this);
   }
-  delegate_->OnPointerFrame();
   UpdateCursor();
 }
 
diff --git a/components/exo/pointer_unittest.cc b/components/exo/pointer_unittest.cc
index 3dc87b26..95a1192 100644
--- a/components/exo/pointer_unittest.cc
+++ b/components/exo/pointer_unittest.cc
@@ -618,7 +618,7 @@
 
   EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get()))
       .WillRepeatedly(testing::Return(true));
-  EXPECT_CALL(delegate, OnPointerFrame()).Times(6);
+  EXPECT_CALL(delegate, OnPointerFrame()).Times(8);
 
   EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::PointF(), 0));
   generator.MoveMouseTo(surface->window()->GetBoundsInScreen().origin());
@@ -1374,7 +1374,7 @@
 
   EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get()))
       .WillRepeatedly(testing::Return(true));
-  EXPECT_CALL(delegate, OnPointerFrame()).Times(9);
+  EXPECT_CALL(delegate, OnPointerFrame()).Times(11);
 
   EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::PointF(), 0));
   generator.MoveMouseTo(surface->window()->GetBoundsInScreen().origin());
@@ -1549,7 +1549,7 @@
 
   EXPECT_CALL(delegate_, OnPointerLeave(surface_));
   EXPECT_CALL(delegate_, OnPointerEnter(child_surface, gfx::PointF(), 0));
-  EXPECT_CALL(delegate_, OnPointerFrame());
+  EXPECT_CALL(delegate_, OnPointerFrame()).Times(2);
   // Moving the cursor to a different surface should change the focus when
   // the pointer is unconstrained.
   pointer_->UnconstrainPointerByUserAction();
diff --git a/components/exo/text_input.cc b/components/exo/text_input.cc
index 772e203a..9db391ba 100644
--- a/components/exo/text_input.cc
+++ b/components/exo/text_input.cc
@@ -37,17 +37,6 @@
   return window->GetHost()->GetInputMethod();
 }
 
-ui::CompositionText GenerateCompositionTextFrom(
-    const std::u16string& surrounding_text,
-    const gfx::Range& composition_range,
-    const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
-  ui::CompositionText composition;
-  composition.text = surrounding_text.substr(composition_range.GetMin(),
-                                             composition_range.length());
-  composition.ime_text_spans = ui_ime_text_spans;
-  return composition;
-}
-
 }  // namespace
 
 TextInput::TextInput(std::unique_ptr<Delegate> delegate)
@@ -100,15 +89,14 @@
 }
 
 void TextInput::Reset() {
-  ResetCompositionTextCache();
+  surrounding_text_tracker_.Reset();
   if (input_method_)
     input_method_->CancelComposition(this);
 }
 
 void TextInput::SetSurroundingText(const std::u16string& text,
                                    const gfx::Range& cursor_pos) {
-  surrounding_text_ = text;
-  cursor_pos_ = cursor_pos;
+  surrounding_text_tracker_.Update(text, cursor_pos);
 
   // Convert utf8 grammar fragment to utf16.
   if (grammar_fragment_at_cursor_utf8_) {
@@ -174,44 +162,45 @@
 }
 
 void TextInput::SetCompositionText(const ui::CompositionText& composition) {
-  composition_ = composition;
-  // Identify the starting index of the current composition. If a composition
-  // range has been set previously, then use it's starting index, otherwise
-  // use the current cursor position as the start of the composition. If the
-  // user has a selection, then we can assume the min value of the cursor_pos
-  // range as the start of the composition, as the selection will be replaced
-  // by the composition text being set.
-  size_t composition_start = cursor_pos_.IsValid() ? cursor_pos_.GetMin() : 0;
-  if (composition_range_.IsValid())
-    composition_start = composition_range_.GetMin();
-  composition_range_ = gfx::Range(composition_start,
-                                  composition_start + composition.text.size());
   delegate_->SetCompositionText(composition);
+  surrounding_text_tracker_.OnSetCompositionText(composition);
 }
 
 size_t TextInput::ConfirmCompositionText(bool keep_selection) {
-  const size_t composition_text_length = composition_.text.length();
-  if (keep_selection && cursor_pos_.IsValid() &&
-      surrounding_text_.size() >= cursor_pos_.GetMax()) {
-    delegate_->SetCursor(surrounding_text_, cursor_pos_);
+  const auto& [surrounding_text, cursor_pos, composition] =
+      surrounding_text_tracker_.predicted_state();
+
+  const size_t composition_text_length = composition.length();
+  if (keep_selection && cursor_pos.IsValid() &&
+      surrounding_text.length() >= cursor_pos.GetMax()) {
+    delegate_->SetCursor(surrounding_text, cursor_pos);
   }
-  delegate_->Commit(composition_.text);
-  ResetCompositionTextCache();
+  base::StringPiece16 composition_text =
+      composition.is_empty()
+          ? base::StringPiece16()
+          : base::StringPiece16(surrounding_text)
+                .substr(composition.GetMin(), composition.length());
+
+  delegate_->Commit(composition_text);
+  surrounding_text_tracker_.OnConfirmCompositionText(keep_selection);
   return composition_text_length;
 }
 
 void TextInput::ClearCompositionText() {
-  if (composition_.text.empty())
+  const auto composition =
+      surrounding_text_tracker_.predicted_state().composition;
+  if (composition.is_empty())
     return;
-  ResetCompositionTextCache();
-  delegate_->SetCompositionText(composition_);
+  delegate_->SetCompositionText(ui::CompositionText{});
+  surrounding_text_tracker_.OnClearCompositionText();
 }
 
 void TextInput::InsertText(const std::u16string& text,
                            InsertTextCursorBehavior cursor_behavior) {
   // TODO(crbug.com/1155331): Handle |cursor_behavior| correctly.
   delegate_->Commit(text);
-  ResetCompositionTextCache();
+  surrounding_text_tracker_.OnInsertText(
+      text, InsertTextCursorBehavior::kMoveCursorAfterText);
 }
 
 void TextInput::InsertChar(const ui::KeyEvent& event) {
@@ -271,7 +260,7 @@
 }
 
 bool TextInput::HasCompositionText() const {
-  return !composition_.text.empty();
+  return !surrounding_text_tracker_.predicted_state().composition.is_empty();
 }
 
 ui::TextInputClient::FocusReason TextInput::GetFocusReason() const {
@@ -280,50 +269,59 @@
 }
 
 bool TextInput::GetTextRange(gfx::Range* range) const {
-  if (!cursor_pos_.IsValid())
-    return false;
-  range->set_start(0);
-  range->set_end(surrounding_text_.size());
+  DCHECK(range);
+  const auto& [surrounding_text, selection, unused_composition] =
+      surrounding_text_tracker_.predicted_state();
+  DCHECK(selection.IsValid());
+
+  *range = gfx::Range(0, surrounding_text.length());
   return true;
 }
 
 bool TextInput::GetCompositionTextRange(gfx::Range* range) const {
   DCHECK(range);
-  if (composition_range_.IsValid()) {
-    *range = composition_range_;
-    return true;
-  }
+  const auto& composition =
+      surrounding_text_tracker_.predicted_state().composition;
+  if (composition.is_empty())
+    return false;
 
-  return false;
+  *range = composition;
+  return true;
 }
 
 bool TextInput::GetEditableSelectionRange(gfx::Range* range) const {
-  if (!cursor_pos_.IsValid())
-    return false;
-  range->set_start(cursor_pos_.start());
-  range->set_end(cursor_pos_.end());
+  DCHECK(range);
+  const auto& selection = surrounding_text_tracker_.predicted_state().selection;
+  DCHECK(selection.IsValid());
+
+  *range = selection;
   return true;
 }
 
 bool TextInput::SetEditableSelectionRange(const gfx::Range& range) {
-  if (surrounding_text_.size() < range.GetMax())
+  const auto& [surrounding_text, unused_selection, composition] =
+      surrounding_text_tracker_.predicted_state();
+  if (surrounding_text.length() < range.GetMax())
     return false;
 
   // Send a SetCursor followed by a Commit of the current composition text, or
   // empty string if there is no composition text. This is necessary since
   // SetCursor only takes effect on the following Commit.
-  delegate_->SetCursor(surrounding_text_, range);
-  delegate_->Commit(composition_.text);
-  ResetCompositionTextCache();
+  delegate_->SetCursor(surrounding_text, range);
+  delegate_->Commit(base::StringPiece16(surrounding_text)
+                        .substr(composition.GetMin(), composition.length()));
+  surrounding_text_tracker_.OnSetEditableSelectionRange(range);
   return true;
 }
 
 bool TextInput::GetTextFromRange(const gfx::Range& range,
                                  std::u16string* text) const {
-  gfx::Range text_range;
-  if (!GetTextRange(&text_range) || !text_range.Contains(range))
+  DCHECK(text);
+  const auto& surrounding_text =
+      surrounding_text_tracker_.predicted_state().surrounding_text;
+  if (surrounding_text.length() < range.GetMax())
     return false;
-  text->assign(surrounding_text_.substr(range.GetMin(), range.length()));
+  text->assign(surrounding_text, range.GetMin(), range.length());
   return true;
 }
 
@@ -350,14 +348,18 @@
 }
 
 void TextInput::ExtendSelectionAndDelete(size_t before, size_t after) {
-  if (!cursor_pos_.IsValid())
-    return;
+  const auto& [surrounding_text, selection, unused_composition] =
+      surrounding_text_tracker_.predicted_state();
+
+  DCHECK(selection.IsValid());
+
   size_t utf16_start =
-      std::max(static_cast<size_t>(cursor_pos_.GetMin()), before) - before;
+      selection.GetMin() - std::min(before, selection.GetMin());
   size_t utf16_end =
-      std::min(cursor_pos_.GetMax() + after, surrounding_text_.size());
-  delegate_->DeleteSurroundingText(surrounding_text_,
+      std::min(selection.GetMax() + after, surrounding_text.length());
+  delegate_->DeleteSurroundingText(surrounding_text,
                                    gfx::Range(utf16_start, utf16_end));
+  surrounding_text_tracker_.OnExtendSelectionAndDelete(before, after);
 }
 
 void TextInput::EnsureCaretNotInRect(const gfx::Rect& rect) {
@@ -383,9 +385,10 @@
 bool TextInput::SetCompositionFromExistingText(
     const gfx::Range& range,
     const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
-  if (!cursor_pos_.IsValid())
-    return false;
-  if (surrounding_text_.size() < range.GetMax())
+  const auto& [surrounding_text, selection, unused_composition] =
+      surrounding_text_tracker_.predicted_state();
+  DCHECK(selection.IsValid());
+  if (surrounding_text.length() < range.GetMax())
     return false;
 
   const auto composition_length = range.length();
@@ -394,12 +397,9 @@
       return false;
   }
 
-  composition_ =
-      GenerateCompositionTextFrom(surrounding_text_, range, ui_ime_text_spans);
-  composition_range_.set_start(range.GetMin());
-  composition_range_.set_end(range.GetMax());
-  delegate_->SetCompositionFromExistingText(surrounding_text_, cursor_pos_,
-                                            range, ui_ime_text_spans);
+  delegate_->SetCompositionFromExistingText(surrounding_text, selection, range,
+                                            ui_ime_text_spans);
+  surrounding_text_tracker_.OnSetCompositionFromExistingText(range);
   return true;
 }
 
@@ -412,7 +412,9 @@
 }
 
 bool TextInput::SetAutocorrectRange(const gfx::Range& range) {
-  delegate_->SetAutocorrectRange(surrounding_text_, range);
+  const auto& surrounding_text =
+      surrounding_text_tracker_.predicted_state().surrounding_text;
+  delegate_->SetAutocorrectRange(surrounding_text, range);
   return true;
 }
 
@@ -422,19 +424,23 @@
 }
 
 bool TextInput::ClearGrammarFragments(const gfx::Range& range) {
-  if (surrounding_text_.size() < range.GetMax())
+  const auto& surrounding_text =
+      surrounding_text_tracker_.predicted_state().surrounding_text;
+  if (surrounding_text.length() < range.GetMax())
     return false;
 
-  delegate_->ClearGrammarFragments(surrounding_text_, range);
+  delegate_->ClearGrammarFragments(surrounding_text, range);
   return true;
 }
 
 bool TextInput::AddGrammarFragments(
     const std::vector<ui::GrammarFragment>& fragments) {
+  const auto& surrounding_text =
+      surrounding_text_tracker_.predicted_state().surrounding_text;
   for (auto& fragment : fragments) {
-    if (surrounding_text_.size() < fragment.range.GetMax())
+    if (surrounding_text.length() < fragment.range.GetMax())
       continue;
-    delegate_->AddGrammarFragment(surrounding_text_, fragment);
+    delegate_->AddGrammarFragment(surrounding_text, fragment);
   }
   return true;
 }
@@ -501,9 +507,4 @@
   delegate_->Deactivated();
 }
 
-void TextInput::ResetCompositionTextCache() {
-  composition_ = ui::CompositionText();
-  composition_range_ = gfx::Range::InvalidRange();
-}
-
 }  // namespace exo
diff --git a/components/exo/text_input.h b/components/exo/text_input.h
index 8491898..c6d1cad 100644
--- a/components/exo/text_input.h
+++ b/components/exo/text_input.h
@@ -13,6 +13,7 @@
 #include "components/exo/seat_observer.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "ui/base/ime/composition_text.h"
+#include "ui/base/ime/surrounding_text_tracker.h"
 #include "ui/base/ime/text_input_client.h"
 #include "ui/base/ime/text_input_flags.h"
 #include "ui/base/ime/text_input_mode.h"
@@ -60,7 +61,7 @@
     virtual void SetCompositionText(const ui::CompositionText& composition) = 0;
 
     // Commit |text| to the current text input session.
-    virtual void Commit(const std::u16string& text) = 0;
+    virtual void Commit(base::StringPiece16 text) = 0;
 
     // Set the cursor position.
     // |surrounding_text| is the current surrounding text.
@@ -263,18 +264,8 @@
   int flags_ = ui::TEXT_INPUT_FLAG_NONE;
   bool should_do_learning_ = true;
 
-  // Cache of the current surrounding text, sent from the client.
-  std::u16string surrounding_text_;
-
-  // Cache of the current cursor position in the surrounding text, sent from
-  // the client. Maybe "invalid" value, if not available.
-  gfx::Range cursor_pos_ = gfx::Range::InvalidRange();
-
-  // Cache of the current composition range (set in absolute indices).
-  gfx::Range composition_range_ = gfx::Range::InvalidRange();
-
-  // Cache of the current composition, updated from Chrome OS IME.
-  ui::CompositionText composition_;
+  // Tracks the surrounding text.
+  ui::SurroundingTextTracker surrounding_text_tracker_;
 
   // Cache of the current text input direction, update from the Chrome OS IME.
   base::i18n::TextDirection direction_ = base::i18n::UNKNOWN_DIRECTION;
diff --git a/components/exo/text_input_unittest.cc b/components/exo/text_input_unittest.cc
index 05954377..be1b84b 100644
--- a/components/exo/text_input_unittest.cc
+++ b/components/exo/text_input_unittest.cc
@@ -34,7 +34,7 @@
 ui::CompositionText GenerateCompositionText(const std::u16string& text) {
   ui::CompositionText t;
   t.text = text;
-  t.selection = gfx::Range(1u);
+  t.selection = gfx::Range(text.size());
   t.ime_text_spans.push_back(
       ui::ImeTextSpan(ui::ImeTextSpan::Type::kComposition, 0, t.text.size(),
                       ui::ImeTextSpan::Thickness::kThick));
@@ -53,7 +53,7 @@
   MOCK_METHOD(void, Deactivated, (), ());
   MOCK_METHOD(void, OnVirtualKeyboardVisibilityChanged, (bool), ());
   MOCK_METHOD(void, SetCompositionText, (const ui::CompositionText&), ());
-  MOCK_METHOD(void, Commit, (const std::u16string&), ());
+  MOCK_METHOD(void, Commit, (base::StringPiece16), ());
   MOCK_METHOD(void, SetCursor, (base::StringPiece16, const gfx::Range&), ());
   MOCK_METHOD(void,
               DeleteSurroundingText,
@@ -454,7 +454,8 @@
 TEST_F(TextInputTest, ConfirmCompositionText) {
   SetCompositionText(u"composition");
 
-  EXPECT_CALL(*delegate(), Commit(std::u16string(u"composition"))).Times(1);
+  EXPECT_CALL(*delegate(), Commit(base::StringPiece16(u"composition")))
+      .Times(1);
   const size_t composition_text_length =
       text_input()->ConfirmCompositionText(/*keep_selection=*/false);
   EXPECT_EQ(composition_text_length, 11u);
@@ -468,12 +469,14 @@
 TEST_F(TextInputTest, ConfirmCompositionTextKeepSelection) {
   constexpr char16_t kCompositionText[] = u"composition";
   SetCompositionText(kCompositionText);
+  text_input()->SetEditableSelectionRange(gfx::Range(2, 3));
   text_input()->SetSurroundingText(kCompositionText, gfx::Range(2, 3));
 
   EXPECT_CALL(*delegate(), SetCursor(base::StringPiece16(kCompositionText),
                                      gfx::Range(2, 3)))
       .Times(1);
-  EXPECT_CALL(*delegate(), Commit(std::u16string(kCompositionText))).Times(1);
+  EXPECT_CALL(*delegate(), Commit(base::StringPiece16(kCompositionText)))
+      .Times(1);
   const uint32_t composition_text_length =
       text_input()->ConfirmCompositionText(/*keep_selection=*/true);
   EXPECT_EQ(composition_text_length, static_cast<uint32_t>(11));
@@ -493,9 +496,9 @@
 }
 
 TEST_F(TextInputTest, Commit) {
-  std::u16string s = u"commit text";
+  constexpr char16_t s[] = u"commit text";
 
-  EXPECT_CALL(*delegate(), Commit(s)).Times(1);
+  EXPECT_CALL(*delegate(), Commit(base::StringPiece16(s))).Times(1);
   text_input()->InsertText(
       s, ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
   EXPECT_FALSE(text_input()->HasCompositionText());
@@ -534,9 +537,11 @@
   TestingInputMethodObserver observer(GetInputMethod());
 
   gfx::Range range;
-  EXPECT_FALSE(text_input()->GetTextRange(&range));
+  EXPECT_TRUE(text_input()->GetTextRange(&range));
+  EXPECT_EQ(gfx::Range(0, 0), range);
   EXPECT_FALSE(text_input()->GetCompositionTextRange(&range));
-  EXPECT_FALSE(text_input()->GetEditableSelectionRange(&range));
+  EXPECT_TRUE(text_input()->GetEditableSelectionRange(&range));
+  EXPECT_EQ(gfx::Range(0, 0), range);
   std::u16string got_text;
   EXPECT_FALSE(text_input()->GetTextFromRange(gfx::Range(0, 1), &got_text));
 
@@ -565,26 +570,27 @@
   size_t composition_size = std::string("composition").size();
   SetCompositionText(u"composition");
   EXPECT_TRUE(text_input()->GetCompositionTextRange(&range));
-  EXPECT_EQ(gfx::Range(11, 11 + composition_size).ToString(), range.ToString());
+  EXPECT_EQ(gfx::Range(11, 11 + composition_size), range);
   EXPECT_TRUE(text_input()->GetEditableSelectionRange(&range));
-  EXPECT_EQ(gfx::Range(11, 12).ToString(), range.ToString());
+  EXPECT_EQ(gfx::Range(11 + composition_size), range);
 }
 
 TEST_F(TextInputTest, SetEditableSelectionRange) {
   SetCompositionText(u"text");
-  text_input()->SetSurroundingText(u"text", gfx::Range(1, 2));
+  text_input()->SetSurroundingText(u"text", gfx::Range(4, 4));
 
   // Should commit composition text and set selection range.
   EXPECT_CALL(*delegate(),
               SetCursor(base::StringPiece16(u"text"), gfx::Range(0, 3)))
       .Times(1);
-  EXPECT_CALL(*delegate(), Commit(std::u16string(u"text"))).Times(1);
+  EXPECT_CALL(*delegate(), Commit(base::StringPiece16(u"text"))).Times(1);
   EXPECT_TRUE(text_input()->SetEditableSelectionRange(gfx::Range(0, 3)));
   testing::Mock::VerifyAndClearExpectations(delegate());
 }
 
 TEST_F(TextInputTest, GetTextFromRange) {
   std::u16string text = u"surrounding text";
+  text_input()->SetEditableSelectionRange(gfx::Range(11, 12));
   text_input()->SetSurroundingText(text, gfx::Range(11, 12));
 
   const struct {
@@ -682,23 +688,19 @@
   std::u16string composition_text = u" and composition";
 
   ui::CompositionText t = GenerateCompositionText(composition_text);
-  EXPECT_CALL(*delegate(), SetCompositionText)
-      .WillOnce(
-          testing::Invoke([this, cursor_pos, surrounding_text,
-                           composition_text](const ui::CompositionText& t) {
-            EXPECT_EQ(t.text, composition_text);
-            // Simulate surrounding text update from wayland.
-            auto before = surrounding_text.substr(0, cursor_pos.GetMin());
-            auto after = surrounding_text.substr(cursor_pos.GetMin());
-            auto new_surrounding = before + t.text + after;
-            auto new_cursor_pos = cursor_pos.GetMin() + t.text.length();
-            text_input()->SetSurroundingText(
-                new_surrounding, gfx::Range(new_cursor_pos, new_cursor_pos));
-          }));
+  EXPECT_CALL(*delegate(), SetCompositionText(_)).Times(1);
 
   text_input()->SetSurroundingText(surrounding_text, cursor_pos);
   text_input()->SetCompositionText(t);
 
+  // Simulate surrounding text update from wayland.
+  auto before = surrounding_text.substr(0, cursor_pos.GetMin());
+  auto after = surrounding_text.substr(cursor_pos.GetMin());
+  auto new_surrounding = before + t.text + after;
+  auto new_cursor_pos = cursor_pos.GetMin() + t.text.length();
+  text_input()->SetSurroundingText(new_surrounding,
+                                   gfx::Range(new_cursor_pos, new_cursor_pos));
+
   gfx::Range text_range;
   std::u16string text;
   EXPECT_TRUE(text_input()->GetTextRange(&text_range));
diff --git a/components/exo/wayland/zaura_shell.cc b/components/exo/wayland/zaura_shell.cc
index 63f580d..b549d02 100644
--- a/components/exo/wayland/zaura_shell.cc
+++ b/components/exo/wayland/zaura_shell.cc
@@ -955,6 +955,7 @@
 const uint32_t kFixedBugIds[] = {
     1151508,  // Do not remove, used for sanity checks by
               // |wayland_simple_client|
+    1352584,
 };
 
 // Implements aura shell interface and monitors workspace state needed
diff --git a/components/exo/wayland/zwp_text_input_manager.cc b/components/exo/wayland/zwp_text_input_manager.cc
index 38a4cba..6fbfd3f 100644
--- a/components/exo/wayland/zwp_text_input_manager.cc
+++ b/components/exo/wayland/zwp_text_input_manager.cc
@@ -138,7 +138,7 @@
     wl_client_flush(client());
   }
 
-  void Commit(const std::u16string& text) override {
+  void Commit(base::StringPiece16 text) override {
     zwp_text_input_v1_send_commit_string(
         text_input_,
         serial_tracker_->GetNextSerial(SerialTracker::EventType::OTHER_EVENT),
diff --git a/components/language/content/browser/ulp_language_code_locator/ulp_language_code_locator.cc b/components/language/content/browser/ulp_language_code_locator/ulp_language_code_locator.cc
index ce3ec47..1b88af4 100644
--- a/components/language/content/browser/ulp_language_code_locator/ulp_language_code_locator.cc
+++ b/components/language/content/browser/ulp_language_code_locator/ulp_language_code_locator.cc
@@ -54,8 +54,8 @@
   S2CellId cell(S2LatLng::FromDegrees(latitude, longitude));
   std::vector<std::string> languages;
 
-  ListPrefUpdate update(prefs_, kCachedGeoLanguagesPref);
-  base::Value::List& celllangs_cached = update->GetList();
+  ScopedListPrefUpdate update(prefs_, kCachedGeoLanguagesPref);
+  base::Value::List& celllangs_cached = update.Get();
   for (size_t index = 0; index < serialized_langtrees_.size(); index++) {
     std::string language;
 
diff --git a/components/language/core/browser/language_prefs.cc b/components/language/core/browser/language_prefs.cc
index a4995173..756d923 100644
--- a/components/language/core/browser/language_prefs.cc
+++ b/components/language/core/browser/language_prefs.cc
@@ -147,13 +147,12 @@
 }
 
 void LanguagePrefs::SetULPLanguages(std::vector<std::string> ulp_languages) {
-  ListPrefUpdate update(prefs_, language::prefs::kULPLanguages);
-  base::Value::List& ulp_pref_list = update->GetList();
-  ulp_pref_list.clear();
+  base::Value::List ulp_pref_list;
   ulp_pref_list.reserve(ulp_languages.size());
   for (const auto& language : ulp_languages) {
     ulp_pref_list.Append(language);
   }
+  prefs_->SetList(language::prefs::kULPLanguages, std::move(ulp_pref_list));
 }
 #endif
 
diff --git a/components/language/core/browser/url_language_histogram.cc b/components/language/core/browser/url_language_histogram.cc
index 018cdb1..6afcecf5 100644
--- a/components/language/core/browser/url_language_histogram.cc
+++ b/components/language/core/browser/url_language_histogram.cc
@@ -116,8 +116,8 @@
 }
 
 void UrlLanguageHistogram::OnPageVisited(const std::string& language_code) {
-  DictionaryPrefUpdate update(pref_service_, kUrlLanguageHistogramCounters);
-  base::Value::Dict& dict = update->GetDict();
+  ScopedDictPrefUpdate update(pref_service_, kUrlLanguageHistogramCounters);
+  base::Value::Dict& dict = update.Get();
   // If the key |language_code| does not exist, |counter_value| stays 0.
   int counter_value = dict.FindInt(language_code).value_or(0);
   dict.Set(language_code, counter_value + 1);
diff --git a/components/navigation_metrics/navigation_metrics.cc b/components/navigation_metrics/navigation_metrics.cc
index fa971f0..eab6d21 100644
--- a/components/navigation_metrics/navigation_metrics.cc
+++ b/components/navigation_metrics/navigation_metrics.cc
@@ -52,6 +52,7 @@
     "chrome-extension",
     "view-source",
     "externalfile",
+    "isolated-app",
 };
 
 static_assert(std::size(kSchemeNames) == static_cast<int>(Scheme::COUNT),
diff --git a/components/navigation_metrics/navigation_metrics.h b/components/navigation_metrics/navigation_metrics.h
index ee7289f..ba393d2d 100644
--- a/components/navigation_metrics/navigation_metrics.h
+++ b/components/navigation_metrics/navigation_metrics.h
@@ -51,6 +51,7 @@
   CHROME_EXTENSION = 15,
   VIEW_SOURCE = 16,
   EXTERNALFILE = 17,
+  ISOLATED_APP = 18,
   COUNT,
 };
 
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_am.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_am.xtb
index 5f5818f0..a54c1b5 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_am.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_am.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="am">
+<translation id="101606685846791463">የአሳሸ መሸጎጫን ማጽዳት፣ ታሪክን ማጽዳት፣ ኩኪዎችን መሰረዝ፣ የአሰሳ ታሪክን መደምሰስ</translation>
+<translation id="132297926492792130">የእኔን google መለያ መቆጣጠር፣ google መለያን ማስተካከል፣ google መለያን ማስተዳደር፣ የእኔን google መለያ ማስተዳደር</translation>
+<translation id="1455865776268085776">ወደ ማንነት የማያሳውቅ ሁነታ መግባት፣ አዲስ ማንነትን የማያሳውቅ መስኮት፣ ማንነትን የማያሳውቅ ትር መክፈት</translation>
 <translation id="1545931455576308147">ይህን ገጽ ያጋሩ፣ ይህን ትር ያጋሩ</translation>
 <translation id="1912698329644085067">የchrome ቅንብሮችን ይቀይሩ፣ ቅንብሮችን ያቀናብሩ</translation>
+<translation id="1938436187879863297">google keep ማስታወሻን መፍጠር፣ google ማስታወሻን መፍጠር፣ አዲስ google keep ማስታወሻን መፍጠር፣ አዲስ google ማስታወሻ፣ google ማስታወሻን መጀመር</translation>
 <translation id="2003251155164817216">የchrome ገጽታን ያብጁ፣ የchrome ገጽታዎችን ያቀናብሩ</translation>
+<translation id="2757458512261408467">የgoogle ቀን መቁጠሪያ ግብዣን መፍጠር፣ የgoogle የቀን መቁጠሪያ ክስተትን መፍጠር፣ አዲስ የቀን መቁጠሪያ ግብዣን መፍጠር፣ አዲስ የቀን መቁጠሪያ ክስተት፣ አዲስ የgoogle ቀን መቁጠሪያ ግብዣ</translation>
+<translation id="2903767089701932453">የChrome ኩኪ ቅንብሮች፣ የኩኪዎች አጠቃቀም፣ ሁሉንም የሦስተኛ ወገን ኩኪዎች መከልከል፣ የኩኪ ቅንብሮችን ማስተዳደር፣ ኩኪዎችን ማስተዳደር</translation>
+<translation id="2941773220794601465">ይህን ገጽ መተርጎም፣ ድረ-ገጽን መተርጎም</translation>
+<translation id="2973110773361184993">የጣቢያ ፈቃዶችን ማስተካከል፣ ፈቃዶችን መለወጥ፣ የጣቢያ ቅንብሮችን መቆጣጠር፣የጣቢያ ቅንብሮችን ማስተዳደር፣ የChrome ጣቢያ ቅንብሮች</translation>
+<translation id="3371457011763794419">chromeን ማዘመን፣ አሳሽን ማላቅ</translation>
 <translation id="3489247412199563299">የchrome ተደራሽነትን ያብጁ፣ የተደራሽነት ቅንብሮችን ያቀናብሩ</translation>
+<translation id="3936847108123063274">google ጣቢያን መፍጠር፣ የgoogle ድር ጣቢያ መስራት፣ አዲስ google ጣቢያ፣ አዲስ google ጣቢያ መክፈት</translation>
+<translation id="4165988127016746956">google ቅጽን መፍጠር፣ አዲስ google ቅጽ ማዘጋጀት፣ አዲስ google ቅጽ፣ የgoogle የዳሰሳ ጥናትን መጀመር</translation>
 <translation id="4367205929005172598">የጠፋውን ስልክ አግኝ፣ የእኔን መሣሪያ አግኝ</translation>
 <translation id="4692900934258103694">ውስጥ፣ በውስጥ፣ ለ፣ እንዴት፣ የ፣ አንድ፣ አድርግ፣ ውስጥ፣ የእኔ፣ ላይ፣ ወደ፣ ሀ፣ እኔ</translation>
+<translation id="4834023075966161189">google ሰነድን መፍጠር፣ አዲስ google ሰነድን ማዘጋጀት፣ google ሰነድን መክፈት</translation>
 <translation id="4922709528022057939">Chrome Dino፣ የዳይኖ ጨዋታ፣ የዳይኖ ሩጫን ያጫውቱ</translation>
 <translation id="5061612070235737664">የአሳሽ ቅርጸ-ቁምፊን፣ የchrome ቅርጸ-ቁምፊዎችን ይቀይሩ</translation>
+<translation id="6413237123574479071">የመክፈያ ዘዴዎችን ማስተዳደር፣ ክሬዲት ካርድን ማዘመን</translation>
 <translation id="6654270263159958770">ብጁ ፍለጋን ያክሉ፣ የፍለጋ ፕሮግራሞችን፣ የፍለጋ ፕሮግራሞችን ያቀናብሩ</translation>
+<translation id="7081494400361697539">google ሉህ መፍጠር፣ የመሥሪያ ቦታ የተመን ሉህን መፍጠር፣ አዲስ google ሉህ፣ አዲስ google ሉህን መጀመር</translation>
+<translation id="7153639895359139570">አድራሻን ማከል፣ የሚላክበት አድራሻን መለወጥ፣ አድራሻዎችን ማርትዕ፣ አድራሻዎችን ማስተዳደር</translation>
+<translation id="7242693601647412075">የደህንነት ቅንብሮችን ማስተዳደር</translation>
+<translation id="7441773108452086364">የgmail የይለፍ ቃልን መለወጥ፣ የእኔን የGmail የይለፍ ቃል መለወጥ፣ የgoogle የይለፍ ቃል ለውጥ፣ የGmail መለያ የይለፍ ቃልን ዳግም ማስጀመር</translation>
 <translation id="7660956169713698963">የchromeos ተደራሽነትን ያብጁ፣ የተደራሽነት ቅንብሮችን ያቀናብሩ</translation>
 <translation id="7700496593710078083">የchrome ታሪክን ይመልከቱ፣ የአሰሳ ታሪክን ይመልከቱ</translation>
 <translation id="7739523284295786564">የchrome ውርዶችን ያቀናብሩ፣ ውርዶችን ይመልከቱ</translation>
+<translation id="7873993277886791795">google ስላይድን መፍጠር፣ አዲስ ድርድር መስራት፣ አዲስ google የዝግጅት አቀራረብ፣ google ፕሬሶን መጀመር</translation>
 <translation id="7992725801741093524">የgoogle ግላዊነት ቅንብሮችን ይቀይሩ፣ የgoogle ግላዊነትን ያቀናብሩ</translation>
 <translation id="8020024640114692614">ሁልጊዜ አገናኞችን በchrome ውስጥ ይክፈቱ፣ ሁልጊዜ chromeን ይጠቀሙ፣ chrome እንደ ነባሪ፣ ነባሪ አሳሽ፣ safariን ሰርዝ፣ እንዴት chromeን ነባሪ አሳሽ ማድረግ እንደሚቻል፣ ዋና አሳሽ፣ chromeን ነባሪ አድርግ፣ chromeን ነባሪ አሳሽ አድርግ፣ chromeን የእኔ ነባሪ አሳሽ አድርግ፣ አገናኝን በchrome ክፈት፣ chromeን እንደ ነባሪ አሳሽ ምረጥ፣ ዋና አሳሽ፣ safariን አስወግድ፣ chrome ውስጥ ፈልግ፣ chromeን እንደ ነባሪ አዋቅር፣ chromeን እንደ ነባሪ አሳሽ አዋቅር፣ መደበኛ አሳሽ</translation>
+<translation id="8189600756055704659">የChrome አሳሸ ስምረት ቅንብሮችን መለወጥ፣ Chrome ስምረትን መቀየር፣ ስምረትን ማርትዕ፣ የስምረት ቅንብሮችን ማርትዕ፣ ስምረትን ማስተዳደር</translation>
+<translation id="8307473667919507216">የchrome የደህንነት ፍተሻን ማሄድ፣ የደህንነት ፍተሻን ማሄድ</translation>
 <translation id="8319253638505741466">ማንነት የማያሳውቅ መስኮትን ይዝጉ፣ ማንነት የማያሳውቅ ይጨርሱ</translation>
+<translation id="8350110529112037703">የchrome የይለፍ ቃላትን ማስተዳደር፣ በchrome ውስጥ የይለፍ ቃልን ማየት</translation>
+<translation id="9015559449837241926">የChrome ባህሪያት፣ የgoogle chrome ባህሪያትን ማወቅ፣ አዲስ የgoogle chrome ባህሪያት፣ የChrome ጠቃሚ ምክሮችን መመልከት</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ar.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ar.xtb
index 5cf51ee..c0ff7f1 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ar.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ar.xtb
@@ -1,20 +1,42 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ar">
+<translation id="101606685846791463">محو ذاكرة التخزين المؤقت للمتصفّح، محو ذاكرة التخزين المؤقت في المتصفّح، محو السجل، حذف بيانات السجل، حذف السجل، إزالة السجل، حذف ملفات تعريف الارتباط، إزالة ملفات تعريف الارتباط، محو سجل التصفّح، إزالة سجل التصفّح، حذف سجل التصفّح</translation>
+<translation id="132297926492792130">التحكّم في حسابي على google، التحكّم في حساب google، التحكّم في حسابي في google، إصلاح حساب google، حلّ مشاكل حساب google، إدارة حساب google، إدارة حسابي على google، إدارة حسابي في google</translation>
+<translation id="1455865776268085776">الدخول إلى وضع التصفّح المتخفي، استخدام وضع التصفّح المتخفي، تفعيل وضع التصفّح المتخفي، نافذة جديدة للتصفّح المتخفي، نافذة جديدة في وضع التصفّح المتخفي، فتح علامة تبويب في وضع التصفّح المتخفي، فتح علامة تبويب للتصفّح المتخفي</translation>
 <translation id="1545931455576308147">مشاركة هذه الصفحة، مشاركة علامة التبويب هذه</translation>
 <translation id="1912698329644085067"> تغيير إعدادات كروم، تغيير إعدادات Chrome، إدارة الإعدادات</translation>
+<translation id="1938436187879863297">إنشاء ملاحظة في google keep، إنشاء ملاحظة على google keep، إنشاء ملاحظة بواسطة google keep، إنشاء ملاحظة من خلال google keep، إنشاء ملاحظة في google، إنشاء ملاحظة على google، إنشاء ملاحظة بواسطة google، إنشاء ملاحظة من خلال google، إنشاء ملاحظة جديدة في google keep، إنشاء ملاحظة جديدة على google keep، إنشاء ملاحظة جديدة بواسطة google keep، إنشاء ملاحظة جديدة من خلال google keep، ملاحظة جديدة في google، ملاحظة جديدة على google، ملاحظة جديدة بواسطة google، ملاحظة جديدة من خلال google، بدء ملاحظة في google، بدء ملاحظة على google، بدء ملاحظة بواسطة google، بدء ملاحظة من خلال google</translation>
 <translation id="2003251155164817216">تخصيص مظهر Chrome، إدارة المظاهر في Chrome</translation>
+<translation id="2757458512261408467">إنشاء دعوة في تقويم google، إنشاء دعوة على تقويم google، إنشاء دعوة من خلال تقويم google، إنشاء دعوة من تقويم google، إنشاء حدث في تقويم google، إنشاء حدث على تقويم google، إنشاء حدث من خلال تقويم google، إنشاء حدث من تقويم google، إنشاء دعوة جديدة في التقويم، إنشاء دعوة جديدة على التقويم، إنشاء دعوة جديدة من خلال التقويم، إنشاء دعوة جديدة من التقويم، حدث جديد في التقويم، حدث جديد على التقويم، حدث جديد من خلال التقويم، حدث جديد من التقويم، دعوة جديدة في تقويم google، دعوة جديدة على تقويم google، دعوة جديدة من خلال تقويم google، دعوة جديدة من تقويم google</translation>
+<translation id="2903767089701932453">إعدادات ملفات تعريف الارتباط في chrome، إعدادات ملفات تعريف الارتباط في متصفّح chrome، استخدام ملفات تعريف الارتباط، عدم السماح بكل ملفات تعريف الارتباط التابعة لجهات خارجية، حظر كل ملفات تعريف الارتباط التابعة لجهات خارجية، منع كل ملفات تعريف الارتباط التابعة لجهات خارجية، إدارة إعدادات ملفات تعريف الارتباط، ضبط إعدادات ملفات تعريف الارتباط، تعديل إعدادات ملفات تعريف الارتباط، تغيير إعدادات ملفات تعريف الارتباط، إدارة ملفات تعريف الارتباط</translation>
+<translation id="2941773220794601465">ترجمة هذه الصفحة، ترجمة صفحة الويب</translation>
+<translation id="2973110773361184993">ضبط أذونات المواقع الإلكترونية، تعديل أذونات المواقع الإلكترونية، تغيير أذونات المواقع الإلكترونية، تغيير الأذونات، تعديل الأذونات، ضبط الأذونات، التحكّم في الأذونات، إدارة الأذونات، إدارة إعدادات المواقع الإلكترونية، التحكّم في إعدادات المواقع الإلكترونية، ضبط إعدادات المواقع الإلكترونية، إعدادات المواقع الإلكترونية في chrome، إعدادات المواقع الإلكترونية على chrome، إعدادات المواقع الإلكترونية من خلال chrome</translation>
+<translation id="3371457011763794419">تحديث chrome، تحديث متصفّح chrome، تثبيت أحدث إصدار من chrome، تنزيل أحدث إصدار من متصفّح chrome، ترقية المتصفّح</translation>
 <translation id="3489247412199563299">تخصيص أدوات تسهيل الاستخدام في Chrome، إدارة إعدادات تسهيل الاستخدام</translation>
+<translation id="3936847108123063274">إنشاء موقع مصمَّم في "مواقع google"، إنشاء موقع على google، إنشاء موقع بواسطة google، إنشاء موقع من خلال google، إنشاء موقع إلكتروني على google، إنشاء موقع إلكتروني بواسطة google، إنشاء موقع إلكتروني من خلال google، موقع إلكتروني جديد على google، موقع إلكتروني جديد بواسطة google، موقع إلكتروني جديد من خلال google، فتح موقع إلكتروني جديد على google، فتح موقع إلكتروني جديد بواسطة google، فتح موقع إلكتروني جديد من خلال google</translation>
+<translation id="4165988127016746956">إنشاء نموذج google، إنشاء نموذج على google، إنشاء نموذج بواسطة google، إنشاء نموذج من خلال google، إنشاء نموذج google جديد، إنشاء نموذج جديد على google، إنشاء نموذج جديد بواسطة google، إنشاء نموذج جديد من خلال google، نموذج google جديد، نموذج جديد على google، نموذج جديد بواسطة google، نموذج جديد من خلال google، بدء استطلاع على google، بدء استطلاع بواسطة google، بدء استطلاع من خلال google</translation>
 <translation id="4367205929005172598">العثور على هاتف مفقود، العثور على جهازي، أين هاتفي
 </translation>
 <translation id="4692900934258103694">داخل، ضمن، لـ، كيف، الـ، تنفيذ، في، الخاص بي، على، إلى</translation>
+<translation id="4834023075966161189">إنشاء مستند google، إنشاء مستند على google، إنشاء مستند بواسطة google، إنشاء مستند من خلال google، إنشاء مستند google جديد، إنشاء مستند جديد على google، إنشاء مستند جديد من خلال google، فتح مستند google، فتح مستند على google، فتح مستند من خلال google</translation>
 <translation id="4922709528022057939">لعبة الديناصور في Chrome، لعبة الديناصور، تشغيل لعبة الديناصور</translation>
 <translation id="5061612070235737664">تغيير الخط في المتصفّح، الخطوط في Chrome</translation>
+<translation id="6413237123574479071">إدارة طرق الدفع، تعديل طرق الدفع، تغيير طرق الدفع، تعديل معلومات بطاقة الائتمان، تغيير معلومات بطاقة الائتمان</translation>
 <translation id="6654270263159958770">إضافة بحث مخصَّص، إدارة محركات البحث، محركات البحث</translation>
+<translation id="7081494400361697539">إنشاء جدول بيانات google، إنشاء جدول بيانات على google، إنشاء جدول بيانات بواسطة google، إنشاء جدول بيانات من خلال google، إنشاء جدول بيانات في workspace، إنشاء جدول بيانات على workspace، إنشاء جدول بيانات بواسطة workspace، إنشاء جدول بيانات من خلال workspace، جدول بيانات google جديد، جدول بيانات جديد على google، جدول بيانات جديد بواسطة google، جدول بيانات جديد من خلال google، بدء جدول بيانات google جديد، بدء جدول بيانات جديد على google، بدء جدول بيانات جديد بواسطة google، بدء جدول بيانات جديد من خلال google</translation>
+<translation id="7153639895359139570">إضافة عنوان، إدخال عنوان، تغيير عنوان الشحن، تغيير مكان الشحن، تغيير وجهة الشحن، تعديل العناوين، تغيير العناوين، إدارة العناوين</translation>
+<translation id="7242693601647412075">إدارة إعدادات الأمان، ضبط إعدادات الأمان، التحكّم في إعدادات الأمان</translation>
+<translation id="7441773108452086364">تغيير كلمة مرور gmail، تغيير كلمة المرور في gmail، تغيير كلمة مرور حسابي على gmail، تغيير كلمة مرور حسابي في gmail، تغيير كلمة مرور google، تغيير كلمة مرور الحساب في google، تغيير كلمة مرور الحساب على google، تغيير كلمة مرور حساب google، إعادة ضبط كلمة مرور حساب gmail، إعادة ضبط كلمة المرور الحساب في gmail، إعادة ضبط كلمة مرور الحساب على gmail</translation>
 <translation id="7660956169713698963">تخصيص أدوات تسهيل الاستخدام في نظام التشغيل Chrome، إدارة إعدادات تسهيل الاستخدام</translation>
 <translation id="7700496593710078083">عرض سجلّ Chrome، الاطّلاع على سجلّ التصفّح</translation>
 <translation id="7739523284295786564">إدارة عمليات التنزيل في Chrome، عرض عمليات التنزيل</translation>
+<translation id="7873993277886791795">إنشاء عرض تقديمي في google، إنشاء عرض تقديمي بواسطة google، إنشاء عرض تقديمي على google، إنشاء عرض تقديمي من خلال google، إنشاء عرض تقديمي من google، إنشاء عرض تقديمي جديد، عرض تقديمي جديد على google، عرض تقديمي جديد من خلال google، عرض تقديمي جديد بواسطة google، عرض تقديمي جديد من google، بدء عرض تقديمي على google، بدء عرض تقديمي من خلال google، بدء عرض تقديمي بواسطة google، بدء عرض تقديمي من google</translation>
 <translation id="7992725801741093524">تغيير إعدادات الخصوصية في Google، إدارة الخصوصية في Google</translation>
 <translation id="8020024640114692614">فتح الروابط دائمًا في chrome، استخدام chrome دائمًا، استخدام chrome كمتصفِّح تلقائي، المتصفِّح التلقائي، حذف safari، كيفية ضبط chrome كمتصفِّح تلقائي، المتصفِّح الرئيسي، ضبط chrome كمتصفِّح تلقائي، ضبط متصفّح chrome كمتصفِّح تلقائي، اختيار chrome كمتصفِّح تلقائي، فتح الروابط في chrome، جعل chrome المتصفِّح التلقائي، المتصفّح الأساسي، إزالة safari، البحث في chrome، اختيار chrome ليكون المتصفِّح التلقائي، ضبط chrome ليكون المتصفِّح التلقائي، المتصفِّح العادي</translation>
+<translation id="8189600756055704659">تغيير إعدادات مزامنة متصفّح chrome، ضبط إعدادات مزامنة متصفح chrome، تغيير إعدادات المزامنة في chrome، ضبط إعدادات المزامنة في chrome، تغيير إعدادات مزامنة chrome، ضبط إعدادات مزامنة chrome، تعديل المزامنة، تعديل إعدادات المزامنة، تغيير إعدادات المزامنة، ضبط إعدادات المزامنة، إدارة المزامنة، التحكّم في المزامنة</translation>
+<translation id="8307473667919507216">تشغيل ميزة "التحقّق من الأمان" في chrome، ميزة التحقق من الأمان في متصفح chrome، تشغيل التحقّق من الأمان في chrome، تشغيل ميزة "التحقّق من الأمان"، ميزة "التحقّق من الأمان"، تشغيل التحقّق من الأمان</translation>
 <translation id="8319253638505741466">إغلاق نافذة التصفّح المتخفي، إنهاء وضع التصفّح المتخفي</translation>
+<translation id="8350110529112037703">إدارة كلمات المرور في متصفِّح chrome، إدارة كلمات المرور في chrome، التحكّم في كلمات المرور في متصفِّح chrome، التحكّم في كلمات المرور في chrome، عرض كلمة المرور في متصفّح chrome، عرض كلمة المرور في chrome</translation>
+<translation id="9015559449837241926">ميزات chrome، الميزات في chrome، ميزات متصفّح chrome، التعرّف على ميزات google chrome، الاطّلاع على ميزات google chrome، ميزات google chrome الجديدة، الميزات الجديدة في google chrome، الاطّلاع على نصائح بشأن chrome، نصائح عن استخدام chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_es-419.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_es-419.xtb
index 92cf206..d9f7996 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_es-419.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_es-419.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="es-419">
+<translation id="101606685846791463">borrar caché del navegador, borrar historial, borrar cookies, borrar historial de navegación, borrar datos de navegación</translation>
+<translation id="132297926492792130">controlar mi cuenta de google, cambiar mi cuenta de google, administrar mi cuenta de google, administrar cuentas de google, administrar mi cuenta</translation>
+<translation id="1455865776268085776">ingresar al modo incógnito, nueva ventana de incógnito, abrir pestaña de incógnito, usar modo incógnito</translation>
 <translation id="1545931455576308147">compartir esta página, compartir esta pestaña</translation>
 <translation id="1912698329644085067">cambiar la configuración de chrome, administrar la configuración, cambiar los ajustes de chrome, administrar los ajustes, gestionar los ajustes</translation>
+<translation id="1938436187879863297">crear una nota de google keep, crear nueva nota, crear una nueva nota de google keep, nueva nota de google, iniciar nota de google</translation>
 <translation id="2003251155164817216">personalizar la apariencia de chrome, administrar los temas de chrome, cambiar la apariencia de chrome, cambiar los temas de chrome, cambiar el tema de chrome</translation>
+<translation id="2757458512261408467">crear invitación con calendario de google, crear evento de calendario de google, crear nueva invitación de calendario, nuevo evento de calendario, nueva invitación de calendario de google, crear invitación</translation>
+<translation id="2903767089701932453">configuración de cookies de chrome, uso de cookies, inhabilitar todas las cookies de terceros, administrar configuración de cookies, administrar cookies, configuración de cookies</translation>
+<translation id="2941773220794601465">traducir esta página, traducir página web, traducir la página, traducir</translation>
+<translation id="2973110773361184993">ajustar permisos del sitio, cambiar permisos, controlar configuración del sitio, administrar configuración del sitio, configuración de chrome, administrar almacenamiento de datos</translation>
+<translation id="3371457011763794419">actualizar chrome, actualizar navegador, actualizar navegador chrome</translation>
 <translation id="3489247412199563299">personalizar la accesibilidad de chrome, personalizar configuración de accesibilidad, administrar la configuración de accesibilidad, gestionar los ajustes de accesibilidad, modificar los ajustes de accesibilidad, cambiar los ajustes de accesibilidad, cambiar la configuración de accesibilidad, cambiar configuración de accesibilidad, personalizar los ajustes de accesibilidad, personalizar la configuración de accesibilidad</translation>
+<translation id="3936847108123063274">crear sitio de google, crear sitio web de google, nuevo sitio de google, abrir nuevo sitio de google, nuevo sitio en google</translation>
+<translation id="4165988127016746956">crear formulario de google, crear nuevo formulario de google, nuevo formulario, iniciar encuesta de google, crear formulario</translation>
 <translation id="4367205929005172598">encontrar teléfono perdido, encontrar mi dispositivo, encontrar mi teléfono, buscar mi teléfono, buscar mi dispositivo, localizar mi teléfono, localizar mi dispositivo, dónde está mi teléfono</translation>
 <translation id="4692900934258103694">dentro, en el transcurso de, para, cómo, el, la, un, una, hacer, en, mi, yo</translation>
+<translation id="4834023075966161189">crear documento de google, crear documento nuevo, abrir documento de google, crear nuevo documento</translation>
 <translation id="4922709528022057939">juego del dinosaurio de chrome, juego del dinosaurio, jugar al juego del dinosaurio, jugar al dinosaurio, jugar al dinosaurio de chrome, dinosaurio de chrome</translation>
 <translation id="5061612070235737664">cambiar la fuente del navegador, fuentes de chrome, cambiar fuente de chrome, modificar fuente de chrome</translation>
+<translation id="6413237123574479071">administrar formas de pago, actualizar tarjeta de crédito, cambiar formas de pago, actualizar información de pago</translation>
 <translation id="6654270263159958770">agregar búsqueda personalizada, administrar motores de búsqueda, motores de búsqueda</translation>
+<translation id="7081494400361697539">crear hoja de cálculo de google, crear hoja de cálculo de workspace, nueva hoja de cálculo de google, crear nueva hoja de cálculo</translation>
+<translation id="7153639895359139570">agregar dirección, cambiar dirección de envío, editar direcciones, administrar direcciones, modificar dirección</translation>
+<translation id="7242693601647412075">administrar la configuración de seguridad, navegación segura, configuración de seguridad, configuración de chrome, administrar la navegación segura</translation>
+<translation id="7441773108452086364">cambiar la contraseña de Gmail, cambiar mi contraseña de Gmail, cambiar la contraseña de google, restablecer la contraseña de mi cuenta de Gmail, cambiar contraseña de mi cuenta de google</translation>
 <translation id="7660956169713698963">personalizar la accesibilidad de chromeos, administrar la configuración de accesibilidad, gestionar los ajustes de accesibilidad, modificar la configuración de accesibilidad, cambiar los ajustes de accesibilidad, ajustes de accesibilidad</translation>
 <translation id="7700496593710078083">ver el historial de chrome, ver el historial de navegación, consultar el historial de chrome, ir al historial de chrome, consultar el historial de navegación, ir al historial de navegación</translation>
 <translation id="7739523284295786564">administrar las descargas de chrome, ver las descargas, gestionar las descargas de chrome, ir a las descargas</translation>
+<translation id="7873993277886791795">crear presentación de google, crear nueva presentación, nueva presentación de google, iniciar presentación de google</translation>
 <translation id="7992725801741093524">cambiar la configuración de privacidad de google, cambiar configuración de privacidad, administrar la privacidad de google, cambiar los ajustes de privacidad de google, configuración de privacidad, ajustes de privacidad, editar configuración de privacidad</translation>
 <translation id="8020024640114692614">siempre abrir los vínculos en chrome, siempre usar chrome, chrome como predeterminado, navegador predeterminado, quitar safari, eliminar safari, establecer chrome como navegador predeterminado, navegador principal, establecer chrome como predeterminado, establecer chrome como mi navegador predeterminado, abrir los vínculos en chrome, seleccionar chrome como navegador predeterminado, borrar safari, buscar en chrome, navegador estándar, cómo poner chrome como predeterminado</translation>
+<translation id="8189600756055704659">cambiar la configuración de sincronización del navegador chrome, cambiar la sincronización de chrome, editar la sincronización, editar la configuración de sincronización, administrar la sincronización, administrar datos sincronizados</translation>
+<translation id="8307473667919507216">realizar verificación de seguridad de chrome, ejecutar la verificación de seguridad, verificación de seguridad, verificación de seguridad en chrome</translation>
 <translation id="8319253638505741466">cerrar la ventana de incógnito, cerrar ventana de incógnito, finalizar sesión de incógnito, terminar sesión de incógnito, salir del modo de incógnito, salir del modo incógnito</translation>
+<translation id="8350110529112037703">administrar contraseñas de chrome, ver contraseña en chrome, administrar contraseñas en chrome, configuración de contraseñas, administrar contraseñas, administrar contraseñas en la configuración</translation>
+<translation id="9015559449837241926">funciones de chrome, obtener información sobre las funciones de google chrome, nuevas funciones de chrome, ver sugerencias de chrome, nuevas funciones</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_es.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_es.xtb
index e1aec3d..73e53fbd 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_es.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_es.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="es">
+<translation id="101606685846791463">borrar la caché del navegador, borrar caché, borrar el historial, borrar historial, eliminar historial, borrar las cookies, borrar historial de navegación, eliminar cookies</translation>
+<translation id="132297926492792130">controlar mi cuenta de google, gestionar cuenta de google, solucionar problemas con la cuenta de google, gestionar mi cuenta de google</translation>
+<translation id="1455865776268085776">usar modo de incógnito, abrir ventana de incógnito, nueva ventana de incógnito, abrir pestaña de incógnito</translation>
 <translation id="1545931455576308147">compartir esta página, compartir esta pestaña, cómo compartir en el navegador, compartir pestañas, compartir páginas</translation>
 <translation id="1912698329644085067">cambiar los ajustes de Chrome, gestionar la configuración, modificar los ajustes, ajustes de Chrome</translation>
+<translation id="1938436187879863297">crear nota de google keep, crear notas de google keep, crear nota de google, escribir nota de google keep, escribir nota de google, nueva nota de google</translation>
 <translation id="2003251155164817216">personalizar el aspecto de Chrome, gestionar los temas de Chrome, cambiar el aspecto del navegador, cambiar el tema</translation>
+<translation id="2757458512261408467">crear invitación de google calendar, crear evento de google calendar, crear una invitación de google calendar, nuevo evento de calendario, nueva invitación de calendario</translation>
+<translation id="2903767089701932453">configuración de cookies de chrome, uso de cookies, no permitir todas las cookies de terceros, gestionar configuración de cookies, gestionar cookies, ajustes de cookies</translation>
+<translation id="2941773220794601465">traducir esta página, traducir página web</translation>
+<translation id="2973110773361184993">ajustar permisos del sitio, cambiar permisos del sitio, gestionar configuración de sitios, gestionar la configuración de sitios, cambiar la configuración de sitios, ajustes de sitios en chrome</translation>
+<translation id="3371457011763794419">actualizar chrome, actualizar navegador, actualizar el navegador</translation>
 <translation id="3489247412199563299">personalizar la accesibilidad de Chrome, gestionar los ajustes de accesibilidad, modificar los ajustes de accesibilidad</translation>
+<translation id="3936847108123063274">crear sitio web con google, crear sitio con google, nuevo sitio web con google, hacer un sitio web con google</translation>
+<translation id="4165988127016746956">crear formulario de google, hacer un formulario de google, nuevo formulario de google, iniciar encuesta de google</translation>
 <translation id="4367205929005172598">buscar teléfono perdido, encontrar mi dispositivo, encontrar mi teléfono, localizar mi teléfono</translation>
 <translation id="4692900934258103694">dentro, en, para, como, el, la, un, una, hacer, mi, a</translation>
+<translation id="4834023075966161189">crear documento de google, hacer un nuevo documento de google, abrir documento de google</translation>
 <translation id="4922709528022057939">el dinosaurio de Chrome, el juego del dinosaurio, jugar al juego del dinosaurio, jugar al dinosaurio de Chrome</translation>
 <translation id="5061612070235737664">cambiar fuente del navegador, fuentes de Chrome, cambiar fuente de Chrome, modificar fuentes</translation>
+<translation id="6413237123574479071">gestionar métodos de pago, actualizar tarjeta de crédito, métodos de pago, gestionar método de pago, tarjetas de crédito</translation>
 <translation id="6654270263159958770">añadir búsqueda personalizada, gestionar buscadores, buscadores, añadir buscador, modificar buscadores</translation>
+<translation id="7081494400361697539">crear hoja de cálculo de google, crear hoja de cálculo, nueva hoja de cálculo de google, crear hoja de cálculo de workspace, empezar nueva hoja de cálculo de google</translation>
+<translation id="7153639895359139570">añadir dirección, cambiar dirección, gestionar dirección de envío, cambiar dirección de envío, modificar dirección, añadir direcciones, gestionar direcciones, cambiar direcciones</translation>
+<translation id="7242693601647412075">gestionar ajustes de seguridad, ajustes de seguridad</translation>
+<translation id="7441773108452086364">cambiar la contraseña de gmail, cambiar contraseña de gmail, cambiar la contraseña de google, cambiar la contraseña de la cuenta de gmail</translation>
 <translation id="7660956169713698963">personalizar la accesibilidad de Chrome OS, gestionar los ajustes de accesibilidad, modificar la configuración de accesibilidad, cambiar los ajustes de accesibilidad, ajustes de accesibilidad</translation>
 <translation id="7700496593710078083">consultar el historial de Chrome, ver el historial de navegación, ver el historial</translation>
 <translation id="7739523284295786564">gestionar descargas de Chrome, ver las descargas, consultar los archivos descargados, ir a descargas</translation>
+<translation id="7873993277886791795">crear presentación de google, hacer una presentación nueva, nueva presentación de google, empezar presentación de google</translation>
 <translation id="7992725801741093524">cambiar los ajustes de privacidad de Google, gestionar la privacidad de Google, modificar la configuración de privacidad, ajustes de privacidad</translation>
 <translation id="8020024640114692614">abrir enlaces siempre en chrome, usar siempre chrome, usar chrome como navegador predeterminado, navegador predeterminado, borrar safari, eliminar safari, cómo poner chrome como predeterminado, navegador principal, hacer que chrome sea el navegador predeterminado, quiero que chrome sea mi navegador por defecto, abrir enlaces en chrome, elegir chrome como navegador predeterminado, navegador principal, buscar en chrome, configurar chrome como predeterminado</translation>
+<translation id="8189600756055704659">cambiar los ajustes de sincronización del navegador chrome, cambiar ajustes de sincronización de chrome, cambiar la sincronización de chrome, configurar sincronización, modificar la configuración de sincronización, gestionar la sincronización</translation>
+<translation id="8307473667919507216">hacer comprobación de seguridad de chrome, comprobar seguridad de chrome, seguridad de chrome</translation>
 <translation id="8319253638505741466">cerrar ventana de Incógnito, terminar sesión de Incógnito, salir del modo Incógnito</translation>
+<translation id="8350110529112037703">gestionar contraseñas de chrome, ver contraseñas de chrome, contraseñas de chrome</translation>
+<translation id="9015559449837241926">funciones de chrome, conocer funciones de chrome, nuevas funciones de chrome, ver consejos de chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_fr.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_fr.xtb
index 7745d59..c95ef65 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_fr.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_fr.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="fr">
+<translation id="101606685846791463">vider le cache du navigateur, effacer le cache du navigateur, nettoyer le cache du navigateur, effacer l'historique, supprimer les cookies, nettoyer les cookies, effacer l'historique de navigation, supprimer l'historique de navigation, vider l'historique de navigation</translation>
+<translation id="132297926492792130">contrôler mon compte google, réparer un compte google, réparer mon compte google, gérer un compte google, gérer mon compte google</translation>
+<translation id="1455865776268085776">passer en mode navigation privée, passer en navigation privée, activer le mode navigation privée, nouvelle fenêtre de navigation privée, ouvrir un onglet de navigation privée, ouvrir en navigation privée</translation>
 <translation id="1545931455576308147">partager cette page, partager cet onglet, partager onglet</translation>
 <translation id="1912698329644085067">changer les thèmes chrome, gérer les paramètres, modifier les thèmes chrome, configurer chrome, paramètres</translation>
+<translation id="1938436187879863297">créer une note google keep, créer une note google, faire une nouvelle note google keep, nouvelle note google, ouvrir une nouvelle note google, ouvrir une note google, insérer une nouvelle note google, insérer une note google</translation>
 <translation id="2003251155164817216">personnaliser l'apparence de chrome, gérer les thèmes chrome, personnaliser apparence chrome, gérer thèmes chrome, apparence chrome</translation>
+<translation id="2757458512261408467">créer une invitation google agenda, créer une invit google agenda, créer un événement google agenda, créer une invitation d'agenda, créer une invit d'agenda, nouvel événement d'agenda, nouvelle invitation google agenda, nouvelle invit google agenda</translation>
+<translation id="2903767089701932453">paramètres des cookies chrome, utilisation des cookies, interdire tous les cookies tiers, gérer les paramètres des cookies, gérer les cookies, gérer mes cookies</translation>
+<translation id="2941773220794601465">traduire cette page, traduire la page, traduire une page web, traduire la page web</translation>
+<translation id="2973110773361184993">ajuster les autorisations des sites, modifier les autorisations, changer les autorisations, contrôler les paramètres des sites, gérer les paramètres des sites, paramètres chrome pour les sites</translation>
+<translation id="3371457011763794419">mettre à jour chrome, mettre chrome à jour, mettre à niveau le navigateur, mettre le navigateur à niveau</translation>
 <translation id="3489247412199563299">personnaliser l'accessibilité de chrome, gérer les paramètres d'accessibilité, gérer l'accessibilité, personnaliser l'accessibilité, gérer accessibilité, personnaliser accessibilité, personnaliser accessibilité chrome</translation>
+<translation id="3936847108123063274">créer un site google, créer un site web google, nouveau site google, nouveau site web google, ouvrir un nouveau site google, ouvrir un nouveau site web google</translation>
+<translation id="4165988127016746956">créer un formulaire google forms, créer un formulaire, nouveau formulaire google forms, créer une enquête google, réaliser une enquête google</translation>
 <translation id="4367205929005172598">retrouver un téléphone perdu, localiser mon appareil, retrouver mon appareil, localiser mon téléphone</translation>
 <translation id="4692900934258103694">dans, pour, comment, le, la, les, un, une, des, en, à mon, ma, mes, pour, sur, afin, de, aux, d', avec</translation>
+<translation id="4834023075966161189">créer un document google doc, créer un doc google doc, nouveau document google doc, nouveau doc google doc, ouvrir un document google, ouvrir un doc google</translation>
 <translation id="4922709528022057939">dinosaure de chrome, le dinosaure de chrome, jeu avec le dinosaure, jeu de dinosaure, le jeu avec le dinosaure, le jeu du dinosaure, jouer à la course dinosaure, jouer à la course du dinosaure</translation>
 <translation id="5061612070235737664">changer la police du navigateur, polices chrome, modifier la police du navigateur, changer police chrome, modifier police chrome, changer police navigateur, modifier police navigateur</translation>
+<translation id="6413237123574479071">gérer les modes de paiement, gérer mes modes de paiement, mettre à jour la carte de crédit, actualiser la carte de crédit</translation>
 <translation id="6654270263159958770">ajouter la recherche personnalisée, gérer des moteurs de recherche, moteurs de recherche, personnaliser les moteurs de recherche, personnaliser la recherche</translation>
+<translation id="7081494400361697539">créer une feuille de calcul google sheets, créer une google sheet, créer une feuille de calcul workspace, nouvelle feuille de calcul google sheets, nouvelle google sheet, ouvrir une nouvelle feuille de calcul google sheets, ouvrir une nouvelle google sheet</translation>
+<translation id="7153639895359139570">ajouter une adresse, modifier l'adresse de livraison, modifier mon adresse de livraison, changer l'adresse de livraison, changer mon adresse de livraison, modifier des adresses, changer des adresses, gérer les adresses, gérer mes adresses</translation>
+<translation id="7242693601647412075">gérer les paramètres de sécurité, gérer mes paramètres de sécurité, gestion des paramètres de sécurité</translation>
+<translation id="7441773108452086364">changer le mot de passe gmail, modifier mon mot de passe gmail, changer de mot de passe google, changer mon mot de passe google, réinitialiser le mot de passe du compte gmail, réinitialiser le mot de passe de mon compte gmail</translation>
 <translation id="7660956169713698963">personnaliser l'accessibilité de chrome os, gérer les paramètres d'accessibilité, gérer l'accessibilité, personnaliser l'accessibilité, gérer accessibilité, personnaliser accessibilité, personnaliser accessibilité chrome os, paramètres</translation>
 <translation id="7700496593710078083">voir l'historique chrome, voir l'historique de navigation, ouvrir l'historique chrome, ouvrir l'historique de navigation, afficher l'historique chrome, afficher l'historique de navigation</translation>
 <translation id="7739523284295786564">gérer les téléchargements chrome, afficher les téléchargements, gérer téléchargements chrome, afficher téléchargements</translation>
+<translation id="7873993277886791795">créer une présentation google slides, créer une prés google slides, créer un diaporama google slides, créer un diapo google slides, créer une présentation, faire une présentation, créer une prés, créer un diapo, nouvelle présentation google, nouveau diaporama google, démarrer une présentation google, démarrer une prés google, démarrer un diapo google, commencer une présentation google</translation>
 <translation id="7992725801741093524">changer les paramètres de confidentialité google, gérer la confidentialité google, modifier les paramètres de confidentialité google, confidentialité google, paramètres</translation>
 <translation id="8020024640114692614">toujours ouvrir les liens dans chrome, toujours utiliser chrome, chrome par défaut, navigateur par défaut, supprimer safari, comment faire de chrome le navigateur par défaut, navigateur principal, définir chrome par défaut, faire de chrome le navigateur par défaut, faire de chrome mon navigateur par défaut, ouvrir les liens dans chrome, sélectionner chrome comme navigateur par défaut, choisir chrome par défaut, ouvrir les liens dans chrome, enlever safari, rechercher dans chrome, définir chrome par défaut, définir chrome comme navigateur par défaut, navigateur standard</translation>
+<translation id="8189600756055704659">modifier les paramètres de synchronisation du navigateur chrome, changer les paramètres de synchronisation du navigateur chrome, modifier les paramètres de synchro du navigateur chrome, modifier la synchronisation chrome, changer la synchronisation chrome, modifier la synchro chrome, modifier la synchronisation, changer la synchronisation, modifier la synchro, modifier les paramètres de synchronisation, changer les paramètres de synchronisation, modifier mes paramètres de synchronisation, modifier les paramètres de synchro, gérer la synchronisation</translation>
+<translation id="8307473667919507216">effectuer un contrôle de sécurité chrome, faire un contrôle de sécurité chrome, lancer un contrôle de sécurité chrome, exécuter un contrôle de sécurité chrome, effectuer un contrôle de sécurité, faire un contrôle de sécurité, lancer un contrôle de sécurité, exécuter un contrôle de sécurité</translation>
 <translation id="8319253638505741466">fermer une fenêtre de navigation privée, mettre fin à la navigation privée, fermer la navigation privée, terminer la navigation privée, sortir de la navigation privée</translation>
+<translation id="8350110529112037703">gérer les mots de passe chrome, gérer mes mots de passe chrome, afficher le mot de passe dans chrome, voir le mot de passe dans chrome, afficher mon mot de passe dans chrome, voir mon mot de passe dans chrome</translation>
+<translation id="9015559449837241926">fonctionnalités chrome, fonctions chrome, découvrir les fonctionnalités google chrome, nouvelles fonctionnalités google chrome, voir des conseils pour chrome, voir des astuces pour chrome, afficher des conseils pour chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_hi.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_hi.xtb
index bf5080bd..028f897 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_hi.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_hi.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="hi">
+<translation id="101606685846791463">ब्राउज़र की कैश मेमोरी मिटाना, ब्राउज़र की कैश मेमोरी मिटाने का तरीका, ब्राउज़र की कैश मेमोरी कैसे मिटानी है, मैं ब्राउज़र की कैश मेमोरी कैसे मिटाऊं, इतिहास मिटाना, इतिहास मिटाने का तरीका, इतिहास कैसे मिटाना है, मैं इतिहास कैसे मिटाऊं, कुकी मिटाना, कुकी मिटाने का तरीका, कुकी कैसे मिटाना है, मैं कुकी कैसे मिटाऊं, ब्राउज़िंग इतिहास मिटाना, ब्राउज़िंग इतिहास मिटाने का तरीका, ब्राउज़िंग इतिहास कैसे मिटाना है, मैं ब्राउज़िंग इतिहास कैसे मिटाऊं</translation>
+<translation id="132297926492792130">अपना google खाता कंट्रोल करना, अपना google खाता कंट्रोल करने का तरीका, अपना google खाता कैसे कंट्रोल करना है, मैं अपना google खाता कैसे कंट्रोल करूं, google खाता ठीक करना, google खाता ठीक करने का तरीका, google खाता कैसे ठीक करना है, मैं google खाता कैसे ठीक करूं, google खाता मैनेज करना, google खाता मैनेज करने का तरीका, google खाता कैसे मैनेज करना है, मैं google खाता कैसे मैनेज करूं, अपना google खाता मैनेज करना, अपना google खाता मैनेज करने का तरीका, अपना google खाता कैसे मैनेज करना है, मैं अपना google खाता कैसे मैनेज करूं</translation>
+<translation id="1455865776268085776">विंडो को गुप्त मोड में खोलना, विंडो को गुप्त मोड में खोलने का तरीका, विंडो को गुप्त मोड में कैसे खोलना है, मैं विंडो को गुप्त मोड में कैसे खोलूं, नई गुप्त विंडो, गुप्त टैब खोलना, गुप्त टैब खोलने का तरीका, गुप्त टैब कैसे खोलना है, मैं गुप्त टैब कैसे खोलूं</translation>
 <translation id="1545931455576308147">इस पेज को शेयर करना, इस टैब को शेयर करना</translation>
 <translation id="1912698329644085067">Chrome की सेटिंग में बदलाव करना, सेटिंग मैनेज करना</translation>
+<translation id="1938436187879863297">google keep नोट बनाना, google keep नोट बनाने का तरीका, google keep नोट कैसे बनाना है, मैं google keep नोट कैसे बनाऊं, google नोट बनाना, google नोट बनाने का तरीका, google नोट कैसे बनाना है, मैं google नोट कैसे बनाऊं, नया google keep नोट बनाना, नया google keep नोट बनाने का तरीका, नया google keep नोट कैसे बनाना है, मैं नया google keep नोट कैसे बनाऊं, नया google नोट, google नोट शुरू करना, google नोट शुरू करने का तरीका, google नोट कैसे शुरू करना है, मैं google नोट कैसे शुरू करूं</translation>
 <translation id="2003251155164817216">Chrome के दिखने के तरीके को पसंद के मुताबिक बनाना, Chrome की थीम मैनेज करना</translation>
+<translation id="2757458512261408467">google calendar में न्योता बनाना, google calendar में न्योता बनाने का तरीका, google calendar में न्योता कैसे बनाना है, मैं google calendar में न्योता कैसे बनाऊं, google calendar में इवेंट बनाना, google calendar में इवेंट बनाने का तरीका, google calendar में इवेंट कैसे बनाना है, मैं google calendar में इवेंट कैसे बनाऊं, calendar में नया न्योता बनाना, calendar में नया न्योता बनाने का तरीका, calendar में नया न्योता कैसे बनाना है, मैं calendar में नया न्योता कैसे बनाऊं, calendar में नया इवेंट, google calendar में नया न्योता बनाना, google calendar में नया न्योता बनाने का तरीका, google calendar में नया न्योता कैसे बनाना है, मैं google calendar में नया न्योता कैसे बनाऊं</translation>
+<translation id="2903767089701932453">chrome की कुकी सेटिंग, कुकी का इस्तेमाल, तीसरे पक्ष की सभी कुकी को अनुमति नहीं देना, कुकी की सेटिंग मैनेज करना, कुकी की सेटिंग को मैनेज करने का तरीका, कुकी की सेटिंग को कैसे मैनेज करना है, मैं कुकी की सेटिंग को कैसे मैनेज करूं, कुकी मैनेज करना, कुकी मैनेज करने का तरीका, कुकी को कैसे मैनेज करना है, मैं कुकी कैसे मैनेज करूं</translation>
+<translation id="2941773220794601465">मौजूदा पेज का अनुवाद करना, मौजूदा पेज का अनुवाद करने का तरीका, मौजूदा पेज का अनुवाद कैसे करना है, मैं मौजूदा पेज का अनुवाद कैसे करूं, वेबपेज पेज का अनुवाद करना, वेबपेज पेज का अनुवाद करने का तरीका, वेबपेज पेज का अनुवाद कैसे करना है, मैं वेबपेज पेज का अनुवाद कैसे करूं</translation>
+<translation id="2973110773361184993">साइट की अनुमतियां अडजस्ट करना, साइट की अनुमतियां अडजस्ट करने का तरीका, साइट की अनुमतियों को कैसे अडजस्ट करना है, मैं साइट की अनुमतियां कैसे अडजस्ट करूं, साइट की अनुमतियां बदलना, साइट की अनुमतियां बदलने का तरीका, साइट की अनुमतियों को कैसे बदलना है, मैं साइट की अनुमतियां कैसे बदलूं, साइट की सेटिंग कंट्रोल करना, साइट की सेटिंग कंट्रोल करने का तरीका, साइट की सेटिंग को कैसे कंट्रोल करना है, मैं साइट की सेटिंग को कैसे कंट्रोल करूं, साइट की सेटिंग मैनेज करना, साइट की सेटिंग को मैनेज करने का तरीका, साइट की सेटिंग को कैसे मैनेज करना है, मैं साइट की सेटिंग को कैसे मैनेज करूं, chrome में साइट की सेटिंग</translation>
+<translation id="3371457011763794419">chrome अपडेट करना, chrome अपडेट करने का तरीका, chrome को कैसे अपडेट करना है, मैं chrome को कैसे अपडेट करूं, ब्राउज़र अपग्रेड करना, ब्राउज़र अपग्रेड करने का तरीका, ब्राउज़र को कैसे अपग्रेड करना है, मैं ब्राउज़र को कैसे अपग्रेड करूं</translation>
 <translation id="3489247412199563299">Chrome की सुलभता सेटिंग को पसंद के मुताबिक बनाना, सुलभता सेटिंग को मैनेज करना</translation>
+<translation id="3936847108123063274">google साइट बनाना, google साइट बनाने का तरीका, google साइट कैसे बनाना है, मैं google साइट कैसे बनाऊं, google वेबसाइट बनाना, google वेबसाइट बनाने का तरीका, google वेबसाइट कैसे बनाना है, मैं google वेबसाइट कैसे बनाऊं, नई google साइट, नई google साइट खोलना, नई google साइट खोलने का तरीका, नई google साइट कैसे खोलना है, मैं नई google साइट कैसे खोलूं</translation>
+<translation id="4165988127016746956">google फ़ॉर्म बनाना, google फ़ॉर्म बनाने का तरीका, google फ़ॉर्म कैसे बनाना है, मैं google फ़ॉर्म कैसे बनाऊं, नया google फ़ॉर्म बनाना, नया google फ़ॉर्म बनाने का तरीका, नया google फ़ॉर्म कैसे बनाना है, मैं नया google फ़ॉर्म कैसे बनाऊं, नया google फ़ॉर्म, google सर्वे शुरू करना, google सर्वे शुरू करने का तरीका, google सर्वे कैसे शुरू करना है, मैं google सर्वे कैसे शुरू करूं</translation>
 <translation id="4367205929005172598">खोया हुआ फ़ोन ढूंढना, मेरा डिवाइस ढूंढना</translation>
 <translation id="4692900934258103694">अंदर, में, के लिए, कैसे, एक, करें, में, मेरा/मेरी, पर, से, मैं</translation>
+<translation id="4834023075966161189">google दस्तावेज़ बनाना, google दस्तावेज़ बनाने का तरीका, google दस्तावेज़ कैसे बनाना है, मैं google दस्तावेज़ कैसे बनाऊं, नया google दस्तावेज़ बनाना, नया google दस्तावेज़ बनाने का तरीका, नया google दस्तावेज़ कैसे बनाना है, मैं नया google दस्तावेज़ कैसे बनाऊं, google दस्तावेज़ खोलना, google दस्तावेज़ खोलने का तरीका, google दस्तावेज़ कैसे खोलना है, मैं google दस्तावेज़ कैसे खोलूं</translation>
 <translation id="4922709528022057939">Chrome Dino, Dino गेम, Dino Run गेम खेलना</translation>
 <translation id="5061612070235737664">ब्राउज़र पर दिखने वाले टेक्स्ट के फ़ॉन्ट में बदलाव करना, Chrome के फ़ॉन्ट</translation>
+<translation id="6413237123574479071">पैसे चुकाने के तरीके मैनेज करना, पैसे चुकाने के तरीके कैसे मैनेज किए जा सकते हैं, मैं पैसे चुकाने के तरीके कैसे मैनेज करूं, क्रेडिट कार्ड अपडेट करना, क्रेडिट कार्ड अपडेट करने का तरीका, क्रेडिट कार्ड कैसे अपडेट करना है, मैं क्रेडिट कार्ड कैसे अपडेट करूं</translation>
 <translation id="6654270263159958770">Custom Search जोड़ना, सर्च इंजन मैनेज करना, सर्च इंजन</translation>
+<translation id="7081494400361697539">google शीट बनाना, google शीट बनाने का तरीका, google शीट कैसे बनाना है, मैं google शीट कैसे बनाऊं, workspace स्प्रेडशीट बनाना, workspace स्प्रेडशीट बनाने का तरीका, workspace स्प्रेडशीट कैसे बनाना है, मैं workspace स्प्रेडशीट कैसे बनाऊं, नई google शीट, नई google शीट शुरू करना, नई google शीट शुरू करने का तरीका, नई google शीट कैसे शुरू करना है, मैं नई google शीट कैसे शुरू करूं</translation>
+<translation id="7153639895359139570">पता जोड़ना, पता जोड़ने का तरीका, पता कैसे जोड़ना है, मैं पता कैसे जोड़ूं, शिपिंग पता बदलना, शिपिंग पता बदलने का तरीका, शिपिंग पता कैसे बदलना है, मैं शिपिंग पता कैसे बदलूं, पतों में बदलाव करना, पतों में बदलाव करने का तरीका, पतों में बदलाव कैसे किए जा सकते हैं, मै पतों में कैसे बदलाव करूं, पते मैनेज करना, पते मैनेज करने का तरीका, पते कैसे मैनेज किए जाते हैं, मैं पते कैसे मैनेज करूं</translation>
+<translation id="7242693601647412075">सुरक्षा से जुड़ी सेटिंग मैनेज करना, सुरक्षा से जुड़ी सेटिंग को मैनेज करने का तरीका, सुरक्षा से जुड़ी सेटिंग को कैसे मैनेज करना है, मैं सुरक्षा से जुड़ी सेटिंग को कैसे मैनेज करूं</translation>
+<translation id="7441773108452086364">gmail का पासवर्ड बदलना, gmail का पासवर्ड बदलने का तरीका, gmail का पासवर्ड कैसे बदलना है, मैं gmail पासवर्ड कैसे बदलूं, अपने gmail का पासवर्ड बदलना, अपने gmail का पासवर्ड बदलने का तरीका, अपने gmail का पासवर्ड कैसे बदलना है, मैं अपने gmail पासवर्ड कैसे बदलूं, gmail का पासवर्ड रीसेट करना, gmail का पासवर्ड रीसेट करने का तरीका, gmail का पासवर्ड कैसे रीसेट करना है, मैं gmail का पासवर्ड कैसे रीसेट करूं, gmail खाते का पासवर्ड रीसेट करना, gmail खाते का पासवर्ड रीसेट करने का तरीका, gmail खाते का पासवर्ड कैसे रीसेट करना है, मैं gmail खाते का पासवर्ड कैसे रीसेट करूं</translation>
 <translation id="7660956169713698963">Chrome OS की सुलभता सेटिंग को पसंद के मुताबिक बनाना, सुलभता सेटिंग को मैनेज करना</translation>
 <translation id="7700496593710078083">Chrome पर ब्राउज़िंग इतिहास देखना, ब्राउज़िंग इतिहास देखना</translation>
 <translation id="7739523284295786564">Chrome पर डाउनलोड की गई फ़ाइलें मैनेज करना, डाउनलोड की गई फ़ाइलें देखना</translation>
+<translation id="7873993277886791795">google स्लाइड बनाना, google स्लाइड बनाने का तरीका, google स्लाइड कैसे बनाना है, मैं google स्लाइड कैसे बनाऊं, नया डेक बनाना, नया डेक बनाने का तरीका, नया डेक कैसे बनाना है, मैं नया डेक कैसे बनाऊं, google प्रज़ेंटेशन बनाना, google प्रज़ेंटेशन बनाने का तरीका, google प्रज़ेंटेशन कैसे बनाना है, मैं google प्रज़ेंटेशन कैसे बनाऊं, google प्रज़ेंटेशन शुरू करना, google प्रज़ेंटेशन शुरू करने का तरीका, google प्रज़ेंटेशन कैसे शुरू करना है, मैं google प्रज़ेंटेशन कैसे शुरू करूं</translation>
 <translation id="7992725801741093524">Google पर निजता से जुड़ी सेटिंग में बदलाव करना, Google पर निजता को मैनेज करना</translation>
 <translation id="8020024640114692614">हमेशा Chrome में लिंक खोलना, हमेशा Chrome का इस्तेमाल करना, Chrome को डिफ़ॉल्ट ब्राउज़र बनाना, डिफ़ॉल्ट ब्राउज़र, Safari को डिफ़ॉल्ट ब्राउज़र से हटाना, Chrome को डिफ़ॉल्ट ब्राउज़र बनाने का तरीका, मुख्य ब्राउज़र, Chrome को डिफ़ॉल्ट बनाना, Chrome को डिफ़ॉल्ट ब्राउज़र बनाना, Chrome को मेरा डिफ़ॉल्ट ब्राउज़र बनाना, Chrome में लिंक खोलना, Chrome को डिफ़ॉल्ट ब्राउज़र के तौर पर चुनना, प्राथमिक ब्राउज़र, Safari को हटाना, Chrome में खोजना, Chrome को डिफ़ॉल्ट के तौर पर सेट करना, Chrome को डिफ़ॉल्ट ब्राउज़र के तौर पर सेट करना, स्टैंडर्ड ब्राउज़र</translation>
+<translation id="8189600756055704659">chrome ब्राउज़र की सिंक सेटिंग बदलना, chrome ब्राउज़र की सिंक सेटिंग बदलने का तरीका, chrome ब्राउज़र की सिंक सेटिंग कैसे बदलना है, मैं chrome ब्राउज़र की सिंक सेटिंग कैसे बदलूं, chrome की सिंक सेटिंग बदलना, chrome की सिंक सेटिंग बदलने का तरीका, chrome की सिंक सेटिंग कैसे बदलना है, मैं chrome की सिंक सेटिंग कैसे बदलूं, सिंक में बदलाव करना, सिंक में बदलाव करने का तरीका, सिंक में बदलाव कैसे करना है, मैं सिंक में कैसे बदलाव करूं, सिंक सेटिंग में बदलाव करना, सिंक सेटिंग में बदलाव करने का तरीका, सिंक सेटिंग में बदलाव कैसे करना है, मैं सिंक में कैसे बदलाव करूं, सिंक मैनेज करना, सिंक मैनेज करने का तरीका, सिंक मैनेज कैसे करना है, मैं सिंक को कैसे मैनेज करूं</translation>
+<translation id="8307473667919507216">chrome की सुरक्षा जांच करना, chrome की सुरक्षा जांच करने का तरीका, chrome की सुरक्षा जांच कैसे करनी है, मैं chrome की सुरक्षा जांच कैसे करूं, सुरक्षा जांच करना, सुरक्षा जांच करने का तरीका, सुरक्षा जांच कैसे करनी है, मैं सुरक्षा जांच कैसे करूं</translation>
 <translation id="8319253638505741466">गुप्त विंडो को बंद करना, गुप्त विंडो का सेशन बंद करना</translation>
+<translation id="8350110529112037703">chrome में पासवर्ड मैनेज करना, chrome में पासवर्ड मैनेज करने का तरीका, chrome में पासवर्ड कैसे मैनेज करना है, मैं chrome में पासवर्ड कैसे मैनेज करूं, chrome में पासवर्ड देखना, chrome में पासवर्ड देखने का तरीका, chrome में पासवर्ड कैसे देखे जा सकते हैं, मैं chrome में पासवर्ड कैसे देखूं</translation>
+<translation id="9015559449837241926">chrome की सुविधाएं, google chrome की सुविधाओं को जानना, google chrome की सुविधाओं को जानने का तरीका, google chrome की सुविधाओं को कैसे जाना जा सकता है, मैं google chrome की सुविधाओं के बारे में कैसे जानूं, google chrome की नई सुविधाएं, chrome से जुड़ी सलाह देखना, chrome से जुड़ी सलाह देखने का तरीका, chrome से जुड़ी सलाह कैसे देखी जा सकती है, मैं chrome से जुड़ी सलाह कैसे देखूं</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_it.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_it.xtb
index e67656b9..e65755c 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_it.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_it.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="it">
+<translation id="101606685846791463">svuotare la cache del browser, svuota la cache del browser, cancellare la cache del browser, cancella la cache del browser, cancellare la cronologia, cancella la cronologia, cancellare cronologia, cancella cronologia, eliminare cookie, elimina cookie, eliminare i cookie, elimina i cookie, cancellare la cronologia di navigazione, cancella la cronologia di navigazione, cancellare cronologia di navigazione, cancella cronologia di navigazione</translation>
+<translation id="132297926492792130">controllare il mio account google, controlla il mio account google, controllare mio account google, controlla mio account google, sistemare l'account google, sistema l'account google, correggere l'account google, correggi l'account google, gestire l'account google, gestisci l'account google, gestire account google, gestisci account google, gestire il mio account google, gestisci il mio account google, gestire mio account google, gestisci mio account google</translation>
+<translation id="1455865776268085776">entrare in modalità di navigazione in incognito, entra in modalità di navigazione in incognito, attivare modalità di navigazione in incognito, attiva modalità di navigazione in incognito, nuova finestra di navigazione in incognito, nuova finestra navigazione in incognito, nuova finestra in incognito, aprire la scheda di navigazione in incognito, apri la scheda di navigazione in incognito, aprire la scheda in incognito, apri la scheda in incognito</translation>
 <translation id="1545931455576308147">condividere questa pagina, condividere questa scheda</translation>
 <translation id="1912698329644085067">modificare le impostazioni di chrome, gestire le impostazioni</translation>
+<translation id="1938436187879863297">creare nota google keep, crea nota google keep, creare una nota google keep, crea una nota google keep, creare nota google, crea nota google, creare una nota google, crea una nota google, creare nuova nota google keep, crea nuova nota google keep, creare una nuova nota google keep, crea una nuova nota google keep, nuova nota google, nuova nota di google, aprire nota google, apri nota google, aprire una nota google, apri una nota google</translation>
 <translation id="2003251155164817216">personalizzare l'aspetto di chrome, gestire i temi di chrome</translation>
+<translation id="2757458512261408467">creare invito google cal, crea invito google cal, creare un invito google cal, crea un invito google cal, creare evento google calendar, crea evento google calendar, creare un evento google calendar, crea un evento google calendar, creare nuovo invito cal, crea nuovo invito cal, creare un nuovo invito cal, crea un nuovo invito cal, nuovo evento cal, nuovo evento di calendario, nuovo invito google calendar, nuovo invito di google calendar, nuovo invito in google calendar</translation>
+<translation id="2903767089701932453">impostazioni dei cookie di chrome, impostazioni cookie di chrome, impostazioni dei cookie chrome, impostazioni cookie chrome, uso dei cookie, utilizzo dei cookie, uso di cookie, utilizzo di cookie, vietare tutti i cookie di terze parti, vieta tutti i cookie di terze parti, vietare tutti cookie di terze parti, vieta tutti cookie di terze parti, gestire le impostazioni dei cookie, gestisci le impostazioni dei cookie, gestire impostazioni cookie, gestisci impostazioni cookie, gestire i cookie, gestisci i cookie, gestire cookie, gestisci cookie</translation>
+<translation id="2941773220794601465">tradurre questa pagina, traduci questa pagina, traduzione di questa pagina, tradurre pagina web, traduci pagina web, tradurre la pagina web, traduci la pagina web</translation>
+<translation id="2973110773361184993">regolare le autorizzazioni dei siti, regola le autorizzazioni dei siti, regolare autorizzazioni dei siti, regola autorizzazioni dei siti, cambiare le autorizzazioni, cambia le autorizzazioni, modificare le autorizzazioni, modifica le autorizzazioni, controllare le impostazioni dei siti, controlla le impostazioni dei siti, controllare impostazioni siti, controlla impostazioni siti, gestire le impostazioni dei siti, gestisci le impostazioni dei siti, gestire impostazioni siti, gestisci impostazioni siti, impostazioni siti chrome, impostazioni siti di chrome</translation>
+<translation id="3371457011763794419">aggiornare chrome, aggiorna chrome, aggiornamento di chrome, eseguire l'upgrade del browser, upgrade del browser, upgrade browser</translation>
 <translation id="3489247412199563299">personalizzare l'accessibilità di chrome, gestire le impostazioni di accessibilità</translation>
+<translation id="3936847108123063274">creare sito google, crea sito google, creare un sito google, crea un sito google, creare sito web google, crea sito web google, creare un sito web google, crea un sito web google, nuovo sito google, nuovo sito di google, aprire nuovo sito google, apri nuovo sito google, aprire un nuovo sito google, apri un nuovo sito google</translation>
+<translation id="4165988127016746956">creare modulo google, crea modulo google, creare un modulo google, crea un modulo google, creare nuovo modulo google, crea nuovo modulo google, creare un nuovo modulo google, crea un nuovo modulo google, nuovo modulo google, nuovo modulo di google, aprire sondaggio google, apri sondaggio google, aprire un sondaggio google, apri un sondaggio google</translation>
 <translation id="4367205929005172598">trovare il telefono perso, trova il mio dispositivo</translation>
 <translation id="4692900934258103694">in, per, come, il, la, i, gli, le, lo, un, una, su</translation>
+<translation id="4834023075966161189">creare documento google, crea documento google, creare un documento google, crea un documento google, creare nuovo documento google, crea nuovo documento google, creare un nuovo documento google, crea un nuovo documento google, aprire documento google, apri documento google, aprire un documento google, apri un documento google</translation>
 <translation id="4922709528022057939">dino di chrome, gioco dinosauro, giocare a dino</translation>
 <translation id="5061612070235737664">modificare i caratteri del browser, caratteri di chrome</translation>
+<translation id="6413237123574479071">gestire i metodi di pagamento, gestisci i metodi di pagamento, gestire metodi di pagamento, gestisci metodi di pagamento, aggiornare la carta di credito, aggiorna la carta di credito, aggiornare carta di credito, aggiorna carta di credito</translation>
 <translation id="6654270263159958770">aggiungere ricerca personalizzata, gestire i motori di ricerca, motori di ricerca</translation>
+<translation id="7081494400361697539">creare foglio google, crea foglio google, creare un foglio google, crea un foglio google, creare foglio di lavoro workspace, crea foglio di lavoro workspace, creare un foglio di lavoro workspace, crea un foglio di lavoro workspace, nuovo foglio google, nuovo foglio di google, aprire nuovo foglio google, apri nuovo foglio google, aprire un nuovo foglio google, apri un nuovo foglio google</translation>
+<translation id="7153639895359139570">aggiungere indirizzo, aggiungi indirizzo, aggiungere un indirizzo, aggiungi un indirizzo, cambiare indirizzo di spedizione, cambia indirizzo di spedizione, cambiare l'indirizzo di spedizione, cambia l'indirizzo di spedizione, modificare indirizzi, modifica indirizzi, modificare gli indirizzi, modifica gli indirizzi, gestire indirizzi, gestisci indirizzi, gestire gli indirizzi, gestisci gli indirizzi</translation>
+<translation id="7242693601647412075">gestire le impostazioni di sicurezza, gestisci le impostazioni di sicurezza, gestire impostazioni di sicurezza, gestisci impostazioni di sicurezza</translation>
+<translation id="7441773108452086364">cambiare password gmail, cambia password gmail, cambiare password di gmail, cambia password di gmail, cambiare la mia password gmail, cambia la mia password gmail, cambiare la mia password di gmail, cambia la mia password di gmail, modifica della password google, modifica password google, cambio della password google, cambio password google, reimpostare la password dell'account gmail, reimposta la password dell'account gmail, reimpostare password dell'account gmail, reimposta password dell'account gmail</translation>
 <translation id="7660956169713698963">personalizzare l'accessibilità di chrome os, gestire le impostazioni di accessibilità</translation>
 <translation id="7700496593710078083">visualizzare la cronologia di chrome, visualizzare la cronologia di navigazione</translation>
 <translation id="7739523284295786564">gestire i download di chrome, visualizzare i download</translation>
+<translation id="7873993277886791795">crea presentazione google, creare presentazione google, crea una presentazione google, creare una presentazione google, fare una nuova presentazione, fai una nuova presentazione, creare una nuova presentazione, crea una nuova presentazione, nuova presentazione google, nuova presentazione di google, aprire presentazione google, apri presentazione google, aprire una presentazione google, apri una presentazione google</translation>
 <translation id="7992725801741093524">modificare le impostazioni sulla privacy di google, gestire la privacy di google</translation>
 <translation id="8020024640114692614">aprire sempre i link in chrome, aprire sempre link in chrome, apri sempre i link in chrome, apertura link sempre in chrome, usare sempre chrome, usa sempre chrome, usare chrome sempre, usa chrome sempre, chrome per default, chrome come predefinito, chrome predefinito, browser di default, browser predefinito, eliminare safari, elimina safari, eliminazione di safari, come impostare chrome come browser predefinito, come si imposta chrome come browser predefinito, come rendere chrome il browser predefinito, come si rende chrome il browser predefinito, browser principale, browser come principale, impostare chrome come predefinito, rendere chrome predefinito, impostare chrome come browser predefinito, rendere chrome il browser predefinito, impostare chrome come il mio browser predefinito, rendere chrome il mio browser predefinito, aprire link in chrome, apertura di link in chrome, scegliere chrome come browser predefinito, selezionare chrome come browser predefinito, browser principale, browser primario, rimuovere safari, rimuovi safari, cercare in chrome, ricerca in chrome, ricerche in chrome, configurare chrome come predefinito, configurare chrome come default, configurare chrome come browser predefinito, configurare chrome come browser di default, browser standard</translation>
+<translation id="8189600756055704659">cambiare le impostazioni di sincronizzazione del browser chrome, cambia le impostazioni di sincronizzazione del browser chrome, cambiare impostazioni di sincronizzazione browser chrome, cambia impostazioni di sincronizzazione browser chrome, cambiare la sincronizzazione di chrome, cambia la sincronizzazione di chrome, cambiare sincronizzazione chrome, cambia sincronizzazione chrome, modificare la sincronizzazione, modifica la sincronizzazione, modificare sincronizzazione, modifica sincronizzazione, modificare le impostazioni di sincronizzazione, modifica le impostazioni di sincronizzazione, modificare impostazioni di sincronizzazione, modifica impostazioni di sincronizzazione, gestire la sincronizzazione, gestisci la sincronizzazione, gestire sincronizzazione, gestisci sincronizzazione</translation>
+<translation id="8307473667919507216">eseguire controllo sicurezza chrome, esegui controllo sicurezza chrome, eseguire controllo di sicurezza chrome, esegui controllo di sicurezza chrome, eseguire controllo sicurezza, esegui controllo sicurezza, eseguire controllo di sicurezza, esegui controllo di sicurezza</translation>
 <translation id="8319253638505741466">chiudere una finestra di navigazione in incognito, terminare la modalità in incognito</translation>
+<translation id="8350110529112037703">gestire le password di chrome, gestisci le password di chrome, gestire password di chrome, gestisci password di chrome, visualizzare la password in chrome, visualizza la password in chrome, visualizzare password in chrome, visualizza password in chrome</translation>
+<translation id="9015559449837241926">funzionalità chrome, funzionalità di chrome, funzioni chrome, funzioni di chrome, imparare le funzionalità google chrome, imparare funzionalità google chrome, imparare le funzioni google chrome, imparare funzioni google chrome, nuove funzionalità google chrome, nuove funzionalità di google chrome, nuove funzioni google chrome, nuove funzioni di google chrome, leggere suggerimenti di chrome, leggi suggerimenti di chrome, leggere suggerimenti chrome, leggi suggerimenti chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_kn.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_kn.xtb
index 896171b..d3c6951 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_kn.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_kn.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="kn">
+<translation id="101606685846791463">ಬ್ರೌಸರ್ ಕ್ಯಾಷ್ ತೆರವುಗೊಳಿಸಿ, ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಿ, ಕುಕೀಗಳನ್ನು ಅಳಿಸಿ, ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಅಳಿಸಿ</translation>
+<translation id="132297926492792130">ನನ್ನ Google ಖಾತೆಯನ್ನು ನಿಯಂತ್ರಿಸಿ, Google ಖಾತೆಯನ್ನು ಸರಿಪಡಿಸಿ, Google ಖಾತೆಯನ್ನು ನಿರ್ವಹಿಸಿ, ನನ್ನ Google ಖಾತೆಯನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="1455865776268085776">ಅಜ್ಞಾತ ಮೋಡ್ ನಮೂದಿಸಿ, ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ, ಅಜ್ಞಾತ ಟ್ಯಾಬ್‌ ತೆರೆಯಿರಿ</translation>
 <translation id="1545931455576308147">ಈ ಪುಟವನ್ನು ಹಂಚಿಕೊಳ್ಳಿ, ಈ ಟ್ಯಾಬ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="1912698329644085067">chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ, ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="1938436187879863297">Google Keep ಟಿಪ್ಪಣಿಯನ್ನು ರಚಿಸಿ, Google ಟಿಪ್ಪಣಿಯನ್ನು ರಚಿಸಿ, ಹೊಸ Google Keep ಟಿಪ್ಪಣಿಯನ್ನು ರಚಿಸಿ, ಹೊಸ Google ಟಿಪ್ಪಣಿ, Google ಟಿಪ್ಪಣಿಯನ್ನು ಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="2003251155164817216">chrome ನೋಟವನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ, chrome ಥೀಮ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="2757458512261408467">Google ಕರೆ ಆಹ್ವಾನವನ್ನು ರಚಿಸಿ, Google Calendar ಈವೆಂಟ್ ರಚಿಸಿ, ಹೊಸ ಕರೆ ಆಹ್ವಾನವನ್ನು ರಚಿಸಿ, ಹೊಸ ಕರೆ ಈವೆಂಟ್, ಹೊಸ Google Calendar ಆಹ್ವಾನ</translation>
+<translation id="2903767089701932453">Chrome ಕುಕಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಕುಕೀಗಳ ಬಳಕೆ, ಎಲ್ಲಾ ಥರ್ಡ್-ಪಾರ್ಟಿ ಕುಕೀಗಳ ಅನುಮತಿಯನ್ನು ರದ್ದುಗೊಳಿಸಿ, ಕುಕೀ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ, ಕುಕೀಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="2941773220794601465">ಈ ಪುಟವನ್ನು ಅನುವಾದಿಸಿ, ವೆಬ್‌ಪುಟವನ್ನು ಅನುವಾದಿಸಿ</translation>
+<translation id="2973110773361184993">ಸೈಟ್ ಅನುಮತಿಗಳನ್ನು ಸರಿಹೊಂದಿಸಿ, ಅನುಮತಿಗಳನ್ನು ಬದಲಾಯಿಸಿ, ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿಯಂತ್ರಿಸಿ, ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ, Chrome ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
+<translation id="3371457011763794419">Chrome ಅಪ್‌ಡೇಟ್ ಮಾಡಿ, ಬ್ರೌಸರ್ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿ</translation>
 <translation id="3489247412199563299">chrome ಪ್ರವೇಶಿಸುವಿಕೆಯನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ, ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="3936847108123063274">Google ಸೈಟ್ ರಚಿಸಿ, Google ವೆಬ್‌ಸೈಟ್ ರಚಿಸಿ, ಹೊಸ Google ಸೈಟ್, ಹೊಸ Google ಸೈಟ್ ತೆರೆಯಿರಿ</translation>
+<translation id="4165988127016746956">Google ಫಾರ್ಮ್‌ ರಚಿಸಿ, ಹೊಸ Google ಫಾರ್ಮ್‌ ರಚಿಸಿ, ಹೊಸ Google ಫಾರ್ಮ್‌, Google ಸಮೀಕ್ಷೆ ಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="4367205929005172598">ಕಳೆದುಹೋದ ಫೋನ್ ಅನ್ನು ಹುಡುಕಿ, find my device</translation>
 <translation id="4692900934258103694">ಒಳಗಡೆ, ಒಳಗೆ, ಗಾಗಿ, ಹೇಗೆ, ಅನ್ನು, ಒಂದು, ಮಾಡು, ಇದರಲ್ಲಿ, ನನ್ನ, ನಲ್ಲಿ, ಗೆ, ಒಂದು, ನಾನು</translation>
+<translation id="4834023075966161189">Google ಡಾಕ್ ರಚಿಸಿ, ಹೊಸ Google ಡಾಕ್ ರಚಿಸಿ, Google ಡಾಕ್ಯುಮೆಂಟ್ ತೆರೆಯಿರಿ</translation>
 <translation id="4922709528022057939">chrome dino, dino ಗೇಮ್, dino ರನ್ ಆಟವಾಡಿ</translation>
 <translation id="5061612070235737664">ಬ್ರೌಸರ್ ಫಾಂಟ್, chrome ಫಾಂಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ</translation>
+<translation id="6413237123574479071">ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ನಿರ್ವಹಿಸಿ, ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಅಪ್‌ಡೇಟ್ ಮಾಡಿ</translation>
 <translation id="6654270263159958770">ಕಸ್ಟಮ್ ಹುಡುಕಾಟ ಸೇರಿಸಿ, ಹುಡುಕಾಟ ಎಂಜಿನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ, ಹುಡುಕಾಟ ಎಂಜಿನ್‌ಗಳು</translation>
+<translation id="7081494400361697539">Google ಶೀಟ್ ರಚಿಸಿ, ಕಾರ್ಯಸ್ಥಳ ಸ್ಪ್ರೆಡ್‌ಶೀಟ್ ರಚಿಸಿ, ಹೊಸ Google ಶೀಟ್, ಹೊಸ Google ಶೀಟ್ ಪ್ರಾರಂಭಿಸಿ</translation>
+<translation id="7153639895359139570">ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ, ಶಿಪ್ಪಿಂಗ್ ವಿಳಾಸವನ್ನು ಬದಲಿಸಿ, ವಿಳಾಸವನ್ನು ಎಡಿಟ್ ಮಾಡಿ, ವಿಳಾಸವನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="7242693601647412075">ಭದ್ರತೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="7441773108452086364">Gmail ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಿ, ನನ್ನ Gmail ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಿ, Google ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಿ, Gmail ಖಾತೆ ಪಾಸ್‌ವರ್ಡ್ ರೀಸೆಟ್ ಮಾಡಿ</translation>
 <translation id="7660956169713698963">chromeos ಪ್ರವೇಶಿಸುವಿಕೆಯನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ, ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="7700496593710078083">chrome ಇತಿಹಾಸವನ್ನು ನೋಡಿ, ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ವೀಕ್ಷಿಸಿ</translation>
 <translation id="7739523284295786564">chrome ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ, ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ</translation>
+<translation id="7873993277886791795">Google Slides ರಚಿಸಿ, ಹೊಸ ಡೆಕ್ ರಚಿಸಿ, ಹೊಸ Google ಪ್ರಸ್ತುತಿ, Google ಪ್ರೆಸೊ ಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="7992725801741093524">google ಗೌಪ್ಯತೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ, google ಗೌಪ್ಯತೆಯನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="8020024640114692614">ಯಾವಾಗಲೂ ಲಿಂಕ್‌ಗಳನ್ನು Chrome ನಲ್ಲಿ ತೆರೆಯಿರಿ, ಯಾವಾಗಲೂ Chrome ಬಳಸಿ, ಡೀಫಾಲ್ಟ್ ಆಗಿ Chrome ಬಳಸಿ, ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಬಳಸಿ, Safari ಅನ್ನು ಅಳಿಸಿ, Chrome ಅನ್ನು ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್, ಮುಖ್ಯ ಬ್ರೌಸರ್ ಆಗಿ ಮಾಡುವುದು ಹೇಗೆ, Chrome ಅನ್ನು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಮಾಡಿ, Chrome ಅನ್ನು ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆಗಿ ಮಾಡಿ, Chrome ಅನ್ನು ನನ್ನ ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆಗಿ ಮಾಡಿ, ಲಿಂಕ್‌ಗಳನ್ನು Chrome ನಲ್ಲಿ ತೆರೆಯಿರಿ, Chrome ಅನ್ನು ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್, ಪ್ರಾಥಮಿಕ ಬ್ರೌಸರ್ ಆಗಿ ಆರಿಸಿ, Safari ಅನ್ನು ತೆಗೆದುಹಾಕಿ, Chrome ನಲ್ಲಿ ಹುಡುಕಿ, Chrome ಅನ್ನು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸೆಟ್ ಮಾಡಿ, Chrome ಅನ್ನು ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್, ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಬ್ರೌಸರ್ ಆಗಿ ಸೆಟ್ ಮಾಡಿ</translation>
+<translation id="8189600756055704659">Chrome ಬ್ರೌಸರ್ ಸಿಂಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ, Chrome ಸಿಂಕ್ ಅನ್ನು ಬದಲಾಯಿಸಿ, ಸಿಂಕ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ, ಸಿಂಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ, ಸಿಂಕ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="8307473667919507216">Chrome ಸುರಕ್ಷತೆಯ ಪರಿಶೀಲನೆಯನ್ನು ರನ್ ಮಾಡಿ, ಸುರಕ್ಷತೆಯ ಪರಿಶೀಲನೆಯನ್ನು ರನ್ ಮಾಡಿ</translation>
 <translation id="8319253638505741466">ಅಜ್ಞಾತ ವಿಂಡೋವನ್ನು ಮುಚ್ಚಿ, ಅಜ್ಞಾತ ಮೋಡ್ ಅನ್ನು ಕೊನೆಗೊಳಿಸಿ</translation>
+<translation id="8350110529112037703">Chrome ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ, Chrome ನಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ</translation>
+<translation id="9015559449837241926">Chrome ಫೀಚರ್‌ಗಳು, Google Chrome ಫೀಚರ್‌ಗಳು, ಹೊಸ Google Chrome ಫೀಚರ್‌ಗಳ ಕುರಿತು ತಿಳಿಯಿರಿ, Chrome ಸಲಹೆಗಳನ್ನು ನೋಡಿ</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_lv.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_lv.xtb
index 5c18fea5..fe10e671 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_lv.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_lv.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="lv">
+<translation id="101606685846791463">notīrīt pārlūka kešatmiņu, notīrīt pārlūkprogrammas kešatmiņu, notīrīt vēsturi, dzēst sīkfailus, dzēst pārlūkošanas vēsturi</translation>
+<translation id="132297926492792130">pārvaldīt manu google kontu, novērst google konta problēmas, pārvaldīt google kontu, pārvaldīt savu google kontu</translation>
+<translation id="1455865776268085776">atvērt inkognito režīmu, jauns inkognito logs, jauns inkognito režīma logs, atvērt inkognito cilni, jauna inkognito cilne, jauna inkognito režīma cilne</translation>
 <translation id="1545931455576308147">kopīgot šo lapu, kopīgot šo cilni, kopīgot lapu, kopīgot cilni, lapas kopīgošana, cilnes kopīgošana</translation>
 <translation id="1912698329644085067">mainīt chrome iestatījumus, pārvaldīt iestatījumus, iestatījumu pārvaldība</translation>
+<translation id="1938436187879863297">izveidot google keep piezīmi, izveidot google piezīmi, izveidot jaunu google keep piezīmi, jauna google piezīme, izveidot jaunu google piezīmi, izveidot jaunu google keep piezīmi, atvērt google piezīmi, atvērt google keep piezīmi, atvērt jaunu google piezīmi, atvērt jaunu google keep piezīmi</translation>
 <translation id="2003251155164817216">pielāgot chrome izskatu, pielāgot chrome noformējumu, chrome izskata pielāgošana, chrome noformējuma pielāgošana, chrome motīvu pārvaldība, pārvaldīt chrome motīvus</translation>
+<translation id="2757458512261408467">izveidot google kalendāra uzaicinājumu, izveidot google kalendāra pasākumu, izveidot jaunu google kalendāra uzaicinājumu, izveidot jaunu google kalendāra pasākumu, jauns google kalendāra pasākums, jauns google kalendāra uzaicinājums</translation>
+<translation id="2903767089701932453">chrome sīkfailu iestatījumi, sīkfailu lietojums, sīkfailu izmantošana, neatļaut visus trešo pušu sīkfailus, pārvaldīt sīkfailu iestatījumus, pārvaldīt sīkfailus</translation>
+<translation id="2941773220794601465">tulkot šo lapu, tulkot tīmekļa lapu</translation>
+<translation id="2973110773361184993">pielāgot vietnes atļaujas, pielāgot vietņu atļaujas, mainīt atļaujas, kontrolēt vietnes iestatījumus, kontrolēt vietņu iestatījumus, pārvaldīt vietnes iestatījumus, pārvaldīt vietņu iestatījumus, vietnes iestatījumi pārlūkā chrome, vietņu iestatījumi pārlūkā chrome, vietnes iestatījumi pārlūkprogrammā chrome, vietņu iestatījumi pārlūkprogrammā chrome</translation>
+<translation id="3371457011763794419">atjaunināt chrome, atjaunināt pārlūku, atjaunināt pārlūkprogrammu, jaunināt chrome, jaunināt pārlūku, jaunināt pārlūkprogrammu</translation>
 <translation id="3489247412199563299">pielāgot pieejamību pārlūkā chrome, pielāgot chrome pieejamību, chrome pieejamības pielāgošana, pārvaldīt pieejamības iestatījumus, pieejamības iestatījumu pārvaldība</translation>
+<translation id="3936847108123063274">izveidot google vietni, izveidot google tīmekļa vietni, jauna google vietne, jauna google tīmekļa vietne, atvērt jaunu google vietni, atvērt jaunu google tīmekļa vietni</translation>
+<translation id="4165988127016746956">izveidot google veidlapu, izveidot jaunu google veidlapu, jauna google veidlapa, sākt google aptauju</translation>
 <translation id="4367205929005172598">atrast nozaudētu tālruni, atrast ierīci, tālruņa meklēšana, meklēt nozaudētu tālruni, nozaudēta tālruņa meklēšana, atrast pazaudētu tālruni, meklēt pazaudētu tālruni, pazaudēta tālruņa meklēšana</translation>
 <translation id="4692900934258103694">pakalpojumā, programmā, lietotnē, lai, kā, savu, var, uz</translation>
+<translation id="4834023075966161189">izveidot google dokumentu, izveidot jaunu dokumentu, izveidot jaunu google dokumentu, atvērt google dokumentu</translation>
 <translation id="4922709528022057939">chrome dinozaurs, dinozaura spēle, dinozauriņa spēle, spēlēt dinozaura skriešanas spēli, dinozaura skriešanas spēle</translation>
 <translation id="5061612070235737664">mainīt pārlūkprogrammas fontu, mainīt pārlūka fontu, chrome fonti, pārlūkprogrammas fonta mainīšana, pārlūka fonta mainīšana, pārlūkprogrammas fonta maiņa, pārlūka fonta maiņa</translation>
+<translation id="6413237123574479071">pārvaldīt maksājumu veidus, atjaunināt kredītkartes informāciju</translation>
 <translation id="6654270263159958770">pievienot pielāgoto meklēšanu, pievienot pielāgotu meklētājprogrammu, pārvaldīt meklētājprogrammas, meklētājprogrammas, meklētājprogrammu pārvaldība, pielāgotas meklētājprogrammas pievienošana</translation>
+<translation id="7081494400361697539">izveidot google izklājlapu, izveidot workspace izklājlapu, jauna google izklājlapa, izveidot jaunu google izklājlapu, atvērt jaunu google izklājlapu</translation>
+<translation id="7153639895359139570">pievienot adresi, pievienot adreses, mainīt piegādes adresi, mainīt piegādes adreses, rediģēt adresi, rediģēt adreses, pārvaldīt adreses</translation>
+<translation id="7242693601647412075">pārvaldīt drošības iestatījumus</translation>
+<translation id="7441773108452086364">mainīt gmail paroli, mainīt manu gmail paroli, mainīt google paroli, google paroles maiņa, atiestatīt gmail konta paroli</translation>
 <translation id="7660956169713698963">pielāgot chrome os pieejamību, chrome os pieejamības pielāgošana, pieejamības pielāgošana chrome os, pārvaldīt pieejamības iestatījumus, pieejamības iestatījumu pārvaldība</translation>
 <translation id="7700496593710078083">skatīt chrome vēsturi, skatīt pārlūkošanas vēsturi, pārlūkošanas vēstures skatīšana, chrome vēstures skatīšana</translation>
 <translation id="7739523284295786564">chrome lejupielāžu pārvaldība, pārvaldīt chrome lejupielādes, skatīt lejupielādes, skatīt lejupielādētos failus, lejupielāžu pārvaldība chrome, lejupielādēto failu pārvaldība chrome</translation>
+<translation id="7873993277886791795">izveidot google prezentāciju, izveidot jaunu prezentāciju, jauna google prezentācija, izveidot jaunu google prezentāciju, atvērt google prezentāciju</translation>
 <translation id="7992725801741093524">mainīt google konfidencialitātes iestatījumus, google konfidencialitātes iestatījumu mainīšana, google konfidencialitātes pārvaldība, pārvaldīt google konfidencialitāti, pārvaldīt konfidencialitāti google pakalpojumos, google pakalpojumu konfidencialitātes pārvaldība, google konta konfidencialitātes pārvaldība, pārvaldīt google konta konfidencialitāti</translation>
 <translation id="8020024640114692614">vienmēr atvērt saites pārlūkā chrome, vienmēr izmantot chrome, chrome kā noklusējuma pārlūks, noklusējuma pārlūks, dzēst safari, kā iestatīt chrome par noklusējuma pārlūku, galvenais pārlūks, iestatīt chrome kā manu noklusējuma pārlūku, atvērt saites pārlūkā chrome, izvēlēties chrome kā noklusējuma pārlūku, galvenā pārlūkprogramma, noņemt safari, meklēt pārlūkā chrome, iestatīt pārlūku chrome kā noklusējumu, iestatīt chrome kā noklusējuma pārlūku, standarta pārlūks</translation>
+<translation id="8189600756055704659">mainīt pārlūka chrome sinhronizācijas iestatījumus, mainīt pārlūkprogrammas chrome sinhronizācijas iestatījumus, mainīt chrome sinhronizācijas iestatījumus, rediģēt sinhronizācijas iestatījumus, pārvaldīt sinhronizācijas iestatījumus</translation>
+<translation id="8307473667919507216">chrome drošības pārbaude, veikt chrome drošības pārbaudi, veikt drošības pārbaudi</translation>
 <translation id="8319253638505741466">aizvērt inkognito logu, inkognito loga aizvēršana, beigt inkognito sesiju, iziet no inkognito režīma</translation>
+<translation id="8350110529112037703">pārvaldīt chrome paroles, skatīt paroli pārlūkā chrome, skatīt paroles pārlūkā chrome, skatīt paroli pārlūkprogrammā chrome, skatīt paroles pārlūkprogrammā chrome</translation>
+<translation id="9015559449837241926">chrome funkcijas, google chrome funkcijas, apgūt chrome funkcijas, apgūt google chrome funkcijas, jaunas chrome funkcijas, jaunas google chrome funkcijas, skatīt chrome padomus, skatīt google chrome padomus</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ml.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ml.xtb
index 775acbc..485494ca 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ml.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ml.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ml">
+<translation id="101606685846791463">ബ്രൗസർ കാഷെ മായ്ക്കുക, ചരിത്രം മായ്ക്കുക, കുക്കികൾ ഇല്ലാതാക്കുക, ബ്രൗസിംഗ് ചരിത്രം മായ്ക്കുക</translation>
+<translation id="132297926492792130">എന്റെ google അക്കൗണ്ട് നിയന്ത്രിക്കുക, എന്റെ google അക്കൗണ്ടിലെ പ്രശ്നങ്ങൾ പരിഹരിക്കുക, google അക്കൗണ്ട് മാനേജ് ചെയ്യുക, എന്റെ google അക്കൗണ്ട് മാനേജ് ചെയ്യുക</translation>
+<translation id="1455865776268085776">അദൃശ്യ മോഡിൽ കടക്കുക, പുതിയ അദൃശ്യ വിൻഡോ, അദൃശ്യ ടാബ് തുറക്കുക</translation>
 <translation id="1545931455576308147">ഈ പേജ് പങ്കിടുക, ഈ ടാബ് പങ്കിടുക</translation>
 <translation id="1912698329644085067">Chrome ക്രമീകരണം മാറ്റുക, ക്രമീകരണം മാനേജ് ചെയ്യുക</translation>
+<translation id="1938436187879863297">google keep കുറിപ്പ് സൃഷ്ടിക്കുക, google കുറിപ്പ് സൃഷ്ടിക്കുക, പുതിയ google keep കുറിപ്പ് സൃഷ്ടിക്കുക, പുതിയ google കുറിപ്പ്, google കുറിപ്പ് ആരംഭിക്കുക</translation>
 <translation id="2003251155164817216">Chrome-ന്റെ ദൃശ്യപരത ഇഷ്ടാനുസൃതമാക്കുക, Chrome തീമുകൾ മാനേജ് ചെയ്യുക</translation>
+<translation id="2757458512261408467">google കോൾ ക്ഷണം സൃഷ്ടിക്കുക, google കലണ്ടർ ഇവന്റ് സൃഷ്ടിക്കുക, പുതിയ കോൾ ക്ഷണം സൃഷ്ടിക്കുക, പുതിയ കോൾ ക്ഷണം, പുതിയ google കലണ്ടർ ക്ഷണം</translation>
+<translation id="2903767089701932453">chrome കുക്കി ക്രമീകരണം, കുക്കികളുടെ ഉപയോഗം, മൂന്നാം കക്ഷി കുക്കികളൊന്നും അനുവദിക്കരുത്, കുക്കി ക്രമീകരണം മാനേജ് ചെയ്യുക, കുക്കികൾ മാനേജ് ചെയ്യുക</translation>
+<translation id="2941773220794601465">ഈ പേജ് വിവർത്തനം ചെയ്യുക, വെബ്‌പേജ് വിവർത്തനം ചെയ്യുക</translation>
+<translation id="2973110773361184993">സൈറ്റ് അനുമതികൾ ക്രമീകരിക്കുക, അനുമതികൾ മാറ്റുക, സൈറ്റ് ക്രമീകരണം നിയന്ത്രിക്കുക, സൈറ്റ് ക്രമീകരണം മാനേജ് ചെയ്യുക, chrome-ലെ സൈറ്റ് ക്രമീകരണം</translation>
+<translation id="3371457011763794419">chrome അപ്‌ഡേറ്റ് ചെയ്യുക, ബ്രൗസർ അപ്‌ഗ്രേഡ് ചെയ്യുക</translation>
 <translation id="3489247412199563299">Chrome ഉപയോഗസഹായി ഇഷ്ടാനുസൃതമാക്കുക, ഉപയോഗസഹായി ക്രമീകരണം മാനേജ് ചെയ്യുക</translation>
+<translation id="3936847108123063274">google സൈറ്റ് സൃഷ്ടിക്കുക, google വെബ്സൈറ്റ് സൃഷ്ടിക്കുക, പുതിയ google സൈറ്റ്, പുതിയ google സൈറ്റ് തുറക്കുക</translation>
+<translation id="4165988127016746956">google ഫോം സൃഷ്ടിക്കുക, പുതിയ google ഫോം സൃഷ്ടിക്കുക, പുതിയ google ഫോം, google സർവേ ആരംഭിക്കുക</translation>
 <translation id="4367205929005172598">നഷ്ടപ്പെട്ട ഫോൺ കണ്ടെത്തുക, എന്റെ ഉപകരണം കണ്ടെത്തുക</translation>
 <translation id="4692900934258103694">അകത്ത്, ഉള്ളിൽ, എങ്ങനെ, എന്റെ, അതിൽ, ഞാൻ</translation>
+<translation id="4834023075966161189">google ഡോക് സൃഷ്ടിക്കുക, പുതിയ google ഡോക് സൃഷ്ടിക്കുക, google ഡോക്യുമെന്റ് തുറക്കുക</translation>
 <translation id="4922709528022057939">Chrome ദിനോസർ, ദിനോസർ ഗെയിം, ദിനോസർ റൺ കളിക്കുക</translation>
 <translation id="5061612070235737664">ബ്രൗസർ ഫോണ്ടുകൾ മാറ്റുക, Chrome ഫോണ്ടുകൾ മാറ്റുക</translation>
+<translation id="6413237123574479071">പേയ്മെന്റ് രീതികൾ മാനേജ് ചെയ്യുക, ക്രെഡിറ്റ് കാർഡ് അപ്‌ഡേറ്റ് ചെയ്യുക</translation>
 <translation id="6654270263159958770">ഇഷ്ടാനുസൃത തിരയൽ ചേർക്കുക, തിരയൽ യന്ത്രങ്ങൾ മാനേജ് ചെയ്യുക, തിരയൽ യന്ത്രങ്ങൾ</translation>
+<translation id="7081494400361697539">google ഷീറ്റ് സൃഷ്ടിക്കുക, വർക്ക്‌സ്പെയ്സ് സ്പ്രെഡ്‌ഷീറ്റ് സൃഷ്ടിക്കുക, പുതിയ google ഷീറ്റ്, പുതിയ google ഷീറ്റ് ആരംഭിക്കുക</translation>
+<translation id="7153639895359139570">വിലാസം ചേർക്കുക, ഷിപ്പിംഗ് വിലാസം മാറ്റുക, വിലാസങ്ങൾ എഡിറ്റ് ചെയ്യുക, വിലാസങ്ങൾ മാനേജ് ചെയ്യുക</translation>
+<translation id="7242693601647412075">സുരക്ഷാ ക്രമീകരണം മാനേജ് ചെയ്യുക</translation>
+<translation id="7441773108452086364">gmail പാസ്‌വേഡ് മാറ്റുക, എന്റെ gmail പാസ്‌വേഡ് മാറ്റുക, google പാസ്‌വേഡ് മാറ്റുക, gmail അക്കൗണ്ടിന്റെ പാസ്‌വേഡ് റീസെറ്റ് ചെയ്യുക</translation>
 <translation id="7660956169713698963">Chrome OS ഉപയോഗസഹായി ഇഷ്ടാനുസൃതമാക്കുക, ഉപയോഗസഹായി ക്രമീകരണം മാനേജ് ചെയ്യുക</translation>
 <translation id="7700496593710078083">Chrome ചരിത്രം കാണുക, ബ്രൗസിംഗ് ചരിത്രം കാണുക</translation>
 <translation id="7739523284295786564">Chrome ഡൗൺലോഡുകൾ മാനേജ് ചെയ്യുക, ഡൗൺലോഡുകൾ കാണുക</translation>
+<translation id="7873993277886791795">google സ്ലൈഡ് സൃഷ്ടിക്കുക, പുതിയ ഡെക്ക് സൃഷ്ടിക്കുക, പുതിയ google അവതരണം, google അവതരണം ആരംഭിക്കുക</translation>
 <translation id="7992725801741093524">Google സ്വകാര്യതാ ക്രമീകരണം മാറ്റുക, Google സ്വകാര്യത മാനേജ് ചെയ്യുക</translation>
 <translation id="8020024640114692614">ലിങ്കുകൾ എപ്പോഴും chrome-ൽ തുറക്കുക, എപ്പോഴും chrome ഉപയോഗിക്കുക, chrome ഡിഫോൾട്ടാക്കുക, ഡിഫോൾട്ട് ബ്രൗസർ, safari ഇല്ലാതാക്കുക, chrome എങ്ങനെ ഡിഫോൾട്ട് ബ്രൗസറാക്കാം, പ്രധാന ബ്രൗസർ, chrome ഡിഫോൾട്ടായി ക്രമീകരിക്കുക, chrome ഡിഫോൾട്ട് ബ്രൗസറായി ക്രമീകരിക്കുക, chrome എന്റെ ഡിഫോൾട്ട് ബ്രൗസറായി ക്രമീകരിക്കുക, ലിങ്കുകൾ chrome-ൽ തുറക്കുക, ഡിഫോൾട്ട് ബ്രൗസറായി chrome തിരഞ്ഞെടുക്കുക, പ്രാഥമിക ബ്രൗസർ, safari നീക്കം ചെയ്യുക, chrome-ൽ തിരയുക, chrome ഡിഫോൾട്ടായി സജ്ജീകരിക്കുക, chrome ഡിഫോൾട്ട് ബ്രൗസറായി സജ്ജീകരിക്കുക, അടിസ്ഥാന ബ്രൗസർ</translation>
+<translation id="8189600756055704659">chrome ബ്രൗസർ സമന്വയിപ്പിക്കൽ ക്രമീകരണം മാറ്റുക, chrome സമന്വയിപ്പിക്കൽ മാറ്റുക, സമന്വയിപ്പിക്കൽ എഡിറ്റ് ചെയ്യുക, സമന്വയിപ്പിക്കൽ ക്രമീകരണം എഡിറ്റ് ചെയ്യുക, സമന്വയിപ്പിക്കൽ മാനേജ് ചെയ്യുക</translation>
+<translation id="8307473667919507216">chrome സുരക്ഷാ പരിശോധന റൺ ചെയ്യുക, സുരക്ഷാ പരിശോധന റൺ ചെയ്യുക</translation>
 <translation id="8319253638505741466">അദൃശ്യ വിൻഡോ അടയ്ക്കുക, അദൃശ്യ മോഡ് അവസാനിപ്പിക്കുക</translation>
+<translation id="8350110529112037703">chrome പാസ്‌വേഡുകൾ മാനേജ് ചെയ്യുക, chrome-ൽ പാസ്‌വേഡ് കാണുക</translation>
+<translation id="9015559449837241926">chrome ഫീച്ചറുകൾ, google chrome ഫീച്ചറുകൾ അറിയുക, പുതിയ google chrome ഫീച്ചറുകൾ, chrome നുറുങ്ങുകൾ കാണുക</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ms.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ms.xtb
index ac45dba..7720deb 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ms.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ms.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ms">
+<translation id="101606685846791463">kosongkan cache penyemak imbas, kosongkan sejarah, padam kuki, padam sejarah penyemakan imbas</translation>
+<translation id="132297926492792130">kawal akaun google saya, betulkan akaun google, urus akaun google, urus akaun google saya</translation>
+<translation id="1455865776268085776">masukkan mod inkognito, tetingkap inkognito baharu, buka tab inkognito</translation>
 <translation id="1545931455576308147">kongsi halaman ini, kongsi tab ini</translation>
 <translation id="1912698329644085067">tukar tetapan chrome, urus tetapan</translation>
+<translation id="1938436187879863297">buat nota google keep, buat nota google, buat nota google keep baharu, nota google baharu, mulakan nota google</translation>
 <translation id="2003251155164817216">sesuaikan penampilan chrome, urus tema chrome</translation>
+<translation id="2757458512261408467">buat undangan google cal, buat acara google calendar, buat undangan cal baharu, acara cal baharu, undangan google calendar baharu</translation>
+<translation id="2903767089701932453">tetapan kuki chrome, penggunaan kuki, tidak membenarkan semua kuki pihak ketiga, urus tetapan kuki, urus kuki</translation>
+<translation id="2941773220794601465">terjemah halaman ini, terjemah halaman web</translation>
+<translation id="2973110773361184993">laraskan kebenaran laman, tukar kebenaran, kawal tetapan laman, urus tetapan laman, tetapan laman chrome</translation>
+<translation id="3371457011763794419">kemas kini chrome, tingkatkan penyemak imbas</translation>
 <translation id="3489247412199563299">sesuaikan kebolehaksesan chrome, urus tetapan kebolehaksesan</translation>
+<translation id="3936847108123063274">buat laman google, buat laman web google, laman google baharu, buka laman google baharu</translation>
+<translation id="4165988127016746956">buat borang google, buat borang google baharu, borang google baharu, mulakan google survey</translation>
 <translation id="4367205929005172598">cari telefon yang hilang, cari peranti saya</translation>
 <translation id="4692900934258103694">di dalam, dalam, untuk, bagaimana, yang, an, lakukan, dalam, saya, pada, ke, a, saya</translation>
+<translation id="4834023075966161189">buat dokumen google, buat dokumen google baharu, buka dokumen google</translation>
 <translation id="4922709528022057939">dino chrome, permainan dino, main dino run</translation>
 <translation id="5061612070235737664">tukar fon penyemak imbas, fon chrome</translation>
+<translation id="6413237123574479071">urus kaedah pembayaran, kemas kini kad kredit</translation>
 <translation id="6654270263159958770">tambah carian tersuai, urus enjin carian, enjin carian</translation>
+<translation id="7081494400361697539">buat google sheet, buat hamparan ruang kerja, google sheet baharu, mulakan google sheet baharu</translation>
+<translation id="7153639895359139570">tambah alamat, tukar alamat penghantaran, edit alamat, urus alamat</translation>
+<translation id="7242693601647412075">urus tetapan keselamatan</translation>
+<translation id="7441773108452086364">tukar kata laluan Gmail, tukar kata laluan Gmail saya, tukar kata laluan google, set semula kata laluan akaun Gmail</translation>
 <translation id="7660956169713698963">sesuaikan kebolehaksesan chromeos, urus tetapan kebolehaksesan</translation>
 <translation id="7700496593710078083">lihat sejarah chrome, lihat sejarah penyemakan imbas</translation>
 <translation id="7739523284295786564">urus muat turun chrome, lihat muat turun</translation>
+<translation id="7873993277886791795">buat slaid google, buat dek baharu, persembahan google baru, mulakan google preso</translation>
 <translation id="7992725801741093524">tukar tetapan privasi google, urus privasi google</translation>
 <translation id="8020024640114692614">sentiasa buka pautan dalam chrome, sentiasa gunakan chrome, chrome sebagai penyemak imbas lalai, penyemak imbas lalai, padam safari, cara menjadikan chrome penyemak imbas lalai, penyemak imbas utama, jadikan chrome penyemak imbas lalai, jadikan chrome penyemak imbas lalai saya, buka pautan dalam chrome, pilih chrome sebagai penyemak imbas lalai, penyemak imbas utama, alih keluar safari, cari dalam chrome, tetapkan chrome sebagai penyemak imbas lalai, penyemak imbas standard</translation>
+<translation id="8189600756055704659">tukar tetapan penyegerakan penyemak imbas chrome, tukar penyegerakan chrome, edit penyegerakan, edit tetapan penyegerakan, urus penyegerakan</translation>
+<translation id="8307473667919507216">jalankan semakan keselamatan chrome, jalankan semakan keselamatan</translation>
 <translation id="8319253638505741466">tutup tetingkap inkognito, tamatkan inkognito</translation>
+<translation id="8350110529112037703">urus kata laluan chrome, lihat kata laluan dalam chrome</translation>
+<translation id="9015559449837241926">ciri chrome, ketahui ciri google chrome, ciri google chrome baharu, lihat petua chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ru.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ru.xtb
index a238cd98..61e48288 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ru.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ru.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ru">
+<translation id="101606685846791463">очистить кеш браузера, стереть историю, очистить историю, удалить куки, удалить файлы cookie, удалить историю браузера</translation>
+<translation id="132297926492792130">настроить аккаунт google, изменить настройки аккаунта google, открыть настройки аккаунта google, настройка аккаунта google, управление аккаунтом google</translation>
+<translation id="1455865776268085776">включить режим инкогнито, перейти в режим инкогнито, открыть вкладку инкогнито, открыть окно в режиме инкогнито, новое окно в режиме инкогнито</translation>
 <translation id="1545931455576308147">поделиться страницей, поделиться вкладкой, отправить страницу, поделиться с другим пользователем, ссылка на страницу, отправить ссылку на вкладку</translation>
 <translation id="1912698329644085067">изменить настройки хром, управление настройками, параметры хром, настройки браузера, настройки chrome, изменить параметры chrome</translation>
+<translation id="1938436187879863297">создать заметку в google keep, сделать заметку google, новая заметка в google keep</translation>
 <translation id="2003251155164817216">настроить внешний вид хром, управлять темами, поменять цвет, смена темы, темы для хром, настройки вида, изменить оформление, оформление chrome, темы chrome</translation>
+<translation id="2757458512261408467">создать мероприятие в google календаре, новое мероприятие в google календаре, создать приглашение в google календаре, добавить мероприятие в google календарь</translation>
+<translation id="2903767089701932453">открыть настройки cookie в chrome, использование файлов cookie, настройки файлов cookie в chrome, управление настройками cookie в chrome, заблокировать сторонние файлы cookie, запретить сторонние куки</translation>
+<translation id="2941773220794601465">перевести эту страницу, перевести сайт, перевести веб-страницу</translation>
+<translation id="2973110773361184993">открыть настройки сайтов в chrome, перейти в настройки сайтов, настроить разрешения сайтов, изменить настройки сайтов в chrome, управление настройками сайтов, разрешения для сайтов в chrome</translation>
+<translation id="3371457011763794419">обновить chrome, обновить браузер, обновление chrome</translation>
 <translation id="3489247412199563299">настройка специальных возможностей chrome, специальные возможности, спецвозможности, управление специальными возможностями, поменять настройки специальных возможностей, доступность chrome, параметры доступности</translation>
+<translation id="3936847108123063274">создать сайт в google сайтах, создать сайт на платформе google, сделать сайт на платформе google, новый сайт на платформе google</translation>
+<translation id="4165988127016746956">создать форму google, новая форма google, создать опрос google, новый опрос google</translation>
 <translation id="4367205929005172598">найти телефон, найти устройство, потерялся телефон, как найти потерянное устройство, утерянный телефон, как найти телефон</translation>
 <translation id="4692900934258103694">в, для, как, мой, моя, мое, мои, на, с, у, к</translation>
+<translation id="4834023075966161189">создать документ google, создать файл в google документах, новый документ google, открыть документ google</translation>
 <translation id="4922709528022057939">хром дино, игра дино, играть в дино, открыть дино, дино, dino, dino run, дино ран, chrome dino, игра в chrome, динозаврик в хром</translation>
 <translation id="5061612070235737664">изменить шрифт браузера, шрифты хром, настройки шрифтов, настройка текста в браузере, параметры текста, шрифты chrome, изменить шрифт chrome</translation>
+<translation id="6413237123574479071">изменить способ оплаты, настроить способы оплаты, управление способами оплаты, обновить данные банковской карты, изменить данные кредитной карты</translation>
 <translation id="6654270263159958770">добавить пользовательский поиск, управлять поисковыми системами, поисковые системы, настройки поиска, пользовательские параметры поиска, настройки поиска, настройка поисковика, система пользовательского поиска, управление поиском</translation>
+<translation id="7081494400361697539">создать таблицу google, создать таблицу в workspace, новая таблица google, создать файл в google таблицах</translation>
+<translation id="7153639895359139570">добавить адрес, сохранить адрес, изменить адрес доставки, изменить сохраненный адрес, изменить адреса, настроить адреса, управление адресами</translation>
+<translation id="7242693601647412075">открыть настройки безопасности, изменить настройки безопасности, перейти в настройки безопасности, управление настройками безопасности</translation>
+<translation id="7441773108452086364">сменить пароль от gmail, изменить пароль gmail, обновить пароль gmail, изменить пароль аккаунта google, сбросить пароль аккаунта gmail</translation>
 <translation id="7660956169713698963">настройка специальных возможностей chromeos, специальные возможности, спецвозможности, управление специальными возможностями, поменять настройки специальных возможностей, настройки доступности chromeos, управление параметрами доступности</translation>
 <translation id="7700496593710078083">посмотреть историю хром, открыть историю браузера, история просмотра, просмотр сайтов, история посещения сайтов, история chrome, посмотреть историю chrome</translation>
 <translation id="7739523284295786564">управлять загрузками хром, открыть скачанные файлы, мои загрузки, скачанные файлы, скачанное, загрузки, посмотреть загрузки, загрузки chrome</translation>
+<translation id="7873993277886791795">создать презентацию google, сделать презентацию, новая презентация google, создать файл в google презентациях</translation>
 <translation id="7992725801741093524">поменять настройки конфиденциальности гугл, конфиденциальность гугл, изменить настройки конфиденциальности Google, Google конфиденциальность, параметры конфиденциальности Google</translation>
 <translation id="8020024640114692614">всегда открывать ссылки в chrome, всегда использовать chrome, использовать chrome по умолчанию, браузер по умолчанию, удалить safari, как сделать chrome браузером по умолчанию, основной браузер, как сделать chrome основным браузером, открывать все ссылки в chrome, как выбрать chrome браузером по умолчанию, искать в chrome</translation>
+<translation id="8189600756055704659">открыть настройки синхронизации в chrome, изменить настройки синхронизации в chrome, перейти в настройки синхронизации, настроить синхронизацию, управление синхронизацией</translation>
+<translation id="8307473667919507216">включить проверку безопасности в chrome, выполнить проверку безопасности в chrome, запустить проверку безопасности</translation>
 <translation id="8319253638505741466">закрыть окно инкогнито, завершить сеанс инкогнито, свернуть инкогнито, прекратить режим инкогнито, закончить инкогнито, выйти из режима инкогнито</translation>
+<translation id="8350110529112037703">посмотреть пароли в chrome, управление паролями в chrome, открыть список паролей в chrome</translation>
+<translation id="9015559449837241926">функции chrome, новые функции в chrome, узнать о новых функциях chrome, новые возможности chrome, советы по работе в chrome, советы для пользователей chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb
index 7010847..07b625ad 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sv">
+<translation id="101606685846791463">rensa webbläsarens cacheminne, rensa historik, radera cookies, rensa webbhistorik</translation>
+<translation id="132297926492792130">styra mitt google-konto, åtgärda google-konto, hantera google-konto, hantera mitt google-konto</translation>
+<translation id="1455865776268085776">starta inkognitoläge, nytt inkognitofönster, öppna inkognitoflik</translation>
 <translation id="1545931455576308147">dela den här sidan, dela den här fliken, dela sidan, dela fliken</translation>
 <translation id="1912698329644085067">ändra inställningar för chrome, hantera inställningar, ändra inställningar</translation>
+<translation id="1938436187879863297">skriv en anteckning i google keep, skriv en google-anteckning, skriv en ny anteckning i google keep, ny google-anteckning, öppna google-anteckningar</translation>
 <translation id="2003251155164817216">anpassa utseende i chrome, hantera teman i chrome, ändra tema i chrome</translation>
+<translation id="2757458512261408467">skapa inbjudan i google kalender, skapa händelse i google kalender, skapa ny inbjudan i kalender, ny händelse i kalender, ny inbjudan i google kalender</translation>
+<translation id="2903767089701932453">cookieinställningar i chrome, användning av cookies, förbjuda alla tredjepartscookies, hantera cookie-inställningar, hantera cookies</translation>
+<translation id="2941773220794601465">översätt den här sidan, översätt webbsida</translation>
+<translation id="2973110773361184993">ändra webbplatsbehörigheter, ändra behörigheter, styr webbplatsinställningar, hantera webbplatsinställningar, webbplatsinställningar i chrome</translation>
+<translation id="3371457011763794419">uppdatera chrome, uppgradera webbläsaren</translation>
 <translation id="3489247412199563299">anpassa tillgänglighet i chrome, hantera tillgänglighetsinställningar, ändra tillgänglighetsinställningar</translation>
+<translation id="3936847108123063274">skapa google-webbplats, gör en google-webbplats, ny google-webbplats, öppna ny google-webbplats</translation>
+<translation id="4165988127016746956">skapa google-formulär, skapa ett nytt google-formulär, nytt google-formulär, öppna google-enkät</translation>
 <translation id="4367205929005172598">hitta borttappad telefon, hitta min enhet, hitta telefonen</translation>
 <translation id="4692900934258103694">inuti, inom, för, hur, en, ett, i, min, mitt, på, att, jag</translation>
+<translation id="4834023075966161189">skapa google-dokument, skapa ett nytt google-dokument, öppna google-dokument</translation>
 <translation id="4922709528022057939">chrome dino, dinospelet, spela dino run, spela chrome dino</translation>
 <translation id="5061612070235737664">ändra webbläsarens teckensnitt, teckensnitt i chrome, ändra teckensnitt</translation>
+<translation id="6413237123574479071">hantera betalningsmetoder, uppdatera kreditkort</translation>
 <translation id="6654270263159958770">lägg till anpassad sökning, hantera sökmotorer, sökmotorer</translation>
+<translation id="7081494400361697539">skapa google-kalkylark, skapa kalkylark i workspace, nytt google-kalkylark, öppna ett nytt google-kalkylark</translation>
+<translation id="7153639895359139570">lägg till adress, ändra leveransadress, redigera adresser, hantera adresser</translation>
+<translation id="7242693601647412075">hantera säkerhetsinställningar</translation>
+<translation id="7441773108452086364">ändra gmail-lösenord, ändra gmail-lösenord, byta lösenord för google, byta lösenord för gmail, ändra lösenord för gmail-kontot</translation>
 <translation id="7660956169713698963">anpassa tillgänglighet i chromeos, hantera tillgänglighetsinställningar, ändra tillgänglighetsinställningar</translation>
 <translation id="7700496593710078083">se historik i chrome, visa webbhistorik, se webbhistorik</translation>
 <translation id="7739523284295786564">hantera nedladdningar i chrome, visa nedladdningar, se nedladdningar</translation>
+<translation id="7873993277886791795">skapa google-presentation, skapa en ny presentation, ny google-presentation, öppna google presentationer</translation>
 <translation id="7992725801741093524">ändra googles integritetsinställningar, hantera integritet på google, ändra integritetsinställningar</translation>
 <translation id="8020024640114692614">öppna alltid länkar i chrome, använd alltid chrome, chrome som standard, standardwebbläsare, radera safari, hur gör man chrome till standardwebbläsare, huvudwebbläsare, använd chrome som standard, gör chrome till standardwebbläsare, använd chrome som standardwebbläsare, öppna länkar i chrome, välj chrome som standardwebbläsare, primär webbläsare, ta bort safari, sök i chrome, ställ in chrome som standard, ställ in chrome som standardwebbläsare, standardwebbläsare</translation>
+<translation id="8189600756055704659">ändra synkroniseringsinställningar i webbläsaren chrome, ändra chrome sync, redigera synkronisering, redigera synkroniseringsinställningar, hantera synkronisering</translation>
+<translation id="8307473667919507216">gör chromes säkerhetskontroll, gör säkerhetskontrollen</translation>
 <translation id="8319253638505741466">stäng inkognitofönster, avsluta inkognito, stäng inkognito</translation>
+<translation id="8350110529112037703">hantera lösenord för chrome, visa lösenord i chrome</translation>
+<translation id="9015559449837241926">chrome-funktioner, ta reda på mer om funktioner i google chrome, nya funktioner i google chrome, få tips för chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_sw.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_sw.xtb
index 2be418e6..7f4f272 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_sw.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_sw.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sw">
+<translation id="101606685846791463">kufuta akiba ya kivinjari, kufuta historia, kufuta vidakuzi, kufuta historia ya kuvinjari</translation>
+<translation id="132297926492792130">kudhibiti akaunti yangu ya google, kurekebisha akaunti ya google, kudhibiti akaunti ya google, kudhibiti akaunti yangu ya google</translation>
+<translation id="1455865776268085776">kuingia katika hali fiche, dirisha fiche jipya, kufungua kichupo fiche</translation>
 <translation id="1545931455576308147">shiriki ukurasa huu, shiriki kichupo hiki</translation>
 <translation id="1912698329644085067">badilisha mipangilio ya chrome, dhibiti mipangilio</translation>
+<translation id="1938436187879863297">kuunda dokezo la google keep, kuunda dokezo la google, kutengeneza dokezo jipya la google keep, dokezo jipya la google, kuanzisha dokezo la google</translation>
 <translation id="2003251155164817216">weka mapendeleo ya mwonekano wa chrome, dhibiti mandhari ya chrome</translation>
+<translation id="2757458512261408467">kuunda mwaliko wa kalenda ya google, kuanzisha tukio la kalenda ya google, kuanzisha mwaliko mpya wa kalenda, tukio jipya la kalenda, mwaliko mpya wa kalenda ya google</translation>
+<translation id="2903767089701932453">mipangilio ya vidakuzi vya chrome, matumizi ya vidakuzi, kuzuia vidakuzi vyote vya mshirika mwingine, kudhibiti mipangilio ya vidakuzi, kudhibiti vidakuzi</translation>
+<translation id="2941773220794601465">kutafsiri ukurasa huu, kutafsiri ukurasa wa wavuti</translation>
+<translation id="2973110773361184993">kurekebisha ruhusa za tovuti, kubadilisha ruhusa, dhibiti mipangilio ya tovuti, kudhibiti mipangilio ya tovuti, mipangilio ya tovuti kwenye chrome</translation>
+<translation id="3371457011763794419">kusasisha chrome, kuboresha kivinjari</translation>
 <translation id="3489247412199563299">weka mapendeleo ya ufikivu wa chrome, dhibiti mipangilio ya ufikivu</translation>
+<translation id="3936847108123063274">kuunda tovuti ya google, kutengeneza tovuti ya google, tovuti mpya ya google, kufungua tovuti mpya ya google</translation>
+<translation id="4165988127016746956">kuunda fomu ya google, kutengeneza fomu mpya ya google, fomu mpya ya google, kuanzisha utafiti wa google</translation>
 <translation id="4367205929005172598">tafuta simu iliyopotea, tafuta kifaa changu</translation>
 <translation id="4692900934258103694">ndani, katika, kwa, vipi, ya, fanya, yangu, kwenye, mimi</translation>
+<translation id="4834023075966161189">kutengeneza hati ya google, kutengeneza hati mpya ya google, kufungua hati ya google</translation>
 <translation id="4922709528022057939">mchezo wa dinosau wa chrome, mchezo wa dinosau, cheza mchezo wa dinosau anayekimbia</translation>
 <translation id="5061612070235737664">badilisha fonti ya kivinjari, fonti za chrome</translation>
+<translation id="6413237123574479071">kudhibiti njia za kulipa, kusasisha kadi ya malipo</translation>
 <translation id="6654270263159958770">weka utafutaji maalum, dhibiti mitambo ya kutafuta, mitambo ya kutafuta</translation>
+<translation id="7081494400361697539">kutengeneza jedwali la google, kuunda lahajedwali ya nafasi ya kazi, jedwali jipya la google, kuanzisha jedwali jipya la google</translation>
+<translation id="7153639895359139570">kuweka anwani, kubadilisha anwani ya mahali bidhaa zitakapopelekwa, kubadilisha anwani, kudhibiti anwani</translation>
+<translation id="7242693601647412075">kudhibiti mipangilio ya usalama</translation>
+<translation id="7441773108452086364">kubadilisha nenosiri la gmail, kubadilisha nenosiri langu la gmail, kubadilisha nenosiri la google, kuweka upya nenosiri la akaunti ya gmail</translation>
 <translation id="7660956169713698963">weka mapendeleo ya ufikivu wa mfumo wa uendeshaji wa chrome, dhibiti mipangilio ya ufikivu</translation>
 <translation id="7700496593710078083">angalia historia kwenye chrome, angalia historia ya kuvinjari</translation>
 <translation id="7739523284295786564">dhibiti vipakuliwa kwenye chrome, angalia vipakuliwa</translation>
+<translation id="7873993277886791795">kuanzisha slaidi ya google, kutengeneza deki mpya, wasilisho jipya la google, kuanzisha google preso</translation>
 <translation id="7992725801741093524">badilisha mipangilio ya faragha kwenye google, dhibiti faragha kwenye google</translation>
 <translation id="8020024640114692614">fungua viungo kwenye chrome kila wakati, tumia chrome kila wakati, chrome kama kivinjari chaguomsingi, futa kivinjari cha safari, namna ya kuifanya chrome iwe kivinjari chaguomsingi, kivinjari kikuu, ifanye chrome iwe chaguomsingi, ifanye chrome iwe kivinjari chaguomsingi, ifanye chrome kuwa kivinjari changu chaguomsingi, fungua viungo kwenye chrome, teua chrome iwe kivinjari chaguomsingi, kivinjari msingi, ondoa kivinjari cha safari, tafuta kwenye chrome, weka chrome iwe chaguomsingi, weka chrome iwe kivinjari chaguomsingi, kivinjari cha kawaida</translation>
+<translation id="8189600756055704659">kubadilisha mipangilio ya usawazishaji ya kivinjari cha chrome, kubadilisha usawazishaji wa chrome, kubadilisha usawazishaji, kubadilisha mipangilio ya usawazishaji, kudhibiti usawazishaji</translation>
+<translation id="8307473667919507216">kufanya ukaguzi wa usalama kwenye chrome, kufanya ukaguzi wa usalama</translation>
 <translation id="8319253638505741466">funga dirisha fiche, ondoka katika hali fiche</translation>
+<translation id="8350110529112037703">kudhibiti manenosiri ya chrome, kuangalia manenosiri kwenye chrome</translation>
+<translation id="9015559449837241926">vipengele vya chrome, fahamu kuhusu vipengele vya google chrome, vipengele vipya vya google chrome, angalia vidokezo vya chrome</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ta.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ta.xtb
index 835cbdd..51dad2f 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_ta.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_ta.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ta">
+<translation id="101606685846791463">உலாவியின் தற்காலிகச் சேமிப்பை அழி, பதிவுகளை அழி, குக்கீகளை நீக்கு, இதுவரை இணையத்தில் பார்த்தவற்றை அழி</translation>
+<translation id="132297926492792130">எனது கூகுள் கணக்கைக் கட்டுப்படுத்த வேண்டும், கூகுள் கணக்கைச் சரிசெய்ய வேண்டும், கூகுள் கணக்கை நிர்வகிக்க வேண்டும், எனது கூகுள் கணக்கை நிர்வகிக்க வேண்டும்</translation>
+<translation id="1455865776268085776">மறைநிலைப் பயன்முறைக்குச் செல், புதிய மறைநிலைச் சாளரம், மறைநிலைப் பக்கத்தைத் திற, இன்காக்னிட்டோ பக்கத்தைத் திற</translation>
 <translation id="1545931455576308147">இந்தப் பக்கத்தைப் பகிர், இந்த உலாவிப் பக்கத்தைப் பகிர், இந்தப் பிரிவைப் பகிர், பக்கத்தைப் பகிர், உலாவிப் பக்கத்தைப் பகிர், இதைப் பகிர்</translation>
 <translation id="1912698329644085067">Chrome அமைப்புகளை மாற்று, அமைப்புகளை நிர்வகி, Chrome அமைப்புகள், அமைப்புகள்</translation>
+<translation id="1938436187879863297">கூகுள் கீப் குறிப்பை உருவாக்கு, கூகுள் குறிப்பை உருவாக்கு, புதிய கூகுள் கீப் குறிப்பை உருவாக்கு, புதிய கூகுள் குறிப்பு, கூகுள் குறிப்பைத் தொடங்கு, கூகுள் கீப் நோட்டை உருவாக்கு</translation>
 <translation id="2003251155164817216">Chrome தோற்றத்தைப் பிரத்தியேகமாக்கு, Chrome தீம்களை நிர்வகி, Chrome தீம்கள், Chrome தோற்றம்</translation>
+<translation id="2757458512261408467">கூகுள் கேலெண்டர் அழைப்பை உருவாக்கு, புதிய கூகுள் கேலெண்டர் நிகழ்வை உருவாக்கு, புதிய கேலெண்டர் நிகழ்வு, புதிய கூகுள் கேலெண்டர் அழைப்பு</translation>
+<translation id="2903767089701932453">குரோம் குக்கீ அமைப்புகள், குக்கீகள் பயன்பாடு, அனைத்து மூன்றாம் தரப்புக் குக்கீகளின் அனுமதிகளை நீக்கு, குக்கீ அமைப்புகளை நிர்வகிக்க வேண்டும், குக்கீகளை நிர்வகிக்க வேண்டும்</translation>
+<translation id="2941773220794601465">இந்தப் பக்கத்தை மொழிபெயர், இணையப் பக்கத்தை மொழிபெயர், இந்தப் பக்கத்தை டிரான்ஸ்லேட் பண்ணு</translation>
+<translation id="2973110773361184993">தள அனுமதிகளை மாற்று, அனுமதிகளை மாற்று, தள அமைப்புகளைக் கட்டுப்படுத்த வேண்டும், தள அமைப்புகளை நிர்வகிக்க வேண்டும், குரோம் தள அமைப்புகள்</translation>
+<translation id="3371457011763794419">குரோமைப் புதுப்பிக்க வேண்டும், உலாவியை மேம்படுத்து</translation>
 <translation id="3489247412199563299">Chrome அணுகல்தன்மையைப் பிரத்தியேகமாக்கு, அணுகல்தன்மை அமைப்புகளை நிர்வகி, Chrome அணுகல்தன்மை, அணுகல்தன்மை அமைப்புகள்</translation>
+<translation id="3936847108123063274">கூகுள் தளத்தை உருவாக்கு, கூகுள் இணையதளத்தை உருவாக்கு, புதிய கூகுள் தளம், புதிய கூகுள் தளத்தைத் திற, கூகுள் வெப்சைட்டை உருவாக்கு</translation>
+<translation id="4165988127016746956">கூகுள் படிவத்தை உருவாக்கு, புதிய கூகுள் படிவத்தை உருவாக்கு, புதிய கூகுள் படிவம், கூகுள் கருத்துக்கணிப்பைத் தொடங்கு, கூகுள் ஃபார்ம்ஸை உருவாக்கு, புதிய கூகுள் ஃபார்ம்ஸ்</translation>
 <translation id="4367205929005172598">தொலைந்துபோன ஃபோனைக் கண்டறி, Find My Device, எனது சாதனத்தைக் கண்டறி, ஃபோனைக் கண்டறி</translation>
 <translation id="4692900934258103694">இதில், எப்படி, எனது, நான்</translation>
+<translation id="4834023075966161189">கூகுள் ஆவணத்தை உருவாக்கு, புதிய கூகுள் ஆவணத்தை உருவாக்கு, கூகுள் ஆவணத்தைத் திற, கூகுள் டாக்ஸை உருவாக்கு, புதிய கூகுள் டாக்ஸ்</translation>
 <translation id="4922709528022057939">Chrome டைனோசர் கேம், டைனோசர் கேம், டைனோசர் கேம் விளையாடு</translation>
 <translation id="5061612070235737664">உலாவியின் எழுத்து வடிவத்தை மாற்று, Chrome எழுத்து வடிவங்கள், எழுத்து வடிவத்தை மாற்று, எழுத்து வடிவங்கள், Chromeமில் எழுத்து வடிவங்கள்</translation>
+<translation id="6413237123574479071">பேமெண்ட் முறையை நிர்வகிக்க வேண்டும், கிரெடிட் கார்டு விவரங்களைப் புதுப்பிக்க வேண்டும்</translation>
 <translation id="6654270263159958770">பிரத்தியேகத் தேடலைச் சேர், தேடல் இன்ஜின்களை நிர்வகி, தேடல் இன்ஜின்கள், தேடலைச் சேர், தேடல் சொற்களைச் சேர், இதைச் சேர்</translation>
+<translation id="7081494400361697539">கூகுள் விரிதாளை உருவாக்கு, வொர்க்ஸ்பேஸ் விரிதாளை உருவாக்கு, புதிய கூகுள் விரிதாள், புதிய கூகுள் விரிதாளைத் தொடங்கு, புதிய கூகுள் ஸ்பிரெட்ஷீட்</translation>
+<translation id="7153639895359139570">முகவரியைச் சேர், ஷிப்பிங் முகவரியை மாற்று, முகவரிகளைத் திருத்து, முகவரிகளை நிர்வகிக்க வேண்டும்</translation>
+<translation id="7242693601647412075">பாதுகாப்பு அமைப்புகளை நிர்வகிக்க வேண்டும்</translation>
+<translation id="7441773108452086364">ஜிமெயில் கடவுச்சொல்லை மாற்று, எனது ஜிமெயில் கடவுச்சொல்லை மாற்று, கூகுள் கடவுச்சொல்லை மாற்று, கூகுள் கணக்கின் கடவுச்சொல்லை மீட்டமை</translation>
 <translation id="7660956169713698963">Chrome OS அணுகல்தன்மையைப் பிரத்தியேகமாக்கு, அணுகல்தன்மை அமைப்புகளை நிர்வகி, Chrome OS அணுகல்தன்மை, Chrome OS அணுகல்தன்மை அமைப்புகள்</translation>
 <translation id="7700496593710078083">Chrome செயல்பாடுகளைக் காட்டு, இதுவரை இணையத்தில் பார்த்தவற்றைக் காட்டு, Chrome செயல்பாடுகள், இதுவரை தேடியவை, இதுவரை இணையத்தில் பார்த்தவை</translation>
 <translation id="7739523284295786564">Chrome பதிவிறக்கங்களை நிர்வகி, பதிவிறக்கங்களைக் காட்டு, Chrome பதிவிறக்கங்கள், பதிவிறக்கங்கள்</translation>
+<translation id="7873993277886791795">கூகுள் ஸ்லைடை உருவாக்கு, புதிய டெக்கை உருவாக்கு, புதிய கூகுள் விளக்கக்காட்சி, கூகுள் விளக்கக்காட்சியைத் தொடங்கு, புதிய கூகுள் பிரசண்டேஷன்</translation>
 <translation id="7992725801741093524">Google தனியுரிமை அமைப்புகளை மாற்று, Google தனியுரிமையை நிர்வகி, Google தனியுரிமை அமைப்புகள், Google தனியுரிமை</translation>
 <translation id="8020024640114692614">லிங்க்கை எப்போதும் குரோமில் எப்படித் திறப்பது?, எப்போதும் chromeமைப் பயன்படுத்துதல், Chromeமை இயல்பு உலாவியாக அமைத்தல், Chromeமை எப்படிப் பிரைமரியாக அமைப்பது?, குரோமில் எப்போதும் தேடுதல், இணைப்புகளை எப்போதும் chromeமில் திறத்தல், இணைப்புகளை எப்போதும் குரோமில் திற, Chromeமை இயல்பு உலாவியாக எப்படி அமைப்பது?, இணைப்புகளை எப்போதும் Chrome-இல் திற, Chromeமில் எப்போதும் தேட என்ன செய்ய வேண்டும்?, லிங்க்கை எப்போதும் chromeமில் திறக்க என்ன செய்ய வேண்டும்?, எப்போதும் குரோமைப் பயன்படுத்த என்ன செய்ய வேண்டும்?, Chromeமை இயல்பு உலாவியாக அமைக்க என்ன செய்ய வேண்டும்?, Chromeமைப் பிரைமரியாக அமைத்தல், லிங்க்கை எப்போதும் குரோமில் திறக்க என்ன செய்வது?</translation>
+<translation id="8189600756055704659">குரோம் உலாவி ஒத்திசைவு அமைப்புகளை மாற்று, குரோம் ஒத்திசைவை மாற்று, ஒத்திசைவைத் திருத்து, ஒத்திசைவு அமைப்புகளை மாற்று, ஒத்திசைவை நிர்வகி, குரோம் ஸின்க்கை மாற்று</translation>
+<translation id="8307473667919507216">குரோம் பாதுகாப்புச் சரிபார்ப்பை இயக்கு, பாதுகாப்புச் சரிபார்ப்பை இயக்கு</translation>
 <translation id="8319253638505741466">மறைநிலைச் சாளரத்தை மூடுக, மறைநிலைப் பயன்முறையை நிறைவுசெய், மறைநிலைப் பயன்முறையை முடி, மறைநிலைப் பயன்முறையை நிறுத்து</translation>
+<translation id="8350110529112037703">குரோம் கடவுச்சொற்களை நிர்வகிக்க வேண்டும், குரோமில் கடவுச்சொற்களைப் பார்க்க வேண்டும்</translation>
+<translation id="9015559449837241926">குரோம் அம்சங்கள், கூகுள் குரோம் அம்சங்களை அறிய வேண்டும், புதிய கூகுள் குரோம் அம்சங்கள், குரோம் உதவிக்குறிப்புகளைக் காட்டு</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_zh-CN.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_zh-CN.xtb
index 933f735..036c62c 100644
--- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_zh-CN.xtb
+++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_zh-CN.xtb
@@ -1,19 +1,41 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-CN">
+<translation id="101606685846791463">清除浏览器缓存, 清除历史记录, 删除 Cookie, 清除浏览记录</translation>
+<translation id="132297926492792130">控制我的 Google 帐号, 修复 Google 帐号, 管理 Google 帐号, 管理我的 Google 帐号</translation>
+<translation id="1455865776268085776">进入无痕模式, 打开新的无痕式窗口, 打开无痕式标签页</translation>
 <translation id="1545931455576308147">分享此页, 分享此标签页</translation>
 <translation id="1912698329644085067">更改 chrome 设置, 管理设置</translation>
+<translation id="1938436187879863297">创建 Google Keep 记事, 创建 Google 记事, 创建新的 Google Keep 记事, 新建 Google 记事, 开始创建 Google 记事</translation>
 <translation id="2003251155164817216">自定义 chrome 外观, 管理 chrome 主题</translation>
+<translation id="2757458512261408467">创建 Google 日历邀请, 创建 Google 日历活动, 创建新的 Google 日历邀请, 新建 Google 日历活动, 新建 Google 日历邀请</translation>
+<translation id="2903767089701932453">Chrome Cookie 设置, Cookie 使用, 禁用所有第三方 Cookie, 管理 Cookie 设置, 管理 Cookie</translation>
+<translation id="2941773220794601465">翻译此页, 翻译网页, 翻译当前页面</translation>
+<translation id="2973110773361184993">调整网站权限, 更改权限, 控制网站设置, 管理网站设置, 网站设置 Chrome</translation>
+<translation id="3371457011763794419">更新 Chrome, 升级浏览器, 更新 Google Chrome</translation>
 <translation id="3489247412199563299">自定义 chrome 的无障碍功能, 管理无障碍设置</translation>
+<translation id="3936847108123063274">创建 Google 网站, 新建 Google 网站, 制作 Google 网站, 打开新的 Google 网站</translation>
+<translation id="4165988127016746956">创建 Google 表单, 制作新的 Google 表单, 新建 Google 表单, 开始创建 Google 问卷调查</translation>
 <translation id="4367205929005172598">查找丢失的手机, 查找我的设备</translation>
 <translation id="4692900934258103694">内部, 内, 为, 针对, 如何, 此, 相应, 一个, 某个, 做, 里面, 我的, 上面, 关于, 对, 到, 向, 往, 朝着, 我</translation>
+<translation id="4834023075966161189">创建 Google 文档, 制作新的 Google 文档, 打开 Google 文档</translation>
 <translation id="4922709528022057939">chrome dino, dino 游戏, 玩 dino run</translation>
 <translation id="5061612070235737664">更改浏览器字体, chrome 字体</translation>
+<translation id="6413237123574479071">管理付款方式, 更新信用卡, 在设置中更新付款信息</translation>
 <translation id="6654270263159958770">添加自定义搜索, 管理搜索引擎, 搜索引擎</translation>
+<translation id="7081494400361697539">创建 Google 表格, 创建工作区电子表格, 新建 Google 表格, 开始制作新的 Google 表格</translation>
+<translation id="7153639895359139570">添加地址, 更改送货地址, 修改地址, 管理地址</translation>
+<translation id="7242693601647412075">管理安全设置, 管理安全性设置, 在 Chrome 设置中管理安全性</translation>
+<translation id="7441773108452086364">更改 Gmail 密码, 更改我的 Gmail 密码, 更改 Google 密码, 重置 Gmail 帐号密码</translation>
 <translation id="7660956169713698963">自定义 chrome 操作系统的无障碍性, 管理无障碍设置</translation>
 <translation id="7700496593710078083">查看 chrome 历史记录, 查看浏览记录</translation>
 <translation id="7739523284295786564">管理 chrome 下载内容, 查看下载内容</translation>
+<translation id="7873993277886791795">创建 Google 幻灯片, 制作新演示文稿, 新建 Google 演示文稿, 开始使用 Google 演示文稿</translation>
 <translation id="7992725801741093524">更改 google 隐私设置, 管理 google 隐私</translation>
 <translation id="8020024640114692614">始终在 chrome 中打开链接, 始终使用 chrome, 将 chrome 设为默认浏览器, 如何将 chrome 设为默认浏览器, 将 chrome 设为我的默认浏览器, 选择 chrome 作为默认浏览器, 默认在 chrome 中打开链接, 将 chrome 用作主要浏览器, 默认在 chrome 中搜索, 在 chrome 中打开链接</translation>
+<translation id="8189600756055704659">更改 Chrome 浏览器同步设置, 更改 Chrome 同步, 修改同步, 修改同步设置, 管理同步</translation>
+<translation id="8307473667919507216">运行 Chrome 安全检查, 运行安全检查, 在 Chrome 中运行安全检查</translation>
 <translation id="8319253638505741466">关闭无痕式窗口, 结束无痕模式</translation>
+<translation id="8350110529112037703">管理 Chrome 密码, 在 Chrome 中查看密码, 在 Chrome 设置中管理密码</translation>
+<translation id="9015559449837241926">Chrome 功能, 了解 Google Chrome 功能, 新的 Google Chrome 功能, 查看 Chrome 提示</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc
index cf137768d..fa1d59b 100644
--- a/components/page_info/page_info.cc
+++ b/components/page_info/page_info.cc
@@ -1205,15 +1205,15 @@
     cookies_info.blocked_sites_count =
         GetThirdPartySitesWithBlockedCookiesAccessCount(site_url_);
 
+#if !BUILDFLAG(IS_ANDROID)
     if (base::FeatureList::IsEnabled(
             privacy_sandbox::kPrivacySandboxFirstPartySetsUI)) {
-#if !BUILDFLAG(IS_ANDROID)
       auto fps_owner = delegate_->GetFpsOwner(site_url_);
       if (fps_owner)
         cookies_info.fps_info = PageInfoUI::CookiesFpsInfo(*fps_owner);
-
-#endif
     }
+#endif
+
     cookies_info.status = status_;
     cookies_info.enforcement = enforcement_;
     ui_->SetCookieInfo(cookies_info);
diff --git a/components/page_load_metrics/renderer/metrics_render_frame_observer.cc b/components/page_load_metrics/renderer/metrics_render_frame_observer.cc
index be80ee6..f8731d8 100644
--- a/components/page_load_metrics/renderer/metrics_render_frame_observer.cc
+++ b/components/page_load_metrics/renderer/metrics_render_frame_observer.cc
@@ -91,7 +91,9 @@
 
 MetricsRenderFrameObserver::MetricsRenderFrameObserver(
     content::RenderFrame* render_frame)
-    : content::RenderFrameObserver(render_frame) {}
+    : content::RenderFrameObserver(render_frame),
+      blink::WebLocalFrameObserver(render_frame ? render_frame->GetWebFrame()
+                                                : nullptr) {}
 
 MetricsRenderFrameObserver::~MetricsRenderFrameObserver() {
   if (page_timing_metrics_sender_)
@@ -388,7 +390,11 @@
   }
 }
 
-void MetricsRenderFrameObserver::OnMobileFriendlinessChanged(
+void MetricsRenderFrameObserver::OnFrameDetached() {
+  WillDetach();
+}
+
+void MetricsRenderFrameObserver::DidChangeMobileFriendliness(
     const blink::MobileFriendliness& mf) {
   if (page_timing_metrics_sender_)
     page_timing_metrics_sender_->DidObserveMobileFriendlinessChanged(mf);
diff --git a/components/page_load_metrics/renderer/metrics_render_frame_observer.h b/components/page_load_metrics/renderer/metrics_render_frame_observer.h
index af3426cf..0d4ab66 100644
--- a/components/page_load_metrics/renderer/metrics_render_frame_observer.h
+++ b/components/page_load_metrics/renderer/metrics_render_frame_observer.h
@@ -17,7 +17,7 @@
 #include "third_party/blink/public/common/loader/loading_behavior_flag.h"
 #include "third_party/blink/public/common/responsiveness_metrics/user_interaction_latency.h"
 #include "third_party/blink/public/mojom/loader/resource_load_info.mojom-shared.h"
-#include "third_party/blink/public/web/web_local_frame_client.h"
+#include "third_party/blink/public/web/web_local_frame_observer.h"
 
 class GURL;
 
@@ -37,6 +37,7 @@
 // updates for main frames, but only metadata updates for child frames.
 class MetricsRenderFrameObserver
     : public content::RenderFrameObserver,
+      public blink::WebLocalFrameObserver,
       public subresource_filter::AdResourceTracker::Observer {
  public:
   explicit MetricsRenderFrameObserver(content::RenderFrame* render_frame);
@@ -107,7 +108,10 @@
       const gfx::Rect& main_frame_intersection_rect) override;
   void OnMainFrameViewportRectangleChanged(
       const gfx::Rect& main_frame_viewport_rect) override;
-  void OnMobileFriendlinessChanged(const blink::MobileFriendliness&) override;
+
+  // blink::WebLocalFrameObserver implementation
+  void OnFrameDetached() override;
+  void DidChangeMobileFriendliness(const blink::MobileFriendliness&) override;
 
   bool SetUpSmoothnessReporting(
       base::ReadOnlySharedMemoryRegion& shared_memory) override;
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
index 74147349..32c9bf0a 100644
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -289,6 +289,7 @@
       prefs::kUnenrolledFromGoogleMobileServicesDueToErrors, false);
   registry->RegisterIntegerPref(
       prefs::kUnenrolledFromGoogleMobileServicesAfterApiErrorCode, 0);
+  registry->RegisterStringPref(prefs::kUPMErrorUIShownTimestamp, "0");
 #endif
   // Preferences for |PasswordChangeSuccessTracker|.
   registry->RegisterIntegerPref(prefs::kPasswordChangeSuccessTrackerVersion, 0);
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc
index c6a08264..ba0852e 100644
--- a/components/password_manager/core/common/password_manager_features.cc
+++ b/components/password_manager/core/common/password_manager_features.cc
@@ -13,55 +13,61 @@
 
 #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
 // Enables biometric authentication before form filling.
-const base::Feature kBiometricAuthenticationForFilling = {
-    "BiometricAuthenticationForFilling", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBiometricAuthenticationForFilling,
+             "BiometricAuthenticationForFilling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 #if BUILDFLAG(IS_MAC)
 // Enables biometric authentication in settings.
-const base::Feature kBiometricAuthenticationInSettings = {
-    "BiometricAuthenticationInSettings", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBiometricAuthenticationInSettings,
+             "BiometricAuthenticationInSettings",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Enables Biometrics for the Touch To Fill feature. This only effects Android.
-const base::Feature kBiometricTouchToFill = {"BiometricTouchToFill",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBiometricTouchToFill,
+             "BiometricTouchToFill",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables submission detection for forms dynamically cleared but not removed
 // from the page.
-const base::Feature kDetectFormSubmissionOnFormClear = {
-    "DetectFormSubmissionOnFormClear",
+BASE_FEATURE(kDetectFormSubmissionOnFormClear,
+             "DetectFormSubmissionOnFormClear",
 #if BUILDFLAG(IS_IOS)
-    base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-    base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
 // Force enables password change capabilities for every domain, regardless of
 // the server response. The flag is meant for end-to-end testing purposes only.
-const base::Feature kForceEnablePasswordDomainCapabilities = {
-    "ForceEnablePasswordDomainCapabilities", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kForceEnablePasswordDomainCapabilities,
+             "ForceEnablePasswordDomainCapabilities",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables favicons in Password Manager.
-const base::Feature kEnableFaviconForPasswords{
-    "EnableFaviconForPasswords", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableFaviconForPasswords,
+             "EnableFaviconForPasswords",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the overwriting of prefilled username fields if the server predicted
 // the field to contain a placeholder value.
-const base::Feature kEnableOverwritingPlaceholderUsernames{
-    "EnableOverwritingPlaceholderUsernames", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableOverwritingPlaceholderUsernames,
+             "EnableOverwritingPlaceholderUsernames",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables a second, Gaia-account-scoped password store for users who are signed
 // in but not syncing.
-const base::Feature kEnablePasswordsAccountStorage = {
-    "EnablePasswordsAccountStorage",
+BASE_FEATURE(kEnablePasswordsAccountStorage,
+             "EnablePasswordsAccountStorage",
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
-    base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-    base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
 const base::Feature KEnablePasswordGenerationForClearTextFields = {
     "EnablePasswordGenerationForClearTextFields",
@@ -69,60 +75,65 @@
 
 // By default, Password Manager is disabled in fenced frames for now.
 // TODO(crbug.com/1294378): Remove once launched.
-const base::Feature kEnablePasswordManagerWithinFencedFrame{
-    "EnablePasswordManagerWithinFencedFrame",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnablePasswordManagerWithinFencedFrame,
+             "EnablePasswordManagerWithinFencedFrame",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables filling password on a website when there is saved password on
 // affiliated website.
-const base::Feature kFillingAcrossAffiliatedWebsites{
-    "FillingAcrossAffiliatedWebsites", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kFillingAcrossAffiliatedWebsites,
+             "FillingAcrossAffiliatedWebsites",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the experiment for the password manager to only fill on account
 // selection, rather than autofilling on page load, with highlighting of fields.
-const base::Feature kFillOnAccountSelect = {"fill-on-account-select",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kFillOnAccountSelect,
+             "fill-on-account-select",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_LINUX)
 // When enabled, initial sync will be forced during startup if the password
 // store has encryption service failures.
-const base::Feature kForceInitialSyncWhenDecryptionFails = {
-    "ForceInitialSyncWhenDecryptionFails", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kForceInitialSyncWhenDecryptionFails,
+             "ForceInitialSyncWhenDecryptionFails",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Enables finding a confirmation password field during saving by inspecting the
 // values of the fields. Used as a kill switch.
 // TODO(crbug.com/1164861): Remove once confirmed to be safe (around M92 or so).
-const base::Feature kInferConfirmationPasswordField = {
-    "InferConfirmationPasswordField", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kInferConfirmationPasswordField,
+             "InferConfirmationPasswordField",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Feature flag that updates icons, strings, and views for Google Password
 // Manager.
-const base::Feature kIOSEnablePasswordManagerBrandingUpdate{
-    "IOSEnablePasswordManagerBrandingUpdate",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIOSEnablePasswordManagerBrandingUpdate,
+             "IOSEnablePasswordManagerBrandingUpdate",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_IOS)
 // Removes the list of passwords from the Settings UI and adds a separate
 // Password Manager view.
-const base::Feature kIOSPasswordUISplit = {"IOSPasswordUISplit",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIOSPasswordUISplit,
+             "IOSPasswordUISplit",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables password saving and filling in cross-origin iframes on IOS.
-const base::Feature kIOSPasswordManagerCrossOriginIframeSupport = {
-    "IOSPasswordManagerCrossOriginIframeSupport",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kIOSPasswordManagerCrossOriginIframeSupport,
+             "IOSPasswordManagerCrossOriginIframeSupport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif  // IS_IOS
 
 // Enables (un)muting compromised passwords from bulk leak check in settings.
-const base::Feature kMuteCompromisedPasswords {
-  "MuteCompromisedPasswords",
+BASE_FEATURE(kMuteCompromisedPasswords,
+             "MuteCompromisedPasswords",
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #else
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #endif
-};
+);
 
 // Decides how long the user does not require reuathentication after
 // successfully authenticated.
@@ -132,126 +143,148 @@
 // Enables adding, displaying and modifying extra notes to stored credentials.
 // When enabled, "PasswordViewPageInSettings" feature is ignored and the new
 // password view subpage is force enabled.
-const base::Feature kPasswordNotes{"PasswordNotes",
-                                   base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordNotes,
+             "PasswordNotes",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the new password viewing subpage.
-const base::Feature kPasswordViewPageInSettings{
-    "PasswordViewPageInSettings", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordViewPageInSettings,
+             "PasswordViewPageInSettings",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables sending credentials from the settings UI.
-const base::Feature kSendPasswords{"SendPasswords",
-                                   base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSendPasswords,
+             "SendPasswords",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables password leak detection for unauthenticated users.
-const base::Feature kLeakDetectionUnauthenticated = {
-    "LeakDetectionUnauthenticated", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLeakDetectionUnauthenticated,
+             "LeakDetectionUnauthenticated",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables automatic password change flow from leaked password dialog.
-const base::Feature kPasswordChange = {"PasswordChange",
+BASE_FEATURE(kPasswordChange,
+             "PasswordChange",
 #if BUILDFLAG(IS_ANDROID)
-                                       base::FEATURE_ENABLED_BY_DEFAULT};
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #else
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Enables password change flow from bulk leak check in settings.
-const base::Feature kPasswordChangeInSettings = {
-    "PasswordChangeInSettings",
+BASE_FEATURE(kPasswordChangeInSettings,
+             "PasswordChangeInSettings",
 #if BUILDFLAG(IS_ANDROID)
-    base::FEATURE_ENABLED_BY_DEFAULT};
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #else
-    base::FEATURE_DISABLED_BY_DEFAULT};
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Enables .well-known based password change flow from leaked password dialog.
-const base::Feature kPasswordChangeWellKnown = {
-    "PasswordChangeWellKnown", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordChangeWellKnown,
+             "PasswordChangeWellKnown",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables fetching credentials capabilities from server for the
 // |PasswordChangeInSettings| and |PasswordChange| features.
-const base::Feature kPasswordDomainCapabilitiesFetching = {
-    "PasswordDomainCapabilitiesFetching", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordDomainCapabilitiesFetching,
+             "PasswordDomainCapabilitiesFetching",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Controls the ability to import passwords from Chrome's settings page.
-const base::Feature kPasswordImport = {"PasswordImport",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordImport,
+             "PasswordImport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
-const base::Feature kPasswordManagerRedesign{"PasswordManagerRedesign",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordManagerRedesign,
+             "PasswordManagerRedesign",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Enables password reuse detection.
-const base::Feature kPasswordReuseDetectionEnabled = {
-    "PasswordReuseDetectionEnabled", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordReuseDetectionEnabled,
+             "PasswordReuseDetectionEnabled",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables password scripts fetching for the |PasswordChangeInSettings| feature.
-const base::Feature kPasswordScriptsFetching = {
-    "PasswordScriptsFetching", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordScriptsFetching,
+             "PasswordScriptsFetching",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables requesting and saving passwords grouping information from the
 // affiliation service.
 // TODO(crbug.com/1359392): Remove once launched.
-const base::Feature kPasswordsGrouping = {"PasswordsGrouping",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordsGrouping,
+             "PasswordsGrouping",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables showing UI which allows users to easily revert their choice to
 // never save passwords on a certain website.
-const base::Feature kRecoverFromNeverSaveAndroid = {
-    "RecoverFromNeverSaveAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kRecoverFromNeverSaveAndroid,
+             "RecoverFromNeverSaveAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the password strength indicator.
-const base::Feature kPasswordStrengthIndicator = {
-    "PasswordStrengthIndicator", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordStrengthIndicator,
+             "PasswordStrengthIndicator",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
 // Displays at least the decryptable and never saved logins in the password
 // manager
-const base::Feature kSkipUndecryptablePasswords = {
-    "SkipUndecryptablePasswords", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSkipUndecryptablePasswords,
+             "SkipUndecryptablePasswords",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 #if BUILDFLAG(IS_LINUX)
 // When enabled, all undecryptable passwords are deleted from the local database
 // during initial sync flow.
-const base::Feature kSyncUndecryptablePasswordsLinux = {
-    "SyncUndecryptablePasswordsLinux", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSyncUndecryptablePasswordsLinux,
+             "SyncUndecryptablePasswordsLinux",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 #if BUILDFLAG(IS_ANDROID)
-const base::Feature kPasswordEditDialogWithDetails{
-    "PasswordEditDialogWithDetails", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPasswordEditDialogWithDetails,
+             "PasswordEditDialogWithDetails",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kShowUPMErrorNotification{
-    "ShowUpmErrorNotification", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kShowUPMErrorNotification,
+             "ShowUpmErrorNotification",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the experiment to automatically submit a form after filling by
 // TouchToFill
-const base::Feature kTouchToFillPasswordSubmission = {
-    "TouchToFillPasswordSubmission", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTouchToFillPasswordSubmission,
+             "TouchToFillPasswordSubmission",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables the intent fetching for the credential manager in Google Mobile
 // Services. It does not enable launching the credential manager.
-const base::Feature kUnifiedCredentialManagerDryRun = {
-    "UnifiedCredentialManagerDryRun", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUnifiedCredentialManagerDryRun,
+             "UnifiedCredentialManagerDryRun",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables use of Google Mobile Services for password storage. Chrome's local
 // database will be unused but kept in sync for local passwords.
-const base::Feature kUnifiedPasswordManagerAndroid{
-    "UnifiedPasswordManagerAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUnifiedPasswordManagerAndroid,
+             "UnifiedPasswordManagerAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables showing contextual error messages when UPM encounters an auth error.
-const base::Feature kUnifiedPasswordManagerErrorMessages{
-    "UnifiedPasswordManagerErrorMessages", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUnifiedPasswordManagerErrorMessages,
+             "UnifiedPasswordManagerErrorMessages",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, the built-in sync functionality in PasswordSyncBridge becomes
 // unused, meaning that SyncService/SyncEngine will no longer download or
 // upload changes to/from the Sync server. Instead, an external Android-specific
 // backend will be used to achieve similar behavior.
-const base::Feature kUnifiedPasswordManagerSyncUsingAndroidBackendOnly{
-    "UnifiedPasswordManagerSyncUsingAndroidBackendOnly",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUnifiedPasswordManagerSyncUsingAndroidBackendOnly,
+             "UnifiedPasswordManagerSyncUsingAndroidBackendOnly",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Enables support of sending additional votes on username first flow. The votes
@@ -259,9 +292,9 @@
 // single username forms.
 // TODO(crbug.com/959776): Clean up if the main crowdsourcing is good enough and
 // we don't need additional signals.
-const base::Feature kUsernameFirstFlowFallbackCrowdsourcing = {
-    "UsernameFirstFlowFallbackCrowdsourcing",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUsernameFirstFlowFallbackCrowdsourcing,
+             "UsernameFirstFlowFallbackCrowdsourcing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_ANDROID)
 // Current migration version to Google Mobile Services. If version saved in pref
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h
index 4b11ff5..5578628 100644
--- a/components/password_manager/core/common/password_manager_features.h
+++ b/components/password_manager/core/common/password_manager_features.h
@@ -23,67 +23,67 @@
 // alongside the definition of their values in the .cc file.
 
 #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
-extern const base::Feature kBiometricAuthenticationForFilling;
+BASE_DECLARE_FEATURE(kBiometricAuthenticationForFilling);
 #endif
 #if BUILDFLAG(IS_MAC)
-extern const base::Feature kBiometricAuthenticationInSettings;
+BASE_DECLARE_FEATURE(kBiometricAuthenticationInSettings);
 #endif
-extern const base::Feature kBiometricTouchToFill;
-extern const base::Feature kDetectFormSubmissionOnFormClear;
-extern const base::Feature kForceEnablePasswordDomainCapabilities;
-extern const base::Feature kEnableFaviconForPasswords;
-extern const base::Feature kEnableOverwritingPlaceholderUsernames;
-extern const base::Feature kEnablePasswordsAccountStorage;
+BASE_DECLARE_FEATURE(kBiometricTouchToFill);
+BASE_DECLARE_FEATURE(kDetectFormSubmissionOnFormClear);
+BASE_DECLARE_FEATURE(kForceEnablePasswordDomainCapabilities);
+BASE_DECLARE_FEATURE(kEnableFaviconForPasswords);
+BASE_DECLARE_FEATURE(kEnableOverwritingPlaceholderUsernames);
+BASE_DECLARE_FEATURE(kEnablePasswordsAccountStorage);
 extern const base::Feature KEnablePasswordGenerationForClearTextFields;
-extern const base::Feature kEnablePasswordManagerWithinFencedFrame;
-extern const base::Feature kFillingAcrossAffiliatedWebsites;
-extern const base::Feature kFillOnAccountSelect;
+BASE_DECLARE_FEATURE(kEnablePasswordManagerWithinFencedFrame);
+BASE_DECLARE_FEATURE(kFillingAcrossAffiliatedWebsites);
+BASE_DECLARE_FEATURE(kFillOnAccountSelect);
 #if BUILDFLAG(IS_LINUX)
-extern const base::Feature kForceInitialSyncWhenDecryptionFails;
+BASE_DECLARE_FEATURE(kForceInitialSyncWhenDecryptionFails);
 #endif
-extern const base::Feature kInferConfirmationPasswordField;
-extern const base::Feature kIOSEnablePasswordManagerBrandingUpdate;
+BASE_DECLARE_FEATURE(kInferConfirmationPasswordField);
+BASE_DECLARE_FEATURE(kIOSEnablePasswordManagerBrandingUpdate);
 #if BUILDFLAG(IS_IOS)
-extern const base::Feature kIOSPasswordUISplit;
-extern const base::Feature kIOSPasswordManagerCrossOriginIframeSupport;
+BASE_DECLARE_FEATURE(kIOSPasswordUISplit);
+BASE_DECLARE_FEATURE(kIOSPasswordManagerCrossOriginIframeSupport);
 #endif  // IS_IOS
-extern const base::Feature kMuteCompromisedPasswords;
+BASE_DECLARE_FEATURE(kMuteCompromisedPasswords);
 
 extern const base::FeatureParam<base::TimeDelta> kPasswordNotesAuthValidity;
-extern const base::Feature kPasswordNotes;
+BASE_DECLARE_FEATURE(kPasswordNotes);
 
-extern const base::Feature kPasswordViewPageInSettings;
-extern const base::Feature kSendPasswords;
-extern const base::Feature kLeakDetectionUnauthenticated;
-extern const base::Feature kPasswordChange;
-extern const base::Feature kPasswordChangeInSettings;
-extern const base::Feature kPasswordChangeWellKnown;
-extern const base::Feature kPasswordDomainCapabilitiesFetching;
-extern const base::Feature kPasswordImport;
+BASE_DECLARE_FEATURE(kPasswordViewPageInSettings);
+BASE_DECLARE_FEATURE(kSendPasswords);
+BASE_DECLARE_FEATURE(kLeakDetectionUnauthenticated);
+BASE_DECLARE_FEATURE(kPasswordChange);
+BASE_DECLARE_FEATURE(kPasswordChangeInSettings);
+BASE_DECLARE_FEATURE(kPasswordChangeWellKnown);
+BASE_DECLARE_FEATURE(kPasswordDomainCapabilitiesFetching);
+BASE_DECLARE_FEATURE(kPasswordImport);
 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)  // Desktop
-extern const base::Feature kPasswordManagerRedesign;
+BASE_DECLARE_FEATURE(kPasswordManagerRedesign);
 #endif
-extern const base::Feature kPasswordReuseDetectionEnabled;
-extern const base::Feature kPasswordScriptsFetching;
-extern const base::Feature kPasswordsGrouping;
-extern const base::Feature kPasswordStrengthIndicator;
-extern const base::Feature kRecoverFromNeverSaveAndroid;
+BASE_DECLARE_FEATURE(kPasswordReuseDetectionEnabled);
+BASE_DECLARE_FEATURE(kPasswordScriptsFetching);
+BASE_DECLARE_FEATURE(kPasswordsGrouping);
+BASE_DECLARE_FEATURE(kPasswordStrengthIndicator);
+BASE_DECLARE_FEATURE(kRecoverFromNeverSaveAndroid);
 #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
-extern const base::Feature kSkipUndecryptablePasswords;
+BASE_DECLARE_FEATURE(kSkipUndecryptablePasswords);
 #endif
 #if BUILDFLAG(IS_LINUX)
-extern const base::Feature kSyncUndecryptablePasswordsLinux;
+BASE_DECLARE_FEATURE(kSyncUndecryptablePasswordsLinux);
 #endif
 #if BUILDFLAG(IS_ANDROID)
-extern const base::Feature kPasswordEditDialogWithDetails;
-extern const base::Feature kShowUPMErrorNotification;
-extern const base::Feature kTouchToFillPasswordSubmission;
-extern const base::Feature kUnifiedCredentialManagerDryRun;
-extern const base::Feature kUnifiedPasswordManagerAndroid;
-extern const base::Feature kUnifiedPasswordManagerErrorMessages;
-extern const base::Feature kUnifiedPasswordManagerSyncUsingAndroidBackendOnly;
+BASE_DECLARE_FEATURE(kPasswordEditDialogWithDetails);
+BASE_DECLARE_FEATURE(kShowUPMErrorNotification);
+BASE_DECLARE_FEATURE(kTouchToFillPasswordSubmission);
+BASE_DECLARE_FEATURE(kUnifiedCredentialManagerDryRun);
+BASE_DECLARE_FEATURE(kUnifiedPasswordManagerAndroid);
+BASE_DECLARE_FEATURE(kUnifiedPasswordManagerErrorMessages);
+BASE_DECLARE_FEATURE(kUnifiedPasswordManagerSyncUsingAndroidBackendOnly);
 #endif
-extern const base::Feature kUsernameFirstFlowFallbackCrowdsourcing;
+BASE_DECLARE_FEATURE(kUsernameFirstFlowFallbackCrowdsourcing);
 
 // All features parameters are in alphabetical order.
 
diff --git a/components/password_manager/core/common/password_manager_pref_names.cc b/components/password_manager/core/common/password_manager_pref_names.cc
index 8164432..291078a9 100644
--- a/components/password_manager/core/common/password_manager_pref_names.cc
+++ b/components/password_manager/core/common/password_manager_pref_names.cc
@@ -40,6 +40,8 @@
     "unenrolled_from_google_mobile_services_due_to_errors";
 const char kUnenrolledFromGoogleMobileServicesAfterApiErrorCode[] =
     "unenrolled_from_google_mobile_services_after_api_error_code";
+
+const char kUPMErrorUIShownTimestamp[] = "profile.upm_error_ui_shown_timestamp";
 #endif
 
 #if BUILDFLAG(IS_WIN)
diff --git a/components/password_manager/core/common/password_manager_pref_names.h b/components/password_manager/core/common/password_manager_pref_names.h
index 74cf11e..338ad1a 100644
--- a/components/password_manager/core/common/password_manager_pref_names.h
+++ b/components/password_manager/core/common/password_manager_pref_names.h
@@ -97,6 +97,12 @@
 // caused the last unenrollment from the UPM experience. Only set if
 // |kUnenrolledFromGoogleMobileServicesDueToErrors| is true.
 extern const char kUnenrolledFromGoogleMobileServicesAfterApiErrorCode[];
+
+// Timestamp at which the last UPM error message was shown to the user in
+// milliseconds since UNIX epoch (used in Java).
+// This is needed to ensure that the UI is prompted only once per given
+// time interval (currently 24h).
+extern const char kUPMErrorUIShownTimestamp[];
 #endif
 
 #if BUILDFLAG(IS_WIN)
diff --git a/components/permissions/permission_decision_auto_blocker.cc b/components/permissions/permission_decision_auto_blocker.cc
index 1023a520..bc80788 100644
--- a/components/permissions/permission_decision_auto_blocker.cc
+++ b/components/permissions/permission_decision_auto_blocker.cc
@@ -491,6 +491,14 @@
   }
 }
 
+void PermissionDecisionAutoBlocker::AddObserver(Observer* obs) {
+  observers_.AddObserver(obs);
+}
+
+void PermissionDecisionAutoBlocker::RemoveObserver(Observer* obs) {
+  observers_.RemoveObserver(obs);
+}
+
 // static
 const char*
 PermissionDecisionAutoBlocker::GetPromptDismissCountKeyForTesting() {
@@ -516,6 +524,14 @@
   settings_map_->SetWebsiteSettingDefaultScope(
       request_origin, GURL(), ContentSettingsType::PERMISSION_AUTOBLOCKER_DATA,
       base::Value::FromUniquePtrValue(std::move(dict)));
+  NotifyEmbargoStarted(request_origin, permission);
+}
+
+void PermissionDecisionAutoBlocker::NotifyEmbargoStarted(
+    const GURL& origin,
+    ContentSettingsType content_setting) {
+  for (Observer& obs : observers_)
+    obs.OnEmbargoStarted(origin, content_setting);
 }
 
 void PermissionDecisionAutoBlocker::SetClockForTesting(base::Clock* clock) {
diff --git a/components/permissions/permission_decision_auto_blocker.h b/components/permissions/permission_decision_auto_blocker.h
index b9046e5..30fd89b 100644
--- a/components/permissions/permission_decision_auto_blocker.h
+++ b/components/permissions/permission_decision_auto_blocker.h
@@ -10,6 +10,7 @@
 #include "base/callback.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/raw_ptr.h"
+#include "base/observer_list_types.h"
 #include "base/time/default_clock.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/content_settings/core/common/content_settings_types.h"
@@ -41,6 +42,12 @@
 // threshold.
 class PermissionDecisionAutoBlocker : public KeyedService {
  public:
+  class Observer : public base::CheckedObserver {
+   public:
+    virtual void OnEmbargoStarted(const GURL& origin,
+                                  ContentSettingsType content_setting) = 0;
+  };
+
   PermissionDecisionAutoBlocker() = delete;
 
   explicit PermissionDecisionAutoBlocker(HostContentSettingsMap* settings_map);
@@ -79,8 +86,8 @@
       ContentSettingsType permission);
 
   // Returns the most recent recorded time either an ignore or dismiss embargo
-  // was started. Records of embargo start times persist beyond the duration of
-  // the embargo, but are removed along with embargoes when
+  // was started. Records of embargo start times persist beyond the duration
+  // of the embargo, but are removed along with embargoes when
   // RemoveEmbargoAndResetCounts is used. Returns base::Time() if no record is
   // found.
   base::Time GetEmbargoStartTime(const GURL& request_origin,
@@ -112,19 +119,20 @@
                                ContentSettingsType permission,
                                bool dismissed_prompt_was_quiet);
 
-  // Records that an ignore of a prompt for |permission| was made. If the total
-  // number of ignores exceeds a threshold and
-  // features::kBlockPromptsIfIgnoredOften is enabled, it will place |url| under
-  // embargo for |permission|. |ignored_prompt_was_quiet| will inform the
-  // decision of which threshold to pick, depending on whether the prompt that
-  // was presented to the user was quiet or not.
+  // Records that an ignore of a prompt for |permission| was made. If the
+  // total number of ignores exceeds a threshold and
+  // features::kBlockPromptsIfIgnoredOften is enabled, it will place |url|
+  // under embargo for |permission|. |ignored_prompt_was_quiet| will inform
+  // the decision of which threshold to pick, depending on whether the prompt
+  // that was presented to the user was quiet or not.
   bool RecordIgnoreAndEmbargo(const GURL& url,
                               ContentSettingsType permission,
                               bool ignored_prompt_was_quiet);
 
-  // Clears any existing embargo status for |url|, |permission|. For permissions
-  // embargoed under repeated dismissals, this means a prompt will be shown to
-  // the user on next permission request. Clears dismiss and ignore counts.
+  // Clears any existing embargo status for |url|, |permission|. For
+  // permissions embargoed under repeated dismissals, this means a prompt will
+  // be shown to the user on next permission request. Clears dismiss and
+  // ignore counts.
   void RemoveEmbargoAndResetCounts(const GURL& url,
                                    ContentSettingsType permission);
 
@@ -133,6 +141,10 @@
   void RemoveEmbargoAndResetCounts(
       base::RepeatingCallback<bool(const GURL& url)> filter);
 
+  // Add and remove observers that want to receive embargo status updates.
+  void AddObserver(Observer* obs);
+  void RemoveObserver(Observer* obs);
+
   static const char* GetPromptDismissCountKeyForTesting();
 
  private:
@@ -147,6 +159,9 @@
                          ContentSettingsType permission,
                          const char* key);
 
+  void NotifyEmbargoStarted(const GURL& origin,
+                            ContentSettingsType content_setting);
+
   void SetClockForTesting(base::Clock* clock);
 
   // Keys used for storing count data in a website setting.
@@ -160,6 +175,8 @@
   raw_ptr<HostContentSettingsMap> settings_map_;
 
   raw_ptr<base::Clock> clock_;
+
+  base::ObserverList<Observer> observers_;
 };
 
 }  // namespace permissions
diff --git a/components/permissions/permission_decision_auto_blocker_unittest.cc b/components/permissions/permission_decision_auto_blocker_unittest.cc
index 181cb23..bcc5c570 100644
--- a/components/permissions/permission_decision_auto_blocker_unittest.cc
+++ b/components/permissions/permission_decision_auto_blocker_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
+#include "components/content_settings/core/common/content_settings_types.h"
 #include "components/permissions/features.h"
 #include "components/permissions/permission_util.h"
 #include "components/permissions/test/test_permissions_client.h"
@@ -72,6 +73,21 @@
   bool callback_was_run_;
 };
 
+class MockObserver : public PermissionDecisionAutoBlocker::Observer {
+ public:
+  void OnEmbargoStarted(const GURL& origin,
+                        ContentSettingsType content_setting) override {
+    callbacks_[origin].push_back(content_setting);
+  }
+
+  std::map<GURL, std::vector<ContentSettingsType>>& GetCallbacks() {
+    return callbacks_;
+  }
+
+ private:
+  std::map<GURL, std::vector<ContentSettingsType>> callbacks_;
+};
+
 // Check removing the the embargo for a single permission on a site works, and
 // that it doesn't interfere with other embargoed permissions or the same
 // permission embargoed on other sites.
@@ -861,4 +877,47 @@
       autoblocker(), clock(), url, base::Hours(2));
 }
 
+TEST_F(PermissionDecisionAutoBlockerUnitTest,
+       ObserverIsNotifiedWhenEmbargoStarts) {
+  GURL url("https://www.google.com");
+  MockObserver observer;
+  autoblocker()->AddObserver(&observer);
+
+  EXPECT_FALSE(autoblocker()->RecordDismissAndEmbargo(
+      url, ContentSettingsType::GEOLOCATION, false));
+  EXPECT_EQ(0u, observer.GetCallbacks().size());
+
+  EXPECT_FALSE(autoblocker()->RecordDismissAndEmbargo(
+      url, ContentSettingsType::GEOLOCATION, false));
+  EXPECT_EQ(0u, observer.GetCallbacks().size());
+
+  EXPECT_TRUE(autoblocker()->RecordDismissAndEmbargo(
+      url, ContentSettingsType::GEOLOCATION, false));
+  EXPECT_EQ(1u, observer.GetCallbacks().size());
+  EXPECT_EQ(url, observer.GetCallbacks().begin()->first);
+  EXPECT_EQ(ContentSettingsType::GEOLOCATION, observer.GetCallbacks()[url][0]);
+
+  autoblocker()->RemoveObserver(&observer);
+}
+
+TEST_F(PermissionDecisionAutoBlockerUnitTest,
+       RemovedObserverIsNotNotifiedWhenEmbargoStarts) {
+  GURL url("https://www.google.com");
+  MockObserver observer;
+  autoblocker()->AddObserver(&observer);
+
+  EXPECT_FALSE(autoblocker()->RecordDismissAndEmbargo(
+      url, ContentSettingsType::GEOLOCATION, false));
+  EXPECT_EQ(0u, observer.GetCallbacks().size());
+
+  EXPECT_FALSE(autoblocker()->RecordDismissAndEmbargo(
+      url, ContentSettingsType::GEOLOCATION, false));
+  EXPECT_EQ(0u, observer.GetCallbacks().size());
+  autoblocker()->RemoveObserver(&observer);
+
+  EXPECT_TRUE(autoblocker()->RecordDismissAndEmbargo(
+      url, ContentSettingsType::GEOLOCATION, false));
+  EXPECT_EQ(0u, observer.GetCallbacks().size());
+}
+
 }  // namespace permissions
diff --git a/components/permissions/permission_manager.cc b/components/permissions/permission_manager.cc
index d9be2d9..f5e67107 100644
--- a/components/permissions/permission_manager.cc
+++ b/components/permissions/permission_manager.cc
@@ -14,6 +14,7 @@
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/content_settings/core/common/content_settings_pattern.h"
 #include "components/permissions/features.h"
 #include "components/permissions/permission_context_base.h"
 #include "components/permissions/permission_request_id.h"
@@ -166,7 +167,14 @@
 PermissionManager::PermissionManager(content::BrowserContext* browser_context,
                                      PermissionContextMap permission_contexts)
     : browser_context_(browser_context),
-      permission_contexts_(std::move(permission_contexts)) {}
+      permission_contexts_(std::move(permission_contexts)) {
+  auto* autoblocker =
+      permissions::PermissionsClient::Get()->GetPermissionDecisionAutoBlocker(
+          browser_context_);
+  if (autoblocker) {
+    autoblocker->AddObserver(this);
+  }
+}
 
 PermissionManager::~PermissionManager() {
   DCHECK(pending_requests_.IsEmpty());
@@ -188,6 +196,20 @@
     subscription_type_counts_.clear();
   }
   permission_contexts_.clear();
+
+  auto* autoblocker =
+      permissions::PermissionsClient::Get()->GetPermissionDecisionAutoBlocker(
+          browser_context_);
+  if (autoblocker) {
+    autoblocker->RemoveObserver(this);
+  }
+}
+
+void PermissionManager::OnEmbargoStarted(const GURL& origin,
+                                         ContentSettingsType content_setting) {
+  auto primary_pattern = ContentSettingsPattern::FromURL(origin);
+  OnPermissionChanged(primary_pattern, ContentSettingsPattern::Wildcard(),
+                      ContentSettingsTypeSet(content_setting));
 }
 
 PermissionContextBase* PermissionManager::GetPermissionContextForTesting(
diff --git a/components/permissions/permission_manager.h b/components/permissions/permission_manager.h
index b394949e..19126bcf 100644
--- a/components/permissions/permission_manager.h
+++ b/components/permissions/permission_manager.h
@@ -16,6 +16,7 @@
 #include "components/content_settings/core/common/content_settings.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/permissions/permission_context_base.h"
+#include "components/permissions/permission_decision_auto_blocker.h"
 #include "components/permissions/permission_request_id.h"
 #include "components/permissions/permission_util.h"
 #include "content/public/browser/permission_controller_delegate.h"
@@ -42,7 +43,8 @@
 
 class PermissionManager : public KeyedService,
                           public content::PermissionControllerDelegate,
-                          public permissions::Observer {
+                          public permissions::Observer,
+                          public PermissionDecisionAutoBlocker::Observer {
  public:
   using PermissionContextMap =
       std::unordered_map<ContentSettingsType,
@@ -59,6 +61,10 @@
   // KeyedService implementation.
   void Shutdown() override;
 
+  // PermissionDecisionAutoBlocker::Observer
+  void OnEmbargoStarted(const GURL& origin,
+                        ContentSettingsType content_setting) override;
+
   PermissionContextBase* GetPermissionContextForTesting(
       ContentSettingsType type);
 
diff --git a/components/permissions/permission_manager_unittest.cc b/components/permissions/permission_manager_unittest.cc
index 86ff93f..4a3aef5 100644
--- a/components/permissions/permission_manager_unittest.cc
+++ b/components/permissions/permission_manager_unittest.cc
@@ -249,6 +249,10 @@
 
   PermissionStatus callback_result() const { return callback_result_; }
 
+  content::TestBrowserContext* browser_context() const {
+    return browser_context_.get();
+  }
+
   void Reset() {
     callback_called_ = false;
     callback_count_ = 0;
@@ -1051,4 +1055,38 @@
                 partitioned_child->GetLastCommittedOrigin().GetURL()));
 }
 
+TEST_F(PermissionManagerTest, SubscribersAreNotifedOfEmbargoEvents) {
+  const char* kOrigin1 = "https://example.com";
+  NavigateAndCommit(GURL(kOrigin1));
+
+  content::PermissionControllerDelegate::SubscriptionId subscription_id =
+      SubscribePermissionStatusChange(
+          PermissionType::GEOLOCATION, /*render_process_host=*/nullptr,
+          main_rfh(), GURL(kOrigin1),
+          base::BindRepeating(&PermissionManagerTest::OnPermissionChange,
+                              base::Unretained(this)));
+  EXPECT_EQ(callback_count(), 0);
+
+  auto* autoblocker =
+      permissions::PermissionsClient::Get()->GetPermissionDecisionAutoBlocker(
+          browser_context());
+
+  // 3 dismisses will trigger embargo, which should call the subscription
+  // callback.
+  autoblocker->RecordDismissAndEmbargo(GURL(kOrigin1),
+                                       ContentSettingsType::GEOLOCATION,
+                                       false /* dismissed_prompt_was_quiet */);
+  EXPECT_EQ(callback_count(), 0);
+  autoblocker->RecordDismissAndEmbargo(GURL(kOrigin1),
+                                       ContentSettingsType::GEOLOCATION,
+                                       false /* dismissed_prompt_was_quiet */);
+  EXPECT_EQ(callback_count(), 0);
+  autoblocker->RecordDismissAndEmbargo(GURL(kOrigin1),
+                                       ContentSettingsType::GEOLOCATION,
+                                       false /* dismissed_prompt_was_quiet */);
+  EXPECT_EQ(callback_count(), 1);
+
+  UnsubscribePermissionStatusChange(subscription_id);
+}
+
 }  // namespace permissions
diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc
index 861b1780..b39df7f 100644
--- a/components/permissions/permission_request_manager.cc
+++ b/components/permissions/permission_request_manager.cc
@@ -614,7 +614,6 @@
               web_contents->GetBrowserContext())) {}
 
 void PermissionRequestManager::ScheduleShowBubble() {
-  base::RecordAction(base::UserMetricsAction("PermissionBubbleRequest"));
   content::GetUIThreadTaskRunner({})->PostTask(
       FROM_HERE, base::BindOnce(&PermissionRequestManager::ShowBubble,
                                 weak_factory_.GetWeakPtr()));
diff --git a/components/policy/core/browser/BUILD.gn b/components/policy/core/browser/BUILD.gn
index 35c9b0b..ee1dc0f 100644
--- a/components/policy/core/browser/BUILD.gn
+++ b/components/policy/core/browser/BUILD.gn
@@ -2,8 +2,8 @@
 # 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")
 import("//build/config/features.gni")
-import("//testing/libfuzzer/fuzzer_test.gni")
 
 group("browser") {
   if (is_component_build) {
@@ -104,10 +104,6 @@
     "//net",
     "//third_party/icu",
   ]
-
-  if (use_libfuzzer) {
-    visibility += [ "//chrome/browser/chromeos:policy_fuzzer" ]
-  }
 }
 
 static_library("test_support") {
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 1b54ec29..bb2299b 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -27101,7 +27101,7 @@
         'cloud_only': True,
       },
       'id': 991,
-      'future_on': ['chrome_os'],
+      'supported_on': ['chrome_os:108-'],
       'caption': '''Configuration policy for the OnFileTransfer Chrome Enterprise Connector''',
       'tags': [],
       'desc': '''List of Chrome Enterprise Connectors services settings to be applied to the <ph name="ON_FILE_TRANSFER_ENTERPRISE_CONNECTOR">OnFileTransfer</ph> Enterprise Connector, which triggers when a file is transferred within <ph name="PRODUCT_OS_NAME">$2<ex>Google ChromeOS</ex></ph>.
@@ -33433,6 +33433,38 @@
       See https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguage for details about JavaScript / ECMAScript media types.
       '''
     },
+    {
+      'name': 'ShoppingListEnabled',
+      'owners': ['aymana@chromium.org', 'mdjones@chromium.org', 'chrome-shopping-eng@google.com'],
+      'caption': 'Allow the shopping list feature to be enabled',
+      'type': 'main',
+      'schema': { 'type': 'boolean' },
+      'supported_on': ['chrome.*:107-', 'chrome_os:107-', 'android:107-'],
+      'future_on': ['ios'],
+      'features': {
+        'dynamic_refresh': True,
+        'per_profile': True,
+      },
+      'items': [
+        {
+          'value': True,
+          'caption': 'The shopping list feature will be available to users.',
+        },
+        {
+          'value': False,
+          'caption': 'The shopping list feature will not be available to users.',
+        },
+      ],
+      'default': True,
+      'example_value': True,
+      'id': 1018,
+      'tags': [],
+      'desc': '''This policy controls the availability of the shopping list feature.
+      If enabled, users will be presented with UI to track the price of the product displayed on the current page. The tracked product will be shown in the bookmarks side panel.
+      If this policy is set to Enabled or not set, the shopping list feature will be available to users.
+      If this policy is set to Disabled, the shopping list feature will be unavailable.
+      ''',
+    }
   ],
   'messages': {
     # Messages that are not associated to any policies.
@@ -34444,6 +34476,6 @@
   'placeholders': [],
   'deleted_policy_ids': [114, 115, 204, 205, 206, 341, 412, 438, 476, 544, 546, 562, 569, 578, 583, 585, 586, 587, 588, 589, 590, 591, 600, 668, 669, 872],
   'deleted_atomic_policy_group_ids': [19],
-  'highest_id_currently_used': 1017,
+  'highest_id_currently_used': 1018,
   'highest_atomic_group_id_currently_used': 43
 }
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index fe5868a..1da5507 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -6064,6 +6064,15 @@
 <translation id="7200364929485466022">La hora a la que deberían verificarse las actualizaciones (se interpreta según la zona horaria local del dispositivo).</translation>
 <translation id="7202925763179776247">Permitir las restricciones de descarga</translation>
 <translation id="7207095846245296855">Forzar Google SafeSearch</translation>
+<translation id="7208483746373960784">Esta configuración determina cuántos datos del usuario se conservan después de inhabilitar <ph name="LACROS_NAME" />.
+
+      Si estableces la política como <ph name="LACROS_BACKWARD_MIGRATION_NONE" />, no se llevará a cabo la migración de datos inversa.
+
+      Si la estableces como <ph name="LACROS_BACKWARD_MIGRATION_KEEP_NONE" />, se quitarán todos los datos del usuario. Esta es la opción más segura.
+
+      Si la estableces como <ph name="LACROS_BACKWARD_MIGRATION_KEEP_SAFE_DATA" />, se quitarán la mayoría de los datos del usuario. Solo se conservan los archivos independientes del navegador (como las descargas).
+
+      Si la estableces como <ph name="LACROS_BACKWARD_MIGRATION_KEEP_ALL" />, se conservarán todos los datos del usuario. Esta opción tiene un alto riesgo de falla, por lo tanto requiere usar Powerwash para recuperar los datos.</translation>
 <translation id="7211368186050418507">Nunca detectar de forma automática la zona horaria</translation>
 <translation id="7216442368414164495">Permitir que los usuarios acepten informes extendidos de navegación segura</translation>
 <translation id="721970071627370558">Inhabilitar los informes de estado de energía del dispositivo</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index fc598ce..d3aebdf2 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -2457,6 +2457,7 @@
           El mensaje de advertencia solo se muestra si el modo de inactividad cierra la sesión o apaga el equipo.</translation>
 <translation id="3360490004791301756">Permitir que los usuarios canjeen ofertas a través del registro de <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3363360928811201045">Añadir restricciones a las cuentas gestionadas</translation>
+<translation id="3364400740222114778">Recuperación de cuenta</translation>
 <translation id="3373381043600809954">Habilitar <ph name="PRODUCT_NAME" /></translation>
 <translation id="3374587000313305002">Configura el directorio que <ph name="PRODUCT_NAME" /> utilizará para almacenar los datos de usuario.
 
@@ -3395,6 +3396,7 @@
       Para obtener información detallada sobre los patrones de <ph name="URL_LABEL" /> válidos, consulta https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> no es un valor aceptado para esta política.</translation>
 <translation id="4389073105055031853">Permitir que los usuarios gestionen todos los certificados</translation>
 <translation id="4389091865841123886">Permite configurar la confirmación remota con el mecanismo de TPM.</translation>
+<translation id="4397045637922200204">Desactivar recuperación de cuenta</translation>
 <translation id="4397464099112037398">Configuración predeterminada del permiso de colocación de ventanas</translation>
 <translation id="4401496838830169080">Te permite controlar si la función Navegación segura de <ph name="PRODUCT_NAME" /> está habilitada y el modo en el que funciona.
 
@@ -6065,6 +6067,15 @@
 <translation id="7200364929485466022">Hora en la que se debe comprobar si hay actualizaciones, interpretada en la zona horaria local del dispositivo.</translation>
 <translation id="7202925763179776247">Permitir restricciones de descarga</translation>
 <translation id="7207095846245296855">Forzar Google Búsqueda Segura</translation>
+<translation id="7208483746373960784">Esta opción determina cuántos datos de usuario se conservarán después de inhabilitar <ph name="LACROS_NAME" />.
+
+      Si se asigna el valor <ph name="LACROS_BACKWARD_MIGRATION_NONE" /> a esta política, no se realizará la retromigración de datos.
+
+      Si se le asigna el valor <ph name="LACROS_BACKWARD_MIGRATION_KEEP_NONE" />, se eliminarán todos los datos de usuario. Esta es la opción más segura.
+
+      Si se le asigna el valor <ph name="LACROS_BACKWARD_MIGRATION_KEEP_SAFE_DATA" />, se eliminarán la mayoría de los datos de usuario. Solo se conservarán los archivos que sean independientes del navegador (como las descargas).
+
+      Si se le asigna el valor <ph name="LACROS_BACKWARD_MIGRATION_KEEP_ALL" />, se conservarán todos los datos de usuario. Esta opción tiene un alto riesgo de fallo. Si se produce un error, será necesario hacer un Powerwash para recuperar el dispositivo.</translation>
 <translation id="7211368186050418507">No detectar nunca la zona horaria automáticamente</translation>
 <translation id="7216442368414164495">Permitir a los usuarios habilitar los informes ampliados de la función de Navegación segura</translation>
 <translation id="721970071627370558">Inhabilitar los informes sobre el estado de la energía del dispositivo</translation>
@@ -6322,6 +6333,15 @@
 <translation id="7482768039644066614">Habilitar la obtención de metadatos de carga de páginas y modelos de aprendizaje automático para mejorar la experiencia de navegación</translation>
 <translation id="7485481791539008776">Reglas para la selección de la impresora predeterminada</translation>
 <translation id="7486205887492534734">Preguntar cuando coincidan varios certificados en la pantalla de inicio de sesión</translation>
+<translation id="7489661071474025727">Especifica si los usuarios de los dispositivos <ph name="PRODUCT_OS_NAME" /> tienen activado el servicio de recuperación de cuenta.
+
+      Si la política está habilitada, se activará la recuperación de datos de usuario. Si se inhabilita esta política o no se establece, no se activará la recuperación de datos de usuario.
+      Si se asigna el nivel de política recomendado, los usuarios podrán cambiar la activación de la recuperación de cuenta en la página de configuración. Si defines el nivel de la política como obligatorio, los usuarios no podrán cambiar la activación de la recuperación de cuenta.
+
+      Cuando se cambie el valor de la política, el proceso de actualización se completará en el siguiente inicio de sesión en el dispositivo <ph name="PRODUCT_OS_NAME" />, una vez se haya obtenido el nuevo valor de la política.
+
+      Nota: Este ajuste solo se aplica a las cuentas nuevas que se añaden en dispositivos <ph name="PRODUCT_OS_NAME" />.
+      </translation>
 <translation id="7491720878670299691">Intervalo en el que se consultan los datos de red y se comprueba si hay eventos. El valor mínimo permitido es 1 minuto.
 
       Si no se establece esta política, se aplicará el intervalo predeterminado de 1 minuto.</translation>
@@ -7341,6 +7361,7 @@
 <translation id="8543108307976719751">Impedir conexiones de acceso remoto a este equipo</translation>
 <translation id="8544375438507658205">Procesador de HTML predeterminado de <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="8544465954173828789">Permite que los SMS del teléfono se sincronicen con Chromebook.</translation>
+<translation id="8549906780629620346">Activar recuperación de cuenta</translation>
 <translation id="8553955290407912156">Si estableces esta política, podrás definir una lista de patrones de URL donde se especifique qué sitios no pueden pedir a los usuarios que les permitan acceder a un dispositivo HID.
 
       Si no se establece la política, <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> se aplicará a todos los sitios (si se ha definido). De lo contrario, se aplicará la configuración personal del usuario.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 6c56b92..80a5650 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -6013,6 +6013,15 @@
 <translation id="7200364929485466022">Heure (interprétée dans le fuseau horaire local de l'appareil) où la recherche de mises à jour doit être lancée.</translation>
 <translation id="7202925763179776247">Autoriser les restrictions de téléchargement</translation>
 <translation id="7207095846245296855">Forcer Google SafeSearch</translation>
+<translation id="7208483746373960784">Ce paramètre détermine la quantité de données utilisateur conservées une fois <ph name="LACROS_NAME" /> désactivé.
+
+      Si la règle est définie sur <ph name="LACROS_BACKWARD_MIGRATION_NONE" />, la rétromigration des données n'est pas effectuée.
+
+      Si la règle est définie sur <ph name="LACROS_BACKWARD_MIGRATION_KEEP_NONE" />, toutes les données utilisateur sont supprimées. C'est l'option la plus sûre.
+
+      Si la règle est définie sur <ph name="LACROS_BACKWARD_MIGRATION_KEEP_SAFE_DATA" />, la plupart des données utilisateur sont supprimées. Seuls les fichiers indépendants du navigateur (comme les téléchargements) sont conservés.
+
+      Si la règle est définie sur <ph name="LACROS_BACKWARD_MIGRATION_KEEP_ALL" />, toutes les données utilisateur sont conservées. Cette option présente un risque élevé d'échec, pour lequel la restauration nécessite d'effectuer un Powerwash.</translation>
 <translation id="7211368186050418507">Ne jamais détecter automatiquement le fuseau horaire</translation>
 <translation id="7216442368414164495">Permettre aux utilisateurs d'activer la création de rapports détaillés dans le cadre de la navigation sécurisée</translation>
 <translation id="721970071627370558">Désactiver les rapports sur l'état de l'alimentation de l'appareil</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index aa2cccc2..dd837bc 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -6001,6 +6001,15 @@
 <translation id="7200364929485466022">L'ora in cui dovrebbe essere eseguito il controllo della disponibilità di aggiornamenti, nel fuso orario locale del dispositivo.</translation>
 <translation id="7202925763179776247">Consenti limitazioni dei download</translation>
 <translation id="7207095846245296855">Forza il filtro SafeSearch di Google</translation>
+<translation id="7208483746373960784">Questa impostazione consente di stabilire la quantità di dati utente da conservare dopo la disattivazione di <ph name="LACROS_NAME" />.
+
+      Se il criterio viene impostato su <ph name="LACROS_BACKWARD_MIGRATION_NONE" />, la migrazione dei dati a ritroso non viene eseguita.
+
+      Se il criterio viene impostato su <ph name="LACROS_BACKWARD_MIGRATION_KEEP_NONE" />, tutti i dati utente vengono rimossi. Questa è l'opzione più sicura.
+
+      Se il criterio viene impostato su <ph name="LACROS_BACKWARD_MIGRATION_KEEP_SAFE_DATA" />, la maggior parte dei dati utente viene rimossa. Vengono conservati solo i file indipendenti dal browser (come i download).
+
+      Se il criterio viene impostato su <ph name="LACROS_BACKWARD_MIGRATION_KEEP_ALL" />, tutti i dati utente vengono conservati. Questa opzione presenta un rischio elevato di errore, che richiede il Powerwash per il ripristino.</translation>
 <translation id="7211368186050418507">Non rilevare mai automaticamente il fuso orario</translation>
 <translation id="7216442368414164495">Consenti agli utenti di attivare i rapporti estesi di Navigazione sicura</translation>
 <translation id="721970071627370558">Disattiva i report sullo stato di alimentazione del dispositivo</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 2ce3d03d..459f613 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -1804,6 +1804,7 @@
 <translation id="2799297758492717491">Automatisch afspelen van media toestaan op een witte lijst met URL-patronen</translation>
 <translation id="2801065672151277034">Instellingen voor certificaatbeheer</translation>
 <translation id="2801155097555584385">Een custom startpunt voor batterijoplading opgeven in procenten</translation>
+<translation id="2801378553855965587"><ph name="GOOGLE_CALENDAR_NAME" />-integratie uitzetten.</translation>
 <translation id="2805707493867224476">Alle sites toestaan pop-ups te tonen</translation>
 <translation id="2818074121667686266">Als je het beleid toepast of niet instelt, wordt gebruikers in een prompt om toegang tot audio-opnamen gevraagd, met uitzondering van de URL's die zijn ingesteld in de lijst AudioCaptureAllowedUrls.
 
@@ -2401,6 +2402,7 @@
           Het waarschuwingsbericht wordt alleen getoond als de inactieve actie 'uitloggen' of 'afsluiten' is.</translation>
 <translation id="3360490004791301756">Gebruikers toestaan aanbiedingen in te wisselen via <ph name="PRODUCT_OS_NAME" />-registratie</translation>
 <translation id="3363360928811201045">Beperkingen op beheerde accounts beheren</translation>
+<translation id="3364400740222114778">Accountherstel</translation>
 <translation id="3373381043600809954"><ph name="PRODUCT_NAME" /> aanzetten</translation>
 <translation id="3374587000313305002">Hiermee wordt de directory geconfigureerd die <ph name="PRODUCT_NAME" /> gebruikt voor het opslaan van gebruikersgegevens.
 
@@ -2422,6 +2424,7 @@
       Als het beleid <ph name="DEVICE_LOCAL_ACCOUNT_AUTO_LOGIN_ID_POLICY_NAME" /> niet is ingesteld, heeft dit beleid geen effect.</translation>
 <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="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.
@@ -3322,6 +3325,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="4389073105055031853">Gebruikers toestaan alle certificaten te beheren</translation>
 <translation id="4389091865841123886">De externe bevestiging configureren met een TPM-mechanisme.</translation>
+<translation id="4397045637922200204">Accountherstel deactiveren</translation>
 <translation id="4397464099112037398">Standaardinstelling voor het recht voor vensterplaatsing</translation>
 <translation id="4401496838830169080">Hiermee kun je bepalen of je de Safe Browsing-functie van <ph name="PRODUCT_NAME" /> wilt aanzetten en in welke modus de functie actief moet zijn.
 
@@ -3736,6 +3740,7 @@
 <translation id="4913065710388638917">Attestproces aanzetten voor een lijst met URL's</translation>
 <translation id="4917385247580444890">Sterk</translation>
 <translation id="4918261735182294270">Gebruikers toestaan om te kiezen of <ph name="CHROME_SYNC_NAME" /> moet worden aangezet</translation>
+<translation id="491889618361437456"><ph name="GOOGLE_CALENDAR_NAME" />-integratie aanzetten</translation>
 <translation id="4919122295221518724">Strengere behandeling van gecombineerde content aanzetten</translation>
 <translation id="4920367374739265095">Als je dit beleid instelt, kun je aangeven welk toegangsbeleid wordt toegepast op bulksgewijze printerconfiguratie en beheren welke printers van <ph name="DEVICE_PRINTERS_POLICY_NAME" /> beschikbaar zijn voor gebruikers.
 
@@ -3892,6 +3897,13 @@
 
       Als je dit beleid niet instelt of niet toepast, werkt webkitRequestFileSystem met het permanente type met een tijdelijk quotum.
       </translation>
+<translation id="5099372083252975644"><ph name="GOOGLE_CALENDAR_NAME" />-integratie aanzetten, zodat <ph name="PRODUCT_OS_NAME" />-gebruikers afspraken kunnen ophalen uit <ph name="GOOGLE_CALENDAR_NAME" /> om de <ph name="PRODUCT_OS_NAME" />-agendawidget in de systeemstatusbalk in te vullen.
+
+          Als je dit beleid toepast, kan het <ph name="PRODUCT_OS_NAME" />-apparaat <ph name="GOOGLE_CALENDAR_NAME" />-afspraken ophalen om de <ph name="PRODUCT_OS_NAME" />-agendawidget in de systeemstatusbalk in te vullen voor de ingelogde gebruiker.
+
+          Als je dit beleid niet toepast, kan het <ph name="PRODUCT_OS_NAME" />-apparaat <ph name="GOOGLE_CALENDAR_NAME" />-afspraken niet ophalen om de <ph name="PRODUCT_OS_NAME" />-agendawidget in de systeemstatusbalk in te vullen voor de ingelogde gebruiker.
+
+          Als je dit beleid niet instelt, staat de <ph name="GOOGLE_CALENDAR_NAME" />-functie standaard uit voor zakelijke gebruikers.</translation>
 <translation id="5103112931744164177">Dit beleid beheert welke softwarestack wordt gebruikt voor communicatie met de DNS-server: de DNS-client van het besturingssysteem of de ingebouwde DNS-client van <ph name="PRODUCT_NAME" />. Dit beleid heeft geen invloed op welke DNS-servers worden gebruikt: als het besturingssysteem bijvoorbeeld is geconfigureerd voor gebruik van een zakelijke DNS-server, wordt diezelfde server gebruikt door de ingebouwde DNS-client. Ook wordt met dit beleid niet beheerd of DNS-over-HTTPS wordt gebruikt: <ph name="PRODUCT_NAME" /> gebruikt altijd de ingebouwde resolver voor DNS-over-HTTPS-verzoeken. Zie het <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" />-beleid voor informatie over het beheer van DNS-over-HTTPS.
 
       Als dit beleid is toegepast, wordt de ingebouwde DNS-client gebruikt (indien beschikbaar).
@@ -6220,6 +6232,15 @@
 <translation id="7482768039644066614">Ophalen aanzetten van metadata voor het laden van pagina's en machinelearning-modellen die de browsefunctionaliteit verbeteren</translation>
 <translation id="7485481791539008776">Regels voor selectie van standaardprinter</translation>
 <translation id="7486205887492534734">Prompt voor als meerdere certificaten overeenkomen op het inlogscherm</translation>
+<translation id="7489661071474025727">Hiermee bepaal je of de service voor accountherstel is geactiveerd voor je gebruikers op <ph name="PRODUCT_OS_NAME" />-apparaten.
+
+      Als je het beleid toepast, wordt herstel van gebruikersgegevens geactiveerd. Als je het beleid niet toepast of niet instelt, wordt herstel van gebruikersgegevens niet geactiveerd.
+      Stel je het beleid in op aanbevolen, dan kunnen gebruikers de activering van accountherstel wijzigen via de instellingenpagina. Als je het beleid instelt op verplicht, kunnen gebruikers de activering van accountherstel niet wijzigen.
+
+      Bij wijziging van de beleidswaarde wordt het updateproces afgerond wanneer er weer wordt ingelogd bij <ph name="PRODUCT_OS_NAME" />, nadat de nieuwe beleidswaarde is opgehaald.
+
+      Opmerking: Deze instelling geldt alleen voor nieuwe accounts die worden toegevoegd op <ph name="PRODUCT_OS_NAME" />-apparaten.
+      </translation>
 <translation id="7491720878670299691">Snelheid waarmee netwerkgegevens worden opgevraagd en gecheckt op gebeurtenissen. Het toegestane minimum is 1 minuut.
 
       Als je dit beleid niet instelt, is de standaardsnelheid van 1 minuut van toepassing.</translation>
@@ -7226,6 +7247,7 @@
 <translation id="8543108307976719751">Verbindingen voor externe toegang tot deze machine voorkomen</translation>
 <translation id="8544375438507658205">Standaard HTML-renderer voor <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="8544465954173828789">Toestaan dat sms-berichten worden gesynchroniseerd tussen telefoon en Chromebook.</translation>
+<translation id="8549906780629620346">Accountherstel activeren</translation>
 <translation id="8553955290407912156">Als je het beleid instelt, kun je een lijst met URL-patronen maken om op te geven welke sites gebruikers niet mogen vragen om toegang tot een HID-apparaat.
 
       Als je het beleid niet instelt, is <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> (indien ingesteld) van toepassing op alle sites. Zo niet, dan gelden de persoonlijke instellingen van gebruikers.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 95702dd..fea7dea5 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -2445,6 +2445,7 @@
           A mensagem de aviso só será mostrada se a ação de inatividade for para sair ou encerrar.</translation>
 <translation id="3360490004791301756">Permitir que os usuários resgatem ofertas pelo Registro do <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3363360928811201045">Adicionar restrições em contas gerenciadas</translation>
+<translation id="3364400740222114778">Recuperação de conta</translation>
 <translation id="3373381043600809954">Ativar "<ph name="PRODUCT_NAME" />".</translation>
 <translation id="3374587000313305002">Configura o diretório que o <ph name="PRODUCT_NAME" /> usará para armazenar dados do usuário.
 
@@ -3388,6 +3389,7 @@
       Para informações detalhadas sobre padrões de <ph name="URL_LABEL" /> válidos, consulte https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns (link em inglês). <ph name="WILDCARD_VALUE" /> não é um valor aceitável para esta política.</translation>
 <translation id="4389073105055031853">Permitir que os usuários gerenciem todos os certificados</translation>
 <translation id="4389091865841123886">Configurar a declaração remota com mecanismo TPM</translation>
+<translation id="4397045637922200204">Desativar a recuperação de conta</translation>
 <translation id="4397464099112037398">Configuração padrão da permissão para posicionamento de janelas</translation>
 <translation id="4401496838830169080">Permite que você controle se o recurso "Navegação segura" do <ph name="PRODUCT_NAME" /> está ativado e em que modo ele opera.
 
@@ -6309,6 +6311,15 @@
 <translation id="7482768039644066614">Ativar a busca de metadados para carregamento de página e dos modelos de aprendizado de máquina para melhorar a experiência de navegação</translation>
 <translation id="7485481791539008776">Regras de seleção de impressora padrão</translation>
 <translation id="7486205887492534734">Pedir quando houver várias correspondências de certificado na tela de login</translation>
+<translation id="7489661071474025727">Especifica se o serviço de recuperação de conta está ativado para usuários em dispositivos <ph name="PRODUCT_OS_NAME" />.
+
+      Quando a política está ativada, a recuperação de dados do usuário é acionada. Quando a política está desativada ou sem definição, a recuperação de dados do usuário não é acionada.
+      Se o nível da política for definido como recomendado, os usuários vão poder mudar a ativação da recuperação de conta na página de configurações. Se ele for definido como obrigatório, os usuários não vão poder mudar a ativação da recuperação de conta.
+
+      Na mudança do valor da política, o processo de atualização é concluído no próximo login no dispositivo <ph name="PRODUCT_OS_NAME" />, depois que o novo valor é buscado.
+
+      Observação: essa configuração só se aplica a novas contas adicionadas em dispositivos <ph name="PRODUCT_OS_NAME" />.
+      </translation>
 <translation id="7491720878670299691">Frequência da pesquisa por dados de rede e da verificação de eventos. O mínimo permitido é de um minuto.
 
       Se deixada sem definição, a frequência padrão de um minuto será aplicada.</translation>
@@ -7321,6 +7332,7 @@
 <translation id="8543108307976719751">Impedir conexões de acesso remoto a esta máquina</translation>
 <translation id="8544375438507658205">Renderizador padrão de HTML para o <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="8544465954173828789">Permite a sincronização de mensagens SMS do smartphone com o Chromebook.</translation>
+<translation id="8549906780629620346">Ativar a recuperação de conta</translation>
 <translation id="8553955290407912156">Se a política for definida, é possível configurar uma lista de padrões de URL que especifica quais sites não podem pedir que o usuário conceda permissão de acesso ao dispositivo HID.
 
       Se esta política for deixada sem definição, a <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> vai ser aplicada a todos os sites, se estiver definida. Caso contrário, as configurações pessoais dos usuários vão ser aplicadas.
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index d56d779..48df04c2 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -5968,6 +5968,15 @@
 <translation id="7200364929485466022">เวลาที่ต้องการตรวจหาอัปเดต โดยตีความในเขตเวลาท้องถิ่นของอุปกรณ์</translation>
 <translation id="7202925763179776247">อนุญาตข้อจำกัดในการดาวน์โหลด</translation>
 <translation id="7207095846245296855">บังคับใช้ ฟีเจอร์ค้นหาปลอดภัยโดย Google </translation>
+<translation id="7208483746373960784">การตั้งค่านี้เป็นตัวกำหนดปริมาณข้อมูลผู้ใช้ที่ระบบจะเก็บไว้หลังจากปิดใช้ <ph name="LACROS_NAME" />
+
+      หากตั้งค่านโยบายเป็น <ph name="LACROS_BACKWARD_MIGRATION_NONE" /> ระบบจะไม่ดำเนินการย้ายข้อมูลย้อนหลัง
+
+      หากตั้งค่านโยบายเป็น <ph name="LACROS_BACKWARD_MIGRATION_KEEP_NONE" /> ระบบจะนำข้อมูลผู้ใช้ทั้งหมดออก ตัวเลือกนี้เป็นตัวเลือกที่ปลอดภัยที่สุด
+
+      หากตั้งค่านโยบายเป็น <ph name="LACROS_BACKWARD_MIGRATION_KEEP_SAFE_DATA" /> ระบบจะนำข้อมูลผู้ใช้ส่วนใหญ่ออก โดยจะเก็บเฉพาะไฟล์ที่ไม่เกี่ยวกับเบราว์เซอร์ (เช่น ไฟล์ที่ดาวน์โหลด)
+
+      หากตั้งค่านโยบายเป็น <ph name="LACROS_BACKWARD_MIGRATION_KEEP_ALL" /> ระบบจะเก็บข้อมูลผู้ใช้ทั้งหมด ตัวเลือกนี้มีความเสี่ยงสูงที่จะล้มเหลวและต้องทำการ Powerwash เพื่อกู้คืน</translation>
 <translation id="7211368186050418507">ไม่ต้องตรวจหาเขตเวลาอัตโนมัติ</translation>
 <translation id="7216442368414164495">อนุญาตให้ผู้ใช้เลือกใช้การรายงานเพิ่มเติมเกี่ยวกับ Safe Browsing</translation>
 <translation id="721970071627370558">ปิดใช้การรายงานสถานะพลังงานของอุปกรณ์</translation>
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 254cf79..575cb678 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -2450,6 +2450,7 @@
           Застереження з'являється, лише якщо потрібно вийти із системи чи завершити роботу.</translation>
 <translation id="3360490004791301756">Дозволяти користувачам отоварювати пропозиції через реєстрацію в <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3363360928811201045">Додати обмеження для керованих облікових записів</translation>
+<translation id="3364400740222114778">Відновлення облікового запису</translation>
 <translation id="3373381043600809954">Увімкнути функцію "<ph name="PRODUCT_NAME" />".</translation>
 <translation id="3374587000313305002">Налаштовує каталог, у якому <ph name="PRODUCT_NAME" /> зберігає дані користувачів.
 
@@ -3386,6 +3387,7 @@
       Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> – недопустиме значення для цього правила.</translation>
 <translation id="4389073105055031853">Дозволити користувачам керувати всіма сертифікатами</translation>
 <translation id="4389091865841123886">Налаштувати віддалене засвідчення за допомогою механізму TPM.</translation>
+<translation id="4397045637922200204">Деактивувати відновлення облікового запису</translation>
 <translation id="4397464099112037398">Налаштування за умовчанням для розміщення вікон</translation>
 <translation id="4401496838830169080">Дозволяє вмикати й вимикати Безпечний перегляд у <ph name="PRODUCT_NAME" />, а також змінювати режим цієї функції.
 
@@ -6313,6 +6315,15 @@
 <translation id="7482768039644066614">Увімкнути отримання метаданих про завантаження сторінки та моделі машинного навчання, що покращують веб-перегляд</translation>
 <translation id="7485481791539008776">Правила вибору принтера за умовчанням</translation>
 <translation id="7486205887492534734">Запитувати на екрані входу, коли є кілька відповідних сертифікатів</translation>
+<translation id="7489661071474025727">Указує, чи буде ввімкнено сервіс відновлення облікового запису для ваших користувачів на пристроях із <ph name="PRODUCT_OS_NAME" />.
+
+      Якщо ввімкнути це правило, відновлення даних користувачів активується. Якщо його вимкнути або не налаштувати, відновлення даних користувачів не активується.
+      Якщо вказати, що правило рекомендоване, користувачі зможуть змінювати параметр активації відновлення облікового запису на сторінці налаштувань. Якщо вказати, що правило обов’язкове, користувачі не зможуть змінювати цей параметр.
+
+      Якщо змінити значення правила, оновлення завершиться під час наступного входу на пристрої з <ph name="PRODUCT_OS_NAME" />.
+
+      Примітка. Це налаштування застосовується лише до нових облікових записів, доданих на пристроях із <ph name="PRODUCT_OS_NAME" />.
+      </translation>
 <translation id="7491720878670299691">Швидкість надсилання запиту даних мережі та перевірки їх на наявність подій. Мінімальне значення – 1 хвилина.
 
       Якщо це правило не налаштувати, застосовується швидкість за умовчанням (1 хвилина).</translation>
@@ -7329,6 +7340,7 @@
 <translation id="8543108307976719751">Заблокувати віддалений доступ до цієї машини</translation>
 <translation id="8544375438507658205">Відтворення у форматі HTML за умовчанням для <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="8544465954173828789">Дозволити синхронізацію SMS-повідомлень на телефоні з Chromebook.</translation>
+<translation id="8549906780629620346">Активувати відновлення облікового запису</translation>
 <translation id="8553955290407912156">За допомогою цього правила можна вказати список шаблонів URL-адрес, що визначають сайти, яким заборонено запитувати дозвіл на доступ до пристрою HID.
 
       Якщо це правило не налаштувати, до всіх сайтів застосовуватиметься правило <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> за умови, що воно налаштоване. Якщо ні, використовуються особисті налаштування користувачів.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 38ce36c..99581a2 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -2455,6 +2455,7 @@
           Thông báo cảnh báo chỉ hiển thị nếu hành động ở chế độ tạm vắng là hành động đăng xuất hoặc tắt nguồn.</translation>
 <translation id="3360490004791301756">Cho phép người dùng sử dụng ưu đãi thông qua gói Đăng ký <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3363360928811201045">Thêm các quy định hạn chế đối với tài khoản được quản lý</translation>
+<translation id="3364400740222114778">Khôi phục tài khoản</translation>
 <translation id="3373381043600809954">Bật <ph name="PRODUCT_NAME" /></translation>
 <translation id="3374587000313305002">Định cấu hình thư mục mà <ph name="PRODUCT_NAME" /> sẽ dùng để lưu trữ dữ liệu của người dùng.
 
@@ -3380,6 +3381,7 @@
       Để biết thông tin chi tiết về các mẫu <ph name="URL_LABEL" /> hợp lệ, vui lòng xem tại https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Chúng tôi không chấp nhận giá trị <ph name="WILDCARD_VALUE" /> đối với chính sách này.</translation>
 <translation id="4389073105055031853">Cho phép người dùng quản lý tất cả chứng chỉ</translation>
 <translation id="4389091865841123886">Định cấu hình chứng thực từ xa với cơ chế TPM.</translation>
+<translation id="4397045637922200204">Huỷ kích hoạt dịch vụ khôi phục tài khoản</translation>
 <translation id="4397464099112037398">Chế độ cài đặt quyền kiểm soát Vị trí cửa sổ mặc định</translation>
 <translation id="4401496838830169080">Cho phép bạn kiểm soát xem có bật tính năng Duyệt web an toàn của <ph name="PRODUCT_NAME" /> không và tính năng này sẽ hoạt động ở chế độ nào.
 
@@ -6304,6 +6306,15 @@
 <translation id="7482768039644066614">Tắt tính năng tìm nạp siêu dữ liệu tải trang và mô hình máy học giúp nâng cao trải nghiệm duyệt web</translation>
 <translation id="7485481791539008776">Quy tắc chọn máy in mặc định</translation>
 <translation id="7486205887492534734">Lời nhắc khi có nhiều chứng chỉ khớp trên màn hình đăng nhập</translation>
+<translation id="7489661071474025727">Chỉ định xem bạn có muốn kích hoạt dịch vụ khôi phục tài khoản cho người dùng trên thiết bị <ph name="PRODUCT_OS_NAME" /> hay không.
+
+      Khi bạn bật chính sách này, dịch vụ khôi phục dữ liệu người dùng sẽ được kích hoạt. Khi bạn tắt hoặc không đặt chính sách này, dịch vụ khôi phục dữ liệu người dùng sẽ không được kích hoạt.
+      Nếu bạn đặt cấp độ áp dụng chính sách thành đề xuất, người dùng có thể thay đổi việc kích hoạt dịch vụ khôi phục tài khoản qua trang cài đặt. Nếu bạn đặt cấp độ áp dụng chính sách thành bắt buộc, người dùng không thể thay đổi việc kích hoạt dịch vụ khôi phục tài khoản.
+
+      Khi giá trị của chính sách thay đổi, quy trình cập nhật sẽ hoàn tất trong lần đăng nhập tiếp theo vào thiết bị <ph name="PRODUCT_OS_NAME" />, sau khi tìm nạp giá trị mới của chính sách.
+
+      Lưu ý: Chế độ cài đặt này chỉ áp dụng cho những tài khoản mới được thêm vào thiết bị <ph name="PRODUCT_OS_NAME" />.
+      </translation>
 <translation id="7491720878670299691">Chu kỳ hệ thống thăm dò và kiểm tra dữ liệu mạng cho các sự kiện. Thời gian tối thiểu cho phép là 1 phút.
 
       Nếu bạn không đặt chính sách này, thì chu kỳ mặc định là 1 phút sẽ được áp dụng.</translation>
@@ -7326,6 +7337,7 @@
 <translation id="8543108307976719751">Không cho phép các kết nối truy cập từ xa vào máy này</translation>
 <translation id="8544375438507658205">Trình hiển thị HTML mặc định dành cho <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="8544465954173828789">Cho phép đồng bộ hóa Tin nhắn SMS từ điện thoại sang Chromebook.</translation>
+<translation id="8549906780629620346">Kích hoạt dịch vụ khôi phục tài khoản</translation>
 <translation id="8553955290407912156">Nếu đặt chính sách này, thì bạn có thể liệt kê các mẫu URL chỉ định những trang web không được phép yêu cầu người dùng cấp quyền truy cập vào thiết bị HID.
 
       Khi bạn không đặt chính sách này, <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> (nếu được đặt) sẽ áp dụng cho mọi trang web. Nếu không, các chế độ cài đặt cá nhân của người dùng sẽ được áp dụng.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 9d2f2a4..f436815 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -5953,6 +5953,15 @@
 <translation id="7200364929485466022">应于何时(以设备的本地时区表示)检查是否有更新。</translation>
 <translation id="7202925763179776247">允许下载限制</translation>
 <translation id="7207095846245296855">强制启用 Google 安全搜索功能</translation>
+<translation id="7208483746373960784">此设置用于确定在 <ph name="LACROS_NAME" /> 停用后保留多少用户数据。
+
+      如果此政策设为 <ph name="LACROS_BACKWARD_MIGRATION_NONE" />,系统不会执行反向数据迁移操作。
+
+      如果此政策设为 <ph name="LACROS_BACKWARD_MIGRATION_KEEP_NONE" />,系统会移除所有用户数据。这是最安全的选项。
+
+      如果此政策设为 <ph name="LACROS_BACKWARD_MIGRATION_KEEP_SAFE_DATA" />,系统会移除大部分用户数据,只会保留与浏览器无关的文件(例如下载内容)。
+
+      如果此政策设为 <ph name="LACROS_BACKWARD_MIGRATION_KEEP_ALL" />,系统会保留所有用户数据。此选项存在很高的失败风险,并且失败后需要执行 Powerwash 操作才能恢复。</translation>
 <translation id="7211368186050418507">一律不自动检测时区</translation>
 <translation id="7216442368414164495">允许用户启用安全浏览扩展报告功能</translation>
 <translation id="721970071627370558">停用设备电源状态报告功能</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index dab4945c..3c5c949d 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -2393,6 +2393,7 @@
           只有當閒置動作設為登出或關機時,系統才會顯示警告訊息。</translation>
 <translation id="3360490004791301756">允許使用者透過 <ph name="PRODUCT_OS_NAME" /> 註冊機制兌換優惠</translation>
 <translation id="3363360928811201045">對受管理帳戶設定限制</translation>
+<translation id="3364400740222114778">帳戶救援</translation>
 <translation id="3373381043600809954">啟用「<ph name="PRODUCT_NAME" />」</translation>
 <translation id="3374587000313305002">設定 <ph name="PRODUCT_NAME" /> 用來儲存使用者資料的目錄。
 
@@ -3304,6 +3305,7 @@
       想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是這項政策許可的值。</translation>
 <translation id="4389073105055031853">允許使用者管理所有憑證</translation>
 <translation id="4389091865841123886">使用 TPM 機制設定遠端證明。</translation>
+<translation id="4397045637922200204">停用帳戶救援服務</translation>
 <translation id="4397464099112037398">預設的視窗放置權限設定</translation>
 <translation id="4401496838830169080">可讓你控管是否要啟用 <ph name="PRODUCT_NAME" /> 的安全瀏覽功能,以及這項功能要在哪種模式下運作。
 
@@ -6187,6 +6189,15 @@
 <translation id="7482768039644066614">啟用網頁載入中繼資料擷取功能和強化瀏覽體驗的機器學習模型</translation>
 <translation id="7485481791539008776">預設印表機選取規則</translation>
 <translation id="7486205887492534734">當有多個憑證相符時,在登入畫面中顯示提示訊息</translation>
+<translation id="7489661071474025727">指定是否要在 <ph name="PRODUCT_OS_NAME" /> 裝置上為使用者啟用帳戶救援服務。
+
+      如果啟用這項政策,系統就會啟用使用者資料復原功能。如果未啟用或未設定這項政策,系統就不會啟用使用者資料復原功能。
+      如果政策層級設為「建議採用」,使用者就能透過設定頁面變更帳戶救援的啟用程序;如果政策層級設為「強制」,表示使用者無法變更帳戶救援服務的啟用程序。
+
+      政策值變更後,更新程序會在下一次登入 <ph name="PRODUCT_OS_NAME" /> 裝置時完成 (即系統擷取到新的政策值之後)。
+
+      注意:這項設定僅適用於加到 <ph name="PRODUCT_OS_NAME" /> 裝置的新帳戶。
+      </translation>
 <translation id="7491720878670299691">系統針對事件輪詢和檢查網路資料的頻率。下限值是 1 分鐘。
 
       如果未設定,系統會套用 1 分鐘的預設頻率。</translation>
@@ -7172,6 +7183,7 @@
 <translation id="8543108307976719751">禁止與這部裝置建立遠端存取連線</translation>
 <translation id="8544375438507658205">預設 <ph name="PRODUCT_FRAME_NAME" /> 的 HTML 轉譯器</translation>
 <translation id="8544465954173828789">允許將簡訊從手機同步至 Chromebook。</translation>
+<translation id="8549906780629620346">啟用帳戶救援服務</translation>
 <translation id="8553955290407912156">你可以透過這項政策建立網址模式清單,用於指定無法要求使用者授予 HID 裝置存取權的網站。
 
       如果未設定這項政策,系統會針對所有網站套用 <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> 政策 (如果已設定)。否則系統會套用使用者的個人設定。
diff --git a/components/policy/resources/templates/policies.yaml b/components/policy/resources/templates/policies.yaml
index 8205af1..4b88f6b8 100644
--- a/components/policy/resources/templates/policies.yaml
+++ b/components/policy/resources/templates/policies.yaml
@@ -1008,6 +1008,7 @@
   1007: DevicePrintingClientNameTemplate
   1008: ReportDeviceSignalStrengthEventDrivenTelemetry
   1009: BatterySaverModeAvailability
+  1018: ShoppingListEnabled
 atomic_groups:
   1: Homepage
   2: RemoteAccess
@@ -1051,4 +1052,4 @@
   40: PrivateNetworkRequestSettings
   41: ScreenCaptureSettings
   42: WindowPlacementSettings
-  43: LocalFontsSettings
\ No newline at end of file
+  43: LocalFontsSettings
diff --git a/components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java b/components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java
index 81fb48b..07ca95f 100644
--- a/components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java
+++ b/components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java
@@ -100,6 +100,15 @@
         return PrefServiceJni.get().isManagedPreference(mNativePrefServiceAndroid, preference);
     }
 
+    /**
+     * @param preference The name of the preference
+     * @return Whether the specified preference is currently using its default value
+     * and has not been set by any higher-priority source (even with the same value).
+     */
+    public boolean isDefaultValuePreference(@NonNull String preference) {
+        return PrefServiceJni.get().isDefaultValuePreference(mNativePrefServiceAndroid, preference);
+    }
+
     @NativeMethods
     interface Natives {
         void clearPref(long nativePrefServiceAndroid, String preference);
@@ -111,5 +120,6 @@
         String getString(long nativePrefServiceAndroid, String preference);
         void setString(long nativePrefServiceAndroid, String preference, String value);
         boolean isManagedPreference(long nativePrefServiceAndroid, String preference);
+        boolean isDefaultValuePreference(long nativePrefServiceAndroid, String preference);
     }
 }
diff --git a/components/prefs/android/java/src/org/chromium/components/prefs/PrefServiceTest.java b/components/prefs/android/java/src/org/chromium/components/prefs/PrefServiceTest.java
index 418ea7e..658e2788 100644
--- a/components/prefs/android/java/src/org/chromium/components/prefs/PrefServiceTest.java
+++ b/components/prefs/android/java/src/org/chromium/components/prefs/PrefServiceTest.java
@@ -105,4 +105,12 @@
 
         assertEquals(expected, mPrefService.isManagedPreference(PREF));
     }
+
+    @Test
+    public void testIsDefaultValuePreference() {
+        for (boolean expected : new boolean[] {false, true}) {
+            doReturn(expected).when(mNativeMock).isDefaultValuePreference(NATIVE_HANDLE, PREF);
+            assertEquals(expected, mPrefService.isDefaultValuePreference(PREF));
+        }
+    }
 }
diff --git a/components/prefs/android/pref_service_android.cc b/components/prefs/android/pref_service_android.cc
index 7efc362..62fe8991 100644
--- a/components/prefs/android/pref_service_android.cc
+++ b/components/prefs/android/pref_service_android.cc
@@ -95,3 +95,11 @@
   return pref_service_->IsManagedPreference(
       base::android::ConvertJavaStringToUTF8(env, j_preference));
 }
+
+jboolean PrefServiceAndroid::IsDefaultValuePreference(
+    JNIEnv* env,
+    const base::android::JavaParamRef<jstring>& j_preference) {
+  const PrefService::Preference* pref = pref_service_->FindPreference(
+      base::android::ConvertJavaStringToUTF8(env, j_preference));
+  return pref && pref->IsDefaultValue();
+}
diff --git a/components/prefs/android/pref_service_android.h b/components/prefs/android/pref_service_android.h
index 9ddc2a93..447efc78 100644
--- a/components/prefs/android/pref_service_android.h
+++ b/components/prefs/android/pref_service_android.h
@@ -48,6 +48,9 @@
   jboolean IsManagedPreference(
       JNIEnv* env,
       const base::android::JavaParamRef<jstring>& j_preference);
+  jboolean IsDefaultValuePreference(
+      JNIEnv* env,
+      const base::android::JavaParamRef<jstring>& j_preference);
 
  private:
   raw_ptr<PrefService> pref_service_;
diff --git a/components/services/patch/public/mojom/file_patcher.mojom b/components/services/patch/public/mojom/file_patcher.mojom
index 514f051b..2d253ca 100644
--- a/components/services/patch/public/mojom/file_patcher.mojom
+++ b/components/services/patch/public/mojom/file_patcher.mojom
@@ -12,7 +12,7 @@
 // Interface to the out-of-process file patcher. The file patcher runs
 // bspatch, courgette, or other utilities to apply a differential
 // patch to a file, often for the purposes of software updates.
-[ServiceSandbox=sandbox.mojom.Sandbox.kUtility]
+[ServiceSandbox=sandbox.mojom.Sandbox.kService]
 interface FilePatcher {
   // Patch |input_file| with |patch_file| using the bsdiff algorithm
   // (Courgette's version) and place the output in |output_file|.
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb
index 77d009d..268ab00c 100644
--- a/components/strings/components_strings_af.xtb
+++ b/components/strings/components_strings_af.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Briefvou</translation>
 <translation id="138218114945450791">Ligblou</translation>
 <translation id="1382194467192730611">USB-toestel word deur jou administrateur toegelaat</translation>
+<translation id="1382378825779654399">Jy sal e-poskennisgewings kry as die prys op enige werf daal. Hierdie bladsy sal in <ph name="LAST_BOOKMARKS_FOLDER" /> gestoor word.</translation>
 <translation id="1382912999714108023">Sien jy nie jou huidige inligting nie? Kontak jou bank om dit op te dateer.</translation>
 <translation id="1384725838384960382">Veilige betaling se eiebewysstawingblad</translation>
 <translation id="1386623374109090026">Aantekeninge</translation>
@@ -421,6 +422,7 @@
 <translation id="2034971124472263449">Stoor in elk geval</translation>
 <translation id="2035400064145347639">Reisgidse en reistydskrifte</translation>
 <translation id="2036983605131262583">Alternatiewe rol</translation>
+<translation id="2040463897538655645">Verwyderbare berging</translation>
 <translation id="2040894699575719559">Ligging is geblokkeer</translation>
 <translation id="2042213636306070719">Laai 7</translation>
 <translation id="204357726431741734">Meld aan om wagwoorde te gebruik wat in jou Google-rekening gestoor is</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5018422839182700155">Kan nie hierdie bladsy oopmaak nie</translation>
 <translation id="5019198164206649151">Agtergrondstoor in swak toestand</translation>
 <translation id="5020776957610079374">Wêreldmusiek</translation>
+<translation id="5021557570875267742">Spoor pryse na met Chrome</translation>
 <translation id="5023310440958281426">Gaan jou administrateur se beleide na</translation>
 <translation id="5029568752722684782">Vee kopie uit</translation>
 <translation id="5030338702439866405">Uitgereik deur</translation>
@@ -2239,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Vertaal <ph name="ORIGINAL_LANGUAGE" /> altyd</translation>
 <translation id="6999969238895751684">Vermaakbedryf</translation>
+<translation id="7003335073762455340">Jy spoor tans hierdie produk na. Hierdie bladsy is in <ph name="LAST_BOOKMARKS_FOLDER" /> gestoor</translation>
 <translation id="7004583254764674281">Gebruik Windows Hello om kaarte vinniger te bevestig</translation>
 <translation id="7006930604109697472">Stuur in elk geval</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3033,6 +3037,7 @@
 <translation id="9174623988242579721">Gepasmaakte en hoëverrigtingvoertuie</translation>
 <translation id="9174917557437862841">Oortjiewisselingknoppie, druk Enter om na hierdie oortjie toe te wissel</translation>
 <translation id="9179703756951298733">Bestuur jou betalings en kredietkaartinligting in Chrome-instellings</translation>
+<translation id="9179907736442194268">Kry e-poskennisgewings as die prys op enige werf daal</translation>
 <translation id="9183302530794969518">Google Dokumente</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> gebruik 'n ongesteunde protokol.</translation>
 <translation id="9187461866967718678">Ekstreemsport</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index cf90701c..9fdad06 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">ቢሆንም አስቀምጥ</translation>
 <translation id="2035400064145347639">የጉዞ መመሪያዎች እና የጉዞ ንግግሮች</translation>
 <translation id="2036983605131262583">ተለዋጭ ጥቅልል</translation>
+<translation id="2040463897538655645">መወገድ የሚችል ማከማቻ</translation>
 <translation id="2040894699575719559">አካባቢ ታግዷል</translation>
 <translation id="2042213636306070719">መሳቢያ 7</translation>
 <translation id="204357726431741734">በእርስዎ Google መለያ ውስጥ የተከማቹ የይለፍ ቃላትን ለመጠቀም ይግቡ</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 0ca634bb..27b3048 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">İstənilən halda yadda saxlayın</translation>
 <translation id="2035400064145347639">Səyahət bələdçiləri və kitabları</translation>
 <translation id="2036983605131262583">Alternativ Rulon</translation>
+<translation id="2040463897538655645">Çıxarıla bilən yaddaş</translation>
 <translation id="2040894699575719559">Məkan blok edildi</translation>
 <translation id="2042213636306070719">Qab 7</translation>
 <translation id="204357726431741734">Google Hesabınızda saxlanılan parollardan istifadə etmək üçün daxil olun</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index 77714dc..50a9d93 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Усё роўна захаваць</translation>
 <translation id="2035400064145347639">Турыстычныя даведнікі і каталогі</translation>
 <translation id="2036983605131262583">Альтэрнатыўны рулон</translation>
+<translation id="2040463897538655645">Здымнае сховішча</translation>
 <translation id="2040894699575719559">Доступ да месцазнаходжання заблакіраваны</translation>
 <translation id="2042213636306070719">Латок 7</translation>
 <translation id="204357726431741734">Каб выкарыстоўваць захаваныя ва Уліковым запісе Google паролі, увайдзіце ў яго</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb
index 2af33bc5..a26c7bb 100644
--- a/components/strings/components_strings_bs.xtb
+++ b/components/strings/components_strings_bs.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Presavijanje pisma</translation>
 <translation id="138218114945450791">Svijetlo plava</translation>
 <translation id="1382194467192730611">USB uređaj je omogućio administrator</translation>
+<translation id="1382378825779654399">Ako se cijena snizi na bilo kojoj web-lokaciji, dobit ćete upozorenja e-porukom. Ova će se stranica spremiti u mapu <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Ne vidite svoje trenutne informacije? Kontaktirajte banku da ih ažurirate.</translation>
 <translation id="1384725838384960382">Tabela za autentifikaciju akreditiva sigurnog plaćanja</translation>
 <translation id="1386623374109090026">Bilješke</translation>
@@ -421,6 +422,7 @@
 <translation id="2034971124472263449">Ipak sačuvaj</translation>
 <translation id="2035400064145347639">Turistički vodiči i putopisi</translation>
 <translation id="2036983605131262583">Alternativna rolna</translation>
+<translation id="2040463897538655645">Uklonjiva pohrana</translation>
 <translation id="2040894699575719559">Lokacija je blokirana</translation>
 <translation id="2042213636306070719">Ladica 7</translation>
 <translation id="204357726431741734">Prijavite se da koristite lozinke sačuvane na Google računu</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5018422839182700155">Nije moguće otvoriti ovu stranicu</translation>
 <translation id="5019198164206649151">Pohrana za sigurnosnu kopiju je u lošem stanju</translation>
 <translation id="5020776957610079374">Svjetska muzika</translation>
+<translation id="5021557570875267742">Praćenje cijena pomoću Chromea</translation>
 <translation id="5023310440958281426">Provjerite pravila administratora</translation>
 <translation id="5029568752722684782">Obriši kopiju</translation>
 <translation id="5030338702439866405">Izdavač:</translation>
@@ -2239,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (omotnica)</translation>
 <translation id="6996312675313362352">Uvijek prevodi <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Industrija zabave</translation>
+<translation id="7003335073762455340">Pratite ovaj proizvod. Ova je stranica spremljena u mapu <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Koristite Windows Hello da brže potvrdite kartice</translation>
 <translation id="7006930604109697472">Svejedno pošalji</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3033,6 +3037,7 @@
 <translation id="9174623988242579721">Vozila s prilagođenim performansama</translation>
 <translation id="9174917557437862841">Dugme za promjenu kartice. Pritisnite Enter da se prebacite na ovu karticu</translation>
 <translation id="9179703756951298733">Upravljajte plaćanjima i informacijama o kreditnim karticama u postavkama Chromea</translation>
+<translation id="9179907736442194268">Dobivajte upozorenja e-porukom ako se cijena snizi na bilo kojoj web-lokaciji</translation>
 <translation id="9183302530794969518">Google Dokumenti</translation>
 <translation id="9183425211371246419">Host računar <ph name="HOST_NAME" /> koristi protokol koji nije podržan.</translation>
 <translation id="9187461866967718678">Ekstremni sportovi</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index fabba61..885b9c5 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Dopisní přeložení</translation>
 <translation id="138218114945450791">Světle modrá</translation>
 <translation id="1382194467192730611">Zařízení USB povolené administrátorem</translation>
+<translation id="1382378825779654399">Pokud cena na některém webu klesne, dostanete e-mailové upozornění. Tato stránka bude uložena do složky <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Pokud nevidíte své aktuální informace, požádejte svoji banku o jejich aktualizaci.</translation>
 <translation id="1384725838384960382">List ověření identifikačních údajů pro zabezpečené platby</translation>
 <translation id="1386623374109090026">Poznámky</translation>
@@ -421,6 +422,7 @@
 <translation id="2034971124472263449">Přesto uložit</translation>
 <translation id="2035400064145347639">Cestovní průvodci a katalogy</translation>
 <translation id="2036983605131262583">Alternativní role</translation>
+<translation id="2040463897538655645">Vyměnitelné úložiště</translation>
 <translation id="2040894699575719559">Místo bylo zablokováno</translation>
 <translation id="2042213636306070719">Přihrádka 7</translation>
 <translation id="204357726431741734">Chcete-li používat hesla uložená v účtu Google, přihlaste se</translation>
@@ -1515,6 +1517,7 @@
 <translation id="5018422839182700155">Tuto stránku nelze otevřít</translation>
 <translation id="5019198164206649151">Záložní úložiště je ve špatném stavu</translation>
 <translation id="5020776957610079374">Světová hudba</translation>
+<translation id="5021557570875267742">Sledování cen v prohlížeči Chrome</translation>
 <translation id="5023310440958281426">Zkontrolujte zásady svého správce</translation>
 <translation id="5029568752722684782">Vymazat kopii</translation>
 <translation id="5030338702439866405">Vydal:</translation>
@@ -2234,6 +2237,7 @@
 <translation id="6993898126790112050">6x9 (obálka)</translation>
 <translation id="6996312675313362352">Jazyk <ph name="ORIGINAL_LANGUAGE" /> vždy překládat</translation>
 <translation id="6999969238895751684">Zábavní průmysl</translation>
+<translation id="7003335073762455340">Tento produkt sledujete. Tato stránka je uložena ve složce <ph name="LAST_BOOKMARKS_FOLDER" /></translation>
 <translation id="7004583254764674281">Potvrzovat karty rychleji pomocí technologie Windows Hello</translation>
 <translation id="7006930604109697472">Přesto odeslat</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3028,6 +3032,7 @@
 <translation id="9174623988242579721">Upravená a výkonná vozidla</translation>
 <translation id="9174917557437862841">Tlačítko přepínání karet. Stisknutím klávesy Enter přejdete na tuto kartu</translation>
 <translation id="9179703756951298733">Spravujte své platební údaje a informace o platebních kartách v nastavení Chromu</translation>
+<translation id="9179907736442194268">Pokud cena na některém webu klesne, odeslat e-mailové upozornění</translation>
 <translation id="9183302530794969518">Dokumenty Google</translation>
 <translation id="9183425211371246419">Web <ph name="HOST_NAME" /> používá nepodporovaný protokol.</translation>
 <translation id="9187461866967718678">Extrémní sporty</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index b98360a..8c38881d 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Δίπλωση Letter</translation>
 <translation id="138218114945450791">Ανοιχτό μπλε</translation>
 <translation id="1382194467192730611">Συσκευή USB που επιτρέπεται από τον διαχειριστή σας</translation>
+<translation id="1382378825779654399">Αν η τιμή πέσει σε οποιονδήποτε ιστότοπο, θα λάβετε ειδοποιήσεις ηλεκτρονικού ταχυδρομείου. Αυτή η σελίδα θα αποθηκευτεί στον φάκελο <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Δεν βλέπετε τα τρέχοντα στοιχεία σας; Επικοινωνήστε με την τράπεζά σας για να γίνει ενημέρωση.</translation>
 <translation id="1384725838384960382">Φύλλο ελέγχου ταυτότητας διαπιστευτηρίων για ασφαλείς πληρωμές</translation>
 <translation id="1386623374109090026">Σχολιασμοί</translation>
@@ -260,6 +261,7 @@
 <translation id="156703335097561114">Πληροφορίες δικτύωσης, όπως διευθύνσεις, διαμόρφωση διεπαφής και ποιότητα σύνδεσης</translation>
 <translation id="1567040042588613346">Αυτή η πολιτική λειτουργεί με τον αναμενόμενο τρόπο αλλά η ίδια τιμή έχει οριστεί αλλού και αντικαθίσταται από αυτήν την πολιτική.</translation>
 <translation id="1569487616857761740">Εισαγωγή ημερομηνίας λήξης</translation>
+<translation id="1569694109004336106">Το Google Chrome επιχειρεί να ενεργοποιήσει το Windows Hello για τη συμπλήρωση κωδικών πρόσβασης.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Παρουσιάστηκε πρόβλημα κατά την εμφάνιση αυτής της ιστοσελίδας.</translation>
 <translation id="1586541204584340881">Ποιες επεκτάσεις έχετε εγκαταστήσει</translation>
@@ -398,6 +400,7 @@
 <translation id="1958218078413065209">Η υψηλότερη βαθμολογία σας είναι <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Συμβάλετε στη βελτίωση της ασφάλειας στον ιστό για όλους με την αποστολή <ph name="BEGIN_WHITEPAPER_LINK" />URL από ορισμένες σελίδες που επισκέπτεστε, περιορισμένων πληροφοριών συστήματος και ορισμένου περιεχομένου σελίδας<ph name="END_WHITEPAPER_LINK" /> στην Google. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Πολιτική απορρήτου<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436">Σελιδοδείκτες <ph name="DOMAIN" /></translation>
+<translation id="1971033026002113380">Προστασία κωδικών πρόσβασης με το TouchID</translation>
 <translation id="1973335181906896915">Σφάλμα σειριοποίησης</translation>
 <translation id="1974060860693918893">Σύνθετες</translation>
 <translation id="1975457531113383421">Τροφοδότης χαρτιού</translation>
@@ -725,6 +728,7 @@
 <translation id="2881276955470682203">Αποθήκευση κάρτας;</translation>
 <translation id="2882949212241984732">Δίπλωση με διπλό παράθυρο</translation>
 <translation id="2893773853358652045">Τέταρτο ρολό</translation>
+<translation id="289834758818479772">Εάν μοιράζεστε αυτήν τη συσκευή με άλλους, μπορείτε να ενεργοποιήσετε το TouchID για να επαληθεύετε την ταυτότητά σας κάθε φορά που χρησιμοποιείτε έναν αποθηκευμένο κωδικό πρόσβασης.</translation>
 <translation id="2900528713135656174">Δημιουργία συμβάντος</translation>
 <translation id="2903493209154104877">Διευθύνσεις</translation>
 <translation id="290376772003165898">Η σελίδα δεν είναι στα <ph name="LANGUAGE" />;</translation>
@@ -801,6 +805,8 @@
 <translation id="3108943290502734357">Μεσαίος τροφοδότης χαρτιού</translation>
 <translation id="3109728660330352905">Δεν έχετε εξουσιοδότηση για την προβολή αυτής της σελίδας.</translation>
 <translation id="3113284927548439113">Τρίτη βάρδια</translation>
+<translation id="3114040155724590991">Γίνεται ενημέρωση του συστήματος Android
+    Η εκκίνηση της εφαρμογής σας μπορεί να διαρκέσει περισσότερο από το συνηθισμένο.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Λήψη εμπιστευτικού αρχείου;}other{Λήψη εμπιστευτικών αρχείων;}}</translation>
 <translation id="3115874930288085374">Ο τομέας <ph name="ENROLLMENT_DOMAIN" /> απαιτεί τη δημιουργία αντιγράφων ασφαλείας για τα δεδομένα σας και την επιστροφή αυτής της συσκευής (<ph name="DEVICE_TYPE" />).</translation>
 <translation id="3116158981186517402">Πλαστικοποίηση</translation>
@@ -1257,6 +1263,7 @@
 <translation id="4306812610847412719">πρόχειρο</translation>
 <translation id="4308567447483056043">Αυτή η πολιτική παραβλέπεται, επειδή ο χρήστης δεν είναι συνδεδεμένος. Για την εφαρμογή αυτής της πολιτικής, η διαχείριση του προγράμματος περιήγησης Chrome και του προφίλ πρέπει να γίνεται μέσω της Κονσόλας διαχειριστή από τον ίδιο οργανισμό.</translation>
 <translation id="4310070645992025887">Αναζήτηση διαδρομών σας</translation>
+<translation id="4310496734563057511">Εάν μοιράζεστε αυτήν τη συσκευή με άλλους, μπορείτε να ενεργοποιήσετε το Windows Hello για να επαληθεύετε την ταυτότητά σας κάθε φορά που χρησιμοποιείτε έναν αποθηκευμένο κωδικό πρόσβασης.</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Αποκλεισμός (προεπιλογή)</translation>
 <translation id="4314815835985389558">Διαχείριση συγχρονισμού</translation>
@@ -1472,6 +1479,7 @@
 <translation id="4880827082731008257">Αναζήτηση ιστορικού</translation>
 <translation id="4881695831933465202">Άνοιγμα</translation>
 <translation id="4885256590493466218">Πληρωμή με την κάρτα <ph name="CARD_DETAIL" /> κατά την ολοκλήρωση της αγοράς</translation>
+<translation id="4887406273302438710">Προστασία κωδικών πρόσβασης με το Windows Hello</translation>
 <translation id="4888600795924685526">Σπουδές ξένων γλωσσών</translation>
 <translation id="4889420713887366944">Κουμπί ανοίγματος παραθύρου για ανώνυμη περιήγηση, πατήστε Enter για να ανοίξετε ένα νέο παράθυρο για ανώνυμη περιήγηση.</translation>
 <translation id="4892518386797173871">Πίσω</translation>
@@ -1523,6 +1531,7 @@
 <translation id="5018422839182700155">Δεν είναι δυνατό το άνοιγμα αυτής της σελίδας</translation>
 <translation id="5019198164206649151">Η αποθήκευση αντιγράφων ασφαλείας είναι σε κακή κατάσταση</translation>
 <translation id="5020776957610079374">Μουσική του κόσμου</translation>
+<translation id="5021557570875267742">Παρακολούθηση τιμών με το Chrome</translation>
 <translation id="5023310440958281426">Ελέγξτε τις πολιτικές του διαχειριστή</translation>
 <translation id="5029568752722684782">Διαγραφή αντιγράφου</translation>
 <translation id="5030338702439866405">Έκδοση από</translation>
@@ -1691,6 +1700,7 @@
 <translation id="5428105026674456456">Ισπανικά
 </translation>
 <translation id="5430298929874300616">Κατάργηση σελιδοδείκτη</translation>
+<translation id="5434423669266814150">ενεργοποιήσει το TouchID για συμπλήρωση κωδικών πρόσβασης.</translation>
 <translation id="5443468954631487277">Αντίστροφη σειρά με την πρόσοψη προς τα επάνω</translation>
 <translation id="5447765697759493033">Αυτός ο ιστότοπος δεν θα μεταφραστεί</translation>
 <translation id="5452270690849572955">Δεν είναι δυνατός ο εντοπισμός αυτής της σελίδας του κεντρικού υπολογιστή <ph name="HOST_NAME" /></translation>
@@ -2244,6 +2254,7 @@
 <translation id="6993898126790112050">6x9 (Φάκελος)</translation>
 <translation id="6996312675313362352">Να μεταφράζονται πάντα τα <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Βιομηχανία ψυχαγωγίας</translation>
+<translation id="7003335073762455340">Παρακολουθείτε αυτό το προϊόν. Αυτή η σελίδα έχει αποθηκευτεί στον φάκελο <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Χρησιμοποιήστε το Windows Hello για πιο γρήγορη επιβεβαίωση καρτών</translation>
 <translation id="7006930604109697472">Αποστολή ούτως ή άλλως</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -2467,6 +2478,7 @@
 <translation id="7564049878696755256">Μπορεί να χάσετε την πρόσβαση στον λογαριασμό σας <ph name="ORG_NAME" /> ή να πέσετε θύμα κλοπής στοιχείων ταυτότητας. Το Chrome συνιστά να αλλάξετε τον κωδικό πρόσβασής σας τώρα.</translation>
 <translation id="7564680668369175887">Αυτοκίνητα τύπου station wagon</translation>
 <translation id="7567204685887185387">Ο διακομιστής δεν μπόρεσε να αποδείξει ότι είναι <ph name="DOMAIN" />. Το πιστοποιητικό ασφαλείας του μπορεί να εκδόθηκε παράνομα. Αυτό μπορεί να οφείλεται σε λανθασμένη ρύθμιση ή σε κάποιον τρίτο που επιτίθεται στη σύνδεσή σας.</translation>
+<translation id="7568616151991626879">Το Google Chrome προσπαθεί να συμπληρώσει τον κωδικό πρόσβασής σας στην εφαρμογή <ph name="APP_NAME" />.</translation>
 <translation id="7569490014721427265">Γκολφ</translation>
 <translation id="7569761772822664555">Κουμπί διαχείρισης μηχανών αναζήτησης. Πατήστε Enter για να διαχειριστείτε την προεπιλεγμένη μηχανή αναζήτησης και την αναζήτηση ιστοτόπων.</translation>
 <translation id="7569952961197462199">Κατάργηση πιστωτικής κάρτας από το Chrome;</translation>
@@ -2497,6 +2509,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Κανένας}=1{1 κωδικός πρόσβασης στον λογαριασμό σας (για <ph name="DOMAIN_LIST" />)}other{# κωδικοί πρόσβασης στον λογαριασμό σας (για <ph name="DOMAIN_LIST" />)}}</translation>
 <translation id="7638605456503525968">Σειριακές θύρες</translation>
 <translation id="7639968568612851608">Σκούρο γκρι</translation>
+<translation id="7646681339175747202">Ο κωδικός πρόσβασης που μόλις χρησιμοποιήσατε έχει εντοπιστεί σε μια παραβίαση δεδομένων. Ο Διαχειριστής κωδικών πρόσβασης Google συνιστά να αλλάξετε άμεσα τον κωδικό πρόσβασής σας.</translation>
 <translation id="7647206758853451655">Ποιότητα εκτύπωσης</translation>
 <translation id="7648992873808071793">Αποθήκευση αρχείων σε αυτήν τη συσκευή</translation>
 <translation id="7653957176542370971">Το φύλλο του δείκτη χειρισμού πληρωμής είναι κλειστό.</translation>
@@ -3041,6 +3054,7 @@
 <translation id="9174623988242579721">Προσαρμοσμένα οχήματα και οχήματα επιδόσεων</translation>
 <translation id="9174917557437862841">Κουμπί εναλλαγής καρτέλας, πατήστε Enter για μετάβαση σε αυτήν την καρτέλα</translation>
 <translation id="9179703756951298733">Διαχειριστείτε τις πληρωμές και τα στοιχεία της πιστωτικής σας κάρτας στις ρυθμίσεις του Chrome.</translation>
+<translation id="9179907736442194268">Λάβετε ειδοποιήσεις ηλεκτρονικού ταχυδρομείου σε περίπτωση πτώσης τιμής σε οποιονδήποτε ιστότοπο</translation>
 <translation id="9183302530794969518">Έγγραφα Google</translation>
 <translation id="9183425211371246419">Ο κεντρικός υπολογιστής <ph name="HOST_NAME" /> χρησιμοποιεί μη υποστηριζόμενο πρωτόκολλο.</translation>
 <translation id="9187461866967718678">Επικίνδυνα σπορ</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index 353070d..240dbee9 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Guardar de todos modos</translation>
 <translation id="2035400064145347639">Guías y documentales de viajes</translation>
 <translation id="2036983605131262583">Rollo alternativo</translation>
+<translation id="2040463897538655645">Almacenamiento extraíble</translation>
 <translation id="2040894699575719559">Ubicación bloqueada</translation>
 <translation id="2042213636306070719">Bandeja 7</translation>
 <translation id="204357726431741734">Accede a tu Cuenta de Google para usar las contraseñas guardadas allí</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index 9173f0f8..c737e9a 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Tríptico</translation>
 <translation id="138218114945450791">Azul claro</translation>
 <translation id="1382194467192730611">Dispositivo USB autorizado por tu administrador</translation>
+<translation id="1382378825779654399">Recibirás alertas por correo electrónico si el precio baja en algún sitio. Esta página se guardará en <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">¿No está actualizada tu información? Ponte en contacto con tu banco para actualizarla.</translation>
 <translation id="1384725838384960382">Hoja de autenticación de credenciales de pago seguras</translation>
 <translation id="1386623374109090026">Anotaciones</translation>
@@ -421,6 +422,7 @@
 <translation id="2034971124472263449">Guardar de todos modos</translation>
 <translation id="2035400064145347639">Guías y diarios de viaje</translation>
 <translation id="2036983605131262583">Rollo alternativo</translation>
+<translation id="2040463897538655645">Almacenamiento extraíble</translation>
 <translation id="2040894699575719559">Ubicación bloqueada</translation>
 <translation id="2042213636306070719">Bandeja 7</translation>
 <translation id="204357726431741734">Inicia sesión para poder usar las contraseñas guardadas en tu cuenta de Google</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5018422839182700155">No se puede abrir esta página</translation>
 <translation id="5019198164206649151">El almacén secundario está en mal estado.</translation>
 <translation id="5020776957610079374">Música del mundo</translation>
+<translation id="5021557570875267742">Hacer un seguimiento de los precios con Chrome</translation>
 <translation id="5023310440958281426">Consulta las políticas del administrador</translation>
 <translation id="5029568752722684782">Borrar copia</translation>
 <translation id="5030338702439866405">Emitido por</translation>
@@ -2239,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (sobre)</translation>
 <translation id="6996312675313362352">Traducir siempre del <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Industria del entretenimiento</translation>
+<translation id="7003335073762455340">Estás haciendo el seguimiento de este producto. Esta página se ha guardado en <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Usa Windows Hello para confirmar tarjetas más rápido</translation>
 <translation id="7006930604109697472">Enviar de todos modos</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3033,6 +3037,7 @@
 <translation id="9174623988242579721">Vehículos personalizados y de alto rendimiento</translation>
 <translation id="9174917557437862841">Botón de cambio de pestaña; pulsa Intro para cambiar a esta pestaña</translation>
 <translation id="9179703756951298733">Gestiona la información de tus pagos y tarjetas de crédito desde la configuración de Chrome</translation>
+<translation id="9179907736442194268">Recibe alertas por correo electrónico si el precio baja en algún sitio</translation>
 <translation id="9183302530794969518">Documentos de Google</translation>
 <translation id="9183425211371246419">La página <ph name="HOST_NAME" /> utiliza un protocolo no admitido.</translation>
 <translation id="9187461866967718678">Deportes de riesgo</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index 59d6e1ba..9691ffa3 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Salvesta ikkagi</translation>
 <translation id="2035400064145347639">Reisijuhid ja reisikirjad</translation>
 <translation id="2036983605131262583">Alternatiivne rull</translation>
+<translation id="2040463897538655645">Irdmälu</translation>
 <translation id="2040894699575719559">Asukoht on blokeeritud</translation>
 <translation id="2042213636306070719">Salv 7</translation>
 <translation id="204357726431741734">Logige sisse, et kasutada oma Google'i kontole salvestatud paroole</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index f57d00d..4d31ea0 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">تاخوردگی نامه‌مانند</translation>
 <translation id="138218114945450791">آبی روشن</translation>
 <translation id="1382194467192730611">‏سرپرست دستگاه USB را مجاز کرد</translation>
+<translation id="1382378825779654399">اگر قیمت در هر سایتی کاهش پیدا کند، هشدار ایمیلی دریافت خواهید کرد. این صفحه در <ph name="LAST_BOOKMARKS_FOLDER" /> ذخیره خواهد شد.</translation>
 <translation id="1382912999714108023">اطلاعاتی که می‌بینید به‌روز نیست؟ برای به‌روزرسانی اطلاعات، لطفاً با بانکتان تماس بگیرید.</translation>
 <translation id="1384725838384960382">برگ اصالت‌سنجی اطلاعات کاربری پرداخت امن</translation>
 <translation id="1386623374109090026">حاشیه‌نویسی</translation>
@@ -378,13 +379,13 @@
 <translation id="1884843295353628214">جاز</translation>
 <translation id="1890171020361705182">بازی داینو. دایناسوری نقطه‌ای همان‌طور که در دشتی دورافتاده می‌دود، موقع رسیدن به کاکتوس‌ها و پتروداکتیل‌ها جاخالی می‌دهد. وقتی صدای نشانه صوتی را شنیدید، برای پریدن از روی موانع ضربه بزنید.</translation>
 <translation id="1898423065542865115">فیلتر کردن</translation>
-<translation id="1901443836186977402">{1,plural, =1{این سرور نتوانست اثبات کند که <ph name="DOMAIN" /> است؛ گواهی امنیتی آن روز گذشته منقضی شده است. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجمی درحال رهگیری اتصالتان باشد. ساعت رایانه‌تان درحال‌حاضر روی <ph name="CURRENT_DATE" /> تنظیم شده است. آیا درست است؟ اگر نه، باید ساعت سیستم را درست کنید و سپس این صفحه را بازآوری کنید.}one{این سرور نتوانست اثبات کند که <ph name="DOMAIN" /> است؛ گواهینامه امنیتی آن # روز پیش منقضی شده است. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجمی درحال رهگیری اتصالتان باشد. ساعت رایانه‌تان درحال‌حاضر روی <ph name="CURRENT_DATE" /> تنظیم شده است. آیا درست است؟ اگر نه، باید ساعت سیستم را درست کنید و سپس این صفحه را بازآوری کنید.}other{این سرور نتوانست اثبات کند که <ph name="DOMAIN" /> است؛ گواهینامه امنیتی آن # روز پیش منقضی شده است. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجمی درحال رهگیری اتصالتان باشد. ساعت رایانه‌تان درحال‌حاضر روی <ph name="CURRENT_DATE" /> تنظیم شده است. آیا درست است؟ اگر نه، باید ساعت سیستم را درست کنید و سپس این صفحه را بازآوری کنید.}}</translation>
+<translation id="1901443836186977402">{1,plural, =1{این سرور نتوانست اثبات کند که <ph name="DOMAIN" /> است؛ گواهی امنیتی آن روز گذشته منقضی شده است. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجمی درحال رهگیری اتصالتان باشد. ساعت رایانه‌تان درحال‌حاضر روی <ph name="CURRENT_DATE" /> تنظیم شده است. آیا درست است؟ اگر نه، باید ساعت سیستم را درست کنید و سپس این صفحه را بازآورید.}one{این سرور نتوانست اثبات کند که <ph name="DOMAIN" /> است؛ گواهینامه امنیتی آن # روز پیش منقضی شده است. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجمی درحال رهگیری اتصالتان باشد. ساعت رایانه‌تان درحال‌حاضر روی <ph name="CURRENT_DATE" /> تنظیم شده است. آیا درست است؟ اگر نه، باید ساعت سیستم را درست کنید و سپس این صفحه را بازآورید.}other{این سرور نتوانست اثبات کند که <ph name="DOMAIN" /> است؛ گواهینامه امنیتی آن # روز پیش منقضی شده است. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجمی درحال رهگیری اتصالتان باشد. ساعت رایانه‌تان درحال‌حاضر روی <ph name="CURRENT_DATE" /> تنظیم شده است. آیا درست است؟ اگر نه، باید ساعت سیستم را درست کنید و سپس این صفحه را بازآورید.}}</translation>
 <translation id="1902576642799138955">مدت اعتبار</translation>
 <translation id="1906155288650175567">‏دکمه ایجاد یادداشت؛ برای ایجاد سریع یادداشت جدید در Google Keep، کلید «ورود» را فشار دهید</translation>
 <translation id="1908217026282415406">استفاده از دوربین و حرکت دادن آن</translation>
 <translation id="191374271204266022">‏کپی با قالب JSON</translation>
 <translation id="1914326953223720820">سرویس خارج کردن از فشرده‌سازی</translation>
-<translation id="1916770123977586577">برای اعمال کردن تنظیمات به‌روزرسانی‌شده خود در این سایت، این صفحه را تازه‌سازی کنید</translation>
+<translation id="1916770123977586577">برای اعمال کردن تنظیمات به‌روزرسانی‌شده خود در این سایت، این صفحه را بار کردن مجدد کنید</translation>
 <translation id="1919345977826869612">آگهی‌ها</translation>
 <translation id="1919367280705858090">دریافت راهنمایی برای پیام خطایی خاص</translation>
 <translation id="192020519938775529">{COUNT,plural, =0{هیچ‌کدام}=1{۱ سایت}one{# سایت}other{# سایت}}</translation>
@@ -841,7 +842,7 @@
 <translation id="3223287115535306850">نماد متحرک راه‌اندازی برنامه</translation>
 <translation id="3225347164936328585">دست زدن</translation>
 <translation id="3225919329040284222">سرور گواهی را نشان می‌دهد که با موارد پیش‌بینی‌شده داخلی مطابقت ندارد. این پیش‌بینی‌ها به‌طور حتم وب‌سایتهای دارای امنیت بالا را جهت محافظت از شما در بر می‌گیرند.</translation>
-<translation id="3226128629678568754">دکمه تازه‌سازی را فشار دهید تا داده‌های مورد نیاز برای بارگیری صفحه مجدداً ارسال شود.</translation>
+<translation id="3226128629678568754">دکمه بار کردن مجدد را فشار دهید تا داده‌های مورد نیاز برای بارگیری صفحه مجدداً ارسال شود.</translation>
 <translation id="3226387218769101247">تصاویر کوچک</translation>
 <translation id="3227137524299004712">میکروفن</translation>
 <translation id="3229041911291329567">اطلاعات مربوط به نسخه دستگاه و مرورگر</translation>
@@ -1399,7 +1400,7 @@
 <translation id="4722547256916164131">‏<ph name="BEGIN_LINK" />اجرای Windows Network Diagnostics<ph name="END_LINK" /></translation>
 <translation id="4722735765955348426">گذرواژه <ph name="USERNAME" /></translation>
 <translation id="4724144314178270921">می‌تواند درخواست کند نوشتار و تصاویر موجود در بریده‌دان را ببیند</translation>
-<translation id="4726672564094551039">تازه‌سازی خط مشی‌ها</translation>
+<translation id="4726672564094551039">بار کردن مجدد خط مشی‌ها</translation>
 <translation id="4728558894243024398">پلت فورم</translation>
 <translation id="4731638775147756694">سرپرستتان این برنامه را مسدود کرده است</translation>
 <translation id="4731967714531604179">Prc2 (Envelope)</translation>
@@ -1520,6 +1521,7 @@
 <translation id="5018422839182700155">این صفحه نمی‌تواند باز شود</translation>
 <translation id="5019198164206649151">پشتیبان‌گیری ذخیره در وضعیت نادرست است</translation>
 <translation id="5020776957610079374">موسیقی ملل</translation>
+<translation id="5021557570875267742">‏ردیابی قیمت‌ها با Chrome</translation>
 <translation id="5023310440958281426">خط‌مشی‌های سرپرست سیستمتان را بررسی کنید</translation>
 <translation id="5029568752722684782">پاک کردن نسخه کپی</translation>
 <translation id="5030338702439866405">صدور توسط</translation>
@@ -1730,7 +1732,7 @@
 <translation id="5541546772353173584">افزودن ایمیل</translation>
 <translation id="5545756402275714221">مقاله‌هایی برای شما</translation>
 <translation id="5552137475244467770">‏Chrome به‌طور دوره‌ای گذرواژه‌هایتان را با فهرست‌هایی که به‌صورت آنلاین منتشر می‌شود مقایسه می‌کند. هنگام انجام این کار، نام‌های کاربری و گذرواژه‌های شما رمزگذاری می‌شود تا توسط اشخاص دیگر، ازجمله Google خوانده نشود.</translation>
-<translation id="5556459405103347317">تازه‌سازی</translation>
+<translation id="5556459405103347317">بار کردن مجدد</translation>
 <translation id="5560088892362098740">تاریخ انقضا</translation>
 <translation id="55635442646131152">طرح کلی سند</translation>
 <translation id="5565613213060953222">باز کردن «برگه ناشناس»</translation>
@@ -2177,7 +2179,7 @@
 <translation id="6831043979455480757">ترجمه</translation>
 <translation id="6833752742582340615">‏برای تسویه‌حساب ایمن و سریع‌تر، اطلاعات کارت و صورت‌حساب را در «حساب Google» خودتان ذخیره کنید</translation>
 <translation id="6846340164947227603">استفاده از شماره کارت مجازی...</translation>
-<translation id="6852204201400771460">برنامه تازه‌سازی شود؟</translation>
+<translation id="6852204201400771460">برنامه بار کردن مجدد شود؟</translation>
 <translation id="6857776781123259569">مدیریت گذرواژه‌ها…</translation>
 <translation id="686485648936420384">منابع مصرف‌کننده</translation>
 <translation id="6865412394715372076">درحال‌حاضر نمی‌توان این کارت را به تأیید رساند</translation>
@@ -2240,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> همیشه ترجمه شود</translation>
 <translation id="6999969238895751684">صنعت سرگرمی</translation>
+<translation id="7003335073762455340">این محصول را ردیابی می‌کنید. این صفحه در <ph name="LAST_BOOKMARKS_FOLDER" /> ذخیره شده است.</translation>
 <translation id="7004583254764674281">‏برای به‌تأیید رساندن سریع‌تر کارت‌ها، از Windows Hello استفاده شود</translation>
 <translation id="7006930604109697472">در هر حال فرستاده شود</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -2298,7 +2301,7 @@
 <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>
 <translation id="7179323680825933600">ذخیره و تکمیل روش‌های پرداخت</translation>
-<translation id="7180611975245234373">بازخوانی</translation>
+<translation id="7180611975245234373">بازآوری</translation>
 <translation id="7181261019481237103">پنجره ناشناس باز کنید</translation>
 <translation id="7182878459783632708">خط‌مشی‌ای تنظیم نشده</translation>
 <translation id="7186367841673660872">این صفحه از <ph name="ORIGINAL_LANGUAGE" /> به <ph name="LANGUAGE_LANGUAGE" /> ترجمه شده است</translation>
@@ -2456,7 +2459,7 @@
 <translation id="7551484245293639699">بیمه سفر</translation>
 <translation id="755279583747225797">دوره آزمایش فعال است</translation>
 <translation id="7552846755917812628">نکته‌های زیر را امتحان کنید:</translation>
-<translation id="7554475479213504905">تازه‌سازی و نمایش درهرصورت</translation>
+<translation id="7554475479213504905">بار کردن مجدد و نمایش درهرصورت</translation>
 <translation id="7554791636758816595">برگهٔ جدید</translation>
 <translation id="7555777498260651025">نمایش تلویزیونی خانوادگی</translation>
 <translation id="7559278538486662777">اندازه این برنامه را نمی‌توان تغییر داد.</translation>
@@ -2651,7 +2654,7 @@
 <translation id="8075898834294118863">مدیریت تنظیمات سایت</translation>
 <translation id="8076492880354921740">برگه‌ها</translation>
 <translation id="8078141288243656252">در حالت چرخش نمی‌توان حاشیه‌نویسی کرد</translation>
-<translation id="8079031581361219619">سایت تازه‌سازی شود؟</translation>
+<translation id="8079031581361219619">سایت بار کردن مجدد شود؟</translation>
 <translation id="8081087320434522107">سدان</translation>
 <translation id="8086971161893892807">پیش‌نویس</translation>
 <translation id="8088680233425245692">مشاهده مقاله ناموفق بود.</translation>
@@ -2940,7 +2943,7 @@
 <translation id="8957210676456822347">مجوز پورتال محدود</translation>
 <translation id="8962950042226115166">سایت مشکوک</translation>
 <translation id="8963117664422609631">رفتن به تنظیمات سایت</translation>
-<translation id="8963213021028234748"><ph name="MARKUP_1" />پیشنهادات:<ph name="MARKUP_2" />مطمئن شوید اتصال داده دارید<ph name="MARKUP_3" />بعداً این صفحه وب را تازه‌سازی کنید<ph name="MARKUP_4" />آدرسی را که وارد کرده‌اید، بررسی کنید<ph name="MARKUP_5" /></translation>
+<translation id="8963213021028234748"><ph name="MARKUP_1" />پیشنهادات:<ph name="MARKUP_2" />مطمئن شوید اتصال داده دارید<ph name="MARKUP_3" />بعداً این صفحه وب را بار کردن مجدد کنید<ph name="MARKUP_4" />آدرسی را که وارد کرده‌اید، بررسی کنید<ph name="MARKUP_5" /></translation>
 <translation id="8968766641738584599">ذخیره کارت</translation>
 <translation id="8971063699422889582">گواهی سرور منقضی شده است.</translation>
 <translation id="8975012916872825179">شامل اطلاعاتی مانند شماره تلفن، نشانی ایمیل، و نشانی تحویل کالا می‌شود</translation>
@@ -3034,6 +3037,7 @@
 <translation id="9174623988242579721">خودروی سفارشی و با عملکرد بالا</translation>
 <translation id="9174917557437862841">‏دکمه جابجایی برگه، برای جابجایی به این برگه، Enter را فشار دهید</translation>
 <translation id="9179703756951298733">‏اطلاعات پرداخت‌ها و کارت اعتباری‌تان را در تنظیمات Chrome مدیریت کنید</translation>
+<translation id="9179907736442194268">اگر قیمت در هر سایتی کاهش پیدا کند، هشدار ایمیلی دریافت می‌کنید</translation>
 <translation id="9183302530794969518">‏سندنگار Google</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> از یک پروتکل پشتیبانی‌نشده استفاده می‌کند.</translation>
 <translation id="9187461866967718678">ورزش‌های سنگین</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index 335991a..db420af9 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Letter fold</translation>
 <translation id="138218114945450791">Light Blue</translation>
 <translation id="1382194467192730611">USB device na pinapayagan ng iyong administrator</translation>
+<translation id="1382378825779654399">Makakatanggap ka ng mga alerto sa email kung bababa ang presyo sa anumang site. Mase-save ang page na ito sa <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Hindi mo nakikita ang iyong kasalukuyan impormasyon? Makipag-ugnayan sa iyong bangko para ma-update ito.</translation>
 <translation id="1384725838384960382">Sheet para sa pag-authenticate ng kredensyal sa secure na pagbabayad</translation>
 <translation id="1386623374109090026">Mga Anotasyon</translation>
@@ -1520,6 +1521,7 @@
 <translation id="5018422839182700155">Hindi mabuksan ang page na ito</translation>
 <translation id="5019198164206649151">Hindi maganda ang katayuan ng backing store</translation>
 <translation id="5020776957610079374">Musika ng mundo</translation>
+<translation id="5021557570875267742">I-track ang mga presyo gamit ang Chrome</translation>
 <translation id="5023310440958281426">Suriin ang mga patakaran ng iyong administrator</translation>
 <translation id="5029568752722684782">I-clear ang kopya</translation>
 <translation id="5030338702439866405">Ibinigay Ni</translation>
@@ -2240,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Palaging i-translate ang <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Industriya ng entertainment</translation>
+<translation id="7003335073762455340">Tina-track mo ang produktong ito. Naka-save ang page na ito sa <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Gamitin ang Windows Hello para kumpirmahin nang mas mabilis ang mga card</translation>
 <translation id="7006930604109697472">Ipadala pa rin</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3034,6 +3037,7 @@
 <translation id="9174623988242579721">Mga custom at performance na sasakyan</translation>
 <translation id="9174917557437862841">Button na lumipat ng tab, pindutin ang Enter para lumipat sa tab na ito</translation>
 <translation id="9179703756951298733">Pamahalaan ang iyong mga pagbabayad at impormasyon ng credit card sa mga setting ng Chrome</translation>
+<translation id="9179907736442194268">Makatanggap ng mga alerto sa email kung bababa ang presyo sa anumang site</translation>
 <translation id="9183302530794969518">Google Docs</translation>
 <translation id="9183425211371246419">Gumagamit ng hindi sinusuportahang protocol ang <ph name="HOST_NAME" />.</translation>
 <translation id="9187461866967718678">Mga extreme sport</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb
index 9cff126e..768f0825 100644
--- a/components/strings/components_strings_fr-CA.xtb
+++ b/components/strings/components_strings_fr-CA.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Enregistrer quand même</translation>
 <translation id="2035400064145347639">Guides et carnets de voyages</translation>
 <translation id="2036983605131262583">Autre rouleau</translation>
+<translation id="2040463897538655645">Dispositif de stockage amovible</translation>
 <translation id="2040894699575719559">Lieu bloqué</translation>
 <translation id="2042213636306070719">Bac 7</translation>
 <translation id="204357726431741734">Connectez-vous pour utiliser les mots de passe enregistrés dans votre compte Google</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index f9f25ec..8c439a8 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Enregistrer quand même</translation>
 <translation id="2035400064145347639">Guides et carnets de voyages</translation>
 <translation id="2036983605131262583">Autre rouleau</translation>
+<translation id="2040463897538655645">Mémoire de stockage amovible</translation>
 <translation id="2040894699575719559">Position bloquée</translation>
 <translation id="2042213636306070719">Bac 7</translation>
 <translation id="204357726431741734">Connectez-vous pour utiliser les mots de passe enregistrés dans votre compte Google</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 7e049fb..64ebcd4 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -260,6 +260,7 @@
 <translation id="156703335097561114">ઍડ્રેસ, ઇન્ટરફેસ કન્ફિગ્યુરેશન અને કનેક્શન ક્વૉલિટી જેવી નેટવર્કની માહિતી</translation>
 <translation id="1567040042588613346">આ પૉલિસી હેતુ મુજબ કાર્ય કરી રહી છે પરંતુ સમાન મૂલ્ય બીજે ક્યાંક સેટ કરવામાં આવ્યું છે અને આ પૉલિસી તેની જગ્યા લે છે.</translation>
 <translation id="1569487616857761740">સમાપ્તિ તારીખ દાખલ કરો</translation>
+<translation id="1569694109004336106">Google Chrome પાસવર્ડ ભરવા માટે Windows Hello ચાલુ કરવાનો પ્રયાસ કરી રહ્યું છે.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">આ વેબપેજ બતાવતી વખતે કંઈક ખોટું થયું.</translation>
 <translation id="1586541204584340881">તમે કયા એક્સ્ટેંશન ઇન્સ્ટૉલ કર્યા છે</translation>
@@ -398,6 +399,7 @@
 <translation id="1958218078413065209">તમારો સૌથી વધુ સ્કોર <ph name="SCORE" /> છે.</translation>
 <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />તમે મુલાકાત લો તે કેટલાક પેજના URLs, સિસ્ટમ વિશેની સીમિત માહિતી અને પેજનું કેટલુંક કન્ટેન્ટ<ph name="END_WHITEPAPER_LINK" /> Googleને મોકલીને વેબ પર દરેક જણ માટે સુરક્ષા વધુ સારી બનાવવામાં સહાય કરો. <ph name="BEGIN_PRIVACY_PAGE_LINK" />પ્રાઇવસી પૉલિસી<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436"><ph name="DOMAIN" /> બુકમાર્ક</translation>
+<translation id="1971033026002113380">TouchID વડે પાસવર્ડની સુરક્ષા કરો</translation>
 <translation id="1973335181906896915">અનુક્રમાંકન ભૂલ</translation>
 <translation id="1974060860693918893">વિગતવાર</translation>
 <translation id="1975457531113383421">ઇનપુટ ટ્રે</translation>
@@ -725,6 +727,7 @@
 <translation id="2881276955470682203">કાર્ડ સાચવીએ?</translation>
 <translation id="2882949212241984732">ડબલ-ગેટ ફોલ્ડ</translation>
 <translation id="2893773853358652045">ચોથો રોલ</translation>
+<translation id="289834758818479772">જો તમે આ ડિવાઇસ અન્ય લોકો સાથે શેર કરો છો, તો જ્યારે પણ તમે કોઈ સાચવેલા પાસવર્ડનો ઉપયોગ કરો ત્યારે એ તમે જ છો તેની ચકાસણી કરવા માટે તમે TouchID ચાલુ કરી શકો છો</translation>
 <translation id="2900528713135656174">ઇવેન્ટ બનાવો</translation>
 <translation id="2903493209154104877">સરનામાંઓ</translation>
 <translation id="290376772003165898">પેજ <ph name="LANGUAGE" />માં નથી?</translation>
@@ -801,6 +804,8 @@
 <translation id="3108943290502734357">વચ્ચેની ટ્રે</translation>
 <translation id="3109728660330352905">તમને આ પેજને જોવાનો અધિકાર નથી.</translation>
 <translation id="3113284927548439113">ત્રીજી પાળી</translation>
+<translation id="3114040155724590991">Android System અપડેટ કરી રહ્યાં છીએ
+    તમારી ઍપ ચાલુ થવામાં સામાન્ય કરતાં વધુ સમય લાગી શકે છે.</translation>
 <translation id="3115363211799416195">{0,plural, =1{શું ગોપનીય ફાઇલ ડાઉનલોડ કરીએ?}one{શું ગોપનીય ફાઇલ ડાઉનલોડ કરીએ?}other{શું આ ગોપનીય ફાઇલો ડાઉનલોડ કરીએ?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> માટે જરૂરી છે કે તમે તમારા ડેટાનું બૅકઅપ લઈને આ <ph name="DEVICE_TYPE" /> પરત કરો.</translation>
 <translation id="3116158981186517402">લૅમિનેટ કરો</translation>
@@ -1255,6 +1260,7 @@
 <translation id="4306812610847412719">ક્લિપબોર્ડ</translation>
 <translation id="4308567447483056043">આ પૉલિસીને અવગણવામાં આવે છે કારણ કે વપરાશકર્તા સંકળાયેલા નથી. આ પૉલિસી લાગુ થાય તે માટે, એ જ સંસ્થા દ્વારા Chrome બ્રાઉઝર અને પ્રોફાઇલ ઍડમિન કન્સોલ મારફતે મેનેજ થવા આવશ્યક છે.</translation>
 <translation id="4310070645992025887">તમારા પ્રવાસ શોધો</translation>
+<translation id="4310496734563057511">જો તમે આ ડિવાઇસ અન્ય લોકો સાથે શેર કરો છો, તો જ્યારે પણ તમે કોઈ સાચવેલા પાસવર્ડનો ઉપયોગ કરો ત્યારે એ તમે જ છો તેની ચકાસણી કરવા માટે તમે Windows Hello ચાલુ કરી શકો છો</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">અવરોધિત કરો (ડિફૉલ્ટ)</translation>
 <translation id="4314815835985389558">સિંક મેનેજ કરો</translation>
@@ -1469,6 +1475,7 @@
 <translation id="4880827082731008257">શોધ ઇતિહાસ</translation>
 <translation id="4881695831933465202">ખોલો</translation>
 <translation id="4885256590493466218">ચેકઆઉટ કરતી વખતે <ph name="CARD_DETAIL" /> વડે ચુકવણી કરો</translation>
+<translation id="4887406273302438710">Windows Hello વડે પાસવર્ડની સુરક્ષા કરો</translation>
 <translation id="4888600795924685526">વિદેશી ભાષાનો અભ્યાસ</translation>
 <translation id="4889420713887366944">છુપી વિન્ડો ખોલો બટન, ખાનગી રીતે બ્રાઉઝ કરવા, નવી છુપી વિન્ડો ખોલવા માટે Enter દબાવો</translation>
 <translation id="4892518386797173871">પાછળ</translation>
@@ -1687,6 +1694,7 @@
 <translation id="5426179911063097041"><ph name="SITE" />તમને નોટિફિકેશનો મોકલવા માગે છે</translation>
 <translation id="5428105026674456456">સ્પેનિશ</translation>
 <translation id="5430298929874300616">બુકમાર્ક દૂર કરો</translation>
+<translation id="5434423669266814150">પાસવર્ડ ભરવા માટે TouchID ચાલુ કરો</translation>
 <translation id="5443468954631487277">ઉલટા ક્રમમાં ઉપર તરફ</translation>
 <translation id="5447765697759493033">આ સાઇટનો અનુવાદ થશે નહીં</translation>
 <translation id="5452270690849572955">આ <ph name="HOST_NAME" /> પેજ શોધી શકાતું નથી</translation>
@@ -2463,6 +2471,7 @@
 <translation id="7564049878696755256">તમે તમારા <ph name="ORG_NAME" /> એકાઉન્ટનો ઍક્સેસ ગુમાવી શકો છો અથવા તમને ઓળખ ચોરીનો અનુભવ થઈ શકે છે. Chrome તમને હમણાં જ તમારો પાસવર્ડ બદલવાની ભલામણ કરે છે.</translation>
 <translation id="7564680668369175887">સ્ટેશન વૅગન</translation>
 <translation id="7567204685887185387">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર કપટપૂર્વક રજૂ કરવામાં આવેલ હોઈ શકે છે. આ કોઈ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.</translation>
+<translation id="7568616151991626879">Google Chrome <ph name="APP_NAME" /> પર તમારો પાસવર્ડ ભરવાનો પ્રયાસ કરી રહ્યું છે.</translation>
 <translation id="7569490014721427265">ગોલ્ફ</translation>
 <translation id="7569761772822664555">શોધ એન્જિનને મેનેજ કરવા માટેનું બટન, તમારું ડિફૉલ્ટ શોધ એન્જિન અને સાઇટમાં શોધવાની સુવિધા મેનેજ કરવા માટે Enter કી દબાવો</translation>
 <translation id="7569952961197462199">Chrome માંથી ક્રેડિટ કાર્ડ દૂર કરીએ?</translation>
@@ -2493,6 +2502,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{કોઈ નહીં}=1{તમારા એકાઉન્ટમાં 1 પાસવર્ડ (<ph name="DOMAIN_LIST" /> માટે)}one{તમારા એકાઉન્ટમાં # પાસવર્ડ (<ph name="DOMAIN_LIST" /> માટે)}other{તમારા એકાઉન્ટમાં # પાસવર્ડ (<ph name="DOMAIN_LIST" /> માટે)}}</translation>
 <translation id="7638605456503525968">સીરિયલ પોર્ટ</translation>
 <translation id="7639968568612851608">ઘાટો ગ્રે</translation>
+<translation id="7646681339175747202">તમે હાલમાં જ ઉપયોગમાં લીધેલો પાસવર્ડ કોઈ ડેટા ઉલ્લંઘનમાં જોવા મળ્યો છે. Google Password Manager હમણાં જ તમારો પાસવર્ડ બદલવાનો સુઝાવ આપે છે.</translation>
 <translation id="7647206758853451655">પ્રિન્ટની ક્વૉલિટી</translation>
 <translation id="7648992873808071793">આ ડિવાઇસ પર ફાઇલો સાચવો</translation>
 <translation id="7653957176542370971">ચુકવણી માટેની હૅન્ડલર શીટ બંધ છે</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index 069ea34..e2217aa 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Presavijanje u obliku pisma</translation>
 <translation id="138218114945450791">Svijetloplava</translation>
 <translation id="1382194467192730611">USB uređaj koji je dopustio vaš administrator</translation>
+<translation id="1382378825779654399">Ako se cijena snizi na bilo kojoj web-lokaciji, dobit ćete upozorenja e-porukom. Ova će se stranica spremiti u mapu <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Ne vidite svoje trenutačne podatke? Obratite se svojoj banci da biste ih ažurirali.</translation>
 <translation id="1384725838384960382">List s autentifikacijom za vjerodajnicu sigurnog plaćanja</translation>
 <translation id="1386623374109090026">Napomene</translation>
@@ -421,6 +422,7 @@
 <translation id="2034971124472263449">Svejedno spremi</translation>
 <translation id="2035400064145347639">Turistički vodiči i putopisi</translation>
 <translation id="2036983605131262583">Alternativni kolut</translation>
+<translation id="2040463897538655645">Prijenosna pohrana</translation>
 <translation id="2040894699575719559">Lokacija je blokirana</translation>
 <translation id="2042213636306070719">Ladica 7</translation>
 <translation id="204357726431741734">Prijavite se kako biste upotrebljavali zaporke spremljene na Google računu</translation>
@@ -1518,6 +1520,7 @@
 <translation id="5018422839182700155">Stranica se ne može otvoriti</translation>
 <translation id="5019198164206649151">Sigurnosno pohranjivanje u neispravnom je stanju</translation>
 <translation id="5020776957610079374">Svjetska glazba</translation>
+<translation id="5021557570875267742">Praćenje cijena pomoću Chromea</translation>
 <translation id="5023310440958281426">Provjerite pravila svojeg administratora</translation>
 <translation id="5029568752722684782">Izbriši kopiju</translation>
 <translation id="5030338702439866405">Izdaje</translation>
@@ -2238,6 +2241,7 @@
 <translation id="6993898126790112050">6x9 (omotnica)</translation>
 <translation id="6996312675313362352">Uvijek prevodi <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Industrija zabave</translation>
+<translation id="7003335073762455340">Pratite ovaj proizvod. Ova je stranica spremljena u mapu <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Za brže potvrđivanje kartica upotrijebite značajku Windows Hello</translation>
 <translation id="7006930604109697472">Svejedno pošalji</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3034,6 +3038,7 @@
 <translation id="9174623988242579721">Prilagođena i posebna vozila</translation>
 <translation id="9174917557437862841">Gumb za promjenu kartice, pritisnite Enter za prebacivanje na tu karticu</translation>
 <translation id="9179703756951298733">Upravljanje podacima o plaćanjima i kreditnim karticama u postavkama Chromea</translation>
+<translation id="9179907736442194268">Dobivajte upozorenja e-porukom ako se cijena snizi na bilo kojoj web-lokaciji</translation>
 <translation id="9183302530794969518">Google dokumenti</translation>
 <translation id="9183425211371246419">Host <ph name="HOST_NAME" /> upotrebljava nepodržane protokole.</translation>
 <translation id="9187461866967718678">Ekstremni sportovi</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index c069a6e..8f6b16ff 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Mentés mindenképp</translation>
 <translation id="2035400064145347639">Útikönyvek és utazási katalógusok</translation>
 <translation id="2036983605131262583">Alternatív tekercs</translation>
+<translation id="2040463897538655645">Cserélhető tárhely</translation>
 <translation id="2040894699575719559">Helyadatok letiltva</translation>
 <translation id="2042213636306070719">7. tálca</translation>
 <translation id="204357726431741734">Jelentkezzen be a Google-fiókjába mentett jelszavak használatához</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb
index 07bb479..7cebbe0 100644
--- a/components/strings/components_strings_hy.xtb
+++ b/components/strings/components_strings_hy.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Պահել</translation>
 <translation id="2035400064145347639">Ճամփորդական ուղեցույցներ և նյութեր</translation>
 <translation id="2036983605131262583">Այլ գլանափաթեթ</translation>
+<translation id="2040463897538655645">Շարժական կրիչ</translation>
 <translation id="2040894699575719559">Տեղորոշումն արգելափակված է</translation>
 <translation id="2042213636306070719">Դարակ 7</translation>
 <translation id="204357726431741734">Մուտք գործեք՝ Google հաշվում պահված գաղտնաբառերն օգտագործելու համար</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb
index 42b80fd..3c0ad66 100644
--- a/components/strings/components_strings_is.xtb
+++ b/components/strings/components_strings_is.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Vista samt</translation>
 <translation id="2035400064145347639">Ferðahandbækur og -lýsingar</translation>
 <translation id="2036983605131262583">Önnur rúlla</translation>
+<translation id="2040463897538655645">Laus geymsla</translation>
 <translation id="2040894699575719559">Lokað á staðsetningu</translation>
 <translation id="2042213636306070719">Bakki 7</translation>
 <translation id="204357726431741734">Skráðu þig inn til að nota aðgangsorð sem eru vistuð á Google reikningnum þínum</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 220cbe3..9123fb41 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Salva comunque</translation>
 <translation id="2035400064145347639">Guide turistiche e letteratura di viaggio</translation>
 <translation id="2036983605131262583">Rullo alterno</translation>
+<translation id="2040463897538655645">Dispositivo di archiviazione rimovibile</translation>
 <translation id="2040894699575719559">Posizione bloccata</translation>
 <translation id="2042213636306070719">Vassoio 7</translation>
 <translation id="204357726431741734">Accedi per usare le password salvate nel tuo Account Google</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index d2ccbd9..252c489 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Сонда да сақтау</translation>
 <translation id="2035400064145347639">Саяхатшы анықтамалығы мен жолжазбалар</translation>
 <translation id="2036983605131262583">Басқа орам</translation>
+<translation id="2040463897538655645">Алынбалы жад</translation>
 <translation id="2040894699575719559">Орын бөгелген</translation>
 <translation id="2042213636306070719">7-науа</translation>
 <translation id="204357726431741734">Google аккаунтыңызда сақталған құпия сөздерді пайдалану үшін кіру</translation>
@@ -1034,7 +1035,7 @@
 <translation id="3712624925041724820">Лицензиялар аяқталды</translation>
 <translation id="3713662424819367124">Әтірлер мен иіссулар</translation>
 <translation id="3714633008798122362">веб-күнтізбе</translation>
-<translation id="3714780639079136834">Мобильдік деректерді немесе Wi-Fi желісін қосу</translation>
+<translation id="3714780639079136834">Мобильдік интернетті немесе Wi-Fi желісін қосу</translation>
 <translation id="3715597595485130451">Wi-Fi желісіне қосылу</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />Проксиді, брандмауэрді және DNS конфигурациясын тексеру<ph name="END_LINK" /></translation>
 <translation id="372429172604983730">Мұндай қате тудыратын қолданбаларға антивирустар, брандмауэрлер, вебсүзгілер және прокси-сервер бағдарламалық құралдары жатады.</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb
index 783e115..fe6f459 100644
--- a/components/strings/components_strings_km.xtb
+++ b/components/strings/components_strings_km.xtb
@@ -175,6 +175,7 @@
 <translation id="1380591466760231819">បត់ជា​សំបុត្រ</translation>
 <translation id="138218114945450791">ខៀវខ្ចី</translation>
 <translation id="1382194467192730611">អ្នក​គ្រប់គ្រង​របស់អ្នកបានអនុញ្ញាត​ឧបករណ៍ USB</translation>
+<translation id="1382378825779654399">អ្នក​នឹង​ទទួលបាន​ការជូនដំណឹង​តាមអ៊ីមែល ប្រសិនបើ​មាន​ការធ្លាក់ថ្លៃ​នៅលើ​គេហទំព័រ​ណាមួយ។ ទំព័រ​នេះ​នឹង​ត្រូវបាន​រក្សាទុក​ទៅ<ph name="LAST_BOOKMARKS_FOLDER" />។</translation>
 <translation id="1382912999714108023">មិនឃើញព័ត៌មាន​បច្ចុប្បន្នរបស់អ្នក​ឬ? សូមទាក់ទង​ធនាគាររបស់អ្នក ដើម្បីធ្វើបច្ចុប្បន្នភាពវា។</translation>
 <translation id="1384725838384960382">បញ្ជីផ្ទៀងផ្ទាត់ព័ត៌មានបង់ប្រាក់ដែលមានសុវត្ថិភាព</translation>
 <translation id="1386623374109090026">ចំណារ</translation>
@@ -1524,6 +1525,7 @@
 <translation id="5018422839182700155">មិនអាចបើកទំព័រនេះបានទេ</translation>
 <translation id="5019198164206649151">កន្លែងផ្ទុកមូលដ្ឋាននៅក្នុងស្ថានភាពមិនល្អ</translation>
 <translation id="5020776957610079374">តន្ត្រី​ពិភពលោក</translation>
+<translation id="5021557570875267742">តាមដាន​តម្លៃ​ដោយប្រើ Chrome</translation>
 <translation id="5023310440958281426">ពិនិត្យគោលការណ៍អ្នកគ្រប់គ្រងរបស់អ្នក</translation>
 <translation id="5029568752722684782">ជម្រះការថតចម្លង</translation>
 <translation id="5030338702439866405">ចេញដោយ</translation>
@@ -2244,6 +2246,7 @@
 <translation id="6993898126790112050">6x9 (ស្រោម​សំបុត្រ)</translation>
 <translation id="6996312675313362352">បកប្រែ <ph name="ORIGINAL_LANGUAGE" /> ជានិច្ច</translation>
 <translation id="6999969238895751684">ឧស្សាហកម្ម​កម្សាន្ត</translation>
+<translation id="7003335073762455340">អ្នក​កំពុងតាមដាន​ផលិតផល​នេះ។ ទំព័រ​នេះ​ត្រូវបាន​រក្សាទុក​នៅក្នុង<ph name="LAST_BOOKMARKS_FOLDER" />។</translation>
 <translation id="7004583254764674281">ប្រើ Windows Hello ដើម្បី​បញ្ជាក់​បណ្ណ​ឱ្យ​បាន​រហ័ស​ជាងមុន</translation>
 <translation id="7006930604109697472">មិនអីទេ ផ្ញើចុះ</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3040,6 +3043,7 @@
 <translation id="9174623988242579721">យានជំនិះ​ល្បឿនលឿន និង​កែច្នៃ</translation>
 <translation id="9174917557437862841">ចុច​ប៊ូតុង​ប្ដូរ រួចចុច "Enter" ដើម្បី​ប្ដូរ​ទៅ​ផ្ទាំងនេះ</translation>
 <translation id="9179703756951298733">គ្រប់គ្រងការបង់ប្រាក់ និងព័ត៌មានអំពី​បណ្ណឥណទានរបស់អ្នក​នៅក្នុងការកំណត់ Chrome</translation>
+<translation id="9179907736442194268">ទទួលបាន​ការជូនដំណឹងតាមអ៊ីមែល ប្រសិនបើ​មាន​ការធ្លាក់ថ្លៃ​នៅលើ​គេហទំព័រ​ណាមួយ</translation>
 <translation id="9183302530794969518">Google ឯកសារ</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> ប្រើប្រូតូកូលដែលមិនត្រូវបានគាំទ្រ</translation>
 <translation id="9187461866967718678">កីឡា​គ្រោះថ្នាក់​ខ្លាំង</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index a82527a..3876989 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Баары бир сакталсын</translation>
 <translation id="2035400064145347639">Туристтик гиддер жана саякатчылар</translation>
 <translation id="2036983605131262583">Кошумча барабан</translation>
+<translation id="2040463897538655645">Ташыма сактагыч</translation>
 <translation id="2040894699575719559">Жайгашкан жер бөгөттөлдү</translation>
 <translation id="2042213636306070719">7-түпкүч</translation>
 <translation id="204357726431741734">Google аккаунтуңузда сакталган сырсөздөрдү колдонуу үчүн аккаунтуңузга кириңиз</translation>
@@ -2441,7 +2442,7 @@
 <translation id="7521387064766892559">JavaScript</translation>
 <translation id="7521825010239864438">"<ph name="SECTION" />" бөлүмү жашырылды</translation>
 <translation id="7523408071729642236">Өндүрүш</translation>
-<translation id="7526934274050461096">Бул сайтка жалпы шартта туташып жатасыз</translation>
+<translation id="7526934274050461096">Бул сайтка туташуу кооптуу</translation>
 <translation id="7529884293139707752">Үйдө окуу</translation>
 <translation id="7535087603100972091">Маани</translation>
 <translation id="7537536606612762813">Милдеттүү</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index fd1007a..527ec52f 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Tik un tā saglabāt</translation>
 <translation id="2035400064145347639">Ceļojumu gidi un ceļojumu žurnāli</translation>
 <translation id="2036983605131262583">Alternatīvs rullis</translation>
+<translation id="2040463897538655645">Noņemama atmiņas ierīce</translation>
 <translation id="2040894699575719559">Atrašanās vieta ir bloķēta</translation>
 <translation id="2042213636306070719">7. paplāte</translation>
 <translation id="204357726431741734">Pierakstieties, lai izmantotu savā Google kontā saglabātās paroles.</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb
index dc2f4821..04f14ccb 100644
--- a/components/strings/components_strings_mk.xtb
+++ b/components/strings/components_strings_mk.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Превиткување писмо</translation>
 <translation id="138218114945450791">Светлосина</translation>
 <translation id="1382194467192730611">USB-уред дозволен од администраторот</translation>
+<translation id="1382378825779654399">Ќе добиете известувања по е-пошта ако цената се намали на кој било сајт. Страницава ќе биде зачувана во <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Ова не се вашите тековни податоци? Контактирајте со вашата банка за да ги ажурирате.</translation>
 <translation id="1384725838384960382">Лист за проверка на акредитиви за безбедно плаќање</translation>
 <translation id="1386623374109090026">Прибелешки</translation>
@@ -260,6 +261,7 @@
 <translation id="156703335097561114">Мрежните податоци, како што се адресите, конфигурацијата на интерфејсот и квалитетот на врската</translation>
 <translation id="1567040042588613346">Правилово работи како што е предвидено, но истата вредност е поставена некаде на друго место и е заменета од правилово.</translation>
 <translation id="1569487616857761740">Внесете датум на истекување</translation>
+<translation id="1569694109004336106">Google Chrome се обидува да вклучи Windows Hello за пополнување лозинки.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Нешто тргна наопаку при прикажувањето на оваа веб-страница.</translation>
 <translation id="1586541204584340881">кои екстензии сте ги инсталирале</translation>
@@ -398,6 +400,7 @@
 <translation id="1958218078413065209">Вашиот најдобар резултат е <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Помогнете да се подобри безбедноста на интернет за сите преку испраќање <ph name="BEGIN_WHITEPAPER_LINK" />URL-адреси од некои страници што ги посетувате, ограничени податоци за системот и некои содржини од страниците<ph name="END_WHITEPAPER_LINK" /> до Google. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Политика за приватност<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436">Обележувачи на <ph name="DOMAIN" /></translation>
+<translation id="1971033026002113380">Заштитете ги лозинките со Touch ID</translation>
 <translation id="1973335181906896915">Грешка во серијализацијата</translation>
 <translation id="1974060860693918893">Напредни</translation>
 <translation id="1975457531113383421">Влезна фиока</translation>
@@ -725,6 +728,7 @@
 <translation id="2881276955470682203">Сакате ли да ја зачувате картичката?</translation>
 <translation id="2882949212241984732">Двојно превиткување како брошура</translation>
 <translation id="2893773853358652045">Четврта ролна</translation>
+<translation id="289834758818479772">Ако го споделувате овој уред со други, може да вклучите Touch ID за да потврдувате дека сте вие секогаш кога користите зачувана лозинка</translation>
 <translation id="2900528713135656174">Создаjте настан</translation>
 <translation id="2903493209154104877">Адреси</translation>
 <translation id="290376772003165898">Страницата не е на <ph name="LANGUAGE" />?</translation>
@@ -801,6 +805,8 @@
 <translation id="3108943290502734357">Средна фиока</translation>
 <translation id="3109728660330352905">Немате авторизација да ја видите страницата.</translation>
 <translation id="3113284927548439113">Трета смена</translation>
+<translation id="3114040155724590991">Се ажурира системот на Android
+    Стартувањето на апликацијата може да трае подолго од вообичаено.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Да се преземе доверлива датотека?}one{Да се преземат доверливи датотеки?}other{Да се преземат доверливи датотеки?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> бара да направите бекап на вашите податоци и да го вратите овој <ph name="DEVICE_TYPE" />.</translation>
 <translation id="3116158981186517402">Пластифицирање</translation>
@@ -1255,6 +1261,7 @@
 <translation id="4306812610847412719">привремена меморија</translation>
 <translation id="4308567447483056043">Правилово се игнорира бидејќи корисникот е самостоен. За да се примени правилово, истата организација мора да управува со прелистувачот и профилот на Chrome преку администраторска конзола.</translation>
 <translation id="4310070645992025887">Пребарајте ги вашите „Патувања“</translation>
+<translation id="4310496734563057511">Ако го споделувате овој уред со други, може да вклучите Windows Hello за да потврдувате дека сте вие секогаш кога користите зачувана лозинка</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Блокирај (стандардно)</translation>
 <translation id="4314815835985389558">Управувајте со синхронизацијата</translation>
@@ -1469,6 +1476,7 @@
 <translation id="4880827082731008257">Историја на пребарување</translation>
 <translation id="4881695831933465202">Отвори</translation>
 <translation id="4885256590493466218">Платете со <ph name="CARD_DETAIL" /> при наплатата</translation>
+<translation id="4887406273302438710">Заштитете ги лозинките со Windows Hello</translation>
 <translation id="4888600795924685526">Учење странски јазици</translation>
 <translation id="4889420713887366944">Копче „Отвори прозорец Инкогнито“, притиснете Enter за да отворите нов прозорец „Инкогнито“ и да прелистувате приватно</translation>
 <translation id="4892518386797173871">Заден дел</translation>
@@ -1520,6 +1528,7 @@
 <translation id="5018422839182700155">Не може да се отвори страницава</translation>
 <translation id="5019198164206649151">Продавницата за резервни копии е во лоша состојба</translation>
 <translation id="5020776957610079374">Светска музика</translation>
+<translation id="5021557570875267742">Следете ги цените со Chrome</translation>
 <translation id="5023310440958281426">Проверете ги правилата на вашиот администратор</translation>
 <translation id="5029568752722684782">Исчисти копија</translation>
 <translation id="5030338702439866405">Издадено од</translation>
@@ -1687,6 +1696,7 @@
 <translation id="5426179911063097041"><ph name="SITE" /> сака да ви испраќа известувања</translation>
 <translation id="5428105026674456456">шпански</translation>
 <translation id="5430298929874300616">Отстрани обележувач</translation>
+<translation id="5434423669266814150">вклучи Touch ID за пополнување лозинки</translation>
 <translation id="5443468954631487277">Обратен редослед со лицето нагоре</translation>
 <translation id="5447765697759493033">Сајтов нема да се преведе</translation>
 <translation id="5452270690849572955">Оваа страница на <ph name="HOST_NAME" /> не може да се најде</translation>
@@ -2240,6 +2250,7 @@
 <translation id="6993898126790112050">6x9 (плик)</translation>
 <translation id="6996312675313362352">Секогаш преведувај <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Забавна индустрија</translation>
+<translation id="7003335073762455340">Го следите производов. Страницава е зачувана во <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Користете Windows Hello за побрзо потврдување на картичките</translation>
 <translation id="7006930604109697472">Сепак испрати</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -2463,6 +2474,7 @@
 <translation id="7564049878696755256">Може да го изгубите пристапот до вашата сметка на <ph name="ORG_NAME" /> или да ви го украдат идентитетот. Chrome препорачува да ја смените лозинката веднаш.</translation>
 <translation id="7564680668369175887">Караван автомобили</translation>
 <translation id="7567204685887185387">Серверот не може да докаже дека е <ph name="DOMAIN" />; можеби неговиот безбедносен сертификат е издаден лажно. Тоа може да се должи на погрешна конфигурација или на напаѓач што го пресретнува поврзувањето.</translation>
+<translation id="7568616151991626879">Google Chrome се обидува да ја пополни вашата лозинка на <ph name="APP_NAME" />.</translation>
 <translation id="7569490014721427265">Голф</translation>
 <translation id="7569761772822664555">Управувајте со копчето за пребарувачи, притиснете го копчето Enter за да управувате со стандардниот пребарувач и пребарувањето сајтови</translation>
 <translation id="7569952961197462199">Отстрани ја кредитната картичка од Chrome?</translation>
@@ -2493,6 +2505,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Ниедна}=1{1 лозинка во вашата сметка (за <ph name="DOMAIN_LIST" />)}one{# лозинка во вашата сметка (за <ph name="DOMAIN_LIST" />)}other{# лозинки во вашата сметка (за <ph name="DOMAIN_LIST" />)}}</translation>
 <translation id="7638605456503525968">Сериски порти</translation>
 <translation id="7639968568612851608">Темносива</translation>
+<translation id="7646681339175747202">Лозинката која штотуку ја употребивте е откриена при упад во податоци. Google Password Manager ви препорачува да ја промените лозинката веднаш.</translation>
 <translation id="7647206758853451655">Квалитет на печатењето</translation>
 <translation id="7648992873808071793">Складирај датотеки на уредов</translation>
 <translation id="7653957176542370971">Листот на ракувачот со плаќања е затворен</translation>
@@ -3034,6 +3047,7 @@
 <translation id="9174623988242579721">Приспособени возила и возила за изведба</translation>
 <translation id="9174917557437862841">Копче за префрлање помеѓу картички, притиснете Enter за да се префрлите во картичкава</translation>
 <translation id="9179703756951298733">Управувајте со плаќањата и податоците за кредитните картички во поставките за Chrome</translation>
+<translation id="9179907736442194268">Добивајте предупредувања по е-пошта ако цената се намали на кој било сајт</translation>
 <translation id="9183302530794969518">Документи на Google</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> користи неподдржан протокол.</translation>
 <translation id="9187461866967718678">Екстремни спортови</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb
index 2b774ec6..5339844 100644
--- a/components/strings/components_strings_mn.xtb
+++ b/components/strings/components_strings_mn.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Захидлын нугалаа</translation>
 <translation id="138218114945450791">Бүдэг цэнхэр</translation>
 <translation id="1382194467192730611">Таны админы зөвшөөрсөн USB төхөөрөмж</translation>
+<translation id="1382378825779654399">Аль нэг сайт дээр үнэ буурсан тохиолдолд та имэйлээр илгээх сэрэмжлүүлэг авна. Энэ хуудсыг <ph name="LAST_BOOKMARKS_FOLDER" />-д хадгална.</translation>
 <translation id="1382912999714108023">Одоогийн мэдээллээ харахгүй байна уу? Үүнийг шинэчлэхийн тулд банктайгаа холбогдоно уу.</translation>
 <translation id="1384725838384960382">Аюулгүй төлбөрийн мандат үнэмлэхийг баталгаажуулах хүснэгт</translation>
 <translation id="1386623374109090026">Тэмдэглэгээ</translation>
@@ -260,6 +261,7 @@
 <translation id="156703335097561114">Хаяг, харагдах байдлын тохиргоо, холболтын чанар зэрэг сүлжээний мэдээлэл</translation>
 <translation id="1567040042588613346">Энэ бодлого нь хэвийн ажиллаж байгаа хэдий ч ижил утгыг өөр газар тохируулсан бөгөөд энэ бодлогоор хүчингүй болгосон байна.</translation>
 <translation id="1569487616857761740">Дуусах огноог оруулна уу</translation>
+<translation id="1569694109004336106">Google Chrome нууц үгийг бөглөхөд Windows Hello-г асаахаар оролдож байна.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Энэхүү веб хуудсыг харуулахад ямар нэгэн алдаа гарлаа.</translation>
 <translation id="1586541204584340881">Таны ямар өргөтгөл суулгасан болох</translation>
@@ -398,6 +400,7 @@
 <translation id="1958218078413065209">Таны хамгийн өндөр оноо <ph name="SCORE" /> байна.</translation>
 <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />Зарим зочилдог хуудасныхаа URL, системийн хязгаарлагдмал мэдээлэл болон зарим хуудасны контент<ph name="END_WHITEPAPER_LINK" />-ыг Google-д илгээж, хүн бүрд вебийн аюулгүй байдлыг сайжруулахад тусална уу. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Нууцлалын бодлого<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436"><ph name="DOMAIN" /> Хавчуургууд</translation>
+<translation id="1971033026002113380">TouchID-н тусламжтай нууц үгнүүдээ хамгаалаарай</translation>
 <translation id="1973335181906896915">Цувралын алдаа</translation>
 <translation id="1974060860693918893">Боловсронгуй</translation>
 <translation id="1975457531113383421">Орох цаасны тавиур</translation>
@@ -725,6 +728,7 @@
 <translation id="2881276955470682203">Картыг хадгалах уу?</translation>
 <translation id="2882949212241984732">Давхар хаалган нугалаа</translation>
 <translation id="2893773853358652045">Дөрөв дэх хуйлмал</translation>
+<translation id="289834758818479772">Хэрэв та энэ төхөөрөмжийг бусадтай хуваалцдаг бол хадгалсан нууц үгээ ашиглах бүрдээ өөрийгөө мөн болохыг баталгаажуулахын тулд TouchID-г асаах боломжтой</translation>
 <translation id="2900528713135656174">Арга хэмжээ үүсгэх</translation>
 <translation id="2903493209154104877">Хаягууд</translation>
 <translation id="290376772003165898">Хуудас <ph name="LANGUAGE" /> хэл дээр биш байна уу?</translation>
@@ -801,6 +805,8 @@
 <translation id="3108943290502734357">Дунд талын тавиур</translation>
 <translation id="3109728660330352905">Taнд энэ хуудсыг харах зөвшөөрөл байхгүй байна.</translation>
 <translation id="3113284927548439113">Гурав дахь ээлж</translation>
+<translation id="3114040155724590991">Android системийг шинэчилж байна
+    Аппаа эхлүүлэхэд ердийнхөөс удаж магадгүй.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Нууцлалтай файл татах уу?}other{Нууцлалтай файлууд татах уу?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> танаас өгөгдлөө хуулбарлаж, энэ <ph name="DEVICE_TYPE" />-г буцаахыг шаардаж байна.</translation>
 <translation id="3116158981186517402">Ламинатордах</translation>
@@ -1256,6 +1262,7 @@
 <translation id="4306812610847412719">түр санах ой</translation>
 <translation id="4308567447483056043">Хэрэглэгч харьяалалгүй тул энэ бодлогыг үл хэрэгссэн. Энэ бодлогыг хэрэгжүүлэхийн тулд Chrome хөтөч болон профайлыг ижил байгууллагын Админ консолоор дамжуулан удирдах ёстой.</translation>
 <translation id="4310070645992025887">Аяллаа хайх</translation>
+<translation id="4310496734563057511">Хэрэв та энэ төхөөрөмжийг бусадтай хуваалцдаг бол хадгалсан нууц үгээ ашиглах бүрдээ өөрийгөө мөн болохыг баталгаажуулахын тулд Windows Hello-г асаах боломжтой</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Блоклох (өгөгдмөл)</translation>
 <translation id="4314815835985389558">Синк хийхийг удирдах</translation>
@@ -1470,6 +1477,7 @@
 <translation id="4880827082731008257">Түүхийг хайх</translation>
 <translation id="4881695831933465202">Нээх</translation>
 <translation id="4885256590493466218">Тооцоо хийхдээ <ph name="CARD_DETAIL" />-р төлөөрэй</translation>
+<translation id="4887406273302438710">Windows Hello-н тусламжтай нууц үгнүүдээ хамгаалаарай</translation>
 <translation id="4888600795924685526">Гадаад хэлний сургалт</translation>
 <translation id="4889420713887366944">Нууцлалтай цонхыг нээх товч, нууцлалтайгаар үзэхдээ Нууцлалтай цонх шинээр нээхийн тулд Enter дарна уу</translation>
 <translation id="4892518386797173871">Ар талын</translation>
@@ -1521,6 +1529,7 @@
 <translation id="5018422839182700155">Энэ хуудсыг нээх боломжгүй байна</translation>
 <translation id="5019198164206649151">Муу нөхцөл байдал үүссэн үед хадгалалт хийх</translation>
 <translation id="5020776957610079374">Дэлхийн хөгжим</translation>
+<translation id="5021557570875267742">Chrome-р үнэ хянах</translation>
 <translation id="5023310440958281426">Админимтраторын журмыг шалгах</translation>
 <translation id="5029568752722684782">Хуулбарыг арилгах</translation>
 <translation id="5030338702439866405">Гаргасан</translation>
@@ -1688,6 +1697,7 @@
 <translation id="5426179911063097041"><ph name="SITE" /> танд мэдэгдэл илгээх хүсэлтэй байна</translation>
 <translation id="5428105026674456456">Испани</translation>
 <translation id="5430298929874300616">Хавчуургыг устга</translation>
+<translation id="5434423669266814150">нууц үг бөглөхөд TouchID-г асаана уу</translation>
 <translation id="5443468954631487277">Нүүрээр нь дээш харуулж, хуудасны урвуу дарааллаар</translation>
 <translation id="5447765697759493033">Энэ сайтыг орчуулахгүй</translation>
 <translation id="5452270690849572955">Энэ <ph name="HOST_NAME" /> хуудас олдсонгүй</translation>
@@ -2240,6 +2250,7 @@
 <translation id="6993898126790112050">6x9 (Дугтуй)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />-г үргэлж орчуулах</translation>
 <translation id="6999969238895751684">Энтертэйнмент салбар</translation>
+<translation id="7003335073762455340">Та энэ бүтээгдэхүүнийг хянаж байна. Энэ хуудсыг <ph name="LAST_BOOKMARKS_FOLDER" />-д хадгалсан.</translation>
 <translation id="7004583254764674281">Картуудыг илүү хурдан баталгаажуулахын тулд Windows Hello-г ашиглах</translation>
 <translation id="7006930604109697472">Ямар ч байсан илгээх</translation>
 <translation id="7012363358306927923">Хятадын UnionPay</translation>
@@ -2463,6 +2474,7 @@
 <translation id="7564049878696755256">Та <ph name="ORG_NAME" /> бүртгэлдээ хандах эрх эсвэл нууц үгээ бусдад алдаж болзошгүй. Chrome-с таныг нууц үгээ өөрчлөхийг зөвлөж байна.</translation>
 <translation id="7564680668369175887">Тэвштэй суудлын машин</translation>
 <translation id="7567204685887185387">Энэ сервер нь <ph name="DOMAIN" />-аа баталж чадсангүй;  хамгаалалтын сертификат хууль бусаар боловсруулагдсан байж болзошгүй. Энэ нь тохиргоо буруу хийгдсэнээс эсвэл халдагч таны холболтон саад учруулж байж болох юм.</translation>
+<translation id="7568616151991626879">Google Chrome <ph name="APP_NAME" /> дээр таны нууц үгийг бөглөхөөр оролдож байна.</translation>
 <translation id="7569490014721427265">Гольф</translation>
 <translation id="7569761772822664555">Хайлтын системийг удирдах товчлуур, өгөгдмөл хайлтын систем болон сайтын хайлтаа удирдахын тулд Enter дээр дарна уу</translation>
 <translation id="7569952961197462199">Chrome-оос зээлийн карт устгах уу?</translation>
@@ -2493,6 +2505,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Байхгүй}=1{Таны бүртгэлд 1 нууц үг байна (<ph name="DOMAIN_LIST" />-д зориулсан)}other{Таны бүртгэлд # нууц үг байна (<ph name="DOMAIN_LIST" />-д зориулсан)}}</translation>
 <translation id="7638605456503525968">Цуваа порт</translation>
 <translation id="7639968568612851608">Хар саарал</translation>
+<translation id="7646681339175747202">Таны дөнгөж сая ашигласан нууц үгийг өгөгдлийн зөрчлөөс оллоо. Google Password Manager нууц үгээ одоо өөрчлөхийг зөвлөж байна.</translation>
 <translation id="7647206758853451655">Хэвлэлийн чанар</translation>
 <translation id="7648992873808071793">Энэхүү төхөөрөмж дээр файлуудыг хадгалах</translation>
 <translation id="7653957176542370971">Төлбөр хариуцагчийн хүснэгт хаалттай байна</translation>
@@ -3034,6 +3047,7 @@
 <translation id="9174623988242579721">Захиалгат, өндөр хүчин чадалтай тээврийн хэрэгсэл</translation>
 <translation id="9174917557437862841">Таб сэлгэх товчлуур, энэ таб руу сэлгэхийн тулд Enter дээр дарна уу</translation>
 <translation id="9179703756951298733">Chrome-н тохиргоон дээрээс төлбөр, зээлийн картын мэдээллээ удирдах</translation>
+<translation id="9179907736442194268">Аль нэг сайт дээр үнэ буурсан тохиолдолд имэйлээр илгээх сэрэмжлүүлэг аваарай</translation>
 <translation id="9183302530794969518">Google Докс</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> нь дэмжигдээгүй протоколыг ашигладаг.</translation>
 <translation id="9187461866967718678">Экстрим спорт</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index ffc4ebaf..bb5b997b 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Simpan juga</translation>
 <translation id="2035400064145347639">Panduan perjalanan &amp; kisah perjalanan</translation>
 <translation id="2036983605131262583">Gulungan Alternatif</translation>
+<translation id="2040463897538655645">Storan boleh tanggal</translation>
 <translation id="2040894699575719559">Lokasi disekat</translation>
 <translation id="2042213636306070719">Dulang 7</translation>
 <translation id="204357726431741734">Log masuk untuk menggunakan kata laluan yang disimpan dalam Akaun Google anda</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index 1110075..5bbb3b7 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">စာပုံစံ ခေါက်ရန်</translation>
 <translation id="138218114945450791">အပြာနု</translation>
 <translation id="1382194467192730611">သင့်စီမံခန့်ခွဲသူက ခွင့်ပြုထားသော USB ကိရိယာ</translation>
+<translation id="1382378825779654399">ဝဘ်ဆိုက်တစ်ခုခုတွင် ဈေးကျသွားပါက အီးမေးလ် သတိပေးချက်ရရှိမည်။ ဤစာမျက်နှာကို <ph name="LAST_BOOKMARKS_FOLDER" /> တွင် သိမ်းပါမည်။</translation>
 <translation id="1382912999714108023">လက်ရှိအချက်အလက်ကို မတွေ့ပါက အချက်အလက်သစ်ထည့်ရန် သင့်ဘဏ်ကိုဆက်သွယ်ပါ။</translation>
 <translation id="1384725838384960382">လုံခြုံသောပေးချေမှု အထောက်အထား စိစစ်ခြင်းစာရွက်</translation>
 <translation id="1386623374109090026">မှတ်ချက်များ</translation>
@@ -1521,6 +1522,7 @@
 <translation id="5018422839182700155">ဤစာမျက်နှာကို ဖွင့်မရပါ</translation>
 <translation id="5019198164206649151">နောက်ခံ စတိုး အခြေအနေ ဆိုးနေ</translation>
 <translation id="5020776957610079374">ကမ္ဘာ့ တေးဂီတ</translation>
+<translation id="5021557570875267742">Chrome ဖြင့် ဈေးနှုန်းစောင့်ကြည့်ခြင်း</translation>
 <translation id="5023310440958281426">သင့် စီမံအုပ်ချုပ်သူ၏ မူဝါဒများကို စစ်ဆေးကြည့်ရန်</translation>
 <translation id="5029568752722684782">ကြည်လင်ပြတ်သား မိတ္ထူ</translation>
 <translation id="5030338702439866405">ထုတ်ပေးခဲ့သူ</translation>
@@ -2240,6 +2242,7 @@
 <translation id="6993898126790112050">၆x၉ (စာအိတ်)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />ဘာသာကို အမြဲတမ်း ဘာသာပြန်ရန်</translation>
 <translation id="6999969238895751684">ဖျော်ဖြေရေးလုပ်ငန်း</translation>
+<translation id="7003335073762455340">ဤထုန်ကုန်ကို စောင့်ကြည့်နေပါသည်။ ဤစာမျက်နှာကို <ph name="LAST_BOOKMARKS_FOLDER" /> တွင် သိမ်းသည်။</translation>
 <translation id="7004583254764674281">ကတ်များကို ပိုမိုမြန်ဆန်စွာ အတည်ပြုနိုင်ရန် Windows Hello ကို အသုံးပြုပါ</translation>
 <translation id="7006930604109697472">မည်သို့ပင်ဖြစ်စေ ပို့ရန်</translation>
 <translation id="7012363358306927923">တရုတ် UnionPay</translation>
@@ -3036,6 +3039,7 @@
 <translation id="9174623988242579721">စိတ်ကြိုက်နှင့် စွမ်းဆောင်ရည် ယာဉ်များ</translation>
 <translation id="9174917557437862841">ပြောင်းရန်ခလုတ်ကို တို့ပါ၊ ဤတဘ်သို့ ပြောင်းရန် Enter ကို နှိပ်ပါ</translation>
 <translation id="9179703756951298733">သင်၏ ငွေပေးချေမှုများနှင့် ခရက်ဒစ်ကတ်အချက်အလက်ကို Chrome ဆက်တင်များတွင် စီမံပါ</translation>
+<translation id="9179907736442194268">ဝဘ်ဆိုက်တစ်ခုခုတွင် ဈေးကျသွားပါက သတိပေးချက်များ ရယူနိုင်သည်</translation>
 <translation id="9183302530794969518">Google Docs</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> သည်ထောက်ပံ့မှုမရှိသည့် ပရိုတိုကောကို အသုံးပြုထားသည်။</translation>
 <translation id="9187461866967718678">ပြင်းထန်သော အားကစား</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index 8ed011c..17cfbea7 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">जे भए पनि सेभ गर्नुहोस्</translation>
 <translation id="2035400064145347639">यात्रा मार्गदर्शक तथा नियात्राहरू</translation>
 <translation id="2036983605131262583">वैकल्पिक रोल</translation>
+<translation id="2040463897538655645">हटाउन मिल्ने भण्डारण</translation>
 <translation id="2040894699575719559">लोकेसन हेर्न रोक लगाइएको छ</translation>
 <translation id="2042213636306070719">ट्रे ७</translation>
 <translation id="204357726431741734">आफ्नो Google खातामा सुरक्षित गरिएका पासवर्डहरू प्रयोग गर्न साइन इन गर्नुहोस्</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 202d17909..9add2e7 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Wikkelvouw</translation>
 <translation id="138218114945450791">Lichtblauw</translation>
 <translation id="1382194467192730611">USB-apparaat toegestaan door je beheerder</translation>
+<translation id="1382378825779654399">Je krijgt e-mailmeldingen bij een prijsdaling op een site. Deze pagina wordt opgeslagen in <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Zijn je gegevens niet actueel? Neem contact op met je bank om ze te updaten.</translation>
 <translation id="1384725838384960382">Blad voor beveiligde verificatie van betalingsgegevens</translation>
 <translation id="1386623374109090026">Annotaties</translation>
@@ -260,6 +261,7 @@
 <translation id="156703335097561114">Netwerkinformatie zoals adressen, interfaceconfiguratie en verbindingskwaliteit</translation>
 <translation id="1567040042588613346">Dit beleid werkt zoals bedoeld, maar ergens anders is dezelfde waarde ingesteld die wordt vervangen door dit beleid.</translation>
 <translation id="1569487616857761740">Vervaldatum invoeren</translation>
+<translation id="1569694109004336106">Google Chrome probeert Windows Hello aan te zetten voor het invullen van wachtwoorden.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Er is iets misgegaan met het bekijken van deze webpagina.</translation>
 <translation id="1586541204584340881">Welke extensies je hebt geïnstalleerd</translation>
@@ -398,6 +400,7 @@
 <translation id="1958218078413065209">Je hoogste score is <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Help de beveiliging op internet te verbeteren voor iedereen door <ph name="BEGIN_WHITEPAPER_LINK" />URL's van sommige pagina's die je bezoekt, beperkte systeemgegevens en bepaalde paginacontent<ph name="END_WHITEPAPER_LINK" /> naar Google te sturen. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Privacybeleid<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436">Bookmarks voor <ph name="DOMAIN" /></translation>
+<translation id="1971033026002113380">Wachtwoorden beveiligen met Touch ID</translation>
 <translation id="1973335181906896915">Serialisatiefout</translation>
 <translation id="1974060860693918893">Geavanceerd</translation>
 <translation id="1975457531113383421">Invoerlade</translation>
@@ -725,6 +728,7 @@
 <translation id="2881276955470682203">Pas opslaan?</translation>
 <translation id="2882949212241984732">4-luik gesloten luikvouw</translation>
 <translation id="2893773853358652045">4e rol</translation>
+<translation id="289834758818479772">Als je dit apparaat met anderen deelt, kun je Touch ID aanzetten om te bevestigen dat jij het bent wanneer je een opgeslagen wachtwoord gebruikt.</translation>
 <translation id="2900528713135656174">Afspraak maken</translation>
 <translation id="2903493209154104877">Adressen</translation>
 <translation id="290376772003165898">Is deze pagina niet in het <ph name="LANGUAGE" />?</translation>
@@ -801,6 +805,8 @@
 <translation id="3108943290502734357">Middelste lade</translation>
 <translation id="3109728660330352905">Je hebt geen toestemming om deze pagina te bekijken.</translation>
 <translation id="3113284927548439113">Derde dienst</translation>
+<translation id="3114040155724590991">Android-systeem updaten
+Het kan langer dan normaal duren voordat je app wordt gestart.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Vertrouwelijk bestand downloaden?}other{Vertrouwelijke bestanden downloaden?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> vereist dat je een back-up van je gegevens maakt en deze <ph name="DEVICE_TYPE" /> terugstuurt.</translation>
 <translation id="3116158981186517402">Lamineren</translation>
@@ -1250,6 +1256,7 @@
 <translation id="4306812610847412719">klembord</translation>
 <translation id="4308567447483056043">Dit beleid wordt genegeerd omdat de gebruiker niet gelieerd is. Dit beleid kan alleen worden toegepast als de Chrome-browser en het Chrome-profiel door dezelfde organisatie worden beheerd via de Beheerdersconsole.</translation>
 <translation id="4310070645992025887">Je Trajecten doorzoeken</translation>
+<translation id="4310496734563057511">Als je dit apparaat met anderen deelt, kun je Windows Hello aanzetten om te bevestigen dat jij het bent wanneer je een opgeslagen wachtwoord gebruikt</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Blokkeren (standaard)</translation>
 <translation id="4314815835985389558">Synchronisatie beheren</translation>
@@ -1464,6 +1471,7 @@
 <translation id="4880827082731008257">Geschiedenis doorzoeken</translation>
 <translation id="4881695831933465202">Openen</translation>
 <translation id="4885256590493466218">Bij het afrekenen betalen met <ph name="CARD_DETAIL" /></translation>
+<translation id="4887406273302438710">Wachtwoorden beveiligen met Windows Hello</translation>
 <translation id="4888600795924685526">Onderwijs voor vreemde talen</translation>
 <translation id="4889420713887366944">Knop 'Incognitovenster openen'. Druk op 'Enter' om een nieuw incognitovenster in Chrome te openen om privé te browsen.</translation>
 <translation id="4892518386797173871">Achterzijde</translation>
@@ -1515,6 +1523,7 @@
 <translation id="5018422839182700155">Kan deze pagina niet openen</translation>
 <translation id="5019198164206649151">Backend-opslag in slechte staat</translation>
 <translation id="5020776957610079374">Wereldmuziek</translation>
+<translation id="5021557570875267742">Prijzen volgen met Chrome</translation>
 <translation id="5023310440958281426">Neem het beleid van je beheerder door</translation>
 <translation id="5029568752722684782">Kopie wissen</translation>
 <translation id="5030338702439866405">Verleend door</translation>
@@ -1682,6 +1691,7 @@
 <translation id="5426179911063097041"><ph name="SITE" /> wil meldingen sturen</translation>
 <translation id="5428105026674456456">Spaans</translation>
 <translation id="5430298929874300616">Bookmark verwijderen</translation>
+<translation id="5434423669266814150">Touch ID aan te zetten voor het invullen van wachtwoorden</translation>
 <translation id="5443468954631487277">Omgekeerde volgorde met de bedrukte zijde omhoog</translation>
 <translation id="5447765697759493033">Deze site wordt niet vertaald</translation>
 <translation id="5452270690849572955">Deze pagina op <ph name="HOST_NAME" /> kan niet worden gevonden</translation>
@@ -2234,6 +2244,7 @@
 <translation id="6993898126790112050">6x9 (envelop)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> altijd vertalen</translation>
 <translation id="6999969238895751684">Entertainmentindustrie</translation>
+<translation id="7003335073762455340">Je volgt dit product. Deze pagina is opgeslagen in <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Gebruik Windows Hello om kaarten sneller te bevestigen</translation>
 <translation id="7006930604109697472">Toch sturen</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -2457,6 +2468,7 @@
 <translation id="7564049878696755256">Je kunt de toegang tot je account van <ph name="ORG_NAME" /> kwijtraken of slachtoffer worden van identiteitsdiefstal. Chrome raadt je aan je wachtwoord nu te wijzigen.</translation>
 <translation id="7564680668369175887">Stationcars</translation>
 <translation id="7567204685887185387">De server kan niet bewijzen dat dit <ph name="DOMAIN" /> is. Het beveiligingscertificaat van de server is mogelijk frauduleus verstrekt. Dit kan worden veroorzaakt door een verkeerde configuratie of een aanvaller die je verbinding onderschept.</translation>
+<translation id="7568616151991626879">Google Chrome probeert je wachtwoord in te vullen in <ph name="APP_NAME" />.</translation>
 <translation id="7569490014721427265">Golf</translation>
 <translation id="7569761772822664555">De knop Zoekmachines beheren, druk op Enter om je standaard zoekmachine en Site Search te beheren</translation>
 <translation id="7569952961197462199">Creditcard verwijderen uit Chrome?</translation>
@@ -2487,6 +2499,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Geen}=1{1 wachtwoord in je account (voor <ph name="DOMAIN_LIST" />)}other{# wachtwoorden in je account (voor <ph name="DOMAIN_LIST" />)}}</translation>
 <translation id="7638605456503525968">Seriële poorten</translation>
 <translation id="7639968568612851608">Donkergrijs</translation>
+<translation id="7646681339175747202">Het wachtwoord dat je net hebt gebruikt, is gevonden bij een gegevenslek. Google Wachtwoordmanager raadt je aan je wachtwoord nu te wijzigen.</translation>
 <translation id="7647206758853451655">Afdrukkwaliteit</translation>
 <translation id="7648992873808071793">Bestanden op dit apparaat bewaren</translation>
 <translation id="7653957176542370971">Blad voor betalingshandler is gesloten</translation>
@@ -3028,6 +3041,7 @@
 <translation id="9174623988242579721">Custom en bijzondere voertuigen</translation>
 <translation id="9174917557437862841">Schakelknop voor tabbladen, druk op Enter om naar dit tabblad te schakelen</translation>
 <translation id="9179703756951298733">Je betalingen en creditcardgegevens beheren in de Chrome-instellingen</translation>
+<translation id="9179907736442194268">Krijg e-mailmeldingen bij een prijsdaling op een site</translation>
 <translation id="9183302530794969518">Google Documenten</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> gebruikt een niet-ondersteund protocol.</translation>
 <translation id="9187461866967718678">Extreme sporten</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb
index ce2560ce..4a94daf 100644
--- a/components/strings/components_strings_or.xtb
+++ b/components/strings/components_strings_or.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">ଲେଟର୍ ଫୋଲ୍ଡ</translation>
 <translation id="138218114945450791">ହାଲୁକା ନୀଳ</translation>
 <translation id="1382194467192730611">ଆପଣଙ୍କର ଆଡିମିନିଷ୍ଟ୍ରେଟର୍ ଦ୍ୱାରା ଅନୁମତି ଦିଆଯାଇଥିବା USB ଡିଭାଇସ୍</translation>
+<translation id="1382378825779654399">ଯଦି କୌଣସି ସାଇଟରେ ମୂଲ୍ୟ ହ୍ରାସ ପାଏ, ତେବେ ଆପଣ ଇମେଲ ଆଲର୍ଟ ପାଇବେ। ଏହି ପୃଷ୍ଠା <ph name="LAST_BOOKMARKS_FOLDER" />ରେ ସେଭ କରାଯିବ।</translation>
 <translation id="1382912999714108023">ଆପଣଙ୍କ ବର୍ତ୍ତମାନର ସୂଚନା ଦେଖାଯାଉନାହିଁ କି? ଏହାକୁ ଅପଡେଟ୍ କରିବା ପାଇଁ ଦୟାକରି ଆପଣଙ୍କ ବ୍ୟାଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="1384725838384960382">ସୁରକ୍ଷିତ ଭାବରେ ପେମେଣ୍ଟ କରିବା ପାଇଁ କ୍ରେଡେନସିଆଲ୍ ପ୍ରମାଣୀକରଣ ସିଟ୍</translation>
 <translation id="1386623374109090026">ଏନୋଟେସନଗୁଡ଼ିକ</translation>
@@ -1518,6 +1519,7 @@
 <translation id="5018422839182700155">ଏହି ପୃଷ୍ଠାକୁ ଖୋଲିପାରିବ ନାହିଁ</translation>
 <translation id="5019198164206649151">ବ୍ୟାକିଂ ଷ୍ଟୋର୍‌ ଖରାପ ସ୍ଥିତିରେ ଅଛି</translation>
 <translation id="5020776957610079374">ୱାର୍ଲ୍ଡ ମ୍ୟୁଜିକ</translation>
+<translation id="5021557570875267742">Chrome ମାଧ୍ୟମରେ ମୂଲ୍ୟଗୁଡ଼ିକୁ ଟ୍ରାକ କରନ୍ତୁ</translation>
 <translation id="5023310440958281426">ଆପଣଙ୍କର ବ୍ଯବସ୍ଥାପକଙ୍କ ନୀତି ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="5029568752722684782">କପି ଖାଲି କରନ୍ତୁ</translation>
 <translation id="5030338702439866405">ଏହାଙ୍କ ଦ୍ୱାରା ଜାରି କରାଯାଇଛି</translation>
@@ -2237,6 +2239,7 @@
 <translation id="6993898126790112050">6x9 (ଏନଭଲପ୍)</translation>
 <translation id="6996312675313362352">ସର୍ବଦା <ph name="ORIGINAL_LANGUAGE" />କୁ ଅନୁବାଦ କରନ୍ତୁ</translation>
 <translation id="6999969238895751684">ମନୋରଞ୍ଜନ ଇଣ୍ଡଷ୍ଟ୍ରି</translation>
+<translation id="7003335073762455340">ଆପଣ ଏହି ପ୍ରଡକ୍ଟକୁ ଟ୍ରାକ କରୁଛନ୍ତି। ଏହି ପୃଷ୍ଠା <ph name="LAST_BOOKMARKS_FOLDER" />ରେ ସେଭ କରାଯାଇଛି।</translation>
 <translation id="7004583254764674281">କାର୍ଡଗୁଡ଼ିକୁ ଅତି ଶୀଘ୍ର ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ Windows Hello ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="7006930604109697472">ଯେ କୌଣସି ଭାବେ ପଠାନ୍ତୁ</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3031,6 +3034,7 @@
 <translation id="9174623988242579721">କଷ୍ଟମ ଏବଂ ପରଫରମାନ୍ସ ଗାଡ଼ିଗୁଡ଼ିକ</translation>
 <translation id="9174917557437862841">ଟାବ୍ ସ୍ୱିଚ୍ କରିବାର ବଟନ୍, ଏହି ଟାବ୍‍କୁ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ଏଣ୍ଟର୍ ଦବାନ୍ତୁ</translation>
 <translation id="9179703756951298733">Chrome ସେଟିଂସରେ ଆପଣଙ୍କର ପେମେଣ୍ଟ ଏବଂ କ୍ରେଡିଟ୍ କାର୍ଡ ସୂଚନା ପରିଚାଳନା କରନ୍ତୁ</translation>
+<translation id="9179907736442194268">ଯଦି କୌଣସି ସାଇଟରେ ମୂଲ୍ୟ ହ୍ରାସ ପାଏ, ତେବେ ଇମେଲ ଆଲର୍ଟ ପାଆନ୍ତୁ</translation>
 <translation id="9183302530794969518">Google Docs</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> ଗୋଟିଏ ଅସମର୍ଥିତ ପ୍ରୋଟୋକଲ୍‌ ବ୍ୟବହାର କରୁଛନ୍ତି।</translation>
 <translation id="9187461866967718678">ବିପଦଜନକ ସ୍ପୋର୍ଟସ</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index eeab816..d2a46f4 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Dobra carteira</translation>
 <translation id="138218114945450791">Azul-claro</translation>
 <translation id="1382194467192730611">Dispositivo USB permitido pelo administrador</translation>
+<translation id="1382378825779654399">Você vai receber alertas por e-mail se houver uma redução no preço em algum site. Esta página vai ser salva em <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Suas informações estão desatualizadas? Entre em contato com seu banco para atualizá-las.</translation>
 <translation id="1384725838384960382">Página de autenticação de credenciais para pagamento seguro</translation>
 <translation id="1386623374109090026">Anotações</translation>
@@ -1520,6 +1521,7 @@
 <translation id="5018422839182700155">Não é possível abrir essa página</translation>
 <translation id="5019198164206649151">Armazenamento de backup em estado inválido</translation>
 <translation id="5020776957610079374">Música mundial</translation>
+<translation id="5021557570875267742">Monitore preços com o Chrome</translation>
 <translation id="5023310440958281426">Verifique as políticas do administrador</translation>
 <translation id="5029568752722684782">Limpar cópia</translation>
 <translation id="5030338702439866405">Emitido por</translation>
@@ -2240,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Sempre traduzir <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Indústria do entretenimento</translation>
+<translation id="7003335073762455340">Você está monitorando esse produto. Esta página foi salva em <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Use o Windows Hello para confirmar o uso de cartões mais rapidamente</translation>
 <translation id="7006930604109697472">Enviar mesmo assim</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3036,6 +3039,7 @@
 <translation id="9174623988242579721">Veículos personalizados e de desempenho</translation>
 <translation id="9174917557437862841">Botão de alternância de guia. Pressione Enter para alternar para esta guia</translation>
 <translation id="9179703756951298733">Gerencie seus pagamentos e suas informações de cartão de crédito nas configurações do Chrome</translation>
+<translation id="9179907736442194268">Receba alertas por e-mail se houver uma redução no preço em algum site</translation>
 <translation id="9183302530794969518">Documentos Google</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> usa um protocolo incompatível.</translation>
 <translation id="9187461866967718678">Esportes radicais</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index f1ac8cf..0f6b6da 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -261,6 +261,7 @@
 <translation id="156703335097561114">Informações de rede, tais como endereços, a configuração da interface e a qualidade da ligação</translation>
 <translation id="1567040042588613346">Esta política está a funcionar conforme esperado, mas o mesmo valor está definido noutro local e foi substituído por esta política.</translation>
 <translation id="1569487616857761740">Introduza a data de validade</translation>
+<translation id="1569694109004336106">O Google Chrome está a tentar ativar o Windows Hello para preencher palavras-passe.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Ocorreu um erro ao apresentar esta página Web.</translation>
 <translation id="1586541204584340881">As extensões que instalou.</translation>
@@ -399,6 +400,7 @@
 <translation id="1958218078413065209">A sua pontuação mais alta é <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Ajude a melhorar a segurança na Web para todos ao enviar <ph name="BEGIN_WHITEPAPER_LINK" />os URLs de algumas páginas que visita, informações limitadas do sistema e algum conteúdo das páginas<ph name="END_WHITEPAPER_LINK" /> para a Google. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Política de Privacidade<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436">Marcadores de <ph name="DOMAIN" /></translation>
+<translation id="1971033026002113380">Proteja palavras-passe com o TouchID</translation>
 <translation id="1973335181906896915">Erro de serialização</translation>
 <translation id="1974060860693918893">Avançadas</translation>
 <translation id="1975457531113383421">Tabuleiro de entrada</translation>
@@ -726,6 +728,7 @@
 <translation id="2881276955470682203">Pretende guardar o cartão?</translation>
 <translation id="2882949212241984732">Dobra simétrica dupla</translation>
 <translation id="2893773853358652045">Quarto rolo</translation>
+<translation id="289834758818479772">Se partilhar este dispositivo com outras pessoas, pode ativar o TouchID para validar a sua identidade sempre que usar uma palavra-passe guardada</translation>
 <translation id="2900528713135656174">Criar evento</translation>
 <translation id="2903493209154104877">Endereços</translation>
 <translation id="290376772003165898">A página não está em <ph name="LANGUAGE" />?</translation>
@@ -802,6 +805,8 @@
 <translation id="3108943290502734357">Tabuleiro central</translation>
 <translation id="3109728660330352905">Não tem autorização para ver esta página.</translation>
 <translation id="3113284927548439113">Terceiro turno</translation>
+<translation id="3114040155724590991">A atualizar o sistema Android
+    Iniciar a sua app pode demorar mais tempo do que o habitual.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Transferir o ficheiro confidencial?}other{Transferir os ficheiros confidenciais?}}</translation>
 <translation id="3115874930288085374">O domínio <ph name="ENROLLMENT_DOMAIN" /> requer que faça uma cópia de segurança dos seus dados e devolva este <ph name="DEVICE_TYPE" />.</translation>
 <translation id="3116158981186517402">Laminar</translation>
@@ -1256,6 +1261,7 @@
 <translation id="4306812610847412719">área de transferência</translation>
 <translation id="4308567447483056043">Esta política é ignorada porque o utilizador não está afiliado. Para que esta política seja aplicada, o navegador Chrome e o perfil têm de ser geridos através da consola do administrador pela mesma organização.</translation>
 <translation id="4310070645992025887">Pesquise os seus percursos</translation>
+<translation id="4310496734563057511">Se partilhar este dispositivo com outras pessoas, pode ativar o Windows Hello para validar a sua identidade sempre que usar uma palavra-passe guardada</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Bloquear (predefinição)</translation>
 <translation id="4314815835985389558">Gerir sincronização</translation>
@@ -1470,6 +1476,7 @@
 <translation id="4880827082731008257">Pesquisar histórico</translation>
 <translation id="4881695831933465202">Abrir</translation>
 <translation id="4885256590493466218">Utilize o <ph name="CARD_DETAIL" /> no pagamento.</translation>
+<translation id="4887406273302438710">Proteja as palavras-passe com o Windows Hello</translation>
 <translation id="4888600795924685526">Estudo de línguas estrangeiras</translation>
 <translation id="4889420713887366944">Botão Abrir janela de navegação anónima; prima Enter para abrir uma nova janela de navegação anónima para navegar em privado.</translation>
 <translation id="4892518386797173871">Traseiro</translation>
@@ -1689,6 +1696,7 @@
 <translation id="5426179911063097041"><ph name="SITE" /> pretende enviar-lhe notificações.</translation>
 <translation id="5428105026674456456">Espanhol</translation>
 <translation id="5430298929874300616">Remover marcador</translation>
+<translation id="5434423669266814150">ativar o TouchID para preencher palavras-passe</translation>
 <translation id="5443468954631487277">Ordem inversa, com orientação para cima</translation>
 <translation id="5447765697759493033">Este site não será traduzido.</translation>
 <translation id="5452270690849572955">Não é possível encontrar esta página de <ph name="HOST_NAME" /></translation>
@@ -2465,6 +2473,7 @@
 <translation id="7564049878696755256">Pode perder o acesso à sua conta do serviço <ph name="ORG_NAME" /> ou ser vítima de roubo de identidade. O Chrome recomenda a alteração da palavra-passe agora.</translation>
 <translation id="7564680668369175887">Carrinhas</translation>
 <translation id="7567204685887185387">Este servidor não conseguiu provar que é o domínio <ph name="DOMAIN" />; o respetivo certificado de segurança poderá ter sido emitido de forma fraudulenta. Isto pode ser o resultado de uma configuração incorreta ou de um invasor a intercetar a sua ligação.</translation>
+<translation id="7568616151991626879">O Google Chrome está a tentar preencher a sua palavra-passe na app <ph name="APP_NAME" />.</translation>
 <translation id="7569490014721427265">Golfe</translation>
 <translation id="7569761772822664555">Botão Gerir motores de pesquisa, prima Enter para gerir o seu motor de pesquisa e pesquisa de sites predefinidos</translation>
 <translation id="7569952961197462199">Remover o cartão de crédito do Chrome?</translation>
@@ -2495,6 +2504,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Nenhuma}=1{1 palavra-passe na sua conta (para <ph name="DOMAIN_LIST" />)}other{# palavras-passe na sua conta (para <ph name="DOMAIN_LIST" />)}}</translation>
 <translation id="7638605456503525968">Portas de série</translation>
 <translation id="7639968568612851608">Cinzento-escuro</translation>
+<translation id="7646681339175747202">A palavra-passe que acabou de usar foi encontrada numa violação de dados. O Gestor de Palavras-passe da Google recomenda que altere a palavra-passe agora.</translation>
 <translation id="7647206758853451655">Qualidade de impressão</translation>
 <translation id="7648992873808071793">Armazenar ficheiros neste dispositivo</translation>
 <translation id="7653957176542370971">A página do controlador do pagamento está fechada.</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb
index 98b0ee6..90d4430 100644
--- a/components/strings/components_strings_si.xtb
+++ b/components/strings/components_strings_si.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">කෙසේ වෙතත් සුරකින්න</translation>
 <translation id="2035400064145347639">සංචාර උපදේශකයන් සහ ගමන් විස්තර</translation>
 <translation id="2036983605131262583">Alternate Roll</translation>
+<translation id="2040463897538655645">ඉවත් කළ හැකි ආචයනය</translation>
 <translation id="2040894699575719559">ස්ථානය අවහිර කර ඇත</translation>
 <translation id="2042213636306070719">බඳුන 7</translation>
 <translation id="204357726431741734">ඔබේ Google ගිණුම තුළ සුරැකී ඇති මුරපද භාවිත කිරීමට පුරන්න</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index b91d33a..e5c7fc3 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -261,6 +261,7 @@
 <translation id="156703335097561114">Informácie o sieťach, napríklad adresy, konfigurácia rozhrania a kvalita pripojenia</translation>
 <translation id="1567040042588613346">Toto pravidlo funguje podľa očakávania, ale niekde inde je nastavená rovnaká hodnota, ktorú toto pravidlo nahradilo.</translation>
 <translation id="1569487616857761740">Zadajte dátum vypršania platnosti</translation>
+<translation id="1569694109004336106">Google Chrome sa pokúša zapnúť Windows Hello, aby sa vypĺňali heslá.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Pri zobrazovaní webovej stránky sa niečo pokazilo.</translation>
 <translation id="1586541204584340881">Ktoré rozšírenia ste nainštalovali</translation>
@@ -399,6 +400,7 @@
 <translation id="1958218078413065209">Vaše najvyššie skóre je <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Pomôžte zlepšovať bezpečnosť na internete pre všetkých odosielaním <ph name="BEGIN_WHITEPAPER_LINK" />webových adries a obsahu niektorých stránok, ktoré navštevujete, ako aj obmedzených informácií o systéme<ph name="END_WHITEPAPER_LINK" /> Googlu. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Pravidlá ochrany súkromia<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436">Záložky (<ph name="DOMAIN" />)</translation>
+<translation id="1971033026002113380">Ochrana hesiel pomocou funkcie TouchID</translation>
 <translation id="1973335181906896915">Chyba serializácie</translation>
 <translation id="1974060860693918893">Rozšírené</translation>
 <translation id="1975457531113383421">Vstupný zásobník</translation>
@@ -726,6 +728,7 @@
 <translation id="2881276955470682203">Uložiť kartu?</translation>
 <translation id="2882949212241984732">Dvojitá obojstranná fazóna</translation>
 <translation id="2893773853358652045">Štvrtý kotúč</translation>
+<translation id="289834758818479772">Ak zdieľate toto zariadenie s inými a chcete, aby sa pri použití uloženého hesla overovala totožnosť, môžete zapnúť TouchID</translation>
 <translation id="2900528713135656174">Vytvorte udalosť</translation>
 <translation id="2903493209154104877">Adresy</translation>
 <translation id="290376772003165898">Stránka nie je v jazyku <ph name="LANGUAGE" />?</translation>
@@ -802,6 +805,8 @@
 <translation id="3108943290502734357">Stredný zásobník</translation>
 <translation id="3109728660330352905">Nemáte povolenie na zobrazenie tejto stránky.</translation>
 <translation id="3113284927548439113">Tretia zmena</translation>
+<translation id="3114040155724590991">Systém Android sa aktualizuje.
+    Spustenie aplikácie môže trvať dlhšie než zvyčajne.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Chcete stiahnuť dôverný súbor?}few{Chcete stiahnuť dôverné súbory?}many{Download confidential files?}other{Chcete stiahnuť dôverné súbory?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> vyžaduje, aby ste zálohovali svoje údaje a toto zariadenie <ph name="DEVICE_TYPE" /> vrátili.</translation>
 <translation id="3116158981186517402">Laminovať</translation>
@@ -1252,6 +1257,7 @@
 <translation id="4306812610847412719">schránka</translation>
 <translation id="4308567447483056043">Toto pravidlo je ignorované, pretože používateľ nie je pridružený. Ak chcete, aby bolo toto pravidlo použité, prehliadač Chrome a profil musí spravovať v správcovskej konzole rovnaká organizácia.</translation>
 <translation id="4310070645992025887">Vyhľadávajte cesty</translation>
+<translation id="4310496734563057511">Ak zdieľate toto zariadenie s inými a chcete aby, sa pri použití uloženého hesla overovala totožnosť, môžete zapnúť Windows Hello.</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Blokovať (predvolené)</translation>
 <translation id="4314815835985389558">Správa synchronizácie</translation>
@@ -1466,6 +1472,7 @@
 <translation id="4880827082731008257">Hľadať v histórii</translation>
 <translation id="4881695831933465202">Otvoriť</translation>
 <translation id="4885256590493466218">Zaplaťte za nákup kartou <ph name="CARD_DETAIL" /></translation>
+<translation id="4887406273302438710">Ochrana hesiel pomocou funkcie Windows Hello</translation>
 <translation id="4888600795924685526">Štúdium cudzích jazykov</translation>
 <translation id="4889420713887366944">Tlačidlo Otvoriť okno inkognito. Stlačením klávesa Enter otvoríte nové okno inkognito a môžete prehliadať v súkromí.</translation>
 <translation id="4892518386797173871">Vzadu</translation>
@@ -1685,6 +1692,7 @@
 <translation id="5426179911063097041">Web <ph name="SITE" /> vám chce posielať upozornenia</translation>
 <translation id="5428105026674456456">Španielčina</translation>
 <translation id="5430298929874300616">Odstrániť záložku</translation>
+<translation id="5434423669266814150">zapnúť TouchID, aby sa vypĺňali heslá</translation>
 <translation id="5443468954631487277">V opačnom poradí lícom nahor</translation>
 <translation id="5447765697759493033">Tento web nebude preložený</translation>
 <translation id="5452270690849572955">Táto stránka webu <ph name="HOST_NAME" /> sa nenašla</translation>
@@ -2461,6 +2469,7 @@
 <translation id="7564049878696755256">Môžete stratiť prístup do účtu <ph name="ORG_NAME" /> alebo vám niekto môže ukradnúť identitu. Chrome odporúča, aby ste si ihneď zmenili heslo.</translation>
 <translation id="7564680668369175887">Automobily typu kombi</translation>
 <translation id="7567204685887185387">Server nedokáže overiť, či ide o doménu <ph name="DOMAIN" />, bol zrejme vydaný falošný bezpečnostný certifikát. Môže to byť spôsobené nesprávnou konfiguráciou alebo tým, že vaše pripojenie zachytil útočník.</translation>
+<translation id="7568616151991626879">Google Chrome sa pokúša vyplniť heslo v aplikácii <ph name="APP_NAME" />.</translation>
 <translation id="7569490014721427265">Golf</translation>
 <translation id="7569761772822664555">Tlačidlo na správu vyhľadávačov, stlačením klávesa Enter spravujte predvolený vyhľadávač a vyhľadávanie na webe</translation>
 <translation id="7569952961197462199">Chcete kreditnú kartu odstrániť z prehliadača Chrome?</translation>
@@ -2491,6 +2500,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Žiadne}=1{1 heslo vo vašom účte (pre <ph name="DOMAIN_LIST" />)}few{# heslá vo vašom účte (pre <ph name="DOMAIN_LIST" />)}many{# passwords in your account (for <ph name="DOMAIN_LIST" />)}other{# hesiel vo vašom účte (pre <ph name="DOMAIN_LIST" />)}}</translation>
 <translation id="7638605456503525968">Sériové porty</translation>
 <translation id="7639968568612851608">Tmavosivá</translation>
+<translation id="7646681339175747202">Heslo, ktoré ste práve použili, bolo nájdené v zozname hesiel odhalených pri porušení ochrany údajov. Správca hesiel Google odporúča okamžite dané heslo zmeniť.</translation>
 <translation id="7647206758853451655">Kvalita tlače</translation>
 <translation id="7648992873808071793">Ukladať súbory na tomto zariadení</translation>
 <translation id="7653957176542370971">Hárok obslužného nástroja platieb je zatvorený</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index 8cfb71f..445354e 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Prepogibanje v obliki pisma</translation>
 <translation id="138218114945450791">Svetlo modra</translation>
 <translation id="1382194467192730611">Naprava USB, ki jo je dovolil skrbnik</translation>
+<translation id="1382378825779654399">Če se cena zniža na katerem koli spletnem mestu, boste prejeli e-poštna opozorila. Ta stran bo shranjena v mapi <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Niso prikazani najnovejši podatki? Obrnite se na banko in jih posodobite.</translation>
 <translation id="1384725838384960382">Preglednica za preverjanje pristnosti poverilnice za varno plačilo</translation>
 <translation id="1386623374109090026">Pripisi</translation>
@@ -1520,6 +1521,7 @@
 <translation id="5018422839182700155">Te strani ni mogoče odpreti</translation>
 <translation id="5019198164206649151">Neprimerno stanje rezervne shrambe</translation>
 <translation id="5020776957610079374">Svetovna glasba</translation>
+<translation id="5021557570875267742">Spremljanje cen v Chromu</translation>
 <translation id="5023310440958281426">Preverite skrbnikove pravilnike</translation>
 <translation id="5029568752722684782">Počisti kopijo</translation>
 <translation id="5030338702439866405">Izdajatelj</translation>
@@ -2240,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Vedno prevedi ta jezik: <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Zabavna industrija</translation>
+<translation id="7003335073762455340">Spremljate ta izdelek. Ta stran je shranjena v mapi <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Uporabite Windows Hello za hitrejše potrjevanje kartic</translation>
 <translation id="7006930604109697472">Vseeno pošlji</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3034,6 +3037,7 @@
 <translation id="9174623988242579721">Vozila po meri in predelana vozila</translation>
 <translation id="9174917557437862841">Gumb za preklop zavihkov, pritisnite Enter, če želite preklopiti na ta zavihek</translation>
 <translation id="9179703756951298733">Upravljanje plačil in podatkov o kreditnih karticah v nastavitvah v Chromu</translation>
+<translation id="9179907736442194268">Prejmite e-poštna opozorila, če se cena zniža na katerem koli spletnem mestu.</translation>
 <translation id="9183302530794969518">Google Dokumenti</translation>
 <translation id="9183425211371246419">Spletno mesto <ph name="HOST_NAME" /> uporablja nepodprt protokol.</translation>
 <translation id="9187461866967718678">Ekstremni športi</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 846ecc5..ddc9c8f7 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Ruaje gjithsesi</translation>
 <translation id="2035400064145347639">Udhëzuesit e udhëtimeve dhe guidat turistike</translation>
 <translation id="2036983605131262583">Rul alternativ</translation>
+<translation id="2040463897538655645">Hapësira ruajtëse e lëvizshme</translation>
 <translation id="2040894699575719559">Vendndodhja u bllokua</translation>
 <translation id="2042213636306070719">Tabakaja 7</translation>
 <translation id="204357726431741734">Identifikohu për të përdorur fjalëkalimet e ruajtura në "Llogarinë tënde të Google"</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb
index 1bf025c..c387a43 100644
--- a/components/strings/components_strings_sr-Latn.xtb
+++ b/components/strings/components_strings_sr-Latn.xtb
@@ -260,6 +260,7 @@
 <translation id="156703335097561114">Informacije o mrežama poput adresa, konfiguracije interfejsa i kvaliteta veze</translation>
 <translation id="1567040042588613346">Ove smernice rade kao što je predviđeno, ali ista vrednost je podešena na drugom mestu i zamenjuju je ove smernice.</translation>
 <translation id="1569487616857761740">Unesite datum isteka</translation>
+<translation id="1569694109004336106">Google Chrome pokušava da uključi Windows Hello za popunjavanje lozinki.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Došlo je do greške pri prikazivanju ove veb-stranice.</translation>
 <translation id="1586541204584340881">dodatke koje ste instalirali</translation>
@@ -398,6 +399,7 @@
 <translation id="1958218078413065209">Vaš najviši rezultat je <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Pomozite da poboljšamo bezbednost na vebu za sve tako što ćete slati <ph name="BEGIN_WHITEPAPER_LINK" />URL-ove nekih stranica koje posećujete, ograničene informacije o sistemu i određeni sadržaj stranica<ph name="END_WHITEPAPER_LINK" /> Google-u <ph name="BEGIN_PRIVACY_PAGE_LINK" />Politika privatnosti<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436"><ph name="DOMAIN" /> – obeleživači</translation>
+<translation id="1971033026002113380">Zaštitite lozinke pomoću TouchID-ja</translation>
 <translation id="1973335181906896915">Greška pri serijalizaciji</translation>
 <translation id="1974060860693918893">Napredne opcije</translation>
 <translation id="1975457531113383421">Ulazna fioka</translation>
@@ -725,6 +727,7 @@
 <translation id="2881276955470682203">Želite li da sačuvate karticu?</translation>
 <translation id="2882949212241984732">Dvostruko presavijanje u obliku prozora</translation>
 <translation id="2893773853358652045">Četvrti kotur</translation>
+<translation id="289834758818479772">Ako delite ovaj uređaj sa drugima, možete da uključite TouchID da biste potvrdili da ste to vi kada god koristite sačuvanu lozinku</translation>
 <translation id="2900528713135656174">Napravite događaj</translation>
 <translation id="2903493209154104877">Adrese</translation>
 <translation id="290376772003165898">Ova stranica nije na jeziku <ph name="LANGUAGE" />?</translation>
@@ -801,6 +804,8 @@
 <translation id="3108943290502734357">Srednja fioka</translation>
 <translation id="3109728660330352905">Nemate ovlašćenje da pregledate ovu stranicu.</translation>
 <translation id="3113284927548439113">Treća smena</translation>
+<translation id="3114040155724590991">Ažuriranje Android sistema
+    Pokretanje aplikacije može da traje duže nego obično.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Želite da preuzmete poverljiv fajl?}one{Želite da preuzmete poverljive fajlove?}few{Želite da preuzmete poverljive fajlove?}other{Želite da preuzmete poverljive fajlove?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite ovaj <ph name="DEVICE_TYPE" />.</translation>
 <translation id="3116158981186517402">Laminiranje</translation>
@@ -1255,6 +1260,7 @@
 <translation id="4306812610847412719">privremena memorija</translation>
 <translation id="4308567447483056043">Ove smernice se ignorišu zato što korisnik nije povezan. Da bi se ove smernice primenjivale, ista organizacija mora da upravlja Chrome pregledačem i profilom preko Administratorske konzole.</translation>
 <translation id="4310070645992025887">Pretražite svoje puteve</translation>
+<translation id="4310496734563057511">Ako delite ovaj uređaj sa drugima, možete da uključite Windows Hello da biste potvrdili da ste to vi kada god koristite sačuvanu lozinku</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Blokiraj (podrazumevano)</translation>
 <translation id="4314815835985389558">Upravljajte sinhronizacijom</translation>
@@ -1469,6 +1475,7 @@
 <translation id="4880827082731008257">Pretraži istoriju</translation>
 <translation id="4881695831933465202">Otvori</translation>
 <translation id="4885256590493466218">Plaćajte pomoću kartice <ph name="CARD_DETAIL" /></translation>
+<translation id="4887406273302438710">Zaštitite lozinke pomoću Windows Hello-a</translation>
 <translation id="4888600795924685526">Studije stranih jezika</translation>
 <translation id="4889420713887366944">Dugme Otvori prozor bez arhiviranja, pritisnite Enter da biste otvorili nov prozor bez arhiviranja i pregledali privatno</translation>
 <translation id="4892518386797173871">Zadnji deo</translation>
@@ -1687,6 +1694,7 @@
 <translation id="5426179911063097041"><ph name="SITE" /> želi da vam šalje obaveštenja</translation>
 <translation id="5428105026674456456">španski</translation>
 <translation id="5430298929874300616">Uklonite obeleživač</translation>
+<translation id="5434423669266814150">uključi TouchID za popunjavanje lozinki</translation>
 <translation id="5443468954631487277">Obrnutim redosledom sa odštampanom stranom nagore</translation>
 <translation id="5447765697759493033">Ovaj sajt se neće prevoditi</translation>
 <translation id="5452270690849572955">Nije moguće pronaći ovu stranicu hosta <ph name="HOST_NAME" /></translation>
@@ -2462,6 +2470,7 @@
 <translation id="7564049878696755256">Možete da izgubite pristup nalogu za <ph name="ORG_NAME" /> ili bi moglo da dođe do krađe identiteta. Chrome vam preporučuje da odmah promenite lozinku.</translation>
 <translation id="7564680668369175887">Karavan vozila</translation>
 <translation id="7567204685887185387">Ovaj server ne može da dokaže da je <ph name="DOMAIN" />; njegov bezbednosni sertifikat je možda lažno izdat. Uzrok tome je možda pogrešna konfiguracija ili napadač koji je prekinuo vezu.</translation>
+<translation id="7568616151991626879">Google Chrome pokušava da unese lozinku na <ph name="APP_NAME" />.</translation>
 <translation id="7569490014721427265">Golf</translation>
 <translation id="7569761772822664555">Dugme Upravljaj pretraživačima, pritisnite Enter da biste upravljali podrazumevanim pretraživačem i pretragom sajta</translation>
 <translation id="7569952961197462199">Želite li da uklonite kreditnu karticu iz Chrome-a?</translation>
@@ -2492,6 +2501,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Nijedna}=1{1 lozinka na nalogu (za <ph name="DOMAIN_LIST" />)}one{# lozinka na nalogu (za <ph name="DOMAIN_LIST" />)}few{# lozinke na nalogu (za <ph name="DOMAIN_LIST" />)}other{# lozinki na nalogu (za <ph name="DOMAIN_LIST" />)}}</translation>
 <translation id="7638605456503525968">Serijski portovi</translation>
 <translation id="7639968568612851608">Tamnosiva</translation>
+<translation id="7646681339175747202">Lozinka koju ste upravo koristili je pronađena pri povredi podataka. Google menadžer lozinki preporučuje da odmah promenite lozinku.</translation>
 <translation id="7647206758853451655">Kvalitet štampanja</translation>
 <translation id="7648992873808071793">skladišti datoteke na ovom uređaju</translation>
 <translation id="7653957176542370971">Stranica obrađivača plaćanja je zatvorena</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index b70b6a2c..07fa2e5e 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -260,6 +260,7 @@
 <translation id="156703335097561114">Информације о мрежама попут адреса, конфигурације интерфејса и квалитета везе</translation>
 <translation id="1567040042588613346">Ове смернице раде као што је предвиђено, али иста вредност је подешена на другом месту и замењују је ове смернице.</translation>
 <translation id="1569487616857761740">Унесите датум истека</translation>
+<translation id="1569694109004336106">Google Chrome покушава да укључи Windows Hello за попуњавање лозинки.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">Дошло је до грешке при приказивању ове веб-странице.</translation>
 <translation id="1586541204584340881">додатке које сте инсталирали</translation>
@@ -398,6 +399,7 @@
 <translation id="1958218078413065209">Ваш највиши резултат је <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Помозите да побољшамо безбедност на вебу за све тако што ћете слати <ph name="BEGIN_WHITEPAPER_LINK" />URL-ове неких страница које посећујете, ограничене информације о систему и одређени садржај страница<ph name="END_WHITEPAPER_LINK" /> Google-у <ph name="BEGIN_PRIVACY_PAGE_LINK" />Политика приватности<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436"><ph name="DOMAIN" /> – обележивачи</translation>
+<translation id="1971033026002113380">Заштитите лозинке помоћу TouchID-ја</translation>
 <translation id="1973335181906896915">Грешка при серијализацији</translation>
 <translation id="1974060860693918893">Напредне опције</translation>
 <translation id="1975457531113383421">Улазна фиока</translation>
@@ -725,6 +727,7 @@
 <translation id="2881276955470682203">Желите ли да сачувате картицу?</translation>
 <translation id="2882949212241984732">Двоструко пресавијање у облику прозора</translation>
 <translation id="2893773853358652045">Четврти котур</translation>
+<translation id="289834758818479772">Ако делите овај уређај са другима, можете да укључите TouchID да бисте потврдили да сте то ви када год користите сачувану лозинку</translation>
 <translation id="2900528713135656174">Направите догађај</translation>
 <translation id="2903493209154104877">Адресе</translation>
 <translation id="290376772003165898">Ова страница није на језику <ph name="LANGUAGE" />?</translation>
@@ -801,6 +804,8 @@
 <translation id="3108943290502734357">Средња фиока</translation>
 <translation id="3109728660330352905">Немате овлашћење да прегледате ову страницу.</translation>
 <translation id="3113284927548439113">Трећа смена</translation>
+<translation id="3114040155724590991">Ажурирање Android система
+    Покретање апликације може да траје дуже него обично.</translation>
 <translation id="3115363211799416195">{0,plural, =1{Желите да преузмете поверљив фајл?}one{Желите да преузмете поверљиве фајлове?}few{Желите да преузмете поверљиве фајлове?}other{Желите да преузмете поверљиве фајлове?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> захтева да направите резервну копију података и да вратите овај <ph name="DEVICE_TYPE" />.</translation>
 <translation id="3116158981186517402">Ламинирање</translation>
@@ -1255,6 +1260,7 @@
 <translation id="4306812610847412719">привремена меморија</translation>
 <translation id="4308567447483056043">Ове смернице се игноришу зато што корисник није повезан. Да би се ове смернице примењивале, иста организација мора да управља Chrome прегледачем и профилом преко Администраторске конзоле.</translation>
 <translation id="4310070645992025887">Претражите своје путеве</translation>
+<translation id="4310496734563057511">Ако делите овај уређај са другима, можете да укључите Windows Hello да бисте потврдили да сте то ви када год користите сачувану лозинку</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">Блокирај (подразумевано)</translation>
 <translation id="4314815835985389558">Управљајте синхронизацијом</translation>
@@ -1469,6 +1475,7 @@
 <translation id="4880827082731008257">Претражи историју</translation>
 <translation id="4881695831933465202">Отвори</translation>
 <translation id="4885256590493466218">Плаћајте помоћу картице <ph name="CARD_DETAIL" /></translation>
+<translation id="4887406273302438710">Заштитите лозинке помоћу Windows Hello-а</translation>
 <translation id="4888600795924685526">Студије страних језика</translation>
 <translation id="4889420713887366944">Дугме Отвори прозор без архивирања, притисните Enter да бисте отворили нов прозор без архивирања и прегледали приватно</translation>
 <translation id="4892518386797173871">Задњи део</translation>
@@ -1687,6 +1694,7 @@
 <translation id="5426179911063097041"><ph name="SITE" /> жели да вам шаље обавештења</translation>
 <translation id="5428105026674456456">шпански</translation>
 <translation id="5430298929874300616">Уклоните обележивач</translation>
+<translation id="5434423669266814150">укључи TouchID за попуњавање лозинки</translation>
 <translation id="5443468954631487277">Обрнутим редоследом са одштампаном страном нагоре</translation>
 <translation id="5447765697759493033">Овај сајт се неће преводити</translation>
 <translation id="5452270690849572955">Није могуће пронаћи ову страницу хоста <ph name="HOST_NAME" /></translation>
@@ -2462,6 +2470,7 @@
 <translation id="7564049878696755256">Можете да изгубите приступ налогу за <ph name="ORG_NAME" /> или би могло да дође до крађе идентитета. Chrome вам препоручује да одмах промените лозинку.</translation>
 <translation id="7564680668369175887">Караван возила</translation>
 <translation id="7567204685887185387">Овај сервер не може да докаже да је <ph name="DOMAIN" />; његов безбедносни сертификат је можда лажно издат. Узрок томе је можда погрешна конфигурација или нападач који је прекинуо везу.</translation>
+<translation id="7568616151991626879">Google Chrome покушава да унесе лозинку на <ph name="APP_NAME" />.</translation>
 <translation id="7569490014721427265">Голф</translation>
 <translation id="7569761772822664555">Дугме Управљај претраживачима, притисните Enter да бисте управљали подразумеваним претраживачем и претрагом сајта</translation>
 <translation id="7569952961197462199">Желите ли да уклоните кредитну картицу из Chrome-а?</translation>
@@ -2492,6 +2501,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{Ниједна}=1{1 лозинка на налогу (за <ph name="DOMAIN_LIST" />)}one{# лозинка на налогу (за <ph name="DOMAIN_LIST" />)}few{# лозинке на налогу (за <ph name="DOMAIN_LIST" />)}other{# лозинки на налогу (за <ph name="DOMAIN_LIST" />)}}</translation>
 <translation id="7638605456503525968">Серијски портови</translation>
 <translation id="7639968568612851608">Тамносива</translation>
+<translation id="7646681339175747202">Лозинка коју сте управо користили је пронађена при повреди података. Google менаџер лозинки препоручује да одмах промените лозинку.</translation>
 <translation id="7647206758853451655">Квалитет штампања</translation>
 <translation id="7648992873808071793">складишти датотеке на овом уређају</translation>
 <translation id="7653957176542370971">Страница обрађивача плаћања је затворена</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index eb43005..c7086651 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Spara ändå</translation>
 <translation id="2035400064145347639">Reseguider och reseberättelser</translation>
 <translation id="2036983605131262583">Alternativ rulle</translation>
+<translation id="2040463897538655645">Externa lagringsenheter</translation>
 <translation id="2040894699575719559">Platsen är blockerad</translation>
 <translation id="2042213636306070719">Fack 7</translation>
 <translation id="204357726431741734">Logga in om du vill använda lösenord som har sparats i Google-kontot</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index ccd4321..98e7c37 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">Hifadhi licha ya hayo</translation>
 <translation id="2035400064145347639">Miongozo na hadithi za safari</translation>
 <translation id="2036983605131262583">Gombo Mbadala</translation>
+<translation id="2040463897538655645">Nafasi ya hifadhi inayoweza kuondolewa</translation>
 <translation id="2040894699575719559">Imezuiwa kufikia maelezo ya mahali</translation>
 <translation id="2042213636306070719">Trei ya saba</translation>
 <translation id="204357726431741734">Ingia katika akaunti ili utumie manenosiri uliyohifadhi kwenye Akaunti yako ya Google</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 6a8e473..89e8b6e 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">பரவாயில்லை, சேமி</translation>
 <translation id="2035400064145347639">சுற்றுலா வழிகாட்டிகள் &amp; பயணப் பதிவுகள்</translation>
 <translation id="2036983605131262583">மாற்று ரோல்</translation>
+<translation id="2040463897538655645">அகற்றப்படக்கூடிய சேமிப்பகம்</translation>
 <translation id="2040894699575719559">இருப்பிடத் தகவலுக்கான அணுகல் தடுக்கப்பட்டுள்ளது</translation>
 <translation id="2042213636306070719">தட்டு 7</translation>
 <translation id="204357726431741734">உங்கள் Google கணக்கில் சேமிக்கப்பட்டுள்ள கடவுச்சொற்களைப் பயன்படுத்த உள்நுழைக</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 743b40e8..ff1837a 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -263,6 +263,7 @@
 <translation id="156703335097561114">అడ్రస్‌లు, ఇంటర్‌ఫేస్ కాన్ఫిగరేషన్, కనెక్షన్ క్వాలిటీ వంటి నెట్‌వర్కింగ్ సమాచారం</translation>
 <translation id="1567040042588613346">ఈ పాలసీ అనుకున్నట్టుగా పని చేస్తోంది, కానీ అదే విలువ మరో చోట సెట్ చేయబడింది, అలాగే ఈ పాలసీ ద్వారా అధిగమించబడింది.</translation>
 <translation id="1569487616857761740">గడువు ముగింపు తేదీని నమోదు చేయండి</translation>
+<translation id="1569694109004336106">పాస్‌వర్డ్‌లను పూరించడం కోసం Windows Helloను ఆన్ చేయడానికి Google Chrome ట్రై చేస్తోంది.</translation>
 <translation id="1581080074034554886">CVC</translation>
 <translation id="1583429793053364125">ఈ వెబ్ పేజీని ప్రదర్శిస్తున్నప్పుడు ఏదో తప్పు జరిగింది.</translation>
 <translation id="1586541204584340881">మీరు ఏ ఎక్స్‌టెన్షన్‌లను ఇన్ స్టాల్ చేసుకున్నారు</translation>
@@ -401,6 +402,7 @@
 <translation id="1958218078413065209">మీ అత్యధిక స్కోర్ <ph name="SCORE" />.</translation>
 <translation id="1959001866257244765">Googleకు <ph name="BEGIN_WHITEPAPER_LINK" />మీరు సందర్శించిన కొన్ని పేజీల URLలు, పరిమిత సిస్టమ్ సమాచారం, కొంత పేజీ కంటెంట్<ph name="END_WHITEPAPER_LINK" />ను పంపడం ద్వారా వెబ్‌లో ప్రతిఒక్కరికీ భద్రతను మెరుగుపరచడంలో సహాయం చేయండి. <ph name="BEGIN_PRIVACY_PAGE_LINK" />గోప్యతా పాలసీ<ph name="END_PRIVACY_PAGE_LINK" /></translation>
 <translation id="1962204205936693436"><ph name="DOMAIN" /> బుక్‌మార్క్‌లు</translation>
+<translation id="1971033026002113380">TouchIDతో పాస్‌వర్డ్‌లను సురక్షితం చేసుకోండి</translation>
 <translation id="1973335181906896915">శ్రేణిగా రూపొందించడంలో ఎర్రర్</translation>
 <translation id="1974060860693918893">అధునాతన సెట్టింగ్‌లు</translation>
 <translation id="1975457531113383421">ఇన్‌పుట్ ట్రే</translation>
@@ -728,6 +730,7 @@
 <translation id="2881276955470682203">కార్డ్‌ను సేవ్ చేయాలా?</translation>
 <translation id="2882949212241984732">డబుల్-గేట్ ఫోల్డ్</translation>
 <translation id="2893773853358652045">ఫోర్త్ రోల్</translation>
+<translation id="289834758818479772">మీరు ఈ పరికరాన్ని ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, TouchIDని ఆన్ చేసి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా, అది మీరేనని వెరిఫై చేయవచ్చు</translation>
 <translation id="2900528713135656174">ఈవెంట్‌ను క్రియేట్ చేయండి</translation>
 <translation id="2903493209154104877">అడ్రస్‌లు</translation>
 <translation id="290376772003165898">పేజీ <ph name="LANGUAGE" />లో లేదా?</translation>
@@ -804,6 +807,8 @@
 <translation id="3108943290502734357">మిడిల్ ట్రే</translation>
 <translation id="3109728660330352905">మీకు ఈ పేజీని చూడటానికి అధికారం లేదు.</translation>
 <translation id="3113284927548439113">మూడవ షిఫ్ట్</translation>
+<translation id="3114040155724590991">Android సిస్టమ్‌ను అప్‌డేట్ చేస్తే
+    మీ యాప్‌ను ప్రారంభించడానికి సాధారణంగా కంటే ఎక్కువ సమయం పట్టవచ్చు.</translation>
 <translation id="3115363211799416195">{0,plural, =1{గోప్యమైన ఫైల్‌ను డౌన్‌లోడ్ చేయాలా?}other{గోప్యమైన ఫైల్స్‌ను డౌన్‌లోడ్ చేయాలా?}}</translation>
 <translation id="3115874930288085374"><ph name="ENROLLMENT_DOMAIN" /> కోసం మీరు మీ డేటాను బ్యాకప్ చేసి, ఈ <ph name="DEVICE_TYPE" />ని రిటర్న్ చేయాల్సి ఉంటుంది.</translation>
 <translation id="3116158981186517402">లామినేట్</translation>
@@ -1258,6 +1263,7 @@
 <translation id="4306812610847412719">క్లిప్‌బోర్డ్</translation>
 <translation id="4308567447483056043">యూజర్ అనుబంధంగా లేనందున, ఈ పాలసీ విస్మరించబడింది. ఈ పాలసీని వర్తింపజేయాలంటే, Chrome బ్రౌజర్‌ను, అలాగే ప్రొఫైల్‌ను అడ్మిన్ కన్సోల్ ద్వారా తప్పనిసరిగా ఒకే సంస్థ మేనేజ్ చేయాలి.</translation>
 <translation id="4310070645992025887">మీ బ్రౌజింగ్ జర్నీలను సెర్చ్ చేయండి</translation>
+<translation id="4310496734563057511">మీరు ఈ పరికరాన్ని ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, Windows Helloను ఆన్ చేసి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా, అది మీరేనని వెరిఫై చేయవచ్చు</translation>
 <translation id="4312613361423056926">B2</translation>
 <translation id="4312866146174492540">బ్లాక్ చేయండి (డిఫాల్ట్)</translation>
 <translation id="4314815835985389558">సింక్‌ను నిర్వహించండి</translation>
@@ -1472,6 +1478,7 @@
 <translation id="4880827082731008257">హిస్టరీలో సెర్చ్ చేయండి</translation>
 <translation id="4881695831933465202">తెరువు</translation>
 <translation id="4885256590493466218">చెక్అవుట్‌లో <ph name="CARD_DETAIL" />తో పేమెంట్ చేయండి</translation>
+<translation id="4887406273302438710">Windows Helloతో పాస్‌వర్డ్‌లను సురక్షితం చేసుకోండి</translation>
 <translation id="4888600795924685526">విదేశీ భాషా అధ్యయనం</translation>
 <translation id="4889420713887366944">'అజ్ఞాత విండో తెరువు' బటన్, ప్రైవేట్‌గా బ్రౌజ్ చేయడానికి కొత్త అజ్ఞాత విండోను తెరవడానికి 'Enter'ను నొక్కండి</translation>
 <translation id="4892518386797173871">వెనుక భాగం</translation>
@@ -1691,6 +1698,7 @@
 <translation id="5426179911063097041"><ph name="SITE" /> మీకు నోటిఫికేషన్‌లను పంపాలనుకుంటోంది</translation>
 <translation id="5428105026674456456">స్పానిష్</translation>
 <translation id="5430298929874300616">బుక్‌మార్క్‌ను తీసివేయండి</translation>
+<translation id="5434423669266814150">పాస్‌వర్డ్‌లను పూరించడానికి TouchIDని ఆన్ చేయండి</translation>
 <translation id="5443468954631487277">వ్యతిరేక క్రమంలో ఉన్న ఫేస్ అప్</translation>
 <translation id="5447765697759493033">ఈ సైట్ అనువదించబడదు</translation>
 <translation id="5452270690849572955">ఈ <ph name="HOST_NAME" /> పేజీ కనుగొనబడలేదు</translation>
@@ -2468,6 +2476,7 @@
 <translation id="7564049878696755256">మీరు మీ <ph name="ORG_NAME" /> ఖాతాకు యాక్సెస్‌ని కోల్పోవచ్చు లేదా గుర్తింపు చోరీకి గురి కావచ్చు. మీ పాస్‌వర్డ్‌ని ఇప్పుడే రీసెట్ చేయాల్సిందిగా Chrome సిఫార్సు చేస్తోంది.</translation>
 <translation id="7564680668369175887">స్టేషన్ వాహనాలు</translation>
 <translation id="7567204685887185387">ఈ సర్వర్ <ph name="DOMAIN" /> అని నిరూపించుకోలేకపోయింది; దీని భద్రతా ప్రమాణపత్రం మోసపూరితంగా జారీ అయ్యి ఉండవచ్చు. ఇది తప్పుగా కాన్ఫిగర్ చేయడం వలన లేదా దాడిచేసే వ్యక్తి మీ కనెక్షన్‌కు అంతరాయం కలిగించడం వలన జరిగి ఉండవచ్చు.</translation>
+<translation id="7568616151991626879"><ph name="APP_NAME" />‌లో మీ పాస్‌వర్డ్‌ను పూరించడానికి Google Chrome ట్రై చేస్తోంది.</translation>
 <translation id="7569490014721427265">గోల్ఫ్</translation>
 <translation id="7569761772822664555">'సెర్చ్ ఇంజిన్‌లను మేనేజ్ చేయండి' బటన్, మీ ఆటోమేటిక్ సెర్చ్ ఇంజిన్‌ను, అలాగే సైట్ సెర్చ్‌ను మేనేజ్ చేయడానికి Enterను నొక్కండి</translation>
 <translation id="7569952961197462199">Chrome నుండి క్రెడిట్ కార్డ్‌ను తీసివేయాలా?</translation>
@@ -2498,6 +2507,7 @@
 <translation id="7637586430889951925">{COUNT,plural, =0{ఏవీ లేవు}=1{మీ ఖాతాలో 1 పాస్‌వర్డ్‌ (<ph name="DOMAIN_LIST" /> కోసం)}other{మీ ఖాతాలో # పాస్‌వర్డ్‌‌లు (<ph name="DOMAIN_LIST" /> కోసం)}}</translation>
 <translation id="7638605456503525968">సీరియల్ పోర్ట్‌లు</translation>
 <translation id="7639968568612851608">ముదురు బూడిద రంగు</translation>
+<translation id="7646681339175747202">మీరు ఇప్పుడే ఉపయోగించిన పాస్‌వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ పాస్‌వర్డ్‌ను ఇప్పుడే మార్చమని Google Password Manager సిఫార్సు చేస్తోంది.</translation>
 <translation id="7647206758853451655">ప్రింట్ క్వాలిటీ</translation>
 <translation id="7648992873808071793">ఈ పరికరంలో ఫైళ్లను నిల్వ చేయాలనుకుంటోంది</translation>
 <translation id="7653957176542370971">చెల్లింపు హ్యాండ్లర్ షీట్ మూసివేయబడింది</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index d51630b..abb130f38 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -424,6 +424,7 @@
 <translation id="2034971124472263449">บันทึกเลย</translation>
 <translation id="2035400064145347639">คู่มือและสารคดีการท่องเที่ยว</translation>
 <translation id="2036983605131262583">ม้วนกระดาษอื่น</translation>
+<translation id="2040463897538655645">พื้นที่เก็บข้อมูลแบบถอดได้</translation>
 <translation id="2040894699575719559">ตำแหน่งถูกบล็อก</translation>
 <translation id="2042213636306070719">ถาด 7</translation>
 <translation id="204357726431741734">ลงชื่อเข้าใช้เพื่อใช้รหัสผ่านที่บันทึกไว้ในบัญชี Google</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index 7fa021b..ebf01e566 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Gấp dạng phong thư</translation>
 <translation id="138218114945450791">Xanh lam nhạt</translation>
 <translation id="1382194467192730611">Thiết bị USB được quản trị viên của bạn cho phép</translation>
+<translation id="1382378825779654399">Bạn sẽ nhận được email thông báo nếu có chương trình giảm giá trên một trang web bất kỳ. Trang này sẽ được lưu vào <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Bạn không thấy thông tin hiện tại của mình? Xin vui lòng liên hệ với ngân hàng của bạn để cập nhật thông tin.</translation>
 <translation id="1384725838384960382">Bảng xác thực thông tin thanh toán an toàn</translation>
 <translation id="1386623374109090026">Chú thích</translation>
@@ -1520,6 +1521,7 @@
 <translation id="5018422839182700155">Không thể mở trang này</translation>
 <translation id="5019198164206649151">Không thể lưu trữ do chương trình phụ trợ ở trạng thái xấu</translation>
 <translation id="5020776957610079374">Âm nhạc thế giới</translation>
+<translation id="5021557570875267742">Theo dõi giá bằng Chrome</translation>
 <translation id="5023310440958281426">Kiểm tra chính sách của quản trị viên của bạn</translation>
 <translation id="5029568752722684782">Xóa bản sao</translation>
 <translation id="5030338702439866405">Cấp bởi</translation>
@@ -2240,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (Phong bì)</translation>
 <translation id="6996312675313362352">Luôn dịch <ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Ngành giải trí</translation>
+<translation id="7003335073762455340">Bạn đang theo dõi sản phẩm này. Trang này được lưu trong <ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Dùng Windows Hello để xác nhận các thẻ nhanh hơn</translation>
 <translation id="7006930604109697472">Vẫn gửi</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
@@ -3035,6 +3038,7 @@
 <translation id="9174623988242579721">Xe độ và xe có hiệu suất cao</translation>
 <translation id="9174917557437862841">Nút chuyển đổi thẻ, nhấn phím Enter để chuyển sang thẻ này</translation>
 <translation id="9179703756951298733">Quản lý thông tin thanh toán và thẻ tín dụng của bạn trong phần cài đặt của Chrome</translation>
+<translation id="9179907736442194268">Nhận email thông báo nếu có chương trình giảm giá trên một trang web bất kỳ</translation>
 <translation id="9183302530794969518">Google Tài liệu</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> sử dụng giao thức không được hỗ trợ.</translation>
 <translation id="9187461866967718678">Thể thao mạo hiểm</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index 7d2014b..51612a3 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -421,6 +421,7 @@
 <translation id="2034971124472263449">仍然保存</translation>
 <translation id="2035400064145347639">旅行指南与游记</translation>
 <translation id="2036983605131262583">备用卷</translation>
+<translation id="2040463897538655645">可拆卸式存储设备</translation>
 <translation id="2040894699575719559">无权获取位置信息</translation>
 <translation id="2042213636306070719">纸匣 7</translation>
 <translation id="204357726431741734">登录后即可使用您 Google 帐号中保存的密码</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index eb278f3a..659793b 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">包二摺</translation>
 <translation id="138218114945450791">淺藍色</translation>
 <translation id="1382194467192730611">系統管理員允許使用的 USB 裝置</translation>
+<translation id="1382378825779654399">產品在任何網站上降價時都會透過電子郵件通知你。這個網頁將儲存到「<ph name="LAST_BOOKMARKS_FOLDER" />」。</translation>
 <translation id="1382912999714108023">資料與現況不符嗎?請洽詢銀行以更新這筆資料。</translation>
 <translation id="1384725838384960382">安全付款憑證驗證表</translation>
 <translation id="1386623374109090026">註解</translation>
@@ -421,6 +422,7 @@
 <translation id="2034971124472263449">繼續儲存</translation>
 <translation id="2035400064145347639">旅遊指南與遊記</translation>
 <translation id="2036983605131262583">替用卷</translation>
+<translation id="2040463897538655645">外接儲存裝置</translation>
 <translation id="2040894699575719559">禁止取得位置資訊</translation>
 <translation id="2042213636306070719">紙匣 7</translation>
 <translation id="204357726431741734">登入以使用儲存在 Google 帳戶中的密碼</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5018422839182700155">無法開啟這個網頁</translation>
 <translation id="5019198164206649151">備份儲存狀態不佳</translation>
 <translation id="5020776957610079374">世界音樂</translation>
+<translation id="5021557570875267742">使用 Chrome 追蹤價格</translation>
 <translation id="5023310440958281426">請查看你的管理員政策</translation>
 <translation id="5029568752722684782">清除複本</translation>
 <translation id="5030338702439866405">發行者</translation>
@@ -2239,6 +2242,7 @@
 <translation id="6993898126790112050">6x9 (信封)</translation>
 <translation id="6996312675313362352">一律翻譯<ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">娛樂業</translation>
+<translation id="7003335073762455340">你正在追蹤這項產品,這個網頁已儲存到「<ph name="LAST_BOOKMARKS_FOLDER" />」。</translation>
 <translation id="7004583254764674281">使用 Windows Hello 加快卡片驗證速度</translation>
 <translation id="7006930604109697472">仍要傳送</translation>
 <translation id="7012363358306927923">中國銀聯</translation>
@@ -3033,6 +3037,7 @@
 <translation id="9174623988242579721">改裝車與性能車</translation>
 <translation id="9174917557437862841">分頁切換按鈕,按下 Enter 鍵即可切換到這個分頁</translation>
 <translation id="9179703756951298733">在 Chrome 設定中管理付款和信用卡資訊</translation>
+<translation id="9179907736442194268">產品在任何網站上降價時都會通知你</translation>
 <translation id="9183302530794969518">Google 文件</translation>
 <translation id="9183425211371246419"><ph name="HOST_NAME" /> 使用了不支援的通訊協定。</translation>
 <translation id="9187461866967718678">極限運動</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb
index 1541f8c..f295ab53 100644
--- a/components/strings/components_strings_zu.xtb
+++ b/components/strings/components_strings_zu.xtb
@@ -174,6 +174,7 @@
 <translation id="1380591466760231819">Ukugoqa incwadi</translation>
 <translation id="138218114945450791">Okuluhlaza okwesibhakabhaka okukhanyayo</translation>
 <translation id="1382194467192730611">Idivayisi ye-USB ivunyelwe umlawuli wakho</translation>
+<translation id="1382378825779654399">Uzothola izexwayiso ze-imeyili uma intengo yehla kunoma yiliphi isayithi. Leli khasi lizolondolozwa ku-<ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="1382912999714108023">Awuluboni ulwazi lwakho lwamanje?Sicela uxhumane nebhange lakho ukuze ulubuyekeze.</translation>
 <translation id="1384725838384960382">Ishidi lokufakazela ubuqiniso lwezimfanelo zenkokhelo elivikelekile</translation>
 <translation id="1386623374109090026">Amazwana</translation>
@@ -1517,6 +1518,7 @@
 <translation id="5018422839182700155">Ayikwazi ukuvula leli khasi</translation>
 <translation id="5019198164206649151">Isekela isitolo esisesimeni esibi</translation>
 <translation id="5020776957610079374">Umculo womhlaba</translation>
+<translation id="5021557570875267742">Landelela izintengo nge-Chrome</translation>
 <translation id="5023310440958281426">Buka izinqubomgomo zomlawuli wakho</translation>
 <translation id="5029568752722684782">Sula ikhophi</translation>
 <translation id="5030338702439866405">Ikhishwe yi-</translation>
@@ -2237,6 +2239,7 @@
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Hlala uhumusha isi-<ph name="ORIGINAL_LANGUAGE" /></translation>
 <translation id="6999969238895751684">Imboni yokuzijabulisa</translation>
+<translation id="7003335073762455340">Ulandelela lo mkhiqizo Leli khasi lilondoloziwe ku-<ph name="LAST_BOOKMARKS_FOLDER" />.</translation>
 <translation id="7004583254764674281">Sebenzisa i-Windows Hello ukuqinisekisa amakhadi ngokushesha</translation>
 <translation id="7006930604109697472">Thumela noma kunjalo</translation>
 <translation id="7012363358306927923">I-China UnionPay</translation>
@@ -3031,6 +3034,7 @@
 <translation id="9174623988242579721">Izimoto ezenziwe ngezifiso nokusebenza</translation>
 <translation id="9174917557437862841">Inkinobho yokushintsha ithebhu, cindezela ku-Enter ukuze ushintshele kule thebhu</translation>
 <translation id="9179703756951298733">Phatha izinkokhelo zakho nolwazi lwekhadi lesikweletu kumasethingi we-Chrome</translation>
+<translation id="9179907736442194268">Thola izexwayiso ze-imeyili uma intengo yehla kunoma yiliphi isayithi</translation>
 <translation id="9183302530794969518">Google Amadokhumenti</translation>
 <translation id="9183425211371246419">I-<ph name="HOST_NAME" /> isebenzisa iphrothokholi engasekelwe.</translation>
 <translation id="9187461866967718678">Ezemidlalo ezidlulele</translation>
diff --git a/components/sync/engine/cycle/data_type_tracker.cc b/components/sync/engine/cycle/data_type_tracker.cc
index 0d6b530..3d93040 100644
--- a/components/sync/engine/cycle/data_type_tracker.cc
+++ b/components/sync/engine/cycle/data_type_tracker.cc
@@ -306,7 +306,7 @@
   }
 }
 
-void DataTypeTracker::RecordSuccessfulSyncCycle() {
+void DataTypeTracker::RecordSuccessfulSyncCycleIfNotBlocked() {
   // If we were blocked, then we would have been excluded from this cycle's
   // GetUpdates and Commit actions.  Our state remains unchanged.
   if (IsBlocked()) {
diff --git a/components/sync/engine/cycle/data_type_tracker.h b/components/sync/engine/cycle/data_type_tracker.h
index 84346a93..e1ee89d 100644
--- a/components/sync/engine/cycle/data_type_tracker.h
+++ b/components/sync/engine/cycle/data_type_tracker.h
@@ -100,7 +100,7 @@
   // called since we count those cases as success. So we need to check if the
   // datatype is in partial throttling or backoff in the beginning of this
   // function.
-  void RecordSuccessfulSyncCycle();
+  void RecordSuccessfulSyncCycleIfNotBlocked();
 
   // Records that the initial sync has completed successfully. This gets called
   // when the initial configuration/download cycle has finished for this type.
diff --git a/components/sync/engine/cycle/nudge_tracker.cc b/components/sync/engine/cycle/nudge_tracker.cc
index ee58ade..d647a52 100644
--- a/components/sync/engine/cycle/nudge_tracker.cc
+++ b/components/sync/engine/cycle/nudge_tracker.cc
@@ -82,7 +82,7 @@
   }
 }
 
-void NudgeTracker::RecordSuccessfulSyncCycle(ModelTypeSet types) {
+void NudgeTracker::RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet types) {
   // If a retry was required, we've just serviced it.  Unset the flag.
   if (IsRetryRequired()) {
     current_retry_time_ = base::TimeTicks();
@@ -94,7 +94,7 @@
   for (ModelType type : types) {
     TypeTrackerMap::const_iterator tracker_it = type_trackers_.find(type);
     DCHECK(tracker_it != type_trackers_.end()) << ModelTypeToDebugString(type);
-    tracker_it->second->RecordSuccessfulSyncCycle();
+    tracker_it->second->RecordSuccessfulSyncCycleIfNotBlocked();
   }
 }
 
diff --git a/components/sync/engine/cycle/nudge_tracker.h b/components/sync/engine/cycle/nudge_tracker.h
index d1e9b82c..6155cdc 100644
--- a/components/sync/engine/cycle/nudge_tracker.h
+++ b/components/sync/engine/cycle/nudge_tracker.h
@@ -54,7 +54,9 @@
 
   // Tells this class that all required update fetching or committing has
   // completed successfully, as the result of a "normal" sync cycle.
-  void RecordSuccessfulSyncCycle(ModelTypeSet types);
+  // Any blocked model types will ignore this, but non-blocked types and the
+  // overall state will still get updated.
+  void RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet types);
 
   // Tells this class that the initial sync has happened for the given |types|,
   // generally due to a "configuration" cycle.
diff --git a/components/sync/engine/cycle/nudge_tracker_unittest.cc b/components/sync/engine/cycle/nudge_tracker_unittest.cc
index 27afd93..150a148 100644
--- a/components/sync/engine/cycle/nudge_tracker_unittest.cc
+++ b/components/sync/engine/cycle/nudge_tracker_unittest.cc
@@ -65,7 +65,7 @@
 
   void SetInvalidationsInSync() {
     nudge_tracker_.OnInvalidationsEnabled();
-    nudge_tracker_.RecordSuccessfulSyncCycle({});
+    nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked({});
   }
 
   std::unique_ptr<SyncInvalidation> BuildInvalidation(
@@ -239,7 +239,7 @@
   }
 
   // Clear status then verify.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   {
     sync_pb::GetUpdateTriggers gu_trigger;
     nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger);
@@ -268,7 +268,7 @@
   }
 
   // Clear status then verify.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   {
     sync_pb::GetUpdateTriggers gu_trigger;
     nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger);
@@ -292,7 +292,7 @@
 
   // We must successfully complete a sync cycle while invalidations are enabled
   // to be sure that we're in sync.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(InvalidationsOutOfSync());
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
@@ -302,13 +302,13 @@
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // A sync cycle while invalidations are disabled won't reset the flag.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(InvalidationsOutOfSync());
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // Nor will the re-enabling of invalidations be sufficient, even now that
   // we've had a successful sync cycle.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(InvalidationsOutOfSync());
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 }
@@ -324,7 +324,7 @@
   EXPECT_EQ(1, ProtoLocallyModifiedCount(PREFERENCES));
 
   // Record a successful sync cycle.  Verify the count is cleared.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_EQ(0, ProtoLocallyModifiedCount(PREFERENCES));
 }
 
@@ -339,7 +339,7 @@
   EXPECT_EQ(1, ProtoRefreshRequestedCount(SESSIONS));
 
   // Record a successful sync cycle.  Verify the count is cleared.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_EQ(0, ProtoRefreshRequestedCount(SESSIONS));
 }
 
@@ -352,7 +352,7 @@
   EXPECT_TRUE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
   // Note: The initial sync happens as part of a configuration cycle, not a
   // normal cycle, so here we need to use RecordInitialSyncDone() rather than
-  // RecordSuccessfulSyncCycle().
+  // RecordSuccessfulSyncCycleIfNotBlocked().
   // A finished initial sync for a different data type doesn't affect us.
   nudge_tracker_.RecordInitialSyncDone({EXTENSIONS});
   EXPECT_TRUE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
@@ -367,22 +367,22 @@
   // But not for SESSIONS.
   EXPECT_FALSE(nudge_tracker_.IsSyncRequired({SESSIONS}));
   // A successful cycle for SESSIONS doesn't change anything.
-  nudge_tracker_.RecordSuccessfulSyncCycle({SESSIONS});
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked({SESSIONS});
   EXPECT_TRUE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
   // A successful cycle for all types resolves things.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
 
   // Local changes.
   nudge_tracker_.RecordLocalChange(SESSIONS);
   EXPECT_TRUE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
 
   // Refresh requests.
   nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS));
   EXPECT_TRUE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
 
   // Invalidations.
@@ -391,12 +391,12 @@
   EXPECT_TRUE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
 
   // Invalidation is added to GetUpdates trigger message and processed, so
-  // after RecordSuccessfulSyncCycle() it'll be deleted.
+  // after RecordSuccessfulSyncCycleIfNotBlocked() it'll be deleted.
   sync_pb::GetUpdateTriggers gu_trigger;
   nudge_tracker_.FillProtoMessage(PREFERENCES, &gu_trigger);
   ASSERT_EQ(1, gu_trigger.notification_hint_size());
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   EXPECT_FALSE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
 }
@@ -417,13 +417,13 @@
   // Local changes.
   nudge_tracker_.RecordLocalChange(SESSIONS);
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // Refresh requests.
   nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS));
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // Invalidations.
@@ -432,12 +432,12 @@
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // Invalidation is added to GetUpdates trigger message and processed, so
-  // after RecordSuccessfulSyncCycle() it'll be deleted.
+  // after RecordSuccessfulSyncCycleIfNotBlocked() it'll be deleted.
   sync_pb::GetUpdateTriggers gu_trigger;
   nudge_tracker_.FillProtoMessage(PREFERENCES, &gu_trigger);
   ASSERT_EQ(1, gu_trigger.notification_hint_size());
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 }
@@ -474,7 +474,7 @@
   EXPECT_TRUE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
 
   // A successful sync cycle means we took care of preferences.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsSyncRequired(ModelTypeSet::All()));
 
   // But we still haven't dealt with sessions and bookmarks. We'll need to
@@ -518,7 +518,7 @@
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // A successful sync cycle means we took care of preferences.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // But we still haven't dealt with sessions and bookmarks. We'll need to
@@ -669,7 +669,7 @@
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // Successful sync cycle at t0 changes nothing.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsRetryRequired());
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
@@ -679,7 +679,7 @@
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
   // A sync cycle unsets the flag.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsRetryRequired());
 
   // It's still unset at the start of the next sync cycle.
@@ -709,7 +709,7 @@
   EXPECT_TRUE(nudge_tracker_.IsRetryRequired());
 
   // Verify that the successful sync cycle clears the flag.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsRetryRequired());
 
   // Verify expecations around the new retry time.
@@ -741,7 +741,7 @@
   EXPECT_FALSE(nudge_tracker_.IsRetryRequired());
 
   // The cycle succeeded.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   // The time t3 is greater than the GU retry time scheduled at the beginning of
   // the test, but later than the retry time that overwrote it during the
@@ -773,7 +773,7 @@
   EXPECT_TRUE(nudge_tracker_.IsRetryRequired());
 
   // The second cycle is a success.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsRetryRequired());
 }
 
@@ -806,19 +806,19 @@
   EXPECT_TRUE(nudge_tracker_.IsRetryRequired());
 
   // It succeeds.  The retry time is not updated, so it should remain at t5.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   // Another sync cycle.  This one is still before the scheduled retry.  It does
   // not change the scheduled retry time.
   nudge_tracker_.SetSyncCycleStartTime(t4);
   EXPECT_FALSE(nudge_tracker_.IsRetryRequired());
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   // The retry scheduled way back during the first cycle of this test finally
   // becomes due.  Perform a successful sync cycle to service it.
   nudge_tracker_.SetSyncCycleStartTime(t6);
   EXPECT_TRUE(nudge_tracker_.IsRetryRequired());
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 }
 
 // Test the default nudge delays for various types.
@@ -936,7 +936,7 @@
   sync_pb::GetUpdateTriggers gu_trigger;
   nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger);
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(IsInvalidationAcknowledged(inv_id));
 
   EXPECT_TRUE(AllInvalidationsAccountedFor());
@@ -957,7 +957,7 @@
   sync_pb::GetUpdateTriggers pf_gu_trigger;
   nudge_tracker_.FillProtoMessage(PREFERENCES, &pf_gu_trigger);
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(IsInvalidationAcknowledged(inv1_id));
   EXPECT_TRUE(IsInvalidationAcknowledged(inv2_id));
   EXPECT_TRUE(IsInvalidationAcknowledged(inv3_id));
@@ -991,7 +991,7 @@
   nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger);
 
   // This should recover from the drop and bring us back into sync.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   for (int id : invalidation_ids)
     EXPECT_TRUE(IsInvalidationAcknowledged(id));
@@ -1007,7 +1007,7 @@
   EXPECT_TRUE(IsInvalidationUnacknowledged(inv_id));
   sync_pb::GetUpdateTriggers gu_trigger;
   nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger);
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(IsInvalidationAcknowledged(inv_id));
   EXPECT_TRUE(AllInvalidationsAccountedFor());
 }
@@ -1033,7 +1033,7 @@
   nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger);
 
   // Finish the sync cycle and expect all remaining invalidations to be acked.
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(IsInvalidationAcknowledged(inv1_id));
   EXPECT_TRUE(IsInvalidationAcknowledged(inv2_id));
   EXPECT_TRUE(IsInvalidationAcknowledged(inv3_id));
@@ -1045,11 +1045,11 @@
 
 TEST_F(NudgeTrackerAckTrackingTest, AckInvalidationsAddedDuringSyncCycle) {
   // Invalidations that are not used in FillProtoMessage() persist until
-  // next RecordSuccessfulSyncCycle().
+  // next RecordSuccessfulSyncCycleIfNotBlocked().
   int inv1_id = SendInvalidation(BOOKMARKS, 10, "hint");
   int inv2_id = SendInvalidation(BOOKMARKS, 14, "hint2");
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   EXPECT_FALSE(IsInvalidationAcknowledged(inv1_id));
   EXPECT_FALSE(IsInvalidationAcknowledged(inv2_id));
@@ -1061,20 +1061,20 @@
 
   int inv3_id = SendInvalidation(BOOKMARKS, 100, "hint3");
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   EXPECT_TRUE(IsInvalidationAcknowledged(inv1_id));
   EXPECT_TRUE(IsInvalidationAcknowledged(inv2_id));
   EXPECT_FALSE(IsInvalidationAcknowledged(inv3_id));
 
   // Be sure that invalidations are not used twice in proto messages.
-  // Invalidations are expected to be deleted in RecordSuccessfulSyncCycle
+  // Invalidations are expected to be deleted in RecordSuccessfulSyncCycleIfNotBlocked
   // after being processed in proto message.
   sync_pb::GetUpdateTriggers gu_trigger_2;
   nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger_2);
   ASSERT_EQ(1, gu_trigger_2.notification_hint_size());
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(AllInvalidationsAccountedFor());
 }
 
@@ -1083,7 +1083,7 @@
   int inv1_id = SendInvalidation(BOOKMARKS, 1, "hint1");
   int inv2_id = SendInvalidation(BOOKMARKS, 2, "hint2");
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
   EXPECT_FALSE(IsInvalidationAcknowledged(inv1_id));
   EXPECT_FALSE(IsInvalidationAcknowledged(inv2_id));
@@ -1103,7 +1103,7 @@
   nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger_2);
   ASSERT_EQ(3, gu_trigger_2.notification_hint_size());
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_TRUE(AllInvalidationsAccountedFor());
 }
 
diff --git a/components/sync/engine/sync_scheduler_impl.cc b/components/sync/engine/sync_scheduler_impl.cc
index f835b63..7ea925da 100644
--- a/components/sync/engine/sync_scheduler_impl.cc
+++ b/components/sync/engine/sync_scheduler_impl.cc
@@ -431,9 +431,7 @@
     // Note that some types might have become blocked (throttled) during the
     // cycle. NudgeTracker knows of that, and won't clear any "outstanding work"
     // flags for these types.
-    // TODO(crbug.com/930074): Consider renaming this method to
-    // RecordSuccessfulSyncCycleIfNotBlocked.
-    nudge_tracker_.RecordSuccessfulSyncCycle(types);
+    nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(types);
     HandleSuccess();
 
     // If this was a canary, we may need to restart the poll timer (the poll
diff --git a/components/sync/engine/syncer_unittest.cc b/components/sync/engine/syncer_unittest.cc
index da17b002..e91b5b3 100644
--- a/components/sync/engine/syncer_unittest.cc
+++ b/components/sync/engine/syncer_unittest.cc
@@ -240,7 +240,7 @@
   // not preceeded by GetUpdates.
   void ConfigureNoGetUpdatesRequired() {
     nudge_tracker_.OnInvalidationsEnabled();
-    nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+    nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
 
     ASSERT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
   }
@@ -617,7 +617,7 @@
   EXPECT_FALSE(SyncShareNudge());
   EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 
-  nudge_tracker_.RecordSuccessfulSyncCycle(ModelTypeSet::All());
+  nudge_tracker_.RecordSuccessfulSyncCycleIfNotBlocked(ModelTypeSet::All());
   EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All()));
 }
 
diff --git a/components/sync_device_info/device_info_prefs.cc b/components/sync_device_info/device_info_prefs.cc
index 8bce60f89..23e47f3 100644
--- a/components/sync_device_info/device_info_prefs.cc
+++ b/components/sync_device_info/device_info_prefs.cc
@@ -74,9 +74,9 @@
 }
 
 void DeviceInfoPrefs::AddLocalCacheGuid(const std::string& cache_guid) {
-  ListPrefUpdate update_cache_guids(pref_service_,
-                                    kDeviceInfoRecentGUIDsWithTimestamps);
-  base::Value::List& update_list = update_cache_guids->GetList();
+  ScopedListPrefUpdate update_cache_guids(pref_service_,
+                                          kDeviceInfoRecentGUIDsWithTimestamps);
+  base::Value::List& update_list = update_cache_guids.Get();
 
   for (auto it = update_list.begin(); it != update_list.end(); it++) {
     if (MatchesGuidInDictionary(*it, cache_guid)) {
@@ -101,9 +101,9 @@
 }
 
 void DeviceInfoPrefs::GarbageCollectExpiredCacheGuids() {
-  ListPrefUpdate update_cache_guids(pref_service_,
-                                    kDeviceInfoRecentGUIDsWithTimestamps);
-  update_cache_guids->GetList().EraseIf([this](const auto& dict) {
+  ScopedListPrefUpdate update_cache_guids(pref_service_,
+                                          kDeviceInfoRecentGUIDsWithTimestamps);
+  update_cache_guids->EraseIf([this](const auto& dict) {
     // Avoid crashes if the preference contains corrupt entries that are not
     // dictionaries, and meanwhile clean up these corrupt entries.
     if (!dict.is_dict()) {
diff --git a/components/sync_device_info/device_info_prefs_unittest.cc b/components/sync_device_info/device_info_prefs_unittest.cc
index d380c6a..a42aa9e6 100644
--- a/components/sync_device_info/device_info_prefs_unittest.cc
+++ b/components/sync_device_info/device_info_prefs_unittest.cc
@@ -56,9 +56,9 @@
 
   // Manipulate the preference directly to add a corrupt entry to the list,
   // which is a string instead of a dictionary.
-  ListPrefUpdate cache_guids_update(&pref_service_,
-                                    kDeviceInfoRecentGUIDsWithTimestamps);
-  base::Value::List& update_list = cache_guids_update->GetList();
+  ScopedListPrefUpdate cache_guids_update(&pref_service_,
+                                          kDeviceInfoRecentGUIDsWithTimestamps);
+  base::Value::List& update_list = cache_guids_update.Get();
   update_list.Insert(update_list.begin(), base::Value("corrupt_string_entry"));
 
   // Add another corrupt entry: in this case the entry is a dictionary, but it
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
index ee77b58..4dbb335 100644
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -94,8 +94,7 @@
   return "android";
 #elif BUILDFLAG(IS_FUCHSIA)
   return "fuchsia";
-#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
-    BUILDFLAG(IS_BSD) || BUILDFLAG(IS_SOLARIS)
+#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) || BUILDFLAG(IS_SOLARIS)
   // Default BSD and SOLARIS to Linux to not break those builds, although these
   // platforms are not officially supported by Chrome.
   return "linux";
diff --git a/components/variations/variations_crash_keys.cc b/components/variations/variations_crash_keys.cc
index e6beff9..3a05b2d1 100644
--- a/components/variations/variations_crash_keys.cc
+++ b/components/variations/variations_crash_keys.cc
@@ -35,7 +35,7 @@
 #if BUILDFLAG(LARGE_VARIATION_KEY_SIZE)
 constexpr size_t kVariationsKeySize = 8192;
 #else
-constexpr size_t kVariationsKeySize = 4096;
+constexpr size_t kVariationsKeySize = 6144;
 #endif
 
 // Crash key reporting the number of experiments. 8 is the size of the crash key
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
index 5900b991..228cdb4 100644
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -34,120 +34,136 @@
 namespace features {
 
 // Enables the use of power hint APIs on Android.
-const base::Feature kAdpf{"Adpf", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAdpf, "Adpf", base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Target duration used for power hint on Android.
 // `0` indicates use hard coded default.
 const base::FeatureParam<int> kAdpfTargetDurationMs{&kAdpf,
                                                     "AdpfTargetDurationMs", 0};
 
-const base::Feature kEnableOverlayPrioritization {
-  "EnableOverlayPrioritization",
+BASE_FEATURE(kEnableOverlayPrioritization,
+             "EnableOverlayPrioritization",
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #endif
-};
+);
 
-const base::Feature kUseMultipleOverlays {
-  "UseMultipleOverlays",
+BASE_FEATURE(kUseMultipleOverlays,
+             "UseMultipleOverlays",
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #endif
-};
+);
 const char kMaxOverlaysParam[] = "max_overlays";
 
-const base::Feature kDelegatedCompositing {
-  "DelegatedCompositing",
+BASE_FEATURE(kDelegatedCompositing,
+             "DelegatedCompositing",
 #if BUILDFLAG(IS_CHROMEOS_LACROS)
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #endif
-};
+);
 
-const base::Feature kVideoDetectorIgnoreNonVideos{
-    "VideoDetectorIgnoreNonVideos", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kVideoDetectorIgnoreNonVideos,
+             "VideoDetectorIgnoreNonVideos",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSimpleFrameRateThrottling{
-    "SimpleFrameRateThrottling", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSimpleFrameRateThrottling,
+             "SimpleFrameRateThrottling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Kill-switch to disable de-jelly, even if flags/properties indicate it should
 // be enabled.
-const base::Feature kDisableDeJelly{"DisableDeJelly",
-                                    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDisableDeJelly,
+             "DisableDeJelly",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_ANDROID)
 // When wide color gamut content from the web is encountered, promote our
 // display to wide color gamut if supported.
-const base::Feature kDynamicColorGamut{"DynamicColorGamut",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDynamicColorGamut,
+             "DynamicColorGamut",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif
 
 // Submit CompositorFrame from SynchronousLayerTreeFrameSink directly to viz in
 // WebView.
-const base::Feature kVizFrameSubmissionForWebView{
-    "VizFrameSubmissionForWebView", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kVizFrameSubmissionForWebView,
+             "VizFrameSubmissionForWebView",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Whether we should use the real buffers corresponding to overlay candidates in
 // order to do a pageflip test rather than allocating test buffers.
-const base::Feature kUseRealBuffersForPageFlipTest{
-    "UseRealBuffersForPageFlipTest", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUseRealBuffersForPageFlipTest,
+             "UseRealBuffersForPageFlipTest",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_FUCHSIA)
 // Enables SkiaOutputDeviceBufferQueue instead of Vulkan swapchain on Fuchsia.
-const base::Feature kUseSkiaOutputDeviceBufferQueue{
-    "UseSkiaOutputDeviceBufferQueue", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUseSkiaOutputDeviceBufferQueue,
+             "UseSkiaOutputDeviceBufferQueue",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 // Whether we should log extra debug information to webrtc native log.
-const base::Feature kWebRtcLogCapturePipeline{
-    "WebRtcLogCapturePipeline", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kWebRtcLogCapturePipeline,
+             "WebRtcLogCapturePipeline",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_WIN)
 // Enables swap chains to call SetPresentDuration to request DWM/OS to reduce
 // vsync.
-const base::Feature kUseSetPresentDuration{"UseSetPresentDuration",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kUseSetPresentDuration,
+             "UseSetPresentDuration",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_WIN)
 
 // Enables platform supported delegated ink trails instead of Skia backed
 // delegated ink trails.
-const base::Feature kUsePlatformDelegatedInk{"UsePlatformDelegatedInk",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUsePlatformDelegatedInk,
+             "UsePlatformDelegatedInk",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Used to debug Android WebView Vulkan composite. Composite to an intermediate
 // buffer and draw the intermediate buffer to the secondary command buffer.
-const base::Feature kWebViewVulkanIntermediateBuffer{
-    "WebViewVulkanIntermediateBuffer", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kWebViewVulkanIntermediateBuffer,
+             "WebViewVulkanIntermediateBuffer",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_ANDROID)
 // Hardcoded as disabled for WebView to have a different default for
 // UseSurfaceLayerForVideo from chrome.
-const base::Feature kUseSurfaceLayerForVideoDefault{
-    "UseSurfaceLayerForVideoDefault", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUseSurfaceLayerForVideoDefault,
+             "UseSurfaceLayerForVideoDefault",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kWebViewNewInvalidateHeuristic{
-    "WebViewNewInvalidateHeuristic", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kWebViewNewInvalidateHeuristic,
+             "WebViewNewInvalidateHeuristic",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Historically media on android hardcoded SRGB color space because of lack of
 // color space support in surface control. This controls if we want to use real
 // color space in DisplayCompositor.
-const base::Feature kUseRealVideoColorSpaceForDisplay{
-    "UseRealVideoColorSpaceForDisplay", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kUseRealVideoColorSpaceForDisplay,
+             "UseRealVideoColorSpaceForDisplay",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 // Used by CC to throttle frame production of older surfaces. Used by the
 // Browser to batch SurfaceSync calls sent to the Renderer for properties can
 // change in close proximity to each other.
-const base::Feature kSurfaceSyncThrottling{"SurfaceSyncThrottling",
-                                           base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSurfaceSyncThrottling,
+             "SurfaceSyncThrottling",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kDrawPredictedInkPoint{"DrawPredictedInkPoint",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDrawPredictedInkPoint,
+             "DrawPredictedInkPoint",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const char kDraw1Point12Ms[] = "1-pt-12ms";
 const char kDraw2Points6Ms[] = "2-pt-6ms";
 const char kDraw1Point6Ms[] = "1-pt-6ms";
@@ -159,15 +175,18 @@
 const char kPredictorLsq[] = "lsq";
 
 // Used by Viz to parameterize adjustments to scheduler deadlines.
-const base::Feature kDynamicSchedulerForDraw{"DynamicSchedulerForDraw",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDynamicSchedulerForDraw,
+             "DynamicSchedulerForDraw",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // User to parameterize adjustments to clients' deadlines.
-const base::Feature kDynamicSchedulerForClients{
-    "DynamicSchedulerForClients", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDynamicSchedulerForClients,
+             "DynamicSchedulerForClients",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_MAC)
-const base::Feature kMacCAOverlayQuad{"MacCAOverlayQuads",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kMacCAOverlayQuad,
+             "MacCAOverlayQuads",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 // The maximum supported overlay quad number on Mac CALayerOverlay.
 // The default is set to -1. When MaxNum is < 0, the default in CALayerOverlay
 // will be used instead.
@@ -176,26 +195,30 @@
 #endif
 
 #if BUILDFLAG(IS_APPLE) || defined(USE_OZONE)
-const base::Feature kCanSkipRenderPassOverlay{"CanSkipRenderPassOverlay",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCanSkipRenderPassOverlay,
+             "CanSkipRenderPassOverlay",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 // TODO(crbug.com/1357744): Solve the vulkan flakiness issue before enabling
 // this on Linux.
-const base::Feature kAllowUndamagedNonrootRenderPassToSkip{
-    "AllowUndamagedNonrootRenderPassToSkip", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAllowUndamagedNonrootRenderPassToSkip,
+             "AllowUndamagedNonrootRenderPassToSkip",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Whether to:
 // - Perform periodic inactive frame culling.
 // - Cull *all* frames in case of critical memory pressure, rather than keeping
 //   one.
-const base::Feature kAggressiveFrameCulling{"AggressiveFrameCulling",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kAggressiveFrameCulling,
+             "AggressiveFrameCulling",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // If enabled, do not rely on surface garbage collection to happen
 // periodically, but trigger it eagerly, to avoid missing calls.
-const base::Feature kEagerSurfaceGarbageCollection{
-    "EagerSurfaceGarbageCollection", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEagerSurfaceGarbageCollection,
+             "EagerSurfaceGarbageCollection",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 bool IsAdpfEnabled() {
   // TODO(crbug.com/1157620): Limit this to correct android version.
@@ -218,8 +241,8 @@
 // If a synchronous IPC should used when destroying windows. This exists to test
 // the impact of removing the sync IPC.
 bool IsSyncWindowDestructionEnabled() {
-  static constexpr base::Feature kSyncWindowDestruction{
-      "SyncWindowDestruction", base::FEATURE_ENABLED_BY_DEFAULT};
+  static BASE_FEATURE(kSyncWindowDestruction, "SyncWindowDestruction",
+                      base::FEATURE_ENABLED_BY_DEFAULT);
 
   return base::FeatureList::IsEnabled(kSyncWindowDestruction);
 }
diff --git a/components/viz/common/features.h b/components/viz/common/features.h
index b8395228..689af05 100644
--- a/components/viz/common/features.h
+++ b/components/viz/common/features.h
@@ -19,50 +19,49 @@
 
 namespace features {
 
-VIZ_COMMON_EXPORT extern const base::Feature kAdpf;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kAdpf);
 VIZ_COMMON_EXPORT extern const base::FeatureParam<int> kAdpfTargetDurationMs;
-VIZ_COMMON_EXPORT extern const base::Feature kEnableOverlayPrioritization;
-VIZ_COMMON_EXPORT extern const base::Feature kDelegatedCompositing;
-VIZ_COMMON_EXPORT extern const base::Feature kRecordSkPicture;
-VIZ_COMMON_EXPORT extern const base::Feature kDisableDeJelly;
-VIZ_COMMON_EXPORT extern const base::Feature kUseMultipleOverlays;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kEnableOverlayPrioritization);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kDelegatedCompositing);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kRecordSkPicture);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kDisableDeJelly);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kUseMultipleOverlays);
 VIZ_COMMON_EXPORT extern const char kMaxOverlaysParam[];
-VIZ_COMMON_EXPORT extern const base::Feature kVideoDetectorIgnoreNonVideos;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kVideoDetectorIgnoreNonVideos);
 #if BUILDFLAG(IS_ANDROID)
-VIZ_COMMON_EXPORT extern const base::Feature kDynamicColorGamut;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kDynamicColorGamut);
 #endif
-VIZ_COMMON_EXPORT extern const base::Feature kVizFrameSubmissionForWebView;
-VIZ_COMMON_EXPORT extern const base::Feature kUseRealBuffersForPageFlipTest;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kVizFrameSubmissionForWebView);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kUseRealBuffersForPageFlipTest);
 #if BUILDFLAG(IS_FUCHSIA)
-VIZ_COMMON_EXPORT extern const base::Feature kUseSkiaOutputDeviceBufferQueue;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kUseSkiaOutputDeviceBufferQueue);
 #endif
-VIZ_COMMON_EXPORT extern const base::Feature kWebRtcLogCapturePipeline;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebRtcLogCapturePipeline);
 #if BUILDFLAG(IS_WIN)
-VIZ_COMMON_EXPORT extern const base::Feature kUseSetPresentDuration;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kUseSetPresentDuration);
 #endif  // BUILDFLAG(IS_WIN)
-VIZ_COMMON_EXPORT extern const base::Feature kWebViewVulkanIntermediateBuffer;
-VIZ_COMMON_EXPORT extern const base::Feature kUsePlatformDelegatedInk;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebViewVulkanIntermediateBuffer);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kUsePlatformDelegatedInk);
 #if BUILDFLAG(IS_ANDROID)
-VIZ_COMMON_EXPORT extern const base::Feature kUseSurfaceLayerForVideoDefault;
-VIZ_COMMON_EXPORT extern const base::Feature kWebViewNewInvalidateHeuristic;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kUseSurfaceLayerForVideoDefault);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebViewNewInvalidateHeuristic);
 #endif
-VIZ_COMMON_EXPORT extern const base::Feature kSurfaceSyncThrottling;
-VIZ_COMMON_EXPORT extern const base::Feature kDynamicSchedulerForDraw;
-VIZ_COMMON_EXPORT extern const base::Feature kDynamicSchedulerForClients;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kSurfaceSyncThrottling);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kDynamicSchedulerForDraw);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kDynamicSchedulerForClients);
 #if BUILDFLAG(IS_MAC)
-VIZ_COMMON_EXPORT extern const base::Feature kMacCAOverlayQuad;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kMacCAOverlayQuad);
 VIZ_COMMON_EXPORT extern const base::FeatureParam<int> kMacCAOverlayQuadMaxNum;
 #endif
 
 #if BUILDFLAG(IS_APPLE) || defined(USE_OZONE)
-VIZ_COMMON_EXPORT extern const base::Feature kCanSkipRenderPassOverlay;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kCanSkipRenderPassOverlay);
 #endif
 
-VIZ_COMMON_EXPORT extern const base::Feature kDrawPredictedInkPoint;
-VIZ_COMMON_EXPORT extern const base::Feature
-    kAllowUndamagedNonrootRenderPassToSkip;
-VIZ_COMMON_EXPORT extern const base::Feature kAggressiveFrameCulling;
-VIZ_COMMON_EXPORT extern const base::Feature kEagerSurfaceGarbageCollection;
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kDrawPredictedInkPoint);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kAllowUndamagedNonrootRenderPassToSkip);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kAggressiveFrameCulling);
+VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kEagerSurfaceGarbageCollection);
 
 VIZ_COMMON_EXPORT extern const char kDraw1Point12Ms[];
 VIZ_COMMON_EXPORT extern const char kDraw2Points6Ms[];
diff --git a/content/browser/bluetooth/web_bluetooth_service_impl.cc b/content/browser/bluetooth/web_bluetooth_service_impl.cc
index 4b470df..129aa3c 100644
--- a/content/browser/bluetooth/web_bluetooth_service_impl.cc
+++ b/content/browser/bluetooth/web_bluetooth_service_impl.cc
@@ -90,33 +90,33 @@
     GattErrorCode error_code,
     UMAGATTOperation operation) {
   switch (error_code) {
-    case device::BluetoothRemoteGattService::GATT_ERROR_UNKNOWN:
+    case device::BluetoothRemoteGattService::GattErrorCode::kUnknown:
       RecordGATTOperationOutcome(operation, UMAGATTOperationOutcome::kUnknown);
       return blink::mojom::WebBluetoothResult::GATT_UNKNOWN_ERROR;
-    case device::BluetoothRemoteGattService::GATT_ERROR_FAILED:
+    case device::BluetoothRemoteGattService::GattErrorCode::kFailed:
       RecordGATTOperationOutcome(operation, UMAGATTOperationOutcome::kFailed);
       return blink::mojom::WebBluetoothResult::GATT_UNKNOWN_FAILURE;
-    case device::BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS:
+    case device::BluetoothRemoteGattService::GattErrorCode::kInProgress:
       RecordGATTOperationOutcome(operation,
                                  UMAGATTOperationOutcome::kInProgress);
       return blink::mojom::WebBluetoothResult::GATT_OPERATION_IN_PROGRESS;
-    case device::BluetoothRemoteGattService::GATT_ERROR_INVALID_LENGTH:
+    case device::BluetoothRemoteGattService::GattErrorCode::kInvalidLength:
       RecordGATTOperationOutcome(operation,
                                  UMAGATTOperationOutcome::kInvalidLength);
       return blink::mojom::WebBluetoothResult::GATT_INVALID_ATTRIBUTE_LENGTH;
-    case device::BluetoothRemoteGattService::GATT_ERROR_NOT_PERMITTED:
+    case device::BluetoothRemoteGattService::GattErrorCode::kNotPermitted:
       RecordGATTOperationOutcome(operation,
                                  UMAGATTOperationOutcome::kNotPermitted);
       return blink::mojom::WebBluetoothResult::GATT_NOT_PERMITTED;
-    case device::BluetoothRemoteGattService::GATT_ERROR_NOT_AUTHORIZED:
+    case device::BluetoothRemoteGattService::GattErrorCode::kNotAuthorized:
       RecordGATTOperationOutcome(operation,
                                  UMAGATTOperationOutcome::kNotAuthorized);
       return blink::mojom::WebBluetoothResult::GATT_NOT_AUTHORIZED;
-    case device::BluetoothRemoteGattService::GATT_ERROR_NOT_PAIRED:
+    case device::BluetoothRemoteGattService::GattErrorCode::kNotPaired:
       RecordGATTOperationOutcome(operation,
                                  UMAGATTOperationOutcome::kNotPaired);
       return blink::mojom::WebBluetoothResult::GATT_NOT_PAIRED;
-    case device::BluetoothRemoteGattService::GATT_ERROR_NOT_SUPPORTED:
+    case device::BluetoothRemoteGattService::GattErrorCode::kNotSupported:
       RecordGATTOperationOutcome(operation,
                                  UMAGATTOperationOutcome::kNotSupported);
       return blink::mojom::WebBluetoothResult::GATT_NOT_SUPPORTED;
@@ -2054,8 +2054,8 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (error_code.has_value()) {
 #if PAIR_BLUETOOTH_ON_DEMAND()
-    if (error_code.value() == GattErrorCode::GATT_ERROR_NOT_AUTHORIZED ||
-        error_code.value() == GattErrorCode::GATT_ERROR_NOT_PAIRED) {
+    if (error_code.value() == GattErrorCode::kNotAuthorized ||
+        error_code.value() == GattErrorCode::kNotPaired) {
       BluetoothDevice* device = GetCachedDevice(
           GetCharacteristicDeviceID(characteristic_instance_id));
       if (device && !device->IsPaired()) {
@@ -2093,7 +2093,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
 #if PAIR_BLUETOOTH_ON_DEMAND()
-  if (error_code == GattErrorCode::GATT_ERROR_NOT_AUTHORIZED) {
+  if (error_code == GattErrorCode::kNotAuthorized) {
     BluetoothDevice* device =
         GetCachedDevice(GetCharacteristicDeviceID(characteristic_instance_id));
     if (device && !device->IsPaired()) {
@@ -2153,7 +2153,7 @@
   }
 
 #if PAIR_BLUETOOTH_ON_DEMAND()
-  if (error_code == GattErrorCode::GATT_ERROR_NOT_AUTHORIZED && client) {
+  if (error_code == GattErrorCode::kNotAuthorized && client) {
     BluetoothDevice* device =
         GetCachedDevice(GetCharacteristicDeviceID(characteristic_instance_id));
     if (device && !device->IsPaired()) {
@@ -2202,7 +2202,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (error_code.has_value()) {
 #if PAIR_BLUETOOTH_ON_DEMAND()
-    if (error_code.value() == GattErrorCode::GATT_ERROR_NOT_AUTHORIZED) {
+    if (error_code.value() == GattErrorCode::kNotAuthorized) {
       BluetoothDevice* device =
           GetCachedDevice(GetDescriptorDeviceId(descriptor_instance_id));
       if (device && !device->IsPaired()) {
@@ -2237,7 +2237,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
 #if PAIR_BLUETOOTH_ON_DEMAND()
-  if (error_code == GattErrorCode::GATT_ERROR_NOT_AUTHORIZED) {
+  if (error_code == GattErrorCode::kNotAuthorized) {
     BluetoothDevice* device =
         GetCachedDevice(GetDescriptorDeviceId(descriptor_instance_id));
     if (device && !device->IsPaired()) {
diff --git a/content/browser/bluetooth/web_bluetooth_service_impl_unittest.cc b/content/browser/bluetooth/web_bluetooth_service_impl_unittest.cc
index b18b89b..948e877 100644
--- a/content/browser/bluetooth/web_bluetooth_service_impl_unittest.cc
+++ b/content/browser/bluetooth/web_bluetooth_service_impl_unittest.cc
@@ -857,7 +857,8 @@
                 result);
             EXPECT_FALSE(value.has_value());
           }),
-      device::BluetoothGattService::GATT_ERROR_IN_PROGRESS, read_error_value);
+      device::BluetoothGattService::GattErrorCode::kInProgress,
+      read_error_value);
   EXPECT_TRUE(callback_called);
 
   // This test doesn't invoke any methods of the mock adapter. Allow it to be
@@ -892,7 +893,7 @@
                       result);
             EXPECT_FALSE(value.has_value());
           }),
-      device::BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED,
+      device::BluetoothGattService::GattErrorCode::kNotAuthorized,
       read_error_value);
   EXPECT_FALSE(read_value_callback_called);
 }
@@ -902,7 +903,7 @@
 
   EXPECT_CALL(test_bundle().characteristic(), ReadRemoteCharacteristic_(_))
       .WillOnce(base::test::RunOnceCallback<0>(
-          device::BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED,
+          device::BluetoothGattService::GattErrorCode::kNotAuthorized,
           std::vector<uint8_t>()));
 
   base::MockCallback<
@@ -933,7 +934,7 @@
     int outstanding_callbacks = 2;
 
     test_characteristic.DeferNextStartNotification(
-        BluetoothGattService::GATT_ERROR_FAILED);
+        BluetoothGattService::GattErrorCode::kFailed);
 
     auto callback = base::BindLambdaForTesting(
         [&run_loop, &outstanding_callbacks](WebBluetoothResult result) {
diff --git a/content/browser/first_party_sets/first_party_sets_loader.cc b/content/browser/first_party_sets/first_party_sets_loader.cc
index eb9ad5ba..37a1a1d 100644
--- a/content/browser/first_party_sets/first_party_sets_loader.cc
+++ b/content/browser/first_party_sets/first_party_sets_loader.cc
@@ -109,8 +109,10 @@
 
 void FirstPartySetsLoader::MaybeFinishLoading() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  if (!HasAllInputs())
+  if (component_sets_parse_progress_ != Progress::kFinished ||
+      !manually_specified_set_.has_value()) {
     return;
+  }
   if (!manually_specified_set_->empty()) {
     public_sets_->ApplyManuallySpecifiedSet(
         manually_specified_set_->GetPrimary(),
@@ -120,10 +122,4 @@
   std::move(on_load_complete_).Run(std::move(public_sets_).value());
 }
 
-bool FirstPartySetsLoader::HasAllInputs() const {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  return component_sets_parse_progress_ == Progress::kFinished &&
-         manually_specified_set_.has_value();
-}
-
 }  // namespace content
diff --git a/content/browser/first_party_sets/first_party_sets_loader.h b/content/browser/first_party_sets/first_party_sets_loader.h
index de8c901..78b4f3a 100644
--- a/content/browser/first_party_sets/first_party_sets_loader.h
+++ b/content/browser/first_party_sets/first_party_sets_loader.h
@@ -56,18 +56,10 @@
   // declarations, and stores the result.
   void OnReadSetsFile(const std::string& raw_sets);
 
-  // Modifies `public_sets_` to include the CLI-provided set, if any. Must not
-  // be called until the loader has received the CLI flag value via
-  // `SetManuallySpecifiedSet`, and the public sets via `SetComponentSets`.
-  void ApplyManuallySpecifiedSet();
-
   // Checks the required inputs have been received, and if so, invokes the
   // callback `on_load_complete_`, after merging sets appropriately.
   void MaybeFinishLoading();
 
-  // Returns true if all sources are present (Component Updater sets, CLI set).
-  bool HasAllInputs() const;
-
   // Holds the public First-Party Sets. This is nullopt until received from
   // Component Updater. It may be modified based on the manually-specified set.
   absl::optional<net::PublicSets> public_sets_
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
index adb7ddb..88bcc3b 100644
--- a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
+++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
@@ -207,8 +207,6 @@
   histogram_tester().ExpectUniqueSample(
       "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl", 0, 1);
   histogram_tester().ExpectUniqueSample(
-      "Event.Latency.Scroll.Wheel.TimeToHandled2_Impl", 0, 1);
-  histogram_tester().ExpectUniqueSample(
       "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Impl", 0, 1);
   histogram_tester().ExpectUniqueSample(
       "Event.Latency.ScrollBegin.Wheel.RendererSwapToBrowserNotified2", 0, 1);
@@ -287,12 +285,6 @@
       EXPECT_TRUE(
           HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl",
                           rendering_on_main ? 0 : 1));
-      EXPECT_TRUE(
-          HistogramSizeEq("Event.Latency.Scroll.Wheel.TimeToHandled2_Main",
-                          rendering_on_main ? 1 : 0));
-      EXPECT_TRUE(
-          HistogramSizeEq("Event.Latency.Scroll.Wheel.TimeToHandled2_Impl",
-                          rendering_on_main ? 0 : 1));
       EXPECT_TRUE(HistogramSizeEq(
           "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Main",
           rendering_on_main ? 1 : 0));
@@ -417,12 +409,6 @@
       EXPECT_TRUE(HistogramSizeEq(
           "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Impl",
           rendering_on_main ? 0 : 1));
-      EXPECT_TRUE(
-          HistogramSizeEq("Event.Latency.Scroll.Wheel.TimeToHandled2_Main",
-                          rendering_on_main ? 1 : 0));
-      EXPECT_TRUE(
-          HistogramSizeEq("Event.Latency.Scroll.Wheel.TimeToHandled2_Impl",
-                          rendering_on_main ? 0 : 1));
       EXPECT_TRUE(HistogramSizeEq(
           "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Main",
           rendering_on_main ? 1 : 0));
diff --git a/content/public/renderer/render_frame_observer.h b/content/public/renderer/render_frame_observer.h
index a84c4b1..158c376 100644
--- a/content/public/renderer/render_frame_observer.h
+++ b/content/public/renderer/render_frame_observer.h
@@ -41,7 +41,6 @@
 class WebString;
 class WebURLRequest;
 class WebWorkerFetchContext;
-struct MobileFriendliness;
 }  // namespace blink
 
 namespace gfx {
@@ -334,9 +333,6 @@
       const std::string& interface_name,
       mojo::ScopedInterfaceEndpointHandle* handle);
 
-  // Called when a page's mobile friendliness changed.
-  virtual void OnMobileFriendlinessChanged(const blink::MobileFriendliness&) {}
-
   // The smoothness metrics is shared over shared-memory. The interested
   // observer should invalidate |shared_memory| (by std::move()'ing it), and
   // return true. All other observers should return false (default).
diff --git a/content/renderer/pepper/pepper_platform_audio_input.cc b/content/renderer/pepper/pepper_platform_audio_input.cc
index 4bed11f1..360c2fc 100644
--- a/content/renderer/pepper/pepper_platform_audio_input.cc
+++ b/content/renderer/pepper/pepper_platform_audio_input.cc
@@ -171,9 +171,11 @@
     const base::UnguessableToken& session_id) {
   DCHECK(io_task_runner_->BelongsToCurrentThread());
 
-  if (ipc_startup_state_ != kStopped)
-    ipc_ = blink::AudioInputIPCFactory::GetInstance().CreateAudioInputIPC(
-        render_frame_token_, media::AudioSourceParameters(session_id));
+  if (ipc_startup_state_ != kStopped) {
+    ipc_ = blink::AudioInputIPCFactory::CreateAudioInputIPC(
+        render_frame_token_, main_task_runner_,
+        media::AudioSourceParameters(session_id));
+  }
   if (!ipc_)
     return;
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 98917d9..b5b1fb0f 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -5577,13 +5577,6 @@
                                                               output_device_id);
 }
 
-void RenderFrameImpl::DidChangeMobileFriendliness(
-    const blink::MobileFriendliness& mf) {
-  for (auto& observer : observers_) {
-    observer.OnMobileFriendlinessChanged(mf);
-  }
-}
-
 void RenderFrameImpl::InitializeMediaStreamDeviceObserver() {
   RenderThreadImpl* render_thread = RenderThreadImpl::current();
   if (!render_thread)  // Will be NULL during unit tests.
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index c913ea0..781938a 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -648,7 +648,6 @@
   void DidCommitAndDrawCompositorFrame() override;
   void WasHidden() override;
   void WasShown() override;
-  void DidChangeMobileFriendliness(const blink::MobileFriendliness&) override;
 
   void SetUpSharedMemoryForSmoothness(
       base::ReadOnlySharedMemoryRegion shared_memory) override;
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
index 90e08c6..1ba99a9 100644
--- a/content/renderer/renderer_blink_platform_impl.cc
+++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -499,7 +499,7 @@
     blink::WebLocalFrame* web_frame,
     const media::AudioSourceParameters& params) {
   return blink::AudioDeviceFactory::GetInstance()->NewAudioCapturerSource(
-      web_frame->GetLocalFrameToken(), params);
+      web_frame, params);
 }
 
 scoped_refptr<viz::RasterContextProvider>
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 f4b3cf7e..eedf581 100644
--- a/content/web_test/browser/web_test_bluetooth_adapter_provider.cc
+++ b/content/web_test/browser/web_test_bluetooth_adapter_provider.cc
@@ -1036,9 +1036,10 @@
                                        /*error_code=*/absl::nullopt,
                                        std::vector<uint8_t>({1}));
             } else {
-              pending = base::BindOnce(std::move(callback),
-                                       BluetoothGattService::GATT_ERROR_FAILED,
-                                       /*value=*/std::vector<uint8_t>());
+              pending =
+                  base::BindOnce(std::move(callback),
+                                 BluetoothGattService::GattErrorCode::kFailed,
+                                 /*value=*/std::vector<uint8_t>());
             }
             device_ptr->PushPendingCallback(std::move(pending));
             if (disconnect) {
@@ -1062,8 +1063,9 @@
             if (succeeds) {
               pending = std::move(callback);
             } else {
-              pending = base::BindOnce(std::move(error_callback),
-                                       BluetoothGattService::GATT_ERROR_FAILED);
+              pending =
+                  base::BindOnce(std::move(error_callback),
+                                 BluetoothGattService::GattErrorCode::kFailed);
             }
             device_ptr->PushPendingCallback(std::move(pending));
             if (disconnect) {
@@ -1085,8 +1087,9 @@
             if (succeeds) {
               pending = std::move(callback);
             } else {
-              pending = base::BindOnce(std::move(error_callback),
-                                       BluetoothGattService::GATT_ERROR_FAILED);
+              pending =
+                  base::BindOnce(std::move(error_callback),
+                                 BluetoothGattService::GattErrorCode::kFailed);
             }
             device_ptr->PushPendingCallback(std::move(pending));
             if (disconnect) {
@@ -1111,8 +1114,9 @@
                   std::move(callback),
                   GetBaseGATTNotifySession(measurement_ptr->GetWeakPtr()));
             } else {
-              pending = base::BindOnce(std::move(error_callback),
-                                       BluetoothGattService::GATT_ERROR_FAILED);
+              pending =
+                  base::BindOnce(std::move(error_callback),
+                                 BluetoothGattService::GattErrorCode::kFailed);
             }
             device_ptr->PushPendingCallback(std::move(pending));
             if (disconnect) {
@@ -1139,9 +1143,10 @@
                                        /*error_code=*/absl::nullopt,
                                        std::vector<uint8_t>({1}));
             } else {
-              pending = base::BindOnce(std::move(callback),
-                                       BluetoothGattService::GATT_ERROR_FAILED,
-                                       /*value=*/std::vector<uint8_t>());
+              pending =
+                  base::BindOnce(std::move(callback),
+                                 BluetoothGattService::GattErrorCode::kFailed,
+                                 /*value=*/std::vector<uint8_t>());
             }
             device_ptr->PushPendingCallback(std::move(pending));
             if (disconnect) {
@@ -1162,8 +1167,9 @@
             if (succeeds) {
               pending = std::move(callback);
             } else {
-              pending = base::BindOnce(std::move(error_callback),
-                                       BluetoothGattService::GATT_ERROR_FAILED);
+              pending =
+                  base::BindOnce(std::move(error_callback),
+                                 BluetoothGattService::GattErrorCode::kFailed);
             }
             device_ptr->PushPendingCallback(std::move(pending));
             if (disconnect) {
@@ -1309,8 +1315,8 @@
   auto service(
       GetBaseGATTService("Errors Service", device.get(), errorsServiceUUID));
 
-  for (int error = BluetoothGattService::GATT_ERROR_UNKNOWN;
-       error <= BluetoothGattService::GATT_ERROR_NOT_SUPPORTED; error++) {
+  for (int error = BluetoothGattService::GattErrorCode::kUnknown;
+       error <= BluetoothGattService::GattErrorCode::kNotSupported; error++) {
     service->AddMockCharacteristic(GetErrorCharacteristic(
         service.get(),
         static_cast<BluetoothGattService::GattErrorCode>(error)));
@@ -1724,20 +1730,20 @@
 
   ON_CALL(*characteristic, ReadRemoteCharacteristic_(_))
       .WillByDefault(RunCallbackWithResult<0>(
-          BluetoothGattService::GATT_ERROR_NOT_SUPPORTED,
+          BluetoothGattService::GattErrorCode::kNotSupported,
           /*value=*/std::vector<uint8_t>()));
 
   ON_CALL(*characteristic, WriteRemoteCharacteristic_(_, _, _, _))
       .WillByDefault(
-          RunCallback<3>(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED));
+          RunCallback<3>(BluetoothGattService::GattErrorCode::kNotSupported));
 
   ON_CALL(*characteristic, DeprecatedWriteRemoteCharacteristic_(_, _, _))
       .WillByDefault(
-          RunCallback<2>(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED));
+          RunCallback<2>(BluetoothGattService::GattErrorCode::kNotSupported));
 
   ON_CALL(*characteristic, StartNotifySession_(_, _))
       .WillByDefault(
-          RunCallback<1>(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED));
+          RunCallback<1>(BluetoothGattService::GattErrorCode::kNotSupported));
 
   return characteristic;
 }
diff --git a/content/web_test/browser/web_test_bluetooth_adapter_provider.h b/content/web_test/browser/web_test_bluetooth_adapter_provider.h
index 6236fde..a0884f2 100644
--- a/content/web_test/browser/web_test_bluetooth_adapter_provider.h
+++ b/content/web_test/browser/web_test_bluetooth_adapter_provider.h
@@ -475,28 +475,28 @@
   //   - ErrorsDevice
   //      - ErrorsService errorUUID(0xA0)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_UNKNOWN)
+  //              BluetoothGattService::GattErrorCode::kUnknown)
   //              errorUUID(0xA1)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_FAILED)
+  //              BluetoothGattService::GattErrorCode::kFailed)
   //              errorUUID(0xA2)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_IN_PROGRESS)
+  //              BluetoothGattService::GattErrorCode::kInProgress)
   //              errorUUID(0xA3)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_INVALID_LENGTH)
+  //              BluetoothGattService::GattErrorCode::kInvalidLength)
   //              errorUUID(0xA4)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_NOT_PERMITTED)
+  //              BluetoothGattService::GattErrorCode::kNotPermitted)
   //              errorUUID(0xA5)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED)
+  //              BluetoothGattService::GattErrorCode::kNotAuthorized)
   //              errorUUID(0xA6)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_NOT_PAIRED)
+  //              BluetoothGattService::GattErrorCode::kNotPaired)
   //              errorUUID(0xA7)
   //          - ErrorCharacteristic(
-  //              BluetoothGattService::GATT_ERROR_NOT_SUPPORTED)
+  //              BluetoothGattService::GattErrorCode::kNotSupported)
   //              errorUUID(0xA8)
   //      - Request Disconnection Service: - Characteristics as described in
   //          GetDisconnectingService
diff --git a/device/bluetooth/bluetooth_adapter_mac_metrics_unittest.mm b/device/bluetooth/bluetooth_adapter_mac_metrics_unittest.mm
index 55d1107..5b7f2ee1 100644
--- a/device/bluetooth/bluetooth_adapter_mac_metrics_unittest.mm
+++ b/device/bluetooth/bluetooth_adapter_mac_metrics_unittest.mm
@@ -87,8 +87,8 @@
   ASSERT_NO_FATAL_FAILURE(FakeCharacteristicBoilerplate(
       BluetoothRemoteGattCharacteristic::PROPERTY_WRITE));
 
-  SimulateGattCharacteristicReadError(characteristic_,
-                                      BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattCharacteristicReadError(
+      characteristic_, BluetoothGattService::GattErrorCode::kFailed);
   histogram_tester.ExpectTotalCount("Bluetooth.MacOS.Errors.DidUpdateValue", 1);
 }
 
@@ -97,8 +97,8 @@
   ASSERT_NO_FATAL_FAILURE(FakeCharacteristicBoilerplate(
       BluetoothRemoteGattCharacteristic::PROPERTY_WRITE));
 
-  SimulateGattCharacteristicWriteError(characteristic_,
-                                       BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattCharacteristicWriteError(
+      characteristic_, BluetoothGattService::GattErrorCode::kFailed);
   histogram_tester.ExpectTotalCount("Bluetooth.MacOS.Errors.DidWriteValue", 1);
 }
 
@@ -116,8 +116,8 @@
                                       GetGattErrorCallback(Call::EXPECTED));
   ExpectedChangeNotifyValueAttempts(1);
   ExpectedNotifyValue(NotifyValueState::NOTIFY);
-  SimulateGattNotifySessionStartError(characteristic_,
-                                      BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattNotifySessionStartError(
+      characteristic_, BluetoothGattService::GattErrorCode::kFailed);
   histogram_tester.ExpectTotalCount(
       "Bluetooth.MacOS.Errors.DidUpdateNotificationState", 1);
 }
@@ -144,8 +144,8 @@
       characteristic_->GetDescriptors()[0];
   descriptor->ReadRemoteDescriptor(
       GetReadValueCallback(Call::EXPECTED, Result::FAILURE));
-  SimulateGattDescriptorUpdateError(descriptor,
-                                    BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattDescriptorUpdateError(
+      descriptor, BluetoothGattService::GattErrorCode::kFailed);
   base::RunLoop().RunUntilIdle();
   histogram_tester.ExpectTotalCount(
       "Bluetooth.MacOS.Errors.DidUpdateValueForDescriptor", 1);
@@ -166,8 +166,8 @@
   descriptor->WriteRemoteDescriptor(empty_vector,
                                     GetCallback(Call::NOT_EXPECTED),
                                     GetGattErrorCallback(Call::EXPECTED));
-  SimulateGattDescriptorWriteError(descriptor,
-                                   BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattDescriptorWriteError(
+      descriptor, BluetoothGattService::GattErrorCode::kFailed);
   histogram_tester.ExpectTotalCount(
       "Bluetooth.MacOS.Errors.DidWriteValueForDescriptor", 1);
 }
diff --git a/device/bluetooth/bluetooth_device_mac.mm b/device/bluetooth/bluetooth_device_mac.mm
index 8e30b0f..f1dd73c4 100644
--- a/device/bluetooth/bluetooth_device_mac.mm
+++ b/device/bluetooth/bluetooth_device_mac.mm
@@ -55,15 +55,15 @@
     BluetoothGattService::GattErrorCode gatt_error_code =
         (BluetoothGattService::GattErrorCode)error.code;
     if (gatt_error_code >= 0 ||
-        gatt_error_code <= BluetoothGattService::GATT_ERROR_NOT_SUPPORTED) {
+        gatt_error_code <= BluetoothGattService::GattErrorCode::kNotSupported) {
       return gatt_error_code;
     }
     NOTREACHED();
-    return BluetoothGattService::GATT_ERROR_FAILED;
+    return BluetoothGattService::GattErrorCode::kFailed;
   }
   // TODO(http://crbug.com/619595): Need to convert the error code from
   // CoreBluetooth to a GattErrorCode value.
-  return BluetoothGattService::GATT_ERROR_FAILED;
+  return BluetoothGattService::GattErrorCode::kFailed;
 }
 
 }  // namespace device
diff --git a/device/bluetooth/bluetooth_gatt_service.h b/device/bluetooth/bluetooth_gatt_service.h
index dfaf087..228080b8 100644
--- a/device/bluetooth/bluetooth_gatt_service.h
+++ b/device/bluetooth/bluetooth_gatt_service.h
@@ -26,15 +26,15 @@
   // with the BluetoothGattServiceGattErrorCode enum in
   // src/tools/metrics/histograms/enums.xml.
   enum GattErrorCode {
-    GATT_ERROR_UNKNOWN = 0,
-    GATT_ERROR_FAILED = 1,
-    GATT_ERROR_IN_PROGRESS = 2,
-    GATT_ERROR_INVALID_LENGTH = 3,
-    GATT_ERROR_NOT_PERMITTED = 4,
-    GATT_ERROR_NOT_AUTHORIZED = 5,
-    GATT_ERROR_NOT_PAIRED = 6,
-    GATT_ERROR_NOT_SUPPORTED = 7,
-    kMaxValue = GATT_ERROR_NOT_SUPPORTED,
+    kUnknown = 0,
+    kFailed = 1,
+    kInProgress = 2,
+    kInvalidLength = 3,
+    kNotPermitted = 4,
+    kNotAuthorized = 5,
+    kNotPaired = 6,
+    kNotSupported = 7,
+    kMaxValue = kNotSupported,
   };
 
   // The ErrorCallback is used by methods to asynchronously report errors.
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic.cc
index ea58ae6..a898b54 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic.cc
@@ -153,7 +153,7 @@
           &BluetoothRemoteGattCharacteristic::CancelStartNotifySession,
           GetWeakPtr(),
           base::BindOnce(std::move(split_error_callback.second),
-                         BluetoothGattService::GATT_ERROR_FAILED)));
+                         BluetoothGattService::GattErrorCode::kFailed)));
 
   if (!notify_command_running_ && pending_notify_commands_.size() == 1) {
     notify_command_running_ = true;
@@ -199,7 +199,7 @@
         base::BindOnce(
             &BluetoothRemoteGattCharacteristic::OnStartNotifySessionError,
             GetWeakPtr(), std::move(error_callback),
-            BluetoothGattService::GATT_ERROR_NOT_SUPPORTED));
+            BluetoothGattService::GattErrorCode::kNotSupported));
     return;
   }
 
@@ -229,8 +229,8 @@
             &BluetoothRemoteGattCharacteristic::OnStartNotifySessionError,
             GetWeakPtr(), std::move(error_callback),
             (ccc_descriptor.size() == 0)
-                ? BluetoothGattService::GATT_ERROR_NOT_SUPPORTED
-                : BluetoothGattService::GATT_ERROR_FAILED));
+                ? BluetoothGattService::GattErrorCode::kNotSupported
+                : BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -337,7 +337,7 @@
         base::BindOnce(
             &BluetoothRemoteGattCharacteristic::OnStopNotifySessionError,
             GetWeakPtr(), session, std::move(callback),
-            BluetoothGattService::GATT_ERROR_FAILED));
+            BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -364,7 +364,7 @@
         base::BindOnce(
             &BluetoothRemoteGattCharacteristic::OnStopNotifySessionError,
             GetWeakPtr(), session, std::move(callback),
-            BluetoothGattService::GATT_ERROR_FAILED));
+            BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc
index ecfe9ef..3df8d3c9 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc
@@ -57,14 +57,14 @@
       AttachCurrentThread(), j_characteristic_);
   if (read_callback_) {
     std::move(read_callback_)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
   }
 
   if (!write_callback_.is_null()) {
     DCHECK(!write_error_callback_.is_null());
     std::move(write_error_callback_)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
   }
 }
 
@@ -129,9 +129,10 @@
     ValueCallback callback) {
   if (read_pending_ || write_pending_) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_IN_PROGRESS,
-                                  /*value=*/std::vector<uint8_t>()));
+        FROM_HERE,
+        base::BindOnce(std::move(callback),
+                       BluetoothGattService::GattErrorCode::kInProgress,
+                       /*value=*/std::vector<uint8_t>()));
     return;
   }
 
@@ -139,7 +140,7 @@
           AttachCurrentThread(), j_characteristic_)) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED,
+                                  BluetoothGattService::GattErrorCode::kFailed,
                                   /*value=*/std::vector<uint8_t>()));
     return;
   }
@@ -157,7 +158,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
 
@@ -176,8 +177,9 @@
           env, j_characteristic_, base::android::ToJavaByteArray(env, value),
           static_cast<int>(android_write_type))) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -194,7 +196,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
 
@@ -203,8 +205,9 @@
           env, j_characteristic_, base::android::ToJavaByteArray(env, value),
           static_cast<int>(AndroidWriteType::kNone))) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -287,8 +290,9 @@
           AttachCurrentThread(), j_characteristic_, true)) {
     LOG(ERROR) << "Error enabling characteristic notification";
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -310,7 +314,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       device::BluetoothGattService::GATT_ERROR_FAILED));
+                       device::BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm b/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm
index 34bdc60..0cfd76e2 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm
@@ -87,12 +87,12 @@
   destructor_called_ = true;
   if (HasPendingRead()) {
     std::move(read_characteristic_value_callback_)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
   }
   if (HasPendingWrite()) {
     std::move(write_characteristic_value_callbacks_.second)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
   }
 }
 
@@ -137,16 +137,17 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(callback),
-                       BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
+                       BluetoothGattService::GattErrorCode::kNotPermitted,
                        /*value=*/std::vector<uint8_t>()));
     return;
   }
   if (destructor_called_ || HasPendingRead() || HasPendingWrite()) {
     DVLOG(1) << *this << ": Characteristic read already in progress.";
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_IN_PROGRESS,
-                                  /*value=*/std::vector<uint8_t>()));
+        FROM_HERE,
+        base::BindOnce(std::move(callback),
+                       BluetoothGattService::GattErrorCode::kInProgress,
+                       /*value=*/std::vector<uint8_t>()));
     return;
   }
   DVLOG(1) << *this << ": Read characteristic.";
@@ -164,7 +165,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
   DVLOG(1) << *this << ": Write characteristic.";
@@ -203,7 +204,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_NOT_PERMITTED));
+                       BluetoothGattService::GattErrorCode::kNotPermitted));
     return;
   }
   if (destructor_called_ || HasPendingRead() || HasPendingWrite()) {
@@ -211,7 +212,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
   DVLOG(1) << *this << ": Write characteristic.";
@@ -321,7 +322,8 @@
       GetCBPeripheral().state != CBPeripheralStateConnected) {
     std::pair<base::OnceClosure, ErrorCallback> callbacks;
     callbacks.swap(write_characteristic_value_callbacks_);
-    std::move(callbacks.second).Run(BluetoothGattService::GATT_ERROR_FAILED);
+    std::move(callbacks.second)
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
     return;
   }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
index 8f3c1c0..ed3e7d3 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
@@ -503,7 +503,7 @@
   characteristic1_->ReadRemoteCharacteristic(base::BindLambdaForTesting(
       [&](absl::optional<BluetoothGattService::GattErrorCode> error_code,
           const std::vector<uint8_t>&) {
-        EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+        EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
         read_characteristic_failed = true;
         // Retrying Read should fail:
         characteristic1_->ReadRemoteCharacteristic(
@@ -513,7 +513,7 @@
   DeleteDevice(device_);  // TODO(576906) delete only the characteristic.
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(read_characteristic_failed);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 }
 
@@ -546,7 +546,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             // Retrying Write should fail:
             characteristic1_->WriteRemoteCharacteristic(
                 {} /* value */, WriteType::kWithResponse,
@@ -556,8 +556,9 @@
                 }),
                 base::BindLambdaForTesting(
                     [&](BluetoothGattService::GattErrorCode error_code) {
-                      EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
-                                error_code);
+                      EXPECT_EQ(
+                          BluetoothGattService::GattErrorCode::kInProgress,
+                          error_code);
                       loop.Quit();
                     }));
           }));
@@ -593,7 +594,7 @@
       {} /* value */, GetCallback(Call::NOT_EXPECTED),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             write_error_callback_called = true;
             // Retrying Write should fail:
             characteristic1_->DeprecatedWriteRemoteCharacteristic(
@@ -604,7 +605,7 @@
   DeleteDevice(device_);  // TODO(576906) delete only the characteristic.
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(write_error_callback_called);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 }
 
@@ -685,7 +686,8 @@
   SimulateDeviceBreaksConnection(adapter_->GetDevices()[0]);
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
 // Dispatch read response after disconnection. See above explanation for why
 // we don't do this in macOS on WinRT.
@@ -732,7 +734,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             loop.Quit();
           }));
 
@@ -815,7 +817,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             loop.Quit();
           }));
 
@@ -879,7 +881,8 @@
   SimulateDeviceBreaksConnection(adapter_->GetDevices()[0]);
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
 // Dispatch write response after disconnection. See above explanation for why
 // we don't do this in macOS and WinRT.
@@ -1801,11 +1804,11 @@
   characteristic1_->ReadRemoteCharacteristic(
       GetReadValueCallback(Call::EXPECTED, Result::FAILURE));
   SimulateGattCharacteristicReadError(
-      characteristic1_, BluetoothGattService::GATT_ERROR_INVALID_LENGTH);
-  SimulateGattCharacteristicReadError(characteristic1_,
-                                      BluetoothGattService::GATT_ERROR_FAILED);
+      characteristic1_, BluetoothGattService::GattErrorCode::kInvalidLength);
+  SimulateGattCharacteristicReadError(
+      characteristic1_, BluetoothGattService::GattErrorCode::kFailed);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInvalidLength,
             last_gatt_error_code_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 }
@@ -1837,15 +1840,15 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kInvalidLength,
                       error_code);
             loop.Quit();
           }));
   SimulateGattCharacteristicWriteError(
-      characteristic1_, BluetoothGattService::GATT_ERROR_INVALID_LENGTH);
+      characteristic1_, BluetoothGattService::GattErrorCode::kInvalidLength);
   // Only the error above should be reported to the caller.
-  SimulateGattCharacteristicWriteError(characteristic1_,
-                                       BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattCharacteristicWriteError(
+      characteristic1_, BluetoothGattService::GattErrorCode::kFailed);
   loop.Run();
 }
 
@@ -1872,12 +1875,12 @@
       empty_vector, GetCallback(Call::NOT_EXPECTED),
       GetGattErrorCallback(Call::EXPECTED));
   SimulateGattCharacteristicWriteError(
-      characteristic1_, BluetoothGattService::GATT_ERROR_INVALID_LENGTH);
-  SimulateGattCharacteristicWriteError(characteristic1_,
-                                       BluetoothGattService::GATT_ERROR_FAILED);
+      characteristic1_, BluetoothGattService::GattErrorCode::kInvalidLength);
+  SimulateGattCharacteristicWriteError(
+      characteristic1_, BluetoothGattService::GattErrorCode::kFailed);
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInvalidLength,
             last_gatt_error_code_);
 }
 
@@ -1899,7 +1902,8 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
   // After failing once, can succeed:
   ResetEventCounts();
@@ -1934,7 +1938,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             loop1.Quit();
           }));
   loop1.Run();
@@ -1978,7 +1982,8 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
   // After failing once, can succeed:
   ResetEventCounts();
@@ -2023,7 +2028,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial read should still succeed:
@@ -2078,7 +2083,8 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
+                      error_code);
             loop2.Quit();
           }));
 
@@ -2125,7 +2131,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial write should still succeed:
@@ -2175,7 +2181,7 @@
   characteristic1_->ReadRemoteCharacteristic(base::BindLambdaForTesting(
       [&](absl::optional<BluetoothGattService::GattErrorCode> error_code,
           const std::vector<uint8_t>& data) {
-        EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, error_code);
+        EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress, error_code);
         loop2.Quit();
       }));
 
@@ -2221,7 +2227,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial write should still succeed:
@@ -2271,7 +2277,8 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
+                      error_code);
             loop2.Quit();
           }));
   loop2.Run();
@@ -2316,7 +2323,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial read should still succeed:
@@ -2521,7 +2528,7 @@
   EXPECT_EQ(0, error_callback_count_);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotSupported,
             last_gatt_error_code_);
 }
 
@@ -2555,7 +2562,7 @@
   EXPECT_EQ(0, error_callback_count_);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotSupported,
             last_gatt_error_code_);
 }
 
@@ -2589,7 +2596,8 @@
   EXPECT_EQ(0, error_callback_count_);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 }
 
 #if BUILDFLAG(IS_ANDROID)
@@ -2799,13 +2807,14 @@
   ExpectedChangeNotifyValueAttempts(1);
   ExpectedNotifyValue(NotifyValueState::NOTIFY);
   EXPECT_EQ(0, callback_count_);
-  SimulateGattNotifySessionStartError(characteristic1_,
-                                      BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattNotifySessionStartError(
+      characteristic1_, BluetoothGattService::GattErrorCode::kFailed);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(2, error_callback_count_);
   ASSERT_EQ(0u, notify_sessions_.size());
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 }
 
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_MAC)
@@ -2882,7 +2891,8 @@
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
   ASSERT_EQ(0u, notify_sessions_.size());
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 }
 
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_MAC)
@@ -3008,8 +3018,8 @@
       BluetoothGattDescriptor::ClientCharacteristicConfigurationUuid().value());
   ASSERT_EQ(1u, characteristic1_->GetDescriptors().size());
 
-  SimulateGattNotifySessionStartError(characteristic1_,
-                                      BluetoothGattService::GATT_ERROR_UNKNOWN);
+  SimulateGattNotifySessionStartError(
+      characteristic1_, BluetoothGattService::GattErrorCode::kUnknown);
 
   characteristic1_->StartNotifySession(
       GetReentrantStartNotifySessionSuccessCallback(Call::NOT_EXPECTED,
@@ -3348,8 +3358,8 @@
   EXPECT_TRUE(characteristic1_->IsNotifying());
 
   notify_sessions_[0]->Stop(GetStopNotifyCallback(Call::EXPECTED));
-  SimulateGattNotifySessionStopError(characteristic1_,
-                                     BluetoothGattService::GATT_ERROR_UNKNOWN);
+  SimulateGattNotifySessionStopError(
+      characteristic1_, BluetoothGattService::GattErrorCode::kUnknown);
   base::RunLoop().RunUntilIdle();
 
   // Check that the notify session is inactive.
@@ -3834,8 +3844,8 @@
   EXPECT_FALSE(notify_sessions_[0]->IsActive());
   EXPECT_FALSE(characteristic1_->IsNotifying());
 
-  SimulateGattNotifySessionStartError(characteristic1_,
-                                      BluetoothGattService::GATT_ERROR_FAILED);
+  SimulateGattNotifySessionStartError(
+      characteristic1_, BluetoothGattService::GattErrorCode::kFailed);
   base::RunLoop().RunUntilIdle();
   ASSERT_EQ(1u, notify_sessions_.size());
   ASSERT_TRUE(notify_sessions_[0]);
@@ -4175,7 +4185,8 @@
       GetReadValueCallback(Call::EXPECTED, Result::FAILURE));
 
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 }
 
 #if BUILDFLAG(IS_ANDROID)
@@ -4206,7 +4217,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             loop.Quit();
           }));
 
@@ -4239,7 +4250,8 @@
       GetGattErrorCallback(Call::EXPECTED));
 
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 }
 
 #if BUILDFLAG(IS_MAC)
@@ -4278,7 +4290,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             loop.Quit();
           }));
   SimulateDeviceBreaksConnection(adapter_->GetDevices()[0]);
@@ -4319,7 +4331,8 @@
   SimulateDeviceBreaksConnection(adapter_->GetDevices()[0]);
 
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 }
 
 // Tests that closing the GATT connection when a characteristic value write
@@ -4355,7 +4368,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             gatt_connections_[0]->Disconnect();
             loop.Quit();
           }));
@@ -4393,7 +4406,7 @@
       std::vector<uint8_t>(), GetCallback(Call::NOT_EXPECTED),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             gatt_connections_[0]->Disconnect();
             loop.Quit();
           }));
@@ -4431,7 +4444,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             loop.Quit();
           }));
   gatt_connections_[0]->Disconnect();
@@ -4468,7 +4481,8 @@
   gatt_connections_[0]->Disconnect();
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
   SimulateGattDisconnection(device_);
   base::RunLoop().RunUntilIdle();
@@ -4505,7 +4519,7 @@
       }),
       base::BindLambdaForTesting(
           [&](BluetoothGattService::GattErrorCode error_code) {
-            EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, error_code);
+            EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, error_code);
             loop.Quit();
           }));
   loop.Run();
@@ -4541,7 +4555,8 @@
       GetGattErrorCallback(Call::EXPECTED));
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
   SimulateGattDisconnection(device_);
   base::RunLoop().RunUntilIdle();
@@ -4577,7 +4592,8 @@
                                        GetGattErrorCallback(Call::EXPECTED));
 
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 }
 
 #if BUILDFLAG(IS_ANDROID)
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_win.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic_win.cc
index 4f82fe0..2b7da36 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_win.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_win.cc
@@ -58,14 +58,14 @@
 
   if (read_characteristic_value_callback_) {
     std::move(read_characteristic_value_callback_)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
   }
 
   if (!write_characteristic_value_callbacks_.first.is_null()) {
     DCHECK(!write_characteristic_value_callbacks_.second.is_null());
     std::move(write_characteristic_value_callbacks_.second)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
   }
 }
 
@@ -135,13 +135,13 @@
   DCHECK(ui_task_runner_->RunsTasksInCurrentSequence());
 
   if (!characteristic_info_.get()->IsReadable) {
-    std::move(callback).Run(BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
+    std::move(callback).Run(BluetoothGattService::GattErrorCode::kNotPermitted,
                             std::vector<uint8_t>());
     return;
   }
 
   if (characteristic_value_read_or_write_in_progress_) {
-    std::move(callback).Run(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+    std::move(callback).Run(BluetoothGattService::GattErrorCode::kInProgress,
                             std::vector<uint8_t>());
     return;
   }
@@ -163,7 +163,8 @@
   DCHECK(ui_task_runner_->RunsTasksInCurrentSequence());
 
   if (characteristic_value_read_or_write_in_progress_) {
-    std::move(error_callback).Run(BluetoothGattService::GATT_ERROR_IN_PROGRESS);
+    std::move(error_callback)
+        .Run(BluetoothGattService::GattErrorCode::kInProgress);
     return;
   }
 
@@ -197,12 +198,13 @@
   if (!characteristic_info_->IsWritable &&
       !characteristic_info_->IsWritableWithoutResponse) {
     std::move(error_callback)
-        .Run(BluetoothGattService::GATT_ERROR_NOT_PERMITTED);
+        .Run(BluetoothGattService::GattErrorCode::kNotPermitted);
     return;
   }
 
   if (characteristic_value_read_or_write_in_progress_) {
-    std::move(error_callback).Run(BluetoothGattService::GATT_ERROR_IN_PROGRESS);
+    std::move(error_callback)
+        .Run(BluetoothGattService::GattErrorCode::kInProgress);
     return;
   }
 
@@ -388,20 +390,20 @@
 BluetoothGattService::GattErrorCode
 BluetoothRemoteGattCharacteristicWin::HRESULTToGattErrorCode(HRESULT hr) {
   if (HRESULT_FROM_WIN32(ERROR_INVALID_USER_BUFFER) == hr)
-    return BluetoothGattService::GATT_ERROR_INVALID_LENGTH;
+    return BluetoothGattService::GattErrorCode::kInvalidLength;
 
   switch (hr) {
     case E_BLUETOOTH_ATT_READ_NOT_PERMITTED:
     case E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED:
-      return BluetoothGattService::GATT_ERROR_NOT_PERMITTED;
+      return BluetoothGattService::GattErrorCode::kNotPermitted;
     case E_BLUETOOTH_ATT_UNKNOWN_ERROR:
-      return BluetoothGattService::GATT_ERROR_UNKNOWN;
+      return BluetoothGattService::GattErrorCode::kUnknown;
     case E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH:
-      return BluetoothGattService::GATT_ERROR_INVALID_LENGTH;
+      return BluetoothGattService::GattErrorCode::kInvalidLength;
     case E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED:
-      return BluetoothGattService::GATT_ERROR_NOT_SUPPORTED;
+      return BluetoothGattService::GattErrorCode::kNotSupported;
     default:
-      return BluetoothGattService::GATT_ERROR_FAILED;
+      return BluetoothGattService::GattErrorCode::kFailed;
   }
 }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_winrt.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic_winrt.cc
index 35793c93..a310753 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_winrt.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_winrt.cc
@@ -110,13 +110,13 @@
   destructor_called_ = true;
   if (pending_read_callback_) {
     std::move(pending_read_callback_)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
   }
 
   if (pending_write_callbacks_) {
     std::move(pending_write_callbacks_->error_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
   }
 
   if (value_changed_token_)
@@ -158,7 +158,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(callback),
-                       BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
+                       BluetoothGattService::GattErrorCode::kNotPermitted,
                        /*value=*/std::vector<uint8_t>()));
     return;
   }
@@ -166,9 +166,10 @@
   if (destructor_called_ || pending_read_callback_ ||
       pending_write_callbacks_) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_IN_PROGRESS,
-                                  /*value=*/std::vector<uint8_t>()));
+        FROM_HERE,
+        base::BindOnce(std::move(callback),
+                       BluetoothGattService::GattErrorCode::kInProgress,
+                       /*value=*/std::vector<uint8_t>()));
     return;
   }
 
@@ -181,7 +182,7 @@
         << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED,
+                                  BluetoothGattService::GattErrorCode::kFailed,
                                   /*value=*/std::vector<uint8_t>()));
     return;
   }
@@ -196,7 +197,7 @@
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED,
+                                  BluetoothGattService::GattErrorCode::kFailed,
                                   /*value=*/std::vector<uint8_t>()));
     return;
   }
@@ -214,7 +215,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
 
@@ -224,8 +225,9 @@
     BLUETOOTH_LOG(DEBUG) << "As IGattCharacteristic3 failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -235,8 +237,9 @@
     BLUETOOTH_LOG(DEBUG) << "base::win::CreateIBufferFromData failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -258,8 +261,9 @@
         << "GattCharacteristic::WriteValueWithResultAndOptionAsync failed: "
         << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -273,8 +277,9 @@
     BLUETOOTH_LOG(DEBUG) << "PostAsyncResults failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -291,7 +296,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_NOT_PERMITTED));
+                       BluetoothGattService::GattErrorCode::kNotPermitted));
     return;
   }
 
@@ -348,8 +353,9 @@
   if (!value_changed_token_) {
     BLUETOOTH_LOG(DEBUG) << "Adding Value Changed Handler failed.";
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -371,7 +377,7 @@
          base::OnceClosure callback, ErrorCallback error_callback) {
         if (characteristic && !characteristic->RemoveValueChangedHandler()) {
           std::move(error_callback)
-              .Run(BluetoothGattService::GATT_ERROR_FAILED);
+              .Run(BluetoothGattService::GattErrorCode::kFailed);
           return;
         }
 
@@ -422,8 +428,9 @@
     BLUETOOTH_LOG(DEBUG) << "As IGattCharacteristic3 failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -438,8 +445,9 @@
            " failed: "
         << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -453,8 +461,9 @@
     BLUETOOTH_LOG(DEBUG) << "PostAsyncResults failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -470,7 +479,7 @@
 
   if (!read_result) {
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -481,7 +490,7 @@
     BLUETOOTH_LOG(DEBUG) << "Getting GATT Communication Status failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -494,7 +503,7 @@
       BLUETOOTH_LOG(DEBUG) << "As IGattReadResult2 failed: "
                            << logging::SystemErrorCodeToString(hr);
       std::move(pending_read_callback)
-          .Run(BluetoothGattService::GATT_ERROR_FAILED,
+          .Run(BluetoothGattService::GattErrorCode::kFailed,
                /*value=*/std::vector<uint8_t>());
       return;
     }
@@ -512,7 +521,7 @@
     BLUETOOTH_LOG(DEBUG) << "Getting Characteristic Value failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -524,7 +533,7 @@
     BLUETOOTH_LOG(DEBUG) << "Getting Pointer To Buffer Data failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -550,7 +559,7 @@
     std::unique_ptr<PendingWriteCallbacks> callbacks) {
   if (!write_result) {
     std::move(callbacks->error_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
     return;
   }
 
@@ -560,7 +569,7 @@
     BLUETOOTH_LOG(DEBUG) << "Getting GATT Communication Status failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(callbacks->error_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
     return;
   }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc b/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc
index 674642a..c172f43 100644
--- a/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc
@@ -83,9 +83,10 @@
     ValueCallback callback) {
   if (read_pending_ || write_pending_) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_IN_PROGRESS,
-                                  /*value=*/std::vector<uint8_t>()));
+        FROM_HERE,
+        base::BindOnce(std::move(callback),
+                       BluetoothGattService::GattErrorCode::kInProgress,
+                       /*value=*/std::vector<uint8_t>()));
     return;
   }
 
@@ -93,7 +94,7 @@
           AttachCurrentThread(), j_descriptor_)) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED,
+                                  BluetoothGattService::GattErrorCode::kFailed,
                                   /*value=*/std::vector<uint8_t>()));
     return;
   }
@@ -110,7 +111,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
 
@@ -119,8 +120,9 @@
           env, j_descriptor_, base::android::ToJavaByteArray(env, new_value))) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
-        base::BindOnce(std::move(error_callback),
-                       BluetoothRemoteGattServiceAndroid::GATT_ERROR_FAILED));
+        base::BindOnce(
+            std::move(error_callback),
+            BluetoothRemoteGattServiceAndroid::GattErrorCode::kFailed));
     return;
   }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_mac.mm b/device/bluetooth/bluetooth_remote_gatt_descriptor_mac.mm
index 96371abd..6838de29 100644
--- a/device/bluetooth/bluetooth_remote_gatt_descriptor_mac.mm
+++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_mac.mm
@@ -76,12 +76,12 @@
   destructor_called_ = true;
   if (HasPendingRead()) {
     std::move(read_value_callback_)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
   }
   if (HasPendingWrite()) {
     std::move(write_value_callbacks_)
-        .second.Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .second.Run(BluetoothGattService::GattErrorCode::kFailed);
   }
 }
 
@@ -98,9 +98,10 @@
   if (destructor_called_ || HasPendingRead() || HasPendingWrite()) {
     DVLOG(1) << *this << ": Read failed, already in progress.";
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_IN_PROGRESS,
-                                  /*value=*/std::vector<uint8_t>()));
+        FROM_HERE,
+        base::BindOnce(std::move(callback),
+                       BluetoothGattService::GattErrorCode::kInProgress,
+                       /*value=*/std::vector<uint8_t>()));
     return;
   }
   DVLOG(1) << *this << ": Read value.";
@@ -117,7 +118,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
   DVLOG(1) << *this << ": Write value.";
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc b/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc
index 2e4c1a0..987d4cb 100644
--- a/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc
@@ -612,11 +612,11 @@
   descriptor1_->ReadRemoteDescriptor(
       GetReadValueCallback(Call::EXPECTED, Result::FAILURE));
   SimulateGattDescriptorReadError(
-      descriptor1_, BluetoothGattService::GATT_ERROR_INVALID_LENGTH);
+      descriptor1_, BluetoothGattService::GattErrorCode::kInvalidLength);
   SimulateGattDescriptorReadError(descriptor1_,
-                                  BluetoothGattService::GATT_ERROR_FAILED);
+                                  BluetoothGattService::GattErrorCode::kFailed);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInvalidLength,
             last_gatt_error_code_);
 }
 
@@ -642,12 +642,12 @@
                                       GetCallback(Call::NOT_EXPECTED),
                                       GetGattErrorCallback(Call::EXPECTED));
   SimulateGattDescriptorWriteError(
-      descriptor1_, BluetoothGattService::GATT_ERROR_INVALID_LENGTH);
-  SimulateGattDescriptorWriteError(descriptor1_,
-                                   BluetoothGattService::GATT_ERROR_FAILED);
+      descriptor1_, BluetoothGattService::GattErrorCode::kInvalidLength);
+  SimulateGattDescriptorWriteError(
+      descriptor1_, BluetoothGattService::GattErrorCode::kFailed);
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInvalidLength,
             last_gatt_error_code_);
 }
 
@@ -673,7 +673,8 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
   // After failing once, can succeed:
   ResetEventCounts();
@@ -711,7 +712,8 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed,
+            last_gatt_error_code_);
 
   // After failing once, can succeed:
   ResetEventCounts();
@@ -753,7 +755,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial read should still succeed:
@@ -797,7 +799,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial write should still succeed:
@@ -839,7 +841,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial write should still succeed:
@@ -881,7 +883,7 @@
 
   EXPECT_EQ(0, callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
             last_gatt_error_code_);
 
   // Initial read should still succeed:
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc b/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc
index d41f80cd..c498549 100644
--- a/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc
@@ -73,7 +73,7 @@
   DCHECK(ui_task_runner_->RunsTasksInCurrentSequence());
 
   NOTIMPLEMENTED();
-  std::move(callback).Run(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED,
+  std::move(callback).Run(BluetoothGattService::GattErrorCode::kNotSupported,
                           /*value=*/std::vector<uint8_t>());
 }
 
@@ -84,7 +84,8 @@
   DCHECK(ui_task_runner_->RunsTasksInCurrentSequence());
 
   NOTIMPLEMENTED();
-  std::move(error_callback).Run(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED);
+  std::move(error_callback)
+      .Run(BluetoothGattService::GattErrorCode::kNotSupported);
 }
 
 uint16_t BluetoothRemoteGattDescriptorWin::GetAttributeHandle() const {
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_winrt.cc b/device/bluetooth/bluetooth_remote_gatt_descriptor_winrt.cc
index caefb2c3..3042eef 100644
--- a/device/bluetooth/bluetooth_remote_gatt_descriptor_winrt.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_winrt.cc
@@ -103,9 +103,10 @@
     ValueCallback callback) {
   if (pending_read_callback_ || pending_write_callbacks_) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_IN_PROGRESS,
-                                  /*value=*/std::vector<uint8_t>()));
+        FROM_HERE,
+        base::BindOnce(std::move(callback),
+                       BluetoothGattService::GattErrorCode::kInProgress,
+                       /*value=*/std::vector<uint8_t>()));
     return;
   }
 
@@ -118,7 +119,7 @@
         << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED,
+                                  BluetoothGattService::GattErrorCode::kFailed,
                                   /*value=*/std::vector<uint8_t>()));
     return;
   }
@@ -133,7 +134,7 @@
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(std::move(callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED,
+                                  BluetoothGattService::GattErrorCode::kFailed,
                                   /*value=*/std::vector<uint8_t>()));
     return;
   }
@@ -149,7 +150,7 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(error_callback),
-                       BluetoothGattService::GATT_ERROR_IN_PROGRESS));
+                       BluetoothGattService::GattErrorCode::kInProgress));
     return;
   }
 
@@ -159,8 +160,9 @@
     BLUETOOTH_LOG(ERROR) << "As IGattDescriptor2 failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -170,8 +172,9 @@
     BLUETOOTH_LOG(ERROR) << "base::win::CreateIBufferFromData failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -181,8 +184,9 @@
     BLUETOOTH_LOG(ERROR) << "GattDescriptor::WriteValueWithResultAsync failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -196,8 +200,9 @@
     BLUETOOTH_LOG(ERROR) << "PostAsyncResults failed: "
                          << logging::SystemErrorCodeToString(hr);
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(std::move(error_callback),
-                                  BluetoothGattService::GATT_ERROR_FAILED));
+        FROM_HERE,
+        base::BindOnce(std::move(error_callback),
+                       BluetoothGattService::GattErrorCode::kFailed));
     return;
   }
 
@@ -242,7 +247,7 @@
     BLUETOOTH_LOG(ERROR)
         << "GattDescriptor::ReadValueWithCacheModeAsync returned no result";
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -253,7 +258,7 @@
     BLUETOOTH_LOG(ERROR) << "Getting GATT Communication Status failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -266,7 +271,7 @@
       BLUETOOTH_LOG(ERROR) << "As IGattReadResult2 failed: "
                            << logging::SystemErrorCodeToString(hr);
       std::move(pending_read_callback)
-          .Run(BluetoothGattService::GATT_ERROR_FAILED,
+          .Run(BluetoothGattService::GattErrorCode::kFailed,
                /*value=*/std::vector<uint8_t>());
       return;
     }
@@ -284,7 +289,7 @@
     BLUETOOTH_LOG(ERROR) << "Getting Descriptor Value failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -296,7 +301,7 @@
     BLUETOOTH_LOG(ERROR) << "Getting Pointer To Buffer Data failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(pending_read_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED,
+        .Run(BluetoothGattService::GattErrorCode::kFailed,
              /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -314,7 +319,7 @@
     BLUETOOTH_LOG(ERROR)
         << "GattDescriptor::WriteValueWithResultAsync returned no result";
     std::move(pending_write_callbacks->error_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
     return;
   }
 
@@ -324,7 +329,7 @@
     BLUETOOTH_LOG(ERROR) << "Getting GATT Communication Status failed: "
                          << logging::SystemErrorCodeToString(hr);
     std::move(pending_write_callbacks->error_callback)
-        .Run(BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(BluetoothGattService::GattErrorCode::kFailed);
     return;
   }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_service_android.cc b/device/bluetooth/bluetooth_remote_gatt_service_android.cc
index 3e4cf9b..5f2e7587 100644
--- a/device/bluetooth/bluetooth_remote_gatt_service_android.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_service_android.cc
@@ -61,18 +61,18 @@
   // android values not yet represented. http://crbug.com/548498
   switch (bluetooth_gatt_code) {  // android.bluetooth.BluetoothGatt values:
     case 0x00000101:              // GATT_FAILURE
-      return GATT_ERROR_FAILED;
+      return GattErrorCode::kFailed;
     case 0x0000000d:  // GATT_INVALID_ATTRIBUTE_LENGTH
-      return GATT_ERROR_INVALID_LENGTH;
+      return GattErrorCode::kInvalidLength;
     case 0x00000002:  // GATT_READ_NOT_PERMITTED
-      return GATT_ERROR_NOT_PERMITTED;
+      return GattErrorCode::kNotPermitted;
     case 0x00000006:  // GATT_REQUEST_NOT_SUPPORTED
-      return GATT_ERROR_NOT_SUPPORTED;
+      return GattErrorCode::kNotSupported;
     case 0x00000003:  // GATT_WRITE_NOT_PERMITTED
-      return GATT_ERROR_NOT_PERMITTED;
+      return GattErrorCode::kNotPermitted;
     default:
       DVLOG(1) << "Unhandled status: " << bluetooth_gatt_code;
-      return BluetoothGattService::GATT_ERROR_UNKNOWN;
+      return BluetoothGattService::GattErrorCode::kUnknown;
   }
 }
 
@@ -82,24 +82,24 @@
   // TODO(scheib) Create new BluetoothGattService::GattErrorCode enums for
   // android values not yet represented. http://crbug.com/548498
   switch (error_code) {  // Return values from android.bluetooth.BluetoothGatt:
-    case GATT_ERROR_UNKNOWN:
+    case GattErrorCode::kUnknown:
       return 0x00000101;  // GATT_FAILURE. No good match.
-    case GATT_ERROR_FAILED:
+    case GattErrorCode::kFailed:
       return 0x00000101;  // GATT_FAILURE
-    case GATT_ERROR_IN_PROGRESS:
+    case GattErrorCode::kInProgress:
       return 0x00000101;  // GATT_FAILURE. No good match.
-    case GATT_ERROR_INVALID_LENGTH:
+    case GattErrorCode::kInvalidLength:
       return 0x0000000d;  // GATT_INVALID_ATTRIBUTE_LENGTH
-    case GATT_ERROR_NOT_PERMITTED:
+    case GattErrorCode::kNotPermitted:
       // Can't distinguish between:
       // 0x00000002:  // GATT_READ_NOT_PERMITTED
       // 0x00000003:  // GATT_WRITE_NOT_PERMITTED
       return 0x00000101;  // GATT_FAILURE. No good match.
-    case GATT_ERROR_NOT_AUTHORIZED:
+    case GattErrorCode::kNotAuthorized:
       return 0x00000101;  // GATT_FAILURE. No good match.
-    case GATT_ERROR_NOT_PAIRED:
+    case GattErrorCode::kNotPaired:
       return 0x00000101;  // GATT_FAILURE. No good match.
-    case GATT_ERROR_NOT_SUPPORTED:
+    case GattErrorCode::kNotSupported:
       return 0x00000006;  // GATT_REQUEST_NOT_SUPPORTED
   }
   DVLOG(1) << "Unhandled error_code: " << error_code;
diff --git a/device/bluetooth/bluetooth_remote_gatt_service_winrt.cc b/device/bluetooth/bluetooth_remote_gatt_service_winrt.cc
index 7a84cec..211ae1e 100644
--- a/device/bluetooth/bluetooth_remote_gatt_service_winrt.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_service_winrt.cc
@@ -116,21 +116,21 @@
 uint8_t BluetoothRemoteGattServiceWinrt::ToProtocolError(
     GattErrorCode error_code) {
   switch (error_code) {
-    case GATT_ERROR_UNKNOWN:
+    case GattErrorCode::kUnknown:
       return 0xF0;
-    case GATT_ERROR_FAILED:
+    case GattErrorCode::kFailed:
       return 0x01;
-    case GATT_ERROR_IN_PROGRESS:
+    case GattErrorCode::kInProgress:
       return 0x09;
-    case GATT_ERROR_INVALID_LENGTH:
+    case GattErrorCode::kInvalidLength:
       return 0x0D;
-    case GATT_ERROR_NOT_PERMITTED:
+    case GattErrorCode::kNotPermitted:
       return 0x02;
-    case GATT_ERROR_NOT_AUTHORIZED:
+    case GattErrorCode::kNotAuthorized:
       return 0x08;
-    case GATT_ERROR_NOT_PAIRED:
+    case GattErrorCode::kNotPaired:
       return 0x0F;
-    case GATT_ERROR_NOT_SUPPORTED:
+    case GattErrorCode::kNotSupported:
       return 0x06;
   }
 
diff --git a/device/bluetooth/bluetooth_remote_gatt_service_winrt.h b/device/bluetooth/bluetooth_remote_gatt_service_winrt.h
index 522cd12b..6a6b27d 100644
--- a/device/bluetooth/bluetooth_remote_gatt_service_winrt.h
+++ b/device/bluetooth/bluetooth_remote_gatt_service_winrt.h
@@ -62,12 +62,12 @@
     if (FAILED(hr)) {
       DVLOG(2) << "Getting Protocol Error Reference failed: "
                << logging::SystemErrorCodeToString(hr);
-      return GattErrorCode::GATT_ERROR_UNKNOWN;
+      return GattErrorCode::kUnknown;
     }
 
     if (!protocol_error_ref) {
       DVLOG(2) << "Got Null Protocol Error Reference.";
-      return GattErrorCode::GATT_ERROR_UNKNOWN;
+      return GattErrorCode::kUnknown;
     }
 
     uint8_t protocol_error;
@@ -75,7 +75,7 @@
     if (FAILED(hr)) {
       DVLOG(2) << "Getting Protocol Error Value failed: "
                << logging::SystemErrorCodeToString(hr);
-      return GattErrorCode::GATT_ERROR_UNKNOWN;
+      return GattErrorCode::kUnknown;
     }
 
     DVLOG(2) << "Got Protocol Error: " << static_cast<int>(protocol_error);
@@ -84,41 +84,41 @@
     // Version 5.0 Vol 3, Part F, 3.4.1.1.
     switch (protocol_error) {
       case 0x01:  // Invalid Handle
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       case 0x02:  // Read Not Permitted
-        return GATT_ERROR_NOT_PERMITTED;
+        return GattErrorCode::kNotPermitted;
       case 0x03:  // Write Not Permitted
-        return GATT_ERROR_NOT_PERMITTED;
+        return GattErrorCode::kNotPermitted;
       case 0x04:  // Invalid PDU
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       case 0x05:  // Insufficient Authentication
-        return GATT_ERROR_NOT_AUTHORIZED;
+        return GattErrorCode::kNotAuthorized;
       case 0x06:  // Request Not Supported
-        return GATT_ERROR_NOT_SUPPORTED;
+        return GattErrorCode::kNotSupported;
       case 0x07:  // Invalid Offset
-        return GATT_ERROR_INVALID_LENGTH;
+        return GattErrorCode::kInvalidLength;
       case 0x08:  // Insufficient Authorization
-        return GATT_ERROR_NOT_AUTHORIZED;
+        return GattErrorCode::kNotAuthorized;
       case 0x09:  // Prepare Queue Full
-        return GATT_ERROR_IN_PROGRESS;
+        return GattErrorCode::kInProgress;
       case 0x0A:  // Attribute Not Found
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       case 0x0B:  // Attribute Not Long
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       case 0x0C:  // Insufficient Encryption Key Size
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       case 0x0D:  // Invalid Attribute Value Length
-        return GATT_ERROR_INVALID_LENGTH;
+        return GattErrorCode::kInvalidLength;
       case 0x0E:  // Unlikely Error
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       case 0x0F:  // Insufficient Encryption
-        return GATT_ERROR_NOT_PAIRED;
+        return GattErrorCode::kNotPaired;
       case 0x10:  // Unsupported Group Type
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       case 0x11:  // Insufficient Resources
-        return GATT_ERROR_FAILED;
+        return GattErrorCode::kFailed;
       default:
-        return GATT_ERROR_UNKNOWN;
+        return GattErrorCode::kUnknown;
     }
   }
 
diff --git a/device/bluetooth/bluez/bluetooth_adapter_bluez.cc b/device/bluetooth/bluez/bluetooth_adapter_bluez.cc
index 99913da..8693593 100644
--- a/device/bluetooth/bluez/bluetooth_adapter_bluez.cc
+++ b/device/bluetooth/bluez/bluetooth_adapter_bluez.cc
@@ -1574,7 +1574,7 @@
     BLUETOOTH_LOG(ERROR)
         << "Re-registering a service that is already registered!";
     std::move(error_callback)
-        .Run(device::BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(device::BluetoothGattService::GattErrorCode::kFailed);
     return;
   }
 
@@ -1600,7 +1600,7 @@
         << "Unregistering a service that isn't registered! path: "
         << service->object_path().value();
     std::move(error_callback)
-        .Run(device::BluetoothGattService::GATT_ERROR_FAILED);
+        .Run(device::BluetoothGattService::GattErrorCode::kFailed);
     return;
   }
 
diff --git a/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc
index b5fc52e..08579dc5 100644
--- a/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc
+++ b/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc
@@ -1047,7 +1047,7 @@
   EXPECT_FALSE(observer.last_gatt_characteristic_uuid().IsValid());
   EXPECT_EQ(0, success_callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotSupported,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
@@ -1070,7 +1070,7 @@
   EXPECT_FALSE(observer.last_gatt_characteristic_uuid().IsValid());
   EXPECT_EQ(0, success_callback_count_);
   EXPECT_EQ(2, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotPermitted,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
@@ -1113,7 +1113,7 @@
                      base::Unretained(this)));
   EXPECT_EQ(1, success_callback_count_);
   EXPECT_EQ(3, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInvalidLength,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
@@ -1127,7 +1127,7 @@
                      base::Unretained(this)));
   EXPECT_EQ(1, success_callback_count_);
   EXPECT_EQ(4, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_service_error_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
   // Issue a read request.
@@ -1174,7 +1174,8 @@
       base::BindOnce(&BluetoothGattBlueZTest::ValueCallback,
                      base::Unretained(this)));
   EXPECT_EQ(5, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, last_service_error_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
+            last_service_error_);
 
   // But previous call finished.
   EXPECT_EQ(3, success_callback_count_);
@@ -1189,7 +1190,7 @@
                      base::Unretained(this)));
   EXPECT_EQ(3, success_callback_count_);
   EXPECT_EQ(6, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotAuthorized,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
   fake_bluetooth_gatt_characteristic_client_->SetAuthorized(true);
@@ -1201,7 +1202,8 @@
                      base::Unretained(this)));
   EXPECT_EQ(3, success_callback_count_);
   EXPECT_EQ(7, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_PAIRED, last_service_error_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotPaired,
+            last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
   fake_bluetooth_gatt_characteristic_client_->SetAuthenticated(true);
 }
@@ -1256,7 +1258,7 @@
   EXPECT_FALSE(observer.last_gatt_characteristic_uuid().IsValid());
   EXPECT_EQ(0, success_callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotSupported,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
@@ -1279,7 +1281,7 @@
   EXPECT_FALSE(observer.last_gatt_characteristic_uuid().IsValid());
   EXPECT_EQ(0, success_callback_count_);
   EXPECT_EQ(2, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotPermitted,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
@@ -1322,7 +1324,7 @@
                      base::Unretained(this)));
   EXPECT_EQ(1, success_callback_count_);
   EXPECT_EQ(3, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInvalidLength,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
@@ -1336,7 +1338,7 @@
                      base::Unretained(this)));
   EXPECT_EQ(1, success_callback_count_);
   EXPECT_EQ(4, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_service_error_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kFailed, last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
 
   // Issue a read request.
@@ -1383,7 +1385,8 @@
       base::BindOnce(&BluetoothGattBlueZTest::ValueCallback,
                      base::Unretained(this)));
   EXPECT_EQ(5, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, last_service_error_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kInProgress,
+            last_service_error_);
 
   // But previous call finished.
   EXPECT_EQ(3, success_callback_count_);
@@ -1398,7 +1401,7 @@
                      base::Unretained(this)));
   EXPECT_EQ(3, success_callback_count_);
   EXPECT_EQ(6, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotAuthorized,
             last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
   fake_bluetooth_gatt_characteristic_client_->SetAuthorized(true);
@@ -1410,7 +1413,8 @@
                      base::Unretained(this)));
   EXPECT_EQ(3, success_callback_count_);
   EXPECT_EQ(7, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_PAIRED, last_service_error_);
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotPaired,
+            last_service_error_);
   EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
   fake_bluetooth_gatt_characteristic_client_->SetAuthenticated(true);
 }
@@ -1896,7 +1900,7 @@
                      base::Unretained(this)));
   EXPECT_EQ(1, success_callback_count_);
   EXPECT_EQ(1, error_callback_count_);
-  EXPECT_EQ(BluetoothGattService::GATT_ERROR_NOT_PERMITTED,
+  EXPECT_EQ(BluetoothGattService::GattErrorCode::kNotPermitted,
             last_service_error_);
   EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue()));
   EXPECT_FALSE(ValuesEqual(desc_value, descriptor->GetValue()));
diff --git a/device/bluetooth/bluez/bluetooth_gatt_service_bluez.cc b/device/bluetooth/bluez/bluetooth_gatt_service_bluez.cc
index d6dc393..6c13e76 100644
--- a/device/bluetooth/bluez/bluetooth_gatt_service_bluez.cc
+++ b/device/bluetooth/bluez/bluetooth_gatt_service_bluez.cc
@@ -27,21 +27,21 @@
 // static
 device::BluetoothGattService::GattErrorCode
 BluetoothGattServiceBlueZ::DBusErrorToServiceError(std::string error_name) {
-  device::BluetoothGattService::GattErrorCode code = GATT_ERROR_UNKNOWN;
+  auto code = device::BluetoothGattService::GattErrorCode::kUnknown;
   if (error_name == bluetooth_gatt_service::kErrorFailed) {
-    code = GATT_ERROR_FAILED;
+    code = device::BluetoothGattService::GattErrorCode::kFailed;
   } else if (error_name == bluetooth_gatt_service::kErrorInProgress) {
-    code = GATT_ERROR_IN_PROGRESS;
+    code = device::BluetoothGattService::GattErrorCode::kInProgress;
   } else if (error_name == bluetooth_gatt_service::kErrorInvalidValueLength) {
-    code = GATT_ERROR_INVALID_LENGTH;
+    code = device::BluetoothGattService::GattErrorCode::kInvalidLength;
   } else if (error_name == bluetooth_gatt_service::kErrorNotPermitted) {
-    code = GATT_ERROR_NOT_PERMITTED;
+    code = device::BluetoothGattService::GattErrorCode::kNotPermitted;
   } else if (error_name == bluetooth_gatt_service::kErrorNotAuthorized) {
-    code = GATT_ERROR_NOT_AUTHORIZED;
+    code = device::BluetoothGattService::GattErrorCode::kNotAuthorized;
   } else if (error_name == bluetooth_gatt_service::kErrorNotPaired) {
-    code = GATT_ERROR_NOT_PAIRED;
+    code = device::BluetoothGattService::GattErrorCode::kNotPaired;
   } else if (error_name == bluetooth_gatt_service::kErrorNotSupported) {
-    code = GATT_ERROR_NOT_SUPPORTED;
+    code = device::BluetoothGattService::GattErrorCode::kNotSupported;
   }
   return code;
 }
diff --git a/device/bluetooth/cast/bluetooth_remote_gatt_characteristic_cast.cc b/device/bluetooth/cast/bluetooth_remote_gatt_characteristic_cast.cc
index 8548fc31..27e5505 100644
--- a/device/bluetooth/cast/bluetooth_remote_gatt_characteristic_cast.cc
+++ b/device/bluetooth/cast/bluetooth_remote_gatt_characteristic_cast.cc
@@ -82,7 +82,7 @@
   if (success)
     std::move(callback).Run();
   else
-    std::move(error_callback).Run(BluetoothGattService::GATT_ERROR_FAILED);
+    std::move(error_callback).Run(BluetoothGattService::GattErrorCode::kFailed);
 }
 
 }  // namespace
@@ -216,7 +216,7 @@
     std::move(callback).Run(/*error_code=*/absl::nullopt, result);
     return;
   }
-  std::move(callback).Run(BluetoothGattService::GATT_ERROR_FAILED,
+  std::move(callback).Run(BluetoothGattService::GattErrorCode::kFailed,
                           /*value=*/std::vector<uint8_t>());
 }
 
@@ -230,7 +230,7 @@
     std::move(callback).Run();
     return;
   }
-  std::move(error_callback).Run(BluetoothGattService::GATT_ERROR_FAILED);
+  std::move(error_callback).Run(BluetoothGattService::GattErrorCode::kFailed);
 }
 
 }  // namespace device
diff --git a/device/bluetooth/cast/bluetooth_remote_gatt_descriptor_cast.cc b/device/bluetooth/cast/bluetooth_remote_gatt_descriptor_cast.cc
index ef64fe1..e2fc0a4 100644
--- a/device/bluetooth/cast/bluetooth_remote_gatt_descriptor_cast.cc
+++ b/device/bluetooth/cast/bluetooth_remote_gatt_descriptor_cast.cc
@@ -77,7 +77,7 @@
     std::move(callback).Run(/*error_code=*/absl::nullopt, result);
     return;
   }
-  std::move(callback).Run(BluetoothGattService::GATT_ERROR_FAILED,
+  std::move(callback).Run(BluetoothGattService::GattErrorCode::kFailed,
                           /*value=*/std::vector<uint8_t>());
 }
 
@@ -91,7 +91,7 @@
     std::move(callback).Run();
     return;
   }
-  std::move(error_callback).Run(BluetoothGattService::GATT_ERROR_FAILED);
+  std::move(error_callback).Run(BluetoothGattService::GattErrorCode::kFailed);
 }
 
 }  // namespace device
diff --git a/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_unittest.cc b/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_unittest.cc
index 45347bbb..6fe7525 100644
--- a/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_unittest.cc
+++ b/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_unittest.cc
@@ -82,7 +82,7 @@
             EXPECT_FALSE(reader.PopArrayOfBytes(&bytes, &length));
             callback_called = true;
           }),
-      device::BluetoothGattService::GATT_ERROR_FAILED, read_value);
+      device::BluetoothGattService::GattErrorCode::kFailed, read_value);
 
   EXPECT_TRUE(callback_called);
 }
diff --git a/device/bluetooth/dbus/fake_bluetooth_gatt_characteristic_service_provider.cc b/device/bluetooth/dbus/fake_bluetooth_gatt_characteristic_service_provider.cc
index 9c13f8a..b13c680 100644
--- a/device/bluetooth/dbus/fake_bluetooth_gatt_characteristic_service_provider.cc
+++ b/device/bluetooth/dbus/fake_bluetooth_gatt_characteristic_service_provider.cc
@@ -127,15 +127,17 @@
           bluez::BluezDBusManager::Get()->GetBluetoothGattManagerClient());
   if (!fake_bluetooth_gatt_manager_client->IsServiceRegistered(service_path_)) {
     DVLOG(1) << "GATT characteristic not registered.";
-    std::move(callback).Run(device::BluetoothGattService::GATT_ERROR_FAILED,
-                            /*value=*/std::vector<uint8_t>());
+    std::move(callback).Run(
+        device::BluetoothGattService::GattErrorCode::kFailed,
+        /*value=*/std::vector<uint8_t>());
     return;
   }
 
   if (!CanRead(flags_)) {
     DVLOG(1) << "GATT characteristic not readable.";
-    std::move(callback).Run(device::BluetoothGattService::GATT_ERROR_FAILED,
-                            /*value=*/std::vector<uint8_t>());
+    std::move(callback).Run(
+        device::BluetoothGattService::GattErrorCode::kFailed,
+        /*value=*/std::vector<uint8_t>());
     return;
   }
 
diff --git a/device/bluetooth/dbus/fake_bluetooth_gatt_descriptor_service_provider.cc b/device/bluetooth/dbus/fake_bluetooth_gatt_descriptor_service_provider.cc
index a0c78d6..3993738d 100644
--- a/device/bluetooth/dbus/fake_bluetooth_gatt_descriptor_service_provider.cc
+++ b/device/bluetooth/dbus/fake_bluetooth_gatt_descriptor_service_provider.cc
@@ -116,14 +116,14 @@
           characteristic->service_path())) {
     DVLOG(1) << "GATT descriptor not registered.";
     std::move(callback).Run(
-        device::BluetoothGattService::GattErrorCode::GATT_ERROR_FAILED,
+        device::BluetoothGattService::GattErrorCode::kFailed,
         /*value=*/std::vector<uint8_t>());
     return;
   }
 
   if (!CanRead(flags_)) {
     std::move(callback).Run(
-        device::BluetoothGattService::GattErrorCode::GATT_ERROR_FAILED,
+        device::BluetoothGattService::GattErrorCode::kFailed,
         /*value=*/std::vector<uint8_t>());
     return;
   }
diff --git a/device/bluetooth/public/mojom/gatt_result_type_converter.h b/device/bluetooth/public/mojom/gatt_result_type_converter.h
index 8472b770..87604f8 100644
--- a/device/bluetooth/public/mojom/gatt_result_type_converter.h
+++ b/device/bluetooth/public/mojom/gatt_result_type_converter.h
@@ -23,25 +23,21 @@
   static bluetooth::mojom::GattResult Convert(
       const device::BluetoothGattService::GattErrorCode& input) {
     switch (input) {
-      case device::BluetoothGattService::GattErrorCode::GATT_ERROR_UNKNOWN:
+      case device::BluetoothGattService::GattErrorCode::kUnknown:
         return bluetooth::mojom::GattResult::UNKNOWN;
-      case device::BluetoothGattService::GattErrorCode::GATT_ERROR_FAILED:
+      case device::BluetoothGattService::GattErrorCode::kFailed:
         return bluetooth::mojom::GattResult::FAILED;
-      case device::BluetoothGattService::GattErrorCode::GATT_ERROR_IN_PROGRESS:
+      case device::BluetoothGattService::GattErrorCode::kInProgress:
         return bluetooth::mojom::GattResult::IN_PROGRESS;
-      case device::BluetoothGattService::GattErrorCode::
-          GATT_ERROR_INVALID_LENGTH:
+      case device::BluetoothGattService::GattErrorCode::kInvalidLength:
         return bluetooth::mojom::GattResult::INVALID_LENGTH;
-      case device::BluetoothGattService::GattErrorCode::
-          GATT_ERROR_NOT_PERMITTED:
+      case device::BluetoothGattService::GattErrorCode::kNotPermitted:
         return bluetooth::mojom::GattResult::NOT_PERMITTED;
-      case device::BluetoothGattService::GattErrorCode::
-          GATT_ERROR_NOT_AUTHORIZED:
+      case device::BluetoothGattService::GattErrorCode::kNotAuthorized:
         return bluetooth::mojom::GattResult::NOT_AUTHORIZED;
-      case device::BluetoothGattService::GattErrorCode::GATT_ERROR_NOT_PAIRED:
+      case device::BluetoothGattService::GattErrorCode::kNotPaired:
         return bluetooth::mojom::GattResult::NOT_PAIRED;
-      case device::BluetoothGattService::GattErrorCode::
-          GATT_ERROR_NOT_SUPPORTED:
+      case device::BluetoothGattService::GattErrorCode::kNotSupported:
         return bluetooth::mojom::GattResult::NOT_SUPPORTED;
     }
     NOTREACHED();
diff --git a/device/bluetooth/test/bluetooth_test.cc b/device/bluetooth/test/bluetooth_test.cc
index f62b626e..c0de71d 100644
--- a/device/bluetooth/test/bluetooth_test.cc
+++ b/device/bluetooth/test/bluetooth_test.cc
@@ -429,7 +429,7 @@
 
   if (error_in_reentrant) {
     SimulateGattNotifySessionStartError(
-        characteristic, BluetoothGattService::GATT_ERROR_UNKNOWN);
+        characteristic, BluetoothGattService::GattErrorCode::kUnknown);
     characteristic->StartNotifySession(GetNotifyCallback(Call::NOT_EXPECTED),
                                        GetGattErrorCallback(Call::EXPECTED));
   } else {
diff --git a/device/bluetooth/test/bluetooth_test.h b/device/bluetooth/test/bluetooth_test.h
index eb99803c..a685b49 100644
--- a/device/bluetooth/test/bluetooth_test.h
+++ b/device/bluetooth/test/bluetooth_test.h
@@ -716,7 +716,7 @@
   std::vector<uint8_t> last_read_value_;
   std::vector<uint8_t> last_write_value_;
   BluetoothGattService::GattErrorCode last_gatt_error_code_ =
-      BluetoothGattService::GATT_ERROR_UNKNOWN;
+      BluetoothGattService::GattErrorCode::kUnknown;
 
   int callback_count_ = 0;
   int error_callback_count_ = 0;
diff --git a/device/bluetooth/test/bluetooth_test_win.cc b/device/bluetooth/test/bluetooth_test_win.cc
index 5826bf9..defbd64f 100644
--- a/device/bluetooth/test/bluetooth_test_win.cc
+++ b/device/bluetooth/test/bluetooth_test_win.cc
@@ -503,7 +503,7 @@
       GetSimulatedCharacteristic(characteristic);
   CHECK(target_characteristic);
   HRESULT hr = HRESULT_FROM_WIN32(ERROR_SEM_TIMEOUT);
-  if (error_code == BluetoothGattService::GATT_ERROR_INVALID_LENGTH)
+  if (error_code == BluetoothGattService::GattErrorCode::kInvalidLength)
     hr = E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH;
   fake_bt_le_wrapper_->SimulateGattCharacteristicReadError(
       target_characteristic, hr);
@@ -523,7 +523,7 @@
       GetSimulatedCharacteristic(characteristic);
   CHECK(target_characteristic);
   HRESULT hr = HRESULT_FROM_WIN32(ERROR_SEM_TIMEOUT);
-  if (error_code == BluetoothGattService::GATT_ERROR_INVALID_LENGTH)
+  if (error_code == BluetoothGattService::GattErrorCode::kInvalidLength)
     hr = E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH;
   fake_bt_le_wrapper_->SimulateGattCharacteristicWriteError(
       target_characteristic, hr);
@@ -565,7 +565,7 @@
   win::GattCharacteristic* simulated_characteristic =
       GetSimulatedCharacteristic(characteristic);
   DCHECK(simulated_characteristic);
-  DCHECK(error_code == BluetoothGattService::GATT_ERROR_UNKNOWN);
+  DCHECK(error_code == BluetoothGattService::GattErrorCode::kUnknown);
   fake_bt_le_wrapper_->SimulateGattCharacteristicSetNotifyError(
       simulated_characteristic, E_BLUETOOTH_ATT_UNKNOWN_ERROR);
 }
diff --git a/device/bluetooth/test/fake_remote_gatt_characteristic.cc b/device/bluetooth/test/fake_remote_gatt_characteristic.cc
index d6966051..b1cf0fe 100644
--- a/device/bluetooth/test/fake_remote_gatt_characteristic.cc
+++ b/device/bluetooth/test/fake_remote_gatt_characteristic.cc
@@ -243,8 +243,9 @@
       break;
     case mojom::kGATTInvalidHandle:
       DCHECK(!value);
-      std::move(callback).Run(device::BluetoothGattService::GATT_ERROR_FAILED,
-                              std::vector<uint8_t>());
+      std::move(callback).Run(
+          device::BluetoothGattService::GattErrorCode::kFailed,
+          std::vector<uint8_t>());
       break;
     default:
       NOTREACHED();
@@ -268,7 +269,7 @@
       break;
     case mojom::kGATTInvalidHandle:
       std::move(error_callback)
-          .Run(device::BluetoothGattService::GATT_ERROR_FAILED);
+          .Run(device::BluetoothGattService::GattErrorCode::kFailed);
       break;
     default:
       NOTREACHED();
@@ -288,7 +289,7 @@
       break;
     case mojom::kGATTInvalidHandle:
       std::move(error_callback)
-          .Run(device::BluetoothGattService::GATT_ERROR_FAILED);
+          .Run(device::BluetoothGattService::GattErrorCode::kFailed);
       break;
     default:
       NOTREACHED();
@@ -308,7 +309,7 @@
       break;
     case mojom::kGATTInvalidHandle:
       std::move(error_callback)
-          .Run(device::BluetoothGattService::GATT_ERROR_FAILED);
+          .Run(device::BluetoothGattService::GattErrorCode::kFailed);
       break;
     default:
       NOTREACHED();
diff --git a/device/bluetooth/test/fake_remote_gatt_descriptor.cc b/device/bluetooth/test/fake_remote_gatt_descriptor.cc
index 85f06516..49b2047 100644
--- a/device/bluetooth/test/fake_remote_gatt_descriptor.cc
+++ b/device/bluetooth/test/fake_remote_gatt_descriptor.cc
@@ -94,8 +94,9 @@
       break;
     case mojom::kGATTInvalidHandle:
       DCHECK(!value);
-      std::move(callback).Run(device::BluetoothGattService::GATT_ERROR_FAILED,
-                              /*value=*/std::vector<uint8_t>());
+      std::move(callback).Run(
+          device::BluetoothGattService::GattErrorCode::kFailed,
+          /*value=*/std::vector<uint8_t>());
       break;
     default:
       NOTREACHED();
@@ -117,7 +118,7 @@
       break;
     case mojom::kGATTInvalidHandle:
       std::move(error_callback)
-          .Run(device::BluetoothGattService::GATT_ERROR_FAILED);
+          .Run(device::BluetoothGattService::GattErrorCode::kFailed);
       break;
     default:
       NOTREACHED();
diff --git a/device/bluetooth/test/test_bluetooth_local_gatt_service_delegate.cc b/device/bluetooth/test/test_bluetooth_local_gatt_service_delegate.cc
index 495d55459..f104134 100644
--- a/device/bluetooth/test/test_bluetooth_local_gatt_service_delegate.cc
+++ b/device/bluetooth/test/test_bluetooth_local_gatt_service_delegate.cc
@@ -28,7 +28,7 @@
   EXPECT_EQ(expected_characteristic_->GetIdentifier(),
             characteristic->GetIdentifier());
   if (should_fail_) {
-    std::move(callback).Run(BluetoothGattService::GATT_ERROR_FAILED,
+    std::move(callback).Run(BluetoothGattService::GattErrorCode::kFailed,
                             /*value=*/std::vector<uint8_t>());
     return;
   }
@@ -85,7 +85,7 @@
     ValueCallback callback) {
   EXPECT_EQ(expected_descriptor_->GetIdentifier(), descriptor->GetIdentifier());
   if (should_fail_) {
-    std::move(callback).Run(BluetoothGattService::GATT_ERROR_FAILED,
+    std::move(callback).Run(BluetoothGattService::GattErrorCode::kFailed,
                             /*value=*/std::vector<uint8_t>());
     return;
   }
diff --git a/device/fido/cable/fido_ble_connection.cc b/device/fido/cable/fido_ble_connection.cc
index cbed9d67..f83883b 100644
--- a/device/fido/cable/fido_ble_connection.cc
+++ b/device/fido/cable/fido_ble_connection.cc
@@ -56,21 +56,21 @@
 
 constexpr const char* ToString(BluetoothGattService::GattErrorCode error_code) {
   switch (error_code) {
-    case BluetoothGattService::GATT_ERROR_UNKNOWN:
+    case BluetoothGattService::GattErrorCode::kUnknown:
       return "GATT_ERROR_UNKNOWN";
-    case BluetoothGattService::GATT_ERROR_FAILED:
+    case BluetoothGattService::GattErrorCode::kFailed:
       return "GATT_ERROR_FAILED";
-    case BluetoothGattService::GATT_ERROR_IN_PROGRESS:
+    case BluetoothGattService::GattErrorCode::kInProgress:
       return "GATT_ERROR_IN_PROGRESS";
-    case BluetoothGattService::GATT_ERROR_INVALID_LENGTH:
+    case BluetoothGattService::GattErrorCode::kInvalidLength:
       return "GATT_ERROR_INVALID_LENGTH";
-    case BluetoothGattService::GATT_ERROR_NOT_PERMITTED:
+    case BluetoothGattService::GattErrorCode::kNotPermitted:
       return "GATT_ERROR_NOT_PERMITTED";
-    case BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED:
+    case BluetoothGattService::GattErrorCode::kNotAuthorized:
       return "GATT_ERROR_NOT_AUTHORIZED";
-    case BluetoothGattService::GATT_ERROR_NOT_PAIRED:
+    case BluetoothGattService::GattErrorCode::kNotPaired:
       return "GATT_ERROR_NOT_PAIRED";
-    case BluetoothGattService::GATT_ERROR_NOT_SUPPORTED:
+    case BluetoothGattService::GattErrorCode::kNotSupported:
       return "GATT_ERROR_NOT_SUPPORTED";
     default:
       NOTREACHED();
diff --git a/device/fido/cable/fido_ble_connection_unittest.cc b/device/fido/cable/fido_ble_connection_unittest.cc
index 4c7bb75..0c08826 100644
--- a/device/fido/cable/fido_ble_connection_unittest.cc
+++ b/device/fido/cable/fido_ble_connection_unittest.cc
@@ -210,7 +210,7 @@
               base::ThreadTaskRunnerHandle::Get()->PostTask(
                   FROM_HERE,
                   base::BindOnce(std::move(error_callback),
-                                 BluetoothGattService::GATT_ERROR_FAILED));
+                                 BluetoothGattService::GattErrorCode::kFailed));
             }));
   }
 
@@ -240,7 +240,7 @@
                 BluetoothRemoteGattCharacteristic::ValueCallback& callback) {
               absl::optional<BluetoothGattService::GattErrorCode> error_code;
               if (!success)
-                error_code = BluetoothGattService::GATT_ERROR_FAILED;
+                error_code = BluetoothGattService::GattErrorCode::kFailed;
               base::ThreadTaskRunnerHandle::Get()->PostTask(
                   FROM_HERE,
                   base::BindOnce(std::move(callback), error_code, value));
@@ -255,7 +255,7 @@
                 BluetoothRemoteGattCharacteristic::ValueCallback& callback) {
               absl::optional<BluetoothGattService::GattErrorCode> error_code;
               if (!success)
-                error_code = BluetoothGattService::GATT_ERROR_FAILED;
+                error_code = BluetoothGattService::GattErrorCode::kFailed;
               base::ThreadTaskRunnerHandle::Get()->PostTask(
                   FROM_HERE,
                   base::BindOnce(std::move(callback), error_code, value));
@@ -272,7 +272,7 @@
               auto error_code =
                   success ? absl::nullopt
                           : absl::make_optional(
-                                BluetoothGattService::GATT_ERROR_FAILED);
+                                BluetoothGattService::GattErrorCode::kFailed);
               base::ThreadTaskRunnerHandle::Get()->PostTask(
                   FROM_HERE,
                   base::BindOnce(std::move(callback), error_code, value));
@@ -285,19 +285,19 @@
         WriteRemoteCharacteristic_(
             _, BluetoothRemoteGattCharacteristic::WriteType::kWithoutResponse,
             _, _))
-        .WillOnce(Invoke([success](
-                             const auto& data,
+        .WillOnce(
+            Invoke([success](const auto& data,
                              BluetoothRemoteGattCharacteristic::WriteType,
                              base::OnceClosure& callback,
                              BluetoothRemoteGattCharacteristic::ErrorCallback&
                                  error_callback) {
-          base::ThreadTaskRunnerHandle::Get()->PostTask(
-              FROM_HERE,
-              success
-                  ? std::move(callback)
-                  : base::BindOnce(std::move(error_callback),
-                                   BluetoothGattService::GATT_ERROR_FAILED));
-        }));
+              base::ThreadTaskRunnerHandle::Get()->PostTask(
+                  FROM_HERE,
+                  success ? std::move(callback)
+                          : base::BindOnce(
+                                std::move(error_callback),
+                                BluetoothGattService::GattErrorCode::kFailed));
+            }));
   }
 
   void SetNextWriteServiceRevisionResponse(std::vector<uint8_t> expected_data,
@@ -307,19 +307,19 @@
         WriteRemoteCharacteristic_(
             expected_data,
             BluetoothRemoteGattCharacteristic::WriteType::kWithResponse, _, _))
-        .WillOnce(Invoke([success](
-                             const auto& data,
+        .WillOnce(
+            Invoke([success](const auto& data,
                              BluetoothRemoteGattCharacteristic::WriteType,
                              base::OnceClosure& callback,
                              BluetoothRemoteGattCharacteristic::ErrorCallback&
                                  error_callback) {
-          base::ThreadTaskRunnerHandle::Get()->PostTask(
-              FROM_HERE,
-              success
-                  ? std::move(callback)
-                  : base::BindOnce(std::move(error_callback),
-                                   BluetoothGattService::GATT_ERROR_FAILED));
-        }));
+              base::ThreadTaskRunnerHandle::Get()->PostTask(
+                  FROM_HERE,
+                  success ? std::move(callback)
+                          : base::BindOnce(
+                                std::move(error_callback),
+                                BluetoothGattService::GattErrorCode::kFailed));
+            }));
   }
 
   void AddFidoService() {
diff --git a/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc b/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc
index 7b8afc8..8fac887 100644
--- a/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc
+++ b/extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc
@@ -172,22 +172,24 @@
     BluetoothGattService::GattErrorCode error_code) {
   extensions::BluetoothLowEnergyEventRouter::Status error_status =
       extensions::BluetoothLowEnergyEventRouter::kStatusErrorFailed;
-  if (error_code == BluetoothGattService::GATT_ERROR_IN_PROGRESS) {
+  if (error_code == BluetoothGattService::GattErrorCode::kInProgress) {
     error_status =
         extensions::BluetoothLowEnergyEventRouter::kStatusErrorInProgress;
-  } else if (error_code == BluetoothGattService::GATT_ERROR_INVALID_LENGTH) {
+  } else if (error_code ==
+             BluetoothGattService::GattErrorCode::kInvalidLength) {
     error_status =
         extensions::BluetoothLowEnergyEventRouter::kStatusErrorInvalidLength;
-  } else if (error_code == BluetoothGattService::GATT_ERROR_NOT_PERMITTED) {
+  } else if (error_code == BluetoothGattService::GattErrorCode::kNotPermitted) {
     error_status =
         extensions::BluetoothLowEnergyEventRouter::kStatusErrorPermissionDenied;
-  } else if (error_code == BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED) {
+  } else if (error_code ==
+             BluetoothGattService::GattErrorCode::kNotAuthorized) {
     error_status = extensions::BluetoothLowEnergyEventRouter::
         kStatusErrorInsufficientAuthorization;
-  } else if (error_code == BluetoothGattService::GATT_ERROR_NOT_PAIRED) {
+  } else if (error_code == BluetoothGattService::GattErrorCode::kNotPaired) {
     error_status =
         extensions::BluetoothLowEnergyEventRouter::kStatusErrorHigherSecurity;
-  } else if (error_code == BluetoothGattService::GATT_ERROR_NOT_SUPPORTED) {
+  } else if (error_code == BluetoothGattService::GattErrorCode::kNotSupported) {
     error_status =
         extensions::BluetoothLowEnergyEventRouter::kStatusErrorGattNotSupported;
   }
diff --git a/fuchsia_web/webengine/context_provider.cml b/fuchsia_web/webengine/context_provider.cml
index 398a04a..8ac6a67d 100644
--- a/fuchsia_web/webengine/context_provider.cml
+++ b/fuchsia_web/webengine/context_provider.cml
@@ -9,10 +9,6 @@
             "--context-provider",
             "--enable-cfv2",
         ],
-
-        // Required to allow JIT in child processes such as renderers.
-        // Known as 'deprecated-ambient-replace-as-executable' in CFv1.
-        job_policy_ambient_mark_vmo_exec: "true",
     },
     capabilities: [
         {
diff --git a/gin/gin_features.cc b/gin/gin_features.cc
index a69c5c1..e18b177 100644
--- a/gin/gin_features.cc
+++ b/gin/gin_features.cc
@@ -8,106 +8,123 @@
 namespace features {
 
 // Enable code space compaction when finalizing a full GC with stack.
-const base::Feature kV8CompactCodeSpaceWithStack{
-    "V8CompactCodeSpaceWithStack", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8CompactCodeSpaceWithStack,
+             "V8CompactCodeSpaceWithStack",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enable compaction when finalizing a full GC with stack.
-const base::Feature kV8CompactWithStack{"V8CompactWithStack",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8CompactWithStack,
+             "V8CompactWithStack",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables compaction of maps in a full GC.
-const base::Feature kV8CompactMaps{"V8CompactMaps",
-                                   base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8CompactMaps,
+             "V8CompactMaps",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Crashes on evacuation failures in a full GC instead of aborting evacuation.
-const base::Feature kV8CrashOnEvacuationFailure{
-    "V8CrashOnEvacuationFailure", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8CrashOnEvacuationFailure,
+             "V8CrashOnEvacuationFailure",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables a separate heap space for all map objects.
-const base::Feature kV8UseMapSpace{"V8UseMapSpace",
-                                   base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8UseMapSpace, "V8UseMapSpace", base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables optimization of JavaScript in V8.
-const base::Feature kV8OptimizeJavascript{"V8OptimizeJavascript",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8OptimizeJavascript,
+             "V8OptimizeJavascript",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables flushing of JS bytecode in V8.
-const base::Feature kV8FlushBytecode{"V8FlushBytecode",
-                                     base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8FlushBytecode,
+             "V8FlushBytecode",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 const base::FeatureParam<int> kV8FlushBytecodeOldAge{
     &kV8FlushBytecode, "V8FlushBytecodeOldAge", 5};
 
 // Enables flushing of baseline code in V8.
-const base::Feature kV8FlushBaselineCode{"V8FlushBaselineCode",
-                                         base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8FlushBaselineCode,
+             "V8FlushBaselineCode",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables finalizing streaming JS compilations on a background thread.
-const base::Feature kV8OffThreadFinalization{"V8OffThreadFinalization",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8OffThreadFinalization,
+             "V8OffThreadFinalization",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables lazy feedback allocation in V8.
-const base::Feature kV8LazyFeedbackAllocation{"V8LazyFeedbackAllocation",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8LazyFeedbackAllocation,
+             "V8LazyFeedbackAllocation",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables per-context marking worklists in V8 GC.
-const base::Feature kV8PerContextMarkingWorklist{
-    "V8PerContextMarkingWorklist", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8PerContextMarkingWorklist,
+             "V8PerContextMarkingWorklist",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables flushing of the instruction cache for the embedded blob.
-const base::Feature kV8FlushEmbeddedBlobICache{
-    "V8FlushEmbeddedBlobICache", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8FlushEmbeddedBlobICache,
+             "V8FlushEmbeddedBlobICache",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables reduced number of concurrent marking tasks.
-const base::Feature kV8ReduceConcurrentMarkingTasks{
-    "V8ReduceConcurrentMarkingTasks", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8ReduceConcurrentMarkingTasks,
+             "V8ReduceConcurrentMarkingTasks",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Disables reclaiming of unmodified wrappers objects.
-const base::Feature kV8NoReclaimUnmodifiedWrappers{
-    "V8NoReclaimUnmodifiedWrappers", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8NoReclaimUnmodifiedWrappers,
+             "V8NoReclaimUnmodifiedWrappers",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables W^X code memory protection in V8.
 // This is enabled in V8 by default. To test the performance impact, we are
 // going to disable this feature in a finch experiment.
-const base::Feature kV8CodeMemoryWriteProtection{
-    "V8CodeMemoryWriteProtection", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8CodeMemoryWriteProtection,
+             "V8CodeMemoryWriteProtection",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables fallback to a breadth-first regexp engine on excessive backtracking.
-const base::Feature kV8ExperimentalRegexpEngine{
-    "V8ExperimentalRegexpEngine", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8ExperimentalRegexpEngine,
+             "V8ExperimentalRegexpEngine",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables experimental Turboprop compiler.
-const base::Feature kV8Turboprop{"V8Turboprop",
-                                 base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8Turboprop, "V8Turboprop", base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables Sparkplug compiler. Note that this only sets the V8 flag when
 // manually overridden; otherwise it defers to whatever the V8 default is.
-const base::Feature kV8Sparkplug{"V8Sparkplug",
-                                 base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8Sparkplug, "V8Sparkplug", base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables the concurrent Sparkplug compiler.
-const base::Feature kV8ConcurrentSparkplug{"V8ConcurrentSparkplug",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8ConcurrentSparkplug,
+             "V8ConcurrentSparkplug",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const base::FeatureParam<int> kV8ConcurrentSparkplugMaxThreads{
     &kV8ConcurrentSparkplug, "V8ConcurrentSparkplugMaxThreads", 0};
-const base::Feature kV8ConcurrentSparkplugHighPriorityThreads{
-    "V8ConcurrentSparkplugHighPriorityThreads",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8ConcurrentSparkplugHighPriorityThreads,
+             "V8ConcurrentSparkplugHighPriorityThreads",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // Makes sure the experimental Sparkplug compiler is only enabled if short
 // builtin calls are enabled too.
-const base::Feature kV8SparkplugNeedsShortBuiltinCalls{
-    "V8SparkplugNeedsShortBuiltinCalls", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8SparkplugNeedsShortBuiltinCalls,
+             "V8SparkplugNeedsShortBuiltinCalls",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables short builtin calls feature.
-const base::Feature kV8ShortBuiltinCalls{"V8ShortBuiltinCalls",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8ShortBuiltinCalls,
+             "V8ShortBuiltinCalls",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enables fast API calls in TurboFan.
-const base::Feature kV8TurboFastApiCalls{"V8TurboFastApiCalls",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kV8TurboFastApiCalls,
+             "V8TurboFastApiCalls",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Artificially delays script execution.
-const base::Feature kV8ScriptAblation{"V8ScriptAblation",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8ScriptAblation,
+             "V8ScriptAblation",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const base::FeatureParam<int> kV8ScriptDelayOnceMs{&kV8ScriptAblation,
                                                    "V8ScriptDelayOnceMs", 0};
 const base::FeatureParam<int> kV8ScriptDelayMs{&kV8ScriptAblation,
@@ -117,22 +134,27 @@
 
 // Enables slow histograms that provide detailed information at increased
 // runtime overheads.
-const base::Feature kV8SlowHistograms{"V8SlowHistograms",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8SlowHistograms,
+             "V8SlowHistograms",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 // Multiple finch experiments might use slow-histograms. We introduce
 // separate feature flags to circumvent finch limitations.
-const base::Feature kV8SlowHistogramsCodeMemoryWriteProtection{
-    "V8SlowHistogramsCodeMemoryWriteProtection",
-    base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kV8SlowHistogramsSparkplug{
-    "V8SlowHistogramsSparkplug", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kV8SlowHistogramsSparkplugAndroid{
-    "V8SlowHistogramsSparkplugAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
-const base::Feature kV8SlowHistogramsScriptAblation{
-    "V8SlowHistogramsScriptAblation", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8SlowHistogramsCodeMemoryWriteProtection,
+             "V8SlowHistogramsCodeMemoryWriteProtection",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kV8SlowHistogramsSparkplug,
+             "V8SlowHistogramsSparkplug",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kV8SlowHistogramsSparkplugAndroid,
+             "V8SlowHistogramsSparkplugAndroid",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kV8SlowHistogramsScriptAblation,
+             "V8SlowHistogramsScriptAblation",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kV8DelayMemoryReducer{"V8DelayMemoryReducer",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kV8DelayMemoryReducer,
+             "V8DelayMemoryReducer",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 const base::FeatureParam<base::TimeDelta> kV8MemoryReducerStartDelay{
     &kV8DelayMemoryReducer, "delay", base::Seconds(8)};
 
diff --git a/gin/gin_features.h b/gin/gin_features.h
index 2c27529..90bbe931 100644
--- a/gin/gin_features.h
+++ b/gin/gin_features.h
@@ -12,43 +12,42 @@
 
 namespace features {
 
-GIN_EXPORT extern const base::Feature kV8CompactCodeSpaceWithStack;
-GIN_EXPORT extern const base::Feature kV8CompactMaps;
-GIN_EXPORT extern const base::Feature kV8CompactWithStack;
-GIN_EXPORT extern const base::Feature kV8ConcurrentSparkplug;
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8CompactCodeSpaceWithStack);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8CompactMaps);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8CompactWithStack);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8ConcurrentSparkplug);
 GIN_EXPORT extern const base::FeatureParam<int>
     kV8ConcurrentSparkplugMaxThreads;
-GIN_EXPORT extern const base::Feature kV8ConcurrentSparkplugHighPriorityThreads;
-GIN_EXPORT extern const base::Feature kV8CrashOnEvacuationFailure;
-GIN_EXPORT extern const base::Feature kV8ExperimentalRegexpEngine;
-GIN_EXPORT extern const base::Feature kV8FlushBytecode;
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8ConcurrentSparkplugHighPriorityThreads);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8CrashOnEvacuationFailure);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8ExperimentalRegexpEngine);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8FlushBytecode);
 GIN_EXPORT extern const base::FeatureParam<int> kV8FlushBytecodeOldAge;
-GIN_EXPORT extern const base::Feature kV8FlushBaselineCode;
-GIN_EXPORT extern const base::Feature kV8FlushEmbeddedBlobICache;
-GIN_EXPORT extern const base::Feature kV8LazyFeedbackAllocation;
-GIN_EXPORT extern const base::Feature kV8NoReclaimUnmodifiedWrappers;
-GIN_EXPORT extern const base::Feature kV8CodeMemoryWriteProtection;
-GIN_EXPORT extern const base::Feature kV8OffThreadFinalization;
-GIN_EXPORT extern const base::Feature kV8OptimizeJavascript;
-GIN_EXPORT extern const base::Feature kV8PerContextMarkingWorklist;
-GIN_EXPORT extern const base::Feature kV8ReduceConcurrentMarkingTasks;
-GIN_EXPORT extern const base::Feature kV8ScriptAblation;
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8FlushBaselineCode);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8FlushEmbeddedBlobICache);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8LazyFeedbackAllocation);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8NoReclaimUnmodifiedWrappers);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8CodeMemoryWriteProtection);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8OffThreadFinalization);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8OptimizeJavascript);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8PerContextMarkingWorklist);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8ReduceConcurrentMarkingTasks);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8ScriptAblation);
 GIN_EXPORT extern const base::FeatureParam<double> kV8ScriptDelayFraction;
 GIN_EXPORT extern const base::FeatureParam<int> kV8ScriptDelayMs;
 GIN_EXPORT extern const base::FeatureParam<int> kV8ScriptDelayOnceMs;
-GIN_EXPORT extern const base::Feature kV8ShortBuiltinCalls;
-GIN_EXPORT extern const base::Feature kV8SlowHistograms;
-GIN_EXPORT extern const base::Feature
-    kV8SlowHistogramsCodeMemoryWriteProtection;
-GIN_EXPORT extern const base::Feature kV8SlowHistogramsSparkplug;
-GIN_EXPORT extern const base::Feature kV8SlowHistogramsSparkplugAndroid;
-GIN_EXPORT extern const base::Feature kV8SlowHistogramsScriptAblation;
-GIN_EXPORT extern const base::Feature kV8Sparkplug;
-GIN_EXPORT extern const base::Feature kV8SparkplugNeedsShortBuiltinCalls;
-GIN_EXPORT extern const base::Feature kV8TurboFastApiCalls;
-GIN_EXPORT extern const base::Feature kV8Turboprop;
-GIN_EXPORT extern const base::Feature kV8UseMapSpace;
-GIN_EXPORT extern const base::Feature kV8DelayMemoryReducer;
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8ShortBuiltinCalls);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8SlowHistograms);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8SlowHistogramsCodeMemoryWriteProtection);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8SlowHistogramsSparkplug);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8SlowHistogramsSparkplugAndroid);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8SlowHistogramsScriptAblation);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8Sparkplug);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8SparkplugNeedsShortBuiltinCalls);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8TurboFastApiCalls);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8Turboprop);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8UseMapSpace);
+GIN_EXPORT BASE_DECLARE_FEATURE(kV8DelayMemoryReducer);
 GIN_EXPORT extern const base::FeatureParam<base::TimeDelta>
     kV8MemoryReducerStartDelay;
 
diff --git a/gpu/command_buffer/common/sync_token.cc b/gpu/command_buffer/common/sync_token.cc
index ff4c288..1bf5e25 100644
--- a/gpu/command_buffer/common/sync_token.cc
+++ b/gpu/command_buffer/common/sync_token.cc
@@ -4,9 +4,10 @@
 
 #include "gpu/command_buffer/common/sync_token.h"
 
-#include <algorithm>
 #include <sstream>
 
+#include "base/ranges/algorithm.h"
+
 namespace gpu {
 
 SyncToken::SyncToken()
@@ -43,8 +44,8 @@
 std::vector<SyncToken> ReduceSyncTokens(base::span<const SyncToken> tokens) {
   std::vector<SyncToken> reduced;
   for (const SyncToken& next_token : tokens) {
-    auto itr = std::find_if(
-        reduced.begin(), reduced.end(), [&next_token](const SyncToken& token) {
+    auto itr =
+        base::ranges::find_if(reduced, [&next_token](const SyncToken& token) {
           return next_token.namespace_id() == token.namespace_id() &&
                  next_token.command_buffer_id() == token.command_buffer_id();
         });
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 921232e..aedb1e3 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -9,7 +9,6 @@
 #include <stdint.h>
 #include <stdio.h>
 
-#include <algorithm>
 #include <cmath>
 #include <limits>
 #include <list>
@@ -34,6 +33,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/numerics/safe_math.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/trace_event/trace_event.h"
@@ -274,8 +274,7 @@
 
 static bool StringIsValidForGLES(const std::string& str) {
   return str.length() == 0 ||
-         std::find_if_not(str.begin(), str.end(), CharacterIsValidForGLES) ==
-             str.end();
+         base::ranges::all_of(str, CharacterIsValidForGLES);
 }
 
 DisallowedFeatures::DisallowedFeatures() = default;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
index 9811634..ab2f90ae 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
@@ -11,6 +11,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_split.h"
 #include "build/build_config.h"
 #include "gpu/command_buffer/service/command_buffer_service.h"
@@ -2506,11 +2507,9 @@
 }
 
 bool GLES2DecoderPassthroughImpl::OnlyHasPendingProgramCompletionQueries() {
-  return std::find_if(pending_queries_.begin(), pending_queries_.end(),
-                      [](const auto& query) {
-                        return query.target !=
-                               GL_PROGRAM_COMPLETION_QUERY_CHROMIUM;
-                      }) == pending_queries_.end();
+  return base::ranges::all_of(pending_queries_, [](const auto& query) {
+    return query.target == GL_PROGRAM_COMPLETION_QUERY_CHROMIUM;
+  });
 }
 
 error::Error GLES2DecoderPassthroughImpl::ProcessQueries(bool did_finish) {
@@ -2699,11 +2698,8 @@
 }
 
 void GLES2DecoderPassthroughImpl::RemovePendingQuery(GLuint service_id) {
-  auto pending_iter =
-      std::find_if(pending_queries_.begin(), pending_queries_.end(),
-                   [service_id](const PendingQuery& pending_query) {
-                     return pending_query.service_id == service_id;
-                   });
+  auto pending_iter = base::ranges::find(pending_queries_, service_id,
+                                         &PendingQuery::service_id);
   if (pending_iter != pending_queries_.end()) {
     QuerySync* sync = pending_iter->sync;
     sync->result = 0;
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 902391b..d0086f3a 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
@@ -10,6 +10,7 @@
 #include "base/callback_helpers.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/unsafe_shared_memory_region.h"
+#include "base/ranges/algorithm.h"
 #include "base/unguessable_token.h"
 #include "components/viz/common/resources/resource_format_utils.h"
 #include "gpu/command_buffer/common/shared_image_usage.h"
@@ -601,12 +602,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::D3D12;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::D3D12,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
@@ -746,12 +747,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::D3D12;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::D3D12,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
@@ -838,12 +839,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::D3D12;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::D3D12,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
@@ -1109,12 +1110,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::D3D12;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::D3D12,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
@@ -1239,12 +1240,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::D3D12;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::D3D12,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
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 26bf5ce..7faa412 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
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/callback_helpers.h"
+#include "base/ranges/algorithm.h"
 #include "components/viz/common/gpu/vulkan_in_process_context_provider.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/shared_image/external_vk_image_dawn_representation.h"
@@ -97,12 +98,12 @@
     dawn_instance_.DiscoverDefaultAdapters();
 
     std::vector<dawn::native::Adapter> adapters = dawn_instance_.GetAdapters();
-    auto adapter_it = std::find_if(
-        adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-          wgpu::AdapterProperties properties;
-          adapter.GetProperties(&properties);
-          return properties.backendType == wgpu::BackendType::Vulkan;
-        });
+    auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::Vulkan,
+                                         [](dawn::native::Adapter adapter) {
+                                           wgpu::AdapterProperties properties;
+                                           adapter.GetProperties(&properties);
+                                           return properties.backendType;
+                                         });
     ASSERT_NE(adapter_it, adapters.end());
 
     DawnProcTable procs = dawn::native::GetProcs();
diff --git a/gpu/command_buffer/service/shared_image/gl_image_backing.cc b/gpu/command_buffer/service/shared_image/gl_image_backing.cc
index fcf2f03..786a80c 100644
--- a/gpu/command_buffer/service/shared_image/gl_image_backing.cc
+++ b/gpu/command_buffer/service/shared_image/gl_image_backing.cc
@@ -781,9 +781,10 @@
     }
     new_state = gles2::Texture::COPIED;
   }
+  DCHECK(new_state == gles2::Texture::BOUND ||
+         new_state == gles2::Texture::COPIED);
   if (IsPassthrough()) {
-    passthrough_texture_->set_is_bind_pending(new_state ==
-                                              gles2::Texture::UNBOUND);
+    passthrough_texture_->set_is_bind_pending(false);
   } else {
     texture_->SetLevelImage(target, 0, image_.get(), new_state);
   }
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 75bd46b..5ca8035 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
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/callback_helpers.h"
+#include "base/ranges/algorithm.h"
 #include "gpu/command_buffer/common/shared_image_usage.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/shared_image/shared_image_factory.h"
@@ -294,12 +295,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::Metal;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::Metal,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
@@ -444,12 +445,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::Metal;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::Metal,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
@@ -534,12 +535,12 @@
   instance.DiscoverDefaultAdapters();
 
   std::vector<dawn::native::Adapter> adapters = instance.GetAdapters();
-  auto adapter_it = std::find_if(
-      adapters.begin(), adapters.end(), [](dawn::native::Adapter adapter) {
-        wgpu::AdapterProperties properties;
-        adapter.GetProperties(&properties);
-        return properties.backendType == wgpu::BackendType::Metal;
-      });
+  auto adapter_it = base::ranges::find(adapters, wgpu::BackendType::Metal,
+                                       [](dawn::native::Adapter adapter) {
+                                         wgpu::AdapterProperties properties;
+                                         adapter.GetProperties(&properties);
+                                         return properties.backendType;
+                                       });
   ASSERT_NE(adapter_it, adapters.end());
 
   dawn::native::DawnDeviceDescriptor device_descriptor;
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc
index 882ca01..79b3906 100644
--- a/gpu/command_buffer/service/webgpu_decoder_impl.cc
+++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -1700,6 +1700,9 @@
   if (!dawn::native::IsTextureSubresourceInitialized(texture, 0, 1, 0, 1)) {
     // The compositor renders uninitialized textures as red. If the texture is
     // not initialized, we need to explicitly clear its contents to black.
+    // This may not successfully initialize the texture if the texture or device
+    // was explicitly destroyed. TODO(crbug.com/1359106): Some other workaround
+    // will be needed to make the texture black in the destroyed case.
     // TODO(crbug.com/1242712): Use the C++ WebGPU API.
     const auto& procs = dawn::native::GetProcs();
     WGPUTextureView view = procs.textureCreateView(texture, nullptr);
@@ -1725,7 +1728,7 @@
         procs.deviceCreateCommandEncoder(device, &command_encoder_desc);
     WGPURenderPassEncoder pass =
         procs.commandEncoderBeginRenderPass(encoder, &render_pass_descriptor);
-    procs.renderPassEncoderEndPass(pass);
+    procs.renderPassEncoderEnd(pass);
     WGPUCommandBuffer command_buffer =
         procs.commandEncoderFinish(encoder, nullptr);
     WGPUQueue queue = procs.deviceGetQueue(device);
@@ -1735,8 +1738,6 @@
     procs.renderPassEncoderRelease(pass);
     procs.commandEncoderRelease(encoder);
     procs.textureViewRelease(view);
-
-    DCHECK(dawn::native::IsTextureSubresourceInitialized(texture, 0, 1, 0, 1));
   }
 
   associated_shared_image_map_.erase(it);
diff --git a/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc b/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc
index 76bf5090..3723330 100644
--- a/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc
+++ b/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc
@@ -10,6 +10,7 @@
 #include "gpu/command_buffer/common/shared_image_usage.h"
 #include "gpu/command_buffer/service/webgpu_decoder.h"
 #include "gpu/command_buffer/tests/webgpu_test.h"
+#include "gpu/config/gpu_test_config.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/color_space.h"
@@ -78,6 +79,19 @@
   return os;
 }
 
+uint32_t BytesPerTexel(viz::ResourceFormat format) {
+  switch (format) {
+    case viz::ResourceFormat::RGBA_8888:
+    case viz::ResourceFormat::BGRA_8888:
+      return 4;
+    case viz::ResourceFormat::RGBA_F16:
+      return 8;
+    default:
+      NOTREACHED();
+      return 0;
+  }
+}
+
 }  // namespace
 
 class WebGPUMailboxTest
@@ -129,6 +143,8 @@
     WebGPUTest::SetUp();
     Initialize(GetParam());
 
+    device_ = GetNewDevice();
+
     mock_buffer_map_callback =
         std::make_unique<testing::StrictMock<MockBufferMapCallback>>();
     mock_device_error_callback =
@@ -138,6 +154,9 @@
   void TearDown() override {
     mock_buffer_map_callback = nullptr;
     mock_device_error_callback = nullptr;
+    // Wait for all operations to catch any validation or device lost errors.
+    PollUntilIdle();
+    device_ = nullptr;
     WebGPUTest::TearDown();
   }
 
@@ -202,9 +221,29 @@
     webgpu()->DissociateMailbox(reservation.id, reservation.generation);
   }
 
+  void UninitializeTexture(wgpu::Device device, wgpu::Texture texture) {
+    wgpu::RenderPassColorAttachment color_desc = {};
+    color_desc.view = texture.CreateView();
+    color_desc.loadOp = wgpu::LoadOp::Load;
+    color_desc.storeOp = wgpu::StoreOp::Discard;
+
+    wgpu::RenderPassDescriptor render_pass_desc = {};
+    render_pass_desc.colorAttachmentCount = 1;
+    render_pass_desc.colorAttachments = &color_desc;
+
+    wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+    wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&render_pass_desc);
+    pass.End();
+    wgpu::CommandBuffer commands = encoder.Finish();
+
+    wgpu::Queue queue = device.GetQueue();
+    queue.Submit(1, &commands);
+  }
+
 #if BUILDFLAG(IS_MAC)
   bool mac_m1_ = false;
 #endif
+  wgpu::Device device_;
 };
 
 TEST_P(WebGPUMailboxTest, AssociateMailboxCmd) {
@@ -224,8 +263,7 @@
       kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
       kNullSurfaceHandle);
 
-  wgpu::Device device = GetNewDevice();
-  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device.Get());
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
 
   GetGpuServiceHolder()->ScheduleGpuTask(base::BindOnce(
       [](webgpu::WebGPUDecoder* decoder, webgpu::ReservedTexture reservation,
@@ -346,8 +384,7 @@
       kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
       kNullSurfaceHandle);
 
-  wgpu::Device device = GetNewDevice();
-  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device.Get());
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
 
   GetGpuServiceHolder()->ScheduleGpuTask(base::BindOnce(
       [](webgpu::WebGPUDecoder* decoder, webgpu::ReservedTexture reservation,
@@ -396,6 +433,210 @@
   GetGpuServiceHolder()->gpu_thread_task_runner()->RunsTasksInCurrentSequence();
 }
 
+// Test that Associate and Dissociate mailbox may be used after the device is
+// destroyed. The test should not crash or produce unexpected validation errors.
+TEST_P(WebGPUMailboxTest,
+       DISABLED_AssociateDissociateMailboxAfterDeviceDestroy) {
+  if (!WebGPUSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPU isn't supported";
+    return;
+  }
+  if (!WebGPUSharedImageSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPUSharedImage isn't supported";
+    return;
+  }
+
+  SharedImageInterface* sii = GetSharedImageInterface();
+  Mailbox mailbox = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+  SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
+  webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
+
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
+
+  device_.Destroy();
+
+  webgpu()->AssociateMailbox(
+      reservation.deviceId, reservation.deviceGeneration, reservation.id,
+      reservation.generation, WGPUTextureUsage_RenderAttachment,
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox));
+  wgpu::Texture texture = wgpu::Texture::Acquire(reservation.texture);
+  webgpu()->DissociateMailbox(reservation.id, reservation.generation);
+  webgpu()->FlushCommands();
+}
+
+// Test that ReserveTexture may be used after the device is destroyed.
+// The test should not crash or produce unexpected validation errors.
+TEST_P(WebGPUMailboxTest, DISABLED_ReserveTextureAfterDeviceDestroy) {
+  if (!WebGPUSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPU isn't supported";
+    return;
+  }
+  if (!WebGPUSharedImageSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPUSharedImage isn't supported";
+    return;
+  }
+
+  SharedImageInterface* sii = GetSharedImageInterface();
+  Mailbox mailbox = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+  SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
+  webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
+
+  device_.Destroy();
+
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
+
+  webgpu()->AssociateMailbox(
+      reservation.deviceId, reservation.deviceGeneration, reservation.id,
+      reservation.generation, WGPUTextureUsage_RenderAttachment,
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox));
+  wgpu::Texture texture = wgpu::Texture::Acquire(reservation.texture);
+  webgpu()->DissociateMailbox(reservation.id, reservation.generation);
+  webgpu()->FlushCommands();
+}
+
+// Test that DissociateMailbox may be used after the device is destroyed.
+// The test should not crash or produce unexpected validation errors.
+TEST_P(WebGPUMailboxTest, DISABLED_DissociateMailboxAfterDeviceDestroy) {
+  if (!WebGPUSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPU isn't supported";
+    return;
+  }
+  if (!WebGPUSharedImageSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPUSharedImage isn't supported";
+    return;
+  }
+
+  SharedImageInterface* sii = GetSharedImageInterface();
+  Mailbox mailbox = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+  SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
+  webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
+
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
+
+  webgpu()->AssociateMailbox(
+      reservation.deviceId, reservation.deviceGeneration, reservation.id,
+      reservation.generation, WGPUTextureUsage_RenderAttachment,
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox));
+
+  wgpu::Texture texture = wgpu::Texture::Acquire(reservation.texture);
+  device_.Destroy();
+  webgpu()->DissociateMailbox(reservation.id, reservation.generation);
+  webgpu()->FlushCommands();
+}
+
+// Test that DissociateMailboxForPresentAfterDeviceDestroy may be used after the
+// device is destroyed. The test should not crash or produce unexpected
+// validation errors.
+TEST_P(WebGPUMailboxTest,
+       DISABLED_DissociateMailboxForPresentAfterDeviceDestroy) {
+  if (!WebGPUSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPU isn't supported";
+    return;
+  }
+  if (!WebGPUSharedImageSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPUSharedImage isn't supported";
+    return;
+  }
+
+  SharedImageInterface* sii = GetSharedImageInterface();
+  Mailbox mailbox = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+  SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
+  webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
+
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
+
+  webgpu()->AssociateMailbox(
+      reservation.deviceId, reservation.deviceGeneration, reservation.id,
+      reservation.generation, WGPUTextureUsage_RenderAttachment,
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox));
+
+  wgpu::Texture texture = wgpu::Texture::Acquire(reservation.texture);
+  UninitializeTexture(device_, texture);
+  device_.Destroy();
+  webgpu()->DissociateMailboxForPresent(reservation.deviceId,
+                                        reservation.deviceGeneration,
+                                        reservation.id, reservation.generation);
+}
+
+// Test that DissociateMailbox may be used after the texture is destroyed.
+// The test should not crash or produce unexpected validation errors.
+TEST_P(WebGPUMailboxTest, DISABLED_DissociateMailboxAfterTextureDestroy) {
+  if (!WebGPUSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPU isn't supported";
+    return;
+  }
+  if (!WebGPUSharedImageSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPUSharedImage isn't supported";
+    return;
+  }
+
+  SharedImageInterface* sii = GetSharedImageInterface();
+  Mailbox mailbox = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+  SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
+  webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
+
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
+
+  webgpu()->AssociateMailbox(
+      reservation.deviceId, reservation.deviceGeneration, reservation.id,
+      reservation.generation, WGPUTextureUsage_RenderAttachment,
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox));
+
+  wgpu::Texture texture = wgpu::Texture::Acquire(reservation.texture);
+  texture.Destroy();
+  webgpu()->DissociateMailbox(reservation.id, reservation.generation);
+  webgpu()->FlushCommands();
+}
+
+// Test that DissociateMailboxForPresent may be used after the texture is
+// destroyed. The test should not crash or produce unexpected validation errors.
+TEST_P(WebGPUMailboxTest,
+       DISABLED_DissociateMailboxForPresentAfterTextureDestroy) {
+  if (!WebGPUSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPU isn't supported";
+    return;
+  }
+  if (!WebGPUSharedImageSupported()) {
+    LOG(ERROR) << "Test skipped because WebGPUSharedImage isn't supported";
+    return;
+  }
+
+  SharedImageInterface* sii = GetSharedImageInterface();
+  Mailbox mailbox = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
+
+  webgpu()->AssociateMailbox(
+      reservation.deviceId, reservation.deviceGeneration, reservation.id,
+      reservation.generation, WGPUTextureUsage_RenderAttachment,
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox));
+
+  wgpu::Texture texture = wgpu::Texture::Acquire(reservation.texture);
+  UninitializeTexture(device_, texture);
+  texture.Destroy();
+  webgpu()->DissociateMailboxForPresent(reservation.deviceId,
+                                        reservation.deviceGeneration,
+                                        reservation.id, reservation.generation);
+}
+
 // Tests using Associate/DissociateMailbox to share an image with Dawn.
 // For simplicity of the test the image is shared between a Dawn device and
 // itself: we render to it using the Dawn device, then re-associate it to a
@@ -422,16 +663,14 @@
   SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
   webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
 
-  wgpu::Device device = GetNewDevice();
-
   // Part 1: Write to the texture using Dawn
-  InitializeTextureColor(device, mailbox, {0.0, 0.0, 1.0, 1.0});
+  InitializeTextureColor(device_, mailbox, {0.0, 0.0, 1.0, 1.0});
 
   // Part 2: Read back the texture using Dawn
   {
     // Register the shared image as a Dawn texture in the wire.
     gpu::webgpu::ReservedTexture reservation =
-        webgpu()->ReserveTexture(device.Get());
+        webgpu()->ReserveTexture(device_.Get());
 
     webgpu()->AssociateMailbox(
         reservation.deviceId, reservation.deviceGeneration, reservation.id,
@@ -443,7 +682,7 @@
     wgpu::BufferDescriptor buffer_desc;
     buffer_desc.size = 4;
     buffer_desc.usage = wgpu::BufferUsage::MapRead | wgpu::BufferUsage::CopyDst;
-    wgpu::Buffer readback_buffer = device.CreateBuffer(&buffer_desc);
+    wgpu::Buffer readback_buffer = device_.CreateBuffer(&buffer_desc);
 
     wgpu::ImageCopyTexture copy_src = {};
     copy_src.texture = texture;
@@ -457,11 +696,11 @@
 
     wgpu::Extent3D copy_size = {1, 1, 1};
 
-    wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+    wgpu::CommandEncoder encoder = device_.CreateCommandEncoder();
     encoder.CopyTextureToBuffer(&copy_src, &copy_dst, &copy_size);
     wgpu::CommandBuffer commands = encoder.Finish();
 
-    wgpu::Queue queue = device.GetQueue();
+    wgpu::Queue queue = device_.GetQueue();
     queue.Submit(1, &commands);
 
     webgpu()->DissociateMailbox(reservation.id, reservation.generation);
@@ -473,7 +712,7 @@
                 Call(WGPUBufferMapAsyncStatus_Success, nullptr))
         .Times(1);
 
-    WaitForCompletion(device);
+    WaitForCompletion(device_);
 
     const void* data = readback_buffer.GetConstMappedRange();
     switch (GetParam().format) {
@@ -510,14 +749,12 @@
   SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
   webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
 
-  wgpu::Device device = GetNewDevice();
-
   // Set the texture contents to non-zero so we can test a lazy clear occurs.
-  InitializeTextureColor(device, mailbox, {1.0, 0, 0, 1.0});
+  InitializeTextureColor(device_, mailbox, {1.0, 0, 0, 1.0});
 
   // Register the shared image as a Dawn texture in the wire.
   gpu::webgpu::ReservedTexture reservation =
-      webgpu()->ReserveTexture(device.Get());
+      webgpu()->ReserveTexture(device_.Get());
 
   // Associate the mailbox. Using WEBGPU_MAILBOX_DISCARD will set the contents
   // to uncleared.
@@ -530,9 +767,9 @@
 
   // Copy the texture in a mappable buffer.
   wgpu::BufferDescriptor buffer_desc;
-  buffer_desc.size = 4;
+  buffer_desc.size = BytesPerTexel(GetParam().format);
   buffer_desc.usage = wgpu::BufferUsage::MapRead | wgpu::BufferUsage::CopyDst;
-  wgpu::Buffer readback_buffer = device.CreateBuffer(&buffer_desc);
+  wgpu::Buffer readback_buffer = device_.CreateBuffer(&buffer_desc);
 
   wgpu::ImageCopyTexture copy_src = {};
   copy_src.texture = texture;
@@ -546,27 +783,30 @@
 
   wgpu::Extent3D copy_size = {1, 1, 1};
 
-  wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+  wgpu::CommandEncoder encoder = device_.CreateCommandEncoder();
   encoder.CopyTextureToBuffer(&copy_src, &copy_dst, &copy_size);
   wgpu::CommandBuffer commands = encoder.Finish();
 
-  wgpu::Queue queue = device.GetQueue();
+  wgpu::Queue queue = device_.GetQueue();
   queue.Submit(1, &commands);
 
   webgpu()->DissociateMailbox(reservation.id, reservation.generation);
 
   // Map the buffer and assert the pixel is the correct value.
-  readback_buffer.MapAsync(wgpu::MapMode::Read, 0, 4, ToMockBufferMapCallback,
-                           nullptr);
+  readback_buffer.MapAsync(wgpu::MapMode::Read, 0, buffer_desc.size,
+                           ToMockBufferMapCallback, nullptr);
   EXPECT_CALL(*mock_buffer_map_callback,
               Call(WGPUBufferMapAsyncStatus_Success, nullptr))
       .Times(1);
 
-  WaitForCompletion(device);
+  WaitForCompletion(device_);
 
-  const void* data = readback_buffer.GetConstMappedRange(0, 4);
+  const uint8_t* data = static_cast<const uint8_t*>(
+      readback_buffer.GetConstMappedRange(0, buffer_desc.size));
   // Contents should be black because the texture was lazily cleared.
-  EXPECT_EQ(0x00000000u, *static_cast<const uint32_t*>(data));
+  for (uint32_t i = 0; i < buffer_desc.size; ++i) {
+    EXPECT_EQ(data[i], uint8_t(0));
+  }
 }
 
 // Test that an uninitialized shared image is lazily cleared by Dawn when it is
@@ -590,14 +830,12 @@
   SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
   webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
 
-  wgpu::Device device = GetNewDevice();
-
   // Set the texture contents to non-zero so we can test a lazy clear occurs.
-  InitializeTextureColor(device, mailbox, {1.0, 0, 0, 1.0});
+  InitializeTextureColor(device_, mailbox, {1.0, 0, 0, 1.0});
 
   // Register the shared image as a Dawn texture in the wire.
   gpu::webgpu::ReservedTexture reservation =
-      webgpu()->ReserveTexture(device.Get());
+      webgpu()->ReserveTexture(device_.Get());
 
   // Associate the mailbox. Using WEBGPU_MAILBOX_DISCARD will set the contents
   // to uncleared.
@@ -620,15 +858,15 @@
   render_pass_desc.colorAttachmentCount = 1;
   render_pass_desc.colorAttachments = &color_desc;
 
-  wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+  wgpu::CommandEncoder encoder = device_.CreateCommandEncoder();
   wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&render_pass_desc);
   pass.End();
 
   // Copy the texture in a mappable buffer.
   wgpu::BufferDescriptor buffer_desc;
-  buffer_desc.size = 4;
+  buffer_desc.size = BytesPerTexel(GetParam().format);
   buffer_desc.usage = wgpu::BufferUsage::MapRead | wgpu::BufferUsage::CopyDst;
-  wgpu::Buffer readback_buffer = device.CreateBuffer(&buffer_desc);
+  wgpu::Buffer readback_buffer = device_.CreateBuffer(&buffer_desc);
 
   wgpu::ImageCopyTexture copy_src = {};
   copy_src.texture = texture;
@@ -645,23 +883,26 @@
   encoder.CopyTextureToBuffer(&copy_src, &copy_dst, &copy_size);
   wgpu::CommandBuffer commands = encoder.Finish();
 
-  wgpu::Queue queue = device.GetQueue();
+  wgpu::Queue queue = device_.GetQueue();
   queue.Submit(1, &commands);
 
   webgpu()->DissociateMailbox(reservation.id, reservation.generation);
 
   // Map the buffer and assert the pixel is the correct value.
-  readback_buffer.MapAsync(wgpu::MapMode::Read, 0, 4, ToMockBufferMapCallback,
-                           nullptr);
+  readback_buffer.MapAsync(wgpu::MapMode::Read, 0, buffer_desc.size,
+                           ToMockBufferMapCallback, nullptr);
   EXPECT_CALL(*mock_buffer_map_callback,
               Call(WGPUBufferMapAsyncStatus_Success, nullptr))
       .Times(1);
 
-  WaitForCompletion(device);
+  WaitForCompletion(device_);
 
-  const void* data = readback_buffer.GetConstMappedRange(0, 4);
+  const uint8_t* data = static_cast<const uint8_t*>(
+      readback_buffer.GetConstMappedRange(0, buffer_desc.size));
   // Contents should be black because the texture was lazily cleared.
-  EXPECT_EQ(0x00000000u, *static_cast<const uint32_t*>(data));
+  for (uint32_t i = 0; i < buffer_desc.size; ++i) {
+    EXPECT_EQ(data[i], uint8_t(0));
+  }
 }
 
 // Tests that using a shared image aftr it is dissociated produces an error.
@@ -684,14 +925,12 @@
   SyncToken mailbox_produced_token = sii->GenVerifiedSyncToken();
   webgpu()->WaitSyncTokenCHROMIUM(mailbox_produced_token.GetConstData());
 
-  // Create the device, and expect a validation error.
-  wgpu::Device device = GetNewDevice();
-
-  device.SetUncapturedErrorCallback(ToMockUncapturedErrorCallback, 0);
+  // Set callback to expect a validation error.
+  device_.SetUncapturedErrorCallback(ToMockUncapturedErrorCallback, nullptr);
 
   // Associate and immediately dissociate the image.
   gpu::webgpu::ReservedTexture reservation =
-      webgpu()->ReserveTexture(device.Get());
+      webgpu()->ReserveTexture(device_.Get());
   wgpu::Texture texture = wgpu::Texture::Acquire(reservation.texture);
 
   webgpu()->AssociateMailbox(
@@ -721,24 +960,24 @@
   src_image.texture = texture;
 
   wgpu::ImageCopyTexture dst_image = {};
-  dst_image.texture = device.CreateTexture(&dst_desc);
+  dst_image.texture = device_.CreateTexture(&dst_desc);
 
   wgpu::Extent3D extent = {1, 1};
 
   // Try using the texture in a copy command; it should produce a validation
   // error.
-  wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+  wgpu::CommandEncoder encoder = device_.CreateCommandEncoder();
   encoder.CopyTextureToTexture(&src_image, &dst_image, &extent);
   wgpu::CommandBuffer commandBuffer = encoder.Finish();
 
   // Wait so it's clear the validation error after this when we call Submit.
-  WaitForCompletion(device);
-  device.GetQueue().Submit(1, &commandBuffer);
+  WaitForCompletion(device_);
+  device_.GetQueue().Submit(1, &commandBuffer);
 
   EXPECT_CALL(*mock_device_error_callback,
               Call(WGPUErrorType_Validation, testing::_, testing::_))
       .Times(1);
-  WaitForCompletion(device);
+  WaitForCompletion(device_);
 }
 
 // This is a regression test for an issue when using multiple shared images
@@ -779,19 +1018,16 @@
       kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
       kNullSurfaceHandle);
 
-  // Get a WebGPU device to associate the shared images to.
-  wgpu::Device device = GetNewDevice();
-
   // Associate both mailboxes
   gpu::webgpu::ReservedTexture reservation_a =
-      webgpu()->ReserveTexture(device.Get());
+      webgpu()->ReserveTexture(device_.Get());
   webgpu()->AssociateMailbox(
       reservation_a.deviceId, reservation_a.deviceGeneration, reservation_a.id,
       reservation_a.generation, WGPUTextureUsage_RenderAttachment,
       webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox_a));
 
   gpu::webgpu::ReservedTexture reservation_b =
-      webgpu()->ReserveTexture(device.Get());
+      webgpu()->ReserveTexture(device_.Get());
   webgpu()->AssociateMailbox(
       reservation_b.deviceId, reservation_b.deviceGeneration, reservation_b.id,
       reservation_b.generation, WGPUTextureUsage_RenderAttachment,
@@ -872,8 +1108,6 @@
     return;
   }
 
-  wgpu::Device device = GetNewDevice();
-
   // Check that reserving a texture with a full descriptor give the same data
   // back through reflection.
   wgpu::TextureDescriptor desc1 = {};
@@ -884,7 +1118,7 @@
   desc1.sampleCount = 1;
   desc1.mipLevelCount = 1;
   gpu::webgpu::ReservedTexture reservation1 = webgpu()->ReserveTexture(
-      device.Get(), reinterpret_cast<const WGPUTextureDescriptor*>(&desc1));
+      device_.Get(), reinterpret_cast<const WGPUTextureDescriptor*>(&desc1));
   wgpu::Texture texture1 = wgpu::Texture::Acquire(reservation1.texture);
 
   ASSERT_EQ(desc1.size.width, texture1.GetWidth());
@@ -907,7 +1141,7 @@
   desc2.sampleCount = 4;
   desc2.mipLevelCount = 3;
   gpu::webgpu::ReservedTexture reservation2 = webgpu()->ReserveTexture(
-      device.Get(), reinterpret_cast<const WGPUTextureDescriptor*>(&desc2));
+      device_.Get(), reinterpret_cast<const WGPUTextureDescriptor*>(&desc2));
   wgpu::Texture texture2 = wgpu::Texture::Acquire(reservation2.texture);
 
   ASSERT_EQ(desc2.size.width, texture2.GetWidth());
@@ -918,6 +1152,28 @@
   ASSERT_EQ(desc2.dimension, texture2.GetDimension());
   ASSERT_EQ(desc2.sampleCount, texture2.GetSampleCount());
   ASSERT_EQ(desc2.mipLevelCount, texture2.GetMipLevelCount());
+
+  // Associate mailboxes so that releasing the reserved wgpu::Textures does not
+  // fail. Note that these texture parameters do not match. It doesn't matter
+  // since the textures are not used in this test except for frontend
+  // reflection.
+  SharedImageInterface* sii = GetSharedImageInterface();
+  Mailbox mailbox1 = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+  Mailbox mailbox2 = sii->CreateSharedImage(
+      GetParam().format, {1, 1}, gfx::ColorSpace::CreateSRGB(),
+      kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
+      kNullSurfaceHandle);
+  webgpu()->AssociateMailbox(
+      reservation1.deviceId, reservation1.deviceGeneration, reservation1.id,
+      reservation1.generation, static_cast<WGPUTextureUsage>(desc1.usage),
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox1));
+  webgpu()->AssociateMailbox(
+      reservation2.deviceId, reservation2.deviceGeneration, reservation2.id,
+      reservation2.generation, static_cast<WGPUTextureUsage>(desc2.usage),
+      webgpu::WEBGPU_MAILBOX_NONE, reinterpret_cast<const GLbyte*>(&mailbox2));
 }
 
 // Test that if some other GL context is current when
@@ -941,8 +1197,6 @@
       kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, SHARED_IMAGE_USAGE_WEBGPU,
       kNullSurfaceHandle);
 
-  wgpu::Device device = GetNewDevice();
-
   scoped_refptr<gl::GLContext> gl_context1;
   scoped_refptr<gl::GLContext> gl_context2;
   scoped_refptr<gl::GLSurface> gl_surface1;
@@ -974,7 +1228,7 @@
             ->RunsTasksInCurrentSequence();
       };
 
-  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device.Get());
+  webgpu::ReservedTexture reservation = webgpu()->ReserveTexture(device_.Get());
 
   // Create a GL context and make it current.
   CreateAndMakeGLContextCurrent(&gl_context1, &gl_surface1);
@@ -996,15 +1250,15 @@
   render_pass_desc.colorAttachmentCount = 1;
   render_pass_desc.colorAttachments = &color_desc;
 
-  wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+  wgpu::CommandEncoder encoder = device_.CreateCommandEncoder();
   wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&render_pass_desc);
   pass.End();
   wgpu::CommandBuffer commands = encoder.Finish();
 
-  wgpu::Queue queue = device.GetQueue();
+  wgpu::Queue queue = device_.GetQueue();
   queue.Submit(1, &commands);
 
-  WaitForCompletion(device);
+  WaitForCompletion(device_);
 
   // Create another context and make it current.
   // This is a distinct context to catch errors where Associate/Dissociate
@@ -1014,7 +1268,7 @@
 
   webgpu()->DissociateMailbox(reservation.id, reservation.generation);
 
-  WaitForCompletion(device);
+  WaitForCompletion(device_);
 
   // Delete the GL contexts on the GPU thread.
   GetGpuServiceHolder()->ScheduleGpuTask(
diff --git a/gpu/command_buffer/tests/webgpu_test.cc b/gpu/command_buffer/tests/webgpu_test.cc
index dab9a1f..7602d11 100644
--- a/gpu/command_buffer/tests/webgpu_test.cc
+++ b/gpu/command_buffer/tests/webgpu_test.cc
@@ -7,9 +7,11 @@
 #include <dawn/dawn_proc.h>
 #include <dawn/webgpu.h>
 
-#include "base/bind.h"
 #include "base/command_line.h"
+#include "base/test/bind.h"
 #include "base/test/test_simple_task_runner.h"
+#include "base/test/test_timeouts.h"
+#include "base/threading/platform_thread.h"
 #include "build/build_config.h"
 #include "components/viz/test/test_gpu_service_holder.h"
 #include "gpu/command_buffer/client/webgpu_cmd_helper.h"
@@ -198,6 +200,21 @@
   }
 }
 
+void WebGPUTest::PollUntilIdle() {
+  webgpu()->FlushCommands();
+  base::WaitableEvent wait;
+  gpu_service_holder_->ScheduleGpuTask(
+      base::BindLambdaForTesting([&wait, decoder = GetDecoder()]() {
+        while (decoder->HasPollingWork()) {
+          base::PlatformThread::Sleep(TestTimeouts::tiny_timeout());
+          decoder->PerformPollingWork();
+        }
+        wait.Signal();
+      }));
+  wait.Wait();
+  context_->GetTaskRunner()->RunPendingTasks();
+}
+
 wgpu::Device WebGPUTest::GetNewDevice() {
   wgpu::Device device;
   bool done = false;
@@ -217,10 +234,25 @@
                          callback->AsUserdata());
   webgpu()->FlushCommands();
   while (!done) {
+    base::PlatformThread::Sleep(TestTimeouts::tiny_timeout());
     RunPendingTasks();
   }
 
   EXPECT_NE(device, nullptr);
+  device.SetDeviceLostCallback(
+      [](WGPUDeviceLostReason reason, const char* message, void*) {
+        if (reason == WGPUDeviceLostReason_Destroyed) {
+          return;
+        }
+        GTEST_FAIL() << "Unexpected device lost (" << reason
+                     << "): " << message;
+      },
+      nullptr);
+  device.SetUncapturedErrorCallback(
+      [](WGPUErrorType type, const char* message, void*) {
+        GTEST_FAIL() << "Unexpected error (" << type << "): " << message;
+      },
+      nullptr);
   return device;
 }
 
diff --git a/gpu/command_buffer/tests/webgpu_test.h b/gpu/command_buffer/tests/webgpu_test.h
index 0e86294..37e19b2 100644
--- a/gpu/command_buffer/tests/webgpu_test.h
+++ b/gpu/command_buffer/tests/webgpu_test.h
@@ -65,6 +65,7 @@
 
   void RunPendingTasks();
   void WaitForCompletion(wgpu::Device device);
+  void PollUntilIdle();
 
   wgpu::Device GetNewDevice();
 
diff --git a/gpu/ipc/client/image_decode_accelerator_proxy.cc b/gpu/ipc/client/image_decode_accelerator_proxy.cc
index e4ab8d4..0f7df570 100644
--- a/gpu/ipc/client/image_decode_accelerator_proxy.cc
+++ b/gpu/ipc/client/image_decode_accelerator_proxy.cc
@@ -4,13 +4,14 @@
 
 #include "gpu/ipc/client/image_decode_accelerator_proxy.h"
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 #include <vector>
 
 #include "base/check_op.h"
+#include "base/containers/contains.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "cc/paint/paint_image.h"
 #include "gpu/command_buffer/common/constants.h"
 #include "gpu/config/gpu_info.h"
@@ -83,9 +84,7 @@
       return false;
   }
 
-  return std::find(supported_profile.subsamplings.cbegin(),
-                   supported_profile.subsamplings.cend(),
-                   subsampling) != supported_profile.subsamplings.cend();
+  return base::Contains(supported_profile.subsamplings, subsampling);
 }
 
 }  // namespace
@@ -134,11 +133,9 @@
   // of the image.
   const std::vector<ImageDecodeAcceleratorSupportedProfile>& profiles =
       host_->gpu_info().image_decode_accelerator_supported_profiles;
-  auto profile_it = std::find_if(
-      profiles.cbegin(), profiles.cend(),
-      [image_type](const ImageDecodeAcceleratorSupportedProfile& profile) {
-        return profile.image_type == image_type;
-      });
+  auto profile_it =
+      base::ranges::find(profiles, image_type,
+                         &ImageDecodeAcceleratorSupportedProfile::image_type);
   if (profile_it == profiles.cend())
     return false;
 
diff --git a/gpu/ipc/service/image_decode_accelerator_stub_unittest.cc b/gpu/ipc/service/image_decode_accelerator_stub_unittest.cc
index 2d0c19f..66588b1 100644
--- a/gpu/ipc/service/image_decode_accelerator_stub_unittest.cc
+++ b/gpu/ipc/service/image_decode_accelerator_stub_unittest.cc
@@ -20,6 +20,7 @@
 #include "base/notreached.h"
 #include "base/numerics/checked_math.h"
 #include "base/numerics/safe_conversions.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
@@ -112,12 +113,9 @@
     const base::trace_event::MemoryAllocatorDump* dump,
     const std::string& entry_name) {
   DCHECK(dump);
-  auto entry_it = std::find_if(
-      dump->entries().cbegin(), dump->entries().cend(),
-      [&entry_name](
-          const base::trace_event::MemoryAllocatorDump::Entry& entry) {
-        return entry.name == entry_name;
-      });
+  auto entry_it =
+      base::ranges::find(dump->entries(), entry_name,
+                         &base::trace_event::MemoryAllocatorDump::Entry::name);
   if (entry_it != dump->entries().cend()) {
     EXPECT_EQ(std::string(base::trace_event::MemoryAllocatorDump::kUnitsBytes),
               entry_it->units);
diff --git a/gpu/vulkan/vulkan_device_queue.cc b/gpu/vulkan/vulkan_device_queue.cc
index 59979e9..98a141a6 100644
--- a/gpu/vulkan/vulkan_device_queue.cc
+++ b/gpu/vulkan/vulkan_device_queue.cc
@@ -10,6 +10,7 @@
 #include <vector>
 
 #include "base/logging.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "build/build_config.h"
 #include "gpu/config/gpu_info.h"  // nogncheck
@@ -162,13 +163,11 @@
 
   std::vector<const char*> enabled_extensions;
   for (const char* extension : required_extensions) {
-    const auto it =
-        std::find_if(physical_device_info.extensions.begin(),
-                     physical_device_info.extensions.end(),
-                     [extension](const VkExtensionProperties& p) {
-                       return std::strcmp(extension, p.extensionName) == 0;
-                     });
-    if (it == physical_device_info.extensions.end()) {
+    if (base::ranges::none_of(physical_device_info.extensions,
+                              [extension](const VkExtensionProperties& p) {
+                                return std::strcmp(extension,
+                                                   p.extensionName) == 0;
+                              })) {
       // On Fuchsia, some device extensions are provided by layers.
       // TODO(penghuang): checking extensions against layer device extensions
       // too.
@@ -182,13 +181,11 @@
   }
 
   for (const char* extension : optional_extensions) {
-    const auto it =
-        std::find_if(physical_device_info.extensions.begin(),
-                     physical_device_info.extensions.end(),
-                     [extension](const VkExtensionProperties& p) {
-                       return std::strcmp(extension, p.extensionName) == 0;
-                     });
-    if (it == physical_device_info.extensions.end()) {
+    if (base::ranges::none_of(physical_device_info.extensions,
+                              [extension](const VkExtensionProperties& p) {
+                                return std::strcmp(extension,
+                                                   p.extensionName) == 0;
+                              })) {
       DLOG(ERROR) << "Optional Vulkan extension " << extension
                   << " is not supported.";
     } else {
diff --git "a/infra/config/generated/builders/ci/ios-device \050reclient shadow\051/properties.json" "b/infra/config/generated/builders/ci/ios-device \050reclient shadow\051/properties.json"
deleted file mode 100644
index ded95e2..0000000
--- "a/infra/config/generated/builders/ci/ios-device \050reclient shadow\051/properties.json"
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "ios-device (reclient shadow)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "builder_group": "chromium.mac",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb",
-                  "mac_toolchain"
-                ],
-                "build_config": "Release",
-                "config": "chromium",
-                "target_bits": 64,
-                "target_platform": "ios"
-              },
-              "legacy_gclient_config": {
-                "config": "ios"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "ios-device (reclient shadow)",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/reclient": {
-    "instance": "rbe-chromium-trusted",
-    "jobs": 40,
-    "metrics_project": "chromium-reclient-metrics"
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.mac",
-  "recipe": "chromium",
-  "xcode_build_version": "14a309"
-}
\ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/ios-simulator-cronet \050reclient shadow\051/properties.json" "b/infra/config/generated/builders/ci/ios-simulator-cronet \050reclient shadow\051/properties.json"
deleted file mode 100644
index 254066a..0000000
--- "a/infra/config/generated/builders/ci/ios-simulator-cronet \050reclient shadow\051/properties.json"
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "ios-simulator-cronet (reclient shadow)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-fyi-archive",
-              "builder_group": "chromium.fyi",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb",
-                  "mac_toolchain"
-                ],
-                "build_config": "Debug",
-                "config": "chromium",
-                "target_bits": 64,
-                "target_platform": "ios"
-              },
-              "legacy_gclient_config": {
-                "config": "ios"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "ios-simulator-cronet (reclient shadow)",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/reclient": {
-    "instance": "rbe-chromium-trusted",
-    "jobs": 40,
-    "metrics_project": "chromium-reclient-metrics"
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.fyi",
-  "recipe": "chromium",
-  "xcode_build_version": "14a309"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json b/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json
index ede2819..f59df3c 100644
--- a/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json
+++ b/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json
@@ -1,8 +1,8 @@
 {
-  "$build/goma": {
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
+  "$build/reclient": {
+    "instance": "rbe-chromium-trusted",
+    "jobs": 250,
+    "metrics_project": "chromium-reclient-metrics"
   },
   "$recipe_engine/resultdb/test_presentation": {
     "column_keys": [],
diff --git a/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json b/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json
index ede2819..f59df3c 100644
--- a/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json
+++ b/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json
@@ -1,8 +1,8 @@
 {
-  "$build/goma": {
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
+  "$build/reclient": {
+    "instance": "rbe-chromium-trusted",
+    "jobs": 250,
+    "metrics_project": "chromium-reclient-metrics"
   },
   "$recipe_engine/resultdb/test_presentation": {
     "column_keys": [],
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index 05c3338b..66d6ce5 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -33578,92 +33578,6 @@
       }
     }
     builders {
-      name: "ios-device (reclient shadow)"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Mac-12"
-      dimensions: "pool:luci.chromium.ci"
-      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/ios-device (reclient shadow)/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.mac",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      execution_timeout_secs: 10800
-      caches {
-        name: "xcode_ios_14a309"
-        path: "xcode_ios_14a309.app"
-      }
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.buildbucket.omit_python2"
-        value: 100
-      }
-      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: "ios-fieldtrial-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builder:ios-fieldtrial-rel"
@@ -34246,89 +34160,6 @@
       }
     }
     builders {
-      name: "ios-simulator-cronet (reclient shadow)"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Mac-12"
-      dimensions: "pool:luci.chromium.ci"
-      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/ios-simulator-cronet (reclient shadow)/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.fyi",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      priority: 35
-      execution_timeout_secs: 36000
-      caches {
-        name: "xcode_ios_14a309"
-        path: "xcode_ios_14a309.app"
-      }
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      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: "ios-simulator-full-configs"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builder:ios-simulator-full-configs"
@@ -55019,6 +54850,10 @@
         value: 100
       }
       experiments {
+        key: "weetbix.enable_weetbix_exonerations"
+        value: 50
+      }
+      experiments {
         key: "weetbix.retry_weak_exonerations"
         value: 100
       }
@@ -55310,6 +55145,10 @@
         value: 100
       }
       experiments {
+        key: "remove_src_checkout_experiment"
+        value: 20
+      }
+      experiments {
         key: "weetbix.retry_weak_exonerations"
         value: 100
       }
@@ -56644,7 +56483,7 @@
       }
       experiments {
         key: "remove_src_checkout_experiment"
-        value: 20
+        value: 100
       }
       experiments {
         key: "weetbix.retry_weak_exonerations"
@@ -83659,6 +83498,10 @@
         value: 100
       }
       experiments {
+        key: "weetbix.enable_weetbix_exonerations"
+        value: 100
+      }
+      experiments {
         key: "weetbix.retry_weak_exonerations"
         value: 100
       }
@@ -84960,7 +84803,7 @@
       }
       experiments {
         key: "weetbix.enable_weetbix_exonerations"
-        value: 50
+        value: 100
       }
       experiments {
         key: "weetbix.retry_weak_exonerations"
diff --git a/infra/config/generated/luci/luci-milo.cfg b/infra/config/generated/luci/luci-milo.cfg
index 2aac844..8ba4817 100644
--- a/infra/config/generated/luci/luci-milo.cfg
+++ b/infra/config/generated/luci/luci-milo.cfg
@@ -256,11 +256,6 @@
     short_name: "non"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/ios-device (reclient shadow)"
-    category: "chromium.mac|ios|default"
-    short_name: "rec"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/Mac11 Tests"
     category: "chromium.mac|mac"
     short_name: "11"
@@ -1410,11 +1405,6 @@
     short_name: "intel"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/ios-simulator-cronet (reclient shadow)"
-    category: "chromium.fyi|cronet"
-    short_name: "rec"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/VR Linux"
     category: "chromium.fyi|linux"
   }
@@ -7928,11 +7918,6 @@
     short_name: "m1"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/ios-simulator-cronet (reclient shadow)"
-    category: "cronet"
-    short_name: "rec"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/ios-fieldtrial-rel"
     category: "mac"
   }
@@ -11197,11 +11182,6 @@
     short_name: "non"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/ios-device (reclient shadow)"
-    category: "ios|default"
-    short_name: "rec"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/Mac11 Tests"
     category: "mac"
     short_name: "11"
diff --git a/infra/config/generated/luci/luci-scheduler.cfg b/infra/config/generated/luci/luci-scheduler.cfg
index 586cfd27..e46bbb44 100644
--- a/infra/config/generated/luci/luci-scheduler.cfg
+++ b/infra/config/generated/luci/luci-scheduler.cfg
@@ -5565,16 +5565,6 @@
   }
 }
 job {
-  id: "ios-device (reclient shadow)"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "ios-device (reclient shadow)"
-  }
-}
-job {
   id: "ios-device-goma-rbe-canary-clobber"
   realm: "goma"
   acl_sets: "goma"
@@ -5707,16 +5697,6 @@
   }
 }
 job {
-  id: "ios-simulator-cronet (reclient shadow)"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "ios-simulator-cronet (reclient shadow)"
-  }
-}
-job {
   id: "ios-simulator-full-configs"
   realm: "ci"
   acl_sets: "ci"
@@ -7738,14 +7718,12 @@
   triggers: "ios-asan"
   triggers: "ios-catalyst"
   triggers: "ios-device"
-  triggers: "ios-device (reclient shadow)"
   triggers: "ios-fieldtrial-rel"
   triggers: "ios-m1-simulator-cronet"
   triggers: "ios-reclient"
   triggers: "ios-simulator"
   triggers: "ios-simulator-code-coverage"
   triggers: "ios-simulator-cronet"
-  triggers: "ios-simulator-cronet (reclient shadow)"
   triggers: "ios-simulator-full-configs"
   triggers: "ios-simulator-multi-window"
   triggers: "ios-simulator-noncq"
diff --git a/infra/config/subprojects/chromium/ci/chromium.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fyi.star
index 330146f..11361eb3 100644
--- a/infra/config/subprojects/chromium/ci/chromium.fyi.star
+++ b/infra/config/subprojects/chromium/ci/chromium.fyi.star
@@ -2084,23 +2084,6 @@
 )
 
 fyi_ios_builder(
-    name = "ios-simulator-cronet (reclient shadow)",
-    branch_selector = branches.STANDARD_MILESTONE,
-    builder_spec = builder_config.copy_from(
-        "ci/ios-simulator-cronet",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "cronet",
-        short_name = "rec",
-    ),
-    cq_mirrors_console_view = "mirrors",
-    builderless = True,
-    goma_backend = None,
-    reclient_instance = reclient.instance.DEFAULT_TRUSTED,
-    reclient_jobs = 40,
-)
-
-fyi_ios_builder(
     name = "ios-m1-simulator-cronet",
     builder_spec = builder_config.builder_spec(
         gclient_config = builder_config.gclient_config(
@@ -2151,6 +2134,9 @@
         ),
     ],
     os = os.MAC_12,
+    goma_backend = None,
+    reclient_instance = reclient.instance.DEFAULT_TRUSTED,
+    reclient_jobs = reclient.jobs.DEFAULT,
 )
 
 fyi_ios_builder(
@@ -2176,6 +2162,9 @@
         ),
     ],
     os = os.MAC_12,
+    goma_backend = None,
+    reclient_instance = reclient.instance.DEFAULT_TRUSTED,
+    reclient_jobs = reclient.jobs.DEFAULT,
 )
 
 fyi_ios_builder(
diff --git a/infra/config/subprojects/chromium/ci/chromium.mac.star b/infra/config/subprojects/chromium/ci/chromium.mac.star
index 9c5322de1..235362a 100644
--- a/infra/config/subprojects/chromium/ci/chromium.mac.star
+++ b/infra/config/subprojects/chromium/ci/chromium.mac.star
@@ -9,7 +9,6 @@
 load("//lib/builders.star", "cpu", "goma", "os", "reclient", "sheriff_rotations", "xcode")
 load("//lib/ci.star", "ci")
 load("//lib/consoles.star", "consoles")
-load("//lib/structs.star", "structs")
 
 ci.defaults.set(
     builder_group = "chromium.mac",
@@ -480,29 +479,6 @@
 )
 
 ios_builder(
-    name = "ios-device (reclient shadow)",
-    builder_spec = builder_config.copy_from(
-        "ci/ios-device",
-        lambda spec: structs.evolve(
-            spec,
-            build_gs_bucket = None,
-        ),
-    ),
-    console_view_entry = [
-        consoles.console_view_entry(
-            category = "ios|default",
-            short_name = "rec",
-        ),
-    ],
-    builderless = True,
-    tree_closing = False,
-    sheriff_rotations = args.ignore_default(None),
-    goma_backend = None,
-    reclient_instance = reclient.instance.DEFAULT_TRUSTED,
-    reclient_jobs = 40,
-)
-
-ios_builder(
     name = "ios-simulator",
     branch_selector = branches.STANDARD_MILESTONE,
     builder_spec = builder_config.builder_spec(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
index 12aaea6e..323680d1 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -267,6 +267,7 @@
         "remove_src_checkout_experiment": 100,
         "enable_weetbix_queries": 100,
         "weetbix.retry_weak_exonerations": 100,
+        "weetbix.enable_weetbix_exonerations": 50,
     },
 )
 
@@ -298,6 +299,7 @@
     experiments = {
         "enable_weetbix_queries": 100,
         "weetbix.retry_weak_exonerations": 100,
+        "remove_src_checkout_experiment": 20,
     },
 )
 
@@ -440,7 +442,7 @@
     experiments = {
         "enable_weetbix_queries": 100,
         "weetbix.retry_weak_exonerations": 100,
-        "remove_src_checkout_experiment": 20,
+        "remove_src_checkout_experiment": 100,
     },
 )
 
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.win.star b/infra/config/subprojects/chromium/try/tryserver.chromium.win.star
index 6f02a4a..1ecc5df0 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.win.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.win.star
@@ -67,6 +67,7 @@
     experiments = {
         "enable_weetbix_queries": 100,
         "weetbix.retry_weak_exonerations": 100,
+        "weetbix.enable_weetbix_exonerations": 100,
     },
 )
 
@@ -191,7 +192,7 @@
         "remove_src_checkout_experiment": 100,
         "enable_weetbix_queries": 100,
         "weetbix.retry_weak_exonerations": 100,
-        "weetbix.enable_weetbix_exonerations": 50,
+        "weetbix.enable_weetbix_exonerations": 100,
     },
     use_orchestrator_pool = True,
 )
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn
index b81b21a..fd53126 100644
--- a/ios/chrome/app/BUILD.gn
+++ b/ios/chrome/app/BUILD.gn
@@ -49,6 +49,7 @@
     "//base",
     "//ios/chrome/browser",
     "//ios/chrome/browser/ui:feature_flags",
+    "//ios/chrome/browser/url:constants",
     "//net",
     "//url",
   ]
@@ -63,6 +64,7 @@
     "app_metrics_app_state_agent_unittest.mm",
     "deferred_initialization_runner_unittest.mm",
     "main_application_delegate_unittest.mm",
+    "post_restore_app_agent_unittest.mm",
     "safe_mode_app_state_agent_unittest.mm",
     "tab_opener_unittest.mm",
   ]
@@ -70,11 +72,13 @@
     ":app",
     ":app_internal",
     ":app_metrics_app_state_agent",
+    ":post_restore_app_agent",
     ":safe_mode_app_state_agent",
     "//base",
     "//base/test:test_support",
     "//components/metrics",
     "//components/prefs",
+    "//components/prefs:test_support",
     "//components/sync_preferences:sync_preferences",
     "//components/sync_preferences:test_support",
     "//ios/chrome/app:enterprise_app_agent",
@@ -87,10 +91,13 @@
     "//ios/chrome/browser/browser_state:test_support",
     "//ios/chrome/browser/metrics:metrics",
     "//ios/chrome/browser/prefs:browser_prefs",
+    "//ios/chrome/browser/promos_manager:promos_manager",
+    "//ios/chrome/browser/signin:signin_util",
     "//ios/chrome/browser/tabs",
     "//ios/chrome/browser/ui/main:scene",
     "//ios/chrome/browser/ui/main:scene_state_header",
     "//ios/chrome/browser/ui/main/test",
+    "//ios/chrome/browser/ui/post_restore_signin:features",
     "//ios/chrome/browser/ui/safe_mode",
     "//ios/chrome/common/app_group",
     "//ios/chrome/test:test_support",
diff --git a/ios/chrome/app/app_startup_parameters.mm b/ios/chrome/app/app_startup_parameters.mm
index 4c6a368..b84e182 100644
--- a/ios/chrome/app/app_startup_parameters.mm
+++ b/ios/chrome/app/app_startup_parameters.mm
@@ -5,8 +5,8 @@
 #import "ios/chrome/app/app_startup_parameters.h"
 
 #import "base/feature_list.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "net/base/mac/url_conversions.h"
 #import "net/base/url_util.h"
 #import "url/gurl.h"
diff --git a/ios/chrome/app/application_delegate/BUILD.gn b/ios/chrome/app/application_delegate/BUILD.gn
index 5c2d0b03..36ab996 100644
--- a/ios/chrome/app/application_delegate/BUILD.gn
+++ b/ios/chrome/app/application_delegate/BUILD.gn
@@ -73,6 +73,7 @@
     "//ios/chrome/browser/ui/safe_mode",
     "//ios/chrome/browser/ui/settings",
     "//ios/chrome/browser/ui/settings:settings_root",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:test_support",
@@ -235,6 +236,8 @@
     "//ios/chrome/browser/ui/main:scene",
     "//ios/chrome/browser/ui/ntp:util",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:agents",
diff --git a/ios/chrome/app/application_delegate/app_state_unittest.mm b/ios/chrome/app/application_delegate/app_state_unittest.mm
index 349869b..bde935e 100644
--- a/ios/chrome/app/application_delegate/app_state_unittest.mm
+++ b/ios/chrome/app/application_delegate/app_state_unittest.mm
@@ -26,7 +26,6 @@
 #import "ios/chrome/app/main_application_delegate.h"
 #import "ios/chrome/app/safe_mode_app_state_agent.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/crash_report/crash_helper.h"
 #import "ios/chrome/browser/device_sharing/device_sharing_manager.h"
 #import "ios/chrome/browser/flags/system_flags.h"
@@ -46,6 +45,7 @@
 #import "ios/chrome/browser/ui/main/test/stub_browser_interface_provider.h"
 #import "ios/chrome/browser/ui/safe_mode/safe_mode_coordinator.h"
 #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/test/block_cleanup_test.h"
 #import "ios/chrome/test/providers/app_distribution/test_app_distribution.h"
 #import "ios/chrome/test/scoped_key_window.h"
diff --git a/ios/chrome/app/application_delegate/metrics_mediator.mm b/ios/chrome/app/application_delegate/metrics_mediator.mm
index 519e8d4..d155988 100644
--- a/ios/chrome/app/application_delegate/metrics_mediator.mm
+++ b/ios/chrome/app/application_delegate/metrics_mediator.mm
@@ -25,7 +25,6 @@
 #import "ios/chrome/app/application_delegate/startup_information.h"
 #import "ios/chrome/app/startup/ios_enable_sandbox_dump_buildflags.h"
 #import "ios/chrome/browser/application_context/application_context.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/crash_report/crash_helper.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/main/browser.h"
@@ -37,6 +36,7 @@
 #import "ios/chrome/browser/ui/main/connection_information.h"
 #import "ios/chrome/browser/ui/main/scene_state.h"
 #import "ios/chrome/browser/ui/ntp/ntp_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/widget_kit/features.h"
 #import "ios/chrome/common/app_group/app_group_metrics.h"
diff --git a/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm b/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm
index f778511..00de861c 100644
--- a/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm
+++ b/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm
@@ -14,11 +14,11 @@
 #import "ios/chrome/app/application_delegate/startup_information.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/test_browser.h"
 #import "ios/chrome/browser/ui/main/browser_interface_provider.h"
 #import "ios/chrome/browser/ui/main/scene_state.h"
 #import "ios/chrome/browser/ui/main/test/fake_scene_state.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
diff --git a/ios/chrome/app/application_delegate/url_opener.mm b/ios/chrome/app/application_delegate/url_opener.mm
index 4de5cea..a97c9a90 100644
--- a/ios/chrome/app/application_delegate/url_opener.mm
+++ b/ios/chrome/app/application_delegate/url_opener.mm
@@ -13,9 +13,9 @@
 #import "ios/chrome/app/application_delegate/tab_opening.h"
 #import "ios/chrome/app/application_delegate/url_opener_params.h"
 #import "ios/chrome/app/startup/chrome_app_startup_parameters.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/policy/policy_util.h"
 #import "ios/chrome/browser/ui/main/connection_information.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
 #import "url/gurl.h"
 
diff --git a/ios/chrome/app/application_delegate/user_activity_handler.mm b/ios/chrome/app/application_delegate/user_activity_handler.mm
index 94b99b6b..5daf3b9 100644
--- a/ios/chrome/app/application_delegate/user_activity_handler.mm
+++ b/ios/chrome/app/application_delegate/user_activity_handler.mm
@@ -23,7 +23,6 @@
 #import "ios/chrome/app/spotlight/spotlight_util.h"
 #import "ios/chrome/app/startup/chrome_app_startup_parameters.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/main/browser_list.h"
 #import "ios/chrome/browser/main/browser_list_factory.h"
@@ -32,6 +31,7 @@
 #import "ios/chrome/browser/search_engines/template_url_service_factory.h"
 #import "ios/chrome/browser/ui/main/browser_interface_provider.h"
 #import "ios/chrome/browser/ui/main/connection_information.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/image_search_param_generator.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
diff --git a/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm b/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm
index 804b5b0e..e830b84 100644
--- a/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm
+++ b/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm
@@ -26,7 +26,6 @@
 #import "ios/chrome/app/spotlight/actions_spotlight_manager.h"
 #import "ios/chrome/app/spotlight/spotlight_util.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/flags/chrome_switches.h"
 #import "ios/chrome/browser/main/browser_list.h"
 #import "ios/chrome/browser/main/browser_list_factory.h"
@@ -35,6 +34,7 @@
 #import "ios/chrome/browser/ui/main/test/fake_connection_information.h"
 #import "ios/chrome/browser/ui/main/test/stub_browser_interface_provider.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
diff --git a/ios/chrome/app/post_restore_app_agent.h b/ios/chrome/app/post_restore_app_agent.h
index 38e04b5..de896d8 100644
--- a/ios/chrome/app/post_restore_app_agent.h
+++ b/ios/chrome/app/post_restore_app_agent.h
@@ -6,9 +6,20 @@
 #define IOS_CHROME_APP_POST_RESTORE_APP_AGENT_H_
 
 #import "ios/chrome/app/application_delegate/app_state_agent.h"
+#import "ios/chrome/app/application_delegate/app_state_observer.h"
+#import "ios/chrome/browser/promos_manager/promos_manager.h"
 
 // App agent that displays the Post Restore UI when needed.
 @interface PostRestoreAppAgent : NSObject <AppStateAgent>
 @end
 
+// Extension to provide access for unit tests to easily inject state.
+@interface PostRestoreAppAgent (Testing) <AppStateObserver>
+
+// Stores the PromosManager, which is used to register the post restore
+// sign-in promo, when appropriate.
+@property(nonatomic) PromosManager* promosManager;
+
+@end
+
 #endif  // IOS_CHROME_APP_POST_RESTORE_APP_AGENT_H_
diff --git a/ios/chrome/app/post_restore_app_agent.mm b/ios/chrome/app/post_restore_app_agent.mm
index 1f09b1d..16180ee 100644
--- a/ios/chrome/app/post_restore_app_agent.mm
+++ b/ios/chrome/app/post_restore_app_agent.mm
@@ -5,7 +5,6 @@
 #import "ios/chrome/app/post_restore_app_agent.h"
 
 #import "ios/chrome/app/application_delegate/app_state.h"
-#import "ios/chrome/app/application_delegate/app_state_observer.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/promos_manager/promos_manager.h"
 #import "ios/chrome/browser/signin/signin_util.h"
@@ -20,9 +19,6 @@
 // The app state for the app.
 @property(nonatomic, weak, readonly) AppState* appState;
 
-// Stores the pre-restore account info, if available.
-@property(nonatomic) absl::optional<AccountInfo> accountInfo;
-
 // Stores whether the IOSNewPostRestoreExperience is enabled, in either
 // variation.
 @property(nonatomic) BOOL featureEnabled;
@@ -30,8 +26,8 @@
 // Stores whether we have pre-restore account info.
 @property(nonatomic) BOOL hasAccountInfo;
 
-// Stores whether this is the first session after a device restore.
-@property(nonatomic) BOOL isFirstSessionAfterDeviceRestore;
+// The PromosManager is used to register promos.
+@property(nonatomic) PromosManager* promosManager;
 
 // Stores the PostRestoreSignInType which can be kAlert, kFullscreen, or
 // kDisabled.
@@ -42,10 +38,6 @@
 // feature variation is enabled.
 @property(readonly) promos_manager::Promo promoForEnabledFeature;
 
-// Stores the PromosManager, which is used to register the post restore
-// sign-in promo, when appropriate.
-@property(nonatomic) PromosManager* promosManager;
-
 // Returns whether or not a post restore sign-in promo should be registered
 // with the PromosManager.
 @property(readonly) BOOL shouldRegisterPromo;
@@ -86,10 +78,9 @@
   _featureEnabled =
       _postRestoreSignInType !=
       post_restore_signin::features::PostRestoreSignInType::kDisabled;
-  _isFirstSessionAfterDeviceRestore =
-      IsFirstSessionAfterDeviceRestore() == signin::Tribool::kTrue;
   _hasAccountInfo = GetPreRestoreIdentity().has_value();
-  _promosManager = GetApplicationContext()->GetPromosManager();
+  if (_promosManager == nil)
+    _promosManager = GetApplicationContext()->GetPromosManager();
 }
 
 // Returns the correct promo type depending on which feature variation is
@@ -109,8 +100,7 @@
 // Returns whether or not a post restore sign-in promo should be registered
 // with the PromosManager.
 - (BOOL)shouldRegisterPromo {
-  return _isFirstSessionAfterDeviceRestore && _featureEnabled &&
-         _hasAccountInfo && _promosManager;
+  return _featureEnabled && _hasAccountInfo && _promosManager;
 }
 
 // Register the promo with the PromosManager, if the conditions are met.
diff --git a/ios/chrome/app/post_restore_app_agent_unittest.mm b/ios/chrome/app/post_restore_app_agent_unittest.mm
new file mode 100644
index 0000000..81ecc56
--- /dev/null
+++ b/ios/chrome/app/post_restore_app_agent_unittest.mm
@@ -0,0 +1,135 @@
+// 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/app/post_restore_app_agent.h"
+
+#import "base/test/scoped_feature_list.h"
+#import "components/prefs/pref_registry_simple.h"
+#import "components/prefs/testing_pref_service.h"
+#import "ios/chrome/app/application_delegate/app_state.h"
+#import "ios/chrome/app/application_delegate/app_state_observer.h"
+#import "ios/chrome/browser/application_context/application_context.h"
+#import "ios/chrome/browser/prefs/pref_names.h"
+#import "ios/chrome/browser/promos_manager/promos_manager.h"
+#import "ios/chrome/browser/signin/signin_util.h"
+#import "ios/chrome/browser/ui/post_restore_signin/features.h"
+#import "testing/platform_test.h"
+#import "third_party/abseil-cpp/absl/types/optional.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
+#import "third_party/ocmock/gtest_support.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+// Tests the PostRestoreAppAgent.
+class PostRestoreAppAgentTest : public PlatformTest {
+ public:
+  explicit PostRestoreAppAgentTest() { CreateAppAgent(); }
+
+  PostRestoreAppAgent* appAgent_;
+  std::unique_ptr<TestingPrefServiceSimple> local_state_;
+  std::unique_ptr<PromosManager> promos_manager_;
+  base::test::ScopedFeatureList scoped_feature_list_;
+  id mockAppState_;
+
+  void CreateAppAgent() {
+    CreatePromosManager();
+    appAgent_ = [[PostRestoreAppAgent alloc] init];
+    appAgent_.promosManager = promos_manager_.get();
+    mockAppState_ = OCMClassMock([AppState class]);
+    [appAgent_ setAppState:mockAppState_];
+  }
+
+  void CreatePromosManager() {
+    CreatePrefs();
+    promos_manager_ = std::make_unique<PromosManager>(local_state_.get());
+    promos_manager_->Init();
+  }
+
+  // Create pref registry for tests.
+  void CreatePrefs() {
+    local_state_ = std::make_unique<TestingPrefServiceSimple>();
+
+    local_state_->registry()->RegisterListPref(
+        prefs::kIosPromosManagerImpressions);
+    local_state_->registry()->RegisterListPref(
+        prefs::kIosPromosManagerActivePromos);
+    local_state_->registry()->RegisterListPref(
+        prefs::kIosPromosManagerSingleDisplayActivePromos);
+  }
+
+  int CountSingleDisplayActivePromos() {
+    return local_state_
+        ->GetList(prefs::kIosPromosManagerSingleDisplayActivePromos)
+        .size();
+  }
+
+  void MockAppStateChange(InitStage initStage) {
+    OCMStub([mockAppState_ initStage]).andReturn(initStage);
+    [appAgent_ appState:mockAppState_
+        didTransitionFromInitStage:InitStageStart];
+  }
+
+  void EnableFeatureVariationFullscreen() {
+    scoped_feature_list_.InitAndEnableFeature(
+        post_restore_signin::features::kIOSNewPostRestoreExperience);
+  }
+
+  void EnableFeatureVariationAlert() {
+    scoped_feature_list_.InitWithFeaturesAndParameters(
+        {base::test::ScopedFeatureList::FeatureAndParams(
+            post_restore_signin::features::kIOSNewPostRestoreExperience,
+            {{post_restore_signin::features::kIOSNewPostRestoreExperienceParam,
+              "true"}})},
+        {});
+  }
+};
+
+TEST_F(PostRestoreAppAgentTest, maybeRegisterPromo) {
+  // Ensure that no promos are registered initially.
+  EXPECT_EQ(CountSingleDisplayActivePromos(), 0);
+
+  // Scenarios which should not register a promo.
+  ClearPreRestoreIdentity();
+  MockAppStateChange(InitStageFinal);
+  EXPECT_EQ(CountSingleDisplayActivePromos(), 0);
+
+  AccountInfo accountInfo;
+  accountInfo.email = std::string("person@example.org");
+  StorePreRestoreIdentity(accountInfo);
+  MockAppStateChange(InitStageFinal);
+  EXPECT_EQ(CountSingleDisplayActivePromos(), 0);
+
+  ClearPreRestoreIdentity();
+  EnableFeatureVariationFullscreen();
+  MockAppStateChange(InitStageFinal);
+  EXPECT_EQ(CountSingleDisplayActivePromos(), 0);
+}
+
+TEST_F(PostRestoreAppAgentTest, registerPromoFullscreen) {
+  EnableFeatureVariationFullscreen();
+  AccountInfo accountInfo;
+  accountInfo.email = std::string("person@example.org");
+  StorePreRestoreIdentity(accountInfo);
+  MockAppStateChange(InitStageFinal);
+  const base::Value::List& promos =
+      local_state_->GetList(prefs::kIosPromosManagerSingleDisplayActivePromos);
+  std::string expectedName = promos_manager::NameForPromo(
+      promos_manager::Promo::PostRestoreSignInFullscreen);
+  EXPECT_EQ(promos[0], expectedName);
+}
+
+TEST_F(PostRestoreAppAgentTest, registerPromoAlert) {
+  EnableFeatureVariationAlert();
+  AccountInfo accountInfo;
+  accountInfo.email = std::string("person@example.org");
+  StorePreRestoreIdentity(accountInfo);
+  MockAppStateChange(InitStageFinal);
+  const base::Value::List& promos =
+      local_state_->GetList(prefs::kIosPromosManagerSingleDisplayActivePromos);
+  std::string expectedName = promos_manager::NameForPromo(
+      promos_manager::Promo::PostRestoreSignInAlert);
+  EXPECT_EQ(promos[0], expectedName);
+}
diff --git a/ios/chrome/app/startup/BUILD.gn b/ios/chrome/app/startup/BUILD.gn
index 03b69b5..25aa31757 100644
--- a/ios/chrome/app/startup/BUILD.gn
+++ b/ios/chrome/app/startup/BUILD.gn
@@ -81,6 +81,7 @@
     "//ios/chrome/browser/first_run",
     "//ios/chrome/browser/net:net",
     "//ios/chrome/browser/ui/default_promo:utils",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:web_internal",
     "//ios/chrome/common",
     "//ios/chrome/common/app_group",
@@ -103,6 +104,7 @@
     "//base/test:test_support",
     "//ios/chrome/app",
     "//ios/chrome/browser",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/app_group",
     "//ios/components/webui:url_constants",
     "//testing/gtest",
diff --git a/ios/chrome/app/startup/chrome_app_startup_parameters.mm b/ios/chrome/app/startup/chrome_app_startup_parameters.mm
index cceb0e1..1cb2556 100644
--- a/ios/chrome/app/startup/chrome_app_startup_parameters.mm
+++ b/ios/chrome/app/startup/chrome_app_startup_parameters.mm
@@ -11,8 +11,8 @@
 #import "base/metrics/user_metrics_action.h"
 #import "base/strings/stringprintf.h"
 #import "base/strings/sys_string_conversions.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_utils.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/app_group/app_group_constants.h"
 #import "ios/chrome/common/x_callback_url.h"
 #import "ios/components/webui/web_ui_url_constants.h"
diff --git a/ios/chrome/app/startup/chrome_app_startup_parameters_unittest.mm b/ios/chrome/app/startup/chrome_app_startup_parameters_unittest.mm
index 1ffdb5e..b0394a97 100644
--- a/ios/chrome/app/startup/chrome_app_startup_parameters_unittest.mm
+++ b/ios/chrome/app/startup/chrome_app_startup_parameters_unittest.mm
@@ -9,7 +9,7 @@
 #import "base/strings/stringprintf.h"
 #import "base/test/metrics/histogram_tester.h"
 #import "ios/chrome/app/app_startup_parameters.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/app_group/app_group_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "testing/gtest_mac.h"
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
index 69ae80d..34411ba 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Το Chrome δεν έχει πρόσβαση σε φωτογραφίες ή βίντεό σας. Ενεργ. πρόσβασης στις Ρυθμίσεις iOS &gt; Απόρρητο &gt; Φωτογραφίες.</translation>
 <translation id="4099578267706723511">Συμβάλετε στη βελτίωση του Chrome, στέλνοντας στην Google στατιστικά στοιχεία χρήσης και αναφορές σφαλμάτων.</translation>
 <translation id="417201473131094001">Δεν υποστηρίζεται στο Chrome Canary</translation>
+<translation id="4192781968753717021">Αυτός ο κωδικός πρόσβασης έχει εντοπιστεί σε μια παραβίαση δεδομένων. Ο Διαχειριστής κωδικών πρόσβασης Google συνιστά να αλλάξετε άμεσα τον κωδικό πρόσβασής σας.</translation>
 <translation id="4233521129555661685">Ο χρήστης <ph name="USER_EMAIL1" /> χρησιμοποίησε το Chrome και οι σελιδοδείκτες, οι κωδικοί πρόσβασης και άλλες ρυθμίσεις του αποθηκεύτηκαν σε αυτήν τη συσκευή.</translation>
 <translation id="424864128008805179">Αποσύνδεση από το Chrome;</translation>
 <translation id="4249068189593983585">Συμβουλή για το Chrome. Για περισσότερες επιλογές καρτελών, αγγίξτε παρατεταμένα το κουμπί Εμφάνιση καρτελών στη γραμμή εργαλείων, η οποία βρίσκεται στο κάτω ή το επάνω τμήμα της οθόνης.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Επιτρέψτε στο Chrome να κλειδώνει τις καρτέλες ανώνυμης περιήγησης.</translation>
 <translation id="6412673304250309937">Ελέγχει αν τα URL περιλαμβάνονται στην λίστα μη ασφαλών ιστοτόπων που είναι αποθηκευμένη στο Chrome. Εάν ένας ιστότοπος προσπαθήσει να κλέψει τον κωδικό σας ή όταν κάνετε λήψη ενός επιβλαβούς αρχείου, το Chrome μπορεί επίσης να στείλει URL, καθώς και τμήματα του περιεχομένου της σελίδας, στην Ασφαλή περιήγηση.</translation>
 <translation id="6427126399757991875">Ο οργανισμός σας ρυθμίζει το Chrome…</translation>
+<translation id="651403856614361404">Αυτός ο κωδικός πρόσβασης έχει εντοπιστεί σε μια παραβίαση δεδομένων. Το Chrome συνιστά να αλλάξετε άμεσα τον κωδικό πρόσβασής σας.</translation>
 <translation id="6600954340915313787">Αντιγράφηκε στο Chrome</translation>
 <translation id="6634107063912726160">Όταν αποσυνδέεστε, το Chrome δεν θα συγχρονίζει τυχόν νέα δεδομένα στον Λογαριασμό σας Google. Τα δεδομένα που έχουν συγχρονιστεί στο παρελθόν, παραμένουν στον λογαριασμό σας.</translation>
 <translation id="6648150602980899529">Συνδέεστε με έναν λογαριασμό του οποίου η διαχείριση γίνεται από <ph name="DOMAIN" /> και παραχωρείτε τον έλεγχο της διαχείρισης των δεδομένων σας Chrome. Τα δεδομένα σας θα συσχετιστούν με το λογαριασμό. Η αποσύνδεση από το Chrome θα διαγράψει τα δεδομένα από τη συσκευή, αλλά θα διατηρηθούν στο Λογαριασμό σας Google.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Μείνετε ασφαλείς με το Google Chrome</translation>
 <translation id="8772179140489533211">Εμφάνιση προτροπών σύνδεσης στο Chrome.</translation>
 <translation id="8788269841521769222">Δεν θα χρειάζεται να θυμάστε αυτόν τον κωδικό πρόσβασης. Θα αποθηκευτεί στον Διαχειριστή κωδικών πρόσβασης Google για τον λογαριασμό <ph name="EMAIL" />.</translation>
+<translation id="8897749957032330183">Οι κωδικοί πρόσβασης αποθηκεύονται στον Διαχειριστή κωδικών πρόσβασης Google σε αυτήν τη συσκευή.</translation>
 <translation id="8969290730818637510">Όταν είναι ενεργοποιημένες:
 <ph name="BEGIN_INDENT" />  • Συμβάλλετε στη βελτίωση του Chrome για άτομα που το χρησιμοποιούν όπως εσείς.<ph name="END_INDENT" />
 
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
index b27a2bdc..45a1bf9 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chromeને તમારા ફોટા અથવા વીડિયોનો ઍક્સેસ નથી. iOS સેટિંગ &gt; પ્રાઇવસી &gt; ફોટામાં ઍક્સેસને ચાલુ કરો.</translation>
 <translation id="4099578267706723511">ઉપયોગનાં આંકડા અને ક્રૅશ રિપોર્ટ Googleને મોકલીને Chromeને વધુ સારું બનાવવામાં મદદ કરો.</translation>
 <translation id="417201473131094001">Chrome Canary પર સપોર્ટ કરવામાં આવતી નથી</translation>
+<translation id="4192781968753717021">આ પાસવર્ડ કોઈ ડેટા ઉલ્લંઘનમાં જોવા મળ્યો હતો. Google Password Manager હમણાં જ તમારો પાસવર્ડ બદલવાનો સુઝાવ આપે છે.</translation>
 <translation id="4233521129555661685"><ph name="USER_EMAIL1" /> Chromeનો ઉપયોગ કરી રહ્યાં હતા અને તેઓ આ ડિવાઇસ પર બુકમાર્ક, પાસવર્ડ અને અન્ય સેટિંગ છોડી ગયા છે.</translation>
 <translation id="424864128008805179">Chromeમાંથી સાઇન આઉટ કરીએ?</translation>
 <translation id="4249068189593983585">Chrome ટિપ. ટૅબના વધુ વિકલ્પો માટે, તમારી સ્ક્રીનના તળિયે અથવા ટોચે આવેલા ટૂલબારમાંના 'ટૅબ બતાવો' બટનને ટચ કરીને થોડીવાર દબાવી રાખો.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Chromeને તમારી છૂપી ટૅબ લૉક કરવા દો.</translation>
 <translation id="6412673304250309937">URLsને Chromeમાં સ્ટોર કરેલી અસુરક્ષિત સાઇટની સૂચિ સાથે ચેક કરે છે. જો કોઈ સાઇટ તમારો પાસવર્ડ ચોરી કરવાનો પ્રયાસ કરે અથવા તમે કોઈ નુકસાનકારક ફાઇલ ડાઉનલોડ કરો, ત્યારે Chrome પેજ કન્ટેન્ટના બિટની સાથોસાથ URLs પણ Safe Browsingને મોકલી શકે છે.</translation>
 <translation id="6427126399757991875">તમારી સંસ્થા Chromeનું સેટઅપ કરી રહી છે…</translation>
+<translation id="651403856614361404">આ પાસવર્ડ કોઈ ડેટા ઉલ્લંઘનમાં જોવા મળ્યો હતો. Chrome હમણાં જ તમારો પાસવર્ડ બદલવાનો સુઝાવ આપે છે.</translation>
 <translation id="6600954340915313787">Chrome માં કોપી કરાયું</translation>
 <translation id="6634107063912726160">તમે સાઇન આઉટ કરશો, ત્યારે Chrome કોઈપણ નવા ડેટાને તમારા Google એકાઉન્ટ સાથે સિંક કરશે નહીં. અગાઉ સિંક કરેલો ડેટા એકાઉન્ટમાં રહે છે.</translation>
 <translation id="6648150602980899529">તમે <ph name="DOMAIN" /> દ્વારા મેનેજ એકાઉન્ટમાં સાઇન ઇન કરી રહ્યાં છો અને તમારા Chrome ડેટા પર એનું એડમિન નિયંત્રણ આપી રહ્યાં છો. તમારો ડેટા આ એકાઉન્ટ સાથે કાયમીરૂપે જોડાયેલું રહેશે. Chromeમાંથી સાઇન આઉટ કરવાનું આ ડિવાઇસ પરથી તમારો ડેટા ડિલીટ કરશે, પરંતુ એ તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Google Chromeનો ઉપયોગ કરીને સલામત રહો</translation>
 <translation id="8772179140489533211">Chromeમાં સાઇન ઇન કરવા માટે સંકેતો બતાવો.</translation>
 <translation id="8788269841521769222">તમારે આ પાસવર્ડ યાદ રાખવાની જરૂર રહેશે નહીં. તે <ph name="EMAIL" /> માટેના Google પાસવર્ડ મેનેજરમાં સાચવવામાં આવશે</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_google_chrome_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mk.xtb
index 09e4604..629c592 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mk.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mk.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chrome нема пристап до фотографиите или видеата. Овозможете пристап во Поставки на iOS &gt; Приватност &gt; Фотографии.</translation>
 <translation id="4099578267706723511">Помогнете да го подобриме Google Chrome со автоматско испраќање статистика за користење и извештаи за падови до Google.</translation>
 <translation id="417201473131094001">Не е поддржана на Chrome Canary</translation>
+<translation id="4192781968753717021">Оваа лозинка е откриена при упад во податоци. Google Password Manager ви препорачува да ја промените лозинката веднаш.</translation>
 <translation id="4233521129555661685"><ph name="USER_EMAIL1" /> користеше Chrome и остави обележувачи, лозинки и други поставки на уредов.</translation>
 <translation id="424864128008805179">Ќе се одјавите од Chrome?</translation>
 <translation id="4249068189593983585">Совет за Chrome: за повеќе опции за картичките, допрете го и задржете го копчето „Прикажи ги картичките“ во алатникот, што се наоѓа најгоре или најдолу на екранот.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Дозволете Chrome да ги заклучи вашите картички „Инкогнито“.</translation>
 <translation id="6412673304250309937">Ги проверува URL-адресите во список со небезбедни сајтови меморирани во Chrome. Ако некој сајт се обиде да ви ја украде лозинката или кога ќе преземете штетна датотека, Chrome може да испрати и URL-адреси, вклучувајќи и делови од содржините на страницата, во „Безбедно прелистување“.</translation>
 <translation id="6427126399757991875">Вашата организација го поставува Chrome…</translation>
+<translation id="651403856614361404">Оваа лозинка е откриена при упад во податоци. Chrome ви препорачува да ја промените лозинката веднаш.</translation>
 <translation id="6600954340915313787">Копирано на Chrome</translation>
 <translation id="6634107063912726160">Кога ќе се одјавите, Chrome нема да ги синхронизира новите податоци со вашата сметка на Google. Претходно синхронизираните податоци ќе останат во сметката.</translation>
 <translation id="6648150602980899529">Се најавувате со сметка управувана од <ph name="DOMAIN" /> и му давате контрола на нејзиниот администратор над податоците на Chrome. Вашите податоци ќе бидат трајно врзани за оваа сметка. Одјавувањето од Chrome ќе ги избрише податоците од уредов, но тие ќе останат зачувани на сметката на Google.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Останете безбедни со Google Chrome</translation>
 <translation id="8772179140489533211">Прикажува prompt за најава на Chrome.</translation>
 <translation id="8788269841521769222">Не треба да ја помните лозинкава. Ќе се зачува во „Управникот со лозинки на Google“ за <ph name="EMAIL" /></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_google_chrome_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mn.xtb
index 3d8d1a79..3b324440 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mn.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mn.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chrome-д таны зураг, видеонд нэвтрэх зөвшөөрөл байхгүй байна. Та iOS Тохиргоо &gt; Нууцлал &gt; Зураг хэсэгт хандалтыг идэвхжүүлээрэй.</translation>
 <translation id="4099578267706723511">Хэрэглээний статистик мэдээ болон алдаа ослын тайланг автоматаар Google рүү илгээх замаар Google Chrome-ийг улам сайжруулахад тусална уу.</translation>
 <translation id="417201473131094001">Chrome Канар дээр дэмжихгүй</translation>
+<translation id="4192781968753717021">Энэ нууц үгийг өгөгдлийн зөрчлөөс оллоо. Google Password Manager нууц үгээ одоо өөрчлөхийг зөвлөж байна.</translation>
 <translation id="4233521129555661685"><ph name="USER_EMAIL1" /> энэ төхөөрөмж дээр Chrome-г ашиглаж байсан бөгөөд хавчуурга, нууц үг болон бусад тохиргоог үлдээсэн.</translation>
 <translation id="424864128008805179">Chrome-с гарах уу?</translation>
 <translation id="4249068189593983585">Chrome-н зөвлөгөө. Табын бусад сонголтыг харахын тулд дэлгэцийнхээ доод эсвэл дээд хэсэгт байрлах самбараас Табыг харуулах товчлуурыг удаан дарна уу.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Chrome-д таны Нууцлалтай табуудыг түгжихийг зөвшөөрнө үү.</translation>
 <translation id="6412673304250309937">URL-г Chrome-д хадгалсан аюултай сайтын жагсаалттай харьцуулж шалгадаг. Хэрэв сайт таны нууц үгийг хулгайлах гэж оролдвол эсвэл таныг аюултай файл татах үед Chrome нь хуудасны бага зэрэг контентын хамт URL-г Аюулгүй хайлт руу мөн илгээж болзошгүй.</translation>
 <translation id="6427126399757991875">Танай байгууллага Chrome-г тохируулж байна...</translation>
+<translation id="651403856614361404">Энэ нууц үгийг өгөгдлийн зөрчлөөс оллоо. Chrome нууц үгээ одоо өөрчлөхийг зөвлөж байна.</translation>
 <translation id="6600954340915313787">Chrome руу хуулсан</translation>
 <translation id="6634107063912726160">Та гарсан үед Chrome таны Google Бүртгэлд ямар ч шинэ өгөгдөл синк хийхгүй. Өмнө нь синк хийсэн өгөгдөл бүртгэлд үлдэнэ.</translation>
 <translation id="6648150602980899529">Та <ph name="DOMAIN" />-с удирдсан бүртгэлээр нэвтэрч байгаа бөгөөд үүнд таны Chrome-н өгөгдлийг удирдах админы удирдлагыг өгч байна. Таны өгөгдөл энэ бүртгэлтэй бүрмөсөн холбоотой болно. Chrome-с гарснаар таны бүх өгөгдлийг энэ төхөөрөмжөөс устгах бөгөөд тэдгээр өгөгдлүүд таны Google бүртгэлд хадгалагдсан хэвээр байна.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Google Chrome-н тусламжтай аюулгүй байгаарай</translation>
 <translation id="8772179140489533211">Chrome-д нэвтрэх сануулгыг харуулна.</translation>
 <translation id="8788269841521769222">Та энэ нууц үгийг санах шаардлагагүй. Үүнийг <ph name="EMAIL" />-д зориулж Google-н Нууц үгний менежерт хадгална</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_google_chrome_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb
index 33f9318a..15bbe4b 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chrome heeft geen toegang tot je foto's of video's. Geef in iOS toegang via Instellingen &gt; Privacy &gt; Foto's.</translation>
 <translation id="4099578267706723511">Verzend automatisch gebruiksstatistieken en crashmeldingen naar Google.</translation>
 <translation id="417201473131094001">Niet ondersteund in Chrome Canary</translation>
+<translation id="4192781968753717021">Dit wachtwoord is gevonden bij een gegevenslek. Google Wachtwoordmanager raadt je aan je wachtwoord nu te wijzigen.</translation>
 <translation id="4233521129555661685"><ph name="USER_EMAIL1" /> heeft Chrome gebruikt en heeft bookmarks, wachtwoorden en andere instellingen op dit apparaat laten staan.</translation>
 <translation id="424864128008805179">Uitloggen bij Chrome?</translation>
 <translation id="4249068189593983585">Chrome-tip. Voor meer tabbladopties tik je in de werkbalk onder- of bovenaan het scherm op de knop Tabbladen bekijken en houd je deze vast.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Laat Chrome je incognitotabbladen vergrendelen.</translation>
 <translation id="6412673304250309937">Controleert URL's aan de hand van een lijst met onveilige sites die is opgeslagen in Chrome. Als een site je wachtwoord probeert te stelen of als je een schadelijk bestand downloadt, kan Chrome ook URL's, inclusief delen van de paginacontent, naar Safe Browsing sturen.</translation>
 <translation id="6427126399757991875">Je organisatie stelt Chrome in…</translation>
+<translation id="651403856614361404">Dit wachtwoord is gevonden bij een gegevenslek. Chrome raadt je aan om je wachtwoord nu te wijzigen.</translation>
 <translation id="6600954340915313787">Gekopieerd naar Chrome</translation>
 <translation id="6634107063912726160">Als je uitlogt, synchroniseert Chrome geen nieuwe gegevens met je Google-account. Eerder gesynchroniseerde gegevens blijven in het account staan.</translation>
 <translation id="6648150602980899529">Je logt in met een account dat wordt beheerd door <ph name="DOMAIN" />, waarmee je de eigenaar beheer geeft over je Chrome-gegevens. Je gegevens worden permanent gekoppeld aan dit account. Als je uitlogt van Chrome, worden je gegevens van dit apparaat verwijderd. Ze blijven echter opgeslagen in je Google-account.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Blijf veilig met Google Chrome</translation>
 <translation id="8772179140489533211">Toont prompts om in te loggen bij Chrome.</translation>
 <translation id="8788269841521769222">Je hoeft dit wachtwoord niet te onthouden. Het wordt opgeslagen in Google Wachtwoordmanager voor <ph name="EMAIL" />.</translation>
+<translation id="8897749957032330183">Wachtwoorden worden opgeslagen in Google Wachtwoordmanager op dit apparaat.</translation>
 <translation id="8969290730818637510">Als dit aanstaat:
 <ph name="BEGIN_INDENT" />  • Help Chrome te verbeteren voor mensen die de browser gebruiken op dezelfde manier als jij.<ph name="END_INDENT" />
 
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb
index 060c4aa..f36e45c 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">O Google Chrome não tem acesso aos seus vídeos ou fotos. Ative o acesso nas Definições do iOS &gt; Privacidade &gt; Fotos.</translation>
 <translation id="4099578267706723511">Ajude a melhorar o Chrome ao enviar estatísticas de utilização e relatórios de falhas para a Google.</translation>
 <translation id="417201473131094001">Opção não suportada no Chrome Canary.</translation>
+<translation id="4192781968753717021">Esta palavra-passe foi encontrada numa violação de dados. O Gestor de Palavras-passe da Google recomenda que altere a palavra-passe agora.</translation>
 <translation id="4233521129555661685"><ph name="USER_EMAIL1" /> estava a utilizar o Chrome e deixou marcadores, palavras-passe e outras definições neste dispositivo.</translation>
 <translation id="424864128008805179">Pretende terminar sessão no Chrome?</translation>
 <translation id="4249068189593983585">Sugestão para o Chrome: para obter mais opções de separadores, toque sem soltar no botão Mostrar separadores na barra de ferramentas, que se encontra na parte superior ou inferior do ecrã.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Permita que o Chrome bloqueie os seus separadores de navegação anónima.</translation>
 <translation id="6412673304250309937">Verifica os URLs com listas de sites inseguros armazenados no Chrome. Se um site tentar roubar a sua palavra-passe, ou quando transferir um ficheiro prejudicial, o Chrome também pode enviar URLs, incluindo bits de conteúdo das páginas, para a Navegação segura.</translation>
 <translation id="6427126399757991875">A sua entidade está a configurar o Chrome…</translation>
+<translation id="651403856614361404">Esta palavra-passe foi encontrada numa violação de dados. O Chrome recomenda a alteração da palavra-passe agora.</translation>
 <translation id="6600954340915313787">Copiado para o Chrome</translation>
 <translation id="6634107063912726160">Quando terminar sessão, o Chrome não irá sincronizar quaisquer dados novos com a sua Conta Google. Os dados anteriormente sincronizados mantêm-se na conta.</translation>
 <translation id="6648150602980899529">Está a iniciar sessão com uma conta gerida por <ph name="DOMAIN" /> e a conceder ao respetivo gestor o controlo dos seus dados do Chrome. Os dados ficarão permanentemente associados a esta conta. Terminar sessão no Chrome elimina os seus dados deste dispositivo, embora permaneçam armazenados na Conta Google.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Proteja-se com o Google Chrome</translation>
 <translation id="8772179140489533211">Mostra pedidos para iniciar sessão no Chrome.</translation>
 <translation id="8788269841521769222">Não terá de memorizar esta palavra-passe. Será guardada no Gestor de palavras-passe da Google de <ph name="EMAIL" /></translation>
+<translation id="8897749957032330183">As palavras-passe são guardadas no Gestor de Palavras-passe da Google neste dispositivo.</translation>
 <translation id="8969290730818637510">Quando a opção está ativada:
 <ph name="BEGIN_INDENT" />  • Ajude a melhorar o Chrome para as pessoas que o utilizam de forma semelhante à sua.<ph name="END_INDENT" />
 
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
index 97b03707..86555e18 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sk.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chrome nemá prístup k vašim fotkám ani videám. Prístup povolíte v časti Nastavenia systému iOS &gt; Súkromie &gt; Fotky.</translation>
 <translation id="4099578267706723511">Odosielať štatistiky používania a prehľady chýb Googlu a pomáhať tak zlepšovať Chrome</translation>
 <translation id="417201473131094001">Nepodporované vo verzii Chrome Canary</translation>
+<translation id="4192781968753717021">Toto heslo bolo nájdené v zozname hesiel odhalených pri porušení ochrany údajov. Správca hesiel Google odporúča okamžite dané heslo zmeniť.</translation>
 <translation id="4233521129555661685"><ph name="USER_EMAIL1" /> používal(a) Chrome a zanechal(a) záložky, heslá a ďalšie nastavenia v tomto zariadení.</translation>
 <translation id="424864128008805179">Odhlásiť sa z Chromu?</translation>
 <translation id="4249068189593983585">Tip pre Chrome: ďalšie možnosti karty získate pridržaním tlačidla „Zobraziť karty“ na paneli s nástrojmi, ktorý sa nachádza v dolnej alebo hornej časti obrazovky.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Umožnite Chromu uzamknúť vaše karty inkognito.</translation>
 <translation id="6412673304250309937">Kontroluje webové adresy podľa zoznamu nebezpečných webov uloženého v Chrome. Ak sa vám určitý web pokúsi ukradnúť heslo alebo stiahnete škodlivý súbor, Chrome môže tiež odoslať webové adresy vrátane častí obsahu stránky Bezpečnému prehliadaniu.</translation>
 <translation id="6427126399757991875">Vaša organizácia nastavuje Chrome…</translation>
+<translation id="651403856614361404">Toto heslo bolo nájdené v zozname hesiel odhalených pri porušení ochrany údajov. Chrome odporúča okamžite dané heslo zmeniť.</translation>
 <translation id="6600954340915313787">Skopírovaná do prehliadača Chrome</translation>
 <translation id="6634107063912726160">Keď sa odhlásite, Chrome prestane synchronizovať nové údaje do vášho účtu Google. Údaje, ktoré boli synchronizované predtým, v účte zostanú.</translation>
 <translation id="6648150602980899529">Prihlasujete sa pomocou účtu spravovaného doménou <ph name="DOMAIN" /> a jej správcovi tým dávate kontrolu nad vašimi údajmi prehliadača Chrome. Vaše údaje budú natrvalo prepojené s týmto účtom. Odhlásením z Chromu odstránite údaje z príslušného zariadenia, avšak naďalej zostanú uložené vo vašom účte Google.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Zaistite svoju bezpečnosť s prehliadačom Google Chrome</translation>
 <translation id="8772179140489533211">Zobrazí výzvy na prihlásenie do Chromu.</translation>
 <translation id="8788269841521769222">Toto heslo si nebudete musieť pamätať. Uloží sa do správcu hesiel Google v účte <ph name="EMAIL" />.</translation>
+<translation id="8897749957032330183">Heslá sa ukladajú do Správcu hesiel Google v tomto zariadení.</translation>
 <translation id="8969290730818637510">Keď túto možnosť zapnete:
 <ph name="BEGIN_INDENT" />  • budete pomáhať zlepšovať Chrome pre ľudí, ktorí ho používajú rovnako ako vy.<ph name="END_INDENT" />
 
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb
index 2e2d9ff..7c2008c 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chrome ne može da pristupa slikama ili video snimcima. Omogućite pristup u iOS Settings (Podešavanja iOS-a) &gt; Privacy (Privatnost) &gt; Photos (Slike).</translation>
 <translation id="4099578267706723511">Poboljšajte Chrome slanjem statistike korišćenja i izveštaja o otkazivanju Google-u.</translation>
 <translation id="417201473131094001">Nije podržano u verziji Chrome Canary</translation>
+<translation id="4192781968753717021">Ova lozinka je pronađena pri povredi podataka. Google menadžer lozinki preporučuje da odmah promenite lozinku.</translation>
 <translation id="4233521129555661685">Korisnik <ph name="USER_EMAIL1" /> je koristio Chrome i ostavio obeleživače, lozinke i druga podešavanja na ovom uređaju.</translation>
 <translation id="424864128008805179">Želite li da se odjavite iz Chrome-a?</translation>
 <translation id="4249068189593983585">Savet za Chrome. Ako želite više opcija za kartice, dodirnite i zadržite dugme Prikaži kartice na traci s alatkama, koja se nalazi u dnu ili vrhu ekrana.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Dozvolite Chrome-u da zaključa kartice bez arhiviranja.</translation>
 <translation id="6412673304250309937">Proverava URL-ove sa listom nebezbednih sajtova koji se čuvaju u Chrome-u. Ako neki sajt pokuša da ukrade vašu lozinku ili probate da preuzmete štetnu datoteku, Chrome može da pošalje URL-ove, uključujući delove sadržaja stranice, u Bezbedno pregledanje.</translation>
 <translation id="6427126399757991875">Vaša organizacija podešava Chrome...</translation>
+<translation id="651403856614361404">Ova lozinka je pronađena pri povredi podataka. Chrome preporučuje da odmah promenite lozinku.</translation>
 <translation id="6600954340915313787">Kopirana u Chrome</translation>
 <translation id="6634107063912726160">Kada se odjavite, Chrome ne sinhronizuje nikakve nove podatke sa Google nalogom. Prethodno sinhronizovani podaci ostaju na nalogu.</translation>
 <translation id="6648150602980899529">Prijavljujete se pomoću naloga kojim upravlja <ph name="DOMAIN" /> i dajete njegovom administratoru kontrolu nad svojim Chrome podacima. Podaci će postati trajno povezani sa tim nalogom. Odjavljivanjem iz Chrome-a ćete izbrisati podatke sa ovog uređaja, ali će oni ostati sačuvani na Google nalogu.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Ostanite bezbedni uz Google Chrome</translation>
 <translation id="8772179140489533211">Prikazuje upite za prijavljivanje u Chrome.</translation>
 <translation id="8788269841521769222">Ne morate da zapamtite ovu lozinku. Čuva se u Google menadžeru lozinki za <ph name="EMAIL" /></translation>
+<translation id="8897749957032330183">Lozinke se čuvaju u Google menadžeru lozinki na ovom uređaju.</translation>
 <translation id="8969290730818637510">Kada je ovo uključeno:
 <ph name="BEGIN_INDENT" />  • Pomozite da poboljšamo Chrome za ljude koji ga koriste kao vi.<ph name="END_INDENT" />
 
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb
index a0a7afa3..83e0d3a 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chrome не може да приступа сликама или видео снимцима. Омогућите приступ у iOS Settings (Подешавања iOS-а) &gt; Privacy (Приватност) &gt; Photos (Слике).</translation>
 <translation id="4099578267706723511">Побољшајте Chrome слањем статистике коришћења и извештаја о отказивању Google-у.</translation>
 <translation id="417201473131094001">Није подржано у верзији Chrome Canary</translation>
+<translation id="4192781968753717021">Ова лозинка је пронађена при повреди података. Google менаџер лозинки препоручује да одмах промените лозинку.</translation>
 <translation id="4233521129555661685">Корисник <ph name="USER_EMAIL1" /> је користио Chrome и оставио обележиваче, лозинке и друга подешавања на овом уређају.</translation>
 <translation id="424864128008805179">Желите ли да се одјавите из Chrome-а?</translation>
 <translation id="4249068189593983585">Савет за Chrome. Ако желите више опција за картице, додирните и задржите дугме Прикажи картице на траци с алаткама, која се налази у дну или врху екрана.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">Дозволите Chrome-у да закључа картице без архивирања.</translation>
 <translation id="6412673304250309937">Проверава URL-ове са листом небезбедних сајтова који се чувају у Chrome-у. Ако неки сајт покуша да украде вашу лозинку или пробате да преузмете штетну датотеку, Chrome може да пошаље URL-ове, укључујући делове садржаја странице, у Безбедно прегледање.</translation>
 <translation id="6427126399757991875">Ваша организација подешава Chrome...</translation>
+<translation id="651403856614361404">Ова лозинка је пронађена при повреди података. Chrome препоручује да одмах промените лозинку.</translation>
 <translation id="6600954340915313787">Копирана у Chrome</translation>
 <translation id="6634107063912726160">Када се одјавите, Chrome не синхронизује никакве нове податке са Google налогом. Претходно синхронизовани подаци остају на налогу.</translation>
 <translation id="6648150602980899529">Пријављујете се помоћу налога којим управља <ph name="DOMAIN" /> и дајете његовом администратору контролу над својим Chrome подацима. Подаци ће постати трајно повезани са тим налогом. Одјављивањем из Chrome-а ћете избрисати податке са овог уређаја, али ће они остати сачувани на Google налогу.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Останите безбедни уз Google Chrome</translation>
 <translation id="8772179140489533211">Приказује упите за пријављивање у Chrome.</translation>
 <translation id="8788269841521769222">Не морате да запамтите ову лозинку. Чува се у Google менаџеру лозинки за <ph name="EMAIL" /></translation>
+<translation id="8897749957032330183">Лозинке се чувају у Google менаџеру лозинки на овом уређају.</translation>
 <translation id="8969290730818637510">Када је ово укључено:
 <ph name="BEGIN_INDENT" />  • Помозите да побољшамо Chrome за људе који га користе као ви.<ph name="END_INDENT" />
 
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 379aa2d..4e4d5d5 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
@@ -52,6 +52,7 @@
 <translation id="3988789688219830639">Google Chrome మీ ఫోటోలు లేదా వీడియోలకు యాక్సెస్‌ను కలిగి లేదు. iOS సెట్టింగ్‌లు &gt; గోప్యత &gt; ఫోటోల్లో యాక్సెస్‌ను ప్రారంభించండి.</translation>
 <translation id="4099578267706723511">వినియోగ గణాంకాలు, క్రాష్ రిపోర్ట్‌లను Googleకు పంపి, తద్వారా Chromeను మెరుగుపరచడంలో సహాయపడండి.</translation>
 <translation id="417201473131094001">Chrome కెనరీలో సపోర్ట్ చేయదు</translation>
+<translation id="4192781968753717021">ఈ పాస్‌వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ పాస్‌వర్డ్‌ను ఇప్పుడే మార్చమని Google Password Manager సిఫార్సు చేస్తోంది.</translation>
 <translation id="4233521129555661685"><ph name="USER_EMAIL1" /> Chromeను ఉపయోగిస్తూ, బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లను ఈ పరికరంలో అలాగే ఉంచారు.</translation>
 <translation id="424864128008805179">Chrome నుండి సైన్ అవుట్ చేయాలా?</translation>
 <translation id="4249068189593983585">Chrome చిట్కా. మరిన్ని ట్యాబ్ ఎంపికల కోసం, మీ స్క్రీన్‌లో పైన కానీ దిగువన కానీ ఉండే సాధనాల బార్‌లో ట్యాబ్‌లను చూపు బటన్‌ను తాకి &amp; అలాగే నొక్కి ఉంచండి.</translation>
@@ -83,6 +84,7 @@
 <translation id="6238746320622508509">మీ అజ్ఞాత ట్యాబ్‌లను లాక్ చేయడానికి Chromeను అనుమతించండి.</translation>
 <translation id="6412673304250309937">Chromeలో స్టోర్ చేసిన సురక్షితం కాని సైట్‌ల లిస్ట్‌తో కూడిన URLలను చెక్ చేస్తుంది. ఏదైనా సైట్ మీ పాస్‌వర్డ్‌ను దొంగిలించే ప్రయత్నం చేసినా, లేదంటే ఏదైనా హానికరమైన ఫైల్‌ను మీరు డౌన్‌లోడ్ చేసినా, సదరు URLలను, ఆయా పేజీల కంటెంట్‌లోని కొన్ని భాగాలను కూడా Chrome, 'సురక్షిత బ్రౌజింగ్'కు పంపవచ్చు.</translation>
 <translation id="6427126399757991875">మీ సంస్థ Chromeను సెటప్ చేస్తోంది...</translation>
+<translation id="651403856614361404">ఈ పాస్‌వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ పాస్‌వర్డ్‌ను ఇప్పుడే మార్చాల్సిందిగా Chrome సిఫార్సు చేస్తోంది.</translation>
 <translation id="6600954340915313787">Chromeకి కాపీ చేయబడింది</translation>
 <translation id="6634107063912726160">మీరు సైన్ అవుట్ చేసినప్పుడు, మీ Google ఖాతాకు ఎలాంటి కొత్త డేటాను Chrome సింక్ చేయదు. ఇంతకుముందు సింక్ చేయబడిన డేటా ఖాతాలో ఉండిపోతుంది.</translation>
 <translation id="6648150602980899529">మీరు <ph name="DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ ఇన్ చేస్తున్నారు. దీని నిర్వాహకుడికి మీ Chrome డేటాపై నియంత్రణను అందిస్తున్నారు. మీ డేటా శాశ్వతంగా ఈ ఖాతాకు అనుబంధించబడుతుంది. Chrome నుండి సైన్ అవుట్ చేయడం వ‌ల్ల ఈ పరికరం నుండి మీ డేటా తొలగించబడుతుంది. కానీ ఇది మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
@@ -126,6 +128,7 @@
 <translation id="8736550665979974340">Google Chromeతో సురక్షితంగా ఉండండి</translation>
 <translation id="8772179140489533211">Chromeకు సైన్ ఇన్ చేయడానికి ప్రాంప్ట్‌లను చూపండి.</translation>
 <translation id="8788269841521769222">మీరు ఈ పాస్‌వర్డ్‌ను గుర్తుపెట్టుకోవాల్సిన అవసరం లేదు. ఇది <ph name="EMAIL" /> కోసం Google పాస్‌వర్డ్ మేనేజర్‌కు సేవ్ చేయబడుతుంది</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_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb
index 0a33cc9d..70810bc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_af.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Soek ${searchPhrase} in Chrome</translation>
 <translation id="1242044645101871359">Meld weer aan</translation>
 <translation id="1254117744268754948">Kies vouer</translation>
+<translation id="1258491128795710625">Wat's nuut</translation>
 <translation id="1265739287306757398">Vind uit hoe</translation>
 <translation id="1272079795634619415">Stop</translation>
 <translation id="1275718070701477396">Gekies</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">Plak en soek</translation>
 <translation id="4223967053752765281">Jou organisasie het aanmelding afgeskakel. Jy kan steeds jou boekmerke, geskiedenis, wagwoorde en ander instellings op hierdie toestel sien. As jy veranderinge aanbring, sal hulle nie na jou rekening sinkroniseer nie.</translation>
 <translation id="4233831822770018312">Wysig toestemmings</translation>
+<translation id="4236584471598725073">Spoor tans prys na</translation>
 <translation id="4237377247299956313">Tik op <ph name="BEGIN_BOLD" />Verstekblaaierprogram<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Voer wagfrase in</translation>
 <translation id="4249955472157341256">Rangskik volgens Jongste</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Jammer, kon nie by jou program aanmeld nie.</translation>
 <translation id="5731784586962650619">Wagwoorde in ander programme</translation>
 <translation id="5737974891429562743">Rekening se aanmeldbesonderhede is verouderd. Dateer op om sinkronisering te begin.</translation>
+<translation id="5738385766833540397">Bestuur hoe jy opletberigte oor prysverlagings ontvang vir produkte wat jy naspoor</translation>
 <translation id="5738887413654608789">Jy kan hiermee relevante webbladsye op grond van jou omgewing ontdek.</translation>
 <translation id="5758631781033351321">Jy sal jou leeslys hier kry</translation>
 <translation id="5765456154762864099">Kieslys → Instellings → Verstekblaaier</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb
index ef3bb076..81b2fef 100644
--- a/ios/chrome/app/strings/resources/ios_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">${searchPhrase}ን በChrome ውስጥ ይፈልጉ</translation>
 <translation id="1242044645101871359">እንደገና ይግቡ</translation>
 <translation id="1254117744268754948">አቃፊ ይምረጡ</translation>
+<translation id="1258491128795710625">ምን አዲስ ነገር አለ</translation>
 <translation id="1265739287306757398">እንዴት እንደሆነ ይወቁ</translation>
 <translation id="1272079795634619415">አቁም</translation>
 <translation id="1275718070701477396">የተመረጡ</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">ለጥፍ እና ፈልግ</translation>
 <translation id="4223967053752765281">ድርጅትዎ በመለያ መግባትን አጥፍቷል። አሁንም በዚህ መሣሪያ ላይ የእርስዎ ዕልባቶች፣ ታሪክ፣ የይለፍ ቃላት እና ሌሎች ቅንብሮችን ማየት ይችላሉ። ለውጦችን ካደረጉ ከመለያዎ ጋር አይሰምሩም።</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>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">ይቅርታ፣ ወደ መለያዎ መግባት ላይ ችግር ነበር።</translation>
 <translation id="5731784586962650619">የይለፍ ቃላት በሌሎች መተግበሪያዎች ውስጥ</translation>
 <translation id="5737974891429562743">የመለያ መግቢያ ዝርዝሮች ጊዜ ያለፈባቸው ናቸው። ስምረትን ለመጀመር ያዘምኑ።</translation>
+<translation id="5738385766833540397">እርስዎ ለሚከታተሏቸው ምርቶች እንዴት የዋጋ ቅነሳ ማንቂያዎችን እንደሚቀበሉ ያስተዳድሩ</translation>
 <translation id="5738887413654608789">ይህ በእርስዎ ያሉበት ስፍራ አካባቢ ላይ በመመርኮዝ ተዛማጅነት ያላቸው የድር ገጾችን እንዲያገኙ ያስችልዎታል።</translation>
 <translation id="5758631781033351321">የእርስዎን ንባብ ዝርዝር እዚህ ያገኛሉ</translation>
 <translation id="5765456154762864099">ምናሌ → ቅንብሮች → ነባሪ አሳሽ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
index e276db3..1db3c89b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">‏البحث عن ${searchPhrase} في متصفِّح Chrome</translation>
 <translation id="1242044645101871359">تسجيل الدخول مرة أخرى</translation>
 <translation id="1254117744268754948">اختيار مجلد</translation>
+<translation id="1258491128795710625">الميزات الجديدة</translation>
 <translation id="1265739287306757398">تعرَّف على الطريقة</translation>
 <translation id="1272079795634619415">إيقاف</translation>
 <translation id="1275718070701477396">تم التحديد</translation>
@@ -566,6 +567,7 @@
 <translation id="5728700505257787410">عذرًا، حدثت مشكلة أثناء تسجيل الدخول إلى حسابك.</translation>
 <translation id="5731784586962650619">كلمات المرور في التطبيقات الأخرى</translation>
 <translation id="5737974891429562743">تفاصيل تسجيل الدخول إلى الحساب قديمة. يمكنك التحديث لبدء المزامنة.</translation>
+<translation id="5738385766833540397">يمكنك إدارة طريقة تلقّي التنبيهات بشأن انخفاض أسعار المنتجات التي يتم تتبُّعها.</translation>
 <translation id="5738887413654608789">يتيح لك هذا اكتشاف صفحات الويب ذات الصلة حسب الأشياء المحيطة بك.</translation>
 <translation id="5758631781033351321">ستظهر لك "قائمة القراءة" هنا</translation>
 <translation id="5765456154762864099">القائمة ← الإعدادات ← المتصفِّح التلقائي</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb
index 17b7e60..e6a0e0b9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_as.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chromeত ${searchPhrase}ৰ সন্ধান কৰক</translation>
 <translation id="1242044645101871359">আকৌ ছাইন ইন কৰক</translation>
 <translation id="1254117744268754948">ফ’ল্ডাৰ বাছনি কৰক</translation>
+<translation id="1258491128795710625">নতুন কি আছে</translation>
 <translation id="1265739287306757398">কেনেকৈ কৰিব জানক</translation>
 <translation id="1272079795634619415">বন্ধ কৰক</translation>
 <translation id="1275718070701477396">বাছনি কৰা আছে</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">ক্ষমা কৰিব, আপোনাৰ একাউণ্টত ছাইন ইন কৰি থাকোঁতে কিবা সমস্যা হ’ল।</translation>
 <translation id="5731784586962650619">অন্য এপৰ পাছৱৰ্ড</translation>
 <translation id="5737974891429562743">একাউণ্টৰ ছাইন ইনৰ সবিশেষৰ ম্যাদ উকলিল। ছিংক আৰম্ভ কৰিবলৈ আপডে’ট কৰক।</translation>
+<translation id="5738385766833540397">আপুনি ট্ৰেক কৰা প্ৰ’ডাক্টসমূহৰ বাবে আপুনি কেনেকৈ মূল্য কমাৰ সতৰ্কবাৰ্তা লাভ কৰিব সেইটো পৰিচালনা কৰক</translation>
 <translation id="5738887413654608789">ই আপোনাক আপোনাৰ চৌপাশৰ ঠাইৰ ওপৰত ভিত্তি কৰি প্ৰাসংগিক ৱেব পৃষ্ঠা সন্ধান কৰিবলৈ দিয়ে।</translation>
 <translation id="5758631781033351321">ইয়াত আপুনি নিজৰ পঢ়াৰ সূচীখন বিচাৰি পাব</translation>
 <translation id="5765456154762864099">মেনু → ছেটিং → ডিফ’ল্ট ব্ৰাউজাৰ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb
index 84c3b11..d50ab7b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_az.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome'da ${searchPhrase} axtarın</translation>
 <translation id="1242044645101871359">Yenidən daxil olun</translation>
 <translation id="1254117744268754948">Qovluq seçin</translation>
+<translation id="1258491128795710625">Yeniliklər</translation>
 <translation id="1265739287306757398">Məlumat əldə edin</translation>
 <translation id="1272079795634619415">Dayandırın</translation>
 <translation id="1275718070701477396">Seçilib</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Təşkilatınız Anonim rejimi tələb edir</translation>
 <translation id="1323735185997015385">Silin</translation>
 <translation id="132683371494960526">Valideyn qovluğunu dəyişmək üçün iki dəfə tıklayın.</translation>
+<translation id="1335348992705722518">Ayarları idarə edin...</translation>
 <translation id="1340643665687018190">Menyunu Bağlayın</translation>
 <translation id="1358214951266274152">Kopyalanmış Linkə Daxil Olun</translation>
 <translation id="1360432990279830238">Sinxronizasiya deaktiv edilsin?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Yerləşdirin və Axtarın</translation>
 <translation id="4223967053752765281">Təşkilatınız girişi deaktiv edib. Hələ də bu cihazda bütün əlfəcinlər, tarixçə, parol və digər ayarları görə bilərsiniz. Dəyişiklik etsəniz, onlar hesabınızla sinxronizasiya edilməyəcək.</translation>
 <translation id="4233831822770018312">İcazələri redaktə edin</translation>
+<translation id="4236584471598725073">Qiymət izlənir</translation>
 <translation id="4237377247299956313"><ph name="BEGIN_BOLD" />Defolt Brauzer Tətbiqi<ph name="END_BOLD" /> seçiminə toxunun</translation>
 <translation id="424315890655130736">Parol sözü daxil edin</translation>
 <translation id="4249955472157341256">Ən sonuncular üzrə sıalayın</translation>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Üzr istəyirik, hesabınıza daxil olarkən problem baş verdi.</translation>
 <translation id="5731784586962650619">Digər Tətbiqlərdə Parollar</translation>
 <translation id="5737974891429562743">Hesaba avtomatik giriş detallarının vaxtı keçib. Sinxronizasiyanı başlamaq üçün yeniləyin.</translation>
+<translation id="5738385766833540397">İzlədiyiniz məhsullar üçün qiymət endirimi xəbərdarlıqlarını necə alacağınızı idarə edin</translation>
 <translation id="5738887413654608789">Ətrafınızda uyğun veb səhifələri kəşf etməyə imkan verir.</translation>
 <translation id="5758631781033351321">Oxu siyahısını burada tapa bilərsiniz</translation>
 <translation id="5765456154762864099">Menyu → Ayarlar → Defolt Brauzer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb
index 0226009..f2a1bac3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_be.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Шукаць у Chrome: ${searchPhrase}</translation>
 <translation id="1242044645101871359">Увайдзіце яшчэ раз</translation>
 <translation id="1254117744268754948">Выбраць папку</translation>
+<translation id="1258491128795710625">Што новага</translation>
 <translation id="1265739287306757398">Даведацца больш</translation>
 <translation id="1272079795634619415">Спыніць</translation>
 <translation id="1275718070701477396">Выбрана</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Ваша арганізацыя патрабуе выкарыстання рэжыму інкогніта</translation>
 <translation id="1323735185997015385">Выдаліць</translation>
 <translation id="132683371494960526">Каб змяніць бацькоўскую папку, націсніце двойчы.</translation>
+<translation id="1335348992705722518">Кіраваць наладамі…</translation>
 <translation id="1340643665687018190">Закрыць меню</translation>
 <translation id="1358214951266274152">Перайсці па скапіраванай спасылцы</translation>
 <translation id="1360432990279830238">Выйсці і выключыць сінхранізацыю?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Уставіць і выканаць пошук</translation>
 <translation id="4223967053752765281">Ваша арганізацыя адключыла магчымасць уваходу. Як і раней, вы можаце праглядаць свае закладкі, гісторыю, паролі і іншыя налады на гэтай прыладзе. Зробленыя вамі змяненні не будуць сінхранізавацца з вашым уліковым запісам.</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>
@@ -474,6 +477,7 @@
 <translation id="4901778704868714008">Захаваць...</translation>
 <translation id="4904877109095351937">Пазначыць як прачытанае</translation>
 <translation id="4908869848243824489">Рэкамендацыі ад Google</translation>
+<translation id="4916679969857390442">Аб'ектыў</translation>
 <translation id="4930714375720679147">Уключыць</translation>
 <translation id="4941089862236492464">Узнікла праблема з абагульваннем вашага элемента.</translation>
 <translation id="4944543191714094452">Пошук на старонцы…</translation>
@@ -561,6 +565,7 @@
 <translation id="5728700505257787410">Праблема з уваходам у ваш уліковы запіс.</translation>
 <translation id="5731784586962650619">Паролі ў іншых праграмах</translation>
 <translation id="5737974891429562743">Даныя ўліковага запісу для ўваходу састарэлі. Каб запусціць сінхранізацыю, абнавіце іх.</translation>
+<translation id="5738385766833540397">Выберыце, куды павінны прыходзіць абвесткі пра зніжэнне цэн на тавары, за якімі вы сочыце</translation>
 <translation id="5738887413654608789">Гэта дазваляе на аснове даных пра наваколле знаходзіць адпаведныя вэб-старонкі.</translation>
 <translation id="5758631781033351321">Ваш спіс чытання знаходзіцца тут</translation>
 <translation id="5765456154762864099">Меню → Налады → Стандартны браўзер</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
index c80665c..d43ef36f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Търсене на ${searchPhrase} в Chrome</translation>
 <translation id="1242044645101871359">Влезте отново</translation>
 <translation id="1254117744268754948">Избор на папка</translation>
+<translation id="1258491128795710625">Новите неща</translation>
 <translation id="1265739287306757398">Научете как</translation>
 <translation id="1272079795634619415">Стоп</translation>
 <translation id="1275718070701477396">Избрано</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">За съжаление при влизането в профила ви възникна проблем.</translation>
 <translation id="5731784586962650619">Пароли в други приложения</translation>
 <translation id="5737974891429562743">Данните за вход в профила не са актуални. Актуализирайте ги, за да започне синхронизирането.</translation>
+<translation id="5738385766833540397">Управлявайте начините, по които получавате сигнали за понижение на цената за продукти, които следите</translation>
 <translation id="5738887413654608789">Това ви позволява да откривате подходящи уеб страници въз основа на заобикалящата ви среда.</translation>
 <translation id="5758631781033351321">Тук ще се показва списъкът ви за четене</translation>
 <translation id="5765456154762864099">Меню → Настройки → Браузър по подразбиране</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index 86acff8..2c3c5b7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome-এ ${searchPhrase} সার্চ করুন</translation>
 <translation id="1242044645101871359">আবার সাইন-ইন করুন</translation>
 <translation id="1254117744268754948">ফোল্ডার বেছে নিন</translation>
+<translation id="1258491128795710625">নতুন কী আছে</translation>
 <translation id="1265739287306757398">কীভাবে করবেন জানুন</translation>
 <translation id="1272079795634619415">বন্ধ</translation>
 <translation id="1275718070701477396">নির্বাচিত</translation>
@@ -565,6 +566,7 @@
 <translation id="5728700505257787410">দুঃখিত, আপনার অ্যাকাউন্টে সাইন-ইন করার সময় একটি সমস্যা হয়েছে৷</translation>
 <translation id="5731784586962650619">অন্যান্য অ্যাপে পাসওয়ার্ড</translation>
 <translation id="5737974891429562743">অ্যাকাউন্ট সাইন-ইনের বিশদ বিবরণ পুরনো হয়ে গেছে। সিঙ্ক শুরু করার জন্য আপডেট করুন।</translation>
+<translation id="5738385766833540397">আপনার ট্র্যাক করা প্রোডাক্টের দাম কমার বিজ্ঞপ্তি কীভাবে পাবেন তা ম্যানেজ করুন</translation>
 <translation id="5738887413654608789">এই আদেশটি আপনার পারিপার্শ্বিক পরিবেশের উপর নির্ভর করে ওয়েব পৃষ্ঠার খোঁজ করতে দেয়।</translation>
 <translation id="5758631781033351321">আপনি নিজের পড়ার তালিকা এখানে খুঁজে পাবেন</translation>
 <translation id="5765456154762864099">মেনু → সেটিংস → ডিফল্ট ব্রাউজার</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
index 0e27d17a..d8f9f479 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Pretražite ${searchPhrase} u Chromeu</translation>
 <translation id="1242044645101871359">Prijavite se ponovo</translation>
 <translation id="1254117744268754948">Odaberite folder</translation>
+<translation id="1258491128795710625">Šta je novo</translation>
 <translation id="1265739287306757398">Saznajte kako</translation>
 <translation id="1272079795634619415">Zaustavi</translation>
 <translation id="1275718070701477396">Odabrano</translation>
@@ -55,7 +56,7 @@
 <translation id="1322735045095424339">Vaša organizacija zahtijeva anonimni način rada</translation>
 <translation id="1323735185997015385">Izbriši</translation>
 <translation id="132683371494960526">Dodirnite dvaput da promijenite nadređeni folder.</translation>
-<translation id="1335348992705722518">Upravljajte postavkama...</translation>
+<translation id="1335348992705722518">Upravljajte Postavkama...</translation>
 <translation id="1340643665687018190">Zatvori izbornik</translation>
 <translation id="1358214951266274152">Posjetite link koji ste kopirali</translation>
 <translation id="1360432990279830238">Odjaviti se i isključiti sinkronizaciju?</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">Lijepljenje i pretraživanje</translation>
 <translation id="4223967053752765281">Vaša organizacija je isključila prijave. I dalje ćete moći pregledati svoje oznake, historiju, lozinke i druge postavke na ovom uređaju. Ako nešto promijenite, te promjene se neće sinhronizirati s vašim računom.</translation>
 <translation id="4233831822770018312">Uredite odobrenja</translation>
+<translation id="4236584471598725073">Praćenje cijene</translation>
 <translation id="4237377247299956313">Dodirnite <ph name="BEGIN_BOLD" />Zadana aplikacija preglednika<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Unesite pristupni izraz</translation>
 <translation id="4249955472157341256">Poredaj po najnovijem</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Žao nam je, došlo je do problema s prijavom na vaš račun.</translation>
 <translation id="5731784586962650619">Lozinke u drugim aplikacijama</translation>
 <translation id="5737974891429562743">Detalji o prijavi za račun su zastarjeli. Ažurirajte da pokrenete sinhronizaciju.</translation>
+<translation id="5738385766833540397">Upravljajte načinom na koji primate obavještenja o padu cijene za proizvode koje pratite</translation>
 <translation id="5738887413654608789">Ovako možete otkriti relevantne web lokacije na osnovu vašeg okruženja.</translation>
 <translation id="5758631781033351321">Listu za čitanje ćete pronaći ovdje</translation>
 <translation id="5765456154762864099">Meni → Postavke → Zadani preglednik</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
index d1ff21b..a76d5c8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Cerca ${searchPhrase} a Chrome</translation>
 <translation id="1242044645101871359">Torna a iniciar la sessió</translation>
 <translation id="1254117744268754948">Tria la carpeta</translation>
+<translation id="1258491128795710625">Novetats</translation>
 <translation id="1265739287306757398">Informació</translation>
 <translation id="1272079795634619415">Atura</translation>
 <translation id="1275718070701477396">Seleccionada</translation>
@@ -564,6 +565,7 @@
 <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="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>
 <translation id="5758631781033351321">Trobaràs la llista de lectura aquí</translation>
 <translation id="5765456154762864099">Menú → Configuració → Navegador predeterminat</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
index 2059fa8..ccc10ba 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Vyhledat v Chromu ${searchPhrase}</translation>
 <translation id="1242044645101871359">Znovu se přihlaste</translation>
 <translation id="1254117744268754948">Výběr složky</translation>
+<translation id="1258491128795710625">Novinky</translation>
 <translation id="1265739287306757398">Postup</translation>
 <translation id="1272079795634619415">Zastavit</translation>
 <translation id="1275718070701477396">Vybráno</translation>
@@ -383,6 +384,7 @@
 <translation id="4187450337729239226">Vložit a vyhledat</translation>
 <translation id="4223967053752765281">Vaše organizace vypnula přihlašování. Záložky, historii, hesla a další nastavení na tomto zařízení nadále uvidíte. Pokud provedete nějaké změny, nesynchronizují se do účtu.</translation>
 <translation id="4233831822770018312">Upravit oprávnění</translation>
+<translation id="4236584471598725073">Sledujete cenu</translation>
 <translation id="4237377247299956313">Klepněte na <ph name="BEGIN_BOLD" />Výchozí prohlížeč<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Zadání heslové fráze</translation>
 <translation id="4249955472157341256">Seřadit podle nejnovější</translation>
@@ -562,6 +564,7 @@
 <translation id="5728700505257787410">Litujeme, při přihlašování k vašemu účtu se vyskytl problém.</translation>
 <translation id="5731784586962650619">Hesla v jiných aplikacích</translation>
 <translation id="5737974891429562743">Přihlašovací údaje k účtu jsou zastaralé. Chcete-li zahájit synchronizaci, aktualizujte je.</translation>
+<translation id="5738385766833540397">Nastavte, jak chcete dostávat upozornění na pokles cen produktů, které sledujete</translation>
 <translation id="5738887413654608789">Umožňuje vám objevovat relevantní webové stránky na základě vašeho okolí.</translation>
 <translation id="5758631781033351321">Zde najdete svůj seznam četby</translation>
 <translation id="5765456154762864099">Nabídka → Nastavení → Výchozí prohlížeč</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
index fe64f34b..a5648ee8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chwilio ${searchPhrase} yn Chrome</translation>
 <translation id="1242044645101871359">Mewngofnodwch Eto</translation>
 <translation id="1254117744268754948">Dewis Ffolder</translation>
+<translation id="1258491128795710625">Beth sy'n newydd</translation>
 <translation id="1265739287306757398">Dysgu Sut</translation>
 <translation id="1272079795634619415">Stopio</translation>
 <translation id="1275718070701477396">Wedi'i ddewis</translation>
@@ -564,6 +565,7 @@
 <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="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>
 <translation id="5758631781033351321">Byddwch yn gweld eich rhestr ddarllen yma</translation>
 <translation id="5765456154762864099">Dewislen → Gosodiadau → Porwr Diofyn</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb
index 07fff7025..c2d6e5f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Søg efter ${searchPhrase} i Chrome</translation>
 <translation id="1242044645101871359">Log ind igen</translation>
 <translation id="1254117744268754948">Vælg mappe</translation>
+<translation id="1258491128795710625">Nyheder</translation>
 <translation id="1265739287306757398">Se, hvordan du gør</translation>
 <translation id="1272079795634619415">Stop</translation>
 <translation id="1275718070701477396">Valgt</translation>
@@ -564,6 +565,7 @@
 <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="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>
 <translation id="5758631781033351321">Her finder du din læseliste</translation>
 <translation id="5765456154762864099">Menu → Indstillinger → Standardbrowser</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb
index dcc58f7..26ef28d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">In Chrome nach ${searchPhrase} suchen</translation>
 <translation id="1242044645101871359">Noch einmal anmelden</translation>
 <translation id="1254117744268754948">Ordner wählen</translation>
+<translation id="1258491128795710625">Neue Funktionen</translation>
 <translation id="1265739287306757398">Weitere Informationen</translation>
 <translation id="1272079795634619415">Stoppen</translation>
 <translation id="1275718070701477396">Ausgewählt</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Beim Anmelden in deinem Konto ist ein Fehler aufgetreten.</translation>
 <translation id="5731784586962650619">Passwörter in anderen Apps</translation>
 <translation id="5737974891429562743">Die Anmeldeinformationen für das Konto sind veraltet. Aktualisiere sie zur Synchronisierung.</translation>
+<translation id="5738385766833540397">Lege fest, wie du über Preisnachlässe bei beobachteten Produkten benachrichtigt werden willst</translation>
 <translation id="5738887413654608789">Dann kannst du relevante Webseiten zu Objekten in deiner Umgebung entdecken.</translation>
 <translation id="5758631781033351321">Hier wird deine Leseliste angezeigt</translation>
 <translation id="5765456154762864099">„Menü“ → „Einstellungen“ → „Standardbrowser“</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb
index 9a23fa8..d4366d1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Αποδοχή και συνέχεια</translation>
 <translation id="110724200315609752">Εναλλαγή σε ανοικτό παράθυρο</translation>
 <translation id="1112015203684611006">Η εκτύπωση απέτυχε.</translation>
+<translation id="1118569444314402022">Καλώς ορίσατε και πάλι, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Δημιουργία νέας καρτέλας.</translation>
 <translation id="1126809382673880764">Δεν σας προστατεύει από επικίνδυνους ιστοτόπους, λήψεις και επεκτάσεις. Θα εξακολουθείτε να λαμβάνετε προστασία από την Ασφαλή περιήγηση, όπου είναι διαθέσιμη, σε άλλες Υπηρεσίες Google, όπως το Gmail και η Αναζήτηση.</translation>
 <translation id="1135212215217513471">Λήψη Chrome για iOS</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Αναζήτηση για ${searchPhrase} στο Chrome</translation>
 <translation id="1242044645101871359">Συνδεθείτε ξανά</translation>
 <translation id="1254117744268754948">Επιλογή φακέλου</translation>
+<translation id="1258491128795710625">Τι νέο υπάρχει</translation>
 <translation id="1265739287306757398">Μάθετε με ποιον τρόπο</translation>
 <translation id="1272079795634619415">Διακοπή</translation>
 <translation id="1275718070701477396">Επιλέχθηκε</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">Ο συγχρονισμός σταμάτησε να λειτουργεί.</translation>
 <translation id="1377321085342047638">Αρ.κάρτας</translation>
 <translation id="1383876407941801731">Αναζήτηση</translation>
+<translation id="138618066238211776">Συνέχεια ως <ph name="USER_NAME" /></translation>
 <translation id="1400642268715879018">Τελευταίες 4 εβδομάδες</translation>
 <translation id="1404330357948037222">Είστε αποσυνδεδεμένοι</translation>
 <translation id="1407135791313364759">Άνοιγμα όλων</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Συνέχιση επεξεργασίας</translation>
 <translation id="2434405374328098816">Έχετε ήδη αποθηκεύσει έναν κωδικό πρόσβασης για τον χρήστη "<ph name="USERNAME" />" στον ιστότοπο <ph name="WEBSITE" /></translation>
 <translation id="2435457462613246316">Εμφάνιση κωδικού πρόσβασης</translation>
+<translation id="2461070143328828326">Ρυθμίσεις κωδικού πρόσβασης</translation>
 <translation id="2469960372084740698">Να απενεργοποιηθεί η Ασφαλής περιήγηση;</translation>
 <translation id="2473876017985765807">Έχετε ήδη αποθηκεύσει έναν κωδικό πρόσβασης για τον ιστότοπο <ph name="WEBSITE" /></translation>
 <translation id="2476359652512522418">Δεν έχει επιλεγεί</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Επισήμανση ως μη αναγνωσμένη</translation>
 <translation id="371230970611282515">Προβλέπει και σας προειδοποιεί για επικίνδυνα συμβάντα προτού αυτά συμβούν.</translation>
 <translation id="37207012422556617">Ανερχόμενες αναζητήσεις</translation>
+<translation id="3726360487031500941">Συνδεθείτε ξανά στον λογαριασμό σας <ph name="USER_NAME" /></translation>
 <translation id="3740397331642243698">Ανοίγει τα URL που εισάγονται στο Google Chrome σε ανώνυμη περιήγηση.</translation>
 <translation id="3762232513783804601">Δημιουργήθηκε για το iPad</translation>
 <translation id="3771033907050503522">Καρτ.αν.περιήγ.</translation>
@@ -564,6 +569,7 @@
 <translation id="5728700505257787410">Παρουσιάστηκε πρόβλημα με τη σύνδεση στον λογαριασμό σας.</translation>
 <translation id="5731784586962650619">Κωδικοί πρόσβασης σε άλλες εφαρμογές</translation>
 <translation id="5737974891429562743">Τα στοιχεία σύνδεσης λογαριασμού δεν είναι ενημερωμένα. Ενημερώστε τα για να ξεκινήσει ο συγχρονισμός.</translation>
+<translation id="5738385766833540397">Διαχειριστείτε τον τρόπο με τον οποίο λαμβάνετε τις ειδοποιήσεις πτώσεων τιμών για τα προϊόντα που παρακολουθείτε</translation>
 <translation id="5738887413654608789">Αυτό σας επιτρέπει να ανακαλύψετε σχετικές ιστοσελίδες βάσει του περιβάλλοντός σας.</translation>
 <translation id="5758631781033351321">Εδώ θα βρείτε τη λίστα ανάγνωσής σας</translation>
 <translation id="5765456154762864099">Μενού → Ρυθμίσεις → Προεπιλεγμένο πρόγραμμα περιήγησης</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 9e7b3d90..632ce5e2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -43,6 +43,7 @@
 <translation id="1229222343402087523">Search ${searchPhrase} in Chrome</translation>
 <translation id="1242044645101871359">Sign in again</translation>
 <translation id="1254117744268754948">Choose folder</translation>
+<translation id="1258491128795710625">What’s new</translation>
 <translation id="1265739287306757398">Learn How</translation>
 <translation id="1272079795634619415">Stop</translation>
 <translation id="1275718070701477396">Selected</translation>
@@ -568,6 +569,7 @@
 <translation id="5728700505257787410">Sorry, there was a problem signing in to your account.</translation>
 <translation id="5731784586962650619">Passwords in other apps</translation>
 <translation id="5737974891429562743">Account sign-in details are out of date. Update to start sync.</translation>
+<translation id="5738385766833540397">Manage how you receive price drop alerts for products that you track</translation>
 <translation id="5738887413654608789">This lets you discover relevant web pages based on your surroundings.</translation>
 <translation id="5758631781033351321">You'll find your reading list here</translation>
 <translation id="5765456154762864099">Menu → Settings → Default browser</translation>
@@ -754,6 +756,7 @@
 <translation id="6988572888918530647">Manage your Google Account</translation>
 <translation id="6989674195860388998">Switch in settings…</translation>
 <translation id="6998989275928107238">To</translation>
+<translation id="699954956411469731">Mobile notifications</translation>
 <translation id="7004032350256606903">Your organisation requires you to browse privately.
 <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="7004499039102548441">Recent tabs</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
index 75c7633..3e84fe0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Buscar ${searchPhrase} en Chrome</translation>
 <translation id="1242044645101871359">Volver a acceder</translation>
 <translation id="1254117744268754948">Seleccionar carpeta</translation>
+<translation id="1258491128795710625">Novedades</translation>
 <translation id="1265739287306757398">Más información</translation>
 <translation id="1272079795634619415">Interrumpir</translation>
 <translation id="1275718070701477396">Seleccionada</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Tu organización requiere que utilices el modo Incógnito</translation>
 <translation id="1323735185997015385">Borrar</translation>
 <translation id="132683371494960526">Presiona dos veces para cambiar la carpeta principal.</translation>
+<translation id="1335348992705722518">Administrar configuración…</translation>
 <translation id="1340643665687018190">Cerrar menú</translation>
 <translation id="1358214951266274152">Visita el vínculo que copiaste</translation>
 <translation id="1360432990279830238">¿Salir y desactivar la sincronización?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Pegar y buscar</translation>
 <translation id="4223967053752765281">Tu organización desactivó el acceso. Podrás seguir viendo tus favoritos, el historial, las contraseñas y otras opciones de configuración en este dispositivo. Si realizas cambios, no se sincronizarán con tu cuenta.</translation>
 <translation id="4233831822770018312">Modificar permisos</translation>
+<translation id="4236584471598725073">Se está haciendo el seguimiento de precios</translation>
 <translation id="4237377247299956313">Presiona <ph name="BEGIN_BOLD" />App de navegador predeterminada<ph name="END_BOLD" />.</translation>
 <translation id="424315890655130736">Ingresar frase de contraseña</translation>
 <translation id="4249955472157341256">Ordenar por más recientes</translation>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Se produjo un error al acceder a tu cuenta.</translation>
 <translation id="5731784586962650619">Contraseñas en otras apps</translation>
 <translation id="5737974891429562743">Los detalles de acceso de la cuenta están desactualizados. Actualízalos para comenzar la sincronización.</translation>
+<translation id="5738385766833540397">Administra cómo recibes alertas de descuentos para los productos que sigues.</translation>
 <translation id="5738887413654608789">Esta capacidad te permite descubrir páginas web relevantes en función de tu entorno.</translation>
 <translation id="5758631781033351321">Aquí encontrarás tu lista de lectura</translation>
 <translation id="5765456154762864099">Menú → Configuración → Navegador predeterminado</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index d086b81..4f011225 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Buscar ${searchPhrase} en Chrome</translation>
 <translation id="1242044645101871359">Vuelve a iniciar sesión</translation>
 <translation id="1254117744268754948">Seleccionar carpeta</translation>
+<translation id="1258491128795710625">Novedades</translation>
 <translation id="1265739287306757398">Más información</translation>
 <translation id="1272079795634619415">Detener</translation>
 <translation id="1275718070701477396">Seleccionado</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">Pegar y buscar</translation>
 <translation id="4223967053752765281">Tu organización ha desactivado el inicio de sesión. Podrás seguir viendo tus marcadores, el historial, las contraseñas y otros ajustes en este dispositivo. Si realizas cambios, no se sincronizarán con tu cuenta.</translation>
 <translation id="4233831822770018312">Editar permisos</translation>
+<translation id="4236584471598725073">Seguimiento de precios</translation>
 <translation id="4237377247299956313">Toca <ph name="BEGIN_BOLD" />App del navegador por omisión<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Introduce tu frase de contraseña</translation>
 <translation id="4249955472157341256">Ordenar por más recientes</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Error al iniciar sesión en tu cuenta</translation>
 <translation id="5731784586962650619">Contraseñas en otras aplicaciones</translation>
 <translation id="5737974891429562743">Información de inicio de sesión de la cuenta obsoleta. Actualízala para iniciar la sincronización.</translation>
+<translation id="5738385766833540397">Gestiona cómo recibes las alertas de bajadas de precio de los productos que sigues</translation>
 <translation id="5738887413654608789">Esto te permite descubrir páginas web relevantes según lo que te rodea.</translation>
 <translation id="5758631781033351321">Aquí verás tu lista de lectura</translation>
 <translation id="5765456154762864099">Menú → Configuración → Navegador predeterminado</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb
index b804d9f6..aba98a8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_et.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Otsi Chrome'is päringut ${searchPhrase}</translation>
 <translation id="1242044645101871359">Logige uuesti sisse</translation>
 <translation id="1254117744268754948">Kausta valimine</translation>
+<translation id="1258491128795710625">Mis on uut?</translation>
 <translation id="1265739287306757398">Lisateave</translation>
 <translation id="1272079795634619415">Peata</translation>
 <translation id="1275718070701477396">Valitud</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">Kleepimine ja otsimine</translation>
 <translation id="4223967053752765281">Teie organisatsioon lülitas sisselogimise välja. Näete selles seadmes endiselt oma järjehoidjaid, ajalugu, paroole ja muid seadeid. Muudatuste tegemisel neid teie kontoga ei sünkroonita.</translation>
 <translation id="4233831822770018312">Lubade muutmine</translation>
+<translation id="4236584471598725073">Hinna jälgimine</translation>
 <translation id="4237377247299956313">Puudutage valikut <ph name="BEGIN_BOLD" />Vaikebrauserirakendus<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Sisestage parool</translation>
 <translation id="4249955472157341256">Sordi uusimate järgi</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Kahjuks ilmnes kontole sisselogimisel probleem.</translation>
 <translation id="5731784586962650619">Paroolid muudes rakendustes</translation>
 <translation id="5737974891429562743">Konto sisselogimisandmed on aegunud. Värskendage andmeid sünkroonimise alustamiseks.</translation>
+<translation id="5738385766833540397">Hallake, kuidas saate jälgitavate toodete puhul hinnaalanduse märguandeid</translation>
 <translation id="5738887413654608789">See võimaldab teil ümbruskonna järgi asjakohaseid veebilehti avastada.</translation>
 <translation id="5758631781033351321">Oma lugemisloendi leiate siit</translation>
 <translation id="5765456154762864099">Menüü → Seaded → Vaikebrauser</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
index b17c6b69..0741715 100644
--- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Bilatu "${searchPhrase}" Chrome-n</translation>
 <translation id="1242044645101871359">Hasi saioa berriro</translation>
 <translation id="1254117744268754948">Aukeratu karpeta</translation>
+<translation id="1258491128795710625">Berritasunak</translation>
 <translation id="1265739287306757398">Lortu argibideak</translation>
 <translation id="1272079795634619415">Gelditu</translation>
 <translation id="1275718070701477396">Hautatua</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Arazo bat izan da kontuan saioa hastean.</translation>
 <translation id="5731784586962650619">Passwords In Other Apps (beste aplikazio batzuetako pasahitzak)</translation>
 <translation id="5737974891429562743">Kontuan saioa hasteko xehetasunak zaharkituta daude. Egunera itzazu sinkronizatzen hasteko.</translation>
+<translation id="5738385766833540397">Kudeatu jarraipena egiten diezun produktuei dagozkien prezio-jaitsieren alertak jasotzeko modua</translation>
 <translation id="5738887413654608789">Honi esker, inguruan duzunaren arabera interesa dakizkizukeen web-orri aipagarriak aurkituko dituzu.</translation>
 <translation id="5758631781033351321">Irakurketa-zerrenda aurkituko duzu hemen</translation>
 <translation id="5765456154762864099">Menua → Ezarpenak → Arakatzaile lehenetsia</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index ee17ea59..b9e54b8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">‏جستجوی ${searchPhrase} در Chrome</translation>
 <translation id="1242044645101871359">دوباره به سیستم وارد شوید</translation>
 <translation id="1254117744268754948">انتخاب پوشه</translation>
+<translation id="1258491128795710625">ویژگی‌های جدید</translation>
 <translation id="1265739287306757398">با نحوه انجام کار آشنا شوید</translation>
 <translation id="1272079795634619415">توقف</translation>
 <translation id="1275718070701477396">انتخاب شد</translation>
@@ -509,7 +510,7 @@
 <translation id="5181140330217080051">در حال بارگیری</translation>
 <translation id="5184329579814168207">‏باز کردن در Chrome</translation>
 <translation id="5186185447130319458">خصوصی</translation>
-<translation id="5188482106078495165">تنظیمات کوکی برای همه برگه‌ها اعمال می‌شود. برای اعمال تنظیم جدید در یکی از برگه‌های باز، برگه را تازه‌سازی کنید.</translation>
+<translation id="5188482106078495165">تنظیمات کوکی برای همه برگه‌ها اعمال می‌شود. برای اعمال تنظیم جدید در یکی از برگه‌های باز، برگه را بار کردن مجدد کنید.</translation>
 <translation id="5190835502935405962">نوار نشانک‌ها</translation>
 <translation id="519530786644929958">بارگیری موفق نبود و نمی‌توان آن را دوباره انجام داد.</translation>
 <translation id="5197255632782567636">اینترنت</translation>
@@ -545,7 +546,7 @@
 
 Handoff باید در بخش عمومی تنظیمات نیز فعال شود و دستگاه‌های شما باید از یک حساب iCloud استفاده کنند.</translation>
 <translation id="5551897871312988470">پیشنهاد برای ترجمه</translation>
-<translation id="5556459405103347317">تازه‌سازی</translation>
+<translation id="5556459405103347317">بار کردن مجدد</translation>
 <translation id="556042886152191864">دکمه</translation>
 <translation id="5580834567471114021">برای فرصتی دیگر به «فهرست خواندن» اضافه شود؟</translation>
 <translation id="560322036295180549">سازمانتان آن را خاموش کرده است.</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">متأسفیم، مشکلی در ورود به حساب شما وجود داشت.</translation>
 <translation id="5731784586962650619">گذرواژه‌ها در برنامه‌های دیگر</translation>
 <translation id="5737974891429562743">جزئیات ورود به سیستم قدیمی است. برای شروع همگام‌سازی، به‌روزرسانی کنید.</translation>
+<translation id="5738385766833540397">مدیریت نحوه دریافت هشدارهای کاهش قیمت برای محصولاتی که ردیابی می‌کنید</translation>
 <translation id="5738887413654608789">با این کار می‌توانید صفحه‌های وب مرتبط را براساس محیط اطرافتان کاوش کنید.</translation>
 <translation id="5758631781033351321">فهرست مطالعه را اینجا خواهید دید</translation>
 <translation id="5765456154762864099">منو ← تنظیمات ← مرورگر پیش‌فرض</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
index 60682a9..332cfda 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Hae ${searchPhrase} Chromesta</translation>
 <translation id="1242044645101871359">Kirjaudu uudelleen</translation>
 <translation id="1254117744268754948">Valitse kansio</translation>
+<translation id="1258491128795710625">Uutta</translation>
 <translation id="1265739287306757398">Lisätietoja</translation>
 <translation id="1272079795634619415">Pysäytä</translation>
 <translation id="1275718070701477396">Valittu</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Organisaatiosi edellyttää incognito-tilaa</translation>
 <translation id="1323735185997015385">Poista</translation>
 <translation id="132683371494960526">Vaihda ylätason kansiota kaksoisnapauttamalla.</translation>
+<translation id="1335348992705722518">Muuta asetuksia…</translation>
 <translation id="1340643665687018190">Sulje valikko</translation>
 <translation id="1358214951266274152">Avaa kopioitu linkki</translation>
 <translation id="1360432990279830238">Kirjaudu ulos ja lopeta synkronointi?</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Tiliin kirjautuminen epäonnistui.</translation>
 <translation id="5731784586962650619">Salasanat muissa sovelluksissa</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>
 <translation id="5758631781033351321">Näet lukulistasi täällä</translation>
 <translation id="5765456154762864099">Valikko → Asetukset → Oletusselain</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index 1225220..221295c6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Hanapin ang ${searchPhrase} sa Chrome</translation>
 <translation id="1242044645101871359">Mag-sign In Ulit</translation>
 <translation id="1254117744268754948">Pumili ng Folder</translation>
+<translation id="1258491128795710625">Ano'ng Bago</translation>
 <translation id="1265739287306757398">Alamin kung paano</translation>
 <translation id="1272079795634619415">Stop</translation>
 <translation id="1275718070701477396">Pinili</translation>
@@ -564,6 +565,7 @@
 <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="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>
 <translation id="5758631781033351321">Makikita mo rito ang iyong listahan ng babasahin</translation>
 <translation id="5765456154762864099">Menu → Mga Setting → Default na Browser</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
index d5a69fa..5e9cfd3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Rechercher ${searchPhrase} dans Chrome</translation>
 <translation id="1242044645101871359">Reconnectez-vous</translation>
 <translation id="1254117744268754948">Sélectionner un dossier</translation>
+<translation id="1258491128795710625">Nouveautés</translation>
 <translation id="1265739287306757398">Découvrir comment</translation>
 <translation id="1272079795634619415">Arrêter</translation>
 <translation id="1275718070701477396">Sélectionné</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">Coller et rechercher</translation>
 <translation id="4223967053752765281">Votre organisation a désactivé la connexion. Vous pouvez tout de même voir vos favoris, votre historique, vos mots de passe et d'autres paramètres sur cet appareil. Si vous apportez des modifications, elles ne seront pas synchronisées avec votre compte.</translation>
 <translation id="4233831822770018312">Modifier les autorisations</translation>
+<translation id="4236584471598725073">Suivi des prix activé</translation>
 <translation id="4237377247299956313">Touchez <ph name="BEGIN_BOLD" />Navigateur par défaut<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Entrer la phrase de passe</translation>
 <translation id="4249955472157341256">Trier par Plus récents</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Un problème est survenu lors de la connexion à votre compte.</translation>
 <translation id="5731784586962650619">Mots de passe dans d'autres applications</translation>
 <translation id="5737974891429562743">Les renseignements de connexion au compte ne sont plus à jour. Mettez-les à jour pour commencer la synchronisation.</translation>
+<translation id="5738385766833540397">Gérez la façon dont vous recevez des alertes de réduction pour les produits que vous suivez</translation>
 <translation id="5738887413654608789">Cela vous permet de découvrir des pages Web pertinentes en fonction de votre environnement.</translation>
 <translation id="5758631781033351321">Vous trouverez votre liste de lecture ici</translation>
 <translation id="5765456154762864099">Menu → Paramètres → Navigateur par défaut</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
index 9fce047..c530b0d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Rechercher ${searchPhrase} dans Chrome</translation>
 <translation id="1242044645101871359">Se reconnecter</translation>
 <translation id="1254117744268754948">Sélectionner un dossier</translation>
+<translation id="1258491128795710625">Nouveautés</translation>
 <translation id="1265739287306757398">En savoir plus</translation>
 <translation id="1272079795634619415">Arrêter</translation>
 <translation id="1275718070701477396">Sélectionnée</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Votre organisation exige d'utiliser le mode navigation privée</translation>
 <translation id="1323735185997015385">Supprimer</translation>
 <translation id="132683371494960526">Appuyez deux fois pour modifier le dossier parent.</translation>
+<translation id="1335348992705722518">Gérer les paramètres</translation>
 <translation id="1340643665687018190">Fermer le menu</translation>
 <translation id="1358214951266274152">Consulter le lien copié</translation>
 <translation id="1360432990279830238">Se déconnecter et arrêter la synchro. ?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Coller et rechercher</translation>
 <translation id="4223967053752765281">Votre organisation a désactivé la connexion. Vos favoris, historique, mots de passe et autres paramètres resteront accessibles sur cet appareil, mais les modifications ne seront pas synchronisées avec votre compte.</translation>
 <translation id="4233831822770018312">Modifier les autorisations</translation>
+<translation id="4236584471598725073">Suivi des prix…</translation>
 <translation id="4237377247299956313">Appuyez sur <ph name="BEGIN_BOLD" />Navigateur par défaut<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Saisir la phrase secrète</translation>
 <translation id="4249955472157341256">Trier par "Les plus récents"</translation>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Désolé, problème lors de la connexion à votre compte.</translation>
 <translation id="5731784586962650619">Mots de passe dans d'autres applis</translation>
 <translation id="5737974891429562743">Informations de connexion au compte obsolètes. Mettez-les à jour pour lancer la synchronisation.</translation>
+<translation id="5738385766833540397">Gérez la réception d'alertes en cas de baisse de prix des produits que vous suivez</translation>
 <translation id="5738887413654608789">Vous permet de découvrir les pages Web pertinentes en fonction de votre environnement.</translation>
 <translation id="5758631781033351321">Votre liste de lecture s'affichera ici</translation>
 <translation id="5765456154762864099">Menu → Paramètres → Navigateur par défaut</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
index f9cab53..fa813405 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Busca "${searchPhrase}" en Chrome</translation>
 <translation id="1242044645101871359">Inicia sesión de novo</translation>
 <translation id="1254117744268754948">Seleccionar cartafol</translation>
+<translation id="1258491128795710625">Novidades</translation>
 <translation id="1265739287306757398">Máis información</translation>
 <translation id="1272079795634619415">Deter</translation>
 <translation id="1275718070701477396">Seleccionado</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">A túa organización esixe o uso do modo de incógnito</translation>
 <translation id="1323735185997015385">Eliminar</translation>
 <translation id="132683371494960526">Toca dúas veces para cambiar o cartafol principal.</translation>
+<translation id="1335348992705722518">Xestionar configuración…</translation>
 <translation id="1340643665687018190">Pechar menú</translation>
 <translation id="1358214951266274152">Visitar ligazón que copiaches</translation>
 <translation id="1360432990279830238">Queres pechar sesión?</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Produciuse un problema ao iniciar sesión na túa conta.</translation>
 <translation id="5731784586962650619">Contrasinais doutras aplicacións</translation>
 <translation id="5737974891429562743">Os detalles de inicio de sesión da conta están caducados. Actualízaos para iniciar a sincronización.</translation>
+<translation id="5738385766833540397">Xestiona como recibes as alertas de baixada de prezos para os produtos dos que fas un seguimento</translation>
 <translation id="5738887413654608789">Así poderás descubrir páxinas web relevantes en función do que te rodea.</translation>
 <translation id="5758631781033351321">Aquí atoparás a túa lista de lecturas</translation>
 <translation id="5765456154762864099">Menú → Configuración → Navegador predeterminado</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
index bcb1540..7e72bee 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">સ્વીકારો અને ચાલુ રાખો</translation>
 <translation id="110724200315609752">ખુલ્લી વિંડો પર સ્વિચ કરો</translation>
 <translation id="1112015203684611006">છાપવાનું નિષ્ફળ થયું.</translation>
+<translation id="1118569444314402022">આપનું ફરી સ્વાગત છે, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">નવું ટૅબ બનાવો.</translation>
 <translation id="1126809382673880764">જોખમકારક વેબસાઇટ, ડાઉનલોડ અને એક્સ્ટેન્શન સામે તમારું રક્ષણ કરતું નથી. Gmail અને Search જેવી Googleની અન્ય સેવાઓમાં, જ્યાં ઉપલબ્ધ હોય, ત્યાં તમને હજી પણ Safe Browsing સંરક્ષણ મળશે.</translation>
 <translation id="1135212215217513471">iOS માટે Chrome મેળવો</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Chromeમાં ${searchPhrase} શોધો</translation>
 <translation id="1242044645101871359">ફરીથી સાઇન ઇન કરો</translation>
 <translation id="1254117744268754948">ફોલ્ડર પસંદ કરો</translation>
+<translation id="1258491128795710625">નવું શું છે</translation>
 <translation id="1265739287306757398">જાણો કેવી રીતે</translation>
 <translation id="1272079795634619415">રોકો</translation>
 <translation id="1275718070701477396">પસંદ કરેલ</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">સમન્વયન એ કામ કરવાનું બંધ કરી દીધું છે.</translation>
 <translation id="1377321085342047638">કાર્ડ નંબર</translation>
 <translation id="1383876407941801731">શોધો</translation>
+<translation id="138618066238211776"><ph name="USER_NAME" /> તરીકે ચાલુ રાખો</translation>
 <translation id="1400642268715879018">છેલ્લા 4 અઠવાડિયા</translation>
 <translation id="1404330357948037222">તમે સાઇન આઉટ થઈ ગયા છો</translation>
 <translation id="1407135791313364759">બધું ખોલો</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">ફેરફાર કરતા રહો</translation>
 <translation id="2434405374328098816">તમે <ph name="WEBSITE" /> પર "<ph name="USERNAME" />" માટેનો પાસવર્ડ પહેલેથી સાચવ્યો છે</translation>
 <translation id="2435457462613246316">પાસવર્ડ બતાવો</translation>
+<translation id="2461070143328828326">પાસવર્ડ સેટિંગ</translation>
 <translation id="2469960372084740698">Safe Browsing બંધ કરીએ?</translation>
 <translation id="2473876017985765807">તમે <ph name="WEBSITE" /> માટેનો પાસવર્ડ પહેલેથી સાચવ્યો છે</translation>
 <translation id="2476359652512522418">પસંદ કરેલું નથી</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">વાંચ્યા વગરનું તરીકે માર્ક કરો</translation>
 <translation id="371230970611282515">જોખમકારક ઇવેન્ટ થાય તે પહેલાં તેનું અનુમાન લગાવીને તેના વિશે તમને ચેતવણી આપે છે.</translation>
 <translation id="37207012422556617">વલણમાં છે એવી શોધો</translation>
+<translation id="3726360487031500941">તમારા એકાઉન્ટ <ph name="USER_NAME" />માં ફરી સાઇન ઇન કરો</translation>
 <translation id="3740397331642243698">ઇનપુટ કરેલા URLsને Google Chrome છૂપા મોડમાં ખોલે છે.</translation>
 <translation id="3762232513783804601">તમારા iPad માટે બનાવાયેલું</translation>
 <translation id="3771033907050503522">છૂપા ટેબ્સ</translation>
@@ -564,6 +569,7 @@
 <translation id="5728700505257787410">માફ કરશો, તમારા એકાઉન્ટમાં સાઇન ઇન કરવામાં સમસ્યા હતી.</translation>
 <translation id="5731784586962650619">અન્ય ઍપમાંના પાસવર્ડ</translation>
 <translation id="5737974891429562743">એકાઉન્ટ સાઇન ઇન વિગતો જૂની થઈ ગઈ છે. સિંકને પ્રારંભ કરવા માટે અપડેટ કરો.</translation>
+<translation id="5738385766833540397">તમે ટ્રૅક કરો છો તે પ્રોડક્ટની કિંમતમાં ઘટાડા વિશેના અલર્ટ મેળવવાની રીત મેનેજ કરો</translation>
 <translation id="5738887413654608789">આ તમને તમારી આસપાસના વાતાવરણના આધારે સુસંગત વેબ પેજને શોધવા દે છે.</translation>
 <translation id="5758631781033351321">તમને તમારી વાંચન સૂચિ અહીં મળશે</translation>
 <translation id="5765456154762864099">મેનૂ → સેટિંગ → ડિફૉલ્ટ બ્રાઉઝર</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
index 17023e3..8239063 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome में ${searchPhrase} खोजें</translation>
 <translation id="1242044645101871359">फिर से साइन इन करें</translation>
 <translation id="1254117744268754948">फ़ोल्डर चुनें</translation>
+<translation id="1258491128795710625">नया क्या है</translation>
 <translation id="1265739287306757398">तरीका जानें</translation>
 <translation id="1272079795634619415">रोकें</translation>
 <translation id="1275718070701477396">चयनित</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">क्षमा करें, आपके खाते में प्रवेश करने में समस्या थी.</translation>
 <translation id="5731784586962650619">Passwords In Other Apps</translation>
 <translation id="5737974891429562743">खाते में साइन इन की जानकारियां पुरानी हो गई हैं. सिंक शुरू करने के लिए अपडेट करें.</translation>
+<translation id="5738385766833540397">मैनेज करें कि आपको ऐसे प्रॉडक्ट की कीमत में कमी से जुड़ी सूचनाएं कैसे मिलेंगी जिन्हें आपने ट्रैकिंग में रखा है</translation>
 <translation id="5738887413654608789">इससे आप अपने आस-पास की चीज़ों पर आधारित वेब पृष्ठों की खोज कर सकते हैं.</translation>
 <translation id="5758631781033351321">आपको अपनी, पढ़ने की चीज़ों की सूची यहां मिलेगी</translation>
 <translation id="5765456154762864099">मेन्यू → सेटिंग → डिफ़ॉल्ट ब्राउज़र</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
index def92be..c4d5e38 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Pretraži ${searchPhrase} u Chromeu</translation>
 <translation id="1242044645101871359">Prijavite se ponovo</translation>
 <translation id="1254117744268754948">Odabir mape</translation>
+<translation id="1258491128795710625">Što je novo</translation>
 <translation id="1265739287306757398">Saznajte kako</translation>
 <translation id="1272079795634619415">Zaustavi</translation>
 <translation id="1275718070701477396">Odabrano</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">Zalijepi i pretraži</translation>
 <translation id="4223967053752765281">Vaša organizacija isključila je prijavljivanje. Vaše oznake, povijest, zaporke i druge postavke i dalje su vam vidljive na ovom uređaju. Ako nešto promijenite, te se promjene neće sinkronizirati s vašim računom.</translation>
 <translation id="4233831822770018312">Uređivanje dopuštenja</translation>
+<translation id="4236584471598725073">Praćenje cijene</translation>
 <translation id="4237377247299956313">Dodirnite opciju <ph name="BEGIN_BOLD" />Zadana aplikacija preglednika<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Unesite šifru</translation>
 <translation id="4249955472157341256">Poredaj po najnovijem</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Došlo je do problema prilikom prijave na vaš račun.</translation>
 <translation id="5731784586962650619">Zaporke u drugim aplikacijama</translation>
 <translation id="5737974891429562743">Pojedinosti prijave na račun su zastarjele. Ažurirajte ih da biste pokrenuli sinkronizaciju.</translation>
+<translation id="5738385766833540397">Upravljajte načinom na koji primate upozorenja o sniženju cijena za proizvode koje pratite</translation>
 <translation id="5738887413654608789">To vam omogućuje da otkrijete relevantne web-stranice na temelju svojeg okruženja.</translation>
 <translation id="5758631781033351321">Ovdje ćete pronaći svoj popis za čitanje</translation>
 <translation id="5765456154762864099">Izbornik → Postavke → Zadani preglednik</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
index 26a0d1c..e27b0e8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Keresés a következőre a Chrome-ban: ${searchPhrase}</translation>
 <translation id="1242044645101871359">Bejelentkezés újra</translation>
 <translation id="1254117744268754948">Mappa kiválasztása</translation>
+<translation id="1258491128795710625">Újdonságok</translation>
 <translation id="1265739287306757398">További információ</translation>
 <translation id="1272079795634619415">Leállítás</translation>
 <translation id="1275718070701477396">Kijelölve</translation>
@@ -384,6 +385,7 @@
 <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="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>
@@ -563,6 +565,7 @@
 <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="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>
 <translation id="5758631781033351321">Itt láthatja majd az olvasólistáját</translation>
 <translation id="5765456154762864099">Menü → Beállítások → Alapértelmezett böngésző</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
index 8af9963..ad24fed 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Որոնեք ${searchPhrase} Chrome-ում</translation>
 <translation id="1242044645101871359">Նորից մուտք գործեք</translation>
 <translation id="1254117744268754948">Պանակի ընտրում</translation>
+<translation id="1258491128795710625">Նորություններ</translation>
 <translation id="1265739287306757398">Իմանալ ինչպես</translation>
 <translation id="1272079795634619415">Դադարեցնել</translation>
 <translation id="1275718070701477396">Ընտրված</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Կազմակերպության կանոնների համաձայն՝ դուք պետք է օգտագործեք ինկոգնիտո ռեժիմը</translation>
 <translation id="1323735185997015385">Ջնջել</translation>
 <translation id="132683371494960526">Կրկնակի հպեք՝ վերադաս պանակը փոխելու համար:</translation>
+<translation id="1335348992705722518">Կառավարել կարգավորումները…</translation>
 <translation id="1340643665687018190">Փակել ընտրացանկը</translation>
 <translation id="1358214951266274152">Անցեք ձեր պատճենաց հասցեով</translation>
 <translation id="1360432990279830238">Դուրս գրվե՞լ և անջատել համաժամացումը</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Տեղադրել և որոնել</translation>
 <translation id="4223967053752765281">Ձեր կազմակերպությունն անջատել է դիտարկիչում մուտք գործելու հնարավորությունը։ Դուք նախկինի պես կարող եք տեսնել ձեր էջանիշները, պատմությունը, գաղտնաբառերն ու մյուս կարգավորումները այս սարքում։ Սակայն ձեր կատարած փոփոխությունները չեն համաժամացվի հաշվի հետ։</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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Ներեցեք, ձեր հաշիվ մուտք գործելիս առաջացել է խնդիր:</translation>
 <translation id="5731784586962650619">Գաղտնաբառեր այլ հավելվածներում</translation>
 <translation id="5737974891429562743">Հաշվի մուտքի տվյալները հնացած են: Համաժամացումը սկսելու համար թարմացրեք դրանք:</translation>
+<translation id="5738385766833540397">Նշեք, թե ինչպես եք ուզում ստանալ այն ապրանքների գների իջեցման մասին ծանուցումները, որոնք հետագծում եք</translation>
 <translation id="5738887413654608789">Թույլ է տալիս գտնել ձեր տեղադրությանը համապատասխանող վեբ էջեր:</translation>
 <translation id="5758631781033351321">Ձեր ընթերցանության ցանկը կգտնեք այստեղ</translation>
 <translation id="5765456154762864099">Ընտրացանկ → Կարգավորումներ → Կանխադրված դիտարկիչ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 72ae13f..916a5b6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Telusuri ${searchPhrase} di Chrome</translation>
 <translation id="1242044645101871359">Login Lagi</translation>
 <translation id="1254117744268754948">Pilih Folder</translation>
+<translation id="1258491128795710625">Yang Baru</translation>
 <translation id="1265739287306757398">Pelajari Caranya</translation>
 <translation id="1272079795634619415">Berhenti</translation>
 <translation id="1275718070701477396">Dipilih</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Maaf, terjadi error saat masuk ke akun Anda.</translation>
 <translation id="5731784586962650619">Sandi di Aplikasi Lain</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>
 <translation id="5758631781033351321">Daftar bacaan Anda akan ditampilkan di sini</translation>
 <translation id="5765456154762864099">Menu → Setelan → Browser Default</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb
index fd8caf9..cb65539 100644
--- a/ios/chrome/app/strings/resources/ios_strings_is.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Leita að ${searchPhrase} í Chrome</translation>
 <translation id="1242044645101871359">Skrá inn aftur</translation>
 <translation id="1254117744268754948">Velja möppu</translation>
+<translation id="1258491128795710625">Nýjungar</translation>
 <translation id="1265739287306757398">Kynntu þér hvernig</translation>
 <translation id="1272079795634619415">Stöðva</translation>
 <translation id="1275718070701477396">Valið</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Fyrirtækið þitt krefst huliðsstillingar</translation>
 <translation id="1323735185997015385">Eyða</translation>
 <translation id="132683371494960526">Ýttu tvisvar til að breyta yfirmöppu.</translation>
+<translation id="1335348992705722518">Stjórna stillingum...</translation>
 <translation id="1340643665687018190">Loka valmynd</translation>
 <translation id="1358214951266274152">Opna tengil sem þú afritaðir</translation>
 <translation id="1360432990279830238">Skrá út og slökkva á samstillingu?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Líma og leita</translation>
 <translation id="4223967053752765281">Fyrirtækið þitt slökkti á innskráningu. Þú getur áfram séð bókamerki, feril, aðgangsorð og aðrar stillingar í þessu tæki. Breytingar verða ekki samstilltar við reikninginn þinn.</translation>
 <translation id="4233831822770018312">Breyta heimildum</translation>
+<translation id="4236584471598725073">Vaktar verð</translation>
 <translation id="4237377247299956313">Ýttu á <ph name="BEGIN_BOLD" />Sjálfgefið vafraforrit<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Sláðu inn aðgangsorð</translation>
 <translation id="4249955472157341256">Raða eftir nýjasta</translation>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Því miður kom upp vandamál við að skrá þig inn á reikninginn.</translation>
 <translation id="5731784586962650619">Aðgangsorð í öðrum tækjum</translation>
 <translation id="5737974891429562743">Innskráningarupplýsingar reikningsins eru úreltar. Uppfærðu þær til að hefja samstillingu.</translation>
+<translation id="5738385766833540397">Stjórnaðu því hvernig þú færð tilkynningar um verðlækkanir á vörum sem þú vaktar</translation>
 <translation id="5738887413654608789">Þetta gerir þér kleift að finna viðeigandi vefsíður út frá nánasta umhverfi þínu.</translation>
 <translation id="5758631781033351321">Þú finnur leslistann þinn hér</translation>
 <translation id="5765456154762864099">Valmynd → Stillingar → Sjálfgefinn vafri</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb
index 3f6806d29..c2d3edd 100644
--- a/ios/chrome/app/strings/resources/ios_strings_it.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Cerca ${searchPhrase} in Chrome</translation>
 <translation id="1242044645101871359">Accedi di nuovo</translation>
 <translation id="1254117744268754948">Scegli cartella</translation>
+<translation id="1258491128795710625">Novità</translation>
 <translation id="1265739287306757398">Scopri come</translation>
 <translation id="1272079795634619415">Interrompi</translation>
 <translation id="1275718070701477396">Selezionato</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">Incolla e cerca</translation>
 <translation id="4223967053752765281">La tua organizzazione ha disattivato l'accesso. Puoi trovare ancora i tuoi preferiti, la cronologia, le password e altre impostazioni su questo dispositivo. Le eventuali modifiche apportate non verranno sincronizzate con il tuo account.</translation>
 <translation id="4233831822770018312">Modifica autorizzazioni</translation>
+<translation id="4236584471598725073">Monitoraggio del prezzo</translation>
 <translation id="4237377247299956313">Tocca <ph name="BEGIN_BOLD" />App browser predefinita<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Inserisci passphrase</translation>
 <translation id="4249955472157341256">Ordina per Più recenti</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Spiacenti, problema durante l'accesso all'account.</translation>
 <translation id="5731784586962650619">Password in altre app</translation>
 <translation id="5737974891429562743">I dati di accesso dell'account sono obsoleti. Aggiorna per avviare la sincronizzazione.</translation>
+<translation id="5738385766833540397">Gestisci la modalità di ricezione degli avvisi relativi ai cali di prezzo dei prodotti monitorati</translation>
 <translation id="5738887413654608789">Puoi trovare pagine web pertinenti basate sui dintorni.</translation>
 <translation id="5758631781033351321">Qui troverai il tuo elenco di lettura</translation>
 <translation id="5765456154762864099">Menu → Impostazioni → Browser predefinito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
index 4122c3f4..59792e2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">‏חיפוש ${searchPhrase} ב-Chrome</translation>
 <translation id="1242044645101871359">כניסה חוזרת</translation>
 <translation id="1254117744268754948">בחירת תיקייה</translation>
+<translation id="1258491128795710625">מה חדש</translation>
 <translation id="1265739287306757398">איך עושים זאת?</translation>
 <translation id="1272079795634619415">הפסקה</translation>
 <translation id="1275718070701477396">נבחר</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">מצטערים, אירעה בעיה בכניסה לחשבון שלך.</translation>
 <translation id="5731784586962650619">סיסמאות ששמורות באפליקציות אחרות</translation>
 <translation id="5737974891429562743">פרטי הכניסה לחשבון אינם עדכניים. יש לעדכן כדי להפעיל את הסנכרון.</translation>
+<translation id="5738385766833540397">ניהול של אופן קבלת ההתראות על הנחות לגבי מוצרים במעקב</translation>
 <translation id="5738887413654608789">‏תקשורת Bluetooth מאפשרת לך למצוא אתרי אינטרנט רלוונטיים לפי המיקום שלך.</translation>
 <translation id="5758631781033351321">רשימת הקריאה זמינה כאן</translation>
 <translation id="5765456154762864099">תפריט ← הגדרות ← דפדפן ברירת המחדל</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
index d38a42f..42ebaee 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome で ${searchPhrase} を検索</translation>
 <translation id="1242044645101871359">もう一度ログインしてください</translation>
 <translation id="1254117744268754948">フォルダの選択</translation>
+<translation id="1258491128795710625">最新情報</translation>
 <translation id="1265739287306757398">詳細</translation>
 <translation id="1272079795634619415">中止</translation>
 <translation id="1275718070701477396">選択中</translation>
@@ -562,6 +563,7 @@
 <translation id="5728700505257787410">アカウントへのログイン中に問題が発生しました。</translation>
 <translation id="5731784586962650619">他のアプリのパスワード</translation>
 <translation id="5737974891429562743">アカウントのログイン情報が古くなっています。同期を開始するには更新してください。</translation>
+<translation id="5738385766833540397">トラッキングしている商品の値下げアラートを受け取る方法を管理します</translation>
 <translation id="5738887413654608789">この機能を使用すると、周囲で発信されているデータを受信して関連のあるウェブページを表示することができます。</translation>
 <translation id="5758631781033351321">リーディング リストはここに表示されます</translation>
 <translation id="5765456154762864099">メニュー → 設定 → 既定のブラウザ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
index 4b994ad..384206a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">მოიძიეთ ${searchPhrase} Chrome-ში</translation>
 <translation id="1242044645101871359">შედით ხელახლა</translation>
 <translation id="1254117744268754948">აირჩიეთ საქაღალდე</translation>
+<translation id="1258491128795710625">სიახლეები</translation>
 <translation id="1265739287306757398">შეიტყვეთ როგორ</translation>
 <translation id="1272079795634619415">შეწყვეტა</translation>
 <translation id="1275718070701477396">შერჩეული</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">თქვენი ორგანიზაცია მოითხოვს ინკოგნიტო რეჟიმის გამოყენებას</translation>
 <translation id="1323735185997015385">წაშლა</translation>
 <translation id="132683371494960526">ზედა საქაღალდის შესაცვლელად, შეეხეთ ორმაგად.</translation>
+<translation id="1335348992705722518">პარამეტრების მართვა...</translation>
 <translation id="1340643665687018190">მენიუს დახურვა</translation>
 <translation id="1358214951266274152">თქვენ მიერ კოპირებულ ბმულზე გადასვლა</translation>
 <translation id="1360432990279830238">გსურთ გამოსვლა და სინქრონიზაციის გამორთვა?</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">სამწუხაროდ, ანგარიშზე შესვლისას პრობლემა წარმოიქმნა.</translation>
 <translation id="5731784586962650619">პაროლები სხვა აპებში</translation>
 <translation id="5737974891429562743">ანგარიშში შესვლის დეტალები მოძველდა. სინქრონიზაციის დასაწყებად, განაახლეთ ისინი.</translation>
+<translation id="5738385766833540397">მართეთ, როგორ იღებთ გაფრთხილებებს თქვენ მიერ თვალმიდევნებული პროდუქტების ფასების კლების შესახებ</translation>
 <translation id="5738887413654608789">საშუალებას გაძლევთ, აღმოაჩინოთ თქვენს გარშემო არსებულ ობიექტებთან დაკავშირებული ვებგვერდები.</translation>
 <translation id="5758631781033351321">აქ თქვენს საკითხავ სიას იპოვით</translation>
 <translation id="5765456154762864099">მენიუ → პარამეტრები → ნაგულისხმევი ბრაუზერი</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
index 1894ae3..f9988f5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome браузерінен ${searchPhrase} іздеу</translation>
 <translation id="1242044645101871359">Қайта кіріңіз</translation>
 <translation id="1254117744268754948">Қалтаны таңдау</translation>
+<translation id="1258491128795710625">Жаңалықтар</translation>
 <translation id="1265739287306757398">Әдісін білу</translation>
 <translation id="1272079795634619415">Тоқтату</translation>
 <translation id="1275718070701477396">Таңдалған</translation>
@@ -383,6 +384,7 @@
 <translation id="4187450337729239226">Қою және іздеу</translation>
 <translation id="4223967053752765281">Ұйымыңыз аккаунтқа кіруді өшірді. Осы құрылғыдағы барлық бетбелгіні, тарихты, құпия сөзді және басқа да параметрлерді көре аласыз. Егер өзгерістер енгізсеңіз, олар аккаунтыңызбен синхрондалмайды.</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>
@@ -562,6 +564,7 @@
 <translation id="5728700505257787410">Кешіріңіз, аккаунтыңызға кіруде ақау пайда болды.</translation>
 <translation id="5731784586962650619">Басқа қолданбалардағы құпия сөздер</translation>
 <translation id="5737974891429562743">Аккаунтқа кіру мәліметтері ескірген. Синхрондауды бастау үшін оларды жаңартыңыз.</translation>
+<translation id="5738385766833540397">Қадағалайтын тауарлар бағасының түсуі туралы хабарландырулар алуды реттеңіз.</translation>
 <translation id="5738887413654608789">Бұл – айналаңыздың негізінде сәйкес веббеттерді анықтауға мүмкіндік береді.</translation>
 <translation id="5758631781033351321">Оқу тізімі осы жерге шығады</translation>
 <translation id="5765456154762864099">Мәзір → Параметрлер → Әдепкі браузер</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb
index 22fd0e8..6952e38 100644
--- a/ios/chrome/app/strings/resources/ios_strings_km.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">ស្វែងរក ${searchPhrase} នៅក្នុង Chrome</translation>
 <translation id="1242044645101871359">ចូលគណនីម្តងទៀត</translation>
 <translation id="1254117744268754948">ជ្រើសរើសថតឯកសារ</translation>
+<translation id="1258491128795710625">អ្វីដែលថ្មី</translation>
 <translation id="1265739287306757398">ស្វែងយល់​អំពី​របៀប</translation>
 <translation id="1272079795634619415">ឈប់</translation>
 <translation id="1275718070701477396">បានជ្រើសរើស</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">សូមទោស មានបញ្ហាក្នុងការចូលគណនីរបស់អ្នក។</translation>
 <translation id="5731784586962650619">ពាក្យសម្ងាត់​នៅក្នុង​កម្មវិធី​ផ្សេងទៀត</translation>
 <translation id="5737974891429562743">ព័ត៌មានលម្អិតពីការចូលគណនីហួសសម័យហើយ។ សូមអាប់ដេតដើម្បីចាប់ផ្តើមសមកាលកម្ម។</translation>
+<translation id="5738385766833540397">គ្រប់គ្រង​របៀប​ដែល​អ្នក​ទទួល​បាន​ការជូនដំណឹង​អំពី​ការធ្លាក់ថ្លៃ​សម្រាប់​ផលិតផល​ដែល​អ្នក​តាមដាន</translation>
 <translation id="5738887413654608789">វាអនុញ្ញាតឲ្យអ្នករកមើលគេហទំព័រដែលពាក់ព័ន្ធដោយផ្អែកលើរបស់ជុំវិញខ្លួនអ្នក។</translation>
 <translation id="5758631781033351321">អ្នក​នឹង​ឃើញ​បញ្ជីអាន​របស់អ្នក​នៅទីនេះ</translation>
 <translation id="5765456154762864099">ម៉ឺនុយ → ការ​កំណត់ → កម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើម</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
index 3986d40..dbfe135 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome ನಲ್ಲಿ ${searchPhrase} ಹುಡುಕಿ</translation>
 <translation id="1242044645101871359">ಪುನಃ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
 <translation id="1254117744268754948">ಫೋಲ್ಡರ್ ಆರಿಸಿ</translation>
+<translation id="1258491128795710625">ಹೊಸತೇನಿದೆ</translation>
 <translation id="1265739287306757398">ಹೇಗೆ ಎಂಬುದನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ</translation>
 <translation id="1272079795634619415">ನಿಲ್ಲಿಸಿ</translation>
 <translation id="1275718070701477396">ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ.</translation>
 <translation id="5731784586962650619">ಇತರ ಆ್ಯಪ್‌ಗಳಲ್ಲಿನ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು</translation>
 <translation id="5737974891429562743">ಖಾತೆಯ ಸೈನ್-ಇನ್ ವಿವರಗಳು ಹಳೆಯದಾಗಿವೆ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ಅಪ್‌ಡೇಟ್ ಮಾಡಿ.</translation>
+<translation id="5738385766833540397">ನೀವು ಟ್ರ್ಯಾಕ್ ಮಾಡುವ ಉತ್ಪನ್ನಗಳ ಬೆಲೆ ಕುಸಿತದ ಎಚ್ಚರಿಕೆಗಳನ್ನು ನೀವು ಹೇಗೆ ಸ್ವೀಕರಿಸುತ್ತೀರಿ ಎಂಬುದನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="5738887413654608789">ನಿಮ್ಮ ಸುತ್ತಲಿನಲ್ಲಿರುವುದನ್ನು ಆಧರಿಸಿ, ಸಂಬಂಧಿಸಿದ ವೆಬ್ ಪುಟಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಇದು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.</translation>
 <translation id="5758631781033351321">ನಿಮ್ಮ ಓದುವ ಪಟ್ಟಿಯನ್ನು ಇಲ್ಲಿ ಕಾಣಬಹುದು</translation>
 <translation id="5765456154762864099">ಮೆನು → ಸೆಟ್ಟಿಂಗ್‌ಗಳು → ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
index d247ff16..02a6672 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome에서 ${searchPhrase} 검색</translation>
 <translation id="1242044645101871359">다시 로그인</translation>
 <translation id="1254117744268754948">폴더 선택</translation>
+<translation id="1258491128795710625">새로운 기능</translation>
 <translation id="1265739287306757398">자세히 알아보기</translation>
 <translation id="1272079795634619415">중지</translation>
 <translation id="1275718070701477396">선택됨</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">죄송합니다. 계정에 로그인하는 중에 문제가 발생했습니다.</translation>
 <translation id="5731784586962650619">다른 앱의 비밀번호</translation>
 <translation id="5737974891429562743">계정 로그인 세부정보가 오래되었습니다. 업데이트하여 동기화를 시작하세요.</translation>
+<translation id="5738385766833540397">추적 중인 제품의 가격 인하 알림을 받을 방법 관리</translation>
 <translation id="5738887413654608789">이를 통해 사용자의 주변 환경을 토대로 관련 웹 페이지를 발견할 수 있습니다.</translation>
 <translation id="5758631781033351321">여기에서 읽기 목록을 확인할 수 있습니다</translation>
 <translation id="5765456154762864099">메뉴 → 설정 → 기본 브라우저</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
index 378d65e..c2d02557 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">${searchPhrase} Chrome'до издөө</translation>
 <translation id="1242044645101871359">Кайра кириңиз</translation>
 <translation id="1254117744268754948">Куржун тандоо</translation>
+<translation id="1258491128795710625">Эмне жаңылык</translation>
 <translation id="1265739287306757398">Үйрөнүп алыңыз</translation>
 <translation id="1272079795634619415">Токтотуу</translation>
 <translation id="1275718070701477396">Тандалган</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Уюмуңуз жашыруун режимди колдонууну талап кылат</translation>
 <translation id="1323735185997015385">Жок кылуу</translation>
 <translation id="132683371494960526">Түпкү куржунду өзгөртүү үчүн эки жолу таптап коюңуз.</translation>
+<translation id="1335348992705722518">Тууралоо...</translation>
 <translation id="1340643665687018190">Менюну жабуу</translation>
 <translation id="1358214951266274152">Көчүрүп алган шилтеме менен өтүңүз</translation>
 <translation id="1360432990279830238">Аккаунттан чыгып, шайкештирүүнү өчүрөсүзбү?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Чаптоо жана издөө</translation>
 <translation id="4223967053752765281">Уюмуңуз кирүү аракетин өчүрүп койду. Ушул түзмөгүңүздө кыстармаларды, таржымалды, сырсөздөрдү жана башка жөндөөлөрүңүздү дагы деле көрүп турасыз. Эгер өзгөртүүлөрдү киргизсеңиз, алар аккаунтуңузга шайкештирилбейт.</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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Кечиресиз, каттоо эсебиңзге кирип жаткнда көйгй келип чыкты.</translation>
 <translation id="5731784586962650619">Башка колдонмолордогу сырсөздөр</translation>
 <translation id="5737974891429562743">Аккаунтка кирүү тууралуу маалымат эскирип калды. Шайкештирип баштоо үчүн маалыматты жаңыртыңыз.</translation>
+<translation id="5738385766833540397">Көз салынган товарлардын баасынын төмөндөшү тууралуу эскертүүлөрдүн алынышын тескеңиз</translation>
 <translation id="5738887413654608789">Бул айланаңыздагы колдонмолордун негизинде ылайыктуу веб беттерди таап берет.</translation>
 <translation id="5758631781033351321">Окула тургандардын тизмесин ушул жерден табасыз</translation>
 <translation id="5765456154762864099">Меню → Жөндөөлөр → Демейки серепчи</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
index 7ae2d51..70638b4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">ຊອກຫາ ${searchPhrase} ໃນ Chrome</translation>
 <translation id="1242044645101871359">ເຂົ້າສູ່ລະບົບອີກເທື່ອໜຶ່ງ</translation>
 <translation id="1254117744268754948">ເລືອກ​ໂຟລເດີ</translation>
+<translation id="1258491128795710625">ມີຫຍັງໃໝ່</translation>
 <translation id="1265739287306757398">ສຶກສາວິທີການ</translation>
 <translation id="1272079795634619415">ຢຸດ</translation>
 <translation id="1275718070701477396">​ເລືອກແລ້ວ</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">ອົງການຂອງທ່ານກຳນົດໃຫ້ໃຊ້ໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ</translation>
 <translation id="1323735185997015385">ລຶບ</translation>
 <translation id="132683371494960526">ແຕະສອງຄັ້ງເພື່ອປ່ຽນໂຟນເດີແມ່.</translation>
+<translation id="1335348992705722518">ຈັດການການຕັ້ງຄ່າ...</translation>
 <translation id="1340643665687018190">ປິດ​ເມ​ນູ</translation>
 <translation id="1358214951266274152">ເຂົ້າເບິ່ງລິ້ງທີ່ທ່ານສຳເນົາ</translation>
 <translation id="1360432990279830238">ອອກຈາກະລະບົບ ແລະ ປິດການຊິ້ງຂໍ້ມູນບໍ?</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">ຂໍ​ອະ​ໄພ​, ມີ​ບັນ​ຫາ​ການເຂົ້າ​ສູ່​ບັນ​ຊີ​ລະ​ບົບ​ຂອງ​ທ່ານ.</translation>
 <translation id="5731784586962650619">ລະຫັດຜ່ານໃນແອັບອື່ນໆ</translation>
 <translation id="5737974891429562743">ລາຍລະອຽດການເຂົ້າສູ່ລະບົບບັນຊີເກົ່າແລ້ວ. ອັບເດດເພື່ອເລີ່ມການຊິ້ງຂໍ້ມູນ.</translation>
+<translation id="5738385766833540397">ຈັດການວິທີທີ່ທ່ານຮັບການແຈ້ງເຕືອນການຫຼຸດລາຄາສຳລັບສິນຄ້າທີ່ທ່ານຕິດຕາມ</translation>
 <translation id="5738887413654608789">ນີ້ໃຫ້ທ່ານຄົ້ນພົບໜ້າເວັບທີ່ກ່ຽວຂ້ອງອີງຕາມສິ່ງທີ່ຢູ່ອ້ອມຮອບຕົວທ່ານ.</translation>
 <translation id="5758631781033351321">ທ່ານຈະເຫັນລາຍການອື່ນຂອງທ່ານຢູ່ບ່ອນນີ້</translation>
 <translation id="5765456154762864099">ເມນູ → ການຕັ້ງຄ່າ → ໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
index a8f1935..5261574 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Ieškoti pagal užklausą „${searchPhrase}“ naršyklėje „Chrome“</translation>
 <translation id="1242044645101871359">Prisijungimas dar kartą</translation>
 <translation id="1254117744268754948">Pasirinkti aplanką</translation>
+<translation id="1258491128795710625">Kas naujo</translation>
 <translation id="1265739287306757398">Sužinoti, kaip tai padaryti</translation>
 <translation id="1272079795634619415">Sustabdyti</translation>
 <translation id="1275718070701477396">Pasirinkta</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Apgailestaujame, prisijungiant prie paskyros kilo problema.</translation>
 <translation id="5731784586962650619">Kitų programų slaptažodžiai</translation>
 <translation id="5737974891429562743">Išsami paskyros prisijungimo informacija pasenusi. Atnaujinkite, kad pradėtumėte sinchronizuoti.</translation>
+<translation id="5738385766833540397">Tvarkykite, kaip gausite įspėjimus apie sumažintas stebimų produktų kainas</translation>
 <translation id="5738887413654608789">Tai naudodami galite atrasti aktualių tinklalapių, kurie teikiami atsižvelgiant į aplinką.</translation>
 <translation id="5758631781033351321">Čia rasite skaitymo sąrašą</translation>
 <translation id="5765456154762864099">Meniu → Nustatymai → Numatytoji naršyklė</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
index 9c75917..dd76945 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Meklēt “${searchPhrase}” pārlūkprogrammā Chrome</translation>
 <translation id="1242044645101871359">Pierakstieties vēlreiz</translation>
 <translation id="1254117744268754948">Mapes izvēle</translation>
+<translation id="1258491128795710625">Jaunumi</translation>
 <translation id="1265739287306757398">Uzzināt, kā to izdarīt</translation>
 <translation id="1272079795634619415">Apturēt</translation>
 <translation id="1275718070701477396">Atlasīta</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Saskaņā ar jūsu organizācijas politiku jums ir jāizmanto inkognito režīms</translation>
 <translation id="1323735185997015385">Dzēst</translation>
 <translation id="132683371494960526">Veiciet dubultskārienu, lai mainītu vecākmapi.</translation>
+<translation id="1335348992705722518">Pārvaldīt iestatījumus…</translation>
 <translation id="1340643665687018190">Aizvērt izvēlni</translation>
 <translation id="1358214951266274152">Apmeklēt kopēto saiti</translation>
 <translation id="1360432990279830238">Izrakstīties un izslēgt sinhronizēšanu?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Ielīmēt un meklēt</translation>
 <translation id="4223967053752765281">Jūsu organizācija izslēdza pierakstīšanos. Šajā ierīcē joprojām varat skatīt savas grāmatzīmes, vēsturi, paroles un citus iestatījumus. Ja veiksiet izmaiņas, tās netiks sinhronizētas ar jūsu kontu.</translation>
 <translation id="4233831822770018312">Atļauju rediģēšana</translation>
+<translation id="4236584471598725073">Notiek cenas izsekošana</translation>
 <translation id="4237377247299956313">Pieskarieties vienumam <ph name="BEGIN_BOLD" />Noklusējuma pārlūka lietotne<ph name="END_BOLD" />.</translation>
 <translation id="424315890655130736">Ieejas frāzes ievade</translation>
 <translation id="4249955472157341256">Kārtot, sākot ar jaunāko saturu</translation>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Diemžēl, pierakstoties kontā, radās problēma.</translation>
 <translation id="5731784586962650619">Paroles citās lietotnēs</translation>
 <translation id="5737974891429562743">Konta pieteikuminformācija ir novecojusi. Atjauniniet to, lai sāktu sinhronizāciju.</translation>
+<translation id="5738385766833540397">Pārvaldiet, kā saņemt paziņojumus par izsekoto produktu cenu kritumu</translation>
 <translation id="5738887413654608789">Tādējādi varat atklāt atbilstošas tīmekļa lapas, pamatojoties uz datiem par jūsu apkārtni.</translation>
 <translation id="5758631781033351321">Šeit varēsiet skatīt savu lasīšanas sarakstu</translation>
 <translation id="5765456154762864099">Izvēlne → Iestatījumi → Noklusējuma pārlūks</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
index 50281ce..73aa82f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Прифати и продолжи</translation>
 <translation id="110724200315609752">Префрлете се на отворениот прозорец</translation>
 <translation id="1112015203684611006">Печатењето не успеа.</translation>
+<translation id="1118569444314402022">Добре дојдовте назад, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Создај нова картичка.</translation>
 <translation id="1126809382673880764">Не ве заштитува од опасни веб-сајтови, преземања и екстензии. Сѐ уште ќе имате заштита со „Безбедно прелистување“, каде што е достапно, во другите услуги на Google, како Gmail и „Пребарување“.</translation>
 <translation id="1135212215217513471">Преземете ја Chrome за iOS</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Пребарајте ${searchPhrase} во Chrome</translation>
 <translation id="1242044645101871359">Најавете се повторно</translation>
 <translation id="1254117744268754948">Одбери Папка</translation>
+<translation id="1258491128795710625">Што има ново</translation>
 <translation id="1265739287306757398">Дознајте како</translation>
 <translation id="1272079795634619415">Запри</translation>
 <translation id="1275718070701477396">Избран</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">Синхронизацијата престана да работи.</translation>
 <translation id="1377321085342047638">Број на картичка</translation>
 <translation id="1383876407941801731">Барај</translation>
+<translation id="138618066238211776">Продолжете како <ph name="USER_NAME" /></translation>
 <translation id="1400642268715879018">Минатите 4 седмици</translation>
 <translation id="1404330357948037222">Одјавени сте</translation>
 <translation id="1407135791313364759">Отвори ги сите</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Продолжи со изменување</translation>
 <translation id="2434405374328098816">Веќе зачувавте лозинка за „<ph name="USERNAME" />“ на <ph name="WEBSITE" /></translation>
 <translation id="2435457462613246316">Прикажи ја лозинката</translation>
+<translation id="2461070143328828326">Поставки за лозинка</translation>
 <translation id="2469960372084740698">Да се исклучи „Безбедно прелистување“?</translation>
 <translation id="2473876017985765807">Веќе зачувавте лозинка за <ph name="WEBSITE" /></translation>
 <translation id="2476359652512522418">Не е избрано</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Обележи како непрочитано</translation>
 <translation id="371230970611282515">Предвидува опасни настани и ве предупредува пред да се случат.</translation>
 <translation id="37207012422556617">Пребарувања во тренд</translation>
+<translation id="3726360487031500941">Најавете се повторно на вашата сметка <ph name="USER_NAME" /></translation>
 <translation id="3740397331642243698">Ги отвора внесените URL-адреси во Google Chrome во „Инкогнито“.</translation>
 <translation id="3762232513783804601">Создаден за вашиот iPad</translation>
 <translation id="3771033907050503522">Инкогнито картички</translation>
@@ -564,6 +569,7 @@
 <translation id="5728700505257787410">Се извинуваме, настана проблем при најавување на сметката.</translation>
 <translation id="5731784586962650619">Лозинки во други апликации</translation>
 <translation id="5737974891429562743">Деталите за најавување на сметката се застарени. Ажурирајте ги за да започне синхронизацијата.</translation>
+<translation id="5738385766833540397">Управувајте како ќе добивате известувања за намалени цени за производите што ги следите</translation>
 <translation id="5738887413654608789">Ова ви овозможува да откриете релевантни веб-страници врз основа на вашата околина.</translation>
 <translation id="5758631781033351321">Списокот за читање ќе го најдете тука</translation>
 <translation id="5765456154762864099">Мени → Поставки → Стандарден прелистувач</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
index 118ccbdb8..05199c44 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome-ൽ ${searchPhrase} തിരയുക</translation>
 <translation id="1242044645101871359">വീണ്ടും സൈൻ ഇൻ ചെയ്യുക</translation>
 <translation id="1254117744268754948">ഫോൾഡർ തിരഞ്ഞെടുക്കുക</translation>
+<translation id="1258491128795710625">പുതിയതെന്താണ്</translation>
 <translation id="1265739287306757398">എങ്ങനെയെന്നറിയുക</translation>
 <translation id="1272079795634619415">നിര്‍ത്തുക</translation>
 <translation id="1275718070701477396">തിരഞ്ഞെടുത്തു</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">ക്ഷമിക്കണം, നിങ്ങളുടെ അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്യുന്നതിൽ ഒരു പ്രശ്‌നമുണ്ടായി.</translation>
 <translation id="5731784586962650619">മറ്റ് ആപ്പുകളിലെ പാസ്‌വേഡുകൾ</translation>
 <translation id="5737974891429562743">അക്കൗണ്ട് സൈൻ ഇൻ വിശദാംശങ്ങൾ കാലഹരണപ്പെട്ടു. സമന്വയിപ്പിക്കാൻ തുടങ്ങുന്നതിന് അപ്‌ഡേറ്റ് ചെയ്യുക.</translation>
+<translation id="5738385766833540397">നിങ്ങൾ ട്രാക്ക് ചെയ്യുന്ന ഉൽപ്പന്നങ്ങളുടെ വിലക്കുറവുമായി ബന്ധപ്പെട്ട അറിയിപ്പുകൾ ലഭിക്കുന്ന രീതി മാനേജ് ചെയ്യുക</translation>
 <translation id="5738887413654608789">നിങ്ങളുടെ ചുറ്റുമുള്ള കാര്യങ്ങളെ അടിസ്ഥാനമാക്കി ആനുകാലികമായ വെബ് പേജുകൾ കണ്ടെത്താൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.</translation>
 <translation id="5758631781033351321">നിങ്ങളുടെ വായനാ ലിസ്‌റ്റ് ഇവിടെ കാണാം</translation>
 <translation id="5765456154762864099">മെനു → ക്രമീകരണം → ഡിഫോൾട്ട് ബ്രൗസർ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
index 3966a41..96bc2a73 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Хүлээн авах &amp; Үргэлжлүүлэх</translation>
 <translation id="110724200315609752">Нээлттэй цонх руу сэлгэх</translation>
 <translation id="1112015203684611006">Хэвлэж чадсангүй.</translation>
+<translation id="1118569444314402022">Дахин тавтай морилно уу, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Шинэ таб үүсгэнэ үү.</translation>
 <translation id="1126809382673880764">Таныг аюултай вебсайт, таталт болон өргөтгөлөөс хамгаалахгүй. Гэхдээ та Аюулгүй үзэх хамгаалалтыг Gmail, Хайлт зэрэг Google-н боломжтой бусад үйлчилгээнд авсан хэвээр байна.</translation>
 <translation id="1135212215217513471">iOS-т зориулсан Chrome-г авах</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Chrome-с ${searchPhrase}-г хайх</translation>
 <translation id="1242044645101871359">Дахин нэвтэрнэ үү</translation>
 <translation id="1254117744268754948">Хавтсыг сонгох</translation>
+<translation id="1258491128795710625">Шинэ юм юу байна</translation>
 <translation id="1265739287306757398">Заавар харах</translation>
 <translation id="1272079795634619415">Зогс</translation>
 <translation id="1275718070701477396">Сонгогдсон</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">Синк ажиллахаа больсон байна.</translation>
 <translation id="1377321085342047638">Картын дугаар</translation>
 <translation id="1383876407941801731">Хайлт</translation>
+<translation id="138618066238211776"><ph name="USER_NAME" />-р үргэлжлүүлэх</translation>
 <translation id="1400642268715879018">Сүүлийн 4 долоо хоног</translation>
 <translation id="1404330357948037222">Та гарлаа</translation>
 <translation id="1407135791313364759">Бүгдийг нээ</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Үргэлжлүүлэн засах</translation>
 <translation id="2434405374328098816">Та <ph name="WEBSITE" />-д аль хэдийн "<ph name="USERNAME" />"-н нууц үгийг хадгалсан</translation>
 <translation id="2435457462613246316">Нууц үг харуулах</translation>
+<translation id="2461070143328828326">Нууц үгний тохиргоо</translation>
 <translation id="2469960372084740698">Аюулгүй үзэхийг унтраах уу?</translation>
 <translation id="2473876017985765807">Та <ph name="WEBSITE" />-н нууц үгийг аль хэдийн хадгалсан</translation>
 <translation id="2476359652512522418">Сонгоогүй</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Уншаагүй болгож тэмдэглэх</translation>
 <translation id="371230970611282515">Аюултай үйл явдлын тухай урьдчилан таамаглаж, тохиолдохоос нь өмнө танд анхааруулга өгдөг.</translation>
 <translation id="37207012422556617">Тренд болж буй хайлт</translation>
+<translation id="3726360487031500941"><ph name="USER_NAME" /> бүртгэлдээ дахин нэвтэрнэ үү</translation>
 <translation id="3740397331642243698">Оруулсан URL-г Google Chrome дээр нууцлалтайгаар нээдэг.</translation>
 <translation id="3762232513783804601">Таны iPad-д зориулан бүтээсэн</translation>
 <translation id="3771033907050503522">Мэдээний нууцлалтай цонх</translation>
@@ -563,6 +568,7 @@
 <translation id="5728700505257787410">Уучлаарай, таны акаунт руу нэвтрэх үед алдаа гарсан байна.</translation>
 <translation id="5731784586962650619">Бусад апп дахь нууц үгнүүд</translation>
 <translation id="5737974891429562743">Бүртгэлийн нэвтрэх мэдээлэл хуучирсан байна. Синкийг эхлүүлэхийн тулд шинэчилнэ үү.</translation>
+<translation id="5738385766833540397">Та хянаж буй бүтээгдэхүүнүүдийнхээ үнэ хямдарсан талаарх сэрэмжлүүлгийг хэрхэн хүлээн авахаа удирдана уу</translation>
 <translation id="5738887413654608789">Та үүгээр ойролцоох хамааралтай веб хуудсыг олох боломжтой.</translation>
 <translation id="5758631781033351321">Та унших жагсаалтаа эндээс олох болно</translation>
 <translation id="5765456154762864099">Цэс → Тохиргоо → Өгөгдмөл хөтөч</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index 91af2ae..61b33ca4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome मध्ये ${searchPhrase} शोधा</translation>
 <translation id="1242044645101871359">पुन्हा साइन इन करा</translation>
 <translation id="1254117744268754948">फोल्डर निवडा</translation>
+<translation id="1258491128795710625">नवीन काय आहे</translation>
 <translation id="1265739287306757398">कसे ते जाणून घ्या</translation>
 <translation id="1272079795634619415">थांबा</translation>
 <translation id="1275718070701477396">निवडले</translation>
@@ -565,6 +566,7 @@
 <translation id="5728700505257787410">क्षमस्व, आपल्या खात्यामध्ये साइन इन करताना काहीतरी समस्या आली.</translation>
 <translation id="5731784586962650619">इतर अ‍ॅप्समधील पासवर्ड</translation>
 <translation id="5737974891429562743">खाते साइन-इन तपशील कालबाह्य झाले आहेत. सिंक सुरू करण्यासाठी अपडेट करा.</translation>
+<translation id="5738385766833540397">तुम्ही माग ठेवत असलेल्या उत्पादनांसाठी तुम्हाला किमतीमध्ये घट झाल्याच्या सूचना कशा मिळतात ते व्यवस्थापित करा</translation>
 <translation id="5738887413654608789">हे तुम्हाला आपल्या सभोवतालच्या गोष्टींवर आधारित संबंधित वेब पेज शोधू देते.</translation>
 <translation id="5758631781033351321">तुमची वाचन सूची तुम्हाला येथे सापडेल</translation>
 <translation id="5765456154762864099">मेनू → सेटिंग्ज → डीफॉल्ट ब्राउझर</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
index f518af3c..e2f1731 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Cari ${searchPhrase} dalam Chrome</translation>
 <translation id="1242044645101871359">Log Masuk Semula</translation>
 <translation id="1254117744268754948">Pilih Folder</translation>
+<translation id="1258491128795710625">Perkara Baharu</translation>
 <translation id="1265739287306757398">Ketahui Caranya</translation>
 <translation id="1272079795634619415">Berhenti</translation>
 <translation id="1275718070701477396">Dipilih</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Organisasi anda menghendaki Mod inkognito digunakan</translation>
 <translation id="1323735185997015385">Padam</translation>
 <translation id="132683371494960526">Ketik dua kali untuk menukar folder induk.</translation>
+<translation id="1335348992705722518">Urus Tetapan...</translation>
 <translation id="1340643665687018190">Tutup Menu</translation>
 <translation id="1358214951266274152">Lawati Pautan yang Disalin</translation>
 <translation id="1360432990279830238">Log keluar dan matikan penyegerakan?</translation>
@@ -383,6 +385,7 @@
 <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="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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Maaf, terdapat masalah untuk log masuk ke akaun anda.</translation>
 <translation id="5731784586962650619">Kata Laluan Dalam Apl Lain</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>
 <translation id="5758631781033351321">Anda dapat menemukan senarai bacaan anda di sini</translation>
 <translation id="5765456154762864099">Menu → Tetapan → Penyemak Imbas Lalai</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb
index b5b6989c..9adb0de 100644
--- a/ios/chrome/app/strings/resources/ios_strings_my.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome တွင် ${searchPhrase} ရှာရန်</translation>
 <translation id="1242044645101871359">ထပ်၍လက်မှတ်ထိုးဝင်ပါ</translation>
 <translation id="1254117744268754948">ဖိုလ်ဒါကို ရွေးရန်</translation>
+<translation id="1258491128795710625">အသစ်ပါဝင်မှုများ</translation>
 <translation id="1265739287306757398">လုပ်ပုံကို လေ့လာပါ</translation>
 <translation id="1272079795634619415">ရပ်ရန်</translation>
 <translation id="1275718070701477396">ရွေးထား</translation>
@@ -563,6 +564,7 @@
 <translation id="5728700505257787410">ဝမ်းနည်းပါသည်၊ သင့်အကောင့်သို့လက်မှတ်ထိုးဝင်ရာတွင် ပြဿနာတစ်ခုရှိနေသည်။</translation>
 <translation id="5731784586962650619">အခြားအက်ပ်များရှိ စကားဝှက်များ</translation>
 <translation id="5737974891429562743">အကောင့် လက်မှတ်ထိုးဝင်ခြင်း အသေးစိတ်အချက်အလက်များသည် ဟောင်းနေပါပြီ။ စတင်၍ စင့်ခ်ပြုလုပ်နိုင်ရန် အပ်ဒိတ်လုပ်ပါ။</translation>
+<translation id="5738385766833540397">သင်စောင့်ကြည့်နေသည့် ထုတ်ကုန်များအတွက် ဈေးကျသည့် သတိပေးချက်များ ရယူပုံကို စီမံနိုင်သည်</translation>
 <translation id="5738887413654608789">ဤနည်းဖြင့် သင့်ပတ်ဝန်းကျင်ကိုလိုက်၍ သက်ဆိုင်ရာအင်တာနက်စာမျက်နှာများကို ရှာဖွေနိုင်ပါသည်။</translation>
 <translation id="5758631781033351321">သင့်ဖတ်ရန်စာရင်းကို ဤနေရာတွင် ပြပါမည်</translation>
 <translation id="5765456154762864099">မီနူး → ဆက်တင်များ → မူရင်းဘရောင်ဇာ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
index ddeb487..5e881266 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome मा ${searchPhrase} खोज्नुहोस्</translation>
 <translation id="1242044645101871359">फेरि साइन इन गर्नुहोस्</translation>
 <translation id="1254117744268754948">फोल्डर रोज्नुहोस्</translation>
+<translation id="1258491128795710625">नयाँ के छ</translation>
 <translation id="1265739287306757398">कसरी गर्ने भनी सिक्नुहोस्</translation>
 <translation id="1272079795634619415">रोक्नुहोस्</translation>
 <translation id="1275718070701477396">चयन गरिएको</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">तपाईंको सङ्गठनको नीतिअनुसार तपाईंले इन्कोग्निटो मोड प्रयोग गर्नु पर्ने हुन्छ</translation>
 <translation id="1323735185997015385">मेट्नुहोस्</translation>
 <translation id="132683371494960526">मूल फोल्डरलाई परिवर्तन गर्न डबल ट्याप गर्नुहोस्।</translation>
+<translation id="1335348992705722518">सेटिङ मिलाउनुहोस्...</translation>
 <translation id="1340643665687018190">बन्द मेनु</translation>
 <translation id="1358214951266274152">तपाईंले प्रतिलिपि गरेको लिंकमा जानुहोस्</translation>
 <translation id="1360432990279830238">साइन आउट गरी सिंक निष्क्रिय पार्ने हो?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">पेस्ट गर्नुहोस् र खोज्नुहोस्</translation>
 <translation id="4223967053752765281">तपाईंको सङ्गठनले साइन इन गर्ने सुविधा अफ गरेको छ। तपाईं यो डिभाइसमा आफ्ना बुकमार्क, हिस्ट्री, पासवर्ड र अन्य सेटिङ देखिरहनु हुने छ। तपाईंले यी कुरा परिवर्तन गर्नुभयो भने ती परिवर्तन तपाईंको खातामा सिंक हुने छैनन्।</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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">माफ गर्नुहोस्, तपाईंको खातामा भित्र जाँदा समस्या भएको थियो।</translation>
 <translation id="5731784586962650619">अन्य एपहरूका पासवर्ड</translation>
 <translation id="5737974891429562743">खातामा साइन-इन गर्ने सम्बन्धी विवरणहरूको म्याद सकिएको छ। सिंक सुरु गर्न अपडेट गर्नुहोस्।</translation>
+<translation id="5738385766833540397">तपाईं आफूले ट्र्याक गरेका उत्पादनको मूल्य घट्दा पठाइने अलर्टहरू कुन माध्यमबाट प्राप्त गर्न चाहनुहुन्छ भन्ने कुरा व्यवस्थापन गर्नुहोस्</translation>
 <translation id="5738887413654608789">यसले तपाईं वरिपरिको परिवेशमा आधारित सान्दर्भिक वेब पृष्ठहरू पत्ता लगाउन अनुमति दिन्छ।</translation>
 <translation id="5758631781033351321">तपाईंको अध्ययन सूची यहाँ देखिने छ</translation>
 <translation id="5765456154762864099">मेनु → सेटिङहरू → डिफल्ट ब्राउजर</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
index 0e8099597..1433a04 100644
--- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Accepteren en doorgaan</translation>
 <translation id="110724200315609752">Overschakelen naar geopend venster</translation>
 <translation id="1112015203684611006">Afdrukken mislukt.</translation>
+<translation id="1118569444314402022">Welkom terug, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Nieuw tabblad maken.</translation>
 <translation id="1126809382673880764">Beschermt je niet tegen gevaarlijke websites, downloads en extensies. Je wordt voor andere services, zoals Gmail en Zoeken, nog steeds beschermd door Safe Browsing als dat beschikbaar is.</translation>
 <translation id="1135212215217513471">Chrome voor iOS downloaden</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Zoek naar ${searchPhrase} in Chrome</translation>
 <translation id="1242044645101871359">Opnieuw inloggen</translation>
 <translation id="1254117744268754948">Map kiezen</translation>
+<translation id="1258491128795710625">Wat is er nieuw</translation>
 <translation id="1265739287306757398">Meer informatie</translation>
 <translation id="1272079795634619415">Stop</translation>
 <translation id="1275718070701477396">Geselecteerd</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">Synchronisatie werkt niet meer.</translation>
 <translation id="1377321085342047638">Kaartnummer</translation>
 <translation id="1383876407941801731">Zoeken</translation>
+<translation id="138618066238211776">Doorgaan als <ph name="USER_NAME" /></translation>
 <translation id="1400642268715879018">Afgelopen 4 weken</translation>
 <translation id="1404330357948037222">Je bent uitgelogd</translation>
 <translation id="1407135791313364759">Alles openen</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Doorgaan met bewerken</translation>
 <translation id="2434405374328098816">Je hebt al een wachtwoord voor <ph name="USERNAME" /> opgeslagen op <ph name="WEBSITE" /></translation>
 <translation id="2435457462613246316">Wachtwoord bekijken</translation>
+<translation id="2461070143328828326">Wachtwoordinstellingen</translation>
 <translation id="2469960372084740698">Safe Browsing uitzetten?</translation>
 <translation id="2473876017985765807">Je hebt al een wachtwoord opgeslagen voor <ph name="WEBSITE" /></translation>
 <translation id="2476359652512522418">Niet geselecteerd</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Markeren als ongelezen</translation>
 <translation id="371230970611282515">Voorspelt en waarschuwt je voor gevaarlijke gebeurtenissen voordat deze plaatsvinden.</translation>
 <translation id="37207012422556617">Trending zoekopdrachten</translation>
+<translation id="3726360487031500941">Log weer in op je account <ph name="USER_NAME" /></translation>
 <translation id="3740397331642243698">Hiermee worden de ingevoerde URL's in Google Chrome geopend in de incognitomodus.</translation>
 <translation id="3762232513783804601">Ontworpen voor je iPad</translation>
 <translation id="3771033907050503522">Incognitotabbladen</translation>
@@ -564,6 +569,7 @@
 <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="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>
 <translation id="5758631781033351321">Hier vind je je leeslijst</translation>
 <translation id="5765456154762864099">Menu → Instellingen → Standaardbrowser</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index fd826c2b..092cb39 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Søk etter ${searchPhrase} i Chrome</translation>
 <translation id="1242044645101871359">Logg på igjen</translation>
 <translation id="1254117744268754948">Valg av mappe</translation>
+<translation id="1258491128795710625">Hva er nytt?</translation>
 <translation id="1265739287306757398">Finn ut hvordan</translation>
 <translation id="1272079795634619415">Stopp</translation>
 <translation id="1275718070701477396">Valgt</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Organisasjonen din krever inkognitomodus</translation>
 <translation id="1323735185997015385">Slett</translation>
 <translation id="132683371494960526">Dobbelttrykk for å bytte overordnet mappe.</translation>
+<translation id="1335348992705722518">Administrer innstillinger …</translation>
 <translation id="1340643665687018190">Lukk menyen</translation>
 <translation id="1358214951266274152">Besøk linken du kopierte</translation>
 <translation id="1360432990279830238">Vil du logge av og slå av synkronisering?</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Det oppsto et problem ved pålogging til kontoen din.</translation>
 <translation id="5731784586962650619">Passord i andre apper</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>
 <translation id="5758631781033351321">Her finner du leselisten din</translation>
 <translation id="5765456154762864099">Meny → Innstillinger → Standardnettleser</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb
index 0e798df..10f0a16d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chromeରେ ${searchPhrase} ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="1242044645101871359">ପୁଣି ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation>
 <translation id="1254117744268754948">ଫୋଲ୍ଡର୍‌ ବାଛନ୍ତୁ</translation>
+<translation id="1258491128795710625">ନୂଆ କଣ ଅଛି</translation>
 <translation id="1265739287306757398">କିପରି ହେବ ତାହା ଜାଣନ୍ତୁ</translation>
 <translation id="1272079795634619415">ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="1275718070701477396">ଚୟନ କରାଯାଇଛି</translation>
@@ -562,6 +563,7 @@
 <translation id="5728700505257787410">କ୍ଷମା କରିବେ, ଆପଣଙ୍କର ଆକାଉଣ୍ଟରେ ସାଇନ୍‌ଇନ୍‍ କରିବା ସମୟରେ ଗୋଟିଏ ତ୍ରୁଟି ଦେଖାଦେଲା</translation>
 <translation id="5731784586962650619">ଅନ୍ୟ ଆପଗୁଡ଼ିକରେ ପାସୱାର୍ଡ</translation>
 <translation id="5737974891429562743">ଆକାଉଣ୍ଟ ସାଇନ୍-ଇନ୍ ବିବରଣୀର ସମୟସୀମା ଶେଷ ହୋଇଛି। ସିଙ୍କ ଆରମ୍ଭ କରିବା ପାଇଁ ଅପ୍‌ଡେଟ୍‌ କରନ୍ତୁ।</translation>
+<translation id="5738385766833540397">ଆପଣ ଟ୍ରାକ କରୁଥିବା ପ୍ରଡକ୍ଟଗୁଡ଼ିକ ପାଇଁ କିପରି ମୂଲ୍ୟ ହ୍ରାସ ଆଲର୍ଟ ପାଇବେ ତାହା ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="5738887413654608789">ଏହା ଆପଣଙ୍କ ପରିବେଶ ଉପରେ ଆଧାର କରି ପ୍ରାସଙ୍ଗିକ ୱେବ୍‍ପୃଷ୍ଠା ଆବିଷ୍କାର କରିବାକୁ ଦିଏ।</translation>
 <translation id="5758631781033351321">ଆପଣ ଏଠାରେ ଆପଣଙ୍କ ପଢ଼ିବା ତାଲିକା ପାଇବେ</translation>
 <translation id="5765456154762864099">ମେନୁ → ସେଟିଂସ → ଡିଫଲ୍ଟ ବ୍ରାଉଜର</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
index bbd7362..179d1b8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">${searchPhrase} ਨੂੰ Chrome ਵਿੱਚ ਖੋਜੋ</translation>
 <translation id="1242044645101871359">ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
 <translation id="1254117744268754948">ਫੋਲਡਰ ਚੁਣੋ</translation>
+<translation id="1258491128795710625">ਨਵਾਂ ਕੀ ਹੈ</translation>
 <translation id="1265739287306757398">ਤਰੀਕਾ ਜਾਣੋ</translation>
 <translation id="1272079795634619415">ਰੋਕੋ</translation>
 <translation id="1275718070701477396">ਚੁਣਿਆ ਗਿਆ</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">ਮਾਫ਼ ਕਰਨਾ, ਤੁਹਾਡੇ ਖਾਤੇ 'ਤੇ ਸਾਈਨ-ਇਨ ਕਰਨ ਵੇਲੇ ਕੋਈ ਸਮੱਸਿਆ ਹੋ ਗਈ।</translation>
 <translation id="5731784586962650619">ਹੋਰ ਐਪਾਂ ਵਿੱਚ ਪਾਸਵਰਡ</translation>
 <translation id="5737974891429562743">ਖਾਤਾ ਸਾਈਨ-ਇਨ ਵੇਰਵਾ ਪੁਰਾਣਾ ਹੈ। ਸਿੰਕ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ।</translation>
+<translation id="5738385766833540397">ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਰੈਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਉਤਪਾਦਾਂ ਵਾਸਤੇ ਕੀਮਤਾਂ ਘਟਣ ਸੰਬੰਧੀ ਸੁਚੇਤਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਤਰੀਕੇ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
 <translation id="5738887413654608789">ਇਹ ਤੁਹਾਨੂੰ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਆਧਾਰ 'ਤੇ ਢੁਕਵੇਂ ਵੈੱਬ ਪੰਨੇ ਲੱਭਣ ਦਿੰਦਾ ਹੈ।</translation>
 <translation id="5758631781033351321">ਤੁਹਾਨੂੰ ਆਪਣੀ ਪੜ੍ਹਨ-ਸੂਚੀ ਇੱਥੇ ਮਿਲੇਗੀ</translation>
 <translation id="5765456154762864099">ਮੀਨੂ → ਸੈਟਿੰਗਾਂ → ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਬ੍ਰਾਊਜ਼ਰ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index 18c74b9..274d039 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Wyszukaj ${searchPhrase} w Chrome</translation>
 <translation id="1242044645101871359">Zaloguj się ponownie</translation>
 <translation id="1254117744268754948">Wybierz folder</translation>
+<translation id="1258491128795710625">Nowe funkcje</translation>
 <translation id="1265739287306757398">Instrukcje</translation>
 <translation id="1272079795634619415">Zatrzymaj</translation>
 <translation id="1275718070701477396">Zaznaczony</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Niestety, wystąpił problem z zalogowaniem się na konto.</translation>
 <translation id="5731784586962650619">Hasła w innych aplikacjach</translation>
 <translation id="5737974891429562743">Dane logowania na konto są nieaktualne. Zaktualizuj je, by rozpocząć synchronizację.</translation>
+<translation id="5738385766833540397">Zarządzaj sposobami otrzymywania alertów o obniżkach cen produktów, które śledzisz</translation>
 <translation id="5738887413654608789">Pozwoli Ci to odkrywać strony internetowe dotyczące rzeczy z Twojego otoczenia.</translation>
 <translation id="5758631781033351321">Znajdziesz tu swoją listę Do przeczytania</translation>
 <translation id="5765456154762864099">Menu → Ustawienia → Domyślna przeglądarka</translation>
@@ -750,6 +752,7 @@
 <translation id="6988572888918530647">Zarządzaj kontem Google</translation>
 <translation id="6989674195860388998">Przełącz w ustawieniach…</translation>
 <translation id="6998989275928107238">Do</translation>
+<translation id="699954956411469731">Powiadomienia na urządzeniach mobilnych</translation>
 <translation id="7004032350256606903">Twoja organizacja wymaga przeglądania prywatnego.
 <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="7004499039102548441">Ostatnie karty</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
index 1405c199..9783ea00 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Pesquisar "${searchPhrase}" no Chrome</translation>
 <translation id="1242044645101871359">Fazer login novamente</translation>
 <translation id="1254117744268754948">Escolher pasta</translation>
+<translation id="1258491128795710625">O que há de novo</translation>
 <translation id="1265739287306757398">Saiba como</translation>
 <translation id="1272079795634619415">Parar</translation>
 <translation id="1275718070701477396">Linha selecionada</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Houve um problema durante o login em sua conta.</translation>
 <translation id="5731784586962650619">Senhas em outros apps</translation>
 <translation id="5737974891429562743">Os detalhes de login da conta estão desatualizados. Atualize-os para iniciar a sincronização.</translation>
+<translation id="5738385766833540397">Gerencie como você recebe alertas de redução no preço de produtos monitorados.</translation>
 <translation id="5738887413654608789">Isso permite que você descubra páginas da Web relevantes com base nos seus arredores.</translation>
 <translation id="5758631781033351321">Você encontrará sua lista de leituras aqui</translation>
 <translation id="5765456154762864099">Menu → Configurações → Navegador padrão</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 4c65aca..2c6e296 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Aceitar e Continuar</translation>
 <translation id="110724200315609752">Mudar para a janela aberta</translation>
 <translation id="1112015203684611006">Falha ao imprimir.</translation>
+<translation id="1118569444314402022">Damos-lhe as boas-vindas de volta, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Criar novo separador</translation>
 <translation id="1126809382673880764">Não protege contra transferências, extensões ou Websites perigosos. Continuará a obter a proteção da Navegação segura, quando disponível, noutros Serviços Google, como o Gmail e a Pesquisa.</translation>
 <translation id="1135212215217513471">Obtenha o Chrome para iOS</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Pesquise ${searchPhrase} no Chrome</translation>
 <translation id="1242044645101871359">Inicie sessão novamente</translation>
 <translation id="1254117744268754948">Escolher Pasta</translation>
+<translation id="1258491128795710625">Novidades</translation>
 <translation id="1265739287306757398">Saiba como</translation>
 <translation id="1272079795634619415">Parar</translation>
 <translation id="1275718070701477396">Linha selecionada</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">A sincronização deixou de funcionar.</translation>
 <translation id="1377321085342047638">N.º cartão</translation>
 <translation id="1383876407941801731">Pesquisar</translation>
+<translation id="138618066238211776">Continuar como <ph name="USER_NAME" /></translation>
 <translation id="1400642268715879018">Últimas 4 semanas</translation>
 <translation id="1404330357948037222">Não tem sessão iniciada</translation>
 <translation id="1407135791313364759">Abrir tudo</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Continuar a editar</translation>
 <translation id="2434405374328098816">Já guardou uma palavra-passe para "<ph name="USERNAME" />" em <ph name="WEBSITE" /></translation>
 <translation id="2435457462613246316">Mostrar palavra-passe</translation>
+<translation id="2461070143328828326">Definições de palavra-passe</translation>
 <translation id="2469960372084740698">Desativar a Navegação segura?</translation>
 <translation id="2473876017985765807">Já guardou uma palavra-passe para <ph name="WEBSITE" /></translation>
 <translation id="2476359652512522418">Não selecionado</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Marcar como não lido</translation>
 <translation id="371230970611282515">Prevê e envia-lhe avisos sobre eventos perigosos antes da sua ocorrência.</translation>
 <translation id="37207012422556617">Pesquisas populares</translation>
+<translation id="3726360487031500941">Inicie sessão novamente na sua conta, <ph name="USER_NAME" /></translation>
 <translation id="3740397331642243698">Abre os URLs introduzidos no Google Chrome na Navegação anónima.</translation>
 <translation id="3762232513783804601">Concebido para o iPad</translation>
 <translation id="3771033907050503522">Sep. nav. anónima</translation>
@@ -564,6 +569,7 @@
 <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="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>
 <translation id="5758631781033351321">A sua lista de leitura será apresentada aqui</translation>
 <translation id="5765456154762864099">Menu → Definições → Navegador predefinido</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
index 94b0f4c..d417a50 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Caută ${searchPhrase} în Chrome</translation>
 <translation id="1242044645101871359">Reconectează-te</translation>
 <translation id="1254117744268754948">Alegeți dosarul</translation>
+<translation id="1258491128795710625">Noutăți</translation>
 <translation id="1265739287306757398">Află cum</translation>
 <translation id="1272079795634619415">Oprește</translation>
 <translation id="1275718070701477396">Selectat</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">A apărut o problemă de conectare la cont.</translation>
 <translation id="5731784586962650619">Parole din alte aplicații</translation>
 <translation id="5737974891429562743">Datele de conectare la cont sunt învechite. Actualizează pentru a începe sincronizarea.</translation>
+<translation id="5738385766833540397">Gestionează modul în care primești alertele de scădere de preț pentru produsele pe care le urmărești</translation>
 <translation id="5738887413654608789">Astfel, poți descoperi pagini web relevante în funcție de lucrurile din jurul tău.</translation>
 <translation id="5758631781033351321">Aici vei vedea lista de lectură</translation>
 <translation id="5765456154762864099">Meniu → Setări → Browser prestabilit</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
index 93874fc..17a5a6d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Искать "${searchPhrase}" в Chrome</translation>
 <translation id="1242044645101871359">Повторите вход</translation>
 <translation id="1254117744268754948">Выбор папки</translation>
+<translation id="1258491128795710625">Что нового</translation>
 <translation id="1265739287306757398">Подробнее</translation>
 <translation id="1272079795634619415">Остановить</translation>
 <translation id="1275718070701477396">Выбрано</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">В вашей организации обязательно использовать режим инкогнито.</translation>
 <translation id="1323735185997015385">Удалить</translation>
 <translation id="132683371494960526">Чтобы изменить родительскую папку, нажмите дважды.</translation>
+<translation id="1335348992705722518">Открыть настройки</translation>
 <translation id="1340643665687018190">Закрыть меню</translation>
 <translation id="1358214951266274152">Открыть скопированную ссылку</translation>
 <translation id="1360432990279830238">Выйти и отключить синхронизацию?</translation>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">Не удалось войти в аккаунт.</translation>
 <translation id="5731784586962650619">Пароли в других приложениях</translation>
 <translation id="5737974891429562743">Данные для входа в аккаунт устарели. Чтобы начать синхронизацию, обновите их.</translation>
+<translation id="5738385766833540397">Выберите, куда будут приходить оповещения о скидках на отслеживаемые товары.</translation>
 <translation id="5738887413654608789">Вы сможете узнавать о сайтах, связанных с объектами вокруг вас.</translation>
 <translation id="5758631781033351321">Здесь вы найдете свой список для чтения</translation>
 <translation id="5765456154762864099">Меню → Настройки → Браузер по умолчанию</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb
index ede0990..fc229db3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_si.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome තුළ ${searchPhrase} සොයන්න</translation>
 <translation id="1242044645101871359">නැවත පුරන්න</translation>
 <translation id="1254117744268754948">ෆෝල්ඩරය තෝරන්න</translation>
+<translation id="1258491128795710625">අලුත් මොනවාද</translation>
 <translation id="1265739287306757398">කෙසේදැයි දැන ගන්න</translation>
 <translation id="1272079795634619415">නවතන්න</translation>
 <translation id="1275718070701477396">තෝරාගත්</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">ඔබගේ සංවිධානයට අප්‍රසිද්ධ ප්‍රකාරය අවශ්‍යයි</translation>
 <translation id="1323735185997015385">මකන්න</translation>
 <translation id="132683371494960526">මාපිය ෆෝල්ඩරය වෙනස් කිරීමට දෙවරක් තට්ටු කරන්න.</translation>
+<translation id="1335348992705722518">සැකසීම් කළමනාකරණය කරන්න...</translation>
 <translation id="1340643665687018190">මෙනුව වසන්න</translation>
 <translation id="1358214951266274152">ඔබ පිටපත් කළ සබැඳියට පැමිණෙන්න</translation>
 <translation id="1360432990279830238">වැරී, සමමුහුර්ත කිරීම අක්‍රිය කරන්නේද?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">අලවා සොයන්න</translation>
 <translation id="4223967053752765281">ඔබගේ සංවිධානය පිරීම ක්‍රියාවිරහිත කර දැමීය. ඔබට තවම ඔබගේ පිටුසන්, ඉතිහාසය, මුරපද සහ වෙනත් සැකසීම් මෙම උපාංගයෙහි බැලිය හැකිය. ඔබ වෙනස් කිරීම් සිදු කළහොත්, ඒවා ඔබගේ ගිණුමට සමමුහුර්ත නොවනු ඇත.</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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">කනගාටුයි, ඔබේ ගිණුම වෙත පුරනය විමේදි ගැටලුවක් තිබේ.</translation>
 <translation id="5731784586962650619">වෙනත් යෙදුම්වල මුරපද</translation>
 <translation id="5737974891429562743">ගිණුමේ පිරීම් විස්තර කල් පැන ඇත. සමමුහුර්ත කිරීම ආරම්භ කිරීමට යාවත්කාලීන කරන්න.</translation>
+<translation id="5738385766833540397">ඔබ නිරීක්ෂණය කරන නිෂ්පාදන සඳහා මිල පහත වැටීමේ ඇඟවීම් ලැබෙන ආකාරය කළමනා කරන්න</translation>
 <translation id="5738887413654608789">මෙය ඔබට ඔබේ වටපිටාව මත පදනම්ව අදාළ වෙබ් පිටු සොයා ගැනීමට ඉඩ දෙයි.</translation>
 <translation id="5758631781033351321">ඔබට ඔබේ කියවීමේ ලැයිස්තුව මෙහි හමුවනු ඇත</translation>
 <translation id="5765456154762864099">මෙනුව → සැකසීම් → පෙරනිමි බ්‍රවුසරය</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
index ee4a6ddc..06629b4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Prijať a pokračovať</translation>
 <translation id="110724200315609752">Prepnúť na otvorené okno</translation>
 <translation id="1112015203684611006">Tlač zlyhala.</translation>
+<translation id="1118569444314402022">Vitajte späť, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Vytvoriť novú kartu.</translation>
 <translation id="1126809382673880764">Nechráni vás pred nebezpečnými webmi, stiahnutými súbormi ani rozšíreniami. Ochrana Bezpečného prehliadania vám bude poskytovaná v náležitých prípadoch v ďalších službách Googlu, ako sú napríklad Gmail alebo Vyhľadávanie.</translation>
 <translation id="1135212215217513471">Získať Chrome pre iOS</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Hľadať ${searchPhrase} v Chrome</translation>
 <translation id="1242044645101871359">Prihláste sa znova</translation>
 <translation id="1254117744268754948">Vybrať priečinok</translation>
+<translation id="1258491128795710625">Novinky</translation>
 <translation id="1265739287306757398">Ako na to</translation>
 <translation id="1272079795634619415">Zastaviť</translation>
 <translation id="1275718070701477396">Riadok bol vybratý</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">Synchronizácia prestala fungovať.</translation>
 <translation id="1377321085342047638">Číslo karty</translation>
 <translation id="1383876407941801731">Vyhľadávanie</translation>
+<translation id="138618066238211776">Pokračovať ako <ph name="USER_NAME" /></translation>
 <translation id="1400642268715879018">Posledné 4 týždne</translation>
 <translation id="1404330357948037222">Odhlásili ste sa</translation>
 <translation id="1407135791313364759">Otvoriť všetko</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Ďalej upravovať</translation>
 <translation id="2434405374328098816">Heslo pre používateľské meno <ph name="USERNAME" /> ste už uložili na <ph name="WEBSITE" /></translation>
 <translation id="2435457462613246316">Zobraziť heslo</translation>
+<translation id="2461070143328828326">Nastavenia hesla</translation>
 <translation id="2469960372084740698">Chcete vypnúť Bezpečné prehliadanie?</translation>
 <translation id="2473876017985765807">Už ste si uložili heslo pre web <ph name="WEBSITE" /></translation>
 <translation id="2476359652512522418">Nevybrané</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Označiť ako neprečítané</translation>
 <translation id="371230970611282515">Predpovedá nebezpečné udalosti a upozorní vás, než k nim dôjde.</translation>
 <translation id="37207012422556617">Populárne vyhľadávania</translation>
+<translation id="3726360487031500941">Znova sa prihláste do účtu <ph name="USER_NAME" /></translation>
 <translation id="3740397331642243698">Otvorí zadané webové adresy v prehliadači Google Chrome v režime inkognito.</translation>
 <translation id="3762232513783804601">Vytvorené pre váš iPad</translation>
 <translation id="3771033907050503522">Karty inkognito</translation>
@@ -564,6 +569,7 @@
 <translation id="5728700505257787410">Je nám ľúto, pri prihlasovaní do účtu sa vyskytol problém.</translation>
 <translation id="5731784586962650619">Heslá v ďalších aplikáciách</translation>
 <translation id="5737974891429562743">Informácie o prihlásení do účtu sú neaktuálne. Ak chcete spustiť synchronizáciu, aktualizujte ich.</translation>
+<translation id="5738385766833540397">Spravujte, ako dostávate upozornenia na pokles cien výrobkov, ktoré sledujete</translation>
 <translation id="5738887413654608789">Umožní vám to objavovať relevantné webové stránky na základe objektov vo vašom okolí.</translation>
 <translation id="5758631781033351321">Tu nájdete svoj čitateľský zoznam</translation>
 <translation id="5765456154762864099">Ponuka → Nastavenia → Predvolený prehliadač</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
index 07e63f6..55662e5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Iskanje poizvedbe ${searchPhrase} v Chromu</translation>
 <translation id="1242044645101871359">Prijavite se znova</translation>
 <translation id="1254117744268754948">Izbira mape</translation>
+<translation id="1258491128795710625">Novosti</translation>
 <translation id="1265739287306757398">Več o tem</translation>
 <translation id="1272079795634619415">Ustavi</translation>
 <translation id="1275718070701477396">Izbrano</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Žal je bila pri prijavi v račun težava.</translation>
 <translation id="5731784586962650619">Gesla v drugih aplikacijah</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>
 <translation id="5758631781033351321">Tukaj bo prikazan seznam za branje</translation>
 <translation id="5765456154762864099">Meni → Nastavitve → Privzeti brskalnik</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
index 315cfe2..980d003 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Kërko ${searchPhrase} në Chrome</translation>
 <translation id="1242044645101871359">Identifikohu përsëri</translation>
 <translation id="1254117744268754948">Zgjidh dosjen</translation>
+<translation id="1258491128795710625">Më të rejat</translation>
 <translation id="1265739287306757398">Mëso se si</translation>
 <translation id="1272079795634619415">Ndalo</translation>
 <translation id="1275718070701477396">Përzgjedhur</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Organizata jote kërkon modalitetin "e fshehtë"</translation>
 <translation id="1323735185997015385">Fshi</translation>
 <translation id="132683371494960526">Trokit dy herë për të ndryshuar dosjen mëmë.</translation>
+<translation id="1335348992705722518">Menaxho "Cilësimet"...</translation>
 <translation id="1340643665687018190">Mbylle menynë</translation>
 <translation id="1358214951266274152">Vizito lidhjen që kopjove</translation>
 <translation id="1360432990279830238">Do të dalësh dhe çaktivizosh sinkronizimin?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Ngjit dhe kërko</translation>
 <translation id="4223967053752765281">Organizata jote ka e çaktivizuar identifikimin. Mund të shikosh ende faqeshënuesit, historikun, fjalëkalimet dhe cilësime të tjera në këtë pajisje. Nëse bën ndryshime, ato nuk do të sinkronizohen me llogarinë tënde.</translation>
 <translation id="4233831822770018312">Modifiko lejet</translation>
+<translation id="4236584471598725073">Çmimi po monitorohet</translation>
 <translation id="4237377247299956313">Trokit <ph name="BEGIN_BOLD" />Aplikacionin e parazgjedhur të shfletuesit<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Fut frazën e kalimit</translation>
 <translation id="4249955472157341256">Rendit sipas "Më të fundit"</translation>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Na vjen keq, ka pasur një problem identifikimi në llogarinë tënde.</translation>
 <translation id="5731784586962650619">Fjalëkalimet në aplikacionet e tjera</translation>
 <translation id="5737974891429562743">Detajet e identifikimit të llogarisë nuk janë të përditësuara. Përditësoji për të filluar sinkronizimin.</translation>
+<translation id="5738385766833540397">Menaxho se si i merr sinjalizimet për uljet e çmimeve për produktet që monitoron</translation>
 <translation id="5738887413654608789">Kjo të lejon të zbulosh faqe uebi që kanë lidhje bazuar në ambientin rrethues.</translation>
 <translation id="5758631781033351321">Këtu do të gjesh listën tënde të leximit</translation>
 <translation id="5765456154762864099">"Menyja → Cilësimet→ Shfletuesi i parazgjedhur"</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
index 6d0cb18..88a8f37 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Prihvati i nastavi</translation>
 <translation id="110724200315609752">Pređi na otvoren prozor</translation>
 <translation id="1112015203684611006">Štampanje nije uspelo.</translation>
+<translation id="1118569444314402022">Dobro došli nazad, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Napravi novu karticu.</translation>
 <translation id="1126809382673880764">Ne štiti vas od opasnih veb-sajtova, preuzimanja i dodataka. U drugim Google uslugama, kao što su Gmail i Pretraga, i dalje ćete imati zaštitu pomoću Bezbednog pregledanja kada je dostupna.</translation>
 <translation id="1135212215217513471">Nabavite Chrome za iOS</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Pretražite frazu ${searchPhrase} u Chrome-u</translation>
 <translation id="1242044645101871359">Prijavite se ponovo</translation>
 <translation id="1254117744268754948">Izbor direktorijuma</translation>
+<translation id="1258491128795710625">Šta je novo</translation>
 <translation id="1265739287306757398">Saznajte kako</translation>
 <translation id="1272079795634619415">Zaustavi</translation>
 <translation id="1275718070701477396">Izabrano je</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">Sinhronizacija više ne funkcioniše.</translation>
 <translation id="1377321085342047638">Broj kartice</translation>
 <translation id="1383876407941801731">Pretraži</translation>
+<translation id="138618066238211776">Nastavi kao <ph name="USER_NAME" /></translation>
 <translation id="1400642268715879018">Poslednje 4 nedelje</translation>
 <translation id="1404330357948037222">Odjavljeni ste</translation>
 <translation id="1407135791313364759">Otvori sve</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Nastavi izmene</translation>
 <translation id="2434405374328098816">Već ste sačuvali lozinku za „<ph name="USERNAME" />“ na <ph name="WEBSITE" /></translation>
 <translation id="2435457462613246316">Prikaži lozinku</translation>
+<translation id="2461070143328828326">Podešavanja lozinke</translation>
 <translation id="2469960372084740698">Želite da isključite Bezbednosno pregledanje?</translation>
 <translation id="2473876017985765807">Već ste sačuvali lozinku za <ph name="WEBSITE" /></translation>
 <translation id="2476359652512522418">Nije izabrano</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Označi kao nepročitano</translation>
 <translation id="371230970611282515">Otkriva opasne događaje pre nego što se dogode i upozorava vas na njih.</translation>
 <translation id="37207012422556617">Pretrage u trendu</translation>
+<translation id="3726360487031500941">Ponovo se prijavite na nalog <ph name="USER_NAME" /></translation>
 <translation id="3740397331642243698">Otvara unete URL-ove u Google Chrome-u u režimu bez arhiviranja.</translation>
 <translation id="3762232513783804601">Napravljeno za iPad</translation>
 <translation id="3771033907050503522">Kartice Bez arhiviranja</translation>
@@ -564,6 +569,7 @@
 <translation id="5728700505257787410">Žao nam je, došlo je do problema pri prijavljivanju na nalog.</translation>
 <translation id="5731784586962650619">Lozinke u drugim aplikacijama</translation>
 <translation id="5737974891429562743">Podaci za prijavljivanje na nalog su zastareli. Ažurirajte ih da biste započeli sinhronizaciju.</translation>
+<translation id="5738385766833540397">Upravljajte načinom na koji primate obaveštenja o sniženjima za proizvode koje pratite</translation>
 <translation id="5738887413654608789">Ovo vam omogućava da otkrijete relevantne veb-stranice na osnovu okruženja.</translation>
 <translation id="5758631781033351321">Ovde ćete pronaći listu za čitanje</translation>
 <translation id="5765456154762864099">Meni → Podešavanja → Podrazumevani pregledač</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
index 89c5900..05edb66 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">Прихвати и настави</translation>
 <translation id="110724200315609752">Пређи на отворен прозор</translation>
 <translation id="1112015203684611006">Штампање није успело.</translation>
+<translation id="1118569444314402022">Добро дошли назад, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">Направи нову картицу.</translation>
 <translation id="1126809382673880764">Не штити вас од опасних веб-сајтова, преузимања и додатака. У другим Google услугама, као што су Gmail и Претрага, и даље ћете имати заштиту помоћу Безбедног прегледања када је доступна.</translation>
 <translation id="1135212215217513471">Набавите Chrome за iOS</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Претражите фразу ${searchPhrase} у Chrome-у</translation>
 <translation id="1242044645101871359">Пријавите се поново</translation>
 <translation id="1254117744268754948">Избор директоријума</translation>
+<translation id="1258491128795710625">Шта је ново</translation>
 <translation id="1265739287306757398">Сазнајте како</translation>
 <translation id="1272079795634619415">Заустави</translation>
 <translation id="1275718070701477396">Изабрано је</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">Синхронизација више не функционише.</translation>
 <translation id="1377321085342047638">Број картице</translation>
 <translation id="1383876407941801731">Претражи</translation>
+<translation id="138618066238211776">Настави као <ph name="USER_NAME" /></translation>
 <translation id="1400642268715879018">Последње 4 недеље</translation>
 <translation id="1404330357948037222">Одјављени сте</translation>
 <translation id="1407135791313364759">Отвори све</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">Настави изменe</translation>
 <translation id="2434405374328098816">Већ сте сачували лозинку за „<ph name="USERNAME" />“ на <ph name="WEBSITE" /></translation>
 <translation id="2435457462613246316">Прикажи лозинку</translation>
+<translation id="2461070143328828326">Подешавања лозинке</translation>
 <translation id="2469960372084740698">Желите да искључите Безбедносно прегледање?</translation>
 <translation id="2473876017985765807">Већ сте сачували лозинку за <ph name="WEBSITE" /></translation>
 <translation id="2476359652512522418">Није изабрано</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">Означи као непрочитано</translation>
 <translation id="371230970611282515">Открива опасне догађаје пре него што се догоде и упозорава вас на њих.</translation>
 <translation id="37207012422556617">Претраге у тренду</translation>
+<translation id="3726360487031500941">Поново се пријавите на налог <ph name="USER_NAME" /></translation>
 <translation id="3740397331642243698">Отвара унете URL-ове у Google Chrome-у у режиму без архивирања.</translation>
 <translation id="3762232513783804601">Направљено за iPad</translation>
 <translation id="3771033907050503522">Картице Без архивирања</translation>
@@ -564,6 +569,7 @@
 <translation id="5728700505257787410">Жао нам је, дошло је до проблема при пријављивању на налог.</translation>
 <translation id="5731784586962650619">Лозинке у другим апликацијама</translation>
 <translation id="5737974891429562743">Подаци за пријављивање на налог су застарели. Ажурирајте их да бисте започели синхронизацију.</translation>
+<translation id="5738385766833540397">Управљајте начином на који примате обавештења о снижењима за производе које пратите</translation>
 <translation id="5738887413654608789">Ово вам омогућава да откријете релевантне веб-странице на основу окружења.</translation>
 <translation id="5758631781033351321">Овде ћете пронаћи листу за читање</translation>
 <translation id="5765456154762864099">Мени → Подешавања → Подразумевани прегледач</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
index b0bb84ce..4a11c33 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Sök efter ${searchPhrase} i Chrome</translation>
 <translation id="1242044645101871359">Logga in igen</translation>
 <translation id="1254117744268754948">Välj mapp</translation>
+<translation id="1258491128795710625">Nyheter</translation>
 <translation id="1265739287306757398">Läs mer</translation>
 <translation id="1272079795634619415">Stopp</translation>
 <translation id="1275718070701477396">Markerad</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Organisationen kräver att du använder inkognitoläge</translation>
 <translation id="1323735185997015385">Radera</translation>
 <translation id="132683371494960526">Tryck snabbt två gånger om du vill ändra överordnad mapp.</translation>
+<translation id="1335348992705722518">Hantera inställningar …</translation>
 <translation id="1340643665687018190">Stäng menyn</translation>
 <translation id="1358214951266274152">Besök den kopierade länken</translation>
 <translation id="1360432990279830238">Logga ut och inaktivera synkronisering?</translation>
@@ -383,6 +385,7 @@
 <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="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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Det gick inte att logga in på ditt konto.</translation>
 <translation id="5731784586962650619">Lösenord i andra appar</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>
 <translation id="5758631781033351321">Du hittar läslistan här</translation>
 <translation id="5765456154762864099">Menyn → Inställningar → Standardwebbläsare</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
index 00c4861..cd0fa81 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Tafuta ${searchPhrase} kwenye Chrome</translation>
 <translation id="1242044645101871359">Ingia Katika Akaunti Tena</translation>
 <translation id="1254117744268754948">Chagua Folda</translation>
+<translation id="1258491128795710625">Mapya</translation>
 <translation id="1265739287306757398">Pata Maelezo Zaidi</translation>
 <translation id="1272079795634619415">Simamisha</translation>
 <translation id="1275718070701477396">Umeichagua</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">Shirika lako linahitaji utumie hali Fiche</translation>
 <translation id="1323735185997015385">Futa</translation>
 <translation id="132683371494960526">Gusa mara mbili ili ubadilishe folda kuu.</translation>
+<translation id="1335348992705722518">Dhibiti Mipangilio...</translation>
 <translation id="1340643665687018190">Funga Menyu</translation>
 <translation id="1358214951266274152">Fungua Kiungo Ulichonakili</translation>
 <translation id="1360432990279830238">Utaondoka na uzime usawazishaji?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">Bandika na Utafute</translation>
 <translation id="4223967053752765281">Shirika lako limezima kipengele cha uingiaji katika akaunti. Bado unaweza kuona alamisho, historia, manenosiri na mipangilio mingine kwenye kifaa hiki. Iwapo utafanya mabadiliko, hayatasawazishwa kwenye akaunti yako.</translation>
 <translation id="4233831822770018312">Badilisha ruhusa</translation>
+<translation id="4236584471598725073">Kufuatilia Bei</translation>
 <translation id="4237377247299956313">Gusa <ph name="BEGIN_BOLD" />Programu ya Kivinjari Chaguomsingi<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Weka Kauli ya Siri</translation>
 <translation id="4249955472157341256">Panga kulingana na zilizoingia hivi karibuni</translation>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">Samahani, kulikuwa na tatizo wakati wa kuingia kwenye akaunti yako.</translation>
 <translation id="5731784586962650619">Manenosiri Katika Programu Zingine</translation>
 <translation id="5737974891429562743">Maelezo ya kuingia kwenye akaunti hayatumiki tena. Sasisha ili uanze kusawazisha.</translation>
+<translation id="5738385766833540397">Dhibiti jinsi unavyopokea arifa za kushuka kwa bei ya bidhaa unazofuatilia</translation>
 <translation id="5738887413654608789">Hii inakuwezesha kugundua kurasa za wavuti zinazokufaa kulingana na mazingira yako.</translation>
 <translation id="5758631781033351321">Utapata orodha yako ya kusoma hapa</translation>
 <translation id="5765456154762864099">Menyu → Mipangilio → Kivinjari Chaguomsingi</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index e7b9b75..e7da20b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chromeமில் ${searchPhrase} ஐத் தேடு</translation>
 <translation id="1242044645101871359">மீண்டும் உள்நுழைக</translation>
 <translation id="1254117744268754948">ஃபோல்டரைத் தேர்வுசெய்யவும்</translation>
+<translation id="1258491128795710625">புதியவை</translation>
 <translation id="1265739287306757398">எப்படி என அறிக</translation>
 <translation id="1272079795634619415">நிறுத்து</translation>
 <translation id="1275718070701477396">தேர்ந்தெடுக்கப்பட்டது</translation>
@@ -384,6 +385,7 @@
 <translation id="4187450337729239226">ஒட்டிவிட்டுத் தேடும்</translation>
 <translation id="4223967053752765281">உங்கள் நிறுவனம் உள்நுழைவை முடக்கியுள்ளது. இருப்பினும் இந்தச் சாதனத்தில் உள்ள உங்கள் புக்மார்க்குகள், பதிவுகள், கடவுச்சொற்கள் மற்றும் பிற அமைப்புகளை உங்களால் பார்க்க முடியும். ஏதேனும் மாற்றங்களைச் செய்தால் அவை உங்கள் கணக்குடன் ஒத்திசைக்கப்படாது.</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>
@@ -563,6 +565,7 @@
 <translation id="5728700505257787410">மன்னிக்கவும், உங்கள் கணக்கில் உள்நுழைவதில் பிழை.</translation>
 <translation id="5731784586962650619">பிற ஆப்ஸில் உள்ள கடவுச்சொற்கள்</translation>
 <translation id="5737974891429562743">கணக்கு உள்நுழைவு விவரங்கள் காலாவதியாகிவிட்டன. ஒத்திசைவைத் தொடங்க, புதுப்பிக்கவும்.</translation>
+<translation id="5738385766833540397">நீங்கள் கண்காணிக்கும் தயாரிப்புகளின் விலை குறைவது தொடர்பான விழிப்பூட்டல்களை எதில் பெற வேண்டும் என்பதை நிர்வகிக்கலாம்</translation>
 <translation id="5738887413654608789">இதன் மூலம், உங்களைச் சுற்றியுள்ளவற்றின் அடிப்படையில் தொடர்புடைய இணையப் பக்கங்களைக் கண்டறியலாம்.</translation>
 <translation id="5758631781033351321">உங்கள் வாசிப்புப் பட்டியலை இங்கே பார்ப்பீர்கள்</translation>
 <translation id="5765456154762864099">மெனு → அமைப்புகள் → இயல்பு உலாவி</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index 27629c6..0c4b72e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -23,6 +23,7 @@
 <translation id="1104948393051856124">అంగీకరించు &amp; కొనసాగు</translation>
 <translation id="110724200315609752">తెరిచి ఉన్న విండోకు స్విచ్ అవ్వండి</translation>
 <translation id="1112015203684611006">ముద్రణ విఫలమైంది.</translation>
+<translation id="1118569444314402022">తిరిగి స్వాగతం, <ph name="USER_NAME" /></translation>
 <translation id="1125564390852150847">కొత్త ట్యాబ్‌ను క్రియేట్ చేయండి.</translation>
 <translation id="1126809382673880764">ప్రమాదకరమైన వెబ్‌సైట్‌లు, డౌన్‌లోడ్‌లు మరియు ఎక్స్‌టెన్షన్‌ల నుండి మిమ్మల్ని రక్షించదు. Gmail, Search వంటి ఇతర Google సర్వీస్‌లలో, సురక్షిత బ్రౌజింగ్ అందుబాటులో ఉన్న చోట మీరు ఇప్పటికీ రక్షణను పొందుతారు.</translation>
 <translation id="1135212215217513471">iOS కోసం Chromeను పొందండి</translation>
@@ -42,6 +43,7 @@
 <translation id="1229222343402087523">Chromeలో ${searchPhrase}ను సెర్చ్ చేయండి</translation>
 <translation id="1242044645101871359">మళ్ళీ సైన్ ఇన్ చేయండి</translation>
 <translation id="1254117744268754948">ఫోల్డర్‌ను ఎంచుకోండి</translation>
+<translation id="1258491128795710625">కొత్తగా ఏమి ఉన్నాయి</translation>
 <translation id="1265739287306757398">ఎలాగో తెలుసుకోండి</translation>
 <translation id="1272079795634619415">ఆపు</translation>
 <translation id="1275718070701477396">ఎంచుకోబడింది</translation>
@@ -63,6 +65,7 @@
 <translation id="1377255359165588604">సింక్‌ పని చేయడం ఆపివేయబడింది.</translation>
 <translation id="1377321085342047638">కార్డ్ నంబర్</translation>
 <translation id="1383876407941801731">సెర్చ్</translation>
+<translation id="138618066238211776"><ph name="USER_NAME" />గా కొనసాగించండి</translation>
 <translation id="1400642268715879018">గత 4 వారాలు</translation>
 <translation id="1404330357948037222">మీరు సైన్ అవుట్ చేశారు</translation>
 <translation id="1407135791313364759">అన్నీ తెరువు</translation>
@@ -176,6 +179,7 @@
 <translation id="2421044535038393232">ఎడిట్‌ను కొనసాగించు</translation>
 <translation id="2434405374328098816">మీరు "<ph name="USERNAME" />" కోసం పాస్‌వర్డ్‌ను <ph name="WEBSITE" />లో ఇప్పటికే సేవ్ చేశారు</translation>
 <translation id="2435457462613246316">పాస్‌వర్డ్‌ను చూపించు</translation>
+<translation id="2461070143328828326">పాస్‌వర్డ్ సెట్టింగ్‌లు</translation>
 <translation id="2469960372084740698">సురక్షిత బ్రౌజింగ్‌ను ఆఫ్ చేయాలా?</translation>
 <translation id="2473876017985765807"><ph name="WEBSITE" />లో మీరు ఇప్పటికే పాస్‌వర్డ్‌ను సేవ్ చేశారు</translation>
 <translation id="2476359652512522418">ఎంచుకోబడలేదు</translation>
@@ -330,6 +334,7 @@
 <translation id="3709582977625132201">చదవనిదిగా గుర్తు పెట్టు</translation>
 <translation id="371230970611282515">ప్రమాదకరమైన సంఘటనలు జరగడానికి ముందే, వాటిని గుర్తించి, మిమ్మల్ని హెచ్చరిస్తుంది.</translation>
 <translation id="37207012422556617">ట్రెండింగ్ సెర్చ్‌లు</translation>
+<translation id="3726360487031500941">మీ ఖాతా <ph name="USER_NAME" />కు తిరిగి సైన్ ఇన్ చేయండి</translation>
 <translation id="3740397331642243698">ఇన్‌పుట్ చేసిన URLలను Google Chromeలో అజ్ఞాత మోడ్‌లో తెరుస్తుంది.</translation>
 <translation id="3762232513783804601">మీ iPad కోసం రూపొందించబడింది</translation>
 <translation id="3771033907050503522">అజ్ఞాత ట్యాబ్‌లు</translation>
@@ -564,6 +569,7 @@
 <translation id="5728700505257787410">క్షమించండి, మీ ఖాతాకు సైన్ ఇన్ చేయడంలో సమస్య ఉంది.</translation>
 <translation id="5731784586962650619">ఇతర యాప్‌లలోని పాస్‌వర్డ్‌లు</translation>
 <translation id="5737974891429562743">ఖాతా సైన్-ఇన్ వివరాలు పాతవి. సింక్‌ను ప్రారంభించడానికి అప్‌డేట్ చేయండి.</translation>
+<translation id="5738385766833540397">మీరు ట్రాక్ చేసే ప్రోడక్ట్‌లకు సంబంధించి మీరు ధర తగ్గుదల అలర్ట్‌లను స్వీకరించే విధానాన్ని మేనేజ్ చేయండి</translation>
 <translation id="5738887413654608789">దీని వ‌ల్ల‌ మీరు మీ పరిసరాల ఆధారంగా సంబంధిత వెబ్‌ పేజీలను కనుగొనగలుగుతారు.</translation>
 <translation id="5758631781033351321">మీ చదివే అంశాల లిస్ట్‌ను ఇక్కడ చూడగలరు</translation>
 <translation id="5765456154762864099">మెనూ → సెట్టింగ్‌లు → ఆటోమేటిక్ సెట్టింగ్ బ్రౌజర్</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb
index 893bc82..b84d787 100644
--- a/ios/chrome/app/strings/resources/ios_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -43,6 +43,7 @@
 <translation id="1229222343402087523">ค้นหา ${searchPhrase} ใน Chrome</translation>
 <translation id="1242044645101871359">ลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="1254117744268754948">เลือกโฟลเดอร์</translation>
+<translation id="1258491128795710625">มีอะไรใหม่</translation>
 <translation id="1265739287306757398">เรียนรู้วิธี</translation>
 <translation id="1272079795634619415">หยุด</translation>
 <translation id="1275718070701477396">เลือกแล้ว</translation>
@@ -388,6 +389,7 @@
 <translation id="4187450337729239226">วางและค้นหา</translation>
 <translation id="4223967053752765281">องค์กรปิดการลงชื่อเข้าใช้ไว้ คุณจะยังคงเห็นบุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ ในอุปกรณ์นี้ หากทำการเปลี่ยนแปลง ระบบจะไม่ซิงค์การเปลี่ยนแปลงนั้นกับบัญชี</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>
@@ -567,6 +569,7 @@
 <translation id="5728700505257787410">ขออภัย เกิดปัญหาในการลงชื่อเข้าใช้บัญชีของคุณ</translation>
 <translation id="5731784586962650619">รหัสผ่านในแอปอื่นๆ</translation>
 <translation id="5737974891429562743">รายละเอียดการลงชื่อเข้าใช้บัญชีล้าสมัยแล้ว โปรดอัปเดตเพื่อเริ่มการซิงค์</translation>
+<translation id="5738385766833540397">จัดการวิธีรับการแจ้งเตือนเมื่อราคาลดลงสำหรับผลิตภัณฑ์ที่คุณติดตาม</translation>
 <translation id="5738887413654608789">วิธีนี้ช่วยให้คุณค้นพบหน้าเว็บที่เกี่ยวข้องโดยอิงตามสิ่งที่อยู่รอบตัวคุณ</translation>
 <translation id="5758631781033351321">คุณจะเห็นเรื่องรออ่านที่นี่</translation>
 <translation id="5765456154762864099">เมนู → การตั้งค่า → เบราว์เซอร์เริ่มต้น</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index d17539f..0626cef 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Chrome'da ${searchPhrase} için arama yap</translation>
 <translation id="1242044645101871359">Tekrar Oturum Açın</translation>
 <translation id="1254117744268754948">Klasör Seçin</translation>
+<translation id="1258491128795710625">Yenilikler</translation>
 <translation id="1265739287306757398">Nasıl Yapacağınızı Öğrenin</translation>
 <translation id="1272079795634619415">Durdur</translation>
 <translation id="1275718070701477396">Seçildi</translation>
@@ -564,6 +565,7 @@
 <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="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>
 <translation id="5758631781033351321">Okuma listenizi burada bulabilirsiniz</translation>
 <translation id="5765456154762864099">Menü → Ayarlar → Varsayılan Tarayıcı</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
index 9ba06e5..829999d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Шукати фразу ${searchPhrase} у Chrome</translation>
 <translation id="1242044645101871359">Увійти знову</translation>
 <translation id="1254117744268754948">Вибрати папку</translation>
+<translation id="1258491128795710625">Що нового</translation>
 <translation id="1265739287306757398">Докладніше</translation>
 <translation id="1272079795634619415">Зупинити</translation>
 <translation id="1275718070701477396">Вибрано</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Під час входу в обліковий запис виникла проблема.</translation>
 <translation id="5731784586962650619">Паролі в інших додатках</translation>
 <translation id="5737974891429562743">Дані для входу в обліковий запис застаріли. Оновіть їх, щоб почати синхронізацію.</translation>
+<translation id="5738385766833540397">Укажіть, як ви хочете отримувати сповіщення про зниження цін на товари, які відстежуєте</translation>
 <translation id="5738887413654608789">Ви зможете знаходити відповідні веб-сторінки на основі об’єктів поблизу.</translation>
 <translation id="5758631781033351321">Тут відображатиметься ваш список читання</translation>
 <translation id="5765456154762864099">Меню → Налаштування → Веб-переглядач за умовчанням</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
index 61ef4c0b..2bfd9876 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">‏Chrome میں {searchPhrase}$ تلاش کریں</translation>
 <translation id="1242044645101871359">دوبارہ سائن ان کریں</translation>
 <translation id="1254117744268754948">فولڈر کا انتخاب کریں</translation>
+<translation id="1258491128795710625">نیا کیا ہے</translation>
 <translation id="1265739287306757398">طریقہ جانیں</translation>
 <translation id="1272079795634619415">روکیں</translation>
 <translation id="1275718070701477396">منتخب</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">معذرت، آپ کے اکاؤنٹ میں سائن ان کرتے ہوئے ایک مسئلہ پیش آگیا۔</translation>
 <translation id="5731784586962650619">دیگر ایپ میں پاس ورڈز</translation>
 <translation id="5737974891429562743">اکاؤنٹ سائن ان کی تفصیلات پرانی ہیں۔ مطابقت پذیری شروع کرنے کیلئے اپ ڈیٹ کریں۔</translation>
+<translation id="5738385766833540397">اس بات کا نظم کریں کہ آپ کو ان پروڈکٹس کے لیے قیمتوں میں کمی کے الرٹس کیسے موصول ہوتے ہیں جنہیں آپ ٹریک کرتے ہیں</translation>
 <translation id="5738887413654608789">یہ آپ کو آپ کے قرب و جوار کی بنیاد پر متعلقہ ویب صفحات کو دریافت کرنے کی اجازت دیتا ہے۔</translation>
 <translation id="5758631781033351321">آپ اپنی پڑھنے کی فہرست یہاں پائیں گے</translation>
 <translation id="5765456154762864099">مینو ← ترتیبات ← ڈیفالٹ براؤزر</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
index 5354be0..0917a50 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -43,6 +43,7 @@
 <translation id="1229222343402087523">${searchPhrase} – Chrome orqali qidirish</translation>
 <translation id="1242044645101871359">Qaytadan kiring</translation>
 <translation id="1254117744268754948">Jildni tanlash</translation>
+<translation id="1258491128795710625">Yangi xususiyatlar</translation>
 <translation id="1265739287306757398">Batafsil axborot</translation>
 <translation id="1272079795634619415">To‘xtatish</translation>
 <translation id="1275718070701477396">Tanlandi</translation>
@@ -568,6 +569,7 @@
 <translation id="5728700505257787410">Hisobga kirib bo‘lmadi.</translation>
 <translation id="5731784586962650619">Boshqa ilovalardagi parollar</translation>
 <translation id="5737974891429562743">Hisob ma’lumotlaringiz eskirgan. Sinxronizatsiyani boshlash uchun ularni yangilang.</translation>
+<translation id="5738385766833540397">Siz kuzatayotgan mahsulotlar uchun narxlarning tushishi haqida ogohlantirishlarni qanday qabul qilishingizni boshqaring</translation>
 <translation id="5738887413654608789">Yaqin-atrofingizdagi qurilmalar tarqatayotgan veb-sahifalarni aniqlash imkonini beradi.</translation>
 <translation id="5758631781033351321">Brauzer mutolaa roʻyxati shu yerda chiqadi</translation>
 <translation id="5765456154762864099">Menyu → Sozlamalar → Standart brauzer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
index bc74e65..7ba59ca 100644
--- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Tìm kiếm ${searchPhrase} trên Chrome</translation>
 <translation id="1242044645101871359">Đăng nhập lại</translation>
 <translation id="1254117744268754948">Chọn thư mục</translation>
+<translation id="1258491128795710625">Tính năng mới</translation>
 <translation id="1265739287306757398">Tìm hiểu cách thức</translation>
 <translation id="1272079795634619415">Dừng</translation>
 <translation id="1275718070701477396">Đã chọn</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Rất tiếc, đã xảy ra sự cố khi đăng nhập tài khoản của bạn.</translation>
 <translation id="5731784586962650619">Mật khẩu trong các ứng dụng khác</translation>
 <translation id="5737974891429562743">Thông tin chi tiết để đăng nhập tài khoản đã lỗi thời. Hãy cập nhật để bắt đầu đồng bộ hóa.</translation>
+<translation id="5738385766833540397">Quản lý cách nhận thông báo khi các sản phẩm bạn theo dõi được giảm giá</translation>
 <translation id="5738887413654608789">Tính năng này cho phép bạn khám phá các trang web có liên quan dựa trên những thứ xung quanh bạn.</translation>
 <translation id="5758631781033351321">Bạn sẽ thấy danh sách đọc ở đây</translation>
 <translation id="5765456154762864099">Trình đơn → Cài đặt → Trình duyệt mặc định</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
index e219249..308719a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">在 Chrome 中搜索 ${searchPhrase}</translation>
 <translation id="1242044645101871359">重新登录</translation>
 <translation id="1254117744268754948">选择文件夹</translation>
+<translation id="1258491128795710625">新变化</translation>
 <translation id="1265739287306757398">了解如何操作</translation>
 <translation id="1272079795634619415">停止</translation>
 <translation id="1275718070701477396">已选择</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">贵单位要求使用无痕模式</translation>
 <translation id="1323735185997015385">删除</translation>
 <translation id="132683371494960526">点按两次即可更改父文件夹。</translation>
+<translation id="1335348992705722518">管理设置…</translation>
 <translation id="1340643665687018190">关闭菜单</translation>
 <translation id="1358214951266274152">访问您复制的链接</translation>
 <translation id="1360432990279830238">退出帐号并关闭同步功能?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">粘贴并搜索</translation>
 <translation id="4223967053752765281">贵单位关闭了登录功能。您仍可在此设备上查看自己的书签、历史记录、密码及其他设置。如果您做出更改,这些更改将不会同步到您的帐号。</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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">很抱歉,登录您的帐号时出现问题。</translation>
 <translation id="5731784586962650619">在其他应用中填充密码</translation>
 <translation id="5737974891429562743">帐号登录详细信息已过期,请进行更新以开始同步。</translation>
+<translation id="5738385766833540397">管理您所跟踪商品的降价提醒接收方式</translation>
 <translation id="5738887413654608789">这样可让您找到与目前周遭环境相关的网页。</translation>
 <translation id="5758631781033351321">您的阅读清单会显示在此处</translation>
 <translation id="5765456154762864099">菜单 → 设置 → 默认浏览器</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
index d72c9481..fa9014e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">在 Chrome 中搜尋「${searchPhrase}」</translation>
 <translation id="1242044645101871359">再次登入</translation>
 <translation id="1254117744268754948">選擇資料夾</translation>
+<translation id="1258491128795710625">新功能</translation>
 <translation id="1265739287306757398">操作說明</translation>
 <translation id="1272079795634619415">停止</translation>
 <translation id="1275718070701477396">已選取</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">很抱歉,登入您的帳戶時發生問題。</translation>
 <translation id="5731784586962650619">其他應用程式中的密碼</translation>
 <translation id="5737974891429562743">帳戶登入資料已過時。請先更新,然後開始同步資料。</translation>
+<translation id="5738385766833540397">管理如何接收已追蹤產品的減價通知</translation>
 <translation id="5738887413654608789">這樣您便可根據周圍環境探索相關網頁。</translation>
 <translation id="5758631781033351321">您可在此查看閱讀清單</translation>
 <translation id="5765456154762864099">「選單」→「設定」→「預設瀏覽器」</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 4cdbab3..8586b2fe 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">在 Chrome 中搜尋「${searchPhrase}」</translation>
 <translation id="1242044645101871359">重新登入</translation>
 <translation id="1254117744268754948">選擇資料夾</translation>
+<translation id="1258491128795710625">新功能</translation>
 <translation id="1265739287306757398">操作說明</translation>
 <translation id="1272079795634619415">停止</translation>
 <translation id="1275718070701477396">已選取</translation>
@@ -55,6 +56,7 @@
 <translation id="1322735045095424339">貴機構規定必須使用無痕模式</translation>
 <translation id="1323735185997015385">刪除</translation>
 <translation id="132683371494960526">輕觸兩下即可變更上層資料夾。</translation>
+<translation id="1335348992705722518">管理設定...</translation>
 <translation id="1340643665687018190">關閉選單</translation>
 <translation id="1358214951266274152">前往你複製的連結</translation>
 <translation id="1360432990279830238">要登出並關閉同步處理功能嗎?</translation>
@@ -383,6 +385,7 @@
 <translation id="4187450337729239226">貼上並搜尋</translation>
 <translation id="4223967053752765281">貴機構已關閉登入功能。你仍然可以在這部裝置上查看自己的書籤、歷史記錄、密碼和其他設定,但你所做的變更將不會同步到帳戶。</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>
@@ -562,6 +565,7 @@
 <translation id="5728700505257787410">很抱歉,登入您的帳戶時發生問題。</translation>
 <translation id="5731784586962650619">其他應用程式中的密碼</translation>
 <translation id="5737974891429562743">帳戶登入詳細資訊過舊。請先更新,再開始進行同步處理。</translation>
+<translation id="5738385766833540397">管理如何接收追蹤產品的降價快訊</translation>
 <translation id="5738887413654608789">可讓你找到與目前周遭環境相關的網頁。</translation>
 <translation id="5758631781033351321">這裡會顯示你的閱讀清單</translation>
 <translation id="5765456154762864099">「選單」→「設定」→「預設瀏覽器」</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
index 3574570..b3ca8d0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -42,6 +42,7 @@
 <translation id="1229222343402087523">Sesha i-${searchPhrase} ku-Chrome</translation>
 <translation id="1242044645101871359">Phinda Ungene Ngemvume</translation>
 <translation id="1254117744268754948">Khetha ifolda</translation>
+<translation id="1258491128795710625">Yini okusha</translation>
 <translation id="1265739287306757398">Funda ukuthi kanjani</translation>
 <translation id="1272079795634619415">Misa</translation>
 <translation id="1275718070701477396">Ikhethiwe</translation>
@@ -564,6 +565,7 @@
 <translation id="5728700505257787410">Uxolo, kube neninga ukungena ngemvume ku-akhawunti yakho.</translation>
 <translation id="5731784586962650619">Amaphasiwedi Kwamanye ama-App</translation>
 <translation id="5737974891429562743">Imininingwane yokungena ngemvume iphelelwe isikhathi. Buyekeza ukuze uqale ukuvumelanisa.</translation>
+<translation id="5738385766833540397">Phatha ukuthi uthola kanjani izexwayiso zokwehliswa kwentengo zemikhiqizo oyilandelelayo</translation>
 <translation id="5738887413654608789">Lokhu kukuvumela ukuthi uthole amakhasi ewebhu ahambisanayo asuselwa kuzindawo zakho eziseduze.</translation>
 <translation id="5758631781033351321">Uzothola uhlu lwakho lokufunda lapha</translation>
 <translation id="5765456154762864099">Imeny → Amasethingi → Ibhrawuza Ezenzakalelayo</translation>
diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn
index 5e28b68..b44a90f 100644
--- a/ios/chrome/browser/BUILD.gn
+++ b/ios/chrome/browser/BUILD.gn
@@ -19,8 +19,6 @@
     "chrome_browser_provider_observer_bridge.mm",
     "chrome_constants.cc",
     "chrome_constants.h",
-    "chrome_url_util.h",
-    "chrome_url_util.mm",
     "installation_notifier.h",
     "installation_notifier.mm",
     "ios_chrome_io_thread.h",
@@ -78,6 +76,8 @@
     "//ios/chrome/browser/ui/first_run:field_trial",
     "//ios/chrome/browser/ui/omnibox",
     "//ios/chrome/browser/ui/toolbar_container:feature_flags",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:feature_flags",
     "//ios/chrome/common",
     "//ios/components/io_thread",
@@ -92,7 +92,6 @@
     "//url",
   ]
   public_deps = [
-    ":chrome_url_constants",
     ":utils",
     "//ios/chrome/browser/application_context",
     "//ios/chrome/browser/paths",
@@ -122,21 +121,6 @@
   ]
 }
 
-source_set("chrome_url_constants") {
-  configs += [ "//build/config/compiler:enable_arc" ]
-  sources = [
-    "chrome_url_constants.cc",
-    "chrome_url_constants.h",
-  ]
-
-  deps = [
-    "//base",
-    "//components/optimization_guide/optimization_guide_internals/webui:url_constants",
-    "//ios/components/webui:url_constants",
-  ]
-  frameworks = [ "UIKit.framework" ]
-}
-
 source_set("browser_impl") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
@@ -245,8 +229,8 @@
   sources = [
     "browser_about_rewriter_unittest.cc",
     "chrome_browser_provider_observer_bridge_unittest.mm",
-    "chrome_url_util_unittest.mm",
     "installation_notifier_unittest.mm",
+    "url/url_util_unittest.mm",
   ]
   deps = [
     ":browser",
@@ -256,6 +240,8 @@
     "//components/prefs:test_support",
     "//components/proxy_config",
     "//components/variations",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/components/webui:url_constants",
     "//ios/public/provider/chrome/browser",
     "//ios/public/provider/chrome/browser/signin",
diff --git a/ios/chrome/browser/app_launcher/BUILD.gn b/ios/chrome/browser/app_launcher/BUILD.gn
index 0d07305..bb1053f 100644
--- a/ios/chrome/browser/app_launcher/BUILD.gn
+++ b/ios/chrome/browser/app_launcher/BUILD.gn
@@ -34,6 +34,7 @@
     "//ios/chrome/browser/policy_url_blocking:util",
     "//ios/chrome/browser/reading_list",
     "//ios/chrome/browser/tabs",
+    "//ios/chrome/browser/url",
     "//ios/chrome/browser/web_state_list",
     "//ios/web/common",
     "//ios/web/public",
@@ -84,6 +85,7 @@
     "//ios/chrome/browser/prefs",
     "//ios/chrome/browser/prefs:browser_prefs",
     "//ios/chrome/browser/reading_list",
+    "//ios/chrome/browser/url",
     "//ios/chrome/browser/web:web_internal",
     "//ios/chrome/browser/web_state_list",
     "//ios/web/common:features",
diff --git a/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm b/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm
index b3e770b9..c125a68 100644
--- a/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm
+++ b/ios/chrome/browser/app_launcher/app_launcher_tab_helper.mm
@@ -14,10 +14,10 @@
 #import "ios/chrome/browser/app_launcher/app_launcher_abuse_detector.h"
 #import "ios/chrome/browser/app_launcher/app_launcher_tab_helper_delegate.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/policy_url_blocking/policy_url_blocking_service.h"
 #import "ios/chrome/browser/policy_url_blocking/policy_url_blocking_util.h"
 #import "ios/chrome/browser/reading_list/reading_list_model_factory.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/web/common/url_scheme_util.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
diff --git a/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm b/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm
index 2e95828..ded805f2 100644
--- a/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm
+++ b/ios/chrome/browser/app_launcher/app_launcher_tab_helper_unittest.mm
@@ -18,10 +18,10 @@
 #import "ios/chrome/browser/app_launcher/app_launcher_tab_helper_delegate.h"
 #import "ios/chrome/browser/app_launcher/fake_app_launcher_abuse_detector.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/policy/enterprise_policy_test_helper.h"
 #import "ios/chrome/browser/policy_url_blocking/policy_url_blocking_service.h"
 #import "ios/chrome/browser/reading_list/reading_list_model_factory.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/web/common/features.h"
 #import "ios/web/public/test/fakes/fake_navigation_manager.h"
 #import "ios/web/public/test/fakes/fake_web_state.h"
diff --git a/ios/chrome/browser/autocomplete/BUILD.gn b/ios/chrome/browser/autocomplete/BUILD.gn
index 6244b03..fd73e20 100644
--- a/ios/chrome/browser/autocomplete/BUILD.gn
+++ b/ios/chrome/browser/autocomplete/BUILD.gn
@@ -48,6 +48,8 @@
     "//ios/chrome/browser/search_engines",
     "//ios/chrome/browser/signin",
     "//ios/chrome/browser/sync",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/components/webui:url_constants",
     "//ios/public/provider/chrome/browser",
diff --git a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm
index 6b6746c..497bfdd3 100644
--- a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm
+++ b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm
@@ -27,7 +27,6 @@
 #import "ios/chrome/browser/autocomplete/tab_matcher_impl.h"
 #import "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/history/history_service_factory.h"
 #import "ios/chrome/browser/history/top_sites_factory.h"
 #import "ios/chrome/browser/main/browser.h"
@@ -37,6 +36,7 @@
 #import "ios/chrome/browser/search_engines/template_url_service_factory.h"
 #import "ios/chrome/browser/signin/identity_manager_factory.h"
 #import "ios/chrome/browser/sync/sync_service_factory.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "services/network/public/cpp/shared_url_loader_factory.h"
diff --git a/ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.mm b/ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.mm
index ea9ce20..1e204f158 100644
--- a/ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.mm
+++ b/ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.mm
@@ -6,7 +6,7 @@
 
 #import "base/check_op.h"
 #import "base/strings/string_util.h"
-#import "ios/chrome/browser/chrome_url_util.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "url/url_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/autocomplete/in_memory_url_index_factory.cc b/ios/chrome/browser/autocomplete/in_memory_url_index_factory.cc
index 1e6f852f..be9344b 100644
--- a/ios/chrome/browser/autocomplete/in_memory_url_index_factory.cc
+++ b/ios/chrome/browser/autocomplete/in_memory_url_index_factory.cc
@@ -14,9 +14,9 @@
 #include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "ios/chrome/browser/browser_state/browser_state_otr_helper.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/history/history_service_factory.h"
 #include "ios/chrome/browser/search_engines/template_url_service_factory.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/components/webui/web_ui_url_constants.h"
 
 namespace ios {
diff --git a/ios/chrome/browser/browser_about_rewriter.cc b/ios/chrome/browser/browser_about_rewriter.cc
index db40be1..a6e0401 100644
--- a/ios/chrome/browser/browser_about_rewriter.cc
+++ b/ios/chrome/browser/browser_about_rewriter.cc
@@ -9,8 +9,8 @@
 #include "base/check.h"
 #include "base/feature_list.h"
 #include "components/url_formatter/url_fixer.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/ui/ui_feature_flags.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/components/webui/web_ui_url_constants.h"
 #include "url/url_constants.h"
 
diff --git a/ios/chrome/browser/browser_about_rewriter_unittest.cc b/ios/chrome/browser/browser_about_rewriter_unittest.cc
index 721a231..153dfc57 100644
--- a/ios/chrome/browser/browser_about_rewriter_unittest.cc
+++ b/ios/chrome/browser/browser_about_rewriter_unittest.cc
@@ -5,7 +5,7 @@
 #include "ios/chrome/browser/browser_about_rewriter.h"
 
 #include "base/test/gtest_util.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "testing/platform_test.h"
 #include "url/gurl.h"
 
diff --git a/ios/chrome/browser/browser_state/BUILD.gn b/ios/chrome/browser/browser_state/BUILD.gn
index aeaccb0..3e35e472 100644
--- a/ios/chrome/browser/browser_state/BUILD.gn
+++ b/ios/chrome/browser/browser_state/BUILD.gn
@@ -31,9 +31,9 @@
     "//components/sync_preferences",
     "//components/variations/net",
     "//components/webdata_services",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/net:net_types",
     "//ios/chrome/browser/prefs:pref_names",
+    "//ios/chrome/browser/url:constants",
     "//ios/components/webui:url_constants",
     "//ios/web/public/webui",
   ]
@@ -143,6 +143,7 @@
     "//ios/chrome/browser/ui/voice",
     "//ios/chrome/browser/undo",
     "//ios/chrome/browser/unified_consent",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list/web_usage_enabler",
     "//ios/chrome/browser/webdata_services",
     "//ios/components/cookie_util",
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state.mm b/ios/chrome/browser/browser_state/chrome_browser_state.mm
index 3cad0835..2791b60 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state.mm
+++ b/ios/chrome/browser/browser_state/chrome_browser_state.mm
@@ -12,7 +12,7 @@
 #import "base/task/sequenced_task_runner.h"
 #import "components/sync_preferences/pref_service_syncable.h"
 #import "components/variations/net/variations_http_headers.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ios/web/public/thread/web_thread.h"
 #import "ios/web/public/web_state.h"
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
index bae4a73..90277a1 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
@@ -34,7 +34,6 @@
 #import "components/signin/public/base/signin_pref_names.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/content_settings/cookie_settings_factory.h"
 #import "ios/chrome/browser/content_settings/host_content_settings_map_factory.h"
 #import "ios/chrome/browser/ios_chrome_io_thread.h"
@@ -42,6 +41,7 @@
 #import "ios/chrome/browser/net/ios_chrome_http_user_agent_settings.h"
 #import "ios/chrome/browser/net/ios_chrome_network_delegate.h"
 #import "ios/chrome/browser/net/ios_chrome_url_request_context_getter.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/net/cookies/system_cookie_store.h"
 #import "ios/web/public/browsing_data/system_cookie_store_util.h"
 #import "ios/web/public/thread/web_task_traits.h"
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/BUILD.gn b/ios/chrome/browser/crash_report/breadcrumbs/BUILD.gn
index 2ae66da..b25d4eb7 100644
--- a/ios/chrome/browser/crash_report/breadcrumbs/BUILD.gn
+++ b/ios/chrome/browser/crash_report/breadcrumbs/BUILD.gn
@@ -10,12 +10,12 @@
     "//components/breadcrumbs/core",
     "//components/infobars/core",
     "//components/keyed_service/ios",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/infobars",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/overlays",
     "//ios/chrome/browser/overlays/public/web_content_area",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/net",
     "//ios/web/public",
@@ -60,7 +60,6 @@
     ":breadcrumbs",
     "//base/test:test_support",
     "//components/breadcrumbs/core",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state:test_support",
     "//ios/chrome/browser/crash_report",
     "//ios/chrome/browser/download",
@@ -72,6 +71,7 @@
     "//ios/chrome/browser/overlays/test",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/infobars/test",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:test_support",
     "//ios/chrome/test:test_support",
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.mm b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.mm
index 2032bc5f..ef04a78 100644
--- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.mm
+++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper.mm
@@ -8,9 +8,9 @@
 #import "base/strings/stringprintf.h"
 #import "components/breadcrumbs/core/breadcrumb_manager_keyed_service.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_keyed_service_factory.h"
 #import "ios/chrome/browser/infobars/infobar_manager_impl.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/net/protocol_handler_util.h"
 #import "ios/web/public/favicon/favicon_url.h"
 #import "ios/web/public/navigation/navigation_context.h"
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper_unittest.mm b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper_unittest.mm
index 77b5cebf..ed18841 100644
--- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper_unittest.mm
+++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_tab_helper_unittest.mm
@@ -10,12 +10,12 @@
 #import "components/breadcrumbs/core/breadcrumb_manager_keyed_service.h"
 #import "components/infobars/core/infobar_delegate.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_keyed_service_factory.h"
 #import "ios/chrome/browser/infobars/infobar_ios.h"
 #import "ios/chrome/browser/infobars/infobar_manager_impl.h"
 #import "ios/chrome/browser/infobars/test/fake_infobar_delegate.h"
 #import "ios/chrome/browser/infobars/test/fake_infobar_ios.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/security/ssl_status.h"
 #import "ios/web/public/test/error_test_util.h"
 #import "ios/web/public/test/fakes/fake_navigation_context.h"
diff --git a/ios/chrome/browser/external_files/BUILD.gn b/ios/chrome/browser/external_files/BUILD.gn
index cd392fb..3e8d803 100644
--- a/ios/chrome/browser/external_files/BUILD.gn
+++ b/ios/chrome/browser/external_files/BUILD.gn
@@ -22,6 +22,7 @@
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/sessions",
+    "//ios/chrome/browser/url",
     "//ios/chrome/browser/web_state_list",
   ]
 }
diff --git a/ios/chrome/browser/external_files/external_file_remover_impl.mm b/ios/chrome/browser/external_files/external_file_remover_impl.mm
index 822778c..fe1270b 100644
--- a/ios/chrome/browser/external_files/external_file_remover_impl.mm
+++ b/ios/chrome/browser/external_files/external_file_remover_impl.mm
@@ -17,11 +17,11 @@
 #import "components/sessions/core/tab_restore_service.h"
 #import "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/main/browser_list.h"
 #import "ios/chrome/browser/main/browser_list_factory.h"
 #import "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_factory.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
diff --git a/ios/chrome/browser/favicon/BUILD.gn b/ios/chrome/browser/favicon/BUILD.gn
index 84190ef..98bac79 100644
--- a/ios/chrome/browser/favicon/BUILD.gn
+++ b/ios/chrome/browser/favicon/BUILD.gn
@@ -30,6 +30,7 @@
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/history",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/ui/favicon",
     "//ios/components/webui:url_constants",
     "//ios/web",
diff --git a/ios/chrome/browser/favicon/favicon_client_impl.mm b/ios/chrome/browser/favicon/favicon_client_impl.mm
index 0722fb9..811cd2d 100644
--- a/ios/chrome/browser/favicon/favicon_client_impl.mm
+++ b/ios/chrome/browser/favicon/favicon_client_impl.mm
@@ -14,7 +14,7 @@
 #import "components/favicon_base/favicon_types.h"
 #import "components/favicon_base/select_favicon_frames.h"
 #import "components/grit/components_scaled_resources.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ui/base/layout.h"
 #import "ui/base/resource/resource_bundle.h"
diff --git a/ios/chrome/browser/follow/BUILD.gn b/ios/chrome/browser/follow/BUILD.gn
index 6b0214e..68a8bd32 100644
--- a/ios/chrome/browser/follow/BUILD.gn
+++ b/ios/chrome/browser/follow/BUILD.gn
@@ -65,6 +65,7 @@
     "//ios/chrome/browser/follow:enums",
     "//ios/chrome/browser/follow:utils",
     "//ios/chrome/browser/history",
+    "//ios/chrome/browser/url",
     "//ios/web/public",
     "//ios/web/public/js_messaging",
     "//ui/base",
diff --git a/ios/chrome/browser/follow/follow_tab_helper.h b/ios/chrome/browser/follow/follow_tab_helper.h
index def5445..82f1043f 100644
--- a/ios/chrome/browser/follow/follow_tab_helper.h
+++ b/ios/chrome/browser/follow/follow_tab_helper.h
@@ -54,6 +54,9 @@
   // Removes the follow menu updater.
   void RemoveFollowMenuUpdater();
 
+  // Updates the follow menu item.
+  void UpdateFollowMenuItem();
+
  private:
   friend class web::WebStateUserData<FollowTabHelper>;
 
@@ -88,7 +91,7 @@
 
   // Updates follow menu item. `web_page_urls` is the page url object used to
   // check follow status.
-  void UpdateFollowMenuItem(WebPageURLs* web_page_urls);
+  void UpdateFollowMenuItemWithURL(WebPageURLs* web_page_urls);
 
   // Presents the Follow in-product help (IPH) for `recommended_url`.
   void PresentFollowIPH(NSURL* recommended_url);
diff --git a/ios/chrome/browser/follow/follow_tab_helper.mm b/ios/chrome/browser/follow/follow_tab_helper.mm
index a860ad9..69e61e1 100644
--- a/ios/chrome/browser/follow/follow_tab_helper.mm
+++ b/ios/chrome/browser/follow/follow_tab_helper.mm
@@ -17,7 +17,6 @@
 #import "components/history/core/browser/history_types.h"
 #import "components/keyed_service/core/service_access_type.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/feature_engagement/tracker_factory.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/follow/follow_action_state.h"
@@ -28,6 +27,7 @@
 #import "ios/chrome/browser/follow/follow_service_factory.h"
 #import "ios/chrome/browser/follow/follow_util.h"
 #import "ios/chrome/browser/history/history_service_factory.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/web/public/js_messaging/web_frame.h"
 #import "ios/web/public/js_messaging/web_frame_util.h"
@@ -74,12 +74,14 @@
     id<FollowMenuUpdater> follow_menu_updater) {
   DCHECK(web_state_);
   follow_menu_updater_ = follow_menu_updater;
-  if (should_update_follow_item_ && !web_state_->IsLoading()) {
-    // If the page has finished loading check if the Follow menu item should be
-    // updated, if not it will be updated once the page finishes loading.
+}
+
+void FollowTabHelper::UpdateFollowMenuItem() {
+  if (should_update_follow_item_) {
     FollowJavaScriptFeature::GetInstance()->GetWebPageURLs(
-        web_state_, base::BindOnce(&FollowTabHelper::UpdateFollowMenuItem,
-                                   weak_ptr_factory_.GetWeakPtr()));
+        web_state_,
+        base::BindOnce(&FollowTabHelper::UpdateFollowMenuItemWithURL,
+                       weak_ptr_factory_.GetWeakPtr()));
   }
 }
 
@@ -146,7 +148,7 @@
 
   // Update follow menu option if needed.
   if (follow_menu_updater_ && should_update_follow_item_) {
-    UpdateFollowMenuItem(web_page_urls);
+    UpdateFollowMenuItemWithURL(web_page_urls);
   }
 
   // Show follow in-product help (IPH) if eligible.
@@ -234,7 +236,7 @@
   }
 }
 
-void FollowTabHelper::UpdateFollowMenuItem(WebPageURLs* web_page_urls) {
+void FollowTabHelper::UpdateFollowMenuItemWithURL(WebPageURLs* web_page_urls) {
   DCHECK(web_state_);
 
   web::WebFrame* web_frame = web::GetMainFrame(web_state_);
diff --git a/ios/chrome/browser/history/BUILD.gn b/ios/chrome/browser/history/BUILD.gn
index ed9edd3..577e708 100644
--- a/ios/chrome/browser/history/BUILD.gn
+++ b/ios/chrome/browser/history/BUILD.gn
@@ -36,6 +36,7 @@
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/signin",
+    "//ios/chrome/browser/url:constants",
     "//ios/components/webui:url_constants",
     "//ios/web",
     "//net",
@@ -63,6 +64,7 @@
     "//ios/chrome/browser/complex_tasks",
     "//ios/chrome/browser/sessions",
     "//ios/chrome/browser/translate",
+    "//ios/chrome/browser/url:constants",
     "//ios/web",
     "//ui/base",
     "//url",
@@ -82,6 +84,7 @@
     "//components/keyed_service/core",
     "//ios/chrome/browser/",
     "//ios/chrome/browser/browser_state:test_support",
+    "//ios/chrome/browser/url:constants",
     "//ios/web",
     "//ios/web/public/test/fakes",
     "//testing/gtest",
diff --git a/ios/chrome/browser/history/history_tab_helper.mm b/ios/chrome/browser/history/history_tab_helper.mm
index 7de0ed2a..f32ee68 100644
--- a/ios/chrome/browser/history/history_tab_helper.mm
+++ b/ios/chrome/browser/history/history_tab_helper.mm
@@ -12,12 +12,12 @@
 #import "components/strings/grit/components_strings.h"
 #import "components/translate/core/common/language_detection_details.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/complex_tasks/ios_content_record_task_id.h"
 #import "ios/chrome/browser/complex_tasks/ios_task_tab_helper.h"
 #import "ios/chrome/browser/history/history_service_factory.h"
 #import "ios/chrome/browser/sessions/ios_chrome_session_tab_helper.h"
 #import "ios/chrome/browser/translate/chrome_ios_translate_client.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/navigation/navigation_context.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
diff --git a/ios/chrome/browser/history/history_tab_helper_unittest.mm b/ios/chrome/browser/history/history_tab_helper_unittest.mm
index 1f397cd..649eafa 100644
--- a/ios/chrome/browser/history/history_tab_helper_unittest.mm
+++ b/ios/chrome/browser/history/history_tab_helper_unittest.mm
@@ -13,8 +13,8 @@
 #import "components/history/core/browser/history_service.h"
 #import "components/keyed_service/core/service_access_type.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/history/history_service_factory.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/test/fakes/fake_navigation_context.h"
 #import "ios/web/public/test/fakes/fake_web_state.h"
diff --git a/ios/chrome/browser/history/history_utils.cc b/ios/chrome/browser/history/history_utils.cc
index 18ea06f0..f768a0f 100644
--- a/ios/chrome/browser/history/history_utils.cc
+++ b/ios/chrome/browser/history/history_utils.cc
@@ -5,7 +5,7 @@
 #include "ios/chrome/browser/history/history_utils.h"
 
 #include "components/dom_distiller/core/url_constants.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/components/webui/web_ui_url_constants.h"
 #include "url/gurl.h"
 #include "url/url_constants.h"
diff --git a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
index e0e61ee..08ca64c 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
+++ b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
@@ -21,8 +21,6 @@
  public:
   ~LinkToTextTabHelper() override;
 
-  static void CreateForWebState(web::WebState* web_state);
-
   // Returns whether the link to text feature should be offered for the current
   // user selection.
   bool ShouldOffer();
diff --git a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
index 37d7bb0..e3895b0d9 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
+++ b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
@@ -84,15 +84,6 @@
 
 LinkToTextTabHelper::~LinkToTextTabHelper() {}
 
-// static
-void LinkToTextTabHelper::CreateForWebState(web::WebState* web_state) {
-  DCHECK(web_state);
-  if (!FromWebState(web_state)) {
-    web_state->SetUserData(
-        UserDataKey(), base::WrapUnique(new LinkToTextTabHelper(web_state)));
-  }
-}
-
 bool LinkToTextTabHelper::ShouldOffer() {
   if (!shared_highlighting::ShouldOfferLinkToText(
           web_state_->GetLastCommittedURL())) {
diff --git a/ios/chrome/browser/metrics/BUILD.gn b/ios/chrome/browser/metrics/BUILD.gn
index a034d526..da48c43 100644
--- a/ios/chrome/browser/metrics/BUILD.gn
+++ b/ios/chrome/browser/metrics/BUILD.gn
@@ -108,6 +108,7 @@
     "//ios/chrome/browser/ui/main:scene_state_header",
     "//ios/chrome/browser/ui/ntp:feature_flags",
     "//ios/chrome/browser/ui/overscroll_actions",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/variations",
     "//ios/chrome/browser/variations:ios_chrome_ui_string_overrider_factory",
     "//ios/chrome/browser/web_state_list",
@@ -182,12 +183,12 @@
     "//components/google/core/common",
     "//components/previous_session_info",
     "//components/ukm/ios:ukm_url_recorder",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/prerender",
     "//ios/chrome/browser/sessions:restoration_agent",
     "//ios/chrome/browser/sessions:restoration_observer",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/components/webui:url_constants",
     "//ios/web",
@@ -217,6 +218,7 @@
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/web",
     "//services/metrics/public/cpp:ukm_builders",
diff --git a/ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.mm b/ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.mm
index c6ada812..fda91e5 100644
--- a/ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.mm
+++ b/ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.mm
@@ -6,7 +6,7 @@
 
 #import "base/feature_list.h"
 #import "base/metrics/histogram_macros.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ios/web/common/features.h"
 #import "ios/web/public/navigation/navigation_context.h"
diff --git a/ios/chrome/browser/metrics/new_tab_page_uma.mm b/ios/chrome/browser/metrics/new_tab_page_uma.mm
index 0cd8365..409fda3c 100644
--- a/ios/chrome/browser/metrics/new_tab_page_uma.mm
+++ b/ios/chrome/browser/metrics/new_tab_page_uma.mm
@@ -7,7 +7,7 @@
 #import "base/metrics/histogram_macros.h"
 #import "components/google/core/common/google_util.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/web/public/web_state.h"
 #import "url/gurl.h"
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm b/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm
index 96b1caff..9ae155e 100644
--- a/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm
+++ b/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm
@@ -9,11 +9,11 @@
 #import "base/metrics/histogram_macros.h"
 #import "components/previous_session_info/previous_session_info.h"
 #import "components/ukm/ios/ukm_url_recorder.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/prerender/prerender_service.h"
 #import "ios/chrome/browser/prerender/prerender_service_factory.h"
 #import "ios/chrome/browser/sessions/session_restoration_browser_agent.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ios/web/public/navigation/navigation_context.h"
diff --git a/ios/chrome/browser/ntp/BUILD.gn b/ios/chrome/browser/ntp/BUILD.gn
index 4a3c72e..2fd61aa 100644
--- a/ios/chrome/browser/ntp/BUILD.gn
+++ b/ios/chrome/browser/ntp/BUILD.gn
@@ -22,6 +22,7 @@
     "//ios/chrome/browser/discover_feed:constants",
     "//ios/chrome/browser/flags:system_flags",
     "//ios/chrome/browser/ui:feature_flags",
+    "//ios/chrome/browser/url:constants",
     "//ios/components/webui:url_constants",
     "//ios/web/common:features",
     "//ios/web/public",
@@ -62,6 +63,7 @@
     "//ios/chrome/browser/ntp",
     "//ios/chrome/browser/ntp_snippets:ntp_snippets",
     "//ios/chrome/browser/search_engines:search_engines",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:test_support",
     "//ios/chrome/test:test_support",
diff --git a/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter.mm b/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter.mm
index 4de9170..c98803e 100644
--- a/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter.mm
+++ b/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter.mm
@@ -7,9 +7,9 @@
 #import "components/prefs/pref_service.h"
 #import "components/url_formatter/url_fixer.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/prefs/pref_names.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ios/web/public/browser_state.h"
 
diff --git a/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter_unittest.mm b/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter_unittest.mm
index 455f162..3ad9281 100644
--- a/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter_unittest.mm
+++ b/ios/chrome/browser/ntp/browser_policy_new_tab_page_rewriter_unittest.mm
@@ -7,8 +7,8 @@
 #import "base/test/gtest_util.h"
 #import "components/sync_preferences/testing_pref_service_syncable.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/prefs/pref_names.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/test/fakes/fake_browser_state.h"
 #import "ios/web/public/test/web_task_environment.h"
 #import "testing/platform_test.h"
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 2513cb0..f7570ef 100644
--- a/ios/chrome/browser/ntp/new_tab_page_tab_helper.mm
+++ b/ios/chrome/browser/ntp/new_tab_page_tab_helper.mm
@@ -11,9 +11,9 @@
 #import "base/strings/string_util.h"
 #import "base/strings/sys_string_conversions.h"
 #import "components/strings/grit/components_strings.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ntp/features.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper_delegate.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/common/features.h"
 #import "ios/web/public/navigation/navigation_context.h"
 #import "ios/web/public/navigation/navigation_item.h"
diff --git a/ios/chrome/browser/ntp/new_tab_page_tab_helper_unittest.mm b/ios/chrome/browser/ntp/new_tab_page_tab_helper_unittest.mm
index 44a84ec..1cb913d 100644
--- a/ios/chrome/browser/ntp/new_tab_page_tab_helper_unittest.mm
+++ b/ios/chrome/browser/ntp/new_tab_page_tab_helper_unittest.mm
@@ -11,11 +11,11 @@
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state_manager.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/favicon/ios_chrome_large_icon_service_factory.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper_delegate.h"
 #import "ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.h"
 #import "ios/chrome/browser/search_engines/template_url_service_factory.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_state_manager.h"
diff --git a/ios/chrome/browser/open_from_clipboard/BUILD.gn b/ios/chrome/browser/open_from_clipboard/BUILD.gn
index ec7be13..408b0c52 100644
--- a/ios/chrome/browser/open_from_clipboard/BUILD.gn
+++ b/ios/chrome/browser/open_from_clipboard/BUILD.gn
@@ -12,6 +12,7 @@
     "//base",
     "//components/open_from_clipboard",
     "//ios/chrome/browser",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/app_group",
     "//ios/components/webui:url_constants",
   ]
diff --git a/ios/chrome/browser/open_from_clipboard/create_clipboard_recent_content.mm b/ios/chrome/browser/open_from_clipboard/create_clipboard_recent_content.mm
index 91873d1..5599ce3 100644
--- a/ios/chrome/browser/open_from_clipboard/create_clipboard_recent_content.mm
+++ b/ios/chrome/browser/open_from_clipboard/create_clipboard_recent_content.mm
@@ -5,7 +5,7 @@
 #import "ios/chrome/browser/open_from_clipboard/create_clipboard_recent_content.h"
 
 #import "components/open_from_clipboard/clipboard_recent_content_ios.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/app_group/app_group_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 
diff --git a/ios/chrome/browser/policy/BUILD.gn b/ios/chrome/browser/policy/BUILD.gn
index 05a5e96..282b714 100644
--- a/ios/chrome/browser/policy/BUILD.gn
+++ b/ios/chrome/browser/policy/BUILD.gn
@@ -62,6 +62,7 @@
     "//components/autofill/core/browser",
     "//components/bookmarks/common",
     "//components/bookmarks/managed",
+    "//components/commerce/core:pref_names",
     "//components/component_updater",
     "//components/enterprise",
     "//components/history/core/common",
@@ -255,7 +256,6 @@
     "//google_apis",
     "//ios/chrome/app/strings",
     "//ios/chrome/app/strings:ios_strings_grit",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser:utils",
     "//ios/chrome/browser/policy:eg_test_support+eg2",
     "//ios/chrome/browser/prefs:pref_names",
@@ -273,6 +273,7 @@
     "//ios/chrome/browser/ui/settings/password:password_constants",
     "//ios/chrome/browser/ui/settings/privacy:privacy_constants",
     "//ios/chrome/browser/ui/toolbar/public:constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/ui/table_view:cells_constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:switches",
diff --git a/ios/chrome/browser/policy/configuration_policy_handler_list_factory.mm b/ios/chrome/browser/policy/configuration_policy_handler_list_factory.mm
index 4ae78bc..b308bf8 100644
--- a/ios/chrome/browser/policy/configuration_policy_handler_list_factory.mm
+++ b/ios/chrome/browser/policy/configuration_policy_handler_list_factory.mm
@@ -10,6 +10,7 @@
 #import "components/autofill/core/browser/autofill_credit_card_policy_handler.h"
 #import "components/bookmarks/common/bookmark_pref_names.h"
 #import "components/bookmarks/managed/managed_bookmarks_policy_handler.h"
+#import "components/commerce/core/pref_names.h"
 #import "components/component_updater/pref_names.h"
 #import "components/content_settings/core/common/pref_names.h"
 #import "components/enterprise/browser/reporting/cloud_reporting_frequency_policy_handler.h"
@@ -112,6 +113,9 @@
   { policy::key::kUrlKeyedAnonymizedDataCollectionEnabled,
     unified_consent::prefs::kUrlKeyedAnonymizedDataCollectionEnabled,
     base::Value::Type::BOOLEAN },
+  { policy::key::kShoppingListEnabled,
+    commerce::kShoppingListEnabledPrefName,
+    base::Value::Type::BOOLEAN},
 };
 // clang-format on
 
diff --git a/ios/chrome/browser/policy/policy_egtest.mm b/ios/chrome/browser/policy/policy_egtest.mm
index cdfb89a..15e4bf7 100644
--- a/ios/chrome/browser/policy/policy_egtest.mm
+++ b/ios/chrome/browser/policy/policy_egtest.mm
@@ -18,7 +18,6 @@
 #import "components/policy/test_support/embedded_policy_test_server.h"
 #import "components/safe_browsing/core/common/features.h"
 #import "components/strings/grit/components_strings.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/policy/policy_app_interface.h"
 #import "ios/chrome/browser/policy/policy_earl_grey_utils.h"
 #import "ios/chrome/browser/prefs/pref_names.h"
@@ -36,6 +35,7 @@
 #import "ios/chrome/browser/ui/settings/password/passwords_table_view_constants.h"
 #import "ios/chrome/browser/ui/settings/privacy/privacy_constants.h"
 #import "ios/chrome/browser/ui/settings/settings_table_view_controller_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_actions.h"
diff --git a/ios/chrome/browser/policy/policy_platform_provider_egtest.mm b/ios/chrome/browser/policy/policy_platform_provider_egtest.mm
index a7c1f6f..955875f 100644
--- a/ios/chrome/browser/policy/policy_platform_provider_egtest.mm
+++ b/ios/chrome/browser/policy/policy_platform_provider_egtest.mm
@@ -13,9 +13,9 @@
 #import "components/policy/core/common/policy_loader_ios_constants.h"
 #import "components/policy/policy_constants.h"
 #import "components/strings/grit/components_strings.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/policy/policy_app_interface.h"
 #import "ios/chrome/browser/prefs/pref_names.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_test_case.h"
 #import "ios/testing/earl_grey/app_launch_configuration.h"
diff --git a/ios/chrome/browser/prefs/BUILD.gn b/ios/chrome/browser/prefs/BUILD.gn
index 533f516..7e02de1 100644
--- a/ios/chrome/browser/prefs/BUILD.gn
+++ b/ios/chrome/browser/prefs/BUILD.gn
@@ -40,6 +40,7 @@
   deps = [
     "//components/autofill/core/browser",
     "//components/browsing_data/core",
+    "//components/commerce/core:pref_names",
     "//components/component_updater",
     "//components/component_updater/installer_policies",
     "//components/content_settings/core/browser",
diff --git a/ios/chrome/browser/prefs/browser_prefs.mm b/ios/chrome/browser/prefs/browser_prefs.mm
index 4e70ea17..b71669d 100644
--- a/ios/chrome/browser/prefs/browser_prefs.mm
+++ b/ios/chrome/browser/prefs/browser_prefs.mm
@@ -8,6 +8,7 @@
 #import "base/time/time.h"
 #import "components/autofill/core/common/autofill_prefs.h"
 #import "components/browsing_data/core/pref_names.h"
+#import "components/commerce/core/pref_names.h"
 #import "components/component_updater/component_updater_service.h"
 #import "components/component_updater/installer_policies/autofill_states_component_installer.h"
 #import "components/content_settings/core/browser/host_content_settings_map.h"
@@ -198,6 +199,7 @@
 
 void RegisterBrowserStatePrefs(user_prefs::PrefRegistrySyncable* registry) {
   autofill::prefs::RegisterProfilePrefs(registry);
+  commerce::RegisterPrefs(registry);
   dom_distiller::DistilledPagePrefs::RegisterProfilePrefs(registry);
   ios_feed::RegisterProfilePrefs(registry);
   FirstRun::RegisterProfilePrefs(registry);
diff --git a/ios/chrome/browser/promos_manager/promos_manager.mm b/ios/chrome/browser/promos_manager/promos_manager.mm
index 72764fe..d83b062 100644
--- a/ios/chrome/browser/promos_manager/promos_manager.mm
+++ b/ios/chrome/browser/promos_manager/promos_manager.mm
@@ -43,8 +43,8 @@
                                         PrefService* local_state) {
   DCHECK(local_state);
 
-  ListPrefUpdate update(local_state, pref_path);
-  base::Value::List& active_promos = update->GetList();
+  ScopedListPrefUpdate update(local_state, pref_path);
+  base::Value::List& active_promos = update.Get();
   std::string promo_name = promos_manager::NameForPromo(promo);
 
   // Erase `promo_name` if it already exists in `active_promos`; avoid polluting
@@ -94,9 +94,9 @@
                  promos_manager::NameForPromo(promo));
   impression.Set(promos_manager::kImpressionDayKey, TodaysDay());
 
-  ListPrefUpdate update(local_state_, prefs::kIosPromosManagerImpressions);
-  base::Value::List& impression_history = update->GetList();
-  impression_history.Append(std::move(impression));
+  ScopedListPrefUpdate update(local_state_,
+                              prefs::kIosPromosManagerImpressions);
+  update->Append(std::move(impression));
 
   impression_history_ = ImpressionHistory(
       local_state_->GetList(prefs::kIosPromosManagerImpressions));
@@ -122,14 +122,13 @@
 void PromosManager::DeregisterPromo(promos_manager::Promo promo) {
   DCHECK(local_state_);
 
-  ListPrefUpdate active_promos_update(local_state_,
-                                      prefs::kIosPromosManagerActivePromos);
-  ListPrefUpdate single_display_promos_update(
+  ScopedListPrefUpdate active_promos_update(
+      local_state_, prefs::kIosPromosManagerActivePromos);
+  ScopedListPrefUpdate single_display_promos_update(
       local_state_, prefs::kIosPromosManagerSingleDisplayActivePromos);
 
-  base::Value::List& active_promos = active_promos_update->GetList();
-  base::Value::List& single_display_promos =
-      single_display_promos_update->GetList();
+  base::Value::List& active_promos = active_promos_update.Get();
+  base::Value::List& single_display_promos = single_display_promos_update.Get();
 
   std::string promo_name = promos_manager::NameForPromo(promo);
 
diff --git a/ios/chrome/browser/reading_list/BUILD.gn b/ios/chrome/browser/reading_list/BUILD.gn
index 582614a..1ebc1ad 100644
--- a/ios/chrome/browser/reading_list/BUILD.gn
+++ b/ios/chrome/browser/reading_list/BUILD.gn
@@ -47,6 +47,7 @@
     "//ios/chrome/browser/flags:system_flags",
     "//ios/chrome/browser/history",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common",
     "//ios/components/webui:url_constants",
     "//ios/web/common",
diff --git a/ios/chrome/browser/reading_list/offline_page_tab_helper.mm b/ios/chrome/browser/reading_list/offline_page_tab_helper.mm
index 39313fa..618aa4f 100644
--- a/ios/chrome/browser/reading_list/offline_page_tab_helper.mm
+++ b/ios/chrome/browser/reading_list/offline_page_tab_helper.mm
@@ -17,10 +17,10 @@
 #import "components/reading_list/core/reading_list_entry.h"
 #import "components/reading_list/core/reading_list_model.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/reading_list/offline_url_utils.h"
 #import "ios/chrome/browser/reading_list/reading_list_download_service.h"
 #import "ios/chrome/browser/reading_list/reading_list_download_service_factory.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/common/features.h"
 #import "ios/web/public/navigation/navigation_context.h"
 #import "ios/web/public/navigation/navigation_item.h"
diff --git a/ios/chrome/browser/reading_list/offline_url_utils.mm b/ios/chrome/browser/reading_list/offline_url_utils.mm
index d616587..f157ae3 100644
--- a/ios/chrome/browser/reading_list/offline_url_utils.mm
+++ b/ios/chrome/browser/reading_list/offline_url_utils.mm
@@ -11,7 +11,7 @@
 #import "components/reading_list/core/offline_url_utils.h"
 #import "components/reading_list/core/reading_list_entry.h"
 #import "components/reading_list/core/reading_list_model.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "net/base/url_util.h"
 
diff --git a/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm b/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm
index 3c33d21..c22c8ba5 100644
--- a/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm
+++ b/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm
@@ -11,9 +11,9 @@
 #import "base/metrics/histogram_macros.h"
 #import "components/reading_list/core/reading_list_model.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/reading_list/offline_url_utils.h"
 #import "ios/chrome/browser/reading_list/reading_list_model_factory.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
 #import "ios/web/public/navigation/reload_type.h"
diff --git a/ios/chrome/browser/sessions/BUILD.gn b/ios/chrome/browser/sessions/BUILD.gn
index 7864128..5683115f 100644
--- a/ios/chrome/browser/sessions/BUILD.gn
+++ b/ios/chrome/browser/sessions/BUILD.gn
@@ -36,6 +36,7 @@
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/tabs",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/public/provider/chrome/browser",
     "//ios/web",
@@ -87,9 +88,9 @@
     ":session_service",
     "//components/favicon/ios",
     "//components/previous_session_info",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:page_placeholder",
     "//ios/chrome/browser/web/session_state",
     "//ios/chrome/browser/web_state_list",
@@ -202,6 +203,7 @@
     "//ios/chrome/browser/ntp",
     "//ios/chrome/browser/signin:signin",
     "//ios/chrome/browser/signin:test_support",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:web_internal",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:test_support",
diff --git a/ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.mm b/ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.mm
index c3f2529..505ea04 100644
--- a/ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.mm
+++ b/ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.mm
@@ -11,12 +11,12 @@
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state_manager.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/main/browser_list.h"
 #import "ios/chrome/browser/main/browser_list_factory.h"
 #import "ios/chrome/browser/sessions/live_tab_context_browser_agent.h"
 #import "ios/chrome/browser/tabs/synced_window_delegate_browser_agent.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "url/gurl.h"
 
diff --git a/ios/chrome/browser/sessions/session_restoration_browser_agent.mm b/ios/chrome/browser/sessions/session_restoration_browser_agent.mm
index 2f76a421..ffca1123 100644
--- a/ios/chrome/browser/sessions/session_restoration_browser_agent.mm
+++ b/ios/chrome/browser/sessions/session_restoration_browser_agent.mm
@@ -10,13 +10,13 @@
 #import "components/favicon/ios/web_favicon_driver.h"
 #import "components/previous_session_info/previous_session_info.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/sessions/session_ios.h"
 #import "ios/chrome/browser/sessions/session_ios_factory.h"
 #import "ios/chrome/browser/sessions/session_restoration_observer.h"
 #import "ios/chrome/browser/sessions/session_service_ios.h"
 #import "ios/chrome/browser/sessions/session_window_ios.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/page_placeholder_tab_helper.h"
 #import "ios/chrome/browser/web/session_state/web_session_state_tab_helper.h"
 #import "ios/chrome/browser/web_state_list/all_web_state_observation_forwarder.h"
diff --git a/ios/chrome/browser/sessions/session_restoration_browser_agent_unittest.mm b/ios/chrome/browser/sessions/session_restoration_browser_agent_unittest.mm
index bfa08223..6d67f21 100644
--- a/ios/chrome/browser/sessions/session_restoration_browser_agent_unittest.mm
+++ b/ios/chrome/browser/sessions/session_restoration_browser_agent_unittest.mm
@@ -9,7 +9,6 @@
 #import "base/strings/sys_string_conversions.h"
 #import "base/test/ios/wait_util.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/main/browser_web_state_list_delegate.h"
 #import "ios/chrome/browser/main/test_browser.h"
@@ -23,6 +22,7 @@
 #import "ios/chrome/browser/sessions/test_session_service.h"
 #import "ios/chrome/browser/signin/authentication_service_factory.h"
 #import "ios/chrome/browser/signin/authentication_service_fake.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_delegate.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
diff --git a/ios/chrome/browser/signin/BUILD.gn b/ios/chrome/browser/signin/BUILD.gn
index 55cb39e..134be8b37 100644
--- a/ios/chrome/browser/signin/BUILD.gn
+++ b/ios/chrome/browser/signin/BUILD.gn
@@ -166,6 +166,7 @@
     "//base",
     "//components/keyed_service/core",
     "//components/sync/driver",
+    "//ios/public/provider/chrome/browser/signin",
     "//ios/public/provider/chrome/browser/signin:signin_sso_api",
   ]
   frameworks = [
diff --git a/ios/chrome/browser/signin/trusted_vault_client_backend.h b/ios/chrome/browser/signin/trusted_vault_client_backend.h
index e7d9202..bbe702e0 100644
--- a/ios/chrome/browser/signin/trusted_vault_client_backend.h
+++ b/ios/chrome/browser/signin/trusted_vault_client_backend.h
@@ -15,6 +15,7 @@
 #include "components/sync/driver/trusted_vault_client.h"
 
 @class ChromeIdentity;
+@protocol SystemIdentity;
 
 // Abstract class to manage shared keys.
 class TrustedVaultClientBackend : public KeyedService {
@@ -45,7 +46,9 @@
   // Asynchronously fetches the shared keys for `identity` and invokes
   // `callback` with the fetched keys.
   virtual void FetchKeys(ChromeIdentity* chrome_identity,
-                         KeyFetchedCallback callback) = 0;
+                         KeyFetchedCallback callback);
+  virtual void FetchKeys(id<SystemIdentity> identity,
+                         KeyFetchedCallback callback);
 
   // Invoked when the result of FetchKeys() contains keys that are not
   // up-to-date. During the execution, before `callback` is invoked, the
@@ -53,13 +56,18 @@
   // may or may not treat existing keys as stale (only guaranteed upon
   // completion of MarkLocalKeysAsStale()).
   virtual void MarkLocalKeysAsStale(ChromeIdentity* chrome_identity,
-                                    base::OnceClosure callback) = 0;
+                                    base::OnceClosure callback);
+  virtual void MarkLocalKeysAsStale(id<SystemIdentity> identity,
+                                    base::OnceClosure callback);
 
   // Returns whether recoverability of the keys is degraded and user action is
   // required to add a new method.
   virtual void GetDegradedRecoverabilityStatus(
       ChromeIdentity* chrome_identity,
-      base::OnceCallback<void(bool)> callback) = 0;
+      base::OnceCallback<void(bool)> callback);
+  virtual void GetDegradedRecoverabilityStatus(
+      id<SystemIdentity> identity,
+      base::OnceCallback<void(bool)> callback);
 
   // Presents the trusted vault key reauthentication UI for `identity` for the
   // purpose of extending the set of keys returned via FetchKeys(). Once the
@@ -67,7 +75,10 @@
   // not called if the reauthentication is canceled.
   virtual void Reauthentication(ChromeIdentity* chrome_identity,
                                 UIViewController* presenting_view_controller,
-                                CompletionBlock callback) = 0;
+                                CompletionBlock callback);
+  virtual void Reauthentication(id<SystemIdentity> identity,
+                                UIViewController* presenting_view_controller,
+                                CompletionBlock callback);
 
   // Presents the trusted vault key reauthentication UI for `identity` for the
   // purpose of improving recoverability as returned via
@@ -77,7 +88,11 @@
   virtual void FixDegradedRecoverability(
       ChromeIdentity* chrome_identity,
       UIViewController* presenting_view_controller,
-      CompletionBlock callback) = 0;
+      CompletionBlock callback);
+  virtual void FixDegradedRecoverability(
+      id<SystemIdentity> identity,
+      UIViewController* presenting_view_controller,
+      CompletionBlock callback);
 
   // Cancels the presented trusted vault reauthentication UI, triggered via
   // either Reauthentication() or via
diff --git a/ios/chrome/browser/signin/trusted_vault_client_backend.mm b/ios/chrome/browser/signin/trusted_vault_client_backend.mm
index 9964c875..d1a1f56a 100644
--- a/ios/chrome/browser/signin/trusted_vault_client_backend.mm
+++ b/ios/chrome/browser/signin/trusted_vault_client_backend.mm
@@ -4,6 +4,10 @@
 
 #import "ios/chrome/browser/signin/trusted_vault_client_backend.h"
 
+#import "base/callback.h"
+#import "base/notreached.h"
+#import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
+
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
@@ -11,3 +15,70 @@
 TrustedVaultClientBackend::TrustedVaultClientBackend() = default;
 
 TrustedVaultClientBackend::~TrustedVaultClientBackend() = default;
+
+void TrustedVaultClientBackend::FetchKeys(ChromeIdentity* chrome_identity,
+                                          KeyFetchedCallback callback) {
+  FetchKeys(static_cast<id<SystemIdentity>>(chrome_identity),
+            std::move(callback));
+}
+
+void TrustedVaultClientBackend::FetchKeys(id<SystemIdentity> identity,
+                                          KeyFetchedCallback callback) {
+  NOTREACHED();
+}
+
+void TrustedVaultClientBackend::MarkLocalKeysAsStale(
+    ChromeIdentity* chrome_identity,
+    base::OnceClosure callback) {
+  MarkLocalKeysAsStale(static_cast<id<SystemIdentity>>(chrome_identity),
+                       std::move(callback));
+}
+
+void TrustedVaultClientBackend::MarkLocalKeysAsStale(
+    id<SystemIdentity> identity,
+    base::OnceClosure callback) {
+  NOTREACHED();
+}
+
+void TrustedVaultClientBackend::GetDegradedRecoverabilityStatus(
+    ChromeIdentity* chrome_identity,
+    base::OnceCallback<void(bool)> callback) {
+  GetDegradedRecoverabilityStatus(
+      static_cast<id<SystemIdentity>>(chrome_identity), std::move(callback));
+}
+
+void TrustedVaultClientBackend::GetDegradedRecoverabilityStatus(
+    id<SystemIdentity> identity,
+    base::OnceCallback<void(bool)> callback) {
+  NOTREACHED();
+}
+
+void TrustedVaultClientBackend::Reauthentication(
+    ChromeIdentity* chrome_identity,
+    UIViewController* presenting_view_controller,
+    CompletionBlock callback) {
+  Reauthentication(static_cast<id<SystemIdentity>>(chrome_identity),
+                   presenting_view_controller, std::move(callback));
+}
+
+void TrustedVaultClientBackend::Reauthentication(
+    id<SystemIdentity> identity,
+    UIViewController* presenting_view_controller,
+    CompletionBlock callback) {
+  NOTREACHED();
+}
+
+void TrustedVaultClientBackend::FixDegradedRecoverability(
+    ChromeIdentity* chrome_identity,
+    UIViewController* presenting_view_controller,
+    CompletionBlock callback) {
+  FixDegradedRecoverability(static_cast<id<SystemIdentity>>(chrome_identity),
+                            presenting_view_controller, std::move(callback));
+}
+
+void TrustedVaultClientBackend::FixDegradedRecoverability(
+    id<SystemIdentity> identity,
+    UIViewController* presenting_view_controller,
+    CompletionBlock callback) {
+  NOTREACHED();
+}
diff --git a/ios/chrome/browser/sync/BUILD.gn b/ios/chrome/browser/sync/BUILD.gn
index 13977ac..a3f0306d 100644
--- a/ios/chrome/browser/sync/BUILD.gn
+++ b/ios/chrome/browser/sync/BUILD.gn
@@ -88,6 +88,7 @@
     "//ios/chrome/browser/sync/sessions",
     "//ios/chrome/browser/tabs",
     "//ios/chrome/browser/undo",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/webdata_services",
     "//ios/chrome/common",
     "//ios/components/webui:url_constants",
@@ -164,6 +165,7 @@
     "//ios/chrome/browser/browser_state:test_support",
     "//ios/chrome/browser/favicon",
     "//ios/chrome/browser/history",
+    "//ios/chrome/browser/url:constants",
     "//ios/web/public/test",
     "//testing/gtest",
     "//ui/base",
diff --git a/ios/chrome/browser/sync/session_sync_service_factory.mm b/ios/chrome/browser/sync/session_sync_service_factory.mm
index 41acff0..0016eb8d 100644
--- a/ios/chrome/browser/sync/session_sync_service_factory.mm
+++ b/ios/chrome/browser/sync/session_sync_service_factory.mm
@@ -22,7 +22,6 @@
 #import "components/sync_sessions/sync_sessions_client.h"
 #import "components/sync_sessions/synced_window_delegates_getter.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/favicon/favicon_service_factory.h"
 #import "ios/chrome/browser/history/history_service_factory.h"
 #import "ios/chrome/browser/sync/device_info_sync_service_factory.h"
@@ -30,6 +29,7 @@
 #import "ios/chrome/browser/sync/model_type_store_service_factory.h"
 #import "ios/chrome/browser/sync/sessions/ios_chrome_local_session_event_router.h"
 #import "ios/chrome/browser/tabs/ios_synced_window_delegate_getter.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/channel_info.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ios/web/public/thread/web_thread.h"
diff --git a/ios/chrome/browser/sync/session_sync_service_factory_unittest.cc b/ios/chrome/browser/sync/session_sync_service_factory_unittest.cc
index a672a7d..79ee55f7 100644
--- a/ios/chrome/browser/sync/session_sync_service_factory_unittest.cc
+++ b/ios/chrome/browser/sync/session_sync_service_factory_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ios/chrome/browser/sync/session_sync_service_factory.h"
 
-#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
diff --git a/ios/chrome/browser/tabs/BUILD.gn b/ios/chrome/browser/tabs/BUILD.gn
index a0efa03..755ca03 100644
--- a/ios/chrome/browser/tabs/BUILD.gn
+++ b/ios/chrome/browser/tabs/BUILD.gn
@@ -99,6 +99,7 @@
     "//ios/chrome/browser/translate",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/download:features",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/voice",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web:delegate",
diff --git a/ios/chrome/browser/tabs/closing_web_state_observer_browser_agent.mm b/ios/chrome/browser/tabs/closing_web_state_observer_browser_agent.mm
index 44bcaefc..29640c5 100644
--- a/ios/chrome/browser/tabs/closing_web_state_observer_browser_agent.mm
+++ b/ios/chrome/browser/tabs/closing_web_state_observer_browser_agent.mm
@@ -8,9 +8,9 @@
 #import "components/sessions/core/tab_restore_service.h"
 #import "components/sessions/ios/ios_restore_live_tab.h"
 #import "components/sessions/ios/ios_webstate_live_tab.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_factory.h"
 #import "ios/chrome/browser/snapshots/snapshot_tab_helper.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
diff --git a/ios/chrome/browser/translate/BUILD.gn b/ios/chrome/browser/translate/BUILD.gn
index 626b8fe..f7d8846 100644
--- a/ios/chrome/browser/translate/BUILD.gn
+++ b/ios/chrome/browser/translate/BUILD.gn
@@ -61,6 +61,7 @@
     "//ios/chrome/browser/language",
     "//ios/chrome/browser/optimization_guide",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/components/webui:url_constants",
     "//third_party/metrics_proto",
     "//ui/base",
@@ -96,6 +97,7 @@
     "//ios/chrome/browser/infobars",
     "//ios/chrome/browser/language",
     "//ios/chrome/browser/optimization_guide",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:web_internal",
     "//ios/chrome/common:string_util",
     "//ios/web/public",
diff --git a/ios/chrome/browser/translate/translate_service_ios.mm b/ios/chrome/browser/translate/translate_service_ios.mm
index 1d79e96..fc6d26c 100644
--- a/ios/chrome/browser/translate/translate_service_ios.mm
+++ b/ios/chrome/browser/translate/translate_service_ios.mm
@@ -11,8 +11,8 @@
 #import "components/translate/core/browser/translate_download_manager.h"
 #import "components/translate/core/browser/translate_manager.h"
 #import "ios/chrome/browser/application_context/application_context.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/translate/chrome_ios_translate_client.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "url/gurl.h"
 
diff --git a/ios/chrome/browser/translate/translate_service_ios_unittest.cc b/ios/chrome/browser/translate/translate_service_ios_unittest.cc
index 29db2ec..a8141aa 100644
--- a/ios/chrome/browser/translate/translate_service_ios_unittest.cc
+++ b/ios/chrome/browser/translate/translate_service_ios_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ios/chrome/browser/translate/translate_service_ios.h"
 
-#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/BUILD.gn b/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/BUILD.gn
index 9215bd6..f530f21d 100644
--- a/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/BUILD.gn
@@ -14,11 +14,11 @@
   deps = [
     "//ios/chrome/app/strings",
     "//ios/chrome/app/strings:ios_google_chrome_strings",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/policy/resources:enterprise_grey_icon_large",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/ui/confirmation_alert",
     "//ui/base",
   ]
diff --git a/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/enterprise_prompt_coordinator.mm b/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/enterprise_prompt_coordinator.mm
index 344551ac..36d72e6 100644
--- a/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/enterprise_prompt_coordinator.mm
+++ b/ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/enterprise_prompt_coordinator.mm
@@ -4,13 +4,13 @@
 
 #import "ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/enterprise_prompt_coordinator.h"
 
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/ui/authentication/enterprise/enterprise_prompt/enterprise_prompt_view_controller.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"
 #import "ios/chrome/browser/ui/commands/policy_change_commands.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_action_handler.h"
 #import "url/gurl.h"
 
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/BUILD.gn
index 3a6c31c..4152815d 100644
--- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/BUILD.gn
@@ -37,6 +37,7 @@
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/table_view",
     "//ios/chrome/browser/ui/table_view:utils",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/ui/colors",
     "//ios/public/provider/chrome/browser",
     "//ios/public/provider/chrome/browser/signin",
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_coordinator.mm
index 93dd8a4..f4f9c37 100644
--- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_coordinator.mm
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_coordinator.mm
@@ -6,7 +6,6 @@
 
 #import "base/strings/sys_string_conversions.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service_factory.h"
@@ -17,6 +16,7 @@
 #import "ios/chrome/browser/ui/commands/browser_commands.h"
 #import "ios/chrome/browser/ui/commands/command_dispatcher.h"
 #import "ios/chrome/browser/ui/commands/open_new_tab_command.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_table_view_controller.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_table_view_controller.mm
index 068d1fb..0e19e2b 100644
--- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_table_view_controller.mm
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_table_view_controller.mm
@@ -7,7 +7,6 @@
 #import "base/check.h"
 #import "base/mac/foundation_util.h"
 #import "base/notreached.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/net/crurl.h"
 #import "ios/chrome/browser/ui/authentication/cells/table_view_identity_item.h"
 #import "ios/chrome/browser/ui/authentication/enterprise/enterprise_utils.h"
@@ -16,6 +15,7 @@
 #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/identity_item_configurator.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_image_item.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_link_header_footer_item.h"
+#import "ios/chrome/browser/url/chrome_url_constants.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"
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn
index a976d670..1b4a6c5f 100644
--- a/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn
@@ -22,7 +22,6 @@
     "//components/sync/base",
     "//components/unified_consent",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser:utils",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/policy/resources:enterprise_icon_blue_large",
@@ -39,6 +38,7 @@
     "//ios/chrome/browser/ui/settings/sync/utils",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/unified_consent",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/confirmation_alert:confirmation_alert",
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn b/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn
index 82bef69..4305ae4 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn
@@ -47,6 +47,7 @@
     "//ios/chrome/browser/ui/authentication/unified_consent/identity_chooser:identity_chooser_ui",
     "//ios/chrome/browser/ui/authentication/views",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common:string_util",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm
index fb707737..22f7204b 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm
+++ b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.mm
@@ -11,12 +11,12 @@
 #import "base/notreached.h"
 #import "components/google/core/common/google_util.h"
 #import "ios/chrome/browser/application_context/application_context.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/authentication/authentication_constants.h"
 #import "ios/chrome/browser/ui/authentication/unified_consent/unified_consent_constants.h"
 #import "ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller_delegate.h"
 #import "ios/chrome/browser/ui/authentication/views/identity_button_control.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/string_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/autofill/card_unmask_prompt_view_controller.mm b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_controller.mm
index 878fa731..a22f69e 100644
--- a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_controller.mm
+++ b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_controller.mm
@@ -128,6 +128,16 @@
   [self loadModel];
 }
 
+- (void)viewDidAppear:(BOOL)animated {
+  [super viewDidAppear:animated];
+
+  // Provide context for users with Voice Over enabled.
+  NSString* initialMessage =
+      [NSString stringWithFormat:@"%@\n%@", self.title, [self instructions]];
+  UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
+                                  initialMessage);
+}
+
 - (void)loadModel {
   [super loadModel];
 
@@ -247,6 +257,14 @@
   [self reloadAllSections];
 
   [self updateConfirmButtonState];
+
+  // For Voice Over users, focus on the instructions to provide context about
+  // what to do next.
+  UIAccessibilityPostNotification(
+      UIAccessibilityLayoutChangedNotification,
+      [self.tableView headerViewForSection:[self.tableViewModel
+                                               sectionForSectionIdentifier:
+                                                   SectionIdentifierHeader]]);
 }
 
 // Displays a footer with a link to update the expiration date of the card.
@@ -368,10 +386,7 @@
 
 // Updates the instructions in the header.
 - (void)updateInstructions {
-  autofill::CardUnmaskPromptController* controller = _bridge->GetController();
-  NSString* instructions =
-      base::SysUTF16ToNSString(controller->GetInstructionsMessage());
-  _headerItem.instructionsText = instructions;
+  _headerItem.instructionsText = [self instructions];
 }
 
 // Reloads all sections of the table view using automatic row animations.
@@ -434,6 +449,12 @@
   }
 }
 
+// Helper method that fetches the instructions from the Controller.
+- (NSString*)instructions {
+  autofill::CardUnmaskPromptController* controller = _bridge->GetController();
+  return base::SysUTF16ToNSString(controller->GetInstructionsMessage());
+}
+
 #pragma mark - TableViewTextEditItemDelegate
 
 - (void)tableViewItemDidChange:(TableViewTextEditItem*)tableViewItem {
@@ -481,7 +502,9 @@
     forRowAtIndexPath:(NSIndexPath*)indexPath {
   // Only update focus for cells with input fields and when update focus is
   // needed.
-  if (!_shouldUpdateFocus ||
+  // Don't update focus when Voice Over is running. Instead, the instructions
+  // will be read, providing more context for users with Voice Over enabled.
+  if (UIAccessibilityIsVoiceOverRunning() || !_shouldUpdateFocus ||
       ![cell isKindOfClass:TableViewTextEditCell.class]) {
     return;
   }
@@ -520,6 +543,23 @@
   return view;
 }
 
+- (UITableViewCell*)tableView:(UITableView*)tableView
+        cellForRowAtIndexPath:(NSIndexPath*)indexPath {
+  UITableViewCell* cell = [super tableView:tableView
+                     cellForRowAtIndexPath:indexPath];
+
+  NSInteger rowItemType = [self.tableViewModel itemTypeForIndexPath:indexPath];
+
+  if (rowItemType == ItemTypeCVCInput) {
+    TableViewTextEditCell* rowCell =
+        base::mac::ObjCCastStrict<TableViewTextEditCell>(cell);
+    // Hide the icon from Voice Over.
+    rowCell.identifyingIconButton.isAccessibilityElement = NO;
+  }
+
+  return cell;
+}
+
 #pragma mark - TableViewLinkHeaderFooterDelegate
 
 - (void)view:(TableViewLinkHeaderFooterView*)view didTapLinkURL:(CrURL*)URL {
diff --git a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_controller_unittest.mm b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_controller_unittest.mm
index 21fe7bf..3f7afa0 100644
--- a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_controller_unittest.mm
+++ b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_controller_unittest.mm
@@ -129,6 +129,7 @@
         [controller().tableViewModel headerForSectionIndex:0]);
   }
 
+  // Helper method that fetches an item from the tableViewModel.
   id GetItem(int item, int section) {
     auto* indexPath = [NSIndexPath indexPathForItem:item inSection:section];
     auto* model = controller().tableViewModel;
@@ -138,6 +139,22 @@
                : nil;
   }
 
+  // Helper method that fetches a cell from the tableView's datasource.
+  id GetCell(int item, int section) {
+    auto* cvc_controller = controller();
+    auto* cvc_index_path = [NSIndexPath indexPathForItem:item
+                                               inSection:section];
+
+    return
+        [cvc_controller.tableView.dataSource tableView:cvc_controller.tableView
+                                 cellForRowAtIndexPath:cvc_index_path];
+  }
+
+  // Fetches the CVC input cell from the tableView's datasource.
+  TableViewTextEditCell* GetCVCInputCell() {
+    return GetCell(/*item=*/0, /*section*/ 1);
+  }
+
   // Fetches the model for the CVC input cell from the tableViewModel.
   TableViewTextEditItem* CVCInputItem() {
     return GetItem(/*item=*/0, /*section=*/1);
@@ -430,3 +447,11 @@
 
   CheckUpdateExpirationDateForm();
 }
+
+// Verifies that the icon in the CVC input cell is hidden from Voice Over.
+TEST_F(CardUnmaskPromptViewControllerTest,
+       TestCVCCellIconIsHiddenFromVoiceOver) {
+  auto* CVC_cell = GetCVCInputCell();
+  ASSERT_TRUE(CVC_cell);
+  EXPECT_FALSE(CVC_cell.identifyingIconButton.isAccessibilityElement);
+}
diff --git a/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item.mm b/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item.mm
index b9296e1..b69cda2 100644
--- a/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item.mm
+++ b/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item.mm
@@ -55,9 +55,13 @@
 
   cell.textField.textColor = [UIColor colorNamed:kTextPrimaryColor];
   cell.textField.enabled = YES;
+  // Prevent Voice Over from announcing autocorrection.
+  cell.textField.autocorrectionType = UITextAutocorrectionTypeNo;
 
   [cell setIcon:TableViewTextEditItemIconTypeNone];
 
+  cell.isAccessibilityElement = NO;
+
   __weak ExpirationDateEditItem* weakSelf = self;
   __weak ExpirationDateEditCell* weakCell = cell;
   cell.expirationDatePicker.onDateSelected =
diff --git a/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item_unittest.mm b/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item_unittest.mm
index 52bc6c0..268ab29 100644
--- a/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item_unittest.mm
+++ b/ios/chrome/browser/ui/autofill/cells/expiration_date_edit_item_unittest.mm
@@ -76,4 +76,23 @@
   EXPECT_OCMOCK_VERIFY(mockedDelegate);
 }
 
+// Verifies that the ExpirationDateEditCell exposes its contents to
+// accessibility tools such as Voice Over.
+TEST_F(ExpirationDateEditItemTest,
+       ExpirationDateEditCellIsNotAccessibilityElement) {
+  ExpirationDateEditItem* item =
+      [[ExpirationDateEditItem alloc] initWithType:0];
+
+  id view = [[[item cellClass] alloc] init];
+  ASSERT_TRUE([view isMemberOfClass:[ExpirationDateEditCell class]]);
+
+  ExpirationDateEditCell* cell =
+      base::mac::ObjCCastStrict<ExpirationDateEditCell>(view);
+
+  ChromeTableViewStyler* styler = [[ChromeTableViewStyler alloc] init];
+  [item configureCell:cell withStyler:styler];
+
+  EXPECT_FALSE(cell.isAccessibilityElement);
+}
+
 }  // namespace
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm
index de90ac2e..4983506 100644
--- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm
+++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm
@@ -660,17 +660,6 @@
     return;
   }
 
-  // Return if the user shouldn't see an IPH.
-  // This is done after ShouldTriggerHelpUI so that metrics regarding IPH are
-  // logged similarly for experimental groups and for the control group.
-  if (!base::FeatureList::IsEnabled(kBubbleRichIPH)) {
-    // Immediately mark the IPH as dismissed. It is required everytime
-    // ShouldTriggerHelpUI returns `true`.
-    [self IPHDidDismissWithSnoozeAction:feature_engagement::Tracker::
-                                            SnoozeAction::DISMISSED];
-    return;
-  }
-
   // Show the highlight suggestion now.
   [self.formInputAccessoryViewController animateSuggestionLabel];
 
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn
index 588d0d3..02f6c5b 100644
--- a/ios/chrome/browser/ui/browser_view/BUILD.gn
+++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -189,6 +189,7 @@
     "//ios/chrome/browser/ui/whats_new:feature_flags",
     "//ios/chrome/browser/ui/whats_new:whats_new",
     "//ios/chrome/browser/upgrade",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/voice:voice",
     "//ios/chrome/browser/web",
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
index eb4e145..30ce70d1 100644
--- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -19,7 +19,6 @@
 #import "ios/chrome/browser/app_launcher/app_launcher_tab_helper.h"
 #import "ios/chrome/browser/autofill/autofill_tab_helper.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/download/download_directory_util.h"
 #import "ios/chrome/browser/download/external_app_util.h"
 #import "ios/chrome/browser/download/pass_kit_tab_helper.h"
@@ -148,6 +147,7 @@
 #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/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"
 #import "ios/chrome/browser/web/annotations/annotations_tab_helper.h"
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
index c5dd4be..11f6aa71a 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -24,7 +24,6 @@
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/crash_report/crash_keys_helper.h"
 #import "ios/chrome/browser/discover_feed/feed_constants.h"
 #import "ios/chrome/browser/feature_engagement/tracker_util.h"
@@ -114,6 +113,7 @@
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #import "ios/chrome/browser/ui/util/url_with_title.h"
 #import "ios/chrome/browser/upgrade/upgrade_center.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_notifier_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_observer_bridge.h"
diff --git a/ios/chrome/browser/ui/bubble/BUILD.gn b/ios/chrome/browser/ui/bubble/BUILD.gn
index 770ee90..cc1678c 100644
--- a/ios/chrome/browser/ui/bubble/BUILD.gn
+++ b/ios/chrome/browser/ui/bubble/BUILD.gn
@@ -23,7 +23,6 @@
     "//components/feature_engagement/public",
     "//ios/chrome/app/strings",
     "//ios/chrome/browser",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser:utils",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/feature_engagement",
@@ -31,6 +30,8 @@
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/icons:symbols",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common",
     "//ios/chrome/common/ui/colors",
     "//ios/third_party/material_components_ios",
diff --git a/ios/chrome/browser/ui/bubble/bubble_presenter.mm b/ios/chrome/browser/ui/bubble/bubble_presenter.mm
index 318448b..1de8cc7 100644
--- a/ios/chrome/browser/ui/bubble/bubble_presenter.mm
+++ b/ios/chrome/browser/ui/bubble/bubble_presenter.mm
@@ -12,8 +12,6 @@
 #import "components/feature_engagement/public/feature_constants.h"
 #import "components/feature_engagement/public/tracker.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/feature_engagement/tracker_factory.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/ui/bubble/bubble_presenter_delegate.h"
@@ -24,6 +22,8 @@
 #import "ios/chrome/browser/ui/util/named_guide_util.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/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/web/public/ui/crw_web_view_proxy.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
index 75b0e6a..ac42059d 100644
--- a/ios/chrome/browser/ui/content_suggestions/BUILD.gn
+++ b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
@@ -20,10 +20,10 @@
     "//components/keyed_service/ios",
     "//components/prefs",
     "//components/search:start_suggest",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/autocomplete",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/search_engines",
+    "//ios/chrome/browser/url:constants",
     "//services/network/public/cpp",
   ]
   configs += [ "//build/config/compiler:enable_arc" ]
@@ -115,6 +115,7 @@
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/ui/whats_new:feature_flags",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/voice",
     "//ios/chrome/browser/web_state_list",
@@ -317,6 +318,7 @@
     "//ios/chrome/browser/ui/start_surface:feature_flags",
     "//ios/chrome/browser/ui/toolbar/test",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/url_loading:test_support",
     "//ios/chrome/browser/voice:test_support",
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
index 55f51f6..50cf7d1 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
@@ -4,6 +4,7 @@
 
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.h"
 
+#import "base/feature_list.h"
 #import "base/ios/ios_util.h"
 #import "base/mac/foundation_util.h"
 #import "base/metrics/user_metrics.h"
@@ -73,6 +74,14 @@
 #error "This file requires ARC support."
 #endif
 
+namespace {
+// Kill-switch for quick fix of crbug.com/1204507
+const base::Feature kNoRecentTabIfNullWebState(
+    "NoRecentTabIfNullWebState",
+    base::FEATURE_ENABLED_BY_DEFAULT);
+
+}  // namespace
+
 @interface ContentSuggestionsCoordinator () <
     ContentSuggestionsHeaderCommands,
     ContentSuggestionsMenuProvider,
@@ -355,25 +364,29 @@
   // Update Mediator property to signal the NTP is currently showing Start.
   self.contentSuggestionsMediator.showingStartSurface = YES;
   if (ShouldShowReturnToMostRecentTabForStartSurface()) {
-    base::RecordAction(
-        base::UserMetricsAction("IOS.StartSurface.ShowReturnToRecentTabTile"));
     web::WebState* most_recent_tab =
         StartSurfaceRecentTabBrowserAgent::FromBrowser(self.browser)
             ->most_recent_tab();
-    DiscoverFeedServiceFactory::GetForBrowserState(
-        self.browser->GetBrowserState())
-        ->SetIsShownOnStartSurface(true);
-    DCHECK(most_recent_tab);
-    NSString* time_label = GetRecentTabTileTimeLabelForSceneState(scene);
-    [self.contentSuggestionsMediator
-        configureMostRecentTabItemWithWebState:most_recent_tab
-                                     timeLabel:time_label];
-    if (!_startSurfaceObserver) {
-      _startSurfaceObserver =
-          std::make_unique<StartSurfaceRecentTabObserverBridge>(
-              self.contentSuggestionsMediator);
-      StartSurfaceRecentTabBrowserAgent::FromBrowser(self.browser)
-          ->AddObserver(_startSurfaceObserver.get());
+    // TODO(crbug.com/1204507): Fix reproduced steps that produce state where
+    // most_recent_tab is null but ShouldShowStartSurface() is YES.
+    if (!base::FeatureList::IsEnabled(kNoRecentTabIfNullWebState) ||
+        most_recent_tab) {
+      base::RecordAction(base::UserMetricsAction(
+          "IOS.StartSurface.ShowReturnToRecentTabTile"));
+      DiscoverFeedServiceFactory::GetForBrowserState(
+          self.browser->GetBrowserState())
+          ->SetIsShownOnStartSurface(true);
+      NSString* time_label = GetRecentTabTileTimeLabelForSceneState(scene);
+      [self.contentSuggestionsMediator
+          configureMostRecentTabItemWithWebState:most_recent_tab
+                                       timeLabel:time_label];
+      if (!_startSurfaceObserver) {
+        _startSurfaceObserver =
+            std::make_unique<StartSurfaceRecentTabObserverBridge>(
+                self.contentSuggestionsMediator);
+        StartSurfaceRecentTabBrowserAgent::FromBrowser(self.browser)
+            ->AddObserver(_startSurfaceObserver.get());
+      }
     }
   }
   if (ShouldShrinkLogoForStartSurface()) {
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 d54e5c4..a5335cb 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
@@ -27,7 +27,6 @@
 #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/chrome_url_constants.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
 #import "ios/chrome/browser/ntp_tiles/most_visited_sites_observer_bridge.h"
 #import "ios/chrome/browser/policy/policy_util.h"
@@ -64,6 +63,7 @@
 #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/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"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator.mm b/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator.mm
index 287aa2c..2ebdc9f 100644
--- a/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator.mm
@@ -15,7 +15,6 @@
 #import "components/signin/public/identity_manager/objc/identity_manager_observer_bridge.h"
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/discover_feed/discover_feed_service.h"
 #import "ios/chrome/browser/discover_feed/discover_feed_service_factory.h"
 #import "ios/chrome/browser/metrics/new_tab_page_uma.h"
@@ -43,6 +42,7 @@
 #import "ios/chrome/browser/ui/ntp/new_tab_page_header_constants.h"
 #import "ios/chrome/browser/ui/ntp/new_tab_page_view_controller.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_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"
 #import "ios/chrome/browser/voice/voice_search_availability.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator_unittest.mm b/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator_unittest.mm
index 20422989..4ab77b2 100644
--- a/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_mediator_unittest.mm
@@ -9,7 +9,6 @@
 #import "base/test/metrics/histogram_tester.h"
 #import "components/signin/public/identity_manager/identity_manager.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/main/test_browser.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
@@ -26,6 +25,7 @@
 #import "ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.h"
 #import "ios/chrome/browser/ui/ntp/logo_vendor.h"
 #import "ios/chrome/browser/ui/toolbar/test/toolbar_test_navigation_manager.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/fake_url_loading_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_notifier_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/start_suggest_service_factory.mm b/ios/chrome/browser/ui/content_suggestions/start_suggest_service_factory.mm
index 4f86c2004..b4d9e22f 100644
--- a/ios/chrome/browser/ui/content_suggestions/start_suggest_service_factory.mm
+++ b/ios/chrome/browser/ui/content_suggestions/start_suggest_service_factory.mm
@@ -7,8 +7,8 @@
 #import "components/keyed_service/ios/browser_state_dependency_manager.h"
 #import "ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/search_engines/template_url_service_factory.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "services/network/public/cpp/shared_url_loader_factory.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm
index 8d1fb94..0f1f2df 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm
@@ -369,9 +369,13 @@
 }
 
 - (void)cancelShowPromoTimer {
+  // Only reset the reason and web state to listen to if there is no promo
+  // showing.
+  if (!self.promoIsShowing) {
+    self.currentPromoReason = PromoReasonNone;
+    self.webStateToListenTo = nullptr;
+  }
   _showPromoTimer = nullptr;
-  self.currentPromoReason = PromoReasonNone;
-  self.webStateToListenTo = nullptr;
 }
 
 - (void)showPromoTimerFinished {
diff --git a/ios/chrome/browser/ui/download/BUILD.gn b/ios/chrome/browser/ui/download/BUILD.gn
index e7cc411d..f1d162e 100644
--- a/ios/chrome/browser/ui/download/BUILD.gn
+++ b/ios/chrome/browser/ui/download/BUILD.gn
@@ -145,10 +145,10 @@
     ":features",
     "//components/strings:components_strings_grit",
     "//ios/chrome/app/strings:ios_strings_grit",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/download:mime_types",
     "//ios/chrome/browser/download:test_support",
     "//ios/chrome/browser/ui/infobars/banners:public",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/test:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing:embedded_test_server_support",
diff --git a/ios/chrome/browser/ui/download/download_manager_egtest.mm b/ios/chrome/browser/ui/download/download_manager_egtest.mm
index 602ff9d..de56adb0 100644
--- a/ios/chrome/browser/ui/download/download_manager_egtest.mm
+++ b/ios/chrome/browser/ui/download/download_manager_egtest.mm
@@ -4,7 +4,7 @@
 
 #import "base/bind.h"
 #import "base/test/ios/wait_util.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_actions.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
diff --git a/ios/chrome/browser/ui/first_run/BUILD.gn b/ios/chrome/browser/ui/first_run/BUILD.gn
index 3b9c54e..6f397526 100644
--- a/ios/chrome/browser/ui/first_run/BUILD.gn
+++ b/ios/chrome/browser/ui/first_run/BUILD.gn
@@ -99,6 +99,7 @@
     "//ios/chrome/browser/ui/settings/utils",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/ui/util:terms_util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/common:string_util",
     "//ios/chrome/common/ui/colors",
diff --git a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
index b217a09..78d8f4c 100644
--- a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
+++ b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
@@ -19,7 +19,6 @@
 #import "components/web_resource/web_resource_pref_names.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/first_run/first_run_configuration.h"
 #import "ios/chrome/browser/first_run/first_run_metrics.h"
 #import "ios/chrome/browser/main/browser.h"
@@ -40,6 +39,7 @@
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/terms_util.h"
 #import "ios/chrome/browser/ui/util/ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/common/string_util.h"
 #import "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/fullscreen/BUILD.gn b/ios/chrome/browser/ui/fullscreen/BUILD.gn
index 432e067..3028167 100644
--- a/ios/chrome/browser/ui/fullscreen/BUILD.gn
+++ b/ios/chrome/browser/ui/fullscreen/BUILD.gn
@@ -98,6 +98,7 @@
     "//ios/chrome/browser/ui/ntp:logo",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/common:timing",
     "//ios/public/provider/chrome/browser/fullscreen:fullscreen_api",
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_web_view_resizer.mm b/ios/chrome/browser/ui/fullscreen/fullscreen_web_view_resizer.mm
index b4a8e02..9601401 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_web_view_resizer.mm
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_web_view_resizer.mm
@@ -5,9 +5,9 @@
 #import "ios/chrome/browser/ui/fullscreen/fullscreen_web_view_resizer.h"
 
 #import "base/ios/ios_util.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/fullscreen/fullscreen_model.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/common/features.h"
 #import "ios/web/public/ui/crw_web_view_proxy.h"
 #import "ios/web/public/ui/crw_web_view_scroll_view_proxy.h"
diff --git a/ios/chrome/browser/ui/history/BUILD.gn b/ios/chrome/browser/ui/history/BUILD.gn
index 46a84eea..1afe98e 100644
--- a/ios/chrome/browser/ui/history/BUILD.gn
+++ b/ios/chrome/browser/ui/history/BUILD.gn
@@ -101,6 +101,7 @@
     "//ios/chrome/browser/ui/table_view:styler",
     "//ios/chrome/browser/ui/table_view:utils",
     "//ios/chrome/browser/ui/table_view/cells",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/window_activities",
diff --git a/ios/chrome/browser/ui/history/history_table_view_controller.mm b/ios/chrome/browser/ui/history/history_table_view_controller.mm
index d01f8cb2..880f746 100644
--- a/ios/chrome/browser/ui/history/history_table_view_controller.mm
+++ b/ios/chrome/browser/ui/history/history_table_view_controller.mm
@@ -15,7 +15,6 @@
 #import "components/url_formatter/url_formatter.h"
 #import "ios/chrome/app/tests_hook.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/drag_and_drop/drag_item_util.h"
 #import "ios/chrome/browser/drag_and_drop/table_view_url_drag_drop_handler.h"
 #import "ios/chrome/browser/main/browser.h"
@@ -45,6 +44,7 @@
 #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/pasteboard_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"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
diff --git a/ios/chrome/browser/ui/infobars/BUILD.gn b/ios/chrome/browser/ui/infobars/BUILD.gn
index 3009ac9..b6eec1d 100644
--- a/ios/chrome/browser/ui/infobars/BUILD.gn
+++ b/ios/chrome/browser/ui/infobars/BUILD.gn
@@ -32,13 +32,13 @@
     "//components/translate/core/browser:translate_pref_names",
     "//components/translate/core/common",
     "//ios/chrome/app/strings:ios_strings_grit",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/translate:eg_test_support+eg2",
     "//ios/chrome/browser/ui/badges:public",
     "//ios/chrome/browser/ui/infobars:constants",
     "//ios/chrome/browser/ui/infobars/banners:public",
     "//ios/chrome/browser/ui/infobars/modals:public",
     "//ios/chrome/browser/ui/popup_menu:constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/components/webui:url_constants",
     "//ios/testing/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm b/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm
index 4490159..2060fbf3 100644
--- a/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm
+++ b/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm
@@ -12,7 +12,6 @@
 #import "base/test/ios/wait_util.h"
 #import "components/translate/core/browser/translate_pref_names.h"
 #import "components/translate/core/common/translate_constants.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/translate/translate_app_interface.h"
 #import "ios/chrome/browser/ui/badges/badge_constants.h"
 #import "ios/chrome/browser/ui/infobars/banners/infobar_banner_constants.h"
@@ -20,6 +19,7 @@
 #import "ios/chrome/browser/ui/infobars/modals/infobar_modal_constants.h"
 #import "ios/chrome/browser/ui/infobars/modals/infobar_translate_modal_constants.h"
 #import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h"
diff --git a/ios/chrome/browser/ui/location_bar/BUILD.gn b/ios/chrome/browser/ui/location_bar/BUILD.gn
index 33d2a9b3..009a9bbf 100644
--- a/ios/chrome/browser/ui/location_bar/BUILD.gn
+++ b/ios/chrome/browser/ui/location_bar/BUILD.gn
@@ -121,6 +121,7 @@
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/reading_list",
     "//ios/chrome/browser/ssl",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/components/security_interstitials",
     "//ios/components/webui:url_constants",
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_model_delegate_ios.mm b/ios/chrome/browser/ui/location_bar/location_bar_model_delegate_ios.mm
index 3feb177..2f59242 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_model_delegate_ios.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_model_delegate_ios.mm
@@ -12,9 +12,9 @@
 #import "components/security_state/ios/security_state_utils.h"
 #import "ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/prefs/pref_names.h"
 #import "ios/chrome/browser/reading_list/offline_page_tab_helper.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/components/security_interstitials/ios_blocking_page_tab_helper.h"
 #import "ios/components/webui/web_ui_url_constants.h"
diff --git a/ios/chrome/browser/ui/main/BUILD.gn b/ios/chrome/browser/ui/main/BUILD.gn
index 5245455..65ad852 100644
--- a/ios/chrome/browser/ui/main/BUILD.gn
+++ b/ios/chrome/browser/ui/main/BUILD.gn
@@ -147,7 +147,6 @@
     "//ios/chrome/app/application_delegate:url_opener_params",
     "//ios/chrome/app/strings:ios_strings_grit",
     "//ios/chrome/browser",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/browsing_data",
@@ -200,6 +199,8 @@
     "//ios/chrome/browser/ui/thumb_strip:feature_flags",
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:agents",
diff --git a/ios/chrome/browser/ui/main/scene_controller.mm b/ios/chrome/browser/ui/main/scene_controller.mm
index 8f2d995..abdd5ef 100644
--- a/ios/chrome/browser/ui/main/scene_controller.mm
+++ b/ios/chrome/browser/ui/main/scene_controller.mm
@@ -45,8 +45,6 @@
 #import "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
 #import "ios/chrome/browser/browsing_data/browsing_data_remover.h"
 #import "ios/chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.h"
 #import "ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_keyed_service_factory.h"
 #import "ios/chrome/browser/crash_report/crash_keys_helper.h"
@@ -126,6 +124,8 @@
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/top_view_controller.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/browser/url_loading/scene_url_loading_service.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/ntp/BUILD.gn b/ios/chrome/browser/ui/ntp/BUILD.gn
index 699dd27..c12dd2d 100644
--- a/ios/chrome/browser/ui/ntp/BUILD.gn
+++ b/ios/chrome/browser/ui/ntp/BUILD.gn
@@ -118,6 +118,7 @@
   deps = [
     "//ios/chrome/browser",
     "//ios/chrome/browser/ntp",
+    "//ios/chrome/browser/url:constants",
     "//ios/web/public",
   ]
 }
@@ -304,11 +305,11 @@
     "//components/policy/core/common:test_support",
     "//components/strings",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/metrics:eg_test_support+eg2",
     "//ios/chrome/browser/policy:eg_test_support+eg2",
     "//ios/chrome/browser/ui/content_suggestions:content_suggestions_constant",
     "//ios/chrome/browser/ui/popup_menu:constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing/earl_grey:eg_test_support+eg2",
     "//ios/third_party/earl_grey2:test_lib",
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm b/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm
index f737c39..940644cf 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm
@@ -8,11 +8,11 @@
 #import "components/policy/core/common/policy_test_utils.h"
 #import "components/policy/policy_constants.h"
 #import "components/strings/grit/components_strings.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/metrics/metrics_app_interface.h"
 #import "ios/chrome/browser/policy/policy_earl_grey_utils.h"
 #import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h"
 #import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
diff --git a/ios/chrome/browser/ui/ntp/ntp_util.mm b/ios/chrome/browser/ui/ntp/ntp_util.mm
index 22914da..32e7b6d 100644
--- a/ios/chrome/browser/ui/ntp/ntp_util.mm
+++ b/ios/chrome/browser/ui/ntp/ntp_util.mm
@@ -4,8 +4,8 @@
 
 #import "ios/chrome/browser/ui/ntp/ntp_util.h"
 
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
 #import "ios/web/public/web_state.h"
diff --git a/ios/chrome/browser/ui/omnibox/BUILD.gn b/ios/chrome/browser/ui/omnibox/BUILD.gn
index a3183041..ed96f89 100644
--- a/ios/chrome/browser/ui/omnibox/BUILD.gn
+++ b/ios/chrome/browser/ui/omnibox/BUILD.gn
@@ -182,6 +182,7 @@
     "//ios/chrome/browser/ui/orchestrator:orchestrator",
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/common",
     "//ios/chrome/common/intents",
@@ -299,6 +300,7 @@
     "//ios/chrome/browser/main",
     "//ios/chrome/browser/main:test_support",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:test_support",
     "//ios/web/common:uikit",
diff --git a/ios/chrome/browser/ui/omnibox/chrome_omnibox_client_ios.mm b/ios/chrome/browser/ui/omnibox/chrome_omnibox_client_ios.mm
index 7842b7c..6ae422bb 100644
--- a/ios/chrome/browser/ui/omnibox/chrome_omnibox_client_ios.mm
+++ b/ios/chrome/browser/ui/omnibox/chrome_omnibox_client_ios.mm
@@ -20,13 +20,13 @@
 #import "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #import "ios/chrome/browser/bookmarks/bookmarks_utils.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/https_upgrades/https_upgrade_service_factory.h"
 #import "ios/chrome/browser/prerender/prerender_service.h"
 #import "ios/chrome/browser/prerender/prerender_service_factory.h"
 #import "ios/chrome/browser/search_engines/template_url_service_factory.h"
 #import "ios/chrome/browser/sessions/ios_chrome_session_tab_helper.h"
 #import "ios/chrome/browser/ui/omnibox/web_omnibox_edit_controller.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/intents/SearchInChromeIntent.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/web/public/navigation/navigation_manager.h"
diff --git a/ios/chrome/browser/ui/omnibox/popup/BUILD.gn b/ios/chrome/browser/ui/omnibox/popup/BUILD.gn
index e2ed06a2..190f33db 100644
--- a/ios/chrome/browser/ui/omnibox/popup/BUILD.gn
+++ b/ios/chrome/browser/ui/omnibox/popup/BUILD.gn
@@ -104,6 +104,7 @@
     "//ios/chrome/browser/ui/toolbar/buttons",
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list:web_state_list",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/favicon",
@@ -253,13 +254,13 @@
     "//base",
     "//components/strings:components_strings_grit",
     "//ios/chrome/app/strings:ios_strings_grit",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/content_suggestions:content_suggestions_constant",
     "//ios/chrome/browser/ui/history:constants",
     "//ios/chrome/browser/ui/omnibox:features",
     "//ios/chrome/browser/ui/settings:constants",
     "//ios/chrome/browser/ui/settings/cells:clear_browsing_data_constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing/earl_grey:eg_test_support+eg2",
     "//ios/third_party/earl_grey2:test_lib",
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_pedal_annotator.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_pedal_annotator.mm
index 109d504..9eae883 100644
--- a/ios/chrome/browser/ui/omnibox/popup/omnibox_pedal_annotator.mm
+++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_pedal_annotator.mm
@@ -9,12 +9,12 @@
 #import "components/omnibox/browser/actions/omnibox_pedal.h"
 #import "components/omnibox/browser/actions/omnibox_pedal_concepts.h"
 #import "components/omnibox/browser/autocomplete_match.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/default_browser/promo_source.h"
 #import "ios/chrome/browser/ui/commands/application_commands.h"
 #import "ios/chrome/browser/ui/commands/omnibox_commands.h"
 #import "ios/chrome/browser/ui/commands/open_new_tab_command.h"
 #import "ios/chrome/browser/ui/omnibox/popup/popup_swift.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ui/base/l10n/l10n_util.h"
 
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm
index f388b6d..f6a146e 100644
--- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm
+++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm
@@ -556,6 +556,32 @@
   }
 }
 
+- (CGFloat)tableView:(UITableView*)tableView
+    heightForRowAtIndexPath:(NSIndexPath*)indexPath {
+  return UITableViewAutomaticDimension;
+}
+
+// Customize the appearance of table view cells.
+- (UITableViewCell*)tableView:(UITableView*)tableView
+        cellForRowAtIndexPath:(NSIndexPath*)indexPath {
+  DCHECK_LT((NSUInteger)indexPath.row,
+            self.currentResult[indexPath.section].suggestions.count);
+  OmniboxPopupRowCell* cell = [self.tableView
+      dequeueReusableCellWithIdentifier:OmniboxPopupRowCellReuseIdentifier
+                           forIndexPath:indexPath];
+  cell.faviconRetriever = self.faviconRetriever;
+  cell.imageRetriever = self.imageRetriever;
+  [cell setupWithAutocompleteSuggestion:self.currentResult[indexPath.section]
+                                            .suggestions[indexPath.row]
+                              incognito:self.incognito];
+  cell.showsSeparator =
+      (NSUInteger)indexPath.row <
+      self.currentResult[indexPath.section].suggestions.count - 1;
+  cell.delegate = self;
+
+  return cell;
+}
+
 #pragma mark - Internal API methods
 
 // Adjust the inset on the table view to prevent keyboard from overlapping the
@@ -630,35 +656,6 @@
                                 animated:NO];
 }
 
-
-#pragma mark - Table view data source
-
-- (CGFloat)tableView:(UITableView*)tableView
-    heightForRowAtIndexPath:(NSIndexPath*)indexPath {
-  return UITableViewAutomaticDimension;
-}
-
-// Customize the appearance of table view cells.
-- (UITableViewCell*)tableView:(UITableView*)tableView
-        cellForRowAtIndexPath:(NSIndexPath*)indexPath {
-  DCHECK_LT((NSUInteger)indexPath.row,
-            self.currentResult[indexPath.section].suggestions.count);
-  OmniboxPopupRowCell* cell = [self.tableView
-      dequeueReusableCellWithIdentifier:OmniboxPopupRowCellReuseIdentifier
-                           forIndexPath:indexPath];
-  cell.faviconRetriever = self.faviconRetriever;
-  cell.imageRetriever = self.imageRetriever;
-  [cell setupWithAutocompleteSuggestion:self.currentResult[indexPath.section]
-                                            .suggestions[indexPath.row]
-                              incognito:self.incognito];
-  cell.showsSeparator =
-      (NSUInteger)indexPath.row <
-      self.currentResult[indexPath.section].suggestions.count - 1;
-  cell.delegate = self;
-
-  return cell;
-}
-
 #pragma mark - Keyboard events
 
 - (void)keyboardDidShow:(NSNotification*)notification {
diff --git a/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper.mm b/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper.mm
index 84b058c..163066a 100644
--- a/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper.mm
+++ b/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper.mm
@@ -9,7 +9,7 @@
 #import "components/omnibox/browser/autocomplete_input.h"
 #import "components/omnibox/common/omnibox_features.h"
 #import "ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/web/public/web_state.h"
diff --git a/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper_unittest.mm b/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper_unittest.mm
index b812216..795ac34 100644
--- a/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper_unittest.mm
+++ b/ios/chrome/browser/ui/omnibox/zero_suggest_prefetch_helper_unittest.mm
@@ -12,10 +12,10 @@
 #import "components/search_engines/template_url_service.h"
 #import "components/search_engines/template_url_service_client.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser_web_state_list_delegate.h"
 #import "ios/chrome/browser/main/test_browser.h"
 #import "ios/chrome/browser/ui/omnibox/omnibox_text_field_legacy.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
diff --git a/ios/chrome/browser/ui/page_info/BUILD.gn b/ios/chrome/browser/ui/page_info/BUILD.gn
index 204ba3a2..7ce23703 100644
--- a/ios/chrome/browser/ui/page_info/BUILD.gn
+++ b/ios/chrome/browser/ui/page_info/BUILD.gn
@@ -38,6 +38,7 @@
     "//ios/chrome/browser/ui/table_view",
     "//ios/chrome/browser/ui/table_view:utils",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common:string_util",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/table_view:cells_constants",
@@ -99,6 +100,7 @@
     "//ios/chrome/browser/ui/settings/privacy",
     "//ios/chrome/browser/ui/settings/utils",
     "//ios/chrome/browser/ui/table_view",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/common/ui/colors",
     "//ios/components/webui:url_constants",
diff --git a/ios/chrome/browser/ui/page_info/page_info_site_security_mediator.mm b/ios/chrome/browser/ui/page_info/page_info_site_security_mediator.mm
index 0eede4e..e719399 100644
--- a/ios/chrome/browser/ui/page_info/page_info_site_security_mediator.mm
+++ b/ios/chrome/browser/ui/page_info/page_info_site_security_mediator.mm
@@ -11,10 +11,10 @@
 #import "components/strings/grit/components_chromium_strings.h"
 #import "components/strings/grit/components_google_chrome_strings.h"
 #import "components/strings/grit/components_strings.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/reading_list/offline_page_tab_helper.h"
 #import "ios/chrome/browser/ui/icons/chrome_symbol.h"
 #import "ios/chrome/browser/ui/page_info/page_info_site_security_description.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/page_info/page_info_view_controller.mm b/ios/chrome/browser/ui/page_info/page_info_view_controller.mm
index 28a6bf7..4847b82 100644
--- a/ios/chrome/browser/ui/page_info/page_info_view_controller.mm
+++ b/ios/chrome/browser/ui/page_info/page_info_view_controller.mm
@@ -7,7 +7,6 @@
 #import "base/mac/foundation_util.h"
 #import "base/notreached.h"
 #import "base/strings/sys_string_conversions.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/net/crurl.h"
 #import "ios/chrome/browser/ui/commands/page_info_commands.h"
 #import "ios/chrome/browser/ui/icons/chrome_symbol.h"
@@ -25,6 +24,7 @@
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/string_util.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h"
diff --git a/ios/chrome/browser/ui/popup_menu/BUILD.gn b/ios/chrome/browser/ui/popup_menu/BUILD.gn
index ab0ff238..4b4fe5c 100644
--- a/ios/chrome/browser/ui/popup_menu/BUILD.gn
+++ b/ios/chrome/browser/ui/popup_menu/BUILD.gn
@@ -105,6 +105,7 @@
     "//ios/chrome/browser/ui/presenters",
     "//ios/chrome/browser/ui/reading_list",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web:feature_flags",
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 c41380e..cdda397 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
@@ -69,7 +69,6 @@
     "//components/profile_metrics",
     "//components/translate/core/browser",
     "//ios/chrome/app/strings:ios_strings_grit",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/find_in_page",
     "//ios/chrome/browser/follow:browser_agent",
@@ -97,6 +96,7 @@
     "//ios/chrome/browser/ui/popup_menu/overflow_menu/destination_usage_history",
     "//ios/chrome/browser/ui/popup_menu/public:features",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web/font_size",
     "//ios/chrome/browser/web_state_list",
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_action_row.swift b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_action_row.swift
index 0e33e4a..83e48c0 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_action_row.swift
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_action_row.swift
@@ -11,6 +11,9 @@
   /// The action for this row.
   @ObservedObject var action: OverflowMenuAction
 
+  /// The size of the symbols.
+  static let symbolSize: CGFloat = 18
+
   weak var metricsHandler: PopupMenuMetricsHandler?
 
   var body: some View {
@@ -23,7 +26,7 @@
         HStack {
           Text(action.name).lineLimit(1)
           Spacer()
-          action.image
+          imageBuilder()
             // Without explicitly removing the image from accessibility,
             // VoiceOver will occasionally read out icons it thinks it can
             // recognize.
@@ -37,4 +40,27 @@
     .accentColor(.textPrimary)
     .listRowSeparatorTint(.overflowMenuSeparator)
   }
+
+  /// Build the image to be displayed, based on the configuration of the item.
+  /// TODO(crbug.com/1315544): Remove this once only the symbols are present.
+  @ViewBuilder
+  func imageBuilder() -> some View {
+    let image = actionImage()
+    if !action.symbolName.isEmpty {
+      image.font(Font.system(size: OverflowMenuActionRow.symbolSize, weight: .medium)).imageScale(
+        .medium)
+    } else {
+      image
+    }
+  }
+
+  func actionImage() -> Image {
+    if !action.symbolName.isEmpty {
+      if action.systemSymbol {
+        return Image(systemName: action.symbolName)
+      }
+      return Image(action.symbolName)
+    }
+    return action.image
+  }
 }
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_destination_view.swift b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_destination_view.swift
index 2e63e539..1fd60597 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_destination_view.swift
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_destination_view.swift
@@ -37,6 +37,9 @@
     /// The image width, which controls the width of the overall view.
     static let imageWidth: CGFloat = 54
 
+    /// The size of the Symbol in the icon.
+    static let iconSymbolSize: CGFloat = 26
+
     /// The width of the icon, used for positioning the unread badge over the
     /// corner.
     static let iconWidth: CGFloat = 30
@@ -113,8 +116,28 @@
       spacing = 0
       interiorPadding = Dimensions.horizontalLayoutIconPadding
     }
-    return destination.image
-      .renderingMode(.template)
+    let image: Image
+    if !destination.symbolName.isEmpty {
+      image =
+        (destination.systemSymbol
+        ? Image(systemName: destination.symbolName) : Image(destination.symbolName)).renderingMode(
+          .template)
+    } else {
+      image = destination.image
+    }
+    return iconBuilder(
+      configuration: configuration, spacing: spacing, interiorPadding: interiorPadding, image: image
+    )
+  }
+
+  /// Build the image to be displayed, based on the configuration of the item.
+  /// TODO(crbug.com/1315544): Remove this once only the symbols are present.
+  @ViewBuilder
+  func iconBuilder(
+    configuration: Configuration, spacing: CGFloat, interiorPadding: CGFloat, image: Image
+  ) -> some View {
+    let configuredImage =
+      image
       .overlay {
         if destination.showBadge {
           Circle()
@@ -131,7 +154,6 @@
       .frame(width: Dimensions.imageWidth, height: Dimensions.imageWidth)
       .padding(interiorPadding)
       .background(iconBackground(configuration: configuration))
-      .foregroundColor(.blue600)
       .padding([.leading, .trailing], spacing)
       // Without explicitly removing the image from accessibility,
       // VoiceOver will occasionally read out icons it thinks it can
@@ -143,6 +165,14 @@
       .onDisappear {
         isIconVisible = false
       }
+
+    if !destination.symbolName.isEmpty {
+      configuredImage
+        .foregroundColor(.blue600).imageScale(.medium).font(
+          Font.system(size: Dimensions.iconSymbolSize, weight: .medium))
+    } else {
+      configuredImage
+    }
   }
 
   /// Text view for the destination.
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_item.swift b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_item.swift
index 1945bcb..f6472752 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_item.swift
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_item.swift
@@ -6,19 +6,23 @@
 
 /// Represents an item in the overflow menu.
 @objcMembers public class OverflowMenuItem: NSObject, ObservableObject {
-  public enum ImageType {
-    case uiImage(UIImage)
-    case name(String)
-  }
   /// The user-visible name of the item.
   @Published public var name: String
 
+  /// The name of the symbol to be used.
+  @Published public var symbolName: String
+
+  /// Whether the symbol is a system one (or a custom one).
+  @Published public var systemSymbol: Bool
+
   /// The base `UIImage` used to load the image for SwiftUI.
+  /// TODO(crbug.com/1315544): Remove this once the symbols have shipped.
   @Published public var storedImage: UIImage
 
   /// The SwiftUI `Image` for the action icon.
+  /// TODO(crbug.com/1315544): Remove this once the symbols have shipped.
   public var image: Image {
-    return Image(uiImage: storedImage)
+    return Image(uiImage: self.storedImage)
   }
 
   /// The accessibility identifier for this item.
@@ -36,6 +40,22 @@
   ) {
     self.name = name
     storedImage = image
+    symbolName = ""
+    systemSymbol = false
+    self.accessibilityIdentifier = accessibilityIdentifier
+    self.enterpriseDisabled = enterpriseDisabled
+    self.handler = handler
+  }
+
+  public init(
+    name: String, symbolName: String, systemSymbol: Bool, accessibilityIdentifier: String,
+    enterpriseDisabled: Bool,
+    handler: @escaping () -> Void
+  ) {
+    self.name = name
+    self.storedImage = UIImage()
+    self.symbolName = symbolName
+    self.systemSymbol = systemSymbol
     self.accessibilityIdentifier = accessibilityIdentifier
     self.enterpriseDisabled = enterpriseDisabled
     self.handler = handler
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 73f0d18..243a6b25 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
@@ -23,7 +23,6 @@
 #import "components/translate/core/browser/translate_manager.h"
 #import "components/translate/core/browser/translate_prefs.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/find_in_page/find_tab_helper.h"
 #import "ios/chrome/browser/follow/follow_browser_agent.h"
 #import "ios/chrome/browser/follow/follow_menu_updater.h"
@@ -61,6 +60,7 @@
 #import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h"
 #import "ios/chrome/browser/ui/popup_menu/public/features.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_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"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
@@ -89,20 +89,41 @@
 
 namespace {
 
-// The size of overflow symbol images.
-NSInteger kOverflowActionSymbolPointSize = 18;
-NSInteger kOverflowDestinationSymbolPointSize = 26;
-
 typedef void (^Handler)(void);
 
+OverflowMenuAction* CreateOverflowMenuActionWithString(
+    NSString* name,
+    NSString* imageName,
+    NSString* accessibilityID,
+    Handler handler) {
+  DCHECK(!UseSymbols());
+  return [[OverflowMenuAction alloc] initWithName:name
+                                            image:[UIImage imageNamed:imageName]
+                          accessibilityIdentifier:accessibilityID
+                               enterpriseDisabled:NO
+                                          handler:handler];
+}
+
 OverflowMenuAction* CreateOverflowMenuAction(int nameID,
                                              NSString* imageName,
                                              NSString* accessibilityID,
                                              Handler handler) {
   DCHECK(!UseSymbols());
   NSString* name = l10n_util::GetNSString(nameID);
+  return CreateOverflowMenuActionWithString(name, imageName, accessibilityID,
+                                            handler);
+}
+
+OverflowMenuAction* CreateOverflowMenuActionWithString(
+    NSString* name,
+    NSString* symbolName,
+    bool systemSymbol,
+    NSString* accessibilityID,
+    Handler handler) {
+  DCHECK(UseSymbols());
   return [[OverflowMenuAction alloc] initWithName:name
-                                            image:[UIImage imageNamed:imageName]
+                                       symbolName:symbolName
+                                     systemSymbol:systemSymbol
                           accessibilityIdentifier:accessibilityID
                                enterpriseDisabled:NO
                                           handler:handler];
@@ -114,21 +135,10 @@
                                              NSString* accessibilityID,
                                              Handler handler) {
   DCHECK(UseSymbols());
-  UIImageConfiguration* configuration = [UIImageSymbolConfiguration
-      configurationWithPointSize:kOverflowActionSymbolPointSize
-                          weight:UIImageSymbolWeightLight
-                           scale:UIImageSymbolScaleMedium];
   NSString* name = l10n_util::GetNSString(nameID);
-  UIImage* symbolImage =
-      [systemSymbol ? DefaultSymbolWithConfiguration(symbolName, configuration)
-                    : CustomSymbolWithConfiguration(symbolName, configuration)
-          imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
 
-  return [[OverflowMenuAction alloc] initWithName:name
-                                            image:symbolImage
-                          accessibilityIdentifier:accessibilityID
-                               enterpriseDisabled:NO
-                                          handler:handler];
+  return CreateOverflowMenuActionWithString(name, symbolName, systemSymbol,
+                                            accessibilityID, handler);
 }
 
 OverflowMenuFooter* CreateOverflowMenuManagedFooter(int nameID,
@@ -674,24 +684,13 @@
 
     if (!self.isIncognito && IsWebChannelsEnabled() &&
         GetFollowActionState(self.webState) != FollowActionStateHidden) {
-      DCHECK(UseSymbols());
-      UIImageConfiguration* configuration = [UIImageSymbolConfiguration
-          configurationWithPointSize:kOverflowActionSymbolPointSize
-                              weight:UIImageSymbolWeightLight
-                               scale:UIImageSymbolScaleMedium];
       NSString* name = l10n_util::GetNSStringF(IDS_IOS_TOOLS_MENU_FOLLOW,
                                                base::SysNSStringToUTF16(@""));
-      UIImage* symbolImage =
-          [DefaultSymbolWithConfiguration(kPlusSymbol, configuration)
-              imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+      OverflowMenuAction* action = CreateOverflowMenuActionWithString(
+          name, kPlusSymbol, YES, kToolsMenuFollow,
+          ^{
+          });
 
-      OverflowMenuAction* action =
-          [[OverflowMenuAction alloc] initWithName:name
-                                             image:symbolImage
-                           accessibilityIdentifier:kToolsMenuFollow
-                                enterpriseDisabled:NO
-                                           handler:^{
-                                           }];
       action.enabled = NO;
       self.followAction = action;
     }
@@ -942,17 +941,6 @@
   DCHECK(UseSymbols());
   __weak __typeof(self) weakSelf = self;
 
-  UIImage* symbol = nil;
-  UIImageConfiguration* configuration = [UIImageSymbolConfiguration
-      configurationWithPointSize:kOverflowDestinationSymbolPointSize
-                          weight:UIImageSymbolWeightRegular
-                           scale:UIImageSymbolScaleMedium];
-  if (systemSymbol) {
-    symbol = DefaultSymbolWithConfiguration(symbolName, configuration);
-  } else {
-    symbol = CustomSymbolWithConfiguration(symbolName, configuration);
-  }
-
   NSString* name = l10n_util::GetNSString(nameID);
 
   auto handlerWithMetrics = ^{
@@ -969,7 +957,8 @@
 
   OverflowMenuDestination* result =
       [[OverflowMenuDestination alloc] initWithName:name
-                                              image:symbol
+                                         symbolName:symbolName
+                                       systemSymbol:systemSymbol
                             accessibilityIdentifier:accessibilityID
                                  enterpriseDisabled:NO
                                             handler:handlerWithMetrics];
@@ -1082,6 +1071,13 @@
   if (self.followAction &&
       GetFollowActionState(self.webState) != FollowActionStateHidden) {
     DCHECK(IsWebChannelsEnabled());
+
+    FollowTabHelper* followTabHelper =
+        FollowTabHelper::FromWebState(self.webState);
+    if (followTabHelper) {
+      followTabHelper->UpdateFollowMenuItem();
+    }
+
     [pageActions addObject:self.followAction];
   }
 
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm
index f91b75d..3088dc3 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm
@@ -12,7 +12,6 @@
 #import "base/notreached.h"
 #import "base/strings/sys_string_conversions.h"
 #import "components/open_from_clipboard/clipboard_recent_content.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/commands/application_commands.h"
 #import "ios/chrome/browser/ui/commands/bookmarks_commands.h"
 #import "ios/chrome/browser/ui/commands/browser_commands.h"
@@ -28,6 +27,7 @@
 #import "ios/chrome/browser/ui/popup_menu/public/cells/popup_menu_item.h"
 #import "ios/chrome/browser/ui/popup_menu/public/popup_menu_table_view_controller.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/web_navigation_browser_agent.h"
 #import "ios/chrome/browser/window_activities/window_activity_helpers.h"
 #import "ios/web/public/web_state.h"
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm
index 2eb60a7b..691a832 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm
@@ -27,7 +27,6 @@
 #import "components/translate/core/browser/translate_manager.h"
 #import "components/translate/core/browser/translate_prefs.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/find_in_page/find_tab_helper.h"
 #import "ios/chrome/browser/follow/follow_browser_agent.h"
 #import "ios/chrome/browser/follow/follow_menu_updater.h"
@@ -63,6 +62,7 @@
 #import "ios/chrome/browser/ui/reading_list/reading_list_menu_notifier.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/image_search_param_generator.h"
 #import "ios/chrome/browser/url_loading/url_loading_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
@@ -749,6 +749,17 @@
   self.requestMobileSiteItem.enabled =
       [self userAgentType] == web::UserAgentType::DESKTOP;
 
+  // Update follow menu item.
+  if (self.followItem &&
+      GetFollowActionState(self.webState) != FollowActionStateHidden) {
+    DCHECK(IsWebChannelsEnabled());
+    FollowTabHelper* followTabHelper =
+        FollowTabHelper::FromWebState(self.webState);
+    if (followTabHelper) {
+      followTabHelper->UpdateFollowMenuItem();
+    }
+  }
+
   // Reload the items.
   [self.popupMenu itemsHaveChanged:self.specificItems];
 }
diff --git a/ios/chrome/browser/ui/reading_list/BUILD.gn b/ios/chrome/browser/ui/reading_list/BUILD.gn
index 8022cf0..cacf45b 100644
--- a/ios/chrome/browser/ui/reading_list/BUILD.gn
+++ b/ios/chrome/browser/ui/reading_list/BUILD.gn
@@ -59,6 +59,7 @@
     "//ios/chrome/browser/ui/table_view:presentation",
     "//ios/chrome/browser/ui/table_view:styler",
     "//ios/chrome/browser/ui/table_view/cells",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/window_activities",
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_coordinator.mm b/ios/chrome/browser/ui/reading_list/reading_list_coordinator.mm
index 05c1b27..cf519f43 100644
--- a/ios/chrome/browser/ui/reading_list/reading_list_coordinator.mm
+++ b/ios/chrome/browser/ui/reading_list/reading_list_coordinator.mm
@@ -13,7 +13,6 @@
 #import "components/feature_engagement/public/tracker.h"
 #import "components/reading_list/core/reading_list_entry.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/favicon/ios_chrome_favicon_loader_factory.h"
 #import "ios/chrome/browser/favicon/ios_chrome_large_icon_service_factory.h"
 #import "ios/chrome/browser/feature_engagement/tracker_factory.h"
@@ -45,6 +44,7 @@
 #import "ios/chrome/browser/ui/table_view/table_view_presentation_controller.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/pasteboard_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"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
diff --git a/ios/chrome/browser/ui/sad_tab/BUILD.gn b/ios/chrome/browser/ui/sad_tab/BUILD.gn
index d82fbd0..39e5faad 100644
--- a/ios/chrome/browser/ui/sad_tab/BUILD.gn
+++ b/ios/chrome/browser/ui/sad_tab/BUILD.gn
@@ -28,6 +28,7 @@
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/overscroll_actions",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm b/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm
index 712cc7d..9c3426e 100644
--- a/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm
+++ b/ios/chrome/browser/ui/sad_tab/sad_tab_view.mm
@@ -11,10 +11,10 @@
 #import "components/grit/components_scaled_resources.h"
 #import "components/strings/grit/components_strings.h"
 #import "components/ui_metrics/sadtab_metrics_types.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/commands/application_commands.h"
 #import "ios/chrome/browser/ui/util/rtl_geometry.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/util/pointer_interaction_util.h"
 #import "ios/chrome/common/ui/util/text_view_util.h"
diff --git a/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn b/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn
index e847fd90..5e6107f 100644
--- a/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn
+++ b/ios/chrome/browser/ui/send_tab_to_self/BUILD.gn
@@ -14,7 +14,6 @@
     "//components/send_tab_to_self",
     "//components/signin/public/identity_manager",
     "//ios/chrome/app/strings:ios_strings_grit",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main",
     "//ios/chrome/browser/send_tab_to_self",
@@ -25,6 +24,7 @@
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/infobars/presentation",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/public/provider/chrome/browser/signin",
     "//ios/third_party/material_components_ios",
     "//ui/base",
diff --git a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm
index 29ce52b..9808f05 100644
--- a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm
+++ b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm
@@ -22,7 +22,6 @@
 #import "components/sync/driver/sync_service.h"
 #import "components/sync/driver/sync_service_observer.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/send_tab_to_self/send_tab_to_self_browser_agent.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
@@ -44,6 +43,7 @@
 #import "ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_presentation_controller.h"
 #import "ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
 #import "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/ios/chrome/browser/ui/settings/BUILD.gn b/ios/chrome/browser/ui/settings/BUILD.gn
index 88851fc..b992103 100644
--- a/ios/chrome/browser/ui/settings/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/BUILD.gn
@@ -191,6 +191,7 @@
     "//ios/chrome/browser/ui/table_view/cells/resources:table_view_cell_check_mark",
     "//ios/chrome/browser/ui/util:terms_util",
     "//ios/chrome/browser/upgrade:public",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/voice",
     "//ios/chrome/browser/voice:prefs",
     "//ios/chrome/browser/web:web",
diff --git a/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm b/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm
index 72fea373..25028105 100644
--- a/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/about_chrome_table_view_controller.mm
@@ -14,7 +14,6 @@
 #import "base/strings/sys_string_conversions.h"
 #import "base/strings/utf_string_conversions.h"
 #import "components/version_info/version_info.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/commands/application_commands.h"
 #import "ios/chrome/browser/ui/commands/snackbar_commands.h"
 #import "ios/chrome/browser/ui/first_run/fre_field_trial.h"
@@ -27,6 +26,7 @@
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/terms_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/channel_info.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
index a1637268..433f5ce 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
@@ -65,6 +65,7 @@
     "//ios/chrome/browser/ui/table_view:styler",
     "//ios/chrome/browser/ui/table_view:utils",
     "//ios/chrome/browser/ui/table_view/cells",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/table_view:cells_constants",
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
index 2fa0faf..cdca7f0eb 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
@@ -33,7 +33,6 @@
 #import "ios/chrome/browser/browsing_data/browsing_data_remover.h"
 #import "ios/chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #import "ios/chrome/browser/browsing_data/browsing_data_remover_observer_bridge.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/feature_engagement/tracker_factory.h"
 #import "ios/chrome/browser/history/web_history_service_factory.h"
 #import "ios/chrome/browser/main/browser.h"
@@ -61,6 +60,7 @@
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/channel_info.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
index 2514564c..68b4859 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
@@ -16,7 +16,6 @@
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/browsing_data/browsing_data_features.h"
 #import "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/discover_feed/discover_feed_service.h"
 #import "ios/chrome/browser/discover_feed/discover_feed_service_factory.h"
 #import "ios/chrome/browser/main/browser.h"
@@ -40,6 +39,7 @@
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h"
 #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/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
diff --git a/ios/chrome/browser/ui/settings/elements/BUILD.gn b/ios/chrome/browser/ui/settings/elements/BUILD.gn
index 3ce40169..b7d0f62 100644
--- a/ios/chrome/browser/ui/settings/elements/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/elements/BUILD.gn
@@ -41,7 +41,7 @@
     ":info_popover_view_controller",
     "//base:base",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser:chrome_url_constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common:string_util",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/settings/elements/enterprise_info_popover_view_controller.mm b/ios/chrome/browser/ui/settings/elements/enterprise_info_popover_view_controller.mm
index 0bb0deef..66bcb56 100644
--- a/ios/chrome/browser/ui/settings/elements/enterprise_info_popover_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/elements/enterprise_info_popover_view_controller.mm
@@ -6,8 +6,8 @@
 
 #import "base/mac/foundation_util.h"
 #import "base/strings/sys_string_conversions.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/settings/elements/elements_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/string_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/settings/google_services/BUILD.gn b/ios/chrome/browser/ui/settings/google_services/BUILD.gn
index 38e595d..eeea36a 100644
--- a/ios/chrome/browser/ui/settings/google_services/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/google_services/BUILD.gn
@@ -66,6 +66,7 @@
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/icons",
     "//ios/chrome/browser/ui/icons:item_icons",
+    "//ios/chrome/browser/ui/icons:settings_icons",
     "//ios/chrome/browser/ui/icons:symbols",
     "//ios/chrome/browser/ui/list_model",
     "//ios/chrome/browser/ui/settings:constants",
@@ -78,6 +79,7 @@
     "//ios/chrome/browser/ui/table_view",
     "//ios/chrome/browser/ui/table_view:utils",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/table_view:cells_constants",
diff --git a/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm b/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm
index ae531730..2153c447 100644
--- a/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/google_services/accounts_table_view_controller.mm
@@ -14,7 +14,6 @@
 #import "components/strings/grit/components_strings.h"
 #import "components/sync/driver/sync_service.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/net/crurl.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
@@ -43,6 +42,7 @@
 #import "ios/chrome/browser/ui/table_view/table_view_model.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm
index 06601d0..78c190e8 100644
--- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm
+++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm
@@ -11,7 +11,6 @@
 #import "components/sync/driver/sync_service_utils.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
 #import "ios/chrome/browser/signin/authentication_service_factory.h"
@@ -36,6 +35,7 @@
 #import "ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
 #import "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_coordinator.mm b/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_coordinator.mm
index dbd7983..2f749b2 100644
--- a/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_coordinator.mm
+++ b/ios/chrome/browser/ui/settings/google_services/manage_sync_settings_coordinator.mm
@@ -13,7 +13,6 @@
 #import "components/sync/driver/sync_user_settings.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
 #import "ios/chrome/browser/signin/authentication_service_factory.h"
@@ -36,6 +35,7 @@
 #import "ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.h"
 #import "ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
 #import "ios/public/provider/chrome/browser/signin/chrome_identity_service.h"
 #import "net/base/mac/url_conversions.h"
diff --git a/ios/chrome/browser/ui/settings/password/BUILD.gn b/ios/chrome/browser/ui/settings/password/BUILD.gn
index 391f210..bba22a1 100644
--- a/ios/chrome/browser/ui/settings/password/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/password/BUILD.gn
@@ -116,6 +116,7 @@
     "//ios/chrome/browser/ui/table_view:utils",
     "//ios/chrome/browser/ui/table_view/cells",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common",
     "//ios/chrome/common:constants",
     "//ios/chrome/common/ui/colors",
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 88ea61ff..2b66381 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
@@ -28,7 +28,6 @@
 #import "components/sync/driver/sync_user_settings.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/net/crurl.h"
@@ -62,6 +61,7 @@
 #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/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/elements/popover_label_view_controller.h"
 #import "ios/chrome/common/ui/favicon/favicon_view.h"
diff --git a/ios/chrome/browser/ui/settings/privacy/BUILD.gn b/ios/chrome/browser/ui/settings/privacy/BUILD.gn
index 3cbad0b..4eb3f0d 100644
--- a/ios/chrome/browser/ui/settings/privacy/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/privacy/BUILD.gn
@@ -61,6 +61,7 @@
     "//ios/chrome/browser/ui/table_view:styler",
     "//ios/chrome/browser/ui/table_view:utils",
     "//ios/chrome/browser/ui/table_view/cells",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/common:string_util",
     "//ios/chrome/common/ui/colors",
diff --git a/ios/chrome/browser/ui/settings/privacy/privacy_safe_browsing_coordinator.mm b/ios/chrome/browser/ui/settings/privacy/privacy_safe_browsing_coordinator.mm
index 781b45dd..907a511 100644
--- a/ios/chrome/browser/ui/settings/privacy/privacy_safe_browsing_coordinator.mm
+++ b/ios/chrome/browser/ui/settings/privacy/privacy_safe_browsing_coordinator.mm
@@ -9,7 +9,6 @@
 #import "base/metrics/user_metrics_action.h"
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service_factory.h"
 #import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h"
@@ -21,6 +20,7 @@
 #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/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/settings/sync/BUILD.gn b/ios/chrome/browser/ui/settings/sync/BUILD.gn
index 4ad5baf..a8a139a 100644
--- a/ios/chrome/browser/ui/settings/sync/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/sync/BUILD.gn
@@ -48,6 +48,7 @@
     "//ios/chrome/browser/ui/table_view:utils",
     "//ios/chrome/browser/ui/table_view/cells",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/table_view:cells_constants",
     "//ios/public/provider/chrome/browser",
diff --git a/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.mm b/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.mm
index 83ac3f4..6fb0795 100644
--- a/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/sync/sync_encryption_passphrase_table_view_controller.mm
@@ -19,7 +19,6 @@
 #import "components/sync/driver/sync_user_settings.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/net/crurl.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
@@ -41,6 +40,7 @@
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
 #import "ui/base/l10n/l10n_util.h"
diff --git a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm
index a70453a..b4f522bc 100644
--- a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm
@@ -18,7 +18,6 @@
 #import "components/sync/driver/sync_user_settings.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/net/crurl.h"
 #import "ios/chrome/browser/sync/sync_observer_bridge.h"
@@ -33,6 +32,7 @@
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/side_swipe/BUILD.gn b/ios/chrome/browser/ui/side_swipe/BUILD.gn
index 85d9fd8..9b668ad9 100644
--- a/ios/chrome/browser/ui/side_swipe/BUILD.gn
+++ b/ios/chrome/browser/ui/side_swipe/BUILD.gn
@@ -37,6 +37,8 @@
     "//ios/chrome/browser/ui/tabs/requirements",
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web:page_placeholder",
     "//ios/chrome/browser/web_state_list",
@@ -61,6 +63,7 @@
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state:test_support",
     "//ios/chrome/browser/main:test_support",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/test:test_support",
     "//ios/web/common",
diff --git a/ios/chrome/browser/ui/side_swipe/side_swipe_controller_unittest.mm b/ios/chrome/browser/ui/side_swipe/side_swipe_controller_unittest.mm
index 0e5525a..8bc3ccb 100644
--- a/ios/chrome/browser/ui/side_swipe/side_swipe_controller_unittest.mm
+++ b/ios/chrome/browser/ui/side_swipe/side_swipe_controller_unittest.mm
@@ -7,8 +7,8 @@
 #import <WebKit/WebKit.h>
 
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/test_browser.h"
+#import "ios/chrome/browser/url/chrome_url_constants.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/chrome/test/scoped_key_window.h"
diff --git a/ios/chrome/browser/ui/side_swipe/side_swipe_util.mm b/ios/chrome/browser/ui/side_swipe/side_swipe_util.mm
index bb601a46..01a02db 100644
--- a/ios/chrome/browser/ui/side_swipe/side_swipe_util.mm
+++ b/ios/chrome/browser/ui/side_swipe/side_swipe_util.mm
@@ -6,10 +6,10 @@
 
 #import <UIKit/UIKit.h>
 
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/ui/ntp/ntp_util.h"
 #import "ios/chrome/browser/ui/util/rtl_geometry.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/web/public/navigation/navigation_item.h"
 #import "url/gurl.h"
 
diff --git a/ios/chrome/browser/ui/start_surface/BUILD.gn b/ios/chrome/browser/ui/start_surface/BUILD.gn
index bd64914..83fcca60 100644
--- a/ios/chrome/browser/ui/start_surface/BUILD.gn
+++ b/ios/chrome/browser/ui/start_surface/BUILD.gn
@@ -43,6 +43,8 @@
     "//ios/chrome/browser/ui/main:browser_interface_provider",
     "//ios/chrome/browser/ui/main:observing_scene_agent",
     "//ios/chrome/browser/ui/main:scene_state_header",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:agents",
     "//ios/web/public",
@@ -67,13 +69,14 @@
     "//ios/chrome/app/application_delegate:application_delegate_internal",
     "//ios/chrome/app/application_delegate:test_support",
     "//ios/chrome/browser",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state:test_support",
     "//ios/chrome/browser/ntp",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/main:browser_interface_provider",
     "//ios/chrome/browser/ui/main:scene",
     "//ios/chrome/browser/ui/main/test",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/test:test_support",
     "//ios/web/public/test/fakes",
diff --git a/ios/chrome/browser/ui/start_surface/start_surface_scene_agent.mm b/ios/chrome/browser/ui/start_surface/start_surface_scene_agent.mm
index 4b80144..08edba4 100644
--- a/ios/chrome/browser/ui/start_surface/start_surface_scene_agent.mm
+++ b/ios/chrome/browser/ui/start_surface/start_surface_scene_agent.mm
@@ -11,8 +11,6 @@
 #import "components/url_param_filter/core/url_param_filterer.h"
 #import "ios/chrome/app/application_delegate/app_state.h"
 #import "ios/chrome/app/application_delegate/startup_information.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
 #import "ios/chrome/browser/ui/main/browser_interface_provider.h"
@@ -21,6 +19,8 @@
 #import "ios/chrome/browser/ui/start_surface/start_surface_recent_tab_browser_agent.h"
 #import "ios/chrome/browser/ui/start_surface/start_surface_util.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/browser/web_state_list/tab_insertion_browser_agent.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/web/public/navigation/navigation_manager.h"
diff --git a/ios/chrome/browser/ui/start_surface/start_surface_scene_agent_unittest.mm b/ios/chrome/browser/ui/start_surface/start_surface_scene_agent_unittest.mm
index ea6d7d89..570d215 100644
--- a/ios/chrome/browser/ui/start_surface/start_surface_scene_agent_unittest.mm
+++ b/ios/chrome/browser/ui/start_surface/start_surface_scene_agent_unittest.mm
@@ -13,8 +13,6 @@
 #import "ios/chrome/app/application_delegate/fake_startup_information.h"
 #import "ios/chrome/app/main_application_delegate.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
 #import "ios/chrome/browser/ui/main/browser_interface_provider.h"
@@ -23,6 +21,8 @@
 #import "ios/chrome/browser/ui/start_surface/start_surface_recent_tab_browser_agent.h"
 #import "ios/chrome/browser/ui/start_surface/start_surface_util.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.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/chrome/test/scoped_key_window.h"
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn b/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
index 803955b..0e1af0f 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
@@ -72,6 +72,8 @@
     "//ios/chrome/browser/ui/thumb_strip:public",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/ui/util:url_with_title",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web_state_list",
@@ -155,6 +157,7 @@
     "//ios/chrome/browser/ui/thumb_strip:feature_flags",
     "//ios/chrome/browser/ui/thumb_strip:public",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common:string_util",
     "//ios/chrome/common/ui/util",
     "//ios/web/public",
@@ -202,6 +205,7 @@
     "//ios/chrome/browser/ui/popup_menu",
     "//ios/chrome/browser/ui/tab_switcher",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web:page_placeholder",
     "//ios/chrome/browser/web/session_state",
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/disabled_tab_view_controller.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/disabled_tab_view_controller.mm
index 0cfc35c..8e20315 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/disabled_tab_view_controller.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/disabled_tab_view_controller.mm
@@ -4,11 +4,11 @@
 
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/disabled_tab_view_controller.h"
 
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_constants.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_constants.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_paging.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/string_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/tab_switcher/tab_grid/tab_grid_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
index baff6d1f..aed0272 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
@@ -16,7 +16,6 @@
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/policy/policy_util.h"
 #import "ios/chrome/browser/prefs/pref_names.h"
@@ -65,6 +64,7 @@
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/named_guide.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_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"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm
index 3578545..45102f2 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator.mm
@@ -23,8 +23,6 @@
 #import "components/sessions/core/tab_restore_service.h"
 #import "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/commerce/shopping_persisted_data_tab_helper.h"
 #import "ios/chrome/browser/drag_and_drop/drag_item_util.h"
 #import "ios/chrome/browser/flags/system_flags.h"
@@ -52,6 +50,8 @@
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_item.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_switcher_item.h"
 #import "ios/chrome/browser/ui/util/url_with_title.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.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"
 #import "ios/chrome/browser/web_state_list/web_state_list_serialization.h"
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator_unittest.mm
index 1bd107db..9d5a0b6 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_mediator_unittest.mm
@@ -21,7 +21,6 @@
 #import "components/sync_preferences/testing_pref_service_syncable.h"
 #import "components/unified_consent/pref_names.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/commerce/shopping_persisted_data_tab_helper.h"
 #import "ios/chrome/browser/main/browser_list.h"
 #import "ios/chrome/browser/main/browser_list_factory.h"
@@ -40,6 +39,7 @@
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_consumer.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_switcher_item.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/page_placeholder_tab_helper.h"
 #import "ios/chrome/browser/web/session_state/web_session_state_tab_helper.h"
 #import "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h"
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn b/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn
index 064ad40..57ca85c 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn
@@ -43,6 +43,8 @@
     "//ios/chrome/browser/ui/image_util",
     "//ios/chrome/browser/ui/tab_switcher",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/common/ui/colors",
     "//ios/web/public",
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_mediator.mm
index 12fd249..a1cc605 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_mediator.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_mediator.mm
@@ -6,11 +6,11 @@
 
 #import "components/favicon/ios/web_favicon_driver.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/tabs/tab_title_util.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_consumer.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_switcher_item.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/browser/web_state_list/all_web_state_observation_forwarder.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"
diff --git a/ios/chrome/browser/ui/thumb_strip/BUILD.gn b/ios/chrome/browser/ui/thumb_strip/BUILD.gn
index 7ca5000..b6677a2 100644
--- a/ios/chrome/browser/ui/thumb_strip/BUILD.gn
+++ b/ios/chrome/browser/ui/thumb_strip/BUILD.gn
@@ -21,6 +21,7 @@
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/gestures",
     "//ios/chrome/browser/ui/tab_switcher/tab_grid/grid:grid_ui_constants",
+    "//ios/chrome/browser/url",
     "//ios/chrome/browser/web_state_list",
     "//ios/web/public",
     "//ios/web/public/ui",
diff --git a/ios/chrome/browser/ui/thumb_strip/thumb_strip_mediator.mm b/ios/chrome/browser/ui/thumb_strip/thumb_strip_mediator.mm
index c3d82fd..0502847 100644
--- a/ios/chrome/browser/ui/thumb_strip/thumb_strip_mediator.mm
+++ b/ios/chrome/browser/ui/thumb_strip/thumb_strip_mediator.mm
@@ -4,8 +4,8 @@
 
 #import "ios/chrome/browser/ui/thumb_strip/thumb_strip_mediator.h"
 
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/overlays/public/overlay_presentation_context.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.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"
diff --git a/ios/chrome/browser/ui/toolbar/BUILD.gn b/ios/chrome/browser/ui/toolbar/BUILD.gn
index ee5d316a..0854a8bb 100644
--- a/ios/chrome/browser/ui/toolbar/BUILD.gn
+++ b/ios/chrome/browser/ui/toolbar/BUILD.gn
@@ -71,6 +71,7 @@
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/ui/voice",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/url_loading:url_loading_params_header",
     "//ios/chrome/browser/web",
@@ -169,6 +170,7 @@
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/toolbar/test",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:test_support",
     "//ios/chrome/test:test_support",
diff --git a/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm b/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm
index 087bdbc3..46786ba9 100644
--- a/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm
+++ b/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm
@@ -10,7 +10,6 @@
 #import "base/strings/sys_string_conversions.h"
 #import "components/open_from_clipboard/clipboard_recent_content.h"
 #import "components/search_engines/template_url_service.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/overlays/public/overlay_presenter.h"
 #import "ios/chrome/browser/overlays/public/overlay_presenter_observer_bridge.h"
 #import "ios/chrome/browser/policy/policy_util.h"
@@ -25,6 +24,7 @@
 #import "ios/chrome/browser/ui/ntp/ntp_util.h"
 #import "ios/chrome/browser/ui/toolbar/toolbar_consumer.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/image_search_param_generator.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/toolbar/toolbar_mediator_unittest.mm b/ios/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
index 391fb582..94d7b97 100644
--- a/ios/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
@@ -13,7 +13,6 @@
 #import "components/open_from_clipboard/clipboard_recent_content.h"
 #import "components/open_from_clipboard/fake_clipboard_recent_content.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/test_browser.h"
 #import "ios/chrome/browser/policy/policy_util.h"
 #import "ios/chrome/browser/ui/commands/application_commands.h"
@@ -24,6 +23,7 @@
 #import "ios/chrome/browser/ui/menu/browser_action_factory.h"
 #import "ios/chrome/browser/ui/toolbar/test/toolbar_test_navigation_manager.h"
 #import "ios/chrome/browser/ui/toolbar/toolbar_consumer.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.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"
diff --git a/ios/chrome/browser/ui/util/BUILD.gn b/ios/chrome/browser/ui/util/BUILD.gn
index 585a3a7..1aa0d08 100644
--- a/ios/chrome/browser/ui/util/BUILD.gn
+++ b/ios/chrome/browser/ui/util/BUILD.gn
@@ -98,6 +98,7 @@
     "//base",
     "//ios/chrome/app/strings",
     "//ios/chrome/browser",
+    "//ios/chrome/browser/url:constants",
     "//ui/base",
     "//url",
   ]
diff --git a/ios/chrome/browser/ui/util/terms_util.mm b/ios/chrome/browser/ui/util/terms_util.mm
index 2abaff88..ee6ab6bb 100644
--- a/ios/chrome/browser/ui/util/terms_util.mm
+++ b/ios/chrome/browser/ui/util/terms_util.mm
@@ -8,7 +8,7 @@
 #import "base/mac/foundation_util.h"
 #import "base/strings/sys_string_conversions.h"
 #import "ios/chrome/browser/application_context/application_context.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ui/base/l10n/l10n_util.h"
 #import "url/gurl.h"
diff --git a/ios/chrome/browser/ui/webui/BUILD.gn b/ios/chrome/browser/ui/webui/BUILD.gn
index cffa497..48d1976d 100644
--- a/ios/chrome/browser/ui/webui/BUILD.gn
+++ b/ios/chrome/browser/ui/webui/BUILD.gn
@@ -88,6 +88,7 @@
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/ui/util:terms_util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web/java_script_console",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/webui",
@@ -131,6 +132,7 @@
     "//ios/chrome/browser/ui/webui/optimization_guide_internals",
     "//ios/chrome/browser/ui/webui/policy",
     "//ios/chrome/browser/ui/webui/translate_internals",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common",
     "//ios/components/webui:provider",
     "//ios/components/webui:url_constants",
@@ -162,7 +164,7 @@
     "//components/strings",
     "//components/version_info",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser:chrome_url_constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/components/webui:url_constants",
     "//ios/testing/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/webui/about_ui.cc b/ios/chrome/browser/ui/webui/about_ui.cc
index f8d87e6..8a2e17b 100644
--- a/ios/chrome/browser/ui/webui/about_ui.cc
+++ b/ios/chrome/browser/ui/webui/about_ui.cc
@@ -20,7 +20,7 @@
 #include "components/grit/components_resources.h"
 #include "google_apis/gaia/google_service_auth_error.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/web/public/webui/url_data_source_ios.h"
 #include "ui/base/device_form_factor.h"
 #include "ui/base/resource/resource_bundle.h"
diff --git a/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/autofill_internals_ui_ios.mm b/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/autofill_internals_ui_ios.mm
index e16da0af..d1fd5f52 100644
--- a/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/autofill_internals_ui_ios.mm
+++ b/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/autofill_internals_ui_ios.mm
@@ -6,8 +6,8 @@
 
 #import "ios/chrome/browser/autofill/autofill_log_router_factory.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/internals_ui_handler.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
 
diff --git a/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.mm b/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.mm
index 0f59392..4d110a6 100644
--- a/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.mm
+++ b/ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.mm
@@ -5,9 +5,9 @@
 #import "ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui_ios.h"
 
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/passwords/password_manager_log_router_factory.h"
 #import "ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/internals_ui_handler.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
 
diff --git a/ios/chrome/browser/ui/webui/chrome_web_ui_ios_controller_factory.mm b/ios/chrome/browser/ui/webui/chrome_web_ui_ios_controller_factory.mm
index 6770e05..f971ad1 100644
--- a/ios/chrome/browser/ui/webui/chrome_web_ui_ios_controller_factory.mm
+++ b/ios/chrome/browser/ui/webui/chrome_web_ui_ios_controller_factory.mm
@@ -10,7 +10,6 @@
 #import "base/location.h"
 #import "base/no_destructor.h"
 #import "components/optimization_guide/optimization_guide_internals/webui/url_constants.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/ui/webui/about_ui.h"
 #import "ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/autofill_internals_ui_ios.h"
@@ -35,6 +34,7 @@
 #import "ios/chrome/browser/ui/webui/ukm_internals_ui.h"
 #import "ios/chrome/browser/ui/webui/user_actions_ui.h"
 #import "ios/chrome/browser/ui/webui/version_ui.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/sync_internals/sync_internals_ui.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "url/gurl.h"
diff --git a/ios/chrome/browser/ui/webui/crashes_ui.cc b/ios/chrome/browser/ui/webui/crashes_ui.cc
index 8335682b..5b0ff5f 100644
--- a/ios/chrome/browser/ui/webui/crashes_ui.cc
+++ b/ios/chrome/browser/ui/webui/crashes_ui.cc
@@ -21,9 +21,9 @@
 #include "components/strings/grit/components_strings.h"
 #include "components/version_info/version_info.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/crash_report/crash_upload_list.h"
 #include "ios/chrome/browser/metrics/ios_chrome_metrics_service_accessor.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/chrome/grit/ios_chromium_strings.h"
 #include "ios/web/public/webui/web_ui_ios.h"
 #include "ios/web/public/webui/web_ui_ios_data_source.h"
diff --git a/ios/chrome/browser/ui/webui/download_internals_ui.cc b/ios/chrome/browser/ui/webui/download_internals_ui.cc
index 6e7605d..11746f14 100644
--- a/ios/chrome/browser/ui/webui/download_internals_ui.cc
+++ b/ios/chrome/browser/ui/webui/download_internals_ui.cc
@@ -15,8 +15,8 @@
 #include "components/grit/download_internals_resources.h"
 #include "components/grit/download_internals_resources_map.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/download/background_service/background_download_service_factory.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/web/public/webui/web_ui_ios.h"
 #include "ios/web/public/webui/web_ui_ios_data_source.h"
 #include "ios/web/public/webui/web_ui_ios_message_handler.h"
diff --git a/ios/chrome/browser/ui/webui/flags_ui.mm b/ios/chrome/browser/ui/webui/flags_ui.mm
index 4dffb3ec..ad66542 100644
--- a/ios/chrome/browser/ui/webui/flags_ui.mm
+++ b/ios/chrome/browser/ui/webui/flags_ui.mm
@@ -25,8 +25,8 @@
 #import "components/version_info/version_info.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/flags/about_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
 #import "ios/web/public/webui/web_ui_ios_message_handler.h"
diff --git a/ios/chrome/browser/ui/webui/gcm/BUILD.gn b/ios/chrome/browser/ui/webui/gcm/BUILD.gn
index bca1a83..c245a9a1 100644
--- a/ios/chrome/browser/ui/webui/gcm/BUILD.gn
+++ b/ios/chrome/browser/ui/webui/gcm/BUILD.gn
@@ -14,6 +14,7 @@
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/gcm",
+    "//ios/chrome/browser/url:constants",
     "//ios/web/public/webui",
   ]
 }
diff --git a/ios/chrome/browser/ui/webui/gcm/gcm_internals_ui.cc b/ios/chrome/browser/ui/webui/gcm/gcm_internals_ui.cc
index 2c7161e..381413f 100644
--- a/ios/chrome/browser/ui/webui/gcm/gcm_internals_ui.cc
+++ b/ios/chrome/browser/ui/webui/gcm/gcm_internals_ui.cc
@@ -18,8 +18,8 @@
 #include "components/gcm_driver/gcm_profile_service.h"
 #include "components/grit/dev_ui_components_resources.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/web/public/webui/web_ui_ios.h"
 #include "ios/web/public/webui/web_ui_ios_data_source.h"
 #include "ios/web/public/webui/web_ui_ios_message_handler.h"
diff --git a/ios/chrome/browser/ui/webui/inspect/inspect_ui.mm b/ios/chrome/browser/ui/webui/inspect/inspect_ui.mm
index 0512af2..a30fa66 100644
--- a/ios/chrome/browser/ui/webui/inspect/inspect_ui.mm
+++ b/ios/chrome/browser/ui/webui/inspect/inspect_ui.mm
@@ -10,11 +10,11 @@
 #import "base/metrics/user_metrics_action.h"
 #import "base/strings/sys_string_conversions.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/main/browser_list.h"
 #import "ios/chrome/browser/main/browser_list_factory.h"
 #import "ios/chrome/browser/main/browser_list_observer.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/java_script_console/java_script_console_feature.h"
 #import "ios/chrome/browser/web/java_script_console/java_script_console_feature_delegate.h"
 #import "ios/chrome/browser/web/java_script_console/java_script_console_feature_factory.h"
diff --git a/ios/chrome/browser/ui/webui/inspect/inspect_ui_egtest.mm b/ios/chrome/browser/ui/webui/inspect/inspect_ui_egtest.mm
index 1a90e29..61ee27b 100644
--- a/ios/chrome/browser/ui/webui/inspect/inspect_ui_egtest.mm
+++ b/ios/chrome/browser/ui/webui/inspect/inspect_ui_egtest.mm
@@ -6,7 +6,7 @@
 #import <XCTest/XCTest.h>
 
 #import "base/strings/sys_string_conversions.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/test/earl_grey/chrome_actions.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
diff --git a/ios/chrome/browser/ui/webui/interstitials/BUILD.gn b/ios/chrome/browser/ui/webui/interstitials/BUILD.gn
index af6e6694..23c8b04 100644
--- a/ios/chrome/browser/ui/webui/interstitials/BUILD.gn
+++ b/ios/chrome/browser/ui/webui/interstitials/BUILD.gn
@@ -21,10 +21,10 @@
     "//components/security_interstitials/core",
     "//components/security_interstitials/core:unsafe_resource",
     "//ios/chrome/browser",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/safe_browsing",
     "//ios/chrome/browser/ssl",
+    "//ios/chrome/browser/url:constants",
     "//ios/components/security_interstitials",
     "//ios/components/security_interstitials/safe_browsing",
     "//ios/web/public/security",
@@ -55,7 +55,7 @@
     ":constants",
     "//base",
     "//base/test:test_support",
-    "//ios/chrome/browser:chrome_url_constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/components/webui:url_constants",
     "//ios/testing/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/webui/interstitials/interstitial_ui.mm b/ios/chrome/browser/ui/webui/interstitials/interstitial_ui.mm
index b07b937a..e423b46 100644
--- a/ios/chrome/browser/ui/webui/interstitials/interstitial_ui.mm
+++ b/ios/chrome/browser/ui/webui/interstitials/interstitial_ui.mm
@@ -12,9 +12,9 @@
 #import "base/time/time.h"
 #import "components/grit/dev_ui_components_resources.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/interstitials/interstitial_ui_constants.h"
 #import "ios/chrome/browser/ui/webui/interstitials/interstitial_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/security_interstitials/ios_security_interstitial_page.h"
 #import "ios/web/public/web_state.h"
 #import "ios/web/public/webui/url_data_source_ios.h"
diff --git a/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_egtest.mm b/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_egtest.mm
index 8a60a87..f92325c4 100644
--- a/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_egtest.mm
+++ b/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_egtest.mm
@@ -4,8 +4,8 @@
 
 #import <XCTest/XCTest.h>
 
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/interstitials/interstitial_ui_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
diff --git a/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_util.mm b/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_util.mm
index 615b1f3..7f5404f7 100644
--- a/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_util.mm
+++ b/ios/chrome/browser/ui/webui/interstitials/interstitial_ui_util.mm
@@ -16,12 +16,12 @@
 #import "crypto/rsa_private_key.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
 #import "ios/chrome/browser/ssl/ios_captive_portal_blocking_page.h"
 #import "ios/chrome/browser/ssl/ios_ssl_blocking_page.h"
 #import "ios/chrome/browser/ui/webui/interstitials/interstitial_ui_constants.h"
 #import "ios/chrome/browser/ui/webui/interstitials/interstitial_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/security_interstitials/ios_blocking_page_controller_client.h"
 #import "ios/components/security_interstitials/ios_blocking_page_metrics_helper.h"
 #import "ios/components/security_interstitials/safe_browsing/safe_browsing_service.h"
diff --git a/ios/chrome/browser/ui/webui/local_state/BUILD.gn b/ios/chrome/browser/ui/webui/local_state/BUILD.gn
index 5e5926b3..bc73a63 100644
--- a/ios/chrome/browser/ui/webui/local_state/BUILD.gn
+++ b/ios/chrome/browser/ui/webui/local_state/BUILD.gn
@@ -15,6 +15,7 @@
     "//components/resources",
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
+    "//ios/chrome/browser/url:constants",
     "//ios/web/public/webui",
   ]
 }
diff --git a/ios/chrome/browser/ui/webui/local_state/local_state_ui.mm b/ios/chrome/browser/ui/webui/local_state/local_state_ui.mm
index 64a5907..a32035d 100644
--- a/ios/chrome/browser/ui/webui/local_state/local_state_ui.mm
+++ b/ios/chrome/browser/ui/webui/local_state/local_state_ui.mm
@@ -13,7 +13,7 @@
 #import "components/prefs/pref_service.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
 #import "ios/web/public/webui/web_ui_ios_message_handler.h"
diff --git a/ios/chrome/browser/ui/webui/management/management_ui.mm b/ios/chrome/browser/ui/webui/management/management_ui.mm
index c2374e9..5919054 100644
--- a/ios/chrome/browser/ui/webui/management/management_ui.mm
+++ b/ios/chrome/browser/ui/webui/management/management_ui.mm
@@ -15,8 +15,8 @@
 #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/chrome_url_constants.h"
 #import "ios/chrome/browser/policy/browser_policy_connector_ios.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
diff --git a/ios/chrome/browser/ui/webui/net_export/BUILD.gn b/ios/chrome/browser/ui/webui/net_export/BUILD.gn
index 18e49a2..607631e 100644
--- a/ios/chrome/browser/ui/webui/net_export/BUILD.gn
+++ b/ios/chrome/browser/ui/webui/net_export/BUILD.gn
@@ -15,6 +15,7 @@
     "//ios/chrome/app/strings",
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/webui",
     "//ios/chrome/common:common",
     "//ios/web/public/webui",
diff --git a/ios/chrome/browser/ui/webui/net_export/net_export_ui.mm b/ios/chrome/browser/ui/webui/net_export/net_export_ui.mm
index c1c24989..1919e78 100644
--- a/ios/chrome/browser/ui/webui/net_export/net_export_ui.mm
+++ b/ios/chrome/browser/ui/webui/net_export/net_export_ui.mm
@@ -18,7 +18,7 @@
 #import "components/net_log/net_export_ui_constants.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/webui/net_export_tab_helper.h"
 #import "ios/chrome/browser/webui/show_mail_composer_context.h"
 #import "ios/chrome/common/channel_info.h"
diff --git a/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc b/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
index f3db0bc..349bd89 100644
--- a/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
+++ b/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
@@ -13,10 +13,10 @@
 #include "components/ntp_tiles/webui/ntp_tiles_internals_message_handler.h"
 #include "components/ntp_tiles/webui/ntp_tiles_internals_message_handler_client.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/favicon/favicon_service_factory.h"
 #include "ios/chrome/browser/ntp_tiles/ios_most_visited_sites_factory.h"
 #include "ios/chrome/browser/ntp_tiles/ios_popular_sites_factory.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/web/public/thread/web_thread.h"
 #include "ios/web/public/webui/web_ui_ios.h"
 #include "ios/web/public/webui/web_ui_ios_data_source.h"
diff --git a/ios/chrome/browser/ui/webui/omaha_ui.cc b/ios/chrome/browser/ui/webui/omaha_ui.cc
index 417955b..257e74c 100644
--- a/ios/chrome/browser/ui/webui/omaha_ui.cc
+++ b/ios/chrome/browser/ui/webui/omaha_ui.cc
@@ -10,8 +10,8 @@
 #include "base/memory/weak_ptr.h"
 #include "base/values.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/omaha/omaha_service.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/chrome/grit/ios_resources.h"
 #include "ios/web/public/webui/web_ui_ios.h"
 #include "ios/web/public/webui/web_ui_ios_data_source.h"
diff --git a/ios/chrome/browser/ui/webui/policy/BUILD.gn b/ios/chrome/browser/ui/webui/policy/BUILD.gn
index 11aa410..64b29c1 100644
--- a/ios/chrome/browser/ui/webui/policy/BUILD.gn
+++ b/ios/chrome/browser/ui/webui/policy/BUILD.gn
@@ -25,9 +25,9 @@
     "//ios/chrome/app/strings:ios_chromium_strings_grit",
     "//ios/chrome/app/strings:ios_strings_grit",
     "//ios/chrome/browser",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/policy",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common",
     "//ios/web/public/webui",
     "//ui/base",
diff --git a/ios/chrome/browser/ui/webui/policy/policy_ui.mm b/ios/chrome/browser/ui/webui/policy/policy_ui.mm
index d10fd9cc..66e5c64 100644
--- a/ios/chrome/browser/ui/webui/policy/policy_ui.mm
+++ b/ios/chrome/browser/ui/webui/policy/policy_ui.mm
@@ -10,8 +10,8 @@
 #import "components/grit/dev_ui_components_resources.h"
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/policy/policy_ui_handler.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
 #import "ios/web/public/webui/web_ui_ios_message_handler.h"
diff --git a/ios/chrome/browser/ui/webui/prefs_internals_ui.cc b/ios/chrome/browser/ui/webui/prefs_internals_ui.cc
index 5ee5710..beac164 100644
--- a/ios/chrome/browser/ui/webui/prefs_internals_ui.cc
+++ b/ios/chrome/browser/ui/webui/prefs_internals_ui.cc
@@ -11,7 +11,7 @@
 #include "base/values.h"
 #include "components/prefs/pref_service.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/web/public/thread/web_thread.h"
 #include "ios/web/public/webui/url_data_source_ios.h"
 
diff --git a/ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc b/ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc
index c10cf12..546f8fb0 100644
--- a/ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc
+++ b/ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc
@@ -12,9 +12,9 @@
 #include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
 #include "components/signin/public/identity_manager/identity_manager.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/signin/about_signin_internals_factory.h"
 #include "ios/chrome/browser/signin/identity_manager_factory.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 #include "ios/web/public/webui/web_ui_ios.h"
 #include "ios/web/public/webui/web_ui_ios_data_source.h"
 
diff --git a/ios/chrome/browser/ui/webui/translate_internals/BUILD.gn b/ios/chrome/browser/ui/webui/translate_internals/BUILD.gn
index 10bf370..bf0728a 100644
--- a/ios/chrome/browser/ui/webui/translate_internals/BUILD.gn
+++ b/ios/chrome/browser/ui/webui/translate_internals/BUILD.gn
@@ -19,6 +19,7 @@
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/translate",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/web/public/webui",
   ]
diff --git a/ios/chrome/browser/ui/webui/translate_internals/translate_internals_ui.mm b/ios/chrome/browser/ui/webui/translate_internals/translate_internals_ui.mm
index 2a60f07..4a7da32 100644
--- a/ios/chrome/browser/ui/webui/translate_internals/translate_internals_ui.mm
+++ b/ios/chrome/browser/ui/webui/translate_internals/translate_internals_ui.mm
@@ -9,8 +9,8 @@
 #import "components/translate/core/common/translate_util.h"
 #import "components/translate/translate_internals/translate_internals_handler.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/translate_internals/ios_translate_internals_handler.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_resources.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
diff --git a/ios/chrome/browser/ui/webui/ukm_internals_ui.mm b/ios/chrome/browser/ui/webui/ukm_internals_ui.mm
index cc2f35dc..bc68e45d 100644
--- a/ios/chrome/browser/ui/webui/ukm_internals_ui.mm
+++ b/ios/chrome/browser/ui/webui/ukm_internals_ui.mm
@@ -11,7 +11,7 @@
 #import "components/ukm/ukm_service.h"
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_resources.h"
 #import "ios/web/public/webui/url_data_source_ios.h"
 #import "ios/web/public/webui/web_ui_ios.h"
diff --git a/ios/chrome/browser/ui/webui/user_actions_ui.mm b/ios/chrome/browser/ui/webui/user_actions_ui.mm
index a107855..8bbad3ac 100644
--- a/ios/chrome/browser/ui/webui/user_actions_ui.mm
+++ b/ios/chrome/browser/ui/webui/user_actions_ui.mm
@@ -6,8 +6,8 @@
 
 #import "components/grit/dev_ui_components_resources.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/user_actions_handler.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/web/public/webui/web_ui_ios.h"
 #import "ios/web/public/webui/web_ui_ios_data_source.h"
 
diff --git a/ios/chrome/browser/ui/webui/version_ui.mm b/ios/chrome/browser/ui/webui/version_ui.mm
index b9dd717..cba5eff 100644
--- a/ios/chrome/browser/ui/webui/version_ui.mm
+++ b/ios/chrome/browser/ui/webui/version_ui.mm
@@ -19,8 +19,8 @@
 #import "components/version_info/version_info.h"
 #import "components/version_ui/version_ui_constants.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/version_handler.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/channel_info.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
 #import "ios/web/public/web_client.h"
diff --git a/ios/chrome/browser/ui/webui/web_ui_egtest.mm b/ios/chrome/browser/ui/webui/web_ui_egtest.mm
index f2462f7..227537f0 100644
--- a/ios/chrome/browser/ui/webui/web_ui_egtest.mm
+++ b/ios/chrome/browser/ui/webui/web_ui_egtest.mm
@@ -11,8 +11,8 @@
 #import "base/test/ios/wait_util.h"
 #import "components/strings/grit/components_strings.h"
 #import "components/version_info/version_info.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ui/webui/web_ui_test_utils.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
diff --git a/ios/chrome/browser/url/BUILD.gn b/ios/chrome/browser/url/BUILD.gn
new file mode 100644
index 0000000..341f736
--- /dev/null
+++ b/ios/chrome/browser/url/BUILD.gn
@@ -0,0 +1,35 @@
+# 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.
+
+source_set("url") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "url_util.h",
+    "url_util.mm",
+  ]
+
+  deps = [
+    ":constants",
+    "//base",
+    "//components/content_settings/core/browser",
+    "//ios/chrome/browser/content_settings",
+    "//ios/components/webui:url_constants",
+    "//ios/net",
+    "//url",
+  ]
+}
+
+source_set("constants") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "chrome_url_constants.cc",
+    "chrome_url_constants.h",
+  ]
+
+  deps = [
+    "//base",
+    "//components/optimization_guide/optimization_guide_internals/webui:url_constants",
+    "//ios/components/webui:url_constants",
+  ]
+}
diff --git a/ios/chrome/browser/chrome_url_constants.cc b/ios/chrome/browser/url/chrome_url_constants.cc
similarity index 98%
rename from ios/chrome/browser/chrome_url_constants.cc
rename to ios/chrome/browser/url/chrome_url_constants.cc
index 1cab8d1..a4303562 100644
--- a/ios/chrome/browser/chrome_url_constants.cc
+++ b/ios/chrome/browser/url/chrome_url_constants.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 "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/url/chrome_url_constants.h"
 
 #include <stddef.h>
 
diff --git a/ios/chrome/browser/chrome_url_constants.h b/ios/chrome/browser/url/chrome_url_constants.h
similarity index 96%
rename from ios/chrome/browser/chrome_url_constants.h
rename to ios/chrome/browser/url/chrome_url_constants.h
index 4b1d4a61..335bfcd 100644
--- a/ios/chrome/browser/chrome_url_constants.h
+++ b/ios/chrome/browser/url/chrome_url_constants.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 IOS_CHROME_BROWSER_CHROME_URL_CONSTANTS_H_
-#define IOS_CHROME_BROWSER_CHROME_URL_CONSTANTS_H_
+#ifndef IOS_CHROME_BROWSER_URL_CHROME_URL_CONSTANTS_H_
+#define IOS_CHROME_BROWSER_URL_CHROME_URL_CONSTANTS_H_
 
 #include <stddef.h>
 
@@ -139,4 +139,4 @@
 // "Learn more" URL for enterprise management information.
 extern const char kManagementLearnMoreURL[];
 
-#endif  // IOS_CHROME_BROWSER_CHROME_URL_CONSTANTS_H_
+#endif  // IOS_CHROME_BROWSER_URL_CHROME_URL_CONSTANTS_H_
diff --git a/ios/chrome/browser/chrome_url_util.h b/ios/chrome/browser/url/url_util.h
similarity index 90%
rename from ios/chrome/browser/chrome_url_util.h
rename to ios/chrome/browser/url/url_util.h
index 53095e6b3..77c5a00 100644
--- a/ios/chrome/browser/chrome_url_util.h
+++ b/ios/chrome/browser/url/url_util.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 IOS_CHROME_BROWSER_CHROME_URL_UTIL_H_
-#define IOS_CHROME_BROWSER_CHROME_URL_UTIL_H_
+#ifndef IOS_CHROME_BROWSER_URL_URL_UTIL_H_
+#define IOS_CHROME_BROWSER_URL_URL_UTIL_H_
 
 #import <Foundation/Foundation.h>
 
@@ -48,4 +48,4 @@
 
 @end
 
-#endif  // IOS_CHROME_BROWSER_CHROME_URL_UTIL_H_
+#endif  // IOS_CHROME_BROWSER_URL_URL_UTIL_H_
diff --git a/ios/chrome/browser/chrome_url_util.mm b/ios/chrome/browser/url/url_util.mm
similarity index 92%
rename from ios/chrome/browser/chrome_url_util.mm
rename to ios/chrome/browser/url/url_util.mm
index bd6c9f4..b637ca2e 100644
--- a/ios/chrome/browser/chrome_url_util.mm
+++ b/ios/chrome/browser/url/url_util.mm
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/chrome_url_util.h"
+#import "ios/chrome/browser/url/url_util.h"
 
 #import <UIKit/UIKit.h>
 
@@ -11,8 +11,8 @@
 #import "base/strings/string_util.h"
 #import "base/strings/sys_string_conversions.h"
 #import "components/content_settings/core/browser/host_content_settings_map.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/content_settings/host_content_settings_map_factory.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ios/net/url_scheme_util.h"
 #import "url/gurl.h"
@@ -88,8 +88,9 @@
     NSArray* urlTypes = [info objectForKey:@"CFBundleURLTypes"];
     for (NSDictionary* urlType in urlTypes) {
       DCHECK([urlType isKindOfClass:[NSDictionary class]]);
-      _schemes = [base::mac::ObjCCastStrict<NSArray>(
-          urlType[@"CFBundleURLSchemes"]) copy];
+      _schemes =
+          [base::mac::ObjCCastStrict<NSArray>(urlType[@"CFBundleURLSchemes"])
+              copy];
     }
   }
   return _schemes;
diff --git a/ios/chrome/browser/chrome_url_util_unittest.mm b/ios/chrome/browser/url/url_util_unittest.mm
similarity index 92%
rename from ios/chrome/browser/chrome_url_util_unittest.mm
rename to ios/chrome/browser/url/url_util_unittest.mm
index 8ff7e6d3..98685dc 100644
--- a/ios/chrome/browser/chrome_url_util_unittest.mm
+++ b/ios/chrome/browser/url/url_util_unittest.mm
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/chrome_url_util.h"
+#import "ios/chrome/browser/url/url_util.h"
 
 #import "base/strings/sys_string_conversions.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "net/base/mac/url_conversions.h"
 #import "testing/gtest_mac.h"
@@ -30,11 +30,8 @@
 }
 
 const char* kSchemeTestData[] = {
-    "http://foo.com",
-    "https://foo.com",
-    "data:text/html;charset=utf-8,Hello",
-    "about:blank",
-    "chrome://settings",
+    "http://foo.com", "https://foo.com",   "data:text/html;charset=utf-8,Hello",
+    "about:blank",    "chrome://settings",
 };
 
 // Tests UrlHasChromeScheme with NSURL* parameter.
diff --git a/ios/chrome/browser/url_loading/BUILD.gn b/ios/chrome/browser/url_loading/BUILD.gn
index 4e7b1f09..cf8a98fb 100644
--- a/ios/chrome/browser/url_loading/BUILD.gn
+++ b/ios/chrome/browser/url_loading/BUILD.gn
@@ -44,6 +44,7 @@
     "//ios/chrome/browser/ui/incognito_reauth:incognito_reauth_scene_agent",
     "//ios/chrome/browser/ui/main:scene_state_header",
     "//ios/chrome/browser/ui/ntp:util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:agents",
diff --git a/ios/chrome/browser/url_loading/url_loading_browser_agent.mm b/ios/chrome/browser/url_loading/url_loading_browser_agent.mm
index afc294b..0cbfad90 100644
--- a/ios/chrome/browser/url_loading/url_loading_browser_agent.mm
+++ b/ios/chrome/browser/url_loading/url_loading_browser_agent.mm
@@ -8,7 +8,6 @@
 #import "base/strings/string_number_conversions.h"
 #import "base/task/thread_pool.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/crash_report/crash_reporter_url_observer.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/prerender/prerender_service.h"
@@ -18,6 +17,7 @@
 #import "ios/chrome/browser/ui/main/scene_state_browser_agent.h"
 #import "ios/chrome/browser/ui/ntp/ntp_util.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/scene_url_loading_service.h"
 #import "ios/chrome/browser/url_loading/url_loading_notifier_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
diff --git a/ios/chrome/browser/url_loading/url_loading_util.mm b/ios/chrome/browser/url_loading/url_loading_util.mm
index 849801c..0e5cf12 100644
--- a/ios/chrome/browser/url_loading/url_loading_util.mm
+++ b/ios/chrome/browser/url_loading/url_loading_util.mm
@@ -8,11 +8,11 @@
 #import "base/strings/sys_string_conversions.h"
 #import "components/sessions/core/tab_restore_service_helper.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/prerender/prerender_service.h"
 #import "ios/chrome/browser/prerender/prerender_service_factory.h"
 #import "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_factory.h"
 #import "ios/chrome/browser/sessions/live_tab_context_browser_agent.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/load_timing_tab_helper.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/components/webui/web_ui_url_constants.h"
diff --git a/ios/chrome/browser/web/BUILD.gn b/ios/chrome/browser/web/BUILD.gn
index e7180dd0..3af5ff3 100644
--- a/ios/chrome/browser/web/BUILD.gn
+++ b/ios/chrome/browser/web/BUILD.gn
@@ -60,6 +60,7 @@
     "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/fullscreen",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/common/ui/util",
     "//ios/components/ui_util",
@@ -175,6 +176,7 @@
     "//ios/chrome/browser/prefs:browser_prefs",
     "//ios/chrome/browser/snapshots",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:feature_flags",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list:agents",
@@ -278,6 +280,8 @@
     "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/infobars/coordinators",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:feature_flags",
     "//ios/chrome/browser/web/font_size",
     "//ios/chrome/browser/web/image_fetch",
@@ -343,6 +347,7 @@
     "//ios/chrome/browser/reading_list",
     "//ios/chrome/browser/safe_browsing",
     "//ios/chrome/browser/ssl",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/test/fakes",
     "//ios/components/security_interstitials",
@@ -463,12 +468,12 @@
     "//components/url_formatter",
     "//components/version_info:version_info",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/metrics:eg_test_support+eg2",
     "//ios/chrome/browser/prefs:pref_names",
     "//ios/chrome/browser/ui/infobars/banners:public",
     "//ios/chrome/browser/ui/popup_menu:constants",
     "//ios/chrome/browser/ui/start_surface:feature_flags",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:feature_flags",
     "//ios/chrome/test:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/web/chrome_web_client.mm b/ios/chrome/browser/web/chrome_web_client.mm
index cd178af..3c72813 100644
--- a/ios/chrome/browser/web/chrome_web_client.mm
+++ b/ios/chrome/browser/web/chrome_web_client.mm
@@ -26,8 +26,6 @@
 #import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_about_rewriter.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
-#import "ios/chrome/browser/chrome_url_util.h"
 #import "ios/chrome/browser/flags/chrome_switches.h"
 #import "ios/chrome/browser/follow/follow_java_script_feature.h"
 #import "ios/chrome/browser/https_upgrades/https_upgrade_service_factory.h"
@@ -45,6 +43,8 @@
 #import "ios/chrome/browser/ssl/ios_ssl_error_handler.h"
 #import "ios/chrome/browser/ui/elements/windowed_container_view.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
+#import "ios/chrome/browser/url/url_util.h"
 #import "ios/chrome/browser/web/chrome_main_parts.h"
 #import "ios/chrome/browser/web/error_page_controller_bridge.h"
 #import "ios/chrome/browser/web/error_page_util.h"
diff --git a/ios/chrome/browser/web/chrome_web_client_unittest.mm b/ios/chrome/browser/web/chrome_web_client_unittest.mm
index f87d235..a1f8ecd 100644
--- a/ios/chrome/browser/web/chrome_web_client_unittest.mm
+++ b/ios/chrome/browser/web/chrome_web_client_unittest.mm
@@ -21,11 +21,11 @@
 #import "components/security_interstitials/core/unsafe_resource.h"
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/content_settings/host_content_settings_map_factory.h"
 #import "ios/chrome/browser/reading_list/offline_url_utils.h"
 #import "ios/chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
 #import "ios/chrome/browser/ssl/captive_portal_tab_helper.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/error_page_controller_bridge.h"
 #import "ios/chrome/browser/web/error_page_util.h"
 #import "ios/chrome/browser/web/features.h"
diff --git a/ios/chrome/browser/web/sad_tab_tab_helper.mm b/ios/chrome/browser/web/sad_tab_tab_helper.mm
index 73330fb..7f4009f 100644
--- a/ios/chrome/browser/web/sad_tab_tab_helper.mm
+++ b/ios/chrome/browser/web/sad_tab_tab_helper.mm
@@ -14,10 +14,10 @@
 #import "base/metrics/histogram_macros.h"
 #import "base/strings/sys_string_conversions.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
 #import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h"
 #import "ios/chrome/browser/ui/fullscreen/scoped_fullscreen_disabler.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/features.h"
 #import "ios/chrome/browser/web/page_placeholder_tab_helper.h"
 #import "ios/chrome/browser/web/sad_tab_tab_helper_delegate.h"
diff --git a/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm b/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm
index b97d1d6..f95b223 100644
--- a/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm
+++ b/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm
@@ -8,10 +8,10 @@
 
 #import "base/test/task_environment.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper.h"
 #import "ios/chrome/browser/ntp/new_tab_page_tab_helper_delegate.h"
 #import "ios/chrome/browser/ui/util/named_guide.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/features.h"
 #import "ios/chrome/browser/web/page_placeholder_tab_helper.h"
 #import "ios/chrome/browser/web/sad_tab_tab_helper_delegate.h"
diff --git a/ios/chrome/browser/web/session_state/BUILD.gn b/ios/chrome/browser/web/session_state/BUILD.gn
index ed181b50..25544aa 100644
--- a/ios/chrome/browser/web/session_state/BUILD.gn
+++ b/ios/chrome/browser/web/session_state/BUILD.gn
@@ -21,9 +21,9 @@
     "//components/keyed_service/core",
     "//components/keyed_service/ios",
     "//components/strings:components_strings_grit",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web:feature_flags",
     "//ios/chrome/browser/web_state_list",
     "//ios/public/provider/chrome/browser",
@@ -49,8 +49,8 @@
   deps = [
     ":session_state",
     "//base/test:test_support",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state:test_support",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web:feature_flags",
     "//ios/chrome/browser/web:web_internal",
diff --git a/ios/chrome/browser/web/session_state/web_session_state_tab_helper.mm b/ios/chrome/browser/web/session_state/web_session_state_tab_helper.mm
index 54a7407..fc73a4e7 100644
--- a/ios/chrome/browser/web/session_state/web_session_state_tab_helper.mm
+++ b/ios/chrome/browser/web/session_state/web_session_state_tab_helper.mm
@@ -18,7 +18,7 @@
 #import "build/branding_buildflags.h"
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/features.h"
 #import "ios/chrome/browser/web/session_state/web_session_state_cache.h"
 #import "ios/chrome/browser/web/session_state/web_session_state_cache_factory.h"
diff --git a/ios/chrome/browser/web/session_state/web_session_state_tab_helper_unittest.mm b/ios/chrome/browser/web/session_state/web_session_state_tab_helper_unittest.mm
index d9b0e654..391e117 100644
--- a/ios/chrome/browser/web/session_state/web_session_state_tab_helper_unittest.mm
+++ b/ios/chrome/browser/web/session_state/web_session_state_tab_helper_unittest.mm
@@ -15,7 +15,7 @@
 #import "base/test/ios/wait_util.h"
 #import "base/test/scoped_feature_list.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/chrome_web_client.h"
 #import "ios/chrome/browser/web/features.h"
 #import "ios/chrome/browser/web/session_state/web_session_state_cache.h"
diff --git a/ios/chrome/browser/web/visible_url_egtest.mm b/ios/chrome/browser/web/visible_url_egtest.mm
index 545a8f01..4e86371 100644
--- a/ios/chrome/browser/web/visible_url_egtest.mm
+++ b/ios/chrome/browser/web/visible_url_egtest.mm
@@ -12,7 +12,7 @@
 #import "base/strings/sys_string_conversions.h"
 #import "base/strings/utf_string_conversions.h"
 #import "components/version_info/version_info.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/features.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
diff --git a/ios/chrome/browser/web_state_list/BUILD.gn b/ios/chrome/browser/web_state_list/BUILD.gn
index e5db668..bc0064ee 100644
--- a/ios/chrome/browser/web_state_list/BUILD.gn
+++ b/ios/chrome/browser/web_state_list/BUILD.gn
@@ -75,7 +75,6 @@
     "//components/profile_metrics",
     "//components/url_param_filter/core",
     "//components/url_param_filter/ios",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/browser_state_metrics",
     "//ios/chrome/browser/crash_report",
@@ -85,6 +84,7 @@
     "//ios/chrome/browser/sessions:restoration_observer",
     "//ios/chrome/browser/snapshots",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web:tab_helper_delegates",
     "//ios/components/security_interstitials:security_interstitials",
diff --git a/ios/chrome/browser/web_state_list/web_state_list_metrics_browser_agent.mm b/ios/chrome/browser/web_state_list/web_state_list_metrics_browser_agent.mm
index e3b5fe3..012410a5 100644
--- a/ios/chrome/browser/web_state_list/web_state_list_metrics_browser_agent.mm
+++ b/ios/chrome/browser/web_state_list/web_state_list_metrics_browser_agent.mm
@@ -10,10 +10,10 @@
 #import "components/navigation_metrics/navigation_metrics.h"
 #import "components/profile_metrics/browser_profile_type.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/crash_report/crash_loop_detection_util.h"
 #import "ios/chrome/browser/sessions/session_restoration_browser_agent.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web_state_list/all_web_state_observation_forwarder.h"
 #import "ios/chrome/browser/web_state_list/session_metrics.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
diff --git a/ios/chrome/browser/window_activities/BUILD.gn b/ios/chrome/browser/window_activities/BUILD.gn
index cdf29d0..4d3d07b2 100644
--- a/ios/chrome/browser/window_activities/BUILD.gn
+++ b/ios/chrome/browser/window_activities/BUILD.gn
@@ -14,7 +14,7 @@
   deps = [
     ":ios_move_tab_activity_type_buildflags",
     "//base",
-    "//ios/chrome/browser:chrome_url_constants",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading:url_loading_params_header",
     "//ios/web/public/navigation",
     "//net",
diff --git a/ios/chrome/browser/window_activities/window_activity_helpers.mm b/ios/chrome/browser/window_activities/window_activity_helpers.mm
index ca1c1960..8722622 100644
--- a/ios/chrome/browser/window_activities/window_activity_helpers.mm
+++ b/ios/chrome/browser/window_activities/window_activity_helpers.mm
@@ -10,7 +10,7 @@
 
 #import "base/mac/foundation_util.h"
 #import "base/strings/sys_string_conversions.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
 #import "ios/chrome/browser/window_activities/move_tab_activity_type_buildflags.h"
 #import "ios/web/public/navigation/navigation_manager.h"
diff --git a/ios/chrome/test/BUILD.gn b/ios/chrome/test/BUILD.gn
index bd370332..bcbeab8 100644
--- a/ios/chrome/test/BUILD.gn
+++ b/ios/chrome/test/BUILD.gn
@@ -125,9 +125,9 @@
     "//base",
     "//base/test:test_support",
     "//components/content_settings/core/common",
-    "//ios/chrome/browser:chrome_url_constants",
     "//ios/chrome/browser/browser_state:browser_state_impl",
     "//ios/chrome/browser/paths",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web/web_performance_metrics:unit_tests",
     "//ios/chrome/test:test_support",
     "//ios/components/webui:url_constants",
diff --git a/ios/chrome/test/app/BUILD.gn b/ios/chrome/test/app/BUILD.gn
index 90c2b492..c6e4281d 100644
--- a/ios/chrome/test/app/BUILD.gn
+++ b/ios/chrome/test/app/BUILD.gn
@@ -88,6 +88,7 @@
     "//ios/chrome/browser/ui/tab_switcher/tab_grid",
     "//ios/chrome/browser/ui/tabs",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/browser/web_state_list/web_usage_enabler",
diff --git a/ios/chrome/test/app/tab_test_util.mm b/ios/chrome/test/app/tab_test_util.mm
index c546540..b497143a 100644
--- a/ios/chrome/test/app/tab_test_util.mm
+++ b/ios/chrome/test/app/tab_test_util.mm
@@ -8,7 +8,6 @@
 
 #import "base/mac/foundation_util.h"
 #import "ios/chrome/app/main_controller_private.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.h"
@@ -20,6 +19,7 @@
 #import "ios/chrome/browser/ui/main/scene_controller.h"
 #import "ios/chrome/browser/ui/main/scene_controller_testing.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_usage_enabler/web_usage_enabler_browser_agent.h"
diff --git a/ios/chrome/test/app/window_test_util.mm b/ios/chrome/test/app/window_test_util.mm
index 4e11fef..7565e307 100644
--- a/ios/chrome/test/app/window_test_util.mm
+++ b/ios/chrome/test/app/window_test_util.mm
@@ -7,7 +7,6 @@
 #import <Foundation/Foundation.h>
 
 #import "ios/chrome/app/main_controller.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/ui/commands/browser_commands.h"
 #import "ios/chrome/browser/ui/commands/open_new_tab_command.h"
@@ -16,6 +15,7 @@
 #import "ios/chrome/browser/ui/main/scene_controller_testing.h"
 #import "ios/chrome/browser/ui/main/scene_state.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/test/app/chrome_test_util.h"
diff --git a/ios/chrome/test/data/policy/policy_test_cases.json b/ios/chrome/test/data/policy/policy_test_cases.json
index c03799d..b7f08bc 100644
--- a/ios/chrome/test/data/policy/policy_test_cases.json
+++ b/ios/chrome/test/data/policy/policy_test_cases.json
@@ -865,5 +865,20 @@
   },
   "EnableExperimentalPolicies": {
     "reason_for_missing_test": "This policy has no pref as it is only directly read by the policy system."
+  },
+  "ShoppingListEnabled": {
+    "os": [
+      "ios"
+    ],
+    "policy_pref_mapping_tests": [
+      {
+        "policies": {
+          "ShoppingListEnabled": false
+        },
+        "prefs": {
+          "shopping_list_enabled": {}
+        }
+      }
+    ]
   }
 }
diff --git a/ios/chrome/test/ios_chrome_unit_test_suite.mm b/ios/chrome/test/ios_chrome_unit_test_suite.mm
index 3930a0f9..aa0d4d5 100644
--- a/ios/chrome/test/ios_chrome_unit_test_suite.mm
+++ b/ios/chrome/test/ios_chrome_unit_test_suite.mm
@@ -9,8 +9,8 @@
 #import "base/test/test_simple_task_runner.h"
 #import "components/content_settings/core/common/content_settings_pattern.h"
 #import "ios/chrome/browser/browser_state/browser_state_keyed_service_factories.h"
-#import "ios/chrome/browser/chrome_url_constants.h"
 #import "ios/chrome/browser/paths/paths.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/test/testing_application_context.h"
 #import "ios/components/webui/web_ui_url_constants.h"
 #import "ios/public/provider/chrome/browser/app_utils/app_utils_api.h"
diff --git a/ios/public/provider/chrome/browser/lens/lens_configuration.h b/ios/public/provider/chrome/browser/lens/lens_configuration.h
index bed45c10..d55f23c 100644
--- a/ios/public/provider/chrome/browser/lens/lens_configuration.h
+++ b/ios/public/provider/chrome/browser/lens/lens_configuration.h
@@ -7,15 +7,15 @@
 
 #import <Foundation/Foundation.h>
 
-@class ChromeIdentity;
-@protocol SingleSignOnService;
 enum class LensEntrypoint;
+@protocol SingleSignOnService;
+@protocol SystemIdentity;
 
 // Configuration object used by the LensProvider.
 @interface LensConfiguration : NSObject
 
 // The current identity associated with the browser.
-@property(nonatomic, strong) ChromeIdentity* identity;
+@property(nonatomic, strong) id<SystemIdentity> identity;
 
 // Whether or not the browser is currently in incognito mode.
 @property(nonatomic, assign) BOOL isIncognito;
diff --git a/media/audio/audio_debug_file_writer.cc b/media/audio/audio_debug_file_writer.cc
index 8be4dab..6171302 100644
--- a/media/audio/audio_debug_file_writer.cc
+++ b/media/audio/audio_debug_file_writer.cc
@@ -7,13 +7,16 @@
 #include <stdint.h>
 #include <array>
 #include <limits>
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
+#include "base/sequence_checker.h"
 #include "base/sys_byteorder.h"
+#include "base/task/sequenced_task_runner.h"
 #include "media/base/audio_bus.h"
 #include "media/base/audio_sample_types.h"
 
@@ -136,82 +139,37 @@
 
 }  // namespace
 
-// Manages the debug recording file and writes to it. Can be created on any
-// thread. All the operations must be executed on a thread that has IO
-// permissions.
-class AudioDebugFileWriter::AudioFileWriter {
- public:
-  static AudioFileWriterUniquePtr Create(
-      base::File file,
-      const AudioParameters& params,
-      scoped_refptr<base::SequencedTaskRunner> task_runner);
-
-  ~AudioFileWriter();
-
-  // Write data from |data| to file.
-  void Write(const AudioBus* data);
-
- private:
-  explicit AudioFileWriter(const AudioParameters& params);
-
-  // Write wave header to file. Called on the |task_runner_| twice: on
-  // construction
-  // of AudioFileWriter size of the wave data is unknown, so the header is
-  // written with zero sizes; then on destruction it is re-written with the
-  // actual size info accumulated throughout the object lifetime.
-  void WriteHeader();
-
-  void StartRecording(base::File file);
-
-  // The file to write to.
-  base::File file_;
-
-  // Number of written samples.
-  uint64_t samples_;
-
-  // Audio parameters required to build wave header. Number of channels and
-  // sample rate are used.
-  const AudioParameters params_;
-
-  // Intermediate buffer to be written to file. Interleaved 16 bit audio data.
-  std::unique_ptr<int16_t[]> interleaved_data_;
-  int interleaved_data_size_;
-
-  SEQUENCE_CHECKER(sequence_checker_);
-};
-
-// static
-AudioDebugFileWriter::AudioFileWriterUniquePtr
-AudioDebugFileWriter::AudioFileWriter::Create(
-    base::File file,
-    const AudioParameters& params,
-    scoped_refptr<base::SequencedTaskRunner> task_runner) {
-  AudioFileWriterUniquePtr file_writer(new AudioFileWriter(params),
-                                       base::OnTaskRunnerDeleter(task_runner));
-
-  // base::Unretained is safe, because destructor is called on
-  // |task_runner|.
-  task_runner->PostTask(
-      FROM_HERE,
-      base::BindOnce(&AudioFileWriter::StartRecording,
-                     base::Unretained(file_writer.get()), std::move(file)));
-  return file_writer;
-}
-
-AudioDebugFileWriter::AudioFileWriter::AudioFileWriter(
-    const AudioParameters& params)
-    : samples_(0), params_(params), interleaved_data_size_(0) {
-  DETACH_FROM_SEQUENCE(sequence_checker_);
-}
-
-AudioDebugFileWriter::AudioFileWriter::~AudioFileWriter() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+AudioDebugFileWriter::~AudioDebugFileWriter() {
+  DCHECK(task_runner_->RunsTasksInCurrentSequence());
   if (file_.IsValid())
     WriteHeader();
 }
 
-void AudioDebugFileWriter::AudioFileWriter::Write(const AudioBus* data) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+AudioDebugFileWriter::AudioDebugFileWriter(const AudioParameters& params,
+                                           base::File file)
+    : params_(params), file_(std::move(file)) {
+  weak_this_ = weak_factory_.GetWeakPtr();
+}
+
+void AudioDebugFileWriter::Write(std::unique_ptr<AudioBus> data) {
+  task_runner_->PostTask(
+      FROM_HERE, base::BindOnce(&AudioDebugFileWriter::DoWrite, weak_this_,
+                                std::move(data)));
+}
+
+AudioDebugFileWriter::Ptr AudioDebugFileWriter::Create(
+    const AudioParameters& params,
+    base::File file) {
+  AudioDebugFileWriter* writer =
+      new AudioDebugFileWriter(params, std::move(file));
+  writer->task_runner_->PostTask(
+      FROM_HERE,
+      base::BindOnce(&AudioDebugFileWriter::WriteHeader, writer->weak_this_));
+  return Ptr(writer, base::OnTaskRunnerDeleter(writer->task_runner_));
+}
+
+void AudioDebugFileWriter::DoWrite(std::unique_ptr<AudioBus> data) {
+  DCHECK(task_runner_->RunsTasksInCurrentSequence());
   DCHECK_EQ(params_.channels(), data->channels());
   if (!file_.IsValid())
     return;
@@ -237,8 +195,8 @@
                           data_size * sizeof(interleaved_data_[0]));
 }
 
-void AudioDebugFileWriter::AudioFileWriter::WriteHeader() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+void AudioDebugFileWriter::WriteHeader() {
+  DCHECK(task_runner_->RunsTasksInCurrentSequence());
   if (!file_.IsValid())
     return;
   WavHeaderBuffer buf;
@@ -250,59 +208,4 @@
   file_.Seek(base::File::FROM_BEGIN, kWavHeaderSize);
 }
 
-void AudioDebugFileWriter::AudioFileWriter::StartRecording(base::File file) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DCHECK(!file_.IsValid());
-
-  file_ = std::move(file);
-  WriteHeader();
-}
-
-AudioDebugFileWriter::AudioDebugFileWriter(const AudioParameters& params)
-    : params_(params),
-      file_writer_(nullptr, base::OnTaskRunnerDeleter(nullptr)) {
-  DETACH_FROM_SEQUENCE(client_sequence_checker_);
-}
-
-AudioDebugFileWriter::~AudioDebugFileWriter() {
-  // |file_writer_| will be deleted on |task_runner_|.
-}
-
-void AudioDebugFileWriter::Start(base::File file) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(client_sequence_checker_);
-  DCHECK(!file_writer_);
-  file_writer_ =
-      AudioFileWriter::Create(std::move(file), params_, file_task_runner_);
-}
-
-void AudioDebugFileWriter::Stop() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(client_sequence_checker_);
-  // |file_writer_| is deleted on FILE thread.
-  file_writer_.reset();
-  DETACH_FROM_SEQUENCE(client_sequence_checker_);
-}
-
-void AudioDebugFileWriter::Write(std::unique_ptr<AudioBus> data) {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(client_sequence_checker_);
-  if (!file_writer_)
-    return;
-
-  // base::Unretained for |file_writer_| is safe, see the destructor.
-  file_task_runner_->PostTask(
-      FROM_HERE,
-      // Callback takes ownership of |data|:
-      base::BindOnce(&AudioFileWriter::Write,
-                     base::Unretained(file_writer_.get()),
-                     base::Owned(data.release())));
-}
-
-bool AudioDebugFileWriter::WillWrite() {
-  // Note that if this is called from any place other than
-  // |client_sequence_checker_| then there is a data race here, but it's fine,
-  // because Write() will check for |file_writer_|. So, we are not very precise
-  // here, but it's fine: we can afford missing some data or scheduling some
-  // no-op writes.
-  return !!file_writer_;
-}
-
 }  // namespace media
diff --git a/media/audio/audio_debug_file_writer.h b/media/audio/audio_debug_file_writer.h
index 67cdda8..4b939d1 100644
--- a/media/audio/audio_debug_file_writer.h
+++ b/media/audio/audio_debug_file_writer.h
@@ -11,6 +11,7 @@
 
 #include "base/files/file.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
 #include "base/sequence_checker.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/task/thread_pool.h"
@@ -21,56 +22,61 @@
 
 class AudioBus;
 
-// Writes audio data to a 16 bit PCM WAVE file used for debugging purposes. All
-// operations are non-blocking.
-// Functions are virtual for the purpose of test mocking.
+// Writes audio data to a 16 bit PCM WAVE file used for debugging purposes.
+// Functions are virtual for the purpose of test mocking. This class can be
+// created and used anywhere, but must be destroyed using the
+// OnTaskRunnerDeleter provided by Create(). It starts writing on Create(), and
+// stops writing on destruction.
 class MEDIA_EXPORT AudioDebugFileWriter {
  public:
-  // Number of channels and sample rate are used from |params|, the other
-  // parameters are ignored. The number of channels in the data passed to
-  // Write() must match |params|.
-  explicit AudioDebugFileWriter(const AudioParameters& params);
-
   AudioDebugFileWriter(const AudioDebugFileWriter&) = delete;
   AudioDebugFileWriter& operator=(const AudioDebugFileWriter&) = delete;
 
   virtual ~AudioDebugFileWriter();
 
-  // Must be called before calling Write() for the first time after creation or
-  // Stop() call. Can be called on any sequence; Write() and Stop() must be
-  // called on the same sequence as Start().
-  virtual void Start(base::File file);
-
-  // Must be called to finish recording. Each call to Start() requires a call to
-  // Stop(). Will be automatically called on destruction.
-  virtual void Stop();
-
   // Write |data| to file.
   virtual void Write(std::unique_ptr<AudioBus> data);
 
-  // Returns true if Write() call scheduled at this point will most likely write
-  // data to the file, and false if it most likely will be a no-op. The result
-  // may be ambigulous if Start() or Stop() is executed at the moment. Can be
-  // called from any sequence.
-  virtual bool WillWrite();
+  using Ptr = std::unique_ptr<AudioDebugFileWriter, base::OnTaskRunnerDeleter>;
+
+  // Number of channels and sample rate are used from |params|, the other
+  // parameters are ignored. The number of channels in the data passed to
+  // Write() must match |params|. Write() must be called on the sequence that
+  // task_runner belongs to.
+  static Ptr Create(const AudioParameters& params, base::File file);
 
  protected:
+  // Protected for testing.
+  AudioDebugFileWriter(const AudioParameters& params, base::File file);
+
   const AudioParameters params_;
 
- private:
-  class AudioFileWriter;
-
-  using AudioFileWriterUniquePtr =
-      std::unique_ptr<AudioFileWriter, base::OnTaskRunnerDeleter>;
-
-  // The task runner to do file output operations on.
-  const scoped_refptr<base::SequencedTaskRunner> file_task_runner_ =
+  const scoped_refptr<base::SequencedTaskRunner> task_runner_ =
       base::ThreadPool::CreateSequencedTaskRunner(
           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 
-  AudioFileWriterUniquePtr file_writer_;
-  SEQUENCE_CHECKER(client_sequence_checker_);
+ private:
+  // Write wave header to file. Called twice: on Create() the size of the wave
+  // data is unknown, so the header is written with zero sizes; then on
+  // destruction it is re-written with the actual size info accumulated
+  // throughout the object lifetime.
+  void WriteHeader();
+
+  void DoWrite(std::unique_ptr<AudioBus> data);
+
+  // The file to write to.
+  base::File file_;
+
+  // Number of written samples.
+  uint64_t samples_ = 0;
+
+  // Intermediate buffer to be written to file. Interleaved 16 bit audio data.
+  std::unique_ptr<int16_t[]> interleaved_data_;
+  int interleaved_data_size_ = 0;
+
+  base::WeakPtr<AudioDebugFileWriter> weak_this_;
+  base::WeakPtrFactory<AudioDebugFileWriter> weak_factory_{this};
 };
 
 }  // namespace media
diff --git a/media/audio/audio_debug_file_writer_unittest.cc b/media/audio/audio_debug_file_writer_unittest.cc
index 7d74c43..1bc03fb 100644
--- a/media/audio/audio_debug_file_writer_unittest.cc
+++ b/media/audio/audio_debug_file_writer_unittest.cc
@@ -56,6 +56,7 @@
       base::test::TaskEnvironment::ThreadPoolExecutionMode execution_mode)
       : task_environment_(base::test::TaskEnvironment::MainThreadType::DEFAULT,
                           execution_mode),
+        debug_writer_(nullptr, base::OnTaskRunnerDeleter(nullptr)),
         params_(AudioParameters::Format::AUDIO_PCM_LINEAR,
                 std::get<0>(GetParam()),
                 std::get<1>(GetParam()),
@@ -184,36 +185,12 @@
     }
   }
 
-  void RecordAndVerifyOnce() {
-    base::FilePath file_path;
-    ASSERT_TRUE(base::CreateTemporaryFile(&file_path));
-    base::File file = OpenFile(file_path);
-    ASSERT_TRUE(file.IsValid());
-
-    debug_writer_->Start(std::move(file));
-
-    DoDebugRecording();
-
-    debug_writer_->Stop();
-
-    task_environment_.RunUntilIdle();
-
-    VerifyRecording(file_path);
-
-    if (::testing::Test::HasFailure()) {
-      LOG(ERROR) << "Test failed; keeping recording(s) at ["
-                 << file_path.value().c_str() << "].";
-    } else {
-      ASSERT_TRUE(base::DeleteFile(file_path));
-    }
-  }
-
  protected:
   // The test task environment.
   base::test::TaskEnvironment task_environment_;
 
   // Writer under test.
-  std::unique_ptr<AudioDebugFileWriter> debug_writer_;
+  AudioDebugFileWriter::Ptr debug_writer_;
 
   // AudioBus parameters.
   AudioParameters params_;
@@ -238,25 +215,40 @@
 };
 
 TEST_P(AudioDebugFileWriterTest, WaveRecordingTest) {
-  debug_writer_ = std::make_unique<AudioDebugFileWriter>(params_);
-  RecordAndVerifyOnce();
-}
-
-TEST_P(AudioDebugFileWriterSingleThreadTest,
-       DeletedBeforeRecordingFinishedOnFileThread) {
-  debug_writer_ = std::make_unique<AudioDebugFileWriter>(params_);
-
   base::FilePath file_path;
   ASSERT_TRUE(base::CreateTemporaryFile(&file_path));
   base::File file = OpenFile(file_path);
   ASSERT_TRUE(file.IsValid());
 
-  debug_writer_->Start(std::move(file));
+  debug_writer_ = AudioDebugFileWriter::Create(params_, std::move(file));
 
   DoDebugRecording();
 
   debug_writer_.reset();
+  task_environment_.RunUntilIdle();
 
+  VerifyRecording(file_path);
+
+  if (::testing::Test::HasFailure()) {
+    LOG(ERROR) << "Test failed; keeping recording(s) at ["
+               << file_path.value().c_str() << "].";
+  } else {
+    ASSERT_TRUE(base::DeleteFile(file_path));
+  }
+}
+
+TEST_P(AudioDebugFileWriterSingleThreadTest,
+       DeletedBeforeRecordingFinishedOnFileThread) {
+  base::FilePath file_path;
+  ASSERT_TRUE(base::CreateTemporaryFile(&file_path));
+  base::File file = OpenFile(file_path);
+  ASSERT_TRUE(file.IsValid());
+
+  debug_writer_ = AudioDebugFileWriter::Create(params_, std::move(file));
+
+  DoDebugRecording();
+
+  debug_writer_.reset();
   task_environment_.RunUntilIdle();
 
   VerifyRecording(file_path);
@@ -270,31 +262,53 @@
 }
 
 TEST_P(AudioDebugFileWriterBehavioralTest, StartWithInvalidFile) {
-  debug_writer_ = std::make_unique<AudioDebugFileWriter>(params_);
   base::File file;  // Invalid file, recording should not crash
-  debug_writer_->Start(std::move(file));
+  debug_writer_ = AudioDebugFileWriter::Create(params_, std::move(file));
+
   DoDebugRecording();
+  task_environment_.RunUntilIdle();
 }
 
 TEST_P(AudioDebugFileWriterBehavioralTest, StartStopStartStop) {
-  debug_writer_ = std::make_unique<AudioDebugFileWriter>(params_);
-  RecordAndVerifyOnce();
-  RecordAndVerifyOnce();
-}
+  base::FilePath file_path1;
+  ASSERT_TRUE(base::CreateTemporaryFile(&file_path1));
+  base::File file1 = OpenFile(file_path1);
+  ASSERT_TRUE(file1.IsValid());
 
-TEST_P(AudioDebugFileWriterBehavioralTest, DestroyNotStarted) {
-  debug_writer_ = std::make_unique<AudioDebugFileWriter>(params_);
+  base::FilePath file_path2;
+  ASSERT_TRUE(base::CreateTemporaryFile(&file_path2));
+  base::File file2 = OpenFile(file_path2);
+  ASSERT_TRUE(file2.IsValid());
+
+  debug_writer_ = AudioDebugFileWriter::Create(params_, std::move(file1));
+  DoDebugRecording();
+  debug_writer_ = AudioDebugFileWriter::Create(params_, std::move(file2));
+  DoDebugRecording();
   debug_writer_.reset();
+  task_environment_.RunUntilIdle();
+
+  VerifyRecording(file_path1);
+  VerifyRecording(file_path2);
+
+  if (::testing::Test::HasFailure()) {
+    LOG(ERROR) << "Test failed; keeping recording(s) at ["
+               << file_path1.value().c_str() << ", "
+               << file_path2.value().c_str() << "].";
+  } else {
+    ASSERT_TRUE(base::DeleteFile(file_path1));
+    ASSERT_TRUE(base::DeleteFile(file_path2));
+  }
 }
 
 TEST_P(AudioDebugFileWriterBehavioralTest, DestroyStarted) {
-  debug_writer_ = std::make_unique<AudioDebugFileWriter>(params_);
   base::FilePath file_path;
   ASSERT_TRUE(base::CreateTemporaryFile(&file_path));
   base::File file = OpenFile(file_path);
   ASSERT_TRUE(file.IsValid());
-  debug_writer_->Start(std::move(file));
+  debug_writer_ = AudioDebugFileWriter::Create(params_, std::move(file));
+
   debug_writer_.reset();
+  task_environment_.RunUntilIdle();
 }
 
 INSTANTIATE_TEST_SUITE_P(
diff --git a/media/audio/audio_debug_recording_helper.cc b/media/audio/audio_debug_recording_helper.cc
index ed8ac01a..cda9670 100644
--- a/media/audio/audio_debug_recording_helper.cc
+++ b/media/audio/audio_debug_recording_helper.cc
@@ -11,7 +11,9 @@
 #include "base/files/file.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
-#include "base/task/single_thread_task_runner.h"
+#include "base/sequence_checker.h"
+#include "base/synchronization/lock.h"
+#include "base/task/bind_post_task.h"
 #include "media/audio/audio_debug_file_writer.h"
 #include "media/base/audio_bus.h"
 
@@ -19,14 +21,15 @@
 
 AudioDebugRecordingHelper::AudioDebugRecordingHelper(
     const AudioParameters& params,
-    scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     base::OnceClosure on_destruction_closure)
     : params_(params),
-      recording_enabled_(0),
-      task_runner_(std::move(task_runner)),
-      on_destruction_closure_(std::move(on_destruction_closure)) {}
+      file_writer_(nullptr, base::OnTaskRunnerDeleter(nullptr)),
+      on_destruction_closure_(std::move(on_destruction_closure)) {
+  DETACH_FROM_SEQUENCE(sequence_checker_);
+}
 
 AudioDebugRecordingHelper::~AudioDebugRecordingHelper() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (on_destruction_closure_)
     std::move(on_destruction_closure_).Run();
 }
@@ -35,10 +38,8 @@
     AudioDebugRecordingStreamType stream_type,
     uint32_t id,
     CreateWavFileCallback create_file_callback) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
-  DCHECK(!debug_writer_);
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  debug_writer_ = CreateAudioDebugFileWriter(params_);
   std::move(create_file_callback)
       .Run(stream_type, id,
            base::BindOnce(&AudioDebugRecordingHelper::StartDebugRecordingToFile,
@@ -46,41 +47,41 @@
 }
 
 void AudioDebugRecordingHelper::StartDebugRecordingToFile(base::File file) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  if (!file.IsValid()) {
-    PLOG(ERROR) << "Invalid debug recording file, error="
-                << file.error_details();
-    debug_writer_.reset();
-    return;
+  {
+    base::AutoLock auto_lock(file_writer_lock_);
+
+    if (!file.IsValid()) {
+      PLOG(ERROR) << "Invalid debug recording file, error="
+                  << file.error_details();
+      file_writer_.reset();
+      return;
+    }
+
+    file_writer_ = CreateAudioDebugFileWriter(params_, std::move(file));
   }
-
-  debug_writer_->Start(std::move(file));
-
-  base::subtle::NoBarrier_Store(&recording_enabled_, 1);
 }
 
 void AudioDebugRecordingHelper::DisableDebugRecording() {
-  DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  base::subtle::NoBarrier_Store(&recording_enabled_, 0);
-
-  if (debug_writer_) {
-    debug_writer_->Stop();
-    debug_writer_.reset();
+  {
+    base::AutoLock auto_lock(file_writer_lock_);
+    if (file_writer_) {
+      file_writer_.reset();
+    }
   }
 }
 
 void AudioDebugRecordingHelper::OnData(const AudioBus* source) {
-  // Check if debug recording is enabled to avoid an unecessary copy and thread
-  // jump if not. Recording can be disabled between the atomic Load() here and
-  // DoWrite(), but it's fine with a single unnecessary copy+jump at disable
-  // time. We use an atomic operation for accessing the flag on different
-  // threads. No memory barrier is needed for the same reason; a race is no
-  // problem at enable and disable time. Missing one buffer of data doesn't
-  // matter.
-  base::subtle::Atomic32 recording_enabled =
-      base::subtle::NoBarrier_Load(&recording_enabled_);
+  // Check if debug recording is enabled to avoid an unnecessary copy and thread
+  // jump if not.
+  bool recording_enabled = false;
+  if (file_writer_lock_.Try()) {
+    recording_enabled = static_cast<bool>(file_writer_);
+    file_writer_lock_.Release();
+  }
   if (!recording_enabled)
     return;
 
@@ -96,23 +97,19 @@
       AudioBus::Create(source->channels(), source->frames());
   source->CopyTo(audio_bus_copy.get());
 
-  task_runner_->PostTask(
-      FROM_HERE,
-      base::BindOnce(&AudioDebugRecordingHelper::DoWrite,
-                     weak_factory_.GetWeakPtr(), std::move(audio_bus_copy)));
+  if (file_writer_lock_.Try()) {
+    if (file_writer_) {
+      file_writer_->Write(std::move(audio_bus_copy));
+    }
+    file_writer_lock_.Release();
+  }
 }
 
-void AudioDebugRecordingHelper::DoWrite(std::unique_ptr<media::AudioBus> data) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
-
-  if (debug_writer_)
-    debug_writer_->Write(std::move(data));
-}
-
-std::unique_ptr<AudioDebugFileWriter>
-AudioDebugRecordingHelper::CreateAudioDebugFileWriter(
-    const AudioParameters& params) {
-  return std::make_unique<AudioDebugFileWriter>(params);
+AudioDebugFileWriter::Ptr AudioDebugRecordingHelper::CreateAudioDebugFileWriter(
+    const AudioParameters& params,
+    base::File file) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  return AudioDebugFileWriter::Create(params, std::move(file));
 }
 
 }  // namespace media
diff --git a/media/audio/audio_debug_recording_helper.h b/media/audio/audio_debug_recording_helper.h
index b98c94d..2283a95 100644
--- a/media/audio/audio_debug_recording_helper.h
+++ b/media/audio/audio_debug_recording_helper.h
@@ -5,12 +5,11 @@
 #ifndef MEDIA_AUDIO_AUDIO_DEBUG_RECORDING_HELPER_H_
 #define MEDIA_AUDIO_AUDIO_DEBUG_RECORDING_HELPER_H_
 
-#include <memory>
-
 #include "base/atomicops.h"
 #include "base/callback.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/weak_ptr.h"
+#include "base/thread_annotations.h"
 #include "base/threading/thread_checker.h"
 #include "media/audio/audio_debug_file_writer.h"
 #include "media/base/audio_parameters.h"
@@ -18,7 +17,6 @@
 
 namespace base {
 class File;
-class SingleThreadTaskRunner;
 }
 
 namespace media {
@@ -39,16 +37,9 @@
 };
 
 // A helper class for those who want to use AudioDebugFileWriter. It handles
-// copying AudioBus data, thread jump (OnData() can be called on any
-// thread), and creating and deleting the AudioDebugFileWriter at enable and
-// disable. All functions except OnData() must be called on the thread
-// |task_runner| belongs to.
-// TODO(grunell): When input debug recording is moved to AudioManager, it should
-// be possible to merge this class into AudioDebugFileWriter. One thread jump
-// could be skipped then. Currently we have
-// soundcard thread -> control thread -> file thread,
-// and with the merge we should be able to do
-// soundcard thread -> file thread.
+// copying AudioBus data, thread jump (OnData() can be called on any thread),
+// and creating and deleting the AudioDebugFileWriter at enable and disable. All
+// public methods except OnData() must be called on the same sequence.
 class MEDIA_EXPORT AudioDebugRecordingHelper : public AudioDebugRecorder {
  public:
   using CreateWavFileCallback = base::OnceCallback<void(
@@ -56,10 +47,8 @@
       uint32_t id,
       base::OnceCallback<void(base::File)> reply_callback)>;
 
-  AudioDebugRecordingHelper(
-      const AudioParameters& params,
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner,
-      base::OnceClosure on_destruction_closure);
+  AudioDebugRecordingHelper(const AudioParameters& params,
+                            base::OnceClosure on_destruction_closure);
 
   AudioDebugRecordingHelper(const AudioDebugRecordingHelper&) = delete;
   AudioDebugRecordingHelper& operator=(const AudioDebugRecordingHelper&) =
@@ -67,13 +56,12 @@
 
   ~AudioDebugRecordingHelper() override;
 
-  // Enable debug recording. Creates |debug_writer_| and runs
-  // |create_file_callback| to create debug recording file.
+  // Enable debug recording. Runs |create_file_callback| synchronously to create
+  // the debug recording file.
   virtual void EnableDebugRecording(AudioDebugRecordingStreamType stream_type,
                                     uint32_t id,
                                     CreateWavFileCallback create_file_callback);
 
-  // Disable debug recording. Destroys |debug_writer_|.
   virtual void DisableDebugRecording();
 
   // AudioDebugRecorder implementation. Can be called on any thread.
@@ -83,30 +71,27 @@
   FRIEND_TEST_ALL_PREFIXES(AudioDebugRecordingHelperTest, EnableDisable);
   FRIEND_TEST_ALL_PREFIXES(AudioDebugRecordingHelperTest, OnData);
 
-  // Writes debug data to |debug_writer_|.
-  void DoWrite(std::unique_ptr<media::AudioBus> data);
-
   // Creates an AudioDebugFileWriter. Overridden by test.
-  virtual std::unique_ptr<AudioDebugFileWriter> CreateAudioDebugFileWriter(
-      const AudioParameters& params);
+  virtual AudioDebugFileWriter::Ptr CreateAudioDebugFileWriter(
+      const AudioParameters& params,
+      base::File file);
 
   // Passed to |create_file_callback| in EnableDebugRecording, to be called
   // after debug recording file was created.
   void StartDebugRecordingToFile(base::File file);
 
   const AudioParameters params_;
-  std::unique_ptr<AudioDebugFileWriter> debug_writer_;
 
-  // Used as a flag to indicate if recording is enabled, accessed on different
-  // threads.
-  base::subtle::Atomic32 recording_enabled_;
+  // Locks access to the |file_writer_|.
+  base::Lock file_writer_lock_;
 
-  // The task runner for accessing |debug_writer_|.
-  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+  AudioDebugFileWriter::Ptr file_writer_ GUARDED_BY(file_writer_lock_);
 
   // Runs in destructor if set.
   base::OnceClosure on_destruction_closure_;
 
+  SEQUENCE_CHECKER(sequence_checker_);
+
   base::WeakPtrFactory<AudioDebugRecordingHelper> weak_factory_{this};
 };
 
diff --git a/media/audio/audio_debug_recording_helper_unittest.cc b/media/audio/audio_debug_recording_helper_unittest.cc
index 2f4cfed..fdef47b 100644
--- a/media/audio/audio_debug_recording_helper_unittest.cc
+++ b/media/audio/audio_debug_recording_helper_unittest.cc
@@ -10,13 +10,18 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/check_op.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
+#include "base/functional/callback_forward.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
+#include "base/synchronization/lock.h"
+#include "base/task/sequenced_task_runner.h"
 #include "base/task/single_thread_task_runner.h"
+#include "base/test/bind.h"
 #include "base/test/task_environment.h"
 #include "media/base/audio_bus.h"
 #include "media/base/audio_sample_types.h"
@@ -38,17 +43,16 @@
 // Mock class for the audio file writer that the helper wraps.
 class MockAudioDebugFileWriter : public AudioDebugFileWriter {
  public:
-  explicit MockAudioDebugFileWriter(const AudioParameters& params)
-      : AudioDebugFileWriter(params), reference_data_(nullptr) {}
+  explicit MockAudioDebugFileWriter(const AudioParameters& params,
+                                    base::File file)
+      : AudioDebugFileWriter(params, std::move(file)),
+        reference_data_(nullptr) {}
 
   MockAudioDebugFileWriter(const MockAudioDebugFileWriter&) = delete;
   MockAudioDebugFileWriter& operator=(const MockAudioDebugFileWriter&) = delete;
 
-  ~MockAudioDebugFileWriter() override = default;
-
-  MOCK_METHOD1(DoStart, void(bool));
-  void Start(base::File file) override { DoStart(file.IsValid()); }
-  MOCK_METHOD0(Stop, void());
+  MOCK_METHOD0(DestructorCalled, void());
+  ~MockAudioDebugFileWriter() override { DestructorCalled(); }
 
   // Functions with move-only types as arguments can't be mocked directly, so
   // we pass on to DoWrite(). Also, we can verify the data this way.
@@ -66,8 +70,6 @@
     DoWrite(data.get());
   }
 
-  MOCK_METHOD0(WillWrite, bool());
-
   // Set reference data to compare against. Must be called before Write() is
   // called.
   void SetReferenceData(AudioBus* reference_data) {
@@ -76,6 +78,10 @@
     reference_data_ = reference_data;
   }
 
+  scoped_refptr<base::SequencedTaskRunner> GetTaskRunner() {
+    return task_runner_;
+  }
+
  private:
   raw_ptr<AudioBus> reference_data_;
 };
@@ -84,13 +90,15 @@
 // function to create the above mock instead.
 class AudioDebugRecordingHelperUnderTest : public AudioDebugRecordingHelper {
  public:
+  using CreatedWriterCallback =
+      base::RepeatingCallback<void(MockAudioDebugFileWriter*)>;
+
   AudioDebugRecordingHelperUnderTest(
       const AudioParameters& params,
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner,
-      base::OnceClosure on_destruction_closure)
-      : AudioDebugRecordingHelper(params,
-                                  std::move(task_runner),
-                                  std::move(on_destruction_closure)) {}
+      base::OnceClosure on_destruction_closure,
+      CreatedWriterCallback created_writer_callback)
+      : AudioDebugRecordingHelper(params, std::move(on_destruction_closure)),
+        created_writer_callback_(std::move(created_writer_callback)) {}
 
   AudioDebugRecordingHelperUnderTest(
       const AudioDebugRecordingHelperUnderTest&) = delete;
@@ -100,19 +108,23 @@
   ~AudioDebugRecordingHelperUnderTest() override = default;
 
  private:
-  // Creates the mock writer. After the mock writer is returned, we always
-  // expect Start() to be called on it by the helper.
-  std::unique_ptr<AudioDebugFileWriter> CreateAudioDebugFileWriter(
-      const AudioParameters& params) override {
-    MockAudioDebugFileWriter* writer = new MockAudioDebugFileWriter(params);
-    EXPECT_CALL(*writer, DoStart(true));
-    return base::WrapUnique<AudioDebugFileWriter>(writer);
+  // Creates the mock writer.
+  AudioDebugFileWriter::Ptr CreateAudioDebugFileWriter(
+      const AudioParameters& params,
+      base::File file) override {
+    MockAudioDebugFileWriter* writer =
+        new MockAudioDebugFileWriter(params, std::move(file));
+    created_writer_callback_.Run(writer);
+    return AudioDebugFileWriter::Ptr(
+        writer, base::OnTaskRunnerDeleter(writer->GetTaskRunner()));
   }
+
+  CreatedWriterCallback created_writer_callback_;
 };
 
 class AudioDebugRecordingHelperTest : public ::testing::Test {
  public:
-  AudioDebugRecordingHelperTest() {}
+  AudioDebugRecordingHelperTest() = default;
 
   AudioDebugRecordingHelperTest(const AudioDebugRecordingHelperTest&) = delete;
   AudioDebugRecordingHelperTest& operator=(
@@ -125,8 +137,11 @@
       const AudioParameters& params,
       base::OnceClosure on_destruction_closure) {
     return std::make_unique<AudioDebugRecordingHelperUnderTest>(
-        params, task_environment_.GetMainThreadTaskRunner(),
-        std::move(on_destruction_closure));
+        params, std::move(on_destruction_closure),
+        base::BindLambdaForTesting(
+            [&](MockAudioDebugFileWriter* mock_audio_file_writer) {
+              mock_audio_file_writer_ = mock_audio_file_writer;
+            }));
   }
 
   MOCK_METHOD0(OnAudioDebugRecordingHelperDestruction, void());
@@ -148,9 +163,16 @@
     // Run |reply_callback| with a valid file for expected
     // MockAudioDebugFileWriter::Start mocked call to happen.
     std::move(reply_callback).Run(std::move(debug_file));
-    // File can be removed right away because MockAudioDebugFileWriter::Start is
-    // called synchronously.
-    ASSERT_TRUE(base::DeleteFile(path));
+    paths_.push_back(std::move(path));
+  }
+
+  void VerifyAndDeleteWavFiles(size_t expected_file_count) {
+    DCHECK_EQ(expected_file_count, paths_.size());
+    task_environment_.RunUntilIdle();
+    for (base::FilePath& path : paths_) {
+      ASSERT_TRUE(base::DeleteFile(path));
+    }
+    paths_.clear();
   }
 
  protected:
@@ -160,6 +182,12 @@
 
   // The test task environment.
   base::test::TaskEnvironment task_environment_;
+
+  // Used for testing to access the file writer having to go through the
+  // internal |file_writer_lock_|.
+  MockAudioDebugFileWriter* mock_audio_file_writer_;
+
+  std::vector<base::FilePath> paths_;
 };
 
 // Creates a helper with an on destruction closure, and verifies that it's run.
@@ -172,6 +200,8 @@
                                  base::Unretained(this)));
 
   EXPECT_CALL(*this, OnAudioDebugRecordingHelperDestruction());
+
+  VerifyAndDeleteWavFiles(0);
 }
 
 // Verifies that disable can be called without being enabled.
@@ -181,6 +211,8 @@
       CreateRecordingHelper(params, base::OnceClosure());
 
   recording_helper->DisableDebugRecording();
+
+  VerifyAndDeleteWavFiles(0);
 }
 
 TEST_F(AudioDebugRecordingHelperTest, EnableDisable) {
@@ -192,19 +224,17 @@
       stream_type_, id_,
       base::BindOnce(&AudioDebugRecordingHelperTest::CreateWavFile,
                      base::Unretained(this)));
-  EXPECT_CALL(*static_cast<MockAudioDebugFileWriter*>(
-                  recording_helper->debug_writer_.get()),
-              Stop());
+  EXPECT_CALL(*mock_audio_file_writer_, DestructorCalled());
   recording_helper->DisableDebugRecording();
 
   recording_helper->EnableDebugRecording(
       stream_type_, id_,
       base::BindOnce(&AudioDebugRecordingHelperTest::CreateWavFile,
                      base::Unretained(this)));
-  EXPECT_CALL(*static_cast<MockAudioDebugFileWriter*>(
-                  recording_helper->debug_writer_.get()),
-              Stop());
+  EXPECT_CALL(*mock_audio_file_writer_, DestructorCalled());
   recording_helper->DisableDebugRecording();
+
+  VerifyAndDeleteWavFiles(2);
 }
 
 TEST_F(AudioDebugRecordingHelperTest, OnData) {
@@ -235,16 +265,13 @@
       stream_type_, id_,
       base::BindOnce(&AudioDebugRecordingHelperTest::CreateWavFile,
                      base::Unretained(this)));
-  MockAudioDebugFileWriter* mock_audio_file_writer =
-      static_cast<MockAudioDebugFileWriter*>(
-          recording_helper->debug_writer_.get());
-  mock_audio_file_writer->SetReferenceData(audio_bus.get());
+  mock_audio_file_writer_->SetReferenceData(audio_bus.get());
 
-  EXPECT_CALL(*mock_audio_file_writer, DoWrite(_));
+  EXPECT_CALL(*mock_audio_file_writer_, DoWrite(_));
   recording_helper->OnData(audio_bus.get());
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_CALL(*mock_audio_file_writer, Stop());
+  EXPECT_CALL(*mock_audio_file_writer_, DestructorCalled());
   recording_helper->DisableDebugRecording();
 
   // Make sure we clear the loop before enabling again.
@@ -257,26 +284,21 @@
       stream_type_, id_,
       base::BindOnce(&AudioDebugRecordingHelperTest::CreateWavFile,
                      base::Unretained(this)));
-  mock_audio_file_writer = static_cast<MockAudioDebugFileWriter*>(
-      recording_helper->debug_writer_.get());
-  mock_audio_file_writer->SetReferenceData(audio_bus.get());
+  mock_audio_file_writer_->SetReferenceData(audio_bus.get());
 
-  EXPECT_CALL(*mock_audio_file_writer, DoWrite(_)).Times(2);
+  EXPECT_CALL(*mock_audio_file_writer_, DoWrite(_)).Times(2);
   recording_helper->OnData(audio_bus.get());
   recording_helper->OnData(audio_bus.get());
   base::RunLoop().RunUntilIdle();
 
-  // This call should not yield a DoWrite() call on the mock, since the message
-  // loop isn't run until after disabling. WillWrite() is expected since
-  // recording is enabled.
-  recording_helper->OnData(audio_bus.get());
-
-  EXPECT_CALL(*mock_audio_file_writer, Stop());
+  EXPECT_CALL(*mock_audio_file_writer_, DestructorCalled());
   recording_helper->DisableDebugRecording();
 
-  // This call should not yield a DoWrite() call on the mock either.
+  // This call should not yield a DoWrite() call on the mock.
   recording_helper->OnData(audio_bus.get());
   base::RunLoop().RunUntilIdle();
+
+  VerifyAndDeleteWavFiles(2);
 }
 
 }  // namespace media
diff --git a/media/audio/audio_debug_recording_manager.cc b/media/audio/audio_debug_recording_manager.cc
index a7d99400..9292e2d 100644
--- a/media/audio/audio_debug_recording_manager.cc
+++ b/media/audio/audio_debug_recording_manager.cc
@@ -8,7 +8,7 @@
 
 #include "base/bind.h"
 #include "base/memory/ptr_util.h"
-#include "base/task/single_thread_task_runner.h"
+#include "base/threading/thread_checker.h"
 
 namespace media {
 
@@ -17,15 +17,15 @@
 uint32_t g_next_stream_id = 1;
 }
 
-AudioDebugRecordingManager::AudioDebugRecordingManager(
-    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
-    : task_runner_(std::move(task_runner)) {}
+AudioDebugRecordingManager::AudioDebugRecordingManager() {
+  DETACH_FROM_SEQUENCE(sequence_checker_);
+}
 
 AudioDebugRecordingManager::~AudioDebugRecordingManager() = default;
 
 void AudioDebugRecordingManager::EnableDebugRecording(
     CreateWavFileCallback create_file_callback) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(!create_file_callback.is_null());
   create_file_callback_ = std::move(create_file_callback);
 
@@ -39,7 +39,7 @@
 }
 
 void AudioDebugRecordingManager::DisableDebugRecording() {
-  DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(!create_file_callback_.is_null());
   for (const auto& it : debug_recording_helpers_) {
     AudioDebugRecordingHelper* recording_helper = it.second.first;
@@ -52,7 +52,7 @@
 AudioDebugRecordingManager::RegisterDebugRecordingSource(
     AudioDebugRecordingStreamType stream_type,
     const AudioParameters& params) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const uint32_t id = g_next_stream_id++;
 
@@ -60,7 +60,7 @@
   // returned recorder. But to not require this we use a weak pointer.
   std::unique_ptr<AudioDebugRecordingHelper> recording_helper =
       CreateAudioDebugRecordingHelper(
-          params, task_runner_,
+          params,
           base::BindOnce(
               &AudioDebugRecordingManager::UnregisterDebugRecordingSource,
               weak_factory_.GetWeakPtr(), id));
@@ -77,7 +77,7 @@
 }
 
 void AudioDebugRecordingManager::UnregisterDebugRecordingSource(uint32_t id) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   auto it = debug_recording_helpers_.find(id);
   DCHECK(it != debug_recording_helpers_.end());
   debug_recording_helpers_.erase(id);
@@ -86,14 +86,13 @@
 std::unique_ptr<AudioDebugRecordingHelper>
 AudioDebugRecordingManager::CreateAudioDebugRecordingHelper(
     const AudioParameters& params,
-    scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     base::OnceClosure on_destruction_closure) {
   return std::make_unique<AudioDebugRecordingHelper>(
-      params, task_runner, std::move(on_destruction_closure));
+      params, std::move(on_destruction_closure));
 }
 
 bool AudioDebugRecordingManager::IsDebugRecordingEnabled() {
-  DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return !create_file_callback_.is_null();
 }
 
diff --git a/media/audio/audio_debug_recording_manager.h b/media/audio/audio_debug_recording_manager.h
index 3359dce..8cf8a60 100644
--- a/media/audio/audio_debug_recording_manager.h
+++ b/media/audio/audio_debug_recording_manager.h
@@ -59,8 +59,7 @@
       uint32_t id,
       base::OnceCallback<void(base::File)> reply_callback)>;
 
-  AudioDebugRecordingManager(
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+  AudioDebugRecordingManager();
 
   AudioDebugRecordingManager(const AudioDebugRecordingManager&) = delete;
   AudioDebugRecordingManager& operator=(const AudioDebugRecordingManager&) =
@@ -81,14 +80,8 @@
  protected:
   // Creates an AudioDebugRecordingHelper. Overridden by test.
   virtual std::unique_ptr<AudioDebugRecordingHelper>
-  CreateAudioDebugRecordingHelper(
-      const AudioParameters& params,
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner,
-      base::OnceClosure on_destruction_closure);
-
-  // The task runner this class lives on. Also handed to
-  // AudioDebugRecordingHelpers.
-  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+  CreateAudioDebugRecordingHelper(const AudioParameters& params,
+                                  base::OnceClosure on_destruction_closure);
 
  private:
   FRIEND_TEST_ALL_PREFIXES(AudioDebugRecordingManagerTest,
@@ -115,6 +108,8 @@
   // recording is enabled.
   CreateWavFileCallback create_file_callback_;
 
+  SEQUENCE_CHECKER(sequence_checker_);
+
   base::WeakPtrFactory<AudioDebugRecordingManager> weak_factory_{this};
 };
 
diff --git a/media/audio/audio_debug_recording_manager_unittest.cc b/media/audio/audio_debug_recording_manager_unittest.cc
index e85d307..2afa476 100644
--- a/media/audio/audio_debug_recording_manager_unittest.cc
+++ b/media/audio/audio_debug_recording_manager_unittest.cc
@@ -9,7 +9,6 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/task/single_thread_task_runner.h"
 #include "base/test/task_environment.h"
 #include "media/audio/audio_debug_recording_helper.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -53,13 +52,9 @@
 // Mock class to verify enable and disable calls.
 class MockAudioDebugRecordingHelper : public AudioDebugRecordingHelper {
  public:
-  MockAudioDebugRecordingHelper(
-      const AudioParameters& params,
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner,
-      base::OnceClosure on_destruction_closure)
-      : AudioDebugRecordingHelper(params,
-                                  std::move(task_runner),
-                                  base::OnceClosure()),
+  MockAudioDebugRecordingHelper(const AudioParameters& params,
+                                base::OnceClosure on_destruction_closure)
+      : AudioDebugRecordingHelper(params, base::OnceClosure()),
         on_destruction_closure_in_mock_(std::move(on_destruction_closure)) {
     if (g_expect_enable_after_create_helper)
       EXPECT_CALL(*this, DoEnableDebugRecording(_, _));
@@ -95,9 +90,7 @@
 // function to create the above mock instead.
 class AudioDebugRecordingManagerUnderTest : public AudioDebugRecordingManager {
  public:
-  AudioDebugRecordingManagerUnderTest(
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner)
-      : AudioDebugRecordingManager(std::move(task_runner)) {}
+  AudioDebugRecordingManagerUnderTest() = default;
 
   AudioDebugRecordingManagerUnderTest(
       const AudioDebugRecordingManagerUnderTest&) = delete;
@@ -109,19 +102,16 @@
  private:
   std::unique_ptr<AudioDebugRecordingHelper> CreateAudioDebugRecordingHelper(
       const AudioParameters& params,
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner,
       base::OnceClosure on_destruction_closure) override {
     return std::make_unique<MockAudioDebugRecordingHelper>(
-        params, std::move(task_runner),
-        std::move(on_destruction_closure));
+        params, std::move(on_destruction_closure));
   }
 };
 
 // The test fixture.
 class AudioDebugRecordingManagerTest : public ::testing::Test {
  public:
-  AudioDebugRecordingManagerTest()
-      : manager_(task_environment_.GetMainThreadTaskRunner()) {}
+  AudioDebugRecordingManagerTest() = default;
 
   AudioDebugRecordingManagerTest(const AudioDebugRecordingManagerTest&) =
       delete;
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc
index 5490e65..5c65435 100644
--- a/media/audio/audio_manager_base.cc
+++ b/media/audio/audio_manager_base.cc
@@ -620,13 +620,12 @@
   }
 
   DCHECK(!debug_recording_manager_);
-  debug_recording_manager_ = CreateAudioDebugRecordingManager(GetTaskRunner());
+  debug_recording_manager_ = CreateAudioDebugRecordingManager();
 }
 
 std::unique_ptr<AudioDebugRecordingManager>
-AudioManagerBase::CreateAudioDebugRecordingManager(
-    scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
-  return std::make_unique<AudioDebugRecordingManager>(std::move(task_runner));
+AudioManagerBase::CreateAudioDebugRecordingManager() {
+  return std::make_unique<AudioDebugRecordingManager>();
 }
 
 AudioDebugRecordingManager* AudioManagerBase::GetAudioDebugRecordingManager() {
diff --git a/media/audio/audio_manager_base.h b/media/audio/audio_manager_base.h
index 7a50ddf8f..54f7c23 100644
--- a/media/audio/audio_manager_base.h
+++ b/media/audio/audio_manager_base.h
@@ -161,8 +161,7 @@
   std::string GetCommunicationsOutputDeviceID() override;
 
   virtual std::unique_ptr<AudioDebugRecordingManager>
-  CreateAudioDebugRecordingManager(
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+  CreateAudioDebugRecordingManager();
   AudioDebugRecordingManager* GetAudioDebugRecordingManager() final;
 
   void SetAecDumpRecordingManager(base::WeakPtr<AecdumpRecordingManager>
diff --git a/media/audio/mock_audio_debug_recording_manager.cc b/media/audio/mock_audio_debug_recording_manager.cc
index dfffae3..9c7b89b6 100644
--- a/media/audio/mock_audio_debug_recording_manager.cc
+++ b/media/audio/mock_audio_debug_recording_manager.cc
@@ -8,9 +8,7 @@
 
 namespace media {
 
-MockAudioDebugRecordingManager::MockAudioDebugRecordingManager(
-    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
-    : AudioDebugRecordingManager(std::move(task_runner)) {}
+MockAudioDebugRecordingManager::MockAudioDebugRecordingManager() = default;
 
 MockAudioDebugRecordingManager::~MockAudioDebugRecordingManager() = default;
 
diff --git a/media/audio/mock_audio_debug_recording_manager.h b/media/audio/mock_audio_debug_recording_manager.h
index 372334ac..3a5bb07d 100644
--- a/media/audio/mock_audio_debug_recording_manager.h
+++ b/media/audio/mock_audio_debug_recording_manager.h
@@ -13,8 +13,7 @@
 
 class MockAudioDebugRecordingManager : public AudioDebugRecordingManager {
  public:
-  explicit MockAudioDebugRecordingManager(
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+  MockAudioDebugRecordingManager();
 
   MockAudioDebugRecordingManager(const MockAudioDebugRecordingManager&) =
       delete;
diff --git a/media/audio/mock_audio_manager.cc b/media/audio/mock_audio_manager.cc
index e4c97a41..daaef3a 100644
--- a/media/audio/mock_audio_manager.cc
+++ b/media/audio/mock_audio_manager.cc
@@ -132,8 +132,7 @@
   }
 
   DCHECK(!debug_recording_manager_);
-  debug_recording_manager_ =
-      std::make_unique<MockAudioDebugRecordingManager>(GetTaskRunner());
+  debug_recording_manager_ = std::make_unique<MockAudioDebugRecordingManager>();
 }
 
 AudioDebugRecordingManager* MockAudioManager::GetAudioDebugRecordingManager() {
diff --git a/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc b/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc
index 9f648ff..cfaca47 100644
--- a/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc
+++ b/media/gpu/windows/media_foundation_video_encode_accelerator_win.cc
@@ -668,8 +668,9 @@
   // Try to create the encoder with priority according to merit value.
   HRESULT hr = E_FAIL;
   for (UINT32 i = 0; i < encoder_count; i++) {
+    auto vendor = GetDriverVendor(pp_activate[i]);
     // Skip flawky Intel hybrid AV1 encoder.
-    if (codec_ == VideoCodec::kAV1) {
+    if (codec_ == VideoCodec::kAV1 && vendor == DriverVendor::kIntel) {
       // Get the CLSID GUID of the HMFT.
       GUID mft_guid = {0};
       pp_activate[i]->GetGUID(MFT_TRANSFORM_CLSID_Attribute, &mft_guid);
@@ -678,52 +679,41 @@
         continue;
       }
     }
-    if (FAILED(hr)) {
-      DCHECK(!encoder_);
-      DCHECK(!activate_);
-      hr = pp_activate[i]->ActivateObject(IID_PPV_ARGS(&encoder_));
-      if (encoder_.Get() != nullptr) {
-        DCHECK(SUCCEEDED(hr));
-        auto vendor = GetDriverVendor(pp_activate[i]);
 
-        // Skip NVIDIA GPU due to https://crbug.com/1088650 for constrained
-        // baseline profile H.264 encoding, and go to the next instance
-        // according to merit value.
-        if (codec_ == VideoCodec::kH264 && is_constrained_h264) {
-          // Get the vendor id.
-          base::win::ScopedCoMem<WCHAR> vendor_id;
-          UINT32 id_length;
-          pp_activate[i]->GetAllocatedString(
-              MFT_ENUM_HARDWARE_VENDOR_ID_Attribute, &vendor_id, &id_length);
-          if (!_wcsnicmp(vendor_id, L"VEN_10DE", id_length)) {
-            DLOG(WARNING)
-                << "Skipped NVIDIA GPU due to https://crbug.com/1088650";
-            pp_activate[i]->ShutdownObject();
-            encoder_.Reset();
-            hr = E_FAIL;
-            continue;
-          }
-        }
+    // Skip NVIDIA GPU due to https://crbug.com/1088650 for constrained
+    // baseline profile H.264 encoding, and go to the next instance according
+    // to merit value.
+    if (codec_ == VideoCodec::kH264 && is_constrained_h264 &&
+        vendor == DriverVendor::kNvidia) {
+      DLOG(WARNING) << "Skipped NVIDIA GPU due to https://crbug.com/1088650";
+      continue;
+    }
 
-        activate_ = pp_activate[i];
-        vendor_ = vendor;
-        pp_activate[i] = nullptr;
+    DCHECK(!encoder_);
+    DCHECK(!activate_);
+    hr = pp_activate[i]->ActivateObject(IID_PPV_ARGS(&encoder_));
+    if (encoder_.Get() != nullptr) {
+      DCHECK(SUCCEEDED(hr));
+      activate_ = pp_activate[i];
+      vendor_ = vendor;
+      pp_activate[i] = nullptr;
 
-        // Print the friendly name.
-        base::win::ScopedCoMem<WCHAR> friendly_name;
-        UINT32 name_length;
-        activate_->GetAllocatedString(MFT_FRIENDLY_NAME_Attribute,
-                                      &friendly_name, &name_length);
-        DVLOG(3) << "Selected asynchronous hardware encoder's friendly name: "
-                 << friendly_name;
-      } else {
-        DCHECK(FAILED(hr));
+      // Print the friendly name.
+      base::win::ScopedCoMem<WCHAR> friendly_name;
+      UINT32 name_length;
+      activate_->GetAllocatedString(MFT_FRIENDLY_NAME_Attribute, &friendly_name,
+                                    &name_length);
+      DVLOG(3) << "Selected asynchronous hardware encoder's friendly name: "
+               << friendly_name;
+      // Encoder is successfully activated.
+      break;
+    } else {
+      DCHECK(FAILED(hr));
 
-        // The component that calls ActivateObject is
-        // responsible for calling ShutdownObject,
-        // https://docs.microsoft.com/en-us/windows/win32/api/mfobjects/nf-mfobjects-imfactivate-shutdownobject.
-        pp_activate[i]->ShutdownObject();
-      }
+      // The component that calls ActivateObject is
+      // responsible for calling ShutdownObject,
+      // https://docs.microsoft.com/en-us/windows/win32/api/mfobjects/nf-mfobjects-imfactivate-shutdownobject.
+      pp_activate[i]->ShutdownObject();
     }
   }
 
diff --git a/net/cert/crl_set.cc b/net/cert/crl_set.cc
index ab962607..642b4129 100644
--- a/net/cert/crl_set.cc
+++ b/net/cert/crl_set.cc
@@ -65,7 +65,7 @@
   if (data->size() < header_len)
     return nullptr;
 
-  const base::StringPiece header_bytes(data->data(), header_len);
+  const base::StringPiece header_bytes = data->substr(0, header_len);
   data->remove_prefix(header_len);
 
   std::unique_ptr<base::Value> header = base::JSONReader::ReadDeprecated(
@@ -87,7 +87,7 @@
              std::vector<std::string>* out_serials) {
   if (data->size() < crypto::kSHA256Length)
     return false;
-  out_parent_spki_hash->assign(data->data(), crypto::kSHA256Length);
+  *out_parent_spki_hash = std::string(data->substr(0, crypto::kSHA256Length));
   data->remove_prefix(crypto::kSHA256Length);
 
   uint32_t num_serials;
@@ -106,14 +106,14 @@
     if (data->size() < sizeof(uint8_t))
       return false;
 
-    uint8_t serial_length = data->data()[0];
+    uint8_t serial_length = (*data)[0];
     data->remove_prefix(sizeof(uint8_t));
 
     if (data->size() < serial_length)
       return false;
 
     out_serials->push_back(std::string());
-    out_serials->back().assign(data->data(), serial_length);
+    out_serials->back() = std::string(data->substr(0, serial_length));
     data->remove_prefix(serial_length);
   }
 
diff --git a/net/first_party_sets/public_sets.cc b/net/first_party_sets/public_sets.cc
index c951cb8..37db396 100644
--- a/net/first_party_sets/public_sets.cc
+++ b/net/first_party_sets/public_sets.cc
@@ -6,6 +6,7 @@
 
 #include <tuple>
 
+#include "base/containers/contains.h"
 #include "base/containers/flat_map.h"
 #include "base/containers/flat_set.h"
 #include "base/functional/function_ref.h"
@@ -44,18 +45,22 @@
 
 // Adds all sets in a list of First-Party Sets into `site_to_entry` which maps
 // from a site to its entry.
-void UpdateCustomizationMap(
+void UpdateCustomizations(
     const std::vector<SingleSet>& set_list,
-    base::flat_map<SchemefulSite, absl::optional<FirstPartySetEntry>>&
+    std::vector<std::pair<SchemefulSite, absl::optional<FirstPartySetEntry>>>&
         site_to_entry) {
   for (const auto& set : set_list) {
     for (const auto& site_and_entry : set) {
-      bool inserted = site_to_entry.emplace(site_and_entry).second;
-      DCHECK(inserted);
+      site_to_entry.emplace_back(site_and_entry);
     }
   }
 }
 
+const SchemefulSite& ProjectKey(
+    const std::pair<SchemefulSite, absl::optional<FirstPartySetEntry>>& p) {
+  return p.first;
+}
+
 }  // namespace
 
 PublicSets::PublicSets() = default;
@@ -153,7 +158,7 @@
     const std::vector<SingleSet>& replacement_sets,
     const std::vector<SingleSet>& addition_sets) const {
   // Maps a site to its new entry if it has one.
-  base::flat_map<SchemefulSite, absl::optional<FirstPartySetEntry>>
+  std::vector<std::pair<SchemefulSite, absl::optional<FirstPartySetEntry>>>
       site_to_entry;
 
   std::vector<base::flat_map<SchemefulSite, FirstPartySetEntry>>
@@ -166,8 +171,8 @@
       SetListToFlattenedSets(normalized_additions);
 
   // All of the custom sets are automatically inserted into site_to_owner.
-  UpdateCustomizationMap(replacement_sets, site_to_entry);
-  UpdateCustomizationMap(normalized_additions, site_to_entry);
+  UpdateCustomizations(replacement_sets, site_to_entry);
+  UpdateCustomizations(normalized_additions, site_to_entry);
 
   // Maps old owner to new entry.
   base::flat_map<SchemefulSite, FirstPartySetEntry> addition_intersected_owners;
@@ -216,12 +221,12 @@
     if (auto entry = addition_intersected_owners.find(set_entry.primary());
         entry != addition_intersected_owners.end() &&
         !flattened_replacements.contains(member)) {
-      site_to_entry.emplace(member,
-                            FirstPartySetEntry(entry->second.primary(),
-                                               member == entry->second.primary()
-                                                   ? SiteType::kPrimary
-                                                   : SiteType::kAssociated,
-                                               absl::nullopt));
+      site_to_entry.emplace_back(
+          member, FirstPartySetEntry(entry->second.primary(),
+                                     member == entry->second.primary()
+                                         ? SiteType::kPrimary
+                                         : SiteType::kAssociated,
+                                     absl::nullopt));
     }
     if (member == set_entry.primary())
       continue;
@@ -237,22 +242,21 @@
     if (replaced_existing_owners.contains(set_entry.primary()) &&
         !flattened_replacements.contains(member) &&
         !addition_intersected_owners.contains(set_entry.primary())) {
-      bool inserted = site_to_entry.emplace(member, absl::nullopt).second;
-      DCHECK(inserted);
+      site_to_entry.emplace_back(member, absl::nullopt);
     }
   }
   // Any owner remaining in `potential_singleton` is a real singleton, so delete
   // it:
   for (auto& [owner, members] : potential_singletons) {
-    bool inserted = site_to_entry.emplace(owner, absl::nullopt).second;
-    DCHECK(inserted);
+    site_to_entry.emplace_back(owner, absl::nullopt);
   }
 
   // For every public alias that would now refer to a site in the overlay, which
   // is not already contained in the overlay, we explicitly ignore that alias.
   for (const auto& [alias, site] : aliases_) {
-    if (site_to_entry.contains(site) && !site_to_entry.contains(alias)) {
-      site_to_entry.emplace(alias, absl::nullopt);
+    if (base::Contains(site_to_entry, site, ProjectKey) &&
+        !base::Contains(site_to_entry, alias, ProjectKey)) {
+      site_to_entry.emplace_back(alias, absl::nullopt);
     }
   }
 
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins
index 59a61490..35173a70 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-09-18 12:55 UTC
+# Last updated: 2022-09-20 12:55 UTC
 PinsListTimestamp
-1663505701
+1663678537
 
 TestSPKI
 sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
index 39e0a28..4a57add8 100644
--- a/net/quic/quic_chromium_client_session.cc
+++ b/net/quic/quic_chromium_client_session.cc
@@ -824,7 +824,8 @@
 void QuicChromiumClientSession::ConnectionMigrationValidationResultDelegate::
     OnPathValidationFailure(
         std::unique_ptr<quic::QuicPathValidationContext> context) {
-  session_->connection()->OnPathValidationFailureAtClient();
+  session_->connection()->OnPathValidationFailureAtClient(
+      /*is_multi_port=*/false);
   // Note that socket, packet writer, and packet reader in |context| will be
   // discarded.
   auto* chrome_context =
@@ -852,7 +853,8 @@
 void QuicChromiumClientSession::PortMigrationValidationResultDelegate::
     OnPathValidationFailure(
         std::unique_ptr<quic::QuicPathValidationContext> context) {
-  session_->connection()->OnPathValidationFailureAtClient();
+  session_->connection()->OnPathValidationFailureAtClient(
+      /*is_multi_port=*/false);
   // Note that socket, packet writer, and packet reader in |context| will be
   // discarded.
   auto* chrome_context =
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
index 64c5c2c..79bcb84 100644
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
@@ -1226,7 +1226,7 @@
   DCHECK(transport_security_state_);
   DCHECK(http_server_properties_);
   if (params_.disable_tls_zero_rtt)
-    SetQuicFlag(FLAGS_quic_disable_client_tls_zero_rtt, true);
+    SetQuicFlag(quic_disable_client_tls_zero_rtt, true);
   InitializeMigrationOptions();
 }
 
diff --git a/net/server/web_socket_encoder_unittest.cc b/net/server/web_socket_encoder_unittest.cc
index f9a0d67..2025645 100644
--- a/net/server/web_socket_encoder_unittest.cc
+++ b/net/server/web_socket_encoder_unittest.cc
@@ -403,7 +403,7 @@
   frame.reserve(length);
   for (int i = 0; i < length; ++i) {
     int64_t j = i;
-    frame += temp.data()[(j * j) % length];
+    frame += temp[(j * j) % length];
   }
 
   int mask = 0;
diff --git a/net/third_party/quiche/BUILD.gn b/net/third_party/quiche/BUILD.gn
index ac6435c..e93a5787 100644
--- a/net/third_party/quiche/BUILD.gn
+++ b/net/third_party/quiche/BUILD.gn
@@ -112,6 +112,8 @@
     "src/quiche/common/quiche_buffer_allocator.cc",
     "src/quiche/common/quiche_buffer_allocator.h",
     "src/quiche/common/quiche_circular_deque.h",
+    "src/quiche/common/quiche_crypto_logging.cc",
+    "src/quiche/common/quiche_crypto_logging.h",
     "src/quiche/common/quiche_data_reader.cc",
     "src/quiche/common/quiche_data_reader.h",
     "src/quiche/common/quiche_data_writer.cc",
@@ -781,17 +783,11 @@
       "overrides/quiche_platform_impl/epoll_logging_impl.h",
       "overrides/quiche_platform_impl/epoll_thread_impl.h",
       "overrides/quiche_platform_impl/quiche_udp_socket_platform_impl.h",
-      "src/quiche/common/platform/api/quiche_epoll.h",
       "src/quiche/common/platform/api/quiche_stream_buffer_allocator.h",
       "src/quiche/common/platform/api/quiche_udp_socket_platform_api.h",
       "src/quiche/common/platform/default/quiche_platform_impl/quiche_stream_buffer_allocator_impl.h",
       "src/quiche/common/quiche_ip_address_family.cc",
       "src/quiche/common/quiche_ip_address_family.h",
-      "src/quiche/epoll_server/platform/api/epoll_bug.h",
-      "src/quiche/epoll_server/platform/api/epoll_logging.h",
-      "src/quiche/epoll_server/platform/api/epoll_thread.h",
-      "src/quiche/epoll_server/simple_epoll_server.cc",
-      "src/quiche/epoll_server/simple_epoll_server.h",
       "src/quiche/quic/core/io/event_loop_socket_factory.cc",
       "src/quiche/quic/core/io/event_loop_socket_factory.h",
       "src/quiche/quic/core/io/event_loop_tcp_client_socket.cc",
@@ -806,46 +802,35 @@
       "src/quiche/quic/core/quic_default_clock.h",
       "src/quiche/quic/core/quic_default_packet_writer.cc",
       "src/quiche/quic/core/quic_default_packet_writer.h",
-      "src/quiche/quic/core/quic_epoll_alarm_factory.cc",
-      "src/quiche/quic/core/quic_epoll_alarm_factory.h",
-      "src/quiche/quic/core/quic_epoll_clock.cc",
-      "src/quiche/quic/core/quic_epoll_clock.h",
-      "src/quiche/quic/core/quic_epoll_connection_helper.cc",
-      "src/quiche/quic/core/quic_epoll_connection_helper.h",
       "src/quiche/quic/core/quic_packet_reader.cc",
       "src/quiche/quic/core/quic_packet_reader.h",
       "src/quiche/quic/core/quic_udp_socket.h",
       "src/quiche/quic/core/quic_udp_socket_posix.cc",
+      "src/quiche/quic/masque/masque_client.cc",
+      "src/quiche/quic/masque/masque_client.h",
       "src/quiche/quic/masque/masque_client_session.cc",
       "src/quiche/quic/masque/masque_client_session.h",
       "src/quiche/quic/masque/masque_client_tools.cc",
       "src/quiche/quic/masque/masque_client_tools.h",
       "src/quiche/quic/masque/masque_dispatcher.cc",
       "src/quiche/quic/masque/masque_dispatcher.h",
+      "src/quiche/quic/masque/masque_encapsulated_client.cc",
+      "src/quiche/quic/masque/masque_encapsulated_client.h",
       "src/quiche/quic/masque/masque_encapsulated_client_session.cc",
       "src/quiche/quic/masque/masque_encapsulated_client_session.h",
-      "src/quiche/quic/masque/masque_encapsulated_epoll_client.cc",
-      "src/quiche/quic/masque/masque_encapsulated_epoll_client.h",
-      "src/quiche/quic/masque/masque_epoll_client.cc",
-      "src/quiche/quic/masque/masque_epoll_client.h",
-      "src/quiche/quic/masque/masque_epoll_server.cc",
-      "src/quiche/quic/masque/masque_epoll_server.h",
+      "src/quiche/quic/masque/masque_server.cc",
+      "src/quiche/quic/masque/masque_server.h",
       "src/quiche/quic/masque/masque_server_backend.cc",
       "src/quiche/quic/masque/masque_server_backend.h",
       "src/quiche/quic/masque/masque_server_session.cc",
       "src/quiche/quic/masque/masque_server_session.h",
       "src/quiche/quic/masque/masque_utils.cc",
       "src/quiche/quic/masque/masque_utils.h",
-      "src/quiche/quic/platform/api/quic_epoll.h",
       "src/quiche/quic/platform/api/quic_udp_socket_platform_api.h",
       "src/quiche/quic/tools/connect_tunnel.cc",
       "src/quiche/quic/tools/connect_tunnel.h",
-      "src/quiche/quic/tools/quic_client.cc",
-      "src/quiche/quic/tools/quic_client.h",
       "src/quiche/quic/tools/quic_client_default_network_helper.cc",
       "src/quiche/quic/tools/quic_client_default_network_helper.h",
-      "src/quiche/quic/tools/quic_client_epoll_network_helper.cc",
-      "src/quiche/quic/tools/quic_client_epoll_network_helper.h",
       "src/quiche/quic/tools/quic_default_client.cc",
       "src/quiche/quic/tools/quic_default_client.h",
       "src/quiche/quic/tools/quic_name_lookup.cc",
@@ -961,12 +946,6 @@
       "overrides/quiche_platform_impl/epoll_expect_bug_impl.h",
       "overrides/quiche_platform_impl/epoll_test_impl.h",
       "overrides/quiche_platform_impl/quiche_epoll_test_tools_impl.h",
-      "src/quiche/common/platform/api/quiche_epoll_test_tools.h",
-      "src/quiche/epoll_server/fake_simple_epoll_server.cc",
-      "src/quiche/epoll_server/fake_simple_epoll_server.h",
-      "src/quiche/epoll_server/platform/api/epoll_address_test_utils.h",
-      "src/quiche/epoll_server/platform/api/epoll_expect_bug.h",
-      "src/quiche/epoll_server/platform/api/epoll_test.h",
       "src/quiche/quic/test_tools/quic_server_peer.cc",
       "src/quiche/quic/test_tools/quic_server_peer.h",
       "src/quiche/quic/test_tools/quic_test_client.cc",
@@ -1667,16 +1646,11 @@
   if (build_epoll_based_tools) {
     sources += [
       "overrides/quiche_platform_impl/quiche_command_line_flags_test.cc",
-      "src/quiche/epoll_server/simple_epoll_server_test.cc",
       "src/quiche/quic/core/chlo_extractor_test.cc",
       "src/quiche/quic/core/http/end_to_end_test.cc",
       "src/quiche/quic/core/http/quic_spdy_client_session_test.cc",
       "src/quiche/quic/core/http/quic_spdy_client_stream_test.cc",
       "src/quiche/quic/core/http/quic_spdy_server_stream_base_test.cc",
-      "src/quiche/quic/core/quic_epoll_alarm_factory_test.cc",
-      "src/quiche/quic/core/quic_epoll_clock_test.cc",
-      "src/quiche/quic/core/quic_epoll_connection_helper_test.cc",
-      "src/quiche/quic/tools/quic_client_test.cc",
       "src/quiche/quic/tools/quic_default_client_test.cc",
       "src/quiche/quic/tools/quic_server_test.cc",
       "src/quiche/quic/tools/quic_simple_server_session_test.cc",
diff --git a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_command_line_flags_test.cc b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_command_line_flags_test.cc
index a4b1861..caccad3 100644
--- a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_command_line_flags_test.cc
+++ b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_command_line_flags_test.cc
@@ -56,9 +56,9 @@
 };
 
 TEST_F(QuicheCommandLineFlagTest, DefaultValues) {
-  EXPECT_EQ(false, GetQuicheFlag(FLAGS_foo));
-  EXPECT_EQ(123, GetQuicheFlag(FLAGS_bar));
-  EXPECT_EQ("splash!", GetQuicheFlag(FLAGS_baz));
+  EXPECT_EQ(false, GetQuicheFlag(foo));
+  EXPECT_EQ(123, GetQuicheFlag(bar));
+  EXPECT_EQ("splash!", GetQuicheFlag(baz));
 }
 
 TEST_F(QuicheCommandLineFlagTest, NotSpecified) {
@@ -69,36 +69,36 @@
   std::vector<std::string> expected_args{"two", "three"};
   EXPECT_EQ(expected_args, parse_result.non_flag_args);
 
-  EXPECT_EQ(false, GetQuicheFlag(FLAGS_foo));
-  EXPECT_EQ(123, GetQuicheFlag(FLAGS_bar));
-  EXPECT_EQ("splash!", GetQuicheFlag(FLAGS_baz));
+  EXPECT_EQ(false, GetQuicheFlag(foo));
+  EXPECT_EQ(123, GetQuicheFlag(bar));
+  EXPECT_EQ("splash!", GetQuicheFlag(baz));
 }
 
 TEST_F(QuicheCommandLineFlagTest, BoolFlag) {
   for (const char* s :
        {"--foo", "--foo=1", "--foo=t", "--foo=True", "--foo=Y", "--foo=yes"}) {
-    SetQuicheFlag(FLAGS_foo, false);
+    SetQuicheFlag(foo, false);
     const char* argv[]{"argv0", s};
     auto parse_result = QuicheParseCommandLineFlagsForTest(
         "usage message", std::size(argv), argv);
     EXPECT_FALSE(parse_result.exit_status.has_value());
     EXPECT_TRUE(parse_result.non_flag_args.empty());
-    EXPECT_TRUE(GetQuicheFlag(FLAGS_foo));
+    EXPECT_TRUE(GetQuicheFlag(foo));
   }
 
   for (const char* s :
        {"--foo=0", "--foo=f", "--foo=False", "--foo=N", "--foo=no"}) {
-    SetQuicheFlag(FLAGS_foo, true);
+    SetQuicheFlag(foo, true);
     const char* argv[]{"argv0", s};
     auto parse_result = QuicheParseCommandLineFlagsForTest(
         "usage message", std::size(argv), argv);
     EXPECT_FALSE(parse_result.exit_status.has_value());
     EXPECT_TRUE(parse_result.non_flag_args.empty());
-    EXPECT_FALSE(GetQuicheFlag(FLAGS_foo));
+    EXPECT_FALSE(GetQuicheFlag(foo));
   }
 
   for (const char* s : {"--foo=7", "--foo=abc", "--foo=trueish"}) {
-    SetQuicheFlag(FLAGS_foo, false);
+    SetQuicheFlag(foo, false);
     const char* argv[]{"argv0", s};
 
     testing::internal::CaptureStderr();
@@ -111,24 +111,24 @@
     EXPECT_THAT(captured_stderr,
                 testing::ContainsRegex("Invalid value.*for flag --foo"));
     EXPECT_TRUE(parse_result.non_flag_args.empty());
-    EXPECT_FALSE(GetQuicheFlag(FLAGS_foo));
+    EXPECT_FALSE(GetQuicheFlag(foo));
   }
 }
 
 TEST_F(QuicheCommandLineFlagTest, Int32Flag) {
   for (const int i : {-1, 0, 100, 38239832}) {
-    SetQuicheFlag(FLAGS_bar, 0);
+    SetQuicheFlag(bar, 0);
     std::string flag_str = base::StringPrintf("--bar=%d", i);
     const char* argv[]{"argv0", flag_str.c_str()};
     auto parse_result = QuicheParseCommandLineFlagsForTest(
         "usage message", std::size(argv), argv);
     EXPECT_FALSE(parse_result.exit_status.has_value());
     EXPECT_TRUE(parse_result.non_flag_args.empty());
-    EXPECT_EQ(i, GetQuicheFlag(FLAGS_bar));
+    EXPECT_EQ(i, GetQuicheFlag(bar));
   }
 
   for (const char* s : {"--bar", "--bar=a", "--bar=9999999999999"}) {
-    SetQuicheFlag(FLAGS_bar, 0);
+    SetQuicheFlag(bar, 0);
     const char* argv[]{"argv0", s};
 
     testing::internal::CaptureStderr();
@@ -141,30 +141,30 @@
     EXPECT_THAT(captured_stderr,
                 testing::ContainsRegex("Invalid value.*for flag --bar"));
     EXPECT_TRUE(parse_result.non_flag_args.empty());
-    EXPECT_EQ(0, GetQuicheFlag(FLAGS_bar));
+    EXPECT_EQ(0, GetQuicheFlag(bar));
   }
 }
 
 TEST_F(QuicheCommandLineFlagTest, StringFlag) {
   {
-    SetQuicheFlag(FLAGS_baz, "whee");
+    SetQuicheFlag(baz, "whee");
     const char* argv[]{"argv0", "--baz"};
     auto parse_result = QuicheParseCommandLineFlagsForTest(
         "usage message", std::size(argv), argv);
     EXPECT_FALSE(parse_result.exit_status.has_value());
     EXPECT_TRUE(parse_result.non_flag_args.empty());
-    EXPECT_EQ("", GetQuicheFlag(FLAGS_baz));
+    EXPECT_EQ("", GetQuicheFlag(baz));
   }
 
   for (const char* s : {"", "12345", "abcdefg"}) {
-    SetQuicheFlag(FLAGS_baz, "qux");
+    SetQuicheFlag(baz, "qux");
     std::string flag_str = base::StrCat({"--baz=", s});
     const char* argv[]{"argv0", flag_str.c_str()};
     auto parse_result = QuicheParseCommandLineFlagsForTest(
         "usage message", std::size(argv), argv);
     EXPECT_FALSE(parse_result.exit_status.has_value());
     EXPECT_TRUE(parse_result.non_flag_args.empty());
-    EXPECT_EQ(s, GetQuicheFlag(FLAGS_baz));
+    EXPECT_EQ(s, GetQuicheFlag(baz));
   }
 }
 
diff --git a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_default_proof_providers_impl.cc b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_default_proof_providers_impl.cc
index e8974bcf..3c7669335 100644
--- a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_default_proof_providers_impl.cc
+++ b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_default_proof_providers_impl.cc
@@ -45,7 +45,7 @@
 namespace {
 
 std::set<std::string> UnknownRootAllowlistForHost(std::string host) {
-  if (!GetQuicFlag(FLAGS_allow_unknown_root_cert)) {
+  if (!GetQuicFlag(allow_unknown_root_cert)) {
     return std::set<std::string>();
   }
   return {host};
@@ -88,12 +88,12 @@
       quic::QuicChromiumClock::GetInstance()));
   CHECK(proof_source->Initialize(
 #if BUILDFLAG(IS_WIN)
-      base::FilePath(base::UTF8ToWide(GetQuicFlag(FLAGS_certificate_file))),
-      base::FilePath(base::UTF8ToWide(GetQuicFlag(FLAGS_key_file))),
+      base::FilePath(base::UTF8ToWide(GetQuicFlag(certificate_file))),
+      base::FilePath(base::UTF8ToWide(GetQuicFlag(key_file))),
       base::FilePath()));
 #else
-      base::FilePath(GetQuicFlag(FLAGS_certificate_file)),
-      base::FilePath(GetQuicFlag(FLAGS_key_file)), base::FilePath()));
+      base::FilePath(GetQuicFlag(certificate_file)),
+      base::FilePath(GetQuicFlag(key_file)), base::FilePath()));
 #endif
   return std::move(proof_source);
 }
diff --git a/net/websockets/websocket_channel.cc b/net/websockets/websocket_channel.cc
index 9752280..da21937d 100644
--- a/net/websockets/websocket_channel.cc
+++ b/net/websockets/websocket_channel.cc
@@ -958,7 +958,7 @@
 
     DVLOG(1) << "Close frame with payload size " << size << " received "
              << "(the first byte is " << std::hex
-             << static_cast<int>(payload.data()[0]) << ")";
+             << static_cast<int>(payload[0]) << ")";
     *code = kWebSocketErrorProtocolError;
     *message =
         "Received a broken close frame containing an invalid size body.";
diff --git a/printing/test_printing_context.cc b/printing/test_printing_context.cc
index 0627fc7..d458ef1 100644
--- a/printing/test_printing_context.cc
+++ b/printing/test_printing_context.cc
@@ -147,6 +147,9 @@
     const std::u16string& document_name) {
   DCHECK(!in_print_job_);
 
+  if (!new_document_called_.is_null())
+    new_document_called_.Run();
+
   abort_printing_ = false;
   in_print_job_ = true;
 
diff --git a/printing/test_printing_context.h b/printing/test_printing_context.h
index 496152d..a17491a 100644
--- a/printing/test_printing_context.h
+++ b/printing/test_printing_context.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/containers/flat_map.h"
+#include "base/functional/callback_forward.h"
 #include "build/build_config.h"
 #include "printing/mojom/print.mojom.h"
 #include "printing/print_settings.h"
@@ -65,6 +66,10 @@
   // Enables tests to fail with a canceled error.
   void SetAskUserForSettingsCanceled() { ask_user_for_settings_cancel_ = true; }
 
+  void SetNewDocumentCalledClosure(base::RepeatingClosure closure) {
+    new_document_called_ = std::move(closure);
+  }
+
   // PrintingContext overrides:
   void AskUserForSettings(int max_pages,
                           bool has_selection,
@@ -101,6 +106,9 @@
 #endif
   bool render_document_blocked_by_permissions_ = false;
   bool document_done_blocked_by_permissions_ = false;
+
+  // Called every time `NewDocument` is called.
+  base::RepeatingClosure new_document_called_;
 };
 
 }  // namespace printing
diff --git a/services/audio/test/fake_consumer.cc b/services/audio/test/fake_consumer.cc
index 008718cd7..6bdc39639 100644
--- a/services/audio/test/fake_consumer.cc
+++ b/services/audio/test/fake_consumer.cc
@@ -131,18 +131,16 @@
       media::AudioParameters::AUDIO_PCM_LOW_LATENCY,
       media::ChannelLayoutConfig::Guess(recorded_channel_data_.size()),
       sample_rate_, recorded_channel_data_[0].size());
-  media::AudioDebugFileWriter writer(params);
   base::File file(path, base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_READ |
                             base::File::FLAG_WRITE);
   CHECK(file.IsValid());
-  writer.Start(std::move(file));
+  auto writer = media::AudioDebugFileWriter::Create(params, std::move(file));
   auto bus = media::AudioBus::Create(params);
   for (int i = 0; i < params.channels(); ++i) {
     memcpy(bus->channel(i), recorded_channel_data_[i].data(),
            sizeof(float) * recorded_channel_data_[i].size());
   }
-  writer.Write(std::move(bus));
-  writer.Stop();
+  writer->Write(std::move(bus));
 }
 
 }  // namespace audio
diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
index 67726d2..ae38707 100644
--- a/services/network/public/cpp/features.cc
+++ b/services/network/public/cpp/features.cc
@@ -17,13 +17,15 @@
 
 // Enables Expect CT reporting, which sends reports for opted-in sites
 // that don't serve sufficient Certificate Transparency information.
-const base::Feature kExpectCTReporting{"ExpectCTReporting",
-                                       base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kExpectCTReporting,
+             "ExpectCTReporting",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kNetworkErrorLogging{"NetworkErrorLogging",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kNetworkErrorLogging,
+             "NetworkErrorLogging",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kReporting{"Reporting", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kReporting, "Reporting", base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Based on the field trial parameters, this feature will override the value of
 // the maximum number of delayable requests allowed in flight. The number of
@@ -33,15 +35,17 @@
 // experiment configuration. Based on field trial parameters, this experiment
 // may also throttle delayable requests based on the number of non-delayable
 // requests in-flight times a weighting factor.
-const base::Feature kThrottleDelayable{"ThrottleDelayable",
-                                       base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kThrottleDelayable,
+             "ThrottleDelayable",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When kPriorityRequestsDelayableOnSlowConnections is enabled, HTTP
 // requests fetched from a SPDY/QUIC/H2 proxies can be delayed by the
 // ResourceScheduler just as HTTP/1.1 resources are. However, requests from such
 // servers are not subject to kMaxNumDelayableRequestsPerHostPerClient limit.
-const base::Feature kDelayRequestsOnMultiplexedConnections{
-    "DelayRequestsOnMultiplexedConnections", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kDelayRequestsOnMultiplexedConnections,
+             "DelayRequestsOnMultiplexedConnections",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When kPauseBrowserInitiatedHeavyTrafficForP2P is enabled, then a subset of
 // the browser initiated traffic may be paused if there is at least one active
@@ -49,64 +53,70 @@
 // intended to throttle only the browser initiated traffic that is expected to
 // be heavy (has large request/response sizes) when real time content might be
 // streaming over an active P2P connection.
-const base::Feature kPauseBrowserInitiatedHeavyTrafficForP2P{
-    "PauseBrowserInitiatedHeavyTrafficForP2P",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kPauseBrowserInitiatedHeavyTrafficForP2P,
+             "PauseBrowserInitiatedHeavyTrafficForP2P",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When kCORBProtectionSniffing is enabled CORB sniffs additional same-origin
 // resources if they look sensitive.
-const base::Feature kCORBProtectionSniffing{"CORBProtectionSniffing",
-                                            base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCORBProtectionSniffing,
+             "CORBProtectionSniffing",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // When kProactivelyThrottleLowPriorityRequests is enabled,
 // resource scheduler proactively throttles low priority requests to avoid
 // network contention with high priority requests that may arrive soon.
-const base::Feature kProactivelyThrottleLowPriorityRequests{
-    "ProactivelyThrottleLowPriorityRequests",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kProactivelyThrottleLowPriorityRequests,
+             "ProactivelyThrottleLowPriorityRequests",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables Cross-Origin Opener Policy (COOP).
 // https://gist.github.com/annevk/6f2dd8c79c77123f39797f6bdac43f3e
 // https://html.spec.whatwg.org/C/#cross-origin-opener-policy
 // Currently this feature is enabled for all platforms except WebView.
-const base::Feature kCrossOriginOpenerPolicy{"CrossOriginOpenerPolicy",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kCrossOriginOpenerPolicy,
+             "CrossOriginOpenerPolicy",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Shift's COOP's default from `unsafe-none` to `same-origin-allow-popups`.
 // https://github.com/mikewest/coop-by-default/
-const base::Feature kCrossOriginOpenerPolicyByDefault{
-    "CrossOriginOpenerPolicyByDefault", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCrossOriginOpenerPolicyByDefault,
+             "CrossOriginOpenerPolicyByDefault",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Introduce a new COOP value: restrict-properties. It restricts window
 // properties that can be accessed by other pages. This also grants
 // crossOriginIsolated if coupled with an appropriate COEP header.
 // This used solely for testing the process model and should not be enabled in
 // any production code. See https://crbug.com/1221127.
-const base::Feature kCoopRestrictProperties{"CoopRestrictProperties",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCoopRestrictProperties,
+             "CoopRestrictProperties",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables or defaults splittup up server (not proxy) entries in the
 // HttpAuthCache.
-const base::Feature kSplitAuthCacheByNetworkIsolationKey{
-    "SplitAuthCacheByNetworkIsolationKey", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSplitAuthCacheByNetworkIsolationKey,
+             "SplitAuthCacheByNetworkIsolationKey",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enable usage of hardcoded DoH upgrade mapping for use in automatic mode.
-const base::Feature kDnsOverHttpsUpgrade {
-  "DnsOverHttpsUpgrade",
+BASE_FEATURE(kDnsOverHttpsUpgrade,
+             "DnsOverHttpsUpgrade",
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
     BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
-      base::FEATURE_ENABLED_BY_DEFAULT
+             base::FEATURE_ENABLED_BY_DEFAULT
 #else
-      base::FEATURE_DISABLED_BY_DEFAULT
+             base::FEATURE_DISABLED_BY_DEFAULT
 #endif
-};
+);
 
 // If this feature is enabled, the mDNS responder service responds to queries
 // for TXT records associated with
 // "Generated-Names._mdns_name_generator._udp.local" with a list of generated
 // mDNS names (random UUIDs) in the TXT record data.
-const base::Feature kMdnsResponderGeneratedNameListing{
-    "MdnsResponderGeneratedNameListing", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kMdnsResponderGeneratedNameListing,
+             "MdnsResponderGeneratedNameListing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Switches Cross-Origin Read Blocking (CORB) to use an early implementation of
 // Opaque Response Blocking (ORB, aka CORB++) behind the scenes.
@@ -121,21 +131,22 @@
 //   //services/network/public/cpp/corb/README.md
 //
 // Implementing ORB in Chromium is tracked in https://crbug.com/1178928
-const base::Feature kOpaqueResponseBlockingV01{
-    "OpaqueResponseBlockingV01", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOpaqueResponseBlockingV01,
+             "OpaqueResponseBlockingV01",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables ORB blocked responses being treated as errors (according to the spec)
 // rather than the current, CORB-style handling of injecting an empty response.
 // This is ORB v0.2.
 // This should only be enabled when ORB v0.1 is, too.
-const base::Feature kOpaqueResponseBlockingV02{
-    "OpaqueResponseBlockingV02", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOpaqueResponseBlockingV02,
+             "OpaqueResponseBlockingV02",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Enables preprocessing requests with the Trust Tokens API Fetch flags set,
 // and handling their responses, according to the protocol.
 // (See https://github.com/WICG/trust-token-api.)
-const base::Feature kTrustTokens{"TrustTokens",
-                                 base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kTrustTokens, "TrustTokens", base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Determines which Trust Tokens operations require the TrustTokens origin trial
 // active in order to be used. This is runtime-configurable so that the Trust
@@ -176,20 +187,22 @@
 const base::FeatureParam<bool> kPlatformProvidedTrustTokenIssuance{
     &kTrustTokens, "PlatformProvidedTrustTokenIssuance", false};
 
-const base::Feature kWebSocketReassembleShortMessages{
-    "WebSocketReassembleShortMessages", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kWebSocketReassembleShortMessages,
+             "WebSocketReassembleShortMessages",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Enable support for ACCEPT_CH H2/3 frame as part of Client Hint Reliability.
 // See:
 // https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability-02#section-4.3
-const base::Feature kAcceptCHFrame{"AcceptCHFrame",
-                                   base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kAcceptCHFrame, "AcceptCHFrame", base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSCTAuditingRetryReports{"SCTAuditingRetryReports",
-                                             base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kSCTAuditingRetryReports,
+             "SCTAuditingRetryReports",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kSCTAuditingPersistReports{
-    "SCTAuditingPersistReports", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kSCTAuditingPersistReports,
+             "SCTAuditingPersistReports",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 namespace {
 // The default Mojo ring buffer size, used to send the content body.
@@ -238,39 +251,47 @@
 }
 
 // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
-const base::Feature kCorsNonWildcardRequestHeadersSupport{
-    "CorsNonWildcardRequestHeadersSupport", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCorsNonWildcardRequestHeadersSupport,
+             "CorsNonWildcardRequestHeadersSupport",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Whether the sync client optimization is used for communication between the
 // CorsURLLoader and URLLoader.
-const base::Feature kURLLoaderSyncClient{"URLLoaderSyncClient",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kURLLoaderSyncClient,
+             "URLLoaderSyncClient",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Don't wait for database write before responding to
 // RestrictedCookieManager::SetCookieFromString.
-const base::Feature kFasterSetCookie{"FasterSetCookie",
-                                     base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kFasterSetCookie,
+             "FasterSetCookie",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Allow batching SimpleURLLoaders when the underlying network state is
 // inactive.
-const base::Feature kBatchSimpleURLLoader{"BatchSimpleURLLoader",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kBatchSimpleURLLoader,
+             "BatchSimpleURLLoader",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kNetworkServiceMemoryCache{
-    "NetworkServiceMemoryCache", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kNetworkServiceMemoryCache,
+             "NetworkServiceMemoryCache",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Do not send TLS client certificates in CORS preflight. Omit all client certs
 // and continue the handshake without sending one if requested.
-const base::Feature kOmitCorsClientCert{"OmitCorsClientCert",
-                                        base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kOmitCorsClientCert,
+             "OmitCorsClientCert",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Allow pervasive payloads to use a single-keyed cache.
-const base::Feature kCacheTransparency{"CacheTransparency",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kCacheTransparency,
+             "CacheTransparency",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Load Pervasive Payloads List for Cache Transparency.
-const base::Feature kPervasivePayloadsList{"PervasivePayloadsList",
-                                           base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPervasivePayloadsList,
+             "PervasivePayloadsList",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // The list of pervasive payloads. A comma separated list starting with a
 // version number, followed one or more pairs of URL and checksum. The version
@@ -282,23 +303,26 @@
 
 // Enables support for the `Variants` response header and reduce
 // accept-language. https://github.com/Tanych/accept-language
-const base::Feature kReduceAcceptLanguage{"ReduceAcceptLanguage",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kReduceAcceptLanguage,
+             "ReduceAcceptLanguage",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Disable ResourceScheduler.
-const base::Feature kDisableResourceScheduler{
-    "DisableResourceScheduler", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kDisableResourceScheduler,
+             "DisableResourceScheduler",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Reduce PNA preflight response waiting time to 200ms.
 // See: https://wicg.github.io/private-network-access/#cors-preflight
-const base::Feature kPrivateNetworkAccessPreflightShortTimeout = {
-    "PrivateNetworkAccessPreflightReduceTimeout",
-    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kPrivateNetworkAccessPreflightShortTimeout,
+             "PrivateNetworkAccessPreflightReduceTimeout",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 // Handle the Link header DNS prefetches and preconnects in the network
 // service instead of through the renderer process.
-const base::Feature kPreconnectInNetworkService = {
-    "PreconnectInNetworkService", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kPreconnectInNetworkService,
+             "PreconnectInNetworkService",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 }  // namespace features
 }  // namespace network
diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
index 9d172c6..d93f6083 100644
--- a/services/network/public/cpp/features.h
+++ b/services/network/public/cpp/features.h
@@ -13,41 +13,30 @@
 namespace network {
 namespace features {
 
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kExpectCTReporting);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kNetworkErrorLogging);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kReporting);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kThrottleDelayable);
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kExpectCTReporting;
+BASE_DECLARE_FEATURE(kDelayRequestsOnMultiplexedConnections);
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kNetworkErrorLogging;
+BASE_DECLARE_FEATURE(kPauseBrowserInitiatedHeavyTrafficForP2P);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kCORBProtectionSniffing);
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kReporting;
+BASE_DECLARE_FEATURE(kProactivelyThrottleLowPriorityRequests);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kCrossOriginOpenerPolicy);
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kThrottleDelayable;
+BASE_DECLARE_FEATURE(kCrossOriginOpenerPolicyByDefault);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kCoopRestrictProperties);
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kDelayRequestsOnMultiplexedConnections;
+BASE_DECLARE_FEATURE(kSplitAuthCacheByNetworkIsolationKey);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kDnsOverHttpsUpgrade);
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kPauseBrowserInitiatedHeavyTrafficForP2P;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kCORBProtectionSniffing;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kProactivelyThrottleLowPriorityRequests;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kCrossOriginOpenerPolicy;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kCrossOriginOpenerPolicyByDefault;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kCoopRestrictProperties;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kSplitAuthCacheByNetworkIsolationKey;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kDnsOverHttpsUpgrade;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kMdnsResponderGeneratedNameListing;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kOpaqueResponseBlockingV01;
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kOpaqueResponseBlockingV02;
+BASE_DECLARE_FEATURE(kMdnsResponderGeneratedNameListing);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kOpaqueResponseBlockingV01);
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kOpaqueResponseBlockingV02);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kTrustTokens;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kTrustTokens);
 
 enum class TrustTokenOriginTrialSpec {
   // See the .cc file for definitions.
@@ -62,16 +51,13 @@
 extern const base::FeatureParam<bool> kPlatformProvidedTrustTokenIssuance;
 
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kWebSocketReassembleShortMessages;
+BASE_DECLARE_FEATURE(kWebSocketReassembleShortMessages);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kAcceptCHFrame;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kAcceptCHFrame);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kSCTAuditingRetryReports;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kSCTAuditingRetryReports);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kSCTAuditingPersistReports;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kSCTAuditingPersistReports);
 
 enum class DataPipeAllocationSize {
   kDefaultSizeOnly,
@@ -86,44 +72,34 @@
 extern uint32_t GetLoaderChunkSize();
 
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kCorsNonWildcardRequestHeadersSupport;
+BASE_DECLARE_FEATURE(kCorsNonWildcardRequestHeadersSupport);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kURLLoaderSyncClient;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kURLLoaderSyncClient);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kFasterSetCookie;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kFasterSetCookie);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kBatchSimpleURLLoader;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kBatchSimpleURLLoader);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kNetworkServiceMemoryCache;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kNetworkServiceMemoryCache);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kOmitCorsClientCert;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kOmitCorsClientCert);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kCacheTransparency;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kCacheTransparency);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kPervasivePayloadsList;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kPervasivePayloadsList);
 
 COMPONENT_EXPORT(NETWORK_CPP)
 extern const base::FeatureParam<std::string>
     kCacheTransparencyPervasivePayloads;
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kReduceAcceptLanguage;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kReduceAcceptLanguage);
+
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kDisableResourceScheduler);
 
 COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kDisableResourceScheduler;
+BASE_DECLARE_FEATURE(kPrivateNetworkAccessPreflightShortTimeout);
 
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kPrivateNetworkAccessPreflightShortTimeout;
-
-COMPONENT_EXPORT(NETWORK_CPP)
-extern const base::Feature kPreconnectInNetworkService;
+COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kPreconnectInNetworkService);
 
 }  // namespace features
 }  // namespace network
diff --git a/services/network/public/mojom/network_interface.mojom b/services/network/public/mojom/network_interface.mojom
index cab2f8a..0b2269b 100644
--- a/services/network/public/mojom/network_interface.mojom
+++ b/services/network/public/mojom/network_interface.mojom
@@ -16,5 +16,5 @@
   uint32 prefix_length;
   int32 ip_address_attributes;
   // Only EUI-48 addresses supported.
-  array<uint8>? mac_address;
+  array<uint8, 6>? mac_address;
 };
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index c9bcb0f5..ecf4aae 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -59760,11 +59760,6 @@
       }
     ]
   },
-  "ios-simulator-cronet (reclient shadow)": {
-    "additional_compile_targets": [
-      "cronet_test"
-    ]
-  },
   "ios-simulator-multi-window": {
     "isolated_scripts": [
       {
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json
index 2a790cb..17688a6 100644
--- a/testing/buildbot/chromium.mac.json
+++ b/testing/buildbot/chromium.mac.json
@@ -10960,11 +10960,6 @@
       "all"
     ]
   },
-  "ios-device (reclient shadow)": {
-    "additional_compile_targets": [
-      "all"
-    ]
-  },
   "ios-simulator": {
     "additional_compile_targets": [
       "all"
diff --git a/testing/buildbot/filters/pixel_tests.filter b/testing/buildbot/filters/pixel_tests.filter
index c2a7efe9..63584d1 100644
--- a/testing/buildbot/filters/pixel_tests.filter
+++ b/testing/buildbot/filters/pixel_tests.filter
@@ -52,6 +52,7 @@
 PageInfoBubbleViewDialogBrowserTest.*
 PageInfoBubbleViewPrivacySandboxDialogBrowserTest.*
 PageInfoBubbleViewHistoryDialogBrowserTest.*
+PageInfoBubbleViewCookiesSubpageBrowserTest.*
 *PasswordBubbleBrowserTest.*
 PasswordReuseModalWarningTest.*
 PermissionRequestChipDialogBrowserTest.*
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 949972b0..3f1694c8 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -3494,19 +3494,6 @@
           'isolated_scripts': 'ios_simulator_cronet_tests',
         }
       },
-      'ios-simulator-cronet (reclient shadow)': {
-        'additional_compile_targets': [
-          'cronet_test',
-        ],
-        'mixins': [
-          'has_native_resultdb_integration',
-          'mac_12_x64',
-          'mac_toolchain',
-          'out_dir_arg',
-          'xcode_14_main',
-          'xctest',
-        ]
-      },
       'ios-simulator-multi-window': {
         'mixins': [
           'has_native_resultdb_integration',
@@ -5317,11 +5304,6 @@
           'all',
         ],
       },
-      'ios-device (reclient shadow)': {
-        'additional_compile_targets': [
-          'all',
-        ],
-      },
       'ios-simulator': {
         'additional_compile_targets': [
           'all',
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index c6a8e903..7a70bbdc 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -3545,6 +3545,25 @@
             ]
         }
     ],
+    "DesktopNtpRemoveScrim": [
+        {
+            "platforms": [
+                "chromeos",
+                "chromeos_lacros",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "NtpRemoveScrim",
+                    "enable_features": [
+                        "NtpRemoveScrim"
+                    ]
+                }
+            ]
+        }
+    ],
     "DesktopOmniboxBookmarkPaths": [
         {
             "platforms": [
@@ -6777,6 +6796,27 @@
             ]
         }
     ],
+    "NoWorkerThreadReclaim": [
+        {
+            "platforms": [
+                "android",
+                "android_webview",
+                "chromeos",
+                "ios",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "NoWorkerThreadReclaim"
+                    ]
+                }
+            ]
+        }
+    ],
     "NormalPriorityImageDecoding": [
         {
             "platforms": [
@@ -9755,6 +9795,25 @@
             ]
         }
     ],
+    "SyncPromoAfterSigninInterceptStudy": [
+        {
+            "platforms": [
+                "chromeos_lacros",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "EnabledWithSyncPromo",
+                    "enable_features": [
+                        "SigninInterceptBubbleV2",
+                        "SyncPromoAfterSigninIntercept"
+                    ]
+                }
+            ]
+        }
+    ],
     "SyncTrustedVaultPassphraseOptInUI": [
         {
             "platforms": [
diff --git a/third_party/abseil-cpp/symbols_arm64_rel.def b/third_party/abseil-cpp/symbols_arm64_rel.def
index 9325b08..4b1c0f3 100644
--- a/third_party/abseil-cpp/symbols_arm64_rel.def
+++ b/third_party/abseil-cpp/symbols_arm64_rel.def
@@ -748,7 +748,6 @@
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@000@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@00@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@0@Z
-    ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@@Z
     ?StrError@base_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@H@Z
     ?StrReplaceAll@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@4@@Z
     ?StrReplaceAll@absl@@YAHV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@3@@Z
diff --git a/third_party/abseil-cpp/symbols_x64_rel.def b/third_party/abseil-cpp/symbols_x64_rel.def
index 607c953d8..2d1ccb0 100644
--- a/third_party/abseil-cpp/symbols_x64_rel.def
+++ b/third_party/abseil-cpp/symbols_x64_rel.def
@@ -741,7 +741,6 @@
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@000@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@00@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@0@Z
-    ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@@Z
     ?StrError@base_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@H@Z
     ?StrReplaceAll@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@4@@Z
     ?StrReplaceAll@absl@@YAHV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@3@@Z
diff --git a/third_party/abseil-cpp/symbols_x64_rel_asan.def b/third_party/abseil-cpp/symbols_x64_rel_asan.def
index 51da597..58297dd 100644
--- a/third_party/abseil-cpp/symbols_x64_rel_asan.def
+++ b/third_party/abseil-cpp/symbols_x64_rel_asan.def
@@ -746,7 +746,6 @@
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@000@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@00@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@0@Z
-    ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBVAlphaNum@1@@Z
     ?StrError@base_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@H@Z
     ?StrReplaceAll@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@4@@Z
     ?StrReplaceAll@absl@@YAHV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@3@@Z
diff --git a/third_party/abseil-cpp/symbols_x86_rel.def b/third_party/abseil-cpp/symbols_x86_rel.def
index 6070555..1f11b6a 100644
--- a/third_party/abseil-cpp/symbols_x86_rel.def
+++ b/third_party/abseil-cpp/symbols_x86_rel.def
@@ -744,7 +744,6 @@
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@ABVAlphaNum@1@000@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@ABVAlphaNum@1@00@Z
     ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@ABVAlphaNum@1@0@Z
-    ?StrCat@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@ABVAlphaNum@1@@Z
     ?StrError@base_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@H@Z
     ?StrReplaceAll@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@4@@Z
     ?StrReplaceAll@absl@@YAHV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@PAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@3@@Z
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index 2264b54..783e1ff 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -1568,7 +1568,7 @@
 
 BASE_FEATURE(kWebRtcMetronome,
              "WebRtcMetronome",
-             base::FEATURE_ENABLED_BY_DEFAULT);
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 BASE_FEATURE(kSyncAccessHandleAllSyncSurface,
              "SyncAccessHandleAllSyncSurface",
diff --git a/third_party/blink/public/web/modules/media/audio/audio_device_factory.h b/third_party/blink/public/web/modules/media/audio/audio_device_factory.h
index 571e7ea..eb48da1 100644
--- a/third_party/blink/public/web/modules/media/audio/audio_device_factory.h
+++ b/third_party/blink/public/web/modules/media/audio/audio_device_factory.h
@@ -25,6 +25,7 @@
 
 class AudioRendererMixerManager;
 class AudioRendererSinkCache;
+class WebLocalFrame;
 
 // A factory for creating AudioRendererSinks and AudioCapturerSources. There is
 // a global factory function that can be installed for the purposes of testing
@@ -73,7 +74,7 @@
   // |frame_token| refers to the RenderFrame containing the entity
   // consuming the audio.
   virtual scoped_refptr<media::AudioCapturerSource> NewAudioCapturerSource(
-      const LocalFrameToken& frame_token,
+      WebLocalFrame* web_frame,
       const media::AudioSourceParameters& params);
 
  protected:
diff --git a/third_party/blink/public/web/modules/media/audio/audio_input_ipc_factory.h b/third_party/blink/public/web/modules/media/audio/audio_input_ipc_factory.h
index a40e1f8..66fb608 100644
--- a/third_party/blink/public/web/modules/media/audio/audio_input_ipc_factory.h
+++ b/third_party/blink/public/web/modules/media/audio/audio_input_ipc_factory.h
@@ -25,21 +25,15 @@
 // This is a thread-safe factory for AudioInputIPC objects.
 class BLINK_MODULES_EXPORT AudioInputIPCFactory {
  public:
-  explicit AudioInputIPCFactory(
-      scoped_refptr<base::SequencedTaskRunner> main_task_runner);
-  AudioInputIPCFactory(const AudioInputIPCFactory&) = delete;
-  AudioInputIPCFactory& operator=(const AudioInputIPCFactory&) = delete;
-  ~AudioInputIPCFactory();
-
-  static AudioInputIPCFactory& GetInstance();
-
-  // The returned object may only be used on io_task_runner().
-  std::unique_ptr<media::AudioInputIPC> CreateAudioInputIPC(
+  // This method can be called from any thread but requires a `frame_token`
+  // and a `main_task_runner` so that the associated WebLocalFrame can be
+  // found to asssocaite the audio channel with the frame.
+  static std::unique_ptr<media::AudioInputIPC> CreateAudioInputIPC(
       const blink::LocalFrameToken& frame_token,
-      const media::AudioSourceParameters& source_params) const;
+      scoped_refptr<base::SequencedTaskRunner> main_task_runner,
+      const media::AudioSourceParameters& source_params);
 
- private:
-  const scoped_refptr<base::SequencedTaskRunner> main_task_runner_;
+  AudioInputIPCFactory() = delete;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/public/web/web_ax_context.h b/third_party/blink/public/web/web_ax_context.h
index 56bcb39a..1f4a60e 100644
--- a/third_party/blink/public/web/web_ax_context.h
+++ b/third_party/blink/public/web/web_ax_context.h
@@ -24,9 +24,6 @@
   explicit WebAXContext(WebDocument document, const ui::AXMode& mode);
   ~WebAXContext();
 
-  // Returns the root element of the document's accessibility tree.
-  WebAXObject Root() const;
-
   const ui::AXMode& GetAXMode() const;
 
   void SetAXMode(const ui::AXMode&) const;
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
index 103989b..da4244c7 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -131,7 +131,6 @@
 class WebView;
 struct FramePolicy;
 struct Impression;
-struct MobileFriendliness;
 struct WebConsoleMessage;
 struct ContextMenuData;
 struct WebPictureInPictureWindowOptions;
@@ -739,9 +738,6 @@
   // compositor (thread) and submitted to the display compositor.
   virtual void DidCommitAndDrawCompositorFrame() {}
 
-  // Notification that MobileFriendliness metrics changed.
-  virtual void DidChangeMobileFriendliness(const MobileFriendliness&) {}
-
   // Inform the widget that it was hidden.
   virtual void WasHidden() {}
 
diff --git a/third_party/blink/public/web/web_local_frame_observer.h b/third_party/blink/public/web/web_local_frame_observer.h
index 14cdc1f..ab0cb12 100644
--- a/third_party/blink/public/web/web_local_frame_observer.h
+++ b/third_party/blink/public/web/web_local_frame_observer.h
@@ -13,6 +13,7 @@
 class WebFormElement;
 class WebLocalFrame;
 class WebLocalFrameImpl;
+struct MobileFriendliness;
 
 // Base class for objects that want to get notified of changes to the local
 // frame.
@@ -25,6 +26,9 @@
   // hasn't yet had a chance to run (and possibly alter/interrupt the submit.)
   virtual void WillSendSubmitEvent(const WebFormElement&) {}
 
+  // Called when a page's mobile friendliness changed.
+  virtual void DidChangeMobileFriendliness(const MobileFriendliness&) {}
+
   // Retrieves the WebLocalFrame that is being observed. Can be null.
   WebLocalFrame* GetWebLocalFrame() const;
 
diff --git a/third_party/blink/renderer/core/css/css_default_style_sheets.cc b/third_party/blink/renderer/core/css/css_default_style_sheets.cc
index 151300b..ff32c44f 100644
--- a/third_party/blink/renderer/core/css/css_default_style_sheets.cc
+++ b/third_party/blink/renderer/core/css/css_default_style_sheets.cc
@@ -431,13 +431,13 @@
 void CSSDefaultStyleSheets::CollectFeaturesTo(const Document& document,
                                               RuleFeatureSet& features) {
   if (DefaultHtmlStyle())
-    features.Add(DefaultHtmlStyle()->Features());
+    features.Merge(DefaultHtmlStyle()->Features());
   if (DefaultMediaControlsStyle())
-    features.Add(DefaultMediaControlsStyle()->Features());
+    features.Merge(DefaultMediaControlsStyle()->Features());
   if (DefaultMathMLStyle())
-    features.Add(DefaultMathMLStyle()->Features());
+    features.Merge(DefaultMathMLStyle()->Features());
   if (document.IsViewSource() && DefaultViewSourceStyle())
-    features.Add(DefaultViewSourceStyle()->Features());
+    features.Merge(DefaultViewSourceStyle()->Features());
 }
 
 void CSSDefaultStyleSheets::Trace(Visitor* visitor) const {
diff --git a/third_party/blink/renderer/core/css/css_global_rule_set.cc b/third_party/blink/renderer/core/css/css_global_rule_set.cc
index 995afca..90b9a4eab 100644
--- a/third_party/blink/renderer/core/css/css_global_rule_set.cc
+++ b/third_party/blink/renderer/core/css/css_global_rule_set.cc
@@ -44,7 +44,7 @@
   default_style_sheets.CollectFeaturesTo(document, features_);
 
   if (watched_selectors_rule_set_)
-    features_.Add(watched_selectors_rule_set_->Features());
+    features_.Merge(watched_selectors_rule_set_->Features());
 
   document.GetStyleEngine().CollectFeaturesTo(features_);
 }
diff --git a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
index e0ee6ff..6afc705f 100644
--- a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
+++ b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
@@ -101,8 +101,7 @@
       *style, nullptr /* layout_object */, false /* allow_visited_style */);
 }
 
-void ComputedStylePropertyMap::ForEachProperty(
-    const IterationCallback& callback) {
+void ComputedStylePropertyMap::ForEachProperty(IterationFunction visitor) {
   const ComputedStyle* style = UpdateStyle();
   if (!style)
     return;
@@ -135,7 +134,7 @@
   });
 
   for (const auto& value : values)
-    callback(value.first, *value.second);
+    visitor(value.first, *value.second);
 }
 
 String ComputedStylePropertyMap::SerializationForShorthand(
diff --git a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.h b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.h
index c918a43..37a6054 100644
--- a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.h
+++ b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.h
@@ -49,7 +49,7 @@
  protected:
   const CSSValue* GetProperty(CSSPropertyID) const override;
   const CSSValue* GetCustomProperty(const AtomicString&) const override;
-  void ForEachProperty(const IterationCallback&) override;
+  void ForEachProperty(IterationFunction visitor) override;
 
   String SerializationForShorthand(const CSSProperty&) const final;
 
diff --git a/third_party/blink/renderer/core/css/cssom/declared_style_property_map.cc b/third_party/blink/renderer/core/css/cssom/declared_style_property_map.cc
index 15782f4..e5e7e15 100644
--- a/third_party/blink/renderer/core/css/cssom/declared_style_property_map.cc
+++ b/third_party/blink/renderer/core/css/cssom/declared_style_property_map.cc
@@ -93,14 +93,13 @@
   GetStyleRule()->MutableProperties().Clear();
 }
 
-void DeclaredStylePropertyMap::ForEachProperty(
-    const IterationCallback& callback) {
+void DeclaredStylePropertyMap::ForEachProperty(IterationFunction visitor) {
   if (!GetStyleRule())
     return;
   const CSSPropertyValueSet& declared_style_set = GetStyleRule()->Properties();
   for (unsigned i = 0; i < declared_style_set.PropertyCount(); i++) {
     const auto& property_reference = declared_style_set.PropertyAt(i);
-    callback(property_reference.Name(), property_reference.Value());
+    visitor(property_reference.Name(), property_reference.Value());
   }
 }
 
diff --git a/third_party/blink/renderer/core/css/cssom/declared_style_property_map.h b/third_party/blink/renderer/core/css/cssom/declared_style_property_map.h
index f50edf4..6b3277bf 100644
--- a/third_party/blink/renderer/core/css/cssom/declared_style_property_map.h
+++ b/third_party/blink/renderer/core/css/cssom/declared_style_property_map.h
@@ -37,7 +37,7 @@
  protected:
   const CSSValue* GetProperty(CSSPropertyID) const override;
   const CSSValue* GetCustomProperty(const AtomicString&) const override;
-  void ForEachProperty(const IterationCallback&) override;
+  void ForEachProperty(IterationFunction visitor) override;
   void SetProperty(CSSPropertyID, const CSSValue&) override;
   bool SetShorthandProperty(CSSPropertyID,
                             const String&,
diff --git a/third_party/blink/renderer/core/css/cssom/inline_style_property_map.cc b/third_party/blink/renderer/core/css/cssom/inline_style_property_map.cc
index 258e66e9..a59c7f0 100644
--- a/third_party/blink/renderer/core/css/cssom/inline_style_property_map.cc
+++ b/third_party/blink/renderer/core/css/cssom/inline_style_property_map.cc
@@ -72,13 +72,12 @@
   owner_element_->RemoveAllInlineStyleProperties();
 }
 
-void InlineStylePropertyMap::ForEachProperty(
-    const IterationCallback& callback) {
+void InlineStylePropertyMap::ForEachProperty(IterationFunction visitor) {
   CSSPropertyValueSet& inline_style_set =
       owner_element_->EnsureMutableInlineStyle();
   for (unsigned i = 0; i < inline_style_set.PropertyCount(); i++) {
     const auto& property_reference = inline_style_set.PropertyAt(i);
-    callback(property_reference.Name(), property_reference.Value());
+    visitor(property_reference.Name(), property_reference.Value());
   }
 }
 
diff --git a/third_party/blink/renderer/core/css/cssom/inline_style_property_map.h b/third_party/blink/renderer/core/css/cssom/inline_style_property_map.h
index 3ae702e..8faf606 100644
--- a/third_party/blink/renderer/core/css/cssom/inline_style_property_map.h
+++ b/third_party/blink/renderer/core/css/cssom/inline_style_property_map.h
@@ -28,7 +28,7 @@
  protected:
   const CSSValue* GetProperty(CSSPropertyID) const override;
   const CSSValue* GetCustomProperty(const AtomicString&) const override;
-  void ForEachProperty(const IterationCallback&) override;
+  void ForEachProperty(IterationFunction visitor) override;
   void SetProperty(CSSPropertyID, const CSSValue&) override;
   bool SetShorthandProperty(CSSPropertyID,
                             const String&,
diff --git a/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.cc b/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.cc
index d2f145c..4d199573 100644
--- a/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.cc
+++ b/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.cc
@@ -92,7 +92,7 @@
 }
 
 void PrepopulatedComputedStylePropertyMap::ForEachProperty(
-    const IterationCallback& callback) {
+    IterationFunction visitor) {
   // Have to sort by all properties by code point, so we have to store
   // them in a buffer first.
   HeapVector<std::pair<CSSPropertyName, Member<const CSSValue>>> values;
@@ -112,7 +112,7 @@
   });
 
   for (const auto& value : values)
-    callback(value.first, *value.second);
+    visitor(value.first, *value.second);
 }
 
 String PrepopulatedComputedStylePropertyMap::SerializationForShorthand(
diff --git a/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.h b/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.h
index db18209f..870681d3b8 100644
--- a/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.h
+++ b/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map.h
@@ -48,7 +48,7 @@
  protected:
   const CSSValue* GetProperty(CSSPropertyID) const override;
   const CSSValue* GetCustomProperty(const AtomicString&) const override;
-  void ForEachProperty(const IterationCallback&) override;
+  void ForEachProperty(IterationFunction visitor) override;
 
   String SerializationForShorthand(const CSSProperty&) const override;
 
diff --git a/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.h b/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.h
index a54d3cb..06bfbfa 100644
--- a/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.h
+++ b/third_party/blink/renderer/core/css/cssom/style_property_map_read_only_main_thread.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSSOM_STYLE_PROPERTY_MAP_READ_ONLY_MAIN_THREAD_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSSOM_STYLE_PROPERTY_MAP_READ_ONLY_MAIN_THREAD_H_
 
+#include "base/functional/function_ref.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/css/cssom/style_property_map_read_only.h"
 
@@ -42,9 +43,9 @@
   virtual const CSSValue* GetProperty(CSSPropertyID) const = 0;
   virtual const CSSValue* GetCustomProperty(const AtomicString&) const = 0;
 
-  using IterationCallback =
-      std::function<void(const CSSPropertyName&, const CSSValue&)>;
-  virtual void ForEachProperty(const IterationCallback&) = 0;
+  using IterationFunction =
+      base::FunctionRef<void(const CSSPropertyName&, const CSSValue&)>;
+  virtual void ForEachProperty(IterationFunction visitor) = 0;
 
   virtual String SerializationForShorthand(const CSSProperty&) const = 0;
 
diff --git a/third_party/blink/renderer/core/css/resolver/scoped_style_resolver.cc b/third_party/blink/renderer/core/css/resolver/scoped_style_resolver.cc
index b0fab7fa..0d23b43 100644
--- a/third_party/blink/renderer/core/css/resolver/scoped_style_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/scoped_style_resolver.cc
@@ -128,7 +128,7 @@
     StyleSheetContents* contents = sheet->Contents();
     if (contents->HasOneClient() ||
         visited_shared_style_sheet_contents.insert(contents).is_new_entry)
-      features.Add(contents->GetRuleSet().Features());
+      features.Merge(contents->GetRuleSet().Features());
   }
 }
 
diff --git a/third_party/blink/renderer/core/css/rule_feature_set.cc b/third_party/blink/renderer/core/css/rule_feature_set.cc
index 92243c2..2d18f721 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set.cc
+++ b/third_party/blink/renderer/core/css/rule_feature_set.cc
@@ -383,7 +383,7 @@
   return EnsureMutableInvalidationSet(type, position, invalidation_set);
 }
 
-void RuleFeatureSet::AddInvalidationSet(
+void RuleFeatureSet::MergeInvalidationSet(
     InvalidationSetMap& map,
     const AtomicString& key,
     scoped_refptr<InvalidationSet> invalidation_set) {
@@ -400,7 +400,7 @@
   }
 }
 
-void RuleFeatureSet::AddInvalidationSet(
+void RuleFeatureSet::MergeInvalidationSet(
     PseudoTypeInvalidationSetMap& map,
     CSSSelector::PseudoType key,
     scoped_refptr<InvalidationSet> invalidation_set) {
@@ -703,13 +703,12 @@
   return nullptr;
 }
 
-void RuleFeatureSet::UpdateInvalidationSets(const RuleData* rule_data,
+void RuleFeatureSet::UpdateInvalidationSets(const CSSSelector& selector,
                                             const StyleScope* style_scope) {
   InvalidationSetFeatures features;
   FeatureInvalidationType feature_invalidation_type =
-      UpdateInvalidationSetsForComplex(rule_data->Selector(), style_scope,
-                                       features, kSubject,
-                                       CSSSelector::kPseudoUnknown);
+      UpdateInvalidationSetsForComplex(selector, style_scope, features,
+                                       kSubject, CSSSelector::kPseudoUnknown);
   if (feature_invalidation_type ==
       FeatureInvalidationType::kRequiresSubtreeInvalidation) {
     features.invalidation_flags.SetWholeSubtreeInvalid(true);
@@ -1552,13 +1551,13 @@
   }
 }
 
-RuleFeatureSet::SelectorPreMatch RuleFeatureSet::CollectFeaturesFromRuleData(
-    const RuleData* rule_data,
+RuleFeatureSet::SelectorPreMatch RuleFeatureSet::CollectFeaturesFromSelector(
+    const CSSSelector& selector,
     const StyleScope* style_scope) {
   CHECK(is_alive_);
   FeatureMetadata metadata;
   const unsigned max_direct_adjacent_selectors = 0;
-  if (CollectFeaturesFromSelector(rule_data->Selector(), metadata,
+  if (CollectFeaturesFromSelector(selector, metadata,
                                   max_direct_adjacent_selectors) ==
       kSelectorNeverMatches) {
     return kSelectorNeverMatches;
@@ -1566,7 +1565,7 @@
 
   metadata_.Add(metadata);
 
-  UpdateInvalidationSets(rule_data, style_scope);
+  UpdateInvalidationSets(selector, style_scope);
   return kSelectorMayMatch;
 }
 
@@ -1675,19 +1674,19 @@
          invalidates_parts == other.invalidates_parts;
 }
 
-void RuleFeatureSet::Add(const RuleFeatureSet& other) {
+void RuleFeatureSet::Merge(const RuleFeatureSet& other) {
   CHECK(is_alive_);
   CHECK(other.is_alive_);
   CHECK_NE(&other, this);
   for (const auto& entry : other.class_invalidation_sets_)
-    AddInvalidationSet(class_invalidation_sets_, entry.key, entry.value);
+    MergeInvalidationSet(class_invalidation_sets_, entry.key, entry.value);
   for (const auto& entry : other.attribute_invalidation_sets_)
-    AddInvalidationSet(attribute_invalidation_sets_, entry.key, entry.value);
+    MergeInvalidationSet(attribute_invalidation_sets_, entry.key, entry.value);
   for (const auto& entry : other.id_invalidation_sets_)
-    AddInvalidationSet(id_invalidation_sets_, entry.key, entry.value);
+    MergeInvalidationSet(id_invalidation_sets_, entry.key, entry.value);
   for (const auto& entry : other.pseudo_invalidation_sets_) {
     auto key = static_cast<CSSSelector::PseudoType>(entry.key);
-    AddInvalidationSet(pseudo_invalidation_sets_, key, entry.value);
+    MergeInvalidationSet(pseudo_invalidation_sets_, key, entry.value);
   }
   if (other.universal_sibling_invalidation_set_) {
     EnsureUniversalSiblingInvalidationSet().Combine(
diff --git a/third_party/blink/renderer/core/css/rule_feature_set.h b/third_party/blink/renderer/core/css/rule_feature_set.h
index ecd399e..273a276 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set.h
+++ b/third_party/blink/renderer/core/css/rule_feature_set.h
@@ -37,13 +37,13 @@
 namespace blink {
 
 class ContainerNode;
+class CSSSelector;
 struct InvalidationLists;
 class QualifiedName;
-class RuleData;
 class StyleScope;
 
-// Summarizes and indexes the contents of RuleData objects. It creates
-// invalidation sets from rule data and makes them available via several
+// Summarizes and indexes the contents of CSS selectors. It creates
+// invalidation sets from them and makes them available via several
 // CollectInvalidationSetForFoo methods which use the indices to quickly gather
 // the relevant InvalidationSets for a particular DOM mutation.
 class CORE_EXPORT RuleFeatureSet {
@@ -59,12 +59,15 @@
   bool operator!=(const RuleFeatureSet& o) const { return !(*this == o); }
 
   // Methods for updating the data in this object.
-  void Add(const RuleFeatureSet&);
+  void Merge(const RuleFeatureSet&);
   void Clear();
 
   enum SelectorPreMatch { kSelectorNeverMatches, kSelectorMayMatch };
 
-  SelectorPreMatch CollectFeaturesFromRuleData(const RuleData*,
+  // Creates invalidation sets for the given CSS selector. This is done as part
+  // of creating the RuleSet for the style sheet, i.e., before matching or
+  // mutation begins.
+  SelectorPreMatch CollectFeaturesFromSelector(const CSSSelector&,
                                                const StyleScope*);
 
   // Methods for accessing the data in this object.
@@ -250,7 +253,7 @@
   DescendantInvalidationSet& EnsureTypeRuleInvalidationSet();
   DescendantInvalidationSet& EnsurePartInvalidationSet();
 
-  void UpdateInvalidationSets(const RuleData*, const StyleScope*);
+  void UpdateInvalidationSets(const CSSSelector&, const StyleScope*);
 
   struct InvalidationSetFeatures {
     DISALLOW_NEW();
@@ -697,19 +700,19 @@
                                                 InvalidationType,
                                                 PositionType);
 
-  // Adds an InvalidationSet to this RuleFeatureSet.
+  // Adds an InvalidationSet to this RuleFeatureSet, combining with any
+  // data that may already be there. (That data may come from a previous
+  // call to EnsureInvalidationSet(), or from another MergeInvalidationSet().)
   //
-  // A copy-on-write mechanism is used: if we don't already have an invalidation
-  // set for |key|, we simply retain the incoming invalidation set without
-  // copying any data. If another AddInvalidationSet call takes place with the
-  // same key, we copy the existing InvalidationSet (if necessary) before
-  // combining it with the incoming InvalidationSet.
-  void AddInvalidationSet(InvalidationSetMap&,
-                          const AtomicString& key,
-                          scoped_refptr<InvalidationSet>);
-  void AddInvalidationSet(PseudoTypeInvalidationSetMap&,
-                          CSSSelector::PseudoType key,
-                          scoped_refptr<InvalidationSet>);
+  // Copy-on-write is used to get correct merging in face of shared
+  // InvalidationSets between keys; see comments on
+  // EnsureMutableInvalidationSet() for more details.
+  void MergeInvalidationSet(InvalidationSetMap&,
+                            const AtomicString& key,
+                            scoped_refptr<InvalidationSet>);
+  void MergeInvalidationSet(PseudoTypeInvalidationSetMap&,
+                            CSSSelector::PseudoType key,
+                            scoped_refptr<InvalidationSet>);
 
   FeatureMetadata metadata_;
   InvalidationSetMap class_invalidation_sets_;
diff --git a/third_party/blink/renderer/core/css/rule_feature_set_test.cc b/third_party/blink/renderer/core/css/rule_feature_set_test.cc
index aa3eeb56..ea307d9 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set_test.cc
+++ b/third_party/blink/renderer/core/css/rule_feature_set_test.cc
@@ -62,17 +62,11 @@
       StyleRule* style_rule,
       const StyleScope* style_scope,
       RuleFeatureSet& set) {
-    Vector<wtf_size_t> indices;
-    for (const CSSSelector* s = style_rule->FirstSelector(); s;
-         s = CSSSelectorList::Next(*s)) {
-      indices.push_back(style_rule->SelectorIndex(*s));
-    }
-
     RuleFeatureSet::SelectorPreMatch result =
         RuleFeatureSet::SelectorPreMatch::kSelectorNeverMatches;
-    for (wtf_size_t index : indices) {
-      RuleData rule_data(style_rule, index, 0, 0, kRuleHasNoSpecialState);
-      if (set.CollectFeaturesFromRuleData(&rule_data, style_scope))
+    for (const CSSSelector* s = style_rule->FirstSelector(); s;
+         s = CSSSelectorList::Next(*s)) {
+      if (set.CollectFeaturesFromSelector(*s, style_scope))
         result = RuleFeatureSet::SelectorPreMatch::kSelectorMayMatch;
     }
     return result;
@@ -143,8 +137,8 @@
     return rule_feature_set_.NeedsHasInvalidationForClass(class_name);
   }
 
-  void AddTo(RuleFeatureSet& rule_feature_set) {
-    rule_feature_set.Add(rule_feature_set_);
+  void MergeInto(RuleFeatureSet& rule_feature_set) {
+    rule_feature_set.Merge(rule_feature_set_);
   }
 
   using BackingType = InvalidationSet::BackingType;
@@ -1850,7 +1844,7 @@
   CollectFeatures("#d .e");
   CollectFeatures("[thing] .f");
   CollectFeatures(":hover .h");
-  AddTo(local1);
+  MergeInto(local1);
   ClearFeatures();
   ExpectRefCountForClassInvalidationSet(local1, "a", RefCount::kOne);
   ExpectRefCountForIdInvalidationSet(local1, "d", RefCount::kOne);
@@ -1862,7 +1856,7 @@
   RuleFeatureSet local2;
   CollectFeatures(".a .c");
   CollectFeatures("#d img");
-  AddTo(local2);
+  MergeInto(local2);
   ClearFeatures();
   ExpectRefCountForClassInvalidationSet(local2, "a", RefCount::kOne);
   ExpectRefCountForIdInvalidationSet(local2, "d", RefCount::kOne);
@@ -1871,7 +1865,7 @@
   RuleFeatureSet local3;
   CollectFeatures("[thing] .g");
   CollectFeatures(":hover .i");
-  AddTo(local3);
+  MergeInto(local3);
   ClearFeatures();
   ExpectRefCountForAttributeInvalidationSet(local3, "thing", RefCount::kOne);
   ExpectRefCountForPseudoInvalidationSet(local3, CSSSelector::kPseudoHover,
@@ -1881,7 +1875,7 @@
   RuleFeatureSet global;
 
   // After adding local1, we expect to share the InvalidationSets with local1.
-  global.Add(local1);
+  global.Merge(local1);
   ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kMany);
   ExpectRefCountForIdInvalidationSet(global, "d", RefCount::kMany);
   ExpectRefCountForAttributeInvalidationSet(global, "thing", RefCount::kMany);
@@ -1892,14 +1886,14 @@
   // copy the existing InvalidationSets at those keys before modifying them,
   // so we expect |global| to be the only reference holder to those
   // InvalidationSets.
-  global.Add(local2);
+  global.Merge(local2);
   ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kOne);
   ExpectRefCountForIdInvalidationSet(global, "d", RefCount::kOne);
   ExpectRefCountForAttributeInvalidationSet(global, "thing", RefCount::kMany);
   ExpectRefCountForPseudoInvalidationSet(global, CSSSelector::kPseudoHover,
                                          RefCount::kMany);
 
-  global.Add(local3);
+  global.Merge(local3);
   ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kOne);
   ExpectRefCountForIdInvalidationSet(global, "d", RefCount::kOne);
   ExpectRefCountForAttributeInvalidationSet(global, "thing", RefCount::kOne);
@@ -1933,18 +1927,18 @@
     for (const char* selector2 : data) {
       RuleFeatureSet local1;
       CollectFeatures(selector1);
-      AddTo(local1);
+      MergeInto(local1);
       ClearFeatures();
 
       RuleFeatureSet local2;
       CollectFeatures(selector2);
-      AddTo(local2);
+      MergeInto(local2);
       ClearFeatures();
 
       RuleFeatureSet global;
-      global.Add(local1);
+      global.Merge(local1);
       ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kMany);
-      global.Add(local2);
+      global.Merge(local2);
       ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kOne);
     }
   }
@@ -1953,20 +1947,20 @@
 TEST_F(RuleFeatureSetTest, CopyOnWrite_SelfInvalidation) {
   RuleFeatureSet local1;
   CollectFeatures(".a");
-  AddTo(local1);
+  MergeInto(local1);
   ClearFeatures();
 
   RuleFeatureSet local2;
   CollectFeatures(".a");
-  AddTo(local2);
+  MergeInto(local2);
   ClearFeatures();
 
   // Adding the SelfInvalidationSet to the SelfInvalidationSet does not cause
   // a copy.
   RuleFeatureSet global;
-  global.Add(local1);
+  global.Merge(local1);
   ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kMany);
-  global.Add(local2);
+  global.Merge(local2);
   ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kMany);
 }
 
diff --git a/third_party/blink/renderer/core/css/rule_set.cc b/third_party/blink/renderer/core/css/rule_set.cc
index 0c2d110..13cf9ce 100644
--- a/third_party/blink/renderer/core/css/rule_set.cc
+++ b/third_party/blink/renderer/core/css/rule_set.cc
@@ -396,7 +396,8 @@
   RuleData rule_data(rule, selector_index, rule_count_, extra_specificity,
                      add_rule_flags);
   ++rule_count_;
-  if (features_.CollectFeaturesFromRuleData(&rule_data, style_scope) ==
+  if (features_.CollectFeaturesFromSelector(rule_data.Selector(),
+                                            style_scope) ==
       RuleFeatureSet::kSelectorNeverMatches)
     return;
 
diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/blink/renderer/core/css/style_engine.cc
index 3b24ae32..78d0382 100644
--- a/third_party/blink/renderer/core/css/style_engine.cc
+++ b/third_party/blink/renderer/core/css/style_engine.cc
@@ -832,7 +832,7 @@
     features.MutableMediaQueryResultFlags().Add(
         sheet->GetMediaQueryResultFlags());
     DCHECK(sheet->Contents()->HasRuleSet());
-    features.Add(sheet->Contents()->GetRuleSet().Features());
+    features.Merge(sheet->Contents()->GetRuleSet().Features());
   }
 }
 
@@ -1804,7 +1804,7 @@
     if (!sheet)
       continue;
     if (RuleSet* rule_set = RuleSetForSheet(*sheet))
-      features.Add(rule_set->Features());
+      features.Merge(rule_set->Features());
   }
 }
 
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index fd0143f..3adc436 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -137,6 +137,7 @@
 #include "third_party/blink/renderer/core/html/forms/html_field_set_element.h"
 #include "third_party/blink/renderer/core/html/forms/html_form_control_element.h"
 #include "third_party/blink/renderer/core/html/forms/html_form_controls_collection.h"
+#include "third_party/blink/renderer/core/html/forms/html_input_element.h"
 #include "third_party/blink/renderer/core/html/forms/html_options_collection.h"
 #include "third_party/blink/renderer/core/html/forms/html_select_element.h"
 #include "third_party/blink/renderer/core/html/html_body_element.h"
@@ -7534,6 +7535,8 @@
 }
 
 bool Element::IsSpellCheckingEnabled() const {
+  // TODO(crbug.com/1365686): This is not compliant with the spec
+  // https://html.spec.whatwg.org/#concept-spellcheck-default
   for (const Element* element = this; element;
        element = element->ParentOrShadowHostElement()) {
     switch (element->GetSpellcheckAttributeState()) {
@@ -7542,6 +7545,10 @@
       case kSpellcheckAttributeFalse:
         return false;
       case kSpellcheckAttributeDefault:
+        if (const auto* input = DynamicTo<HTMLInputElement>(element)) {
+          if (input->HasBeenPasswordField())
+            return false;
+        }
         break;
     }
   }
diff --git a/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc b/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc
index a3fe411f..0bf28a5 100644
--- a/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc
+++ b/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc
@@ -730,10 +730,6 @@
     return false;
   if (TextControlElement* text_control = EnclosingTextControl(position)) {
     if (auto* input = DynamicTo<HTMLInputElement>(text_control)) {
-      // TODO(tkent): The following password type check should be done in
-      // HTMLElement::spellcheck(). crbug.com/371567
-      if (input->type() == input_type_names::kPassword)
-        return false;
       if (!input->IsFocusedElementInDocument())
         return false;
     }
diff --git a/third_party/blink/renderer/core/editing/spellcheck/spell_checker_test.cc b/third_party/blink/renderer/core/editing/spellcheck/spell_checker_test.cc
index 740097f..2c11ce3 100644
--- a/third_party/blink/renderer/core/editing/spellcheck/spell_checker_test.cc
+++ b/third_party/blink/renderer/core/editing/spellcheck/spell_checker_test.cc
@@ -436,4 +436,30 @@
   EXPECT_EQ(3u, third_marker->EndOffset());
 }
 
+TEST_F(SpellCheckerTest, PasswordFieldsAreIgnored) {
+  // Check that spellchecking is enabled for an input type="text".
+  SetBodyContent("<input type=\"text\">");
+  auto* input = To<HTMLInputElement>(GetDocument().QuerySelector("input"));
+  input->Focus();
+  input->SetValue("spllchck");
+  GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest);
+  EXPECT_TRUE(SpellChecker::IsSpellCheckingEnabledAt(
+      Position(input->InnerEditorElement()->firstChild(), 0)));
+
+  // But if this turns into a password field, this disables spellchecking.
+  // input->setType(input_type_names::kPassword);
+  input->setType("password");
+  GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest);
+  EXPECT_FALSE(SpellChecker::IsSpellCheckingEnabledAt(
+      Position(input->InnerEditorElement()->firstChild(), 0)));
+
+  // Some websites toggle between <input type="password"> and
+  // <input type="text"> via a reveal/hide button. In this case, spell
+  // checking should remain disabled.
+  input->setType("text");
+  GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest);
+  EXPECT_FALSE(SpellChecker::IsSpellCheckingEnabledAt(
+      Position(input->InnerEditorElement()->firstChild(), 0)));
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
index 3ea1911..811ed43 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
@@ -1127,8 +1127,7 @@
 
 void LocalFrameClientImpl::DidChangeMobileFriendliness(
     const MobileFriendliness& mf) {
-  DCHECK(web_frame_->Client());
-  web_frame_->Client()->DidChangeMobileFriendliness(mf);
+  web_frame_->DidChangeMobileFriendliness(mf);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index fda1e9729..61abc5a 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -3108,4 +3108,10 @@
     observer.WillSendSubmitEvent(form);
 }
 
+void WebLocalFrameImpl::DidChangeMobileFriendliness(
+    const MobileFriendliness& mf) {
+  for (auto& observer : observers_)
+    observer.DidChangeMobileFriendliness(mf);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
index 6dffe8a4..e8fcc448 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -538,6 +538,7 @@
   void RemoveObserver(WebLocalFrameObserver* observer);
 
   void WillSendSubmitEvent(const WebFormElement& form);
+  void DidChangeMobileFriendliness(const MobileFriendliness& mf);
 
  protected:
   // WebLocalFrame protected overrides:
diff --git a/third_party/blink/renderer/core/loader/preload_helper.cc b/third_party/blink/renderer/core/loader/preload_helper.cc
index 643a11c2..555364b 100644
--- a/third_party/blink/renderer/core/loader/preload_helper.cc
+++ b/third_party/blink/renderer/core/loader/preload_helper.cc
@@ -175,11 +175,6 @@
                 String("DNS prefetch triggered for " + params.href.Host())),
             document, frame);
       }
-      if (caller == kLinkCalledFromHeader &&
-          base::FeatureList::IsEnabled(
-              network::features::kPreconnectInNetworkService)) {
-        return;
-      }
       WebPrescientNetworking* web_prescient_networking =
           frame ? frame->PrescientNetworking() : nullptr;
       if (web_prescient_networking) {
@@ -223,11 +218,6 @@
             document, frame);
       }
     }
-    if (caller == kLinkCalledFromHeader &&
-        base::FeatureList::IsEnabled(
-            network::features::kPreconnectInNetworkService)) {
-      return;
-    }
     WebPrescientNetworking* web_prescient_networking =
         frame ? frame->PrescientNetworking() : nullptr;
     if (web_prescient_networking) {
diff --git a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc
index d04de747..7a3370bb 100644
--- a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc
+++ b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker_test.cc
@@ -19,8 +19,13 @@
 
 namespace {
 
-class MFTestWebFrameClient : public frame_test_helpers::TestWebFrameClient {
+class MobileFriendlinessObserver : public WebLocalFrameObserver {
  public:
+  explicit MobileFriendlinessObserver(WebLocalFrame* frame)
+      : WebLocalFrameObserver(frame) {}
+
+  void OnFrameDetached() override {}
+
   void DidChangeMobileFriendliness(const MobileFriendliness& mf) override {
     mobile_friendliness_ = mf;
   }
@@ -86,10 +91,9 @@
   }
 
   static std::unique_ptr<frame_test_helpers::WebViewHelper>
-  CreateMobileMetricsWebViewHelper(MFTestWebFrameClient& web_frame_client,
-                                   float device_scale) {
+  CreateMobileMetricsWebViewHelper(float device_scale) {
     auto helper = std::make_unique<frame_test_helpers::WebViewHelper>();
-    helper->Initialize(&web_frame_client, nullptr, ConfigureAndroidSettings);
+    helper->Initialize(nullptr, nullptr, ConfigureAndroidSettings);
     helper->GetWebView()->MainFrameWidget()->SetDeviceScaleFactorForTesting(
         device_scale);
     helper->Resize(gfx::Size(kDeviceWidth, kDeviceHeight));
@@ -116,35 +120,33 @@
   MobileFriendliness CalculateMetricsForHTMLString(const std::string& html,
                                                    float device_scale = 1.0,
                                                    bool fixed_clock = true) {
-    MFTestWebFrameClient web_frame_client;
-    {
-      std::unique_ptr<frame_test_helpers::WebViewHelper> helper(
-          CreateMobileMetricsWebViewHelper(web_frame_client, device_scale));
-      frame_test_helpers::LoadHTMLString(
-          helper->GetWebView()->MainFrameImpl(), html,
-          url_test_helpers::ToKURL("about:blank"));
-      EvalMobileFriendliness(
-          helper->GetWebView()->MainFrameImpl()->GetFrameView(), fixed_clock);
-    }
-    return web_frame_client.GetMobileFriendliness();
+    std::unique_ptr<frame_test_helpers::WebViewHelper> helper(
+        CreateMobileMetricsWebViewHelper(device_scale));
+    frame_test_helpers::LoadHTMLString(helper->GetWebView()->MainFrameImpl(),
+                                       html,
+                                       url_test_helpers::ToKURL("about:blank"));
+    MobileFriendlinessObserver mobile_friendliess_observer(
+        helper->GetWebView()->MainFrameImpl());
+    EvalMobileFriendliness(
+        helper->GetWebView()->MainFrameImpl()->GetFrameView(), fixed_clock);
+    return mobile_friendliess_observer.GetMobileFriendliness();
   }
 
   MobileFriendliness CalculateMetricsForFile(const std::string& path,
                                              float device_scale = 1.0,
                                              bool fixed_clock = true) {
-    MFTestWebFrameClient web_frame_client;
-    {
-      std::unique_ptr<frame_test_helpers::WebViewHelper> helper(
-          CreateMobileMetricsWebViewHelper(web_frame_client, device_scale));
-      url_test_helpers::RegisterMockedURLLoadFromBase(
-          WebString::FromUTF8(kBaseUrl), blink::test::CoreTestDataPath(),
-          WebString::FromUTF8(path));
-      frame_test_helpers::LoadFrame(helper->GetWebView()->MainFrameImpl(),
-                                    kBaseUrl + path);
-      EvalMobileFriendliness(
-          helper->GetWebView()->MainFrameImpl()->GetFrameView(), fixed_clock);
-    }
-    return web_frame_client.GetMobileFriendliness();
+    std::unique_ptr<frame_test_helpers::WebViewHelper> helper(
+        CreateMobileMetricsWebViewHelper(device_scale));
+    url_test_helpers::RegisterMockedURLLoadFromBase(
+        WebString::FromUTF8(kBaseUrl), blink::test::CoreTestDataPath(),
+        WebString::FromUTF8(path));
+    frame_test_helpers::LoadFrame(helper->GetWebView()->MainFrameImpl(),
+                                  kBaseUrl + path);
+    MobileFriendlinessObserver mobile_friendliess_observer(
+        helper->GetWebView()->MainFrameImpl());
+    EvalMobileFriendliness(
+        helper->GetWebView()->MainFrameImpl()->GetFrameView(), fixed_clock);
+    return mobile_friendliess_observer.GetMobileFriendliness();
   }
 };
 
diff --git a/third_party/blink/renderer/modules/autofill_assistant/node_signals.cc b/third_party/blink/renderer/modules/autofill_assistant/node_signals.cc
index 646d5ab..3bd257e 100644
--- a/third_party/blink/renderer/modules/autofill_assistant/node_signals.cc
+++ b/third_party/blink/renderer/modules/autofill_assistant/node_signals.cc
@@ -294,7 +294,9 @@
     }
 
     WebString text(DynamicTo<Text>(node)->wholeText());
-    if (!text.IsNull() && !text.IsEmpty()) {
+    // Skip source formatting text nodes like "\n    " and empty strings.
+    if (!text.IsNull() && !text.IsEmpty() &&
+        !String(text).ContainsOnlyWhitespaceOrEmpty()) {
       distance_and_text.push_back({distance, text});
       if (distance < closest_distance) {
         closest_distance = distance;
diff --git a/third_party/blink/renderer/modules/exported/web_ax_context.cc b/third_party/blink/renderer/modules/exported/web_ax_context.cc
index db62998..70a46c2 100644
--- a/third_party/blink/renderer/modules/exported/web_ax_context.cc
+++ b/third_party/blink/renderer/modules/exported/web_ax_context.cc
@@ -18,20 +18,6 @@
 
 WebAXContext::~WebAXContext() {}
 
-WebAXObject WebAXContext::Root() const {
-  // It is an error to call AXContext::GetAXObjectCache() if the underlying
-  // document is no longer active, so early return in that case to prevent
-  // crashes that might otherwise happen in some cases (see crbug.com/1094576).
-  if (!private_->HasActiveDocument())
-    return WebAXObject();
-
-  // Make sure that layout is updated before a root ax object is created.
-  WebAXObject::UpdateLayout(WebDocument(private_->GetDocument()));
-
-  return WebAXObject(
-      static_cast<AXObjectCacheImpl*>(&private_->GetAXObjectCache())->Root());
-}
-
 const ui::AXMode& WebAXContext::GetAXMode() const {
   return private_->GetAXMode();
 }
diff --git a/third_party/blink/renderer/modules/media/audio/audio_device_factory.cc b/third_party/blink/renderer/modules/media/audio/audio_device_factory.cc
index 75fca6c..df4e281 100644
--- a/third_party/blink/renderer/modules/media/audio/audio_device_factory.cc
+++ b/third_party/blink/renderer/modules/media/audio/audio_device_factory.cc
@@ -22,6 +22,7 @@
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/web/modules/media/audio/audio_input_ipc_factory.h"
 #include "third_party/blink/public/web/modules/media/audio/audio_output_ipc_factory.h"
+#include "third_party/blink/public/web/web_local_frame.h"
 #include "third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.h"
 #include "third_party/blink/renderer/modules/media/audio/audio_renderer_sink_cache.h"
 #include "third_party/blink/renderer/platform/wtf/wtf.h"
@@ -148,11 +149,12 @@
 
 scoped_refptr<media::AudioCapturerSource>
 AudioDeviceFactory::NewAudioCapturerSource(
-    const blink::LocalFrameToken& frame_token,
+    WebLocalFrame* web_frame,
     const media::AudioSourceParameters& params) {
   return base::MakeRefCounted<media::AudioInputDevice>(
-      blink::AudioInputIPCFactory::GetInstance().CreateAudioInputIPC(
-          frame_token, params),
+      blink::AudioInputIPCFactory::CreateAudioInputIPC(
+          web_frame->GetLocalFrameToken(),
+          web_frame->GetTaskRunner(TaskType::kInternalMedia), params),
       media::AudioInputDevice::Purpose::kUserInput,
       media::AudioInputDevice::DeadStreamDetection::kEnabled);
 }
diff --git a/third_party/blink/renderer/modules/media/audio/audio_input_ipc_factory.cc b/third_party/blink/renderer/modules/media/audio/audio_input_ipc_factory.cc
index f9c584f..524c31d 100644
--- a/third_party/blink/renderer/modules/media/audio/audio_input_ipc_factory.cc
+++ b/third_party/blink/renderer/modules/media/audio/audio_input_ipc_factory.cc
@@ -83,28 +83,17 @@
 }
 }  // namespace
 
-AudioInputIPCFactory& AudioInputIPCFactory::GetInstance() {
-  DEFINE_THREAD_SAFE_STATIC_LOCAL(
-      AudioInputIPCFactory, instance,
-      (Thread::MainThread()->GetDeprecatedTaskRunner()));
-  return instance;
-}
-
-AudioInputIPCFactory::AudioInputIPCFactory(
-    scoped_refptr<base::SequencedTaskRunner> main_task_runner)
-    : main_task_runner_(std::move(main_task_runner)) {}
-
-AudioInputIPCFactory::~AudioInputIPCFactory() = default;
-
+// static
 std::unique_ptr<media::AudioInputIPC> AudioInputIPCFactory::CreateAudioInputIPC(
     const blink::LocalFrameToken& frame_token,
-    const media::AudioSourceParameters& source_params) const {
+    scoped_refptr<base::SequencedTaskRunner> main_task_runner,
+    const media::AudioSourceParameters& source_params) {
   CHECK(!source_params.session_id.is_empty());
   return std::make_unique<MojoAudioInputIPC>(
       source_params,
-      base::BindRepeating(&CreateMojoAudioInputStream, main_task_runner_,
+      base::BindRepeating(&CreateMojoAudioInputStream, main_task_runner,
                           frame_token),
-      base::BindRepeating(&AssociateInputAndOutputForAec, main_task_runner_,
+      base::BindRepeating(&AssociateInputAndOutputForAec, main_task_runner,
                           frame_token));
 }
 
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc
index 6478004..87bf028 100644
--- a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc
+++ b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc
@@ -396,9 +396,9 @@
 
   webrtc::RtpPacketInfos::vector_type packet_infos;
   for (int i = 0; i < 4; ++i) {
-    packet_infos.emplace_back(
-        kSsrc, kCsrcs, kRtpTimestamp, absl::nullopt, absl::nullopt,
-        kProcessingStart - webrtc::TimeDelta::Micros(10000 - i * 30));
+    webrtc::Timestamp receive_time =
+        kProcessingStart - webrtc::TimeDelta::Micros(10000 - i * 30);
+    packet_infos.emplace_back(kSsrc, kCsrcs, kRtpTimestamp, receive_time);
   }
   // Expected receive time should be the same as the last arrival time.
   base::TimeTicks kExpectedReceiveTime =
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
index 2c9ee3ca..30b883e 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
@@ -762,36 +762,12 @@
       }
       codec->setSdpFmtpLine(sdp_fmtp_line.c_str());
     }
-    if (rtc_codec.mime_type() == "video/VP8") {
-      Vector<String> modes;
-      modes.push_back("L1T2");
-      modes.push_back("L1T3");
-      codec->setScalabilityModes(modes);
-    } else if (rtc_codec.mime_type() == "video/VP9") {
-      auto profile_id = rtc_codec.parameters.find("profile-id");
-      if (profile_id == rtc_codec.parameters.end() ||
-          profile_id->second != "2") {
-        Vector<String> modes;
-        modes.push_back("L1T2");
-        modes.push_back("L1T3");
-        codec->setScalabilityModes(modes);
-      }
-    } else if (rtc_codec.mime_type() == "video/AV1") {
-      Vector<String> modes;
-      modes.push_back("L1T2");
-      modes.push_back("L1T3");
-      modes.push_back("L2T1");
-      modes.push_back("L2T1h");
-      modes.push_back("L2T1_KEY");
-      modes.push_back("L2T2");
-      modes.push_back("L2T2_KEY");
-      modes.push_back("L2T2_KEY_SHIFT");
-      modes.push_back("L3T1");
-      modes.push_back("L3T3");
-      modes.push_back("L3T3_KEY");
-      modes.push_back("S2T1");
-      codec->setScalabilityModes(modes);
+    Vector<String> scalability_modes;
+    for (const auto& mode : rtc_codec.scalability_modes) {
+      scalability_modes.push_back(WTF::String::FromUTF8(
+          std::string(webrtc::ScalabilityModeToString(mode))));
     }
+    codec->setScalabilityModes(scalability_modes);
     codecs.push_back(codec);
   }
   capabilities->setCodecs(codecs);
diff --git a/third_party/blink/renderer/modules/permissions/permission_status_listener.cc b/third_party/blink/renderer/modules/permissions/permission_status_listener.cc
index f0a4e6ee..08f97c8 100644
--- a/third_party/blink/renderer/modules/permissions/permission_status_listener.cc
+++ b/third_party/blink/renderer/modules/permissions/permission_status_listener.cc
@@ -62,7 +62,17 @@
 
   status_ = status;
 
+  // The `observers_` list can change in response to permission status change
+  // events as the observers map to PermissionStatus JS objects which can be
+  // created and destroyed in the JS event handler function. To avoid UAF and
+  // list modification issues, a temporary snapshot of the observers is made and
+  // used instead.
+  HeapHashSet<WeakMember<Observer>> observers;
   for (const auto& observer : observers_) {
+    observers.insert(observer);
+  }
+
+  for (const auto& observer : observers) {
     if (observer)
       observer->OnPermissionStatusChange(status);
     else
diff --git a/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc b/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc
index 8ee887d..932e689 100644
--- a/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc
+++ b/third_party/blink/renderer/modules/service_worker/wait_until_observer.cc
@@ -184,7 +184,7 @@
       type_(type),
       event_id_(event_id),
       consume_window_interaction_timer_(
-          Thread::Current()->GetDeprecatedTaskRunner(),
+          context->GetTaskRunner(TaskType::kUserInteraction),
           this,
           &WaitUntilObserver::ConsumeWindowInteraction) {}
 
diff --git a/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.cc b/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.cc
index 371cc21..7159278 100644
--- a/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.cc
+++ b/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.cc
@@ -16,8 +16,8 @@
 #include "third_party/blink/renderer/platform/fonts/font_global_context.h"
 #include "third_party/blink/renderer/platform/graphics/image_decoding_store.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
+#include "third_party/blink/renderer/platform/scheduler/public/non_main_thread.h"
 #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
-#include "third_party/blink/renderer/platform/scheduler/public/thread.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 #include "third_party/blink/renderer/platform/wtf/wtf.h"
@@ -75,12 +75,12 @@
   return *external.Get();
 }
 
-void MemoryPressureListenerRegistry::RegisterThread(Thread* thread) {
+void MemoryPressureListenerRegistry::RegisterThread(NonMainThread* thread) {
   base::AutoLock lock(threads_lock_);
   threads_.insert(thread);
 }
 
-void MemoryPressureListenerRegistry::UnregisterThread(Thread* thread) {
+void MemoryPressureListenerRegistry::UnregisterThread(NonMainThread* thread) {
   base::AutoLock lock(threads_lock_);
   threads_.erase(thread);
 }
@@ -121,11 +121,11 @@
   // Thread-specific data never issues a layout, so we are safe here.
   base::AutoLock lock(threads_lock_);
   for (auto* thread : threads_) {
-    if (!thread->GetDeprecatedTaskRunner())
+    if (!thread->GetTaskRunner())
       continue;
 
     PostCrossThreadTask(
-        *thread->GetDeprecatedTaskRunner(), FROM_HERE,
+        *thread->GetTaskRunner(), FROM_HERE,
         CrossThreadBindOnce(
             MemoryPressureListenerRegistry::ClearThreadSpecificMemory));
   }
diff --git a/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.h b/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.h
index f9e96eb..fdb4e12 100644
--- a/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.h
+++ b/third_party/blink/renderer/platform/instrumentation/memory_pressure_listener.h
@@ -15,7 +15,7 @@
 
 namespace blink {
 
-class Thread;
+class NonMainThread;
 
 class PLATFORM_EXPORT MemoryPressureListener : public GarbageCollectedMixin {
  public:
@@ -56,8 +56,8 @@
   MemoryPressureListenerRegistry& operator=(
       const MemoryPressureListenerRegistry&) = delete;
 
-  void RegisterThread(Thread*) LOCKS_EXCLUDED(threads_lock_);
-  void UnregisterThread(Thread*) LOCKS_EXCLUDED(threads_lock_);
+  void RegisterThread(NonMainThread*) LOCKS_EXCLUDED(threads_lock_);
+  void UnregisterThread(NonMainThread*) LOCKS_EXCLUDED(threads_lock_);
 
   void RegisterClient(MemoryPressureListener*);
   void UnregisterClient(MemoryPressureListener*);
@@ -78,7 +78,7 @@
   static bool is_low_end_device_;
 
   HeapHashSet<WeakMember<MemoryPressureListener>> clients_;
-  HashSet<Thread*> threads_ GUARDED_BY(threads_lock_);
+  HashSet<NonMainThread*> threads_ GUARDED_BY(threads_lock_);
   base::Lock threads_lock_;
 };
 
diff --git a/third_party/blink/tools/blinkpy/common/checkout/baseline_optimizer.py b/third_party/blink/tools/blinkpy/common/checkout/baseline_optimizer.py
index e50b598..788a8d4 100644
--- a/third_party/blink/tools/blinkpy/common/checkout/baseline_optimizer.py
+++ b/third_party/blink/tools/blinkpy/common/checkout/baseline_optimizer.py
@@ -127,15 +127,15 @@
                 _log.debug(
                     'Optimizing flag-specific virtual fallback path '
                     'for "%s".', flag_specific)
-                self._optimize_single_baseline(test_name, extension,
-                                               flag_spec_port)
+                self._optimize_single_baseline_flag_specific(
+                    test_name, extension, flag_spec_port)
             else:
                 non_virtual_test_name = test_name
             _log.debug(
                 'Optimizing flag-specific non-virtual fallback path '
                 'for "%s".', flag_specific)
-            self._optimize_single_baseline(non_virtual_test_name, extension,
-                                           flag_spec_port)
+            self._optimize_single_baseline_flag_specific(
+                non_virtual_test_name, extension, flag_spec_port)
 
     def _get_baseline_paths(self, test_name, extension, port):
         """Get paths to baselines that the provided port would search.
@@ -161,13 +161,17 @@
         ]
         return baseline_paths
 
-    def _optimize_single_baseline(self, test_name, extension, port):
+    def _optimize_single_baseline_flag_specific(self, test_name, extension,
+                                                port):
         """Optimize a baseline directly by simulating the fallback algorithm."""
         baseline_paths = self._get_baseline_paths(test_name, extension, port)
         if not baseline_paths:
             # The baseline for this test does not exist.
             return
         baseline_to_optimize = baseline_paths[0]
+        if (("flag-specific" not in baseline_to_optimize)
+                or (not self._filesystem.exists(baseline_to_optimize))):
+            return
         basename = self._filesystem.basename(baseline_to_optimize)
         if len(baseline_paths) < 2:
             _log.debug('  %s: (no baselines found)', basename)
diff --git a/third_party/blink/tools/run_wpt_tests.py b/third_party/blink/tools/run_wpt_tests.py
index 7f2105f..89d8499 100755
--- a/third_party/blink/tools/run_wpt_tests.py
+++ b/third_party/blink/tools/run_wpt_tests.py
@@ -280,6 +280,7 @@
             choices=sorted(_product_registry, key=len),
             help='Product (browser or browser component) to test.')
         parser.add_argument('--webdriver-binary',
+                            type=os.path.abspath,
                             help=('Path of the webdriver binary.'
                                   'It needs to have the same major version '
                                   'as the browser binary or APK.'))
@@ -405,16 +406,19 @@
             '--chrome-apk',
             '--system-webview-shell',
             '--weblayer-shell',
+            type=os.path.abspath,
             help=('Path to the browser APK to install and run. '
                   '(For WebView and WebLayer, this value is the shell. '
                   'Defaults to an on-device APK if not provided.)'))
         group.add_argument('--webview-provider',
+                           type=os.path.abspath,
                            help=('Path to a WebView provider APK to install. '
                                  '(WebView only.)'))
         group.add_argument(
             '--additional-apk',
             # Aliases for backwards compatibility.
             '--weblayer-support',
+            type=os.path.abspath,
             action='append',
             default=[],
             help='Paths to additional APKs to install.')
@@ -427,7 +431,7 @@
             '--chrome-package-name',
             help='Package name to run tests against.')
         group.add_argument('--adb-binary',
-                           type=os.path.realpath,
+                           type=os.path.abspath,
                            help='Path to adb binary to use.')
         return group
 
diff --git a/third_party/blink/web_tests/FlagExpectations/highdpi b/third_party/blink/web_tests/FlagExpectations/highdpi
index 441ef802..1811590 100644
--- a/third_party/blink/web_tests/FlagExpectations/highdpi
+++ b/third_party/blink/web_tests/FlagExpectations/highdpi
@@ -1736,7 +1736,6 @@
 # Existing failures. Mark these as [ Pass ] when these tests are fixed.
 crbug.com/626703 external/wpt/acid/acid3/test.html [ Failure ]
 crbug.com/626703 external/wpt/css/css-fill-stroke/paint-order-001.tentative.html [ Failure ]
-crbug.com/599828 external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001.html [ Failure ]
 crbug.com/240765 external/wpt/css/css-flexbox/intrinsic-size/row-001.html [ Failure ]
 crbug.com/759665 external/wpt/css/css-grid/animation/grid-template-rows-001.html [ Failure ]
 crbug.com/694218 external/wpt/css/css-masking/clip-path/clip-path-viewBox-1b.html [ Failure ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 41bd49c..0b14f12a 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1281,7 +1281,6 @@
 # [css-align]
 
 crbug.com/722287 crbug.com/886585 external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-safe-001.html [ Failure ]
-crbug.com/599828 external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001.html [ Failure ]
 
 # [css-ui]
 # The `input-security` property not implemented yet.
diff --git a/third_party/blink/web_tests/editing/spelling/spellcheck-password.html b/third_party/blink/web_tests/editing/spelling/spellcheck-password.html
new file mode 100644
index 0000000..f90daaa
--- /dev/null
+++ b/third_party/blink/web_tests/editing/spelling/spellcheck-password.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<p>Spell checker should not make spell check request in password field.</p>
+<div><input type="password" id="pwd" /></div>
+<script>
+const password = document.getElementById("pwd");
+
+function spinSpellChecker() {
+  while (internals.idleTimeSpellCheckerState(document) !== 'Inactive')
+    internals.runIdleTimeSpellChecker(document);
+}
+
+setup(() => {
+  assert_own_property(window, 'testRunner', 'This test requires window.testRunner');
+  assert_own_property(window, 'internals', 'This test requires window.internals');
+  testRunner.setMockSpellCheckerEnabled(true);
+  password.focus();
+});
+
+test(() => {
+  assert_false(password.spellcheck);
+
+  const sequenceBefore = internals.lastSpellCheckRequestSequence(document);
+
+  document.execCommand("insertText", false, "zz. ");
+  assert_equals(password.value.length, 4);
+
+  spinSpellChecker();
+  assert_equals(internals.lastSpellCheckRequestSequence(document), sequenceBefore);
+}, "Spellchecker does not request checking for password fields");
+
+test(() => {
+  // Some websites toggle between "password" and "text" types for hiding and
+  // revealing passwords. Make sure not to spellcheck in this case.
+  password.type = "text";
+  assert_false(password.spellcheck);
+
+  const sequenceBefore = internals.lastSpellCheckRequestSequence(document);
+
+  document.execCommand("insertText", false, "zz. ");
+  assert_equals(password.value.length, 8);
+
+  spinSpellChecker();
+  assert_equals(internals.lastSpellCheckRequestSequence(document), sequenceBefore);
+}, "Spellchecker does not request checking for revealed password fields");
+</script>
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index dfcad87..af5eefc 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -104556,19 +104556,6 @@
         {}
        ]
       ],
-      "flex-abspos-staticpos-fallback-align-content-001.html": [
-       "80dd2f68f9510ce7535b97f80655ce8b483886f4",
-       [
-        null,
-        [
-         [
-          "/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001-ref.html",
-          "=="
-         ]
-        ],
-        {}
-       ]
-      ],
       "flex-abspos-staticpos-fallback-justify-content-001.html": [
        "004ce831c2933efadd3d5434ce4201b8d60c3a09",
        [
@@ -146412,6 +146399,19 @@
        {}
       ]
      ],
+     "display-flex-svg-overflow-default.html": [
+      "5fb69d0e09db2205f8c7679775a6a1ec136cbf86",
+      [
+       null,
+       [
+        [
+         "/css/css-overflow/display-flex-svg-overflow-default-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "dynamic-visible-to-clip-001.html": [
       "e2011324dda6e00309bf70c2e364fdb2dd1f23ae",
       [
@@ -146988,7 +146988,7 @@
       ]
      ],
      "overflow-clip-x-visible-y-svg.html": [
-      "a7c55a07eb48f52c593f0111bfff2c6fe31bc4ce",
+      "bd903cdfd68f604064d46a6d50d64d4784b7a0de",
       [
        null,
        [
@@ -147001,7 +147001,7 @@
       ]
      ],
      "overflow-clip-y-visible-x-svg.html": [
-      "4fda07e9e6c9ede85ae5655e060ec77c6173fc29",
+      "8416af30470f0a949625acb632ccb6ec2caa9650",
       [
        null,
        [
@@ -271162,10 +271162,6 @@
        "fb1fb93ea997b1107efa595f17ae5b9c38419a92",
        []
       ],
-      "flex-abspos-staticpos-fallback-align-content-001-ref.html": [
-       "ec0d6cc41278ced0ad415544e73f1b6804e9f946",
-       []
-      ],
       "flex-abspos-staticpos-fallback-justify-content-001-ref.html": [
        "0abf592d6d476d0e5a9a01b163e3aebf9fffb74d",
        []
@@ -285981,6 +285977,10 @@
       "09081e25039a2a07c6dd798fc68ff7b8a07bc333",
       []
      ],
+     "display-flex-svg-overflow-default-ref.html": [
+      "2dce244975220f63b60e7cac9938e1b74cebe6ed",
+      []
+     ],
      "incremental-scroll-ref.html": [
       "131e54ec2913621bd0cd6e3adf8e22e03b129d8a",
       []
@@ -287216,7 +287216,7 @@
       []
      ],
      "registered-property-computation-expected.txt": [
-      "eeed0dfc0def17b1ba636f7f6a076caf770e1327",
+      "b5ca1975fbaa5fbf770b0e2b058ba67d25b35ad4",
       []
      ],
      "resources": {
@@ -324177,10 +324177,6 @@
         "a46cb70594b81466ca0c856428b12ce23e940d36",
         []
        ],
-       "show-picker-disabled-readonly-expected.txt": [
-        "ca2ba34e4ed304a06fdfebfc2e294689a4eab0fc",
-        []
-       ],
        "type-change-state-expected.txt": [
         "f8665a4fea603dc8e26aa0d8e4a2e4e4c58aa571",
         []
@@ -334387,16 +334383,8 @@
       "32cb9a9ba30638bf0e5c7e54655ae87e7085978d",
       []
      ],
-     "iframe_create_beacon_no_send.html": [
-      "dfe047aac8c3d6b58b4c3771946835537c21e20a",
-      []
-     ],
-     "iframe_create_beacon_then_send.html": [
-      "0fa2ca01dc784bc1543b22615cedd1d9d36009f4",
-      []
-     ],
      "pending_beacon-helper.js": [
-      "73c46a4014471ef825221a24147c7daebc47871d",
+      "c140ecf1b7afe3a3f5c68ce563122f5de5b26b89",
       []
      ],
      "set_beacon.py": [
@@ -342097,6 +342085,14 @@
      ]
     }
    },
+   "soft-navigation-heuristics": {
+    "resources": {
+     "soft-navigation-helper.js": [
+      "220343d595794bb6075c4f4be20bb8eeea7f071e",
+      []
+     ]
+    }
+   },
    "speculation-rules": {
     "prefetch": {
      "resources": {
@@ -342268,6 +342264,10 @@
        "0cd98a1693f00dba23bbd3120f92c40912f815ff",
        []
       ],
+      "navigator-plugins.html": [
+       "dcb9302d8d2dd22097e780aa91f8976c65d0d9c6",
+       []
+      ],
       "notification-before-activation.html": [
        "16aab488a572506abda901d89384e3798c7670ca",
        []
@@ -342368,6 +342368,10 @@
        "ab5fabd9e3099fbf1fd47f2d01461ec64b4352fa",
        []
       ],
+      "subapp.html": [
+       "8fc4433c0b00ebc950b53a15ffe1baa32d83fe56",
+       []
+      ],
       "utils.js": [
        "ac80eaa3eb144c02cc1fa736f1884245f2672e6d",
        []
@@ -347831,7 +347835,7 @@
      []
     ],
     "idlharness.https.any-expected.txt": [
-     "074ef3e13b0632e1caa2a68abd1ff1d39ed10440",
+     "c2ffbffc2b64567a71eee19a0a3a1eacd9c5957c",
      []
     ],
     "idlharness.https.any.worker-expected.txt": [
@@ -348066,10 +348070,6 @@
       []
      ]
     },
-    "no-media-call-expected.txt": [
-     "2de564ff67a7cef19df9a7bba3fce93233ca3316",
-     []
-    ],
     "protocol": {
      "README.txt": [
       "5e17fbf9c354edabaf48f6ee1d017f23d18e2171",
@@ -389301,12 +389301,10 @@
       ]
      ],
      "contain-inline-size-replaced.html": [
-      "5957c1cff627bf6a4bce06f77b1726c8ec82e022",
+      "b22e0063283b1ebe00de03a76e6d7cba12dd94f4",
       [
        null,
-       {
-        "timeout": "long"
-       }
+       {}
       ]
      ],
      "contain-paint-049.html": [
@@ -390691,84 +390689,7 @@
        ]
       ],
       "flex-abspos-staticpos-align-content-001.html": [
-       "b1c22ba74f7d10a29a47b1006352dd38a63ccb5f",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-002.html": [
-       "cc94b9eb5e12db90fdb1fca7b96e41fec4fbc034",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-003.html": [
-       "f0f163cf838c6cfb90d4eaf5aca40353d738e006",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-004.html": [
-       "74ccc0c527a7bc24f480a05000e4e659c497d7fa",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-005.html": [
-       "ac48584bf8526b0f5b841420d66bd4293b717958",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-006.html": [
-       "e9be819b490a7374ada758a2723930a0fe142a0f",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-007.html": [
-       "0b6f8123c32d604853e1050731f61cc0f3187a54",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-008.html": [
-       "37812f59dffb93c24e4b3b603243dc598c63aee9",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-rtl-001.html": [
-       "214c2670cfa3a92873e2405ac94d99e7339d488f",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-rtl-002.html": [
-       "2dfc20a9a18ecad7f21c225d484727bf239a6b12",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-vertWM-001.html": [
-       "d983b501f2923be8c8f378b48f1553091f3ced51",
-       [
-        null,
-        {}
-       ]
-      ],
-      "flex-abspos-staticpos-align-content-vertWM-002.html": [
-       "a24247185f84a74437e3c99f6a01bdf782b03711",
+       "6e99510cd13a77e087bebfba41955c79fb2f9800",
        [
         null,
         {}
@@ -391111,6 +391032,57 @@
        {}
       ]
      ],
+     "alignment": {
+      "flex-align-baseline-001.html": [
+       "9c5e3858cfa50286646749595366366e02ddafa8",
+       [
+        null,
+        {}
+       ]
+      ],
+      "flex-align-baseline-002.html": [
+       "41a8319ae02fcdb500265fa7a93341a4d4304b6d",
+       [
+        null,
+        {}
+       ]
+      ],
+      "flex-align-baseline-003.html": [
+       "e8be20c9cf7176672d89e77a8ac6ace3ae15e93b",
+       [
+        null,
+        {}
+       ]
+      ],
+      "flex-align-baseline-004.html": [
+       "cccf50478459aa17fea8d01f8bbfac5647f8f004",
+       [
+        null,
+        {}
+       ]
+      ],
+      "flex-align-baseline-005.html": [
+       "187083c0b88afad3827a067d32e82ac7881a06c0",
+       [
+        null,
+        {}
+       ]
+      ],
+      "flex-align-baseline-006.html": [
+       "6d52ab783d372f8e1d0c168ac8b9c7f57282964d",
+       [
+        null,
+        {}
+       ]
+      ],
+      "flex-align-baseline-007.html": [
+       "e4c03ed6887bcdbe3374a410b58dcc3455276155",
+       [
+        null,
+        {}
+       ]
+      ]
+     },
      "animation": {
       "flex-basis-composition.html": [
        "122761e47679945d000623b6ae6fbe6d13cd5fba",
@@ -394081,6 +394053,27 @@
       ]
      },
      "alignment": {
+      "grid-align-baseline-001.html": [
+       "a03ce153b30f06c1af2fa5ec7f7e4c4c7f75f3a3",
+       [
+        null,
+        {}
+       ]
+      ],
+      "grid-align-baseline-002.html": [
+       "2b4d71756d7aa863accefc5d97af57ed2b59a7fa",
+       [
+        null,
+        {}
+       ]
+      ],
+      "grid-align-baseline-003.html": [
+       "2e0c5f29f397cac91fc137655413ec74a64768d7",
+       [
+        null,
+        {}
+       ]
+      ],
       "grid-align-baseline-vertical.html": [
        "aff424be77454d25b8e2442a3b47e44e1a67030c",
        [
@@ -394914,6 +394907,27 @@
         {}
        ]
       ],
+      "grid-justify-baseline-002.html": [
+       "27be724bf9979ace6d8c435c1f02bf540076befc",
+       [
+        null,
+        {}
+       ]
+      ],
+      "grid-justify-baseline-003.html": [
+       "623f8491153960bca9a3d088bd2c689dcaa9bbde",
+       [
+        null,
+        {}
+       ]
+      ],
+      "grid-justify-baseline-004.html": [
+       "b2e1d6d2efb6042b4cf5e61fb2a2cee34c763159",
+       [
+        null,
+        {}
+       ]
+      ],
       "grid-place-content-001.html": [
        "49bb63928be72401c588eb1816f5a1ce1d0aade3",
        [
@@ -400318,7 +400332,7 @@
       ]
      ],
      "registered-property-computation.html": [
-      "168495247a3b16a2203fb361f662b6db83044d09",
+      "ec2d35c7fb98a70cc8f9b534d736b36c721dffdf",
       [
        null,
        {}
@@ -400367,7 +400381,7 @@
       ]
      ],
      "unit-cycles.html": [
-      "f8eba17f2183bbc6fc02e9e5ee2cf5fc55d30d56",
+      "9454c95ac303cf0c2c7a0984c7b2297d549edcf2",
       [
        null,
        {}
@@ -519538,7 +519552,7 @@
      ]
     ],
     "pending_beacon-sendondiscard.tentative.window.js": [
-     "80d577004b7017cf64903fac1c8da399125becb0",
+     "5b8b795c745db3652e8e6cfa2bf963547b9796e0",
      [
       "pending_beacon/pending_beacon-sendondiscard.tentative.window.html",
       {
@@ -545491,6 +545505,45 @@
      ]
     ]
    },
+   "soft-navigation-heuristics": {
+    "dropped-entries.tentative.html": [
+     "a61d09034d1cfb029d1e148db227728d8e0d238d",
+     [
+      null,
+      {
+       "testdriver": true,
+       "timeout": "long"
+      }
+     ]
+    ],
+    "soft-navigation-detection-main-descendent.tentative.html": [
+     "bd4cd9967ce430134f65941bce6e27b994f8f3fc",
+     [
+      null,
+      {
+       "testdriver": true
+      }
+     ]
+    ],
+    "soft-navigation-detection-web-component-lifecycle.tentative.html": [
+     "e74e5d535ca802a8d9955d9695b6c377aad1fd1c",
+     [
+      null,
+      {
+       "testdriver": true
+      }
+     ]
+    ],
+    "soft-navigation-detection.tentative.html": [
+     "bdbf22010b1b283f9cb0f12df433a4de9439d734",
+     [
+      null,
+      {
+       "testdriver": true
+      }
+     ]
+    ]
+   },
    "speculation-rules": {
     "prefetch": {
      "anonymous-client.https.html": [
@@ -545722,6 +545775,24 @@
        }
       ]
      ],
+     "navigator-plugins.tentative.html": [
+      "04a65b4a7ca6662de30eb82365ed28b62878a547",
+      [
+       null,
+       {
+        "timeout": "long"
+       }
+      ]
+     ],
+     "navigator-subapp.https.tentative.html": [
+      "8cfc78ac6e93ebff471563236ac6067e00405e20",
+      [
+       null,
+       {
+        "timeout": "long"
+       }
+      ]
+     ],
      "opt-out.html": [
       "3bfa00c6dc8921b5888e4c24fbb2f11d0a903080",
       [
@@ -572649,7 +572720,7 @@
      ]
     },
     "no-media-call.html": [
-     "bdd42f6fa582d855a5727d6053f73f788d5bba94",
+     "17d90ffa15efbb3c61ac28c4007839cfab986d5d",
      [
       null,
       {}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-inline-size-replaced.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-inline-size-replaced.html
index 5957c1c..b22e0063 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-inline-size-replaced.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-inline-size-replaced.html
@@ -4,7 +4,6 @@
 <link rel="author" title="David Shin" href="mailto:dshin@mozilla.com">
 <link rel="author" href="https://mozilla.org" title="Mozilla">
 <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
-<meta name="timeout" content="long">
 <meta name=assert
   content="This test checks that various replaced elements with contain: inline-size have an intrinsic inline size of 0 regardless of their content.">
 <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001.html
index b1c22ba7..6e99510c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001.html
@@ -9,6 +9,7 @@
   <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
   <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
   <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
+  <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7596#issuecomment-1225952646">
   <meta charset="utf-8">
   <style>
     .container {
@@ -38,10 +39,9 @@
       background: teal;
       height: 6px;
       width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
+      /* This "align-self" is actually the only alignment that matters here.
+         The flex containers' various "align-content" values have no impact on
+         the positioning of absolutely-positioned flex children. */
       align-self: center;
     }
   </style>
@@ -57,23 +57,23 @@
     <div class="container" style="align-content: normal"><div data-offset-x="2" data-offset-y="3"></div></div>
     <br>
     <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="5"></div></div>
+    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="3"></div></div>
+    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="3"></div></div>
     <br>
     <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="1"></div></div>
+    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="3"></div></div>
     <div class="container" style="align-content: space-around"><div data-offset-x="2" data-offset-y="3"></div></div>
     <div class="container" style="align-content: space-evenly"><div data-offset-x="2" data-offset-y="3"></div></div>
     <div class="container" style="align-content: stretch"><div data-offset-x="2" data-offset-y="3"></div></div>
     <br>
     <!-- <content-position>, part 1 -->
     <div class="container" style="align-content: center"><div data-offset-x="2" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="5"></div></div>
+    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="3"></div></div>
+    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="3"></div></div>
     <br>
     <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="5"></div></div>
+    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="3"></div></div>
+    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="3"></div></div>
     <br>
   </div>
   <div class="small">
@@ -83,23 +83,23 @@
     <div class="container" style="align-content: normal"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <br>
     <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="-3"></div></div>
+    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="-1"></div></div>
+    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <br>
     <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="1"></div></div>
+    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <div class="container" style="align-content: space-around"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <div class="container" style="align-content: space-evenly"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <div class="container" style="align-content: stretch"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <br>
     <!-- <content-position>, part 1 -->
     <div class="container" style="align-content: center"><div data-offset-x="2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="-3"></div></div>
+    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="-1"></div></div>
+    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <br>
     <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="-3"></div></div>
+    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="-1"></div></div>
+    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="-1"></div></div>
     <br>
   </div>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-002.html
deleted file mode 100644
index cc94b9eb..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-002.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a row wrap-reverse flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: row wrap-reverse;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="2" data-offset-y="3"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="2" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="2" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="2" data-offset-y="3"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="2" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-003.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-003.html
deleted file mode 100644
index f0f163c..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-003.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a row-reverse flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: row-reverse wrap;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-004.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-004.html
deleted file mode 100644
index 74ccc0c5..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-004.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a row-reverse wrap-reverse flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: row-reverse wrap-reverse;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-005.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-005.html
deleted file mode 100644
index ac48584..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-005.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a column flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: column wrap;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-006.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-006.html
deleted file mode 100644
index e9be819..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-006.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a column wrap-reverse flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: column wrap-reverse;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-007.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-007.html
deleted file mode 100644
index 0b6f812..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-007.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a column-reverse flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: column-reverse wrap;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-008.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-008.html
deleted file mode 100644
index 37812f5..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-008.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a column-reverse wrap-reverse flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: column-reverse wrap-reverse;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="6" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="5"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="0" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="-3"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-001.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-001.html
deleted file mode 100644
index 214c267..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-001.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a RTL row flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: row wrap;
-      direction: rtl;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-002.html
deleted file mode 100644
index 2dfc20a..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-002.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a RTL column flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: column wrap;
-      direction: rtl;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-001.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-001.html
deleted file mode 100644
index d983b501..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-001.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a vertical-rl row flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: row wrap;
-      writing-mode: vertical-rl;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="6" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="0" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="2" data-offset-y="1"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-002.html
deleted file mode 100644
index a2424718..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-002.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a vertical-rl column flex container, with various "align-content" values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      position: relative;
-      flex-flow: column wrap;
-      writing-mode: vertical-rl;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-      /* This "align-self" only gets a chance to take effect when our container
-         has "align-content: stretch". In that case, it helps us verify that
-         the container's "align-content: stretch" is actually taking effect
-         and stretching the flex line (and giving us space to center in). */
-      align-self: center;
-    }
-  </style>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="/resources/check-layout-th.js"></script>
-</head>
-<body onload="checkLayout('.container > div')">
-  <div class="big">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="10" data-offset-y="3"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="10" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="10" data-offset-y="5"></div></div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- The various align-content values, from
-         https://www.w3.org/TR/css-align-3/#propdef-align-content -->
-    <!-- normal -->
-    <div class="container" style="align-content: normal"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <baseline-position> -->
-    <div class="container" style="align-content: baseline"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: last baseline"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-distribution> -->
-    <div class="container" style="align-content: space-between"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: space-around"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: space-evenly"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: stretch"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <br>
-    <!-- <content-position>, part 1 -->
-    <div class="container" style="align-content: center"><div data-offset-x="-2" data-offset-y="-1"></div></div>
-    <div class="container" style="align-content: start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-    <!-- <content-position>, part 2 -->
-    <div class="container" style="align-content: flex-start"><div data-offset-x="-2" data-offset-y="1"></div></div>
-    <div class="container" style="align-content: flex-end"><div data-offset-x="-2" data-offset-y="-3"></div></div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001-ref.html
deleted file mode 100644
index ec0d6cc..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001-ref.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Reference</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: block;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      background: teal;
-      height: 6px;
-      width: 8px;
-    }
-    .big   .alignStart  { /* nothing special */ }
-    .big   .alignCenter { margin-top: 2px }
-    .big   .alignEnd    { margin-top: 4px }
-    .small .alignStart  { /* nothing special */ }
-    .small .alignCenter { margin-top: -2px }
-    .small .alignEnd    { margin-top: -4px }
-  </style>
-</head>
-<body>
-  <div class="big">
-    <!-- <content-distribution> with implied fallback -->
-    <div class="container"><div class="alignStart"><!--space-between--></div></div>
-    <div class="container"><div class="alignCenter"><!--space-around--></div></div>
-    <div class="container"><div class="alignCenter"><!--space-evenly--></div></div>
-    <div class="container"><div class="alignStart"><!--stretch--></div></div>
-    <br>
-    <!-- <content-distribution> with explicit "flex-end" fallback -->
-    <div style="display: none">
-      <!--
-        These tests will be valid when
-        https://github.com/w3c/csswg-drafts/issues/1002 is fixed
-      -->
-      <div class="container"><div class="alignEnd"><!--space-between--></div></div>
-      <div class="container"><div class="alignEnd"><!--space-around--></div></div>
-      <div class="container"><div class="alignEnd"><!--space-evenly--></div></div>
-      <div class="container"><div class="alignEnd"><!--stretch--></div></div>
-    </div>
-    <br>
-  </div>
-  <div class="small">
-    <!-- <content-distribution> with implied fallback -->
-    <div class="container"><div class="alignStart"><!--space-between--></div></div>
-    <div class="container"><div class="alignCenter"><!--space-around--></div></div>
-    <div class="container"><div class="alignCenter"><!--space-evenly--></div></div>
-    <div class="container"><div class="alignStart"><!--stretch--></div></div>
-    <br>
-    <!-- <content-distribution> with explicit "flex-end" fallback -->
-    <div style="display: none">
-      <!--
-        These tests will be valid when
-        https://github.com/w3c/csswg-drafts/issues/1002 is fixed
-      -->
-      <div class="container"><div class="alignEnd"><!--space-between--></div></div>
-      <div class="container"><div class="alignEnd"><!--space-around--></div></div>
-      <div class="container"><div class="alignEnd"><!--space-evenly--></div></div>
-      <div class="container"><div class="alignEnd"><!--stretch--></div></div>
-    </div>
-    <br>
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001.html
deleted file mode 100644
index 80dd2f6..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<!--
-     Any copyright is dedicated to the Public Domain.
-     http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
-<head>
-  <title>CSS Test: Static position of abspos children in a row flex container, with various "align-content" values with explicit fallback values</title>
-  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
-  <link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items">
-  <link rel="match" href="flex-abspos-staticpos-fallback-align-content-001-ref.html">
-  <meta charset="utf-8">
-  <style>
-    .container {
-      display: flex;
-      flex-flow: row wrap;
-      padding: 1px 2px;
-      border: 1px solid black;
-      background: yellow;
-      margin-bottom: 5px;
-      margin-right: 5px;
-      float: left; /* For testing in "rows" of containers */
-    }
-    br { clear: both }
-
-    .big > .container {
-      height: 10px;
-      width: 16px;
-    }
-    .small > .container {
-      height: 2px;
-      width: 4px;
-    }
-
-    .container > * {
-      position: absolute;
-      background: teal;
-      height: 6px;
-      width: 8px;
-    }
-  </style>
-</head>
-<body>
-  <div class="big">
-    <!-- <content-distribution> with implied fallback -->
-    <div class="container" style="align-content: space-between"><div></div></div>
-    <div class="container" style="align-content: space-around"><div></div></div>
-    <div class="container" style="align-content: space-evenly"><div></div></div>
-    <div class="container" style="align-content: stretch"><div></div></div>
-    <br>
-    <!-- <content-distribution> with explicit "flex-end" fallback -->
-    <!--
-    <div class="container" style="align-content: space-between flex-end"><div></div></div>
-    <div class="container" style="align-content: space-around flex-end"><div></div></div>
-    <div class="container" style="align-content: space-evenly flex-end"><div></div></div>
-    <div class="container" style="align-content: stretch flex-end"><div></div></div>
-    -->
-    <br>
-  </div>
-  <div class="small">
-    <!-- <content-distribution> with implied fallback -->
-    <div class="container" style="align-content: space-between"><div></div></div>
-    <div class="container" style="align-content: space-around"><div></div></div>
-    <div class="container" style="align-content: space-evenly"><div></div></div>
-    <div class="container" style="align-content: stretch"><div></div></div>
-    <br>
-    <!-- <content-distribution> with explicit "flex-end" fallback -->
-    <!--
-    <div class="container" style="align-content: space-between flex-end"><div></div></div>
-    <div class="container" style="align-content: space-around flex-end"><div></div></div>
-    <div class="container" style="align-content: space-evenly flex-end"><div></div></div>
-    <div class="container" style="align-content: stretch flex-end"><div></div></div>
-    -->
-  </div>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html
index 04a65b4..192d4b3 100644
--- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html
@@ -13,7 +13,12 @@
 <body>
 <script>
 
-setup(() => assertSpeculationRulesIsSupported());
+setup(() => {
+  assertSpeculationRulesIsSupported();
+  assert_implements_optional(
+      'plugins' in navigator, 'navigator.plugins is not provided.'
+    );
+});
 
 promise_test(async t => {
   const uid = token();
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt
new file mode 100644
index 0000000..26f04d46
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt
@@ -0,0 +1,27 @@
+This is a testharness.js-based test.
+PASS .container > div 1
+PASS .container > div 2
+PASS .container > div 3
+PASS .container > div 4
+PASS .container > div 5
+PASS .container > div 6
+PASS .container > div 7
+PASS .container > div 8
+PASS .container > div 9
+PASS .container > div 10
+PASS .container > div 11
+PASS .container > div 12
+PASS .container > div 13
+PASS .container > div 14
+PASS .container > div 15
+PASS .container > div 16
+PASS .container > div 17
+PASS .container > div 18
+PASS .container > div 19
+PASS .container > div 20
+PASS .container > div 21
+PASS .container > div 22
+PASS .container > div 23
+PASS .container > div 24
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt
new file mode 100644
index 0000000..26f04d46
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt
@@ -0,0 +1,27 @@
+This is a testharness.js-based test.
+PASS .container > div 1
+PASS .container > div 2
+PASS .container > div 3
+PASS .container > div 4
+PASS .container > div 5
+PASS .container > div 6
+PASS .container > div 7
+PASS .container > div 8
+PASS .container > div 9
+PASS .container > div 10
+PASS .container > div 11
+PASS .container > div 12
+PASS .container > div 13
+PASS .container > div 14
+PASS .container > div 15
+PASS .container > div 16
+PASS .container > div 17
+PASS .container > div 18
+PASS .container > div 19
+PASS .container > div 20
+PASS .container > div 21
+PASS .container > div 22
+PASS .container > div 23
+PASS .container > div 24
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win10/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt b/third_party/blink/web_tests/platform/win10/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt
new file mode 100644
index 0000000..26f04d46
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win10/external/wpt/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt
@@ -0,0 +1,27 @@
+This is a testharness.js-based test.
+PASS .container > div 1
+PASS .container > div 2
+PASS .container > div 3
+PASS .container > div 4
+PASS .container > div 5
+PASS .container > div 6
+PASS .container > div 7
+PASS .container > div 8
+PASS .container > div 9
+PASS .container > div 10
+PASS .container > div 11
+PASS .container > div 12
+PASS .container > div 13
+PASS .container > div 14
+PASS .container > div 15
+PASS .container > div 16
+PASS .container > div 17
+PASS .container > div 18
+PASS .container > div 19
+PASS .container > div 20
+PASS .container > div 21
+PASS .container > div 22
+PASS .container > div 23
+PASS .container > div 24
+Harness: the test ran to completion.
+
diff --git a/third_party/lzma_sdk/google/BUILD.gn b/third_party/lzma_sdk/google/BUILD.gn
index c93c67c..41ef23c 100644
--- a/third_party/lzma_sdk/google/BUILD.gn
+++ b/third_party/lzma_sdk/google/BUILD.gn
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//testing/libfuzzer/fuzzer_test.gni")
+
 source_set("seven_zip_reader") {
   assert(
       !is_android,
@@ -29,7 +31,19 @@
     "//base",
     "//testing/gmock",
     "//testing/gtest",
+    "//third_party/lzma_sdk",
   ]
 
   data = [ "//third_party/lzma_sdk/google/test_data" ]
 }
+
+fuzzer_test("seven_zip_reader_fuzzer") {
+  sources = [ "seven_zip_reader_fuzzer.cc" ]
+  deps = [
+    ":seven_zip_reader",
+    "//base",
+    "//third_party/lzma_sdk",
+  ]
+
+  seed_corpus = "fuzzer_corpus"
+}
diff --git a/third_party/lzma_sdk/google/fuzzer_corpus/compressed_exe.7z b/third_party/lzma_sdk/google/fuzzer_corpus/compressed_exe.7z
new file mode 100644
index 0000000..6ec49f4
--- /dev/null
+++ b/third_party/lzma_sdk/google/fuzzer_corpus/compressed_exe.7z
Binary files differ
diff --git a/third_party/lzma_sdk/google/fuzzer_corpus/file_folder_file.7z b/third_party/lzma_sdk/google/fuzzer_corpus/file_folder_file.7z
new file mode 100644
index 0000000..7eb20f1
--- /dev/null
+++ b/third_party/lzma_sdk/google/fuzzer_corpus/file_folder_file.7z
Binary files differ
diff --git a/third_party/lzma_sdk/google/seven_zip_reader_fuzzer.cc b/third_party/lzma_sdk/google/seven_zip_reader_fuzzer.cc
new file mode 100644
index 0000000..f3f6a93
--- /dev/null
+++ b/third_party/lzma_sdk/google/seven_zip_reader_fuzzer.cc
@@ -0,0 +1,99 @@
+#include <stddef.h>
+#include <stdint.h>
+
+#include "base/files/file.h"
+#include "base/files/file_util.h"
+#include "base/no_destructor.h"
+#include "third_party/lzma_sdk/google/seven_zip_reader.h"
+
+extern "C" {
+#include "third_party/lzma_sdk/C/7zCrc.h"
+}
+
+namespace {
+
+class Delegate : public seven_zip::Delegate {
+ public:
+  Delegate() : buffer_(4096) {}
+
+  // seven_zip::Delegate implementation
+  void OnOpenError(seven_zip::Result result) {}
+  bool OnEntry(const seven_zip::EntryInfo& entry, base::span<uint8_t>& output) {
+    if (entry.file_size < 4096) {
+      buffer_.resize(entry.file_size);
+      output = base::make_span(buffer_);
+      return true;
+    } else {
+      return false;
+    }
+  }
+  bool OnDirectory(const seven_zip::EntryInfo& entry) { return true; }
+  bool EntryDone(seven_zip::Result result, const seven_zip::EntryInfo& entry) {
+    return true;
+  }
+
+ private:
+  std::vector<uint8_t> buffer_;
+};
+
+base::NoDestructor<base::File> archive_file;
+base::NoDestructor<base::File> temp_file;
+
+}  // namespace
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  [[maybe_unused]] static bool initialized = []() {
+    base::FilePath path;
+    if (base::CreateTemporaryFile(&path)) {
+      archive_file->Initialize(
+          path, (base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_READ |
+                 base::File::FLAG_WRITE | base::File::FLAG_WIN_TEMPORARY |
+                 base::File::FLAG_DELETE_ON_CLOSE |
+                 base::File::FLAG_WIN_SHARE_DELETE));
+    }
+
+    base::FilePath temp_path;
+    if (base::CreateTemporaryFile(&temp_path)) {
+      temp_file->Initialize(
+          temp_path, (base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_READ |
+                      base::File::FLAG_WRITE | base::File::FLAG_WIN_TEMPORARY |
+                      base::File::FLAG_DELETE_ON_CLOSE |
+                      base::File::FLAG_WIN_SHARE_DELETE));
+    }
+
+    // Create a fake CRC table that always returns 0 for the target value. This
+    // significantly increases the fuzzer's ability to safely mutate the
+    // headers. The values here were chosen to keep the CRC internal state as
+    // 0xffffffff in CrcUpdateT8. Other processors may choose a different CRC
+    // update function, and would need different values here. See the
+    // CrcGenerateTable function in //third_party/lzma_sdk/C/7zCrc.c.
+    seven_zip::EnsureLzmaSdkInitialized();
+    for (size_t i = 0; i < 256; i++) {
+      g_CrcTable[i] = 0xff000000;
+      g_CrcTable[i + 0x100] = 0xff000000;
+      g_CrcTable[i + 0x200] = 0;
+      g_CrcTable[i + 0x300] = 0;
+    }
+
+    for (size_t i = 0x0; i < 256; i++) {
+      g_CrcTable[i + 0x400] = 0xffffffff;
+      g_CrcTable[i + 0x500] = 0;
+      g_CrcTable[i + 0x600] = 0;
+      g_CrcTable[i + 0x700] = 0;
+    }
+
+    return true;
+  }();
+
+  if (!archive_file->IsValid() || !temp_file->IsValid())
+    return 0;
+
+  archive_file->SetLength(size);
+  archive_file->Write(0, reinterpret_cast<const char*>(data), size);
+
+  Delegate delegate;
+  seven_zip::Extract(archive_file->Duplicate(), temp_file->Duplicate(),
+                     delegate);
+
+  return 0;
+}
diff --git a/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc b/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc
index f6becec..f9183fd 100644
--- a/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc
+++ b/third_party/lzma_sdk/google/seven_zip_reader_unittest.cc
@@ -26,6 +26,9 @@
 //     bad_crc.7z | sed 's/:.*$//' | while read -r match; do \
 //     printf 'This is not an exe' | dd conv=notrunc of=bad_crc.7z \
 //     bs=1 seek=$match done
+//
+//   fake_crc_table.7z was created with a hex editor, replacing the three CRC
+//   values with 0.
 
 #include "third_party/lzma_sdk/google/seven_zip_reader.h"
 
@@ -40,6 +43,10 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+extern "C" {
+#include "third_party/lzma_sdk/C/7zCrc.h"
+}
+
 namespace seven_zip {
 
 namespace {
@@ -283,4 +290,63 @@
   Extract(std::move(file), std::move(temp_file), delegate);
 }
 
+class SevenZipReaderFakeCrcTableTest : public testing::Test {
+ public:
+  SevenZipReaderFakeCrcTableTest() = default;
+
+  void SetUp() override {
+    seven_zip::EnsureLzmaSdkInitialized();
+    for (size_t i = 0; i < 2048; i++) {
+      crc_table_[i] = g_CrcTable[i];
+    }
+
+    // Create a fake CRC table that always returns 0 for the target value. This
+    // significantly increases the fuzzer's ability to safely mutate the
+    // headers. The values here were chosen to keep the CRC internal state as
+    // 0xffffffff in CrcUpdateT8. Other processors may choose a different CRC
+    // update function, and would need different values here. See the
+    // CrcGenerateTable function in //third_party/lzma_sdk/C/7zCrc.c.
+    for (size_t i = 0; i < 256; i++) {
+      g_CrcTable[i] = 0xff000000;
+      g_CrcTable[i + 0x100] = 0xff000000;
+      g_CrcTable[i + 0x200] = 0;
+      g_CrcTable[i + 0x300] = 0;
+    }
+
+    for (size_t i = 0x0; i < 256; i++) {
+      g_CrcTable[i + 0x400] = 0xffffffff;
+      g_CrcTable[i + 0x500] = 0;
+      g_CrcTable[i + 0x600] = 0;
+      g_CrcTable[i + 0x700] = 0;
+    }
+  }
+
+  void TearDown() override {
+    for (size_t i = 0; i < 2048; i++) {
+      g_CrcTable[i] = crc_table_[i];
+    }
+  }
+
+ private:
+  std::array<uint8_t, 2048> crc_table_;
+};
+
+// This is useful functionality for the fuzzer, so we test it here.
+TEST_F(SevenZipReaderFakeCrcTableTest, EmptyCrcWithFakeTable) {
+  base::File file = OpenTestFile(FILE_PATH_LITERAL("fake_crc_table.7z"));
+  ASSERT_TRUE(file.IsValid());
+  base::File temp_file = OpenTemporaryFile();
+  ASSERT_TRUE(temp_file.IsValid());
+
+  StrictMock<MockSevenZipDelegate> delegate;
+  std::array<uint8_t, 19> buffer;
+  EXPECT_CALL(delegate, OnEntry(Field(&EntryInfo::file_size, 19), _))
+      .WillOnce(DoAll(SetArgReferee<1>(base::make_span(buffer)), Return(true)));
+  EXPECT_CALL(delegate, EntryDone(Result::kSuccess, _)).WillOnce(Return(false));
+
+  Extract(std::move(file), std::move(temp_file), delegate);
+
+  EXPECT_EQ(std::string(buffer.begin(), buffer.end()), "This is not an exe\n");
+}
+
 }  // namespace seven_zip
diff --git a/third_party/lzma_sdk/google/test_data/fake_crc_table.7z b/third_party/lzma_sdk/google/test_data/fake_crc_table.7z
new file mode 100644
index 0000000..6ec49f4
--- /dev/null
+++ b/third_party/lzma_sdk/google/test_data/fake_crc_table.7z
Binary files differ
diff --git a/third_party/polymer/v3_0/components-chromium/iron-a11y-announcer/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-a11y-announcer/BUILD.gn
index eeed194e..565202d 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-a11y-announcer/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-a11y-announcer/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-a11y-keys-behavior/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-a11y-keys-behavior/BUILD.gn
index fd0c325..bda05434 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-a11y-keys-behavior/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-a11y-keys-behavior/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-a11y-keys/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-a11y-keys/BUILD.gn
index 2dd7ef7..809696a8 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-a11y-keys/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-a11y-keys/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-behaviors/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-behaviors/BUILD.gn
index d1de62e..d364b190 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-behaviors/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-behaviors/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-collapse/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-collapse/BUILD.gn
index 6f044f14..6c372785 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-collapse/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-collapse/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-dropdown/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-dropdown/BUILD.gn
index ae0b389..a55520a 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-dropdown/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-dropdown/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-fit-behavior/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-fit-behavior/BUILD.gn
index 26cd036..c99278d 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-fit-behavior/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-fit-behavior/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-flex-layout/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-flex-layout/BUILD.gn
index a50af9bb..5bd7fd1 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-flex-layout/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-flex-layout/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-icon/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-icon/BUILD.gn
index d8986bf..b473919 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-icon/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-icon/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-iconset-svg/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-iconset-svg/BUILD.gn
index 332bf30b..2a489069 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-iconset-svg/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-iconset-svg/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-list/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-list/BUILD.gn
index 2816e4bd..6309941a2 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-list/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-list/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-location/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-location/BUILD.gn
index 2ab89a9..8b9fa00 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-location/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-location/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-media-query/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-media-query/BUILD.gn
index 2395ed5..9e6ab91 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-media-query/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-media-query/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-meta/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-meta/BUILD.gn
index 4587b20..e7a3e4a 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-meta/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-meta/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-overlay-behavior/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-overlay-behavior/BUILD.gn
index fb8c50f..fc21821 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-overlay-behavior/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-overlay-behavior/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-pages/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-pages/BUILD.gn
index c5c3626..01e9de66 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-pages/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-pages/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-range-behavior/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-range-behavior/BUILD.gn
index 1c826732..a2696a4 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-range-behavior/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-range-behavior/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-resizable-behavior/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-resizable-behavior/BUILD.gn
index 9dba09b..3108c36 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-resizable-behavior/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-resizable-behavior/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-scroll-target-behavior/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-scroll-target-behavior/BUILD.gn
index 2240c2f6..f5a1ca61 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-scroll-target-behavior/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-scroll-target-behavior/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-scroll-threshold/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-scroll-threshold/BUILD.gn
index 07047ffb..1a86799 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-scroll-threshold/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-scroll-threshold/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-selector/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-selector/BUILD.gn
index f21c7dc..31b02da 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-selector/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-selector/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/iron-test-helpers/BUILD.gn b/third_party/polymer/v3_0/components-chromium/iron-test-helpers/BUILD.gn
index 104afcc..1b2b940 100644
--- a/third_party/polymer/v3_0/components-chromium/iron-test-helpers/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/iron-test-helpers/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/neon-animation/BUILD.gn b/third_party/polymer/v3_0/components-chromium/neon-animation/BUILD.gn
index effa0b2..a387a58 100644
--- a/third_party/polymer/v3_0/components-chromium/neon-animation/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/neon-animation/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/neon-animation/animations/BUILD.gn b/third_party/polymer/v3_0/components-chromium/neon-animation/animations/BUILD.gn
index feb6c19..34cd6f06 100644
--- a/third_party/polymer/v3_0/components-chromium/neon-animation/animations/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/neon-animation/animations/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/paper-behaviors/BUILD.gn b/third_party/polymer/v3_0/components-chromium/paper-behaviors/BUILD.gn
index b23769152..302fcdf 100644
--- a/third_party/polymer/v3_0/components-chromium/paper-behaviors/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/paper-behaviors/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/paper-progress/BUILD.gn b/third_party/polymer/v3_0/components-chromium/paper-progress/BUILD.gn
index 39ecb37..802ccc2f 100644
--- a/third_party/polymer/v3_0/components-chromium/paper-progress/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/paper-progress/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/paper-ripple/BUILD.gn b/third_party/polymer/v3_0/components-chromium/paper-ripple/BUILD.gn
index dd04d315..4119f96a 100644
--- a/third_party/polymer/v3_0/components-chromium/paper-ripple/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/paper-ripple/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/paper-spinner/BUILD.gn b/third_party/polymer/v3_0/components-chromium/paper-spinner/BUILD.gn
index 81baf61..c8c446c 100644
--- a/third_party/polymer/v3_0/components-chromium/paper-spinner/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/paper-spinner/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/paper-styles/BUILD.gn b/third_party/polymer/v3_0/components-chromium/paper-styles/BUILD.gn
index efd662b..141a17b 100644
--- a/third_party/polymer/v3_0/components-chromium/paper-styles/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/paper-styles/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/third_party/polymer/v3_0/components-chromium/paper-tooltip/BUILD.gn b/third_party/polymer/v3_0/components-chromium/paper-tooltip/BUILD.gn
index b45115f..922e9d6e 100644
--- a/third_party/polymer/v3_0/components-chromium/paper-tooltip/BUILD.gn
+++ b/third_party/polymer/v3_0/components-chromium/paper-tooltip/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
+# 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.
 #
diff --git a/tools/clang/blink_gc_plugin/BadPatternFinder.cpp b/tools/clang/blink_gc_plugin/BadPatternFinder.cpp
index d4e104f..129cece 100644
--- a/tools/clang/blink_gc_plugin/BadPatternFinder.cpp
+++ b/tools/clang/blink_gc_plugin/BadPatternFinder.cpp
@@ -155,18 +155,13 @@
       : diagnostics_(diagnostics) {}
 
   void Register(MatchFinder& match_finder) {
+    auto has_member_name = hasAnyName("::blink::Member", "::blink::WeakMember",
+                                      "::cppgc::internal::BasicMember");
     auto class_member_variable_matcher =
-        varDecl(hasType(recordDecl(
-                    hasAnyName("::blink::Member", "::blink::WeakMember",
-                               "::cppgc::internal::BasicMember"))))
+        varDecl(anyOf(hasType(recordDecl(has_member_name)),
+                      hasType(typeAliasTemplateDecl(has_member_name))))
             .bind("member");
     match_finder.addDynamicMatcher(class_member_variable_matcher, this);
-    auto alias_member_variable_matcher =
-        varDecl(hasType(typeAliasTemplateDecl(
-                    hasAnyName("::blink::Member", "::blink::WeakMember",
-                               "::cppgc::Member", "::cppgc::WeakMember"))))
-            .bind("member");
-    match_finder.addDynamicMatcher(alias_member_variable_matcher, this);
   }
 
   void run(const MatchFinder::MatchResult& result) override {
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 673c359..0c9ab80 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -424,13 +424,12 @@
       'ios-simulator-code-coverage': 'clang_code_coverage_ios_xctest',
       'ios-simulator-cr-recipe': 'ios_simulator_debug_static_bot_xctest',
       'ios-simulator-cronet': 'ios_cronet_xctest_reclient',
-      'ios-simulator-cronet (reclient shadow)': 'ios_cronet_xctest_reclient',
       'ios-simulator-multi-window': 'ios_simulator_debug_static_bot_xctest',
       'ios-webkit-tot': 'ios_simulator_debug_static_bot_xctest',
       'ios-wpt-fyi-rel': 'ios_simulator_debug_static_bot_xctest',
-      'ios15-beta-simulator': 'ios_simulator_debug_static_bot_xctest',
+      'ios15-beta-simulator': 'ios_simulator_debug_static_bot_xctest_reclient',
       'ios15-sdk-device': 'ios_device_release_static_bot_xctest_reclient',
-      'ios15-sdk-simulator': 'ios_simulator_debug_static_bot_xctest',
+      'ios15-sdk-simulator': 'ios_simulator_debug_static_bot_xctest_reclient',
       'ios16-beta-simulator': 'ios_simulator_debug_static_bot_xctest',
       'ios16-sdk-simulator': 'ios_simulator_debug_static_bot_xctest',
       'lacros-amd64-generic-rel (goma cache silo)': 'chromeos_amd64-generic_lacros_rel',
@@ -635,7 +634,6 @@
       'Mac Builder (dbg)': 'gpu_tests_debug_bot',
       'ios-catalyst': 'ios_catalyst_debug_static_bot_compile_only_libfuzzer_asan_no_dsyms_no_remoting_reclient',
       'ios-device': 'ios_device_release_compile_only_reclient',
-      'ios-device (reclient shadow)': 'ios_device_release_compile_only_reclient',
       'ios-simulator': 'ios_simulator_debug_static_bot_xctest_reclient',
       'ios-simulator-full-configs': 'ios_simulator_debug_static_bot_xctest_reclient',
       'ios-simulator-noncq': 'ios_simulator_debug_static_bot_xctest_reclient',
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json
index 531d7500..e3ca64c7 100644
--- a/tools/mb/mb_config_expectations/chromium.fyi.json
+++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -1000,31 +1000,6 @@
       "use_remoteexec": true
     }
   },
-  "ios-simulator-cronet (reclient shadow)": {
-    "gn_args": {
-      "disable_brotli_filter": false,
-      "disable_file_support": true,
-      "enable_remoting": false,
-      "enable_run_ios_unittests_with_xctest": true,
-      "enable_websockets": false,
-      "include_transport_security_state_preload_list": false,
-      "ios_deployment_target": "11.0",
-      "ios_set_attributes_for_xcode_project_generation": false,
-      "ios_stack_profiler_enabled": false,
-      "is_component_build": false,
-      "is_cronet_build": true,
-      "is_debug": true,
-      "symbol_level": 1,
-      "target_cpu": "x64",
-      "target_environment": "simulator",
-      "target_os": "ios",
-      "use_allocator_shim": false,
-      "use_crash_key_stubs": true,
-      "use_partition_alloc": false,
-      "use_platform_icu_alternatives": true,
-      "use_remoteexec": true
-    }
-  },
   "ios-simulator-multi-window": {
     "gn_args": {
       "enable_run_ios_unittests_with_xctest": true,
@@ -1074,7 +1049,7 @@
       "target_cpu": "x64",
       "target_environment": "simulator",
       "target_os": "ios",
-      "use_goma": true
+      "use_remoteexec": true
     }
   },
   "ios15-sdk-device": {
@@ -1101,7 +1076,7 @@
       "target_cpu": "x64",
       "target_environment": "simulator",
       "target_os": "ios",
-      "use_goma": true
+      "use_remoteexec": true
     }
   },
   "ios16-beta-simulator": {
diff --git a/tools/mb/mb_config_expectations/chromium.mac.json b/tools/mb/mb_config_expectations/chromium.mac.json
index d116700..d8efba3 100644
--- a/tools/mb/mb_config_expectations/chromium.mac.json
+++ b/tools/mb/mb_config_expectations/chromium.mac.json
@@ -52,21 +52,6 @@
       "use_remoteexec": true
     }
   },
-  "ios-device (reclient shadow)": {
-    "gn_args": {
-      "dcheck_always_on": false,
-      "ios_code_signing_identity_description": "Apple Development",
-      "ios_enable_code_signing": false,
-      "ios_set_attributes_for_xcode_project_generation": false,
-      "is_component_build": false,
-      "is_debug": false,
-      "symbol_level": 0,
-      "target_cpu": "arm64",
-      "target_environment": "device",
-      "target_os": "ios",
-      "use_remoteexec": true
-    }
-  },
   "ios-simulator": {
     "gn_args": {
       "enable_run_ios_unittests_with_xctest": true,
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 92a7ed39..88156e7 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -3320,12 +3320,6 @@
   <int value="7" label="Cached Data Cleared"/>
 </enum>
 
-<enum name="AppListAddPageType">
-  <int value="0" label="By Dragging App"/>
-  <int value="1" label="By Moving App With Keyboard"/>
-  <int value="2" label="By Syncing or Intalling App"/>
-</enum>
-
 <enum name="AppListAppMovingType">
   <int value="0" label="MOVE_BY_DRAG_INTO_FOLDER"/>
   <int value="1" label="MOVE_BY_DRAG_OUT_OF_FOLDER"/>
@@ -32467,6 +32461,7 @@
   <int value="1015" label="CalendarIntegrationEnabled"/>
   <int value="1016" label="DeviceReportXDREvents"/>
   <int value="1017" label="TrashEnabled"/>
+  <int value="1018" label="ShoppingListEnabled"/>
 </enum>
 
 <enum name="EnterprisePoliciesSources">
@@ -68112,6 +68107,7 @@
   <int value="15" label="chrome-extension"/>
   <int value="16" label="view-source"/>
   <int value="17" label="externalfile"/>
+  <int value="18" label="isolated-app"/>
 </enum>
 
 <enum name="NavigationSuggestionDigitalAssetLinkValidationEvent">
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml
index 2974281a..35dc54d 100644
--- a/tools/metrics/histograms/metadata/android/histograms.xml
+++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -953,26 +953,6 @@
   </summary>
 </histogram>
 
-<histogram name="Android.ClipBoard.getImageDuration{ImageType}" units="ms"
-    expires_after="2022-10-31">
-  <owner>gangwu@chromium.org</owner>
-  <owner>wenyufu@chromium.org</owner>
-  <summary>
-    Records the duration for Android Clipboard to load the images from Uri
-    backed by a temporary file. Recorded when image is requested from Clipboard
-    (e.g Image paste), and read into memory as bytes. Record for {ImageType}
-  </summary>
-  <token key="ImageType">
-    <variant name=".NonPngImages"
-        summary="image with type other than png, so encoding is needed. The
-                 duration includes reading image as bitmap, and conversion
-                 into png."/>
-    <variant name=".PngImages"
-        summary="image with type as png, so no encoding is needed. The
-                 duration includes reading bytes from the file stream."/>
-  </token>
-</histogram>
-
 <histogram name="Android.ContactsPicker.ContactCount" units="Contacts"
     expires_after="2023-06-01">
   <owner>finnur@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/apps/histograms.xml b/tools/metrics/histograms/metadata/apps/histograms.xml
index bc04f4b..007f82a 100644
--- a/tools/metrics/histograms/metadata/apps/histograms.xml
+++ b/tools/metrics/histograms/metadata/apps/histograms.xml
@@ -338,16 +338,6 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.AppList.AppsGridAddPage" enum="AppListAddPageType"
-    expires_after="2023-03-22">
-  <owner>anasalazar@chromium.org</owner>
-  <owner>newcomer@chromium.org</owner>
-  <summary>
-    The different ways to add page in app list's apps grid. Logged when the page
-    is created.
-  </summary>
-</histogram>
-
 <histogram
     name="Apps.AppList.CardifiedStateAnimation.AnimationSmoothness{EnterOrExitCardifiedState}"
     units="%" expires_after="2022-12-02">
diff --git a/tools/metrics/histograms/metadata/blink/histograms.xml b/tools/metrics/histograms/metadata/blink/histograms.xml
index ffd666c..58081508 100644
--- a/tools/metrics/histograms/metadata/blink/histograms.xml
+++ b/tools/metrics/histograms/metadata/blink/histograms.xml
@@ -2402,7 +2402,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.PendingOriginCount" units="origins"
-    expires_after="2022-10-30">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
   <summary>
@@ -2423,7 +2423,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.Infobar" enum="WebOTPServiceInfobarAction"
-    expires_after="2023-02-12">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
@@ -2454,7 +2454,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.TimeCancel" units="ms"
-    expires_after="2022-10-30">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
@@ -2465,7 +2465,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.TimeCancelOnKeyboardDismissal" units="ms"
-    expires_after="2022-10-30">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
@@ -2476,7 +2476,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.TimeCancelOnSuccess" units="ms"
-    expires_after="2022-10-30">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
@@ -2487,7 +2487,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.TimeContinueOnSuccess" units="ms"
-    expires_after="2023-02-12">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
@@ -2498,7 +2498,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.TimeSmsReceive" units="ms"
-    expires_after="2022-10-30">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
@@ -2509,7 +2509,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.TimeSuccess" units="ms"
-    expires_after="2023-01-01">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
@@ -2521,7 +2521,7 @@
 </histogram>
 
 <histogram name="Blink.Sms.Receive.TimeUserCancel" units="ms"
-    expires_after="2023-02-12">
+    expires_after="2023-03-05">
   <owner>yigu@chromium.org</owner>
   <owner>goto@chromium.org</owner>
   <owner>fedcm-core@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/event/histograms.xml b/tools/metrics/histograms/metadata/event/histograms.xml
index ba3e721..a373014 100644
--- a/tools/metrics/histograms/metadata/event/histograms.xml
+++ b/tools/metrics/histograms/metadata/event/histograms.xml
@@ -348,31 +348,6 @@
   </token>
 </histogram>
 
-<histogram name="Event.Latency.Scroll.Wheel.TimeToHandled2"
-    units="microseconds" expires_after="2021-12-19">
-  <obsolete>
-    Removed in 2022-09. Replaced by Graphics.Smoothness.EventLatency UKM
-    metrics.
-  </obsolete>
-  <owner>flackr@chromium.org</owner>
-  <owner>input-dev@chromium.org</owner>
-  <summary>
-    Time between initial creation of a wheel event and the generated
-    ScrollUpdate gesture event is handled on main/impl thread (specified by
-    suffix). If no swap was induced by the ScrollUpdate gesture event, no
-    recording is made. Unlike Event.Latency.ScrollUpdate.Wheel.TimeToHandled2
-    this metric includes the first GSU of every scrolling sequence as well.
-
-    Team: input-dev@chromium.org.
-
-    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.
-  </summary>
-</histogram>
-
 <histogram
     name="Event.Latency.ScrollBegin.Scrollbar.BrowserNotifiedToBeforeGpuSwap2"
     units="microseconds" expires_after="2023-01-01">
diff --git a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
index 409965a3..dcdc904 100644
--- a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
@@ -9022,7 +9022,6 @@
 <histogram_suffixes name="ScrollUpdateHandledThread" separator="_">
   <suffix name="Impl" label="ScrollUpdate handled on impl thread"/>
   <suffix name="Main" label="ScrollUpdate handled on main thread"/>
-  <affected-histogram name="Event.Latency.Scroll.Wheel.TimeToHandled2"/>
   <affected-histogram
       name="Event.Latency.ScrollBegin.Scrollbar.HandledToRendererSwap2"/>
   <affected-histogram
diff --git a/tools/metrics/histograms/metadata/mobile/histograms.xml b/tools/metrics/histograms/metadata/mobile/histograms.xml
index 8a9babb..58b000e 100644
--- a/tools/metrics/histograms/metadata/mobile/histograms.xml
+++ b/tools/metrics/histograms/metadata/mobile/histograms.xml
@@ -893,7 +893,7 @@
 </histogram>
 
 <histogram name="MobileFre.SlowestLoadPoint" enum="LoadPoint"
-    expires_after="2022-11-01">
+    expires_after="2023-11-01">
   <owner>triploblastic@chromium.org</owner>
   <owner>chrome-signin-team@google.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/optimization/histograms.xml b/tools/metrics/histograms/metadata/optimization/histograms.xml
index f5d2d2b6..dcfc36c 100644
--- a/tools/metrics/histograms/metadata/optimization/histograms.xml
+++ b/tools/metrics/histograms/metadata/optimization/histograms.xml
@@ -862,7 +862,7 @@
 </histogram>
 
 <histogram name="OptimizationGuide.PageTextDump.AbandonedRequests"
-    units="count" expires_after="2022-10-30">
+    units="count" expires_after="M109">
   <owner>robertogden@chromium.org</owner>
   <owner>chrome-intelligence-core@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/permissions/histograms.xml b/tools/metrics/histograms/metadata/permissions/histograms.xml
index b14f19b..df82a6c 100644
--- a/tools/metrics/histograms/metadata/permissions/histograms.xml
+++ b/tools/metrics/histograms/metadata/permissions/histograms.xml
@@ -710,7 +710,7 @@
 </histogram>
 
 <histogram name="Permissions.Prompt.Infobar.DetailsExpanded" enum="Boolean"
-    expires_after="2022-10-31">
+    expires_after="2023-10-31">
   <owner>andypaicu@chromium.org</owner>
   <owner>engedy@chromium.org</owner>
   <owner>hkamila@chromium.org</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index bb15b48..5c5322b 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -6,7 +6,7 @@
         },
         "win": {
             "hash": "464349636569a9f96e9ee2dc440a85667ef862db",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/bb1b58e6d1d86b3122bb9574f2530093ff1cc2eb/trace_processor_shell.exe"
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/fb24424ca970fa27cf04a8db10f87c362a76d288/trace_processor_shell.exe"
         },
         "linux_arm": {
             "hash": "58893933be305d3bfe0a72ebebcacde2ac3ca893",
@@ -22,7 +22,7 @@
         },
         "linux": {
             "hash": "120c76863562e2e62a7c3c94906fb617d1b04bea",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/bb1b58e6d1d86b3122bb9574f2530093ff1cc2eb/trace_processor_shell"
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/fb24424ca970fa27cf04a8db10f87c362a76d288/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/ui/android/java/src/org/chromium/ui/base/ClipboardImpl.java b/ui/android/java/src/org/chromium/ui/base/ClipboardImpl.java
index 82a61840..b1f7c23 100644
--- a/ui/android/java/src/org/chromium/ui/base/ClipboardImpl.java
+++ b/ui/android/java/src/org/chromium/ui/base/ClipboardImpl.java
@@ -16,7 +16,6 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.PersistableBundle;
-import android.os.SystemClock;
 import android.text.Html;
 import android.text.Spanned;
 import android.text.TextUtils;
@@ -40,7 +39,6 @@
 import org.chromium.base.compat.ApiHelperForO;
 import org.chromium.base.compat.ApiHelperForP;
 import org.chromium.base.compat.ApiHelperForS;
-import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.base.task.AsyncTask;
 import org.chromium.components.url_formatter.UrlFormatter;
@@ -304,16 +302,12 @@
             // Android system clipboard contains an image, but it is not a PNG.
             // Try reading it as a bitmap and encoding to a PNG.
             try {
-                final long startTime = SystemClock.elapsedRealtime();
                 // TODO(crbug.com/1280468): This uses the unsafe ImageDecoder class.
                 Bitmap bitmap = ApiCompatibilityUtils.getBitmapByUri(cr, uri);
                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 // |quality| is ignored since PNG encoding is lossless. See
                 // https://developer.android.com/reference/android/graphics/Bitmap.CompressFormat#PNG.
                 bitmap.compress(Bitmap.CompressFormat.PNG, /*quality=*/100, baos);
-                RecordHistogram.recordMediumTimesHistogram(
-                        "Android.ClipBoard.getImageDuration.NonPngImages",
-                        SystemClock.elapsedRealtime() - startTime);
                 if (baos.size() > MAX_ALLOWED_PNG_SIZE_BYTES) return null;
 
                 return baos.toByteArray();
@@ -330,12 +324,8 @@
                 return null;
             }
             byte[] data = new byte[(int) afd.getLength()];
-            final long startTime = SystemClock.elapsedRealtime();
             fileStream = new FileInputStream(afd.getFileDescriptor());
             fileStream.read(data);
-            RecordHistogram.recordMediumTimesHistogram(
-                    "Android.ClipBoard.getImageDuration.PngImages",
-                    SystemClock.elapsedRealtime() - startTime);
             return data;
         } catch (IOException e) {
             return null;
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
index 042fb3c..22a0515 100644
--- a/ui/base/BUILD.gn
+++ b/ui/base/BUILD.gn
@@ -1130,6 +1130,7 @@
       "ime/composition_text_unittest.cc",
       "ime/input_method_base_unittest.cc",
       "ime/mojom/ime_mojom_traits_unittest.cc",
+      "ime/surrounding_text_tracker_unittest.cc",
     ]
     if (is_win) {
       sources += [
diff --git a/ui/base/ime/BUILD.gn b/ui/base/ime/BUILD.gn
index c836de1b..649e717 100644
--- a/ui/base/ime/BUILD.gn
+++ b/ui/base/ime/BUILD.gn
@@ -68,6 +68,8 @@
     "input_method_observer.h",
     "mock_input_method.cc",
     "mock_input_method.h",
+    "surrounding_text_tracker.cc",
+    "surrounding_text_tracker.h",
     "text_edit_commands.h",
     "text_input_client.cc",
     "text_input_client.h",
diff --git a/ui/base/ime/linux/input_method_auralinux.cc b/ui/base/ime/linux/input_method_auralinux.cc
index a90ad708..b69065b 100644
--- a/ui/base/ime/linux/input_method_auralinux.cc
+++ b/ui/base/ime/linux/input_method_auralinux.cc
@@ -333,6 +333,9 @@
 }
 
 void InputMethodAuraLinux::UpdateContextFocusState() {
+  surrounding_text_.reset();
+  selection_range_ = gfx::Range::InvalidRange();
+
   auto old_text_input_type = text_input_type_;
   text_input_type_ = GetTextInputType();
 
@@ -394,7 +397,11 @@
                                  client->GetAutocorrectCharacterBounds());
 #endif
 
-    context_->SetSurroundingText(text, selection_range);
+    if (surrounding_text_ != text || selection_range_ != selection_range) {
+      surrounding_text_ = text;
+      selection_range_ = selection_range;
+      context_->SetSurroundingText(text, selection_range);
+    }
   }
 }
 
diff --git a/ui/base/ime/linux/input_method_auralinux.h b/ui/base/ime/linux/input_method_auralinux.h
index 2490492..1dc9bd1 100644
--- a/ui/base/ime/linux/input_method_auralinux.h
+++ b/ui/base/ime/linux/input_method_auralinux.h
@@ -98,6 +98,8 @@
   absl::optional<CommitResult> last_commit_result_;
 
   absl::optional<std::u16string> result_text_;
+  absl::optional<std::u16string> surrounding_text_;
+  gfx::Range selection_range_;
 
   ui::CompositionText composition_;
 
diff --git a/ui/base/ime/surrounding_text_tracker.cc b/ui/base/ime/surrounding_text_tracker.cc
new file mode 100644
index 0000000..4b64a1f
--- /dev/null
+++ b/ui/base/ime/surrounding_text_tracker.cc
@@ -0,0 +1,183 @@
+// 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 "ui/base/ime/surrounding_text_tracker.h"
+
+#include <utility>
+
+#include "base/check.h"
+#include "base/logging.h"
+
+namespace ui {
+
+SurroundingTextTracker::SurroundingTextTracker()
+    : predicted_state_{u"", gfx::Range(0), gfx::Range()} {}
+
+SurroundingTextTracker::~SurroundingTextTracker() = default;
+
+void SurroundingTextTracker::Reset() {
+  predicted_state_ = State{u"", gfx::Range(0), gfx::Range()};
+  expected_updates_.clear();
+}
+
+SurroundingTextTracker::UpdateResult SurroundingTextTracker::Update(
+    const base::StringPiece16 surrounding_text,
+    const gfx::Range& selection) {
+  for (auto it = expected_updates_.begin(); it != expected_updates_.end();
+       ++it) {
+    if (it->surrounding_text == surrounding_text &&
+        it->selection == selection) {
+      // Found the target state. Remove the older histories.
+      // Keep the last entry, because sometimes it is notified multiple times
+      // by client apps.
+      expected_updates_.erase(expected_updates_.begin(), it);
+      return UpdateResult::kUpdated;
+    }
+  }
+
+  VLOG(1) << "Unknown surrounding text update is found";
+  predicted_state_ =
+      State{std::u16string(surrounding_text), selection, gfx::Range()};
+  expected_updates_.clear();
+  expected_updates_.push_back(predicted_state_);
+  return UpdateResult::kReset;
+}
+
+void SurroundingTextTracker::OnSetEditableSelectionRange(
+    const gfx::Range& range) {
+  predicted_state_.selection = range;
+  expected_updates_.push_back(predicted_state_);
+}
+
+void SurroundingTextTracker::OnSetCompositionText(
+    const ui::CompositionText& composition) {
+  // If it has a composition text already, replace it.
+  // Otherwise, replace (or insert) selected text.
+  const gfx::Range& old_range = predicted_state_.composition.is_empty()
+                                    ? predicted_state_.selection
+                                    : predicted_state_.composition;
+  size_t composition_begin = old_range.GetMin();
+  predicted_state_.surrounding_text.replace(
+      composition_begin, old_range.length(), composition.text);
+  predicted_state_.selection =
+      gfx::Range(composition_begin + composition.selection.start(),
+                 composition_begin + composition.selection.end());
+  predicted_state_.composition = gfx::Range(
+      composition_begin, composition_begin + composition.text.length());
+  expected_updates_.push_back(predicted_state_);
+}
+
+void SurroundingTextTracker::OnSetCompositionFromExistingText(
+    const gfx::Range& range) {
+  predicted_state_.composition = range;
+  expected_updates_.push_back(predicted_state_);
+}
+
+void SurroundingTextTracker::OnConfirmCompositionText(bool keep_selection) {
+  if (predicted_state_.composition.is_empty())
+    return;
+
+  if (!keep_selection && !predicted_state_.composition.is_empty())
+    predicted_state_.selection = gfx::Range(predicted_state_.composition.end());
+  predicted_state_.composition = gfx::Range();
+  expected_updates_.push_back(predicted_state_);
+}
+
+void SurroundingTextTracker::OnClearCompositionText() {
+  if (predicted_state_.composition.is_empty())
+    return;
+
+  predicted_state_.surrounding_text.erase(
+      predicted_state_.composition.GetMin(),
+      predicted_state_.composition.length());
+  // Set selection to the position where composition existed.
+  predicted_state_.selection =
+      gfx::Range(predicted_state_.composition.GetMin());
+  predicted_state_.composition = gfx::Range();
+  expected_updates_.push_back(predicted_state_);
+}
+
+void SurroundingTextTracker::OnInsertText(
+    const base::StringPiece16 text,
+    TextInputClient::InsertTextCursorBehavior cursor_behavior) {
+  gfx::Range rewritten_range = predicted_state_.selection;
+  if (!predicted_state_.composition.is_empty()) {
+    // Cancel the current composition.
+    if (predicted_state_.composition.Intersects(rewritten_range)) {
+      // Selection and composition has overlap, so take the union here.
+      // Just after this section, the whole range will be replaced by |text|.
+      rewritten_range =
+          gfx::Range(std::min(predicted_state_.composition.GetMin(),
+                              rewritten_range.GetMin()),
+                     std::max(predicted_state_.composition.GetMax(),
+                              rewritten_range.GetMax()));
+    } else {
+      // Otherwise, remove the composition. If the composition appears before
+      // the rewritten range, the offset needs to be updated.
+      predicted_state_.surrounding_text.erase(
+          predicted_state_.composition.GetMin(),
+          predicted_state_.composition.length());
+      if (rewritten_range.GetMin() > predicted_state_.composition.GetMin()) {
+        rewritten_range = gfx::Range(
+            rewritten_range.start() - predicted_state_.composition.length(),
+            rewritten_range.end() - predicted_state_.composition.length());
+      }
+    }
+  }
+
+  predicted_state_.surrounding_text.replace(
+      rewritten_range.GetMin(), rewritten_range.length(), std::u16string(text));
+  predicted_state_.selection =
+      cursor_behavior ==
+              TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText
+          ? gfx::Range(rewritten_range.GetMin() + text.length())
+          : gfx::Range(rewritten_range.GetMin());
+  predicted_state_.composition = gfx::Range();
+  expected_updates_.push_back(predicted_state_);
+}
+
+void SurroundingTextTracker::OnExtendSelectionAndDelete(size_t before,
+                                                        size_t after) {
+  if (before == 0 && after == 0 && predicted_state_.selection.is_empty() &&
+      predicted_state_.composition.is_empty()) {
+    // Nothing happens for null deletion.
+    return;
+  }
+
+  gfx::Range delete_range(
+      predicted_state_.selection.GetMin() -
+          std::min(before, predicted_state_.selection.GetMin()),
+      std::min(predicted_state_.selection.GetMax() + after,
+               predicted_state_.surrounding_text.length()));
+  if (!predicted_state_.composition.is_empty()) {
+    // Cancel the current composition.
+    if (predicted_state_.composition.Intersects(delete_range)) {
+      // Expand the delete_range to include the whole composition range,
+      // if there's some overlap.
+      delete_range = gfx::Range(std::min(predicted_state_.composition.GetMin(),
+                                         delete_range.GetMin()),
+                                std::max(predicted_state_.composition.GetMax(),
+                                         delete_range.GetMax()));
+    } else {
+      // Otherwise, remove the composition here. If the composition appears
+      // before the delete_range, the offset needs to be updated.
+      predicted_state_.surrounding_text.erase(
+          predicted_state_.composition.GetMin(),
+          predicted_state_.composition.length());
+      if (delete_range.GetMin() > predicted_state_.composition.GetMin()) {
+        delete_range = gfx::Range(
+            delete_range.start() - predicted_state_.composition.length(),
+            delete_range.end() - predicted_state_.composition.length());
+      }
+    }
+  }
+
+  predicted_state_.surrounding_text.erase(delete_range.GetMin(),
+                                          delete_range.length());
+  predicted_state_.selection = gfx::Range(delete_range.GetMin());
+  predicted_state_.composition = gfx::Range();
+  expected_updates_.push_back(predicted_state_);
+}
+
+}  // namespace ui
diff --git a/ui/base/ime/surrounding_text_tracker.h b/ui/base/ime/surrounding_text_tracker.h
new file mode 100644
index 0000000..d7bb5b4
--- /dev/null
+++ b/ui/base/ime/surrounding_text_tracker.h
@@ -0,0 +1,84 @@
+// 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 UI_BASE_IME_SURROUNDING_TEXT_TRACKER_H_
+#define UI_BASE_IME_SURROUNDING_TEXT_TRACKER_H_
+
+#include <deque>
+#include <string>
+
+#include "base/component_export.h"
+#include "base/strings/string_piece.h"
+#include "ui/base/ime/text_input_client.h"
+#include "ui/gfx/range/range.h"
+
+namespace ui {
+
+struct CompositionText;
+
+// Tracks the surrounding text. Because IMF works in an asynchronous manner,
+// there will be timing gap that IM-Engine sends some request to the text input
+// client, and the commit is actually notified.
+// This class gives it a try to fill the gap by caching and emulating the
+// latest surrounding text under the assumption that text editing requests are
+// processed in a common manner.
+class COMPONENT_EXPORT(UI_BASE_IME) SurroundingTextTracker {
+ public:
+  struct State {
+    // Whole surrounding text, specifically this may include composition text.
+    std::u16string surrounding_text;
+    // Selection range. If it is empty, it means the cursor. Must not be
+    // InvalidRange. Must be fit in |surrounding_text| range.
+    gfx::Range selection;
+    // Composition range if it has. Maybe empty if there's no composition text.
+    // Must not be InvalidRange. Must be fit in |surrounding_text| range.
+    gfx::Range composition;
+  };
+
+  // The initial state is no-surrounding text, cursor at 0, and no composition.
+  SurroundingTextTracker();
+  SurroundingTextTracker(const SurroundingTextTracker&) = delete;
+  SurroundingTextTracker& operator=(const SurroundingTextTracker&) = delete;
+  ~SurroundingTextTracker();
+
+  const State& predicted_state() const { return predicted_state_; }
+
+  // Resets the internal state, including held histories.
+  void Reset();
+
+  enum class UpdateResult {
+    // Expected update entry is found in |expected_updates_|.
+    kUpdated,
+    // No update entry corresponding to the given arguments is found.
+    // All the states are reset to the given arguments.
+    kReset,
+  };
+  // Expected to be called on surrounding text update event from text input
+  // client. If there was some known state matching to the arguments,
+  // forgets the state histories before it, and returns kUpdateFoundInHistory.
+  // Otherwise, forgets everything and reset by the state of the given
+  // arguments, then returns kHistoryIsReset.
+  // Note intentiontally ignored composition text.
+  UpdateResult Update(const base::StringPiece16 surrounding_text,
+                      const gfx::Range& selection);
+
+  // The following methods are used to guess new surrounding text state.
+  // See TextInputClient for detailed behavior.
+  void OnSetEditableSelectionRange(const gfx::Range& range);
+  void OnSetCompositionText(const ui::CompositionText& composition);
+  void OnSetCompositionFromExistingText(const gfx::Range& range);
+  void OnConfirmCompositionText(bool keep_selection);
+  void OnClearCompositionText();
+  void OnInsertText(const base::StringPiece16 text,
+                    TextInputClient::InsertTextCursorBehavior cursor_behavior);
+  void OnExtendSelectionAndDelete(size_t before, size_t after);
+
+ private:
+  State predicted_state_;
+  std::deque<State> expected_updates_;
+};
+
+}  // namespace ui
+
+#endif  // UI_BASE_IME_SURROUNDING_TEXT_TRACKER_H_
diff --git a/ui/base/ime/surrounding_text_tracker_unittest.cc b/ui/base/ime/surrounding_text_tracker_unittest.cc
new file mode 100644
index 0000000..df631c4
--- /dev/null
+++ b/ui/base/ime/surrounding_text_tracker_unittest.cc
@@ -0,0 +1,352 @@
+// 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 "ui/base/ime/surrounding_text_tracker.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/ime/composition_text.h"
+
+namespace ui {
+
+TEST(SurroundingTextTracker, SetCompositionText) {
+  SurroundingTextTracker tracker;
+
+  ui::CompositionText composition;
+  composition.text = u"abc";
+  composition.selection = gfx::Range(3);  // at the end.
+
+  tracker.OnSetCompositionText(composition);
+
+  EXPECT_EQ(u"abc", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(3), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(0, 3), tracker.predicted_state().composition);
+
+  composition.text = u"xyzw";
+  composition.selection = gfx::Range(4);  // at the end.
+
+  tracker.OnSetCompositionText(composition);
+  EXPECT_EQ(u"xyzw", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(4), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(0, 4), tracker.predicted_state().composition);
+}
+
+TEST(SurroundingTextTracker, SetCompositionTextWithExistingText) {
+  SurroundingTextTracker tracker;
+  ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+            tracker.Update(u"abcdefg",
+                           gfx::Range(3)));  // Set cursor between c and d.
+
+  ui::CompositionText composition;
+  composition.text = u"xyz";
+  composition.selection = gfx::Range(3);  // at the end.
+
+  tracker.OnSetCompositionText(composition);
+
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(6), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(3, 6), tracker.predicted_state().composition);
+
+  composition.text = u"pqrst";
+  composition.selection = gfx::Range(0);  // at beginning.
+
+  tracker.OnSetCompositionText(composition);
+
+  EXPECT_EQ(u"abcpqrstdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(3), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(3, 8), tracker.predicted_state().composition);
+}
+
+TEST(SurroundingTextTracker, SetCompositionFromExistingText) {
+  SurroundingTextTracker tracker;
+  ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+            tracker.Update(u"abcdefg",
+                           gfx::Range(3)));  // Set cursor between c and d.
+  tracker.OnSetCompositionFromExistingText(gfx::Range(3, 5));
+  EXPECT_EQ(u"abcdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(3), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(3, 5), tracker.predicted_state().composition);
+}
+
+TEST(SurroundingTextTracker, ConfirmCompositionText) {
+  SurroundingTextTracker tracker;
+  ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+            tracker.Update(u"abcdefg",
+                           gfx::Range(3)));  // Set cursor between c and d.
+
+  ui::CompositionText composition;
+  composition.text = u"xyz";
+  composition.selection = gfx::Range(1);  // between x and y.
+
+  tracker.OnSetCompositionText(composition);
+
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(4), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(3, 6), tracker.predicted_state().composition);
+
+  tracker.OnConfirmCompositionText(/*keep_selection=*/false);
+
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(6), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+
+  // Nothing happens if no composition exists.
+  tracker.OnConfirmCompositionText(/*keep_selection=*/false);
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(6), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+}
+
+TEST(SurroundingTextTracker, ConfirmCompositionTextWithKeepSelection) {
+  SurroundingTextTracker tracker;
+  ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+            tracker.Update(u"abcdefg",
+                           gfx::Range(3)));  // Set cursor between c and d.
+
+  ui::CompositionText composition;
+  composition.text = u"xyz";
+  composition.selection = gfx::Range(1);  // between x and y.
+
+  tracker.OnSetCompositionText(composition);
+
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(4), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(3, 6), tracker.predicted_state().composition);
+
+  tracker.OnConfirmCompositionText(/*keep_selection=*/true);
+
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(4), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+
+  // Nothing happens if no composition exists.
+  tracker.OnConfirmCompositionText(/*keep_selection=*/true);
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(4), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+}
+
+TEST(SurroundingTextTracker, ClearCompositionText) {
+  SurroundingTextTracker tracker;
+  ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+            tracker.Update(u"abcdefg",
+                           gfx::Range(3)));  // Set cursor between c and d.
+
+  ui::CompositionText composition;
+  composition.text = u"xyz";
+  composition.selection = gfx::Range(1);  // between x and y.
+
+  tracker.OnSetCompositionText(composition);
+
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(4), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(3, 6), tracker.predicted_state().composition);
+
+  tracker.OnClearCompositionText();
+
+  EXPECT_EQ(u"abcdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(3), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+
+  // Set "cd" as composition text.
+  tracker.OnSetCompositionFromExistingText(gfx::Range(2, 4));
+  EXPECT_EQ(u"abcdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(3), tracker.predicted_state().selection);
+  EXPECT_EQ(gfx::Range(2, 4), tracker.predicted_state().composition);
+
+  // Then clear it again.
+  tracker.OnClearCompositionText();
+
+  EXPECT_EQ(u"abefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(2), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+
+  // Nothing should happen if there's no composition.
+  tracker.OnClearCompositionText();
+  EXPECT_EQ(u"abefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(2), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+}
+
+TEST(SurroundingTextTracker, InsertText) {
+  SurroundingTextTracker tracker;
+
+  ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+            tracker.Update(u"abcdefg",
+                           gfx::Range(3)));  // Set cursor between c and d.
+
+  tracker.OnInsertText(
+      u"xyz", TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(6), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+  EXPECT_EQ(SurroundingTextTracker::UpdateResult::kUpdated,
+            tracker.Update(u"abcxyzdefg", gfx::Range(6)));
+
+  ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+            tracker.Update(u"abcdefg",
+                           gfx::Range(3)));  // Set cursor between c and d.
+
+  tracker.OnInsertText(
+      u"xyz", TextInputClient::InsertTextCursorBehavior::kMoveCursorBeforeText);
+  EXPECT_EQ(u"abcxyzdefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(3), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+  EXPECT_EQ(SurroundingTextTracker::UpdateResult::kUpdated,
+            tracker.Update(u"abcxyzdefg", gfx::Range(3)));
+
+  ASSERT_EQ(
+      SurroundingTextTracker::UpdateResult::kReset,
+      tracker.Update(u"abcdefg", gfx::Range(3, 4)));  // Set selection on "d".
+
+  tracker.OnInsertText(
+      u"xyz", TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
+  EXPECT_EQ(u"abcxyzefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(6), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+  EXPECT_EQ(SurroundingTextTracker::UpdateResult::kUpdated,
+            tracker.Update(u"abcxyzefg", gfx::Range(6)));
+
+  ASSERT_EQ(
+      SurroundingTextTracker::UpdateResult::kReset,
+      tracker.Update(u"abcdefg", gfx::Range(3, 4)));  // Set selection on "d".
+
+  tracker.OnInsertText(
+      u"xyz", TextInputClient::InsertTextCursorBehavior::kMoveCursorBeforeText);
+  // 'd' should be replaced.
+  EXPECT_EQ(u"abcxyzefg", tracker.predicted_state().surrounding_text);
+  EXPECT_EQ(gfx::Range(3), tracker.predicted_state().selection);
+  EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+  EXPECT_EQ(SurroundingTextTracker::UpdateResult::kUpdated,
+            tracker.Update(u"abcxyzefg", gfx::Range(3)));
+}
+
+TEST(SurroundingTextTracker, InsertTextWithComposition) {
+  // Aliases to just the test data shorter.
+  constexpr auto kMoveCursorBeforeText =
+      TextInputClient::InsertTextCursorBehavior::kMoveCursorBeforeText;
+  constexpr auto kMoveCursorAfterText =
+      TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText;
+
+  constexpr struct {
+    gfx::Range selection;
+    TextInputClient::InsertTextCursorBehavior cursor_behavior;
+    const char16_t* expected_surrounding_text;
+    gfx::Range expected_selection;
+  } kTestData[] = {
+      // Cursor between 'a' and 'b'.
+      {gfx::Range(1), kMoveCursorBeforeText, u"axyzbfg", gfx::Range(1)},
+      {gfx::Range(1), kMoveCursorAfterText, u"axyzbfg", gfx::Range(4)},
+
+      // Selection of 'a'.
+      {gfx::Range(0, 1), kMoveCursorBeforeText, u"xyzbfg", gfx::Range(0)},
+      {gfx::Range(0, 1), kMoveCursorAfterText, u"xyzbfg", gfx::Range(3)},
+
+      // Selection of "bc" (crossing the starting boundary of the composition).
+      {gfx::Range(1, 3), kMoveCursorBeforeText, u"axyzfg", gfx::Range(1)},
+      {gfx::Range(1, 3), kMoveCursorAfterText, u"axyzfg", gfx::Range(4)},
+
+      // Cursor between 'c' and 'd' (inside composition).
+      {gfx::Range(3), kMoveCursorBeforeText, u"abxyzfg", gfx::Range(2)},
+      {gfx::Range(3), kMoveCursorAfterText, u"abxyzfg", gfx::Range(5)},
+
+      // Selection of 'd' (inside composition).
+      {gfx::Range(3, 4), kMoveCursorBeforeText, u"abxyzfg", gfx::Range(2)},
+      {gfx::Range(3, 4), kMoveCursorAfterText, u"abxyzfg", gfx::Range(5)},
+
+      // Selection of "ef" (crossing the end boundary of the composition).
+      {gfx::Range(4, 6), kMoveCursorBeforeText, u"abxyzg", gfx::Range(2)},
+      {gfx::Range(4, 6), kMoveCursorAfterText, u"abxyzg", gfx::Range(5)},
+
+      // Cursor between 'f' and 'g'.
+      {gfx::Range(6), kMoveCursorBeforeText, u"abfxyzg", gfx::Range(3)},
+      {gfx::Range(6), kMoveCursorAfterText, u"abfxyzg", gfx::Range(6)},
+  };
+
+  for (const auto& test_case : kTestData) {
+    SurroundingTextTracker tracker;
+
+    ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+              tracker.Update(u"abcdefg", test_case.selection));
+
+    // Set composition on "cde".
+    tracker.OnSetCompositionFromExistingText(gfx::Range(2, 5));
+
+    // Then insert text.
+    tracker.OnInsertText(u"xyz", test_case.cursor_behavior);
+
+    // Verification.
+    EXPECT_EQ(test_case.expected_surrounding_text,
+              tracker.predicted_state().surrounding_text);
+    EXPECT_EQ(test_case.expected_selection,
+              tracker.predicted_state().selection);
+    EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+  }
+}
+
+TEST(SurroundingTextTracker, ExtendSelectionAndDelete) {
+  constexpr struct {
+    gfx::Range selection;
+    gfx::Range composition;
+    size_t before;
+    size_t after;
+    const char16_t* expected_surrounding_text;
+    gfx::Range expected_selection;
+  } kTestData[] = {
+      // null deletion.
+      {gfx::Range(3), gfx::Range(), 0, 0, u"abcdefg", gfx::Range(3)},
+
+      // Remove 1 char before the cursor.
+      {gfx::Range(3), gfx::Range(), 1, 0, u"abdefg", gfx::Range(2)},
+
+      // Remove 1 char after the cursor.
+      {gfx::Range(3), gfx::Range(), 0, 1, u"abcefg", gfx::Range(3)},
+
+      // Remove 1 char for each before and after the cursor.
+      {gfx::Range(3), gfx::Range(), 1, 1, u"abefg", gfx::Range(2)},
+
+      // Selection deletion.
+      {gfx::Range(3, 4), gfx::Range(), 0, 0, u"abcefg", gfx::Range(3)},
+
+      // Selection deletion with 1 char before.
+      {gfx::Range(3, 4), gfx::Range(), 1, 0, u"abefg", gfx::Range(2)},
+
+      // Selection deletion with 1 char after.
+      {gfx::Range(3, 4), gfx::Range(), 0, 1, u"abcfg", gfx::Range(3)},
+
+      // Selection deletion with 1 char for each before and after.
+      {gfx::Range(3, 4), gfx::Range(), 1, 1, u"abfg", gfx::Range(2)},
+
+      // With composition.
+      {gfx::Range(2), gfx::Range(3, 4), 0, 0, u"abcefg", gfx::Range(2)},
+
+      // With composition crossing the beginning boundary.
+      {gfx::Range(1), gfx::Range(2, 5), 0, 2, u"afg", gfx::Range(1)},
+
+      // With composition containing the selection.
+      {gfx::Range(3, 4), gfx::Range(1, 6), 1, 1, u"ag", gfx::Range(1)},
+
+      // With composition crossing the end boundary.
+      {gfx::Range(6), gfx::Range(2, 5), 2, 0, u"abg", gfx::Range(2)},
+
+      // With composition covered by selection.
+      {gfx::Range(3, 4), gfx::Range(2, 5), 2, 2, u"ag", gfx::Range(1)},
+  };
+
+  for (const auto& test_case : kTestData) {
+    SurroundingTextTracker tracker;
+    ASSERT_EQ(SurroundingTextTracker::UpdateResult::kReset,
+              tracker.Update(u"abcdefg", test_case.selection));
+    if (!test_case.composition.is_empty())
+      tracker.OnSetCompositionFromExistingText(test_case.composition);
+
+    tracker.OnExtendSelectionAndDelete(test_case.before, test_case.after);
+    EXPECT_EQ(test_case.expected_surrounding_text,
+              tracker.predicted_state().surrounding_text);
+    EXPECT_EQ(test_case.expected_selection,
+              tracker.predicted_state().selection);
+    EXPECT_TRUE(tracker.predicted_state().composition.is_empty());
+  }
+}
+
+}  // namespace ui
diff --git a/ui/chromeos/translations/ui_chromeos_strings_af.xtb b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
index 1f80dc8..3dbe8305 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_af.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint-aanbieding</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Gee Parallels Desktop toegang tot lêers in jou Google Drive. Veranderinge sal met jou ander toestelle gesinkroniseer word.</translation>
+<translation id="4790766916287588578">Hindi met InScript-sleutelbord</translation>
 <translation id="4801956050125744859">Hou albei</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Toestel is leesalleen</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_am.xtb b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
index 7cd3efb..426249ba 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_am.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint ማቅረቢያ</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> ኪባ</translation>
 <translation id="4789067489790477934">Parallels ዴስክቶፕ በእርስዎ Google Drive ውስጥ ፋይሎችን የመድረስ ፈቃድ ይስጧቸው። ለውጦች ከሌሎች መሣሪያዎችዎ ጋር ይሳመራሉ።</translation>
+<translation id="4790766916287588578">ሕንድኛ በInScript ቁልፍ ሰሌዳ</translation>
 <translation id="4801956050125744859">ሁለቱንም አስቀምጥ</translation>
 <translation id="4804827417948292437">አቮካዶ</translation>
 <translation id="4823651846660089135">መሣሪያው ተነባቢ-ብቻ ነው</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_az.xtb b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
index 35c6753..ff1ed8e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_az.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint təqdimatı</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Parallels Desktop'a Google Diskinizdəki fayllara giriş icazəsi verin. Dəyişikliklər digər cihazlara sinxronizasiya ediləcək.</translation>
+<translation id="4790766916287588578">InScript klaviaturası ilə Hind dili</translation>
 <translation id="4801956050125744859">İkisini də saxlayın</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Cihaz yalnız oxu rejimindədir</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_be.xtb b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
index 4c1e801..4fce9aa 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_be.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Прэзентацыя PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> КБ</translation>
 <translation id="4789067489790477934">Даць Parallels Desktop доступ да файлаў на Google Дыску. Змены будуць сінхранізавацца з іншымі прыладамі.</translation>
+<translation id="4790766916287588578">Хіндзі (з раскладкай InScript)</translation>
 <translation id="4801956050125744859">Пакінуць абодва</translation>
 <translation id="4804827417948292437">Авакада</translation>
 <translation id="4823651846660089135">Прылада толькі для чытання</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
index 2043661..63f135e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint prezentacija</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> kB</translation>
 <translation id="4789067489790477934">Odobrite da Parallels Desktop pristupa fajlovima na Google Disku. Promjene će se sinhronizirati na vašim drugim uređajima.</translation>
+<translation id="4790766916287588578">hindi s tastaturom InScript</translation>
 <translation id="4801956050125744859">Zadrži obje</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Uređaj je samo za čitanje</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
index 135226cd..edf63f4 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Prezentace aplikace PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> kB</translation>
 <translation id="4789067489790477934">Udělujete nástroji Parallels Desktop oprávnění k přístupu k souborům na Disku Google. Změny se synchronizují do vašich ostatních zařízení.</translation>
+<translation id="4790766916287588578">hindština s klávesnicí InScript</translation>
 <translation id="4801956050125744859">Ponechat obojí</translation>
 <translation id="4804827417948292437">Avokádo</translation>
 <translation id="4823651846660089135">Zařízení je pouze pro čtení</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
index 3fe926a31..94200a3d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
@@ -721,6 +721,7 @@
 <translation id="7248671827512403053">Application</translation>
 <translation id="7256405249507348194">Unrecognised error: <ph name="DESC" /></translation>
 <translation id="7268659760406822741">Available services</translation>
+<translation id="7292816689782057017">Administrator policy restricts saving to some locations.</translation>
 <translation id="7294063083760278948">Telugu transliteration</translation>
 <translation id="7295662345261934369">Share with others</translation>
 <translation id="7297443947353982503">Username/password incorrect or EAP-auth failed</translation>
@@ -906,6 +907,7 @@
 <translation id="8810671769985673465">Zipping failed, item exists: '<ph name="FILE_NAME" />'</translation>
 <translation id="8813284582615685103">Spanish (Spain)</translation>
 <translation id="8834164572807951958">Members of '<ph name="DESTINATION_NAME" />' will gain access to the copy of these items.</translation>
+<translation id="8849389110234859568">Administrator policy restricts access to some files.</translation>
 <translation id="8857149712089373752">Nepali with phonetic keyboard</translation>
 <translation id="8860454412039442620">Excel spreadsheet</translation>
 <translation id="8866284467018526531">Arabic transliteration</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
index 9170800..2fae8aa 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Presentación de PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Permitir que Parallels Desktop acceda a los archivos de tu cuenta de Google Drive. Se sincronizarán los cambios con tus otros dispositivos.</translation>
+<translation id="4790766916287588578">Hindi con teclado InScript</translation>
 <translation id="4801956050125744859">Conservar ambas versiones</translation>
 <translation id="4804827417948292437">Aguacate</translation>
 <translation id="4823651846660089135">El dispositivo es de solo lectura</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es.xtb b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
index 3e48f29..0e0bcae 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Presentación de PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> kB</translation>
 <translation id="4789067489790477934">Permite que Parallels Desktop acceda a tus archivos de Google Drive. Los cambios se sincronizarán con tus otros dispositivos.</translation>
+<translation id="4790766916287588578">Hindi con teclado InScript</translation>
 <translation id="4801956050125744859">Conservar las dos versiones</translation>
 <translation id="4804827417948292437">Aguacate</translation>
 <translation id="4823651846660089135">El dispositivo es de solo lectura</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_et.xtb b/ui/chromeos/translations/ui_chromeos_strings_et.xtb
index 4964e060..dc71c52 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_et.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_et.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPointi esitlus</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> kB</translation>
 <translation id="4789067489790477934">Andke üksusele Parallels Desktop luba pääseda juurde Google Drive'is olevatele failidele. Muudatused sünkroonitakse muude seadmetega.</translation>
+<translation id="4790766916287588578">Hindi, InScript-klaviatuuriga</translation>
 <translation id="4801956050125744859">Säilita mõlemad</translation>
 <translation id="4804827417948292437">Avokaado</translation>
 <translation id="4823651846660089135">Seade on kirjutuskaitstud</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
index 5fbf3e8..02b35f1 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
@@ -710,7 +710,7 @@
 <translation id="714034171374937760">Chromebase</translation>
 <translation id="7165320105431587207">پیکربندی شبکه انجام نشد</translation>
 <translation id="7170041865419449892">خارج از محدوده</translation>
-<translation id="7180611975245234373">بازخوانی</translation>
+<translation id="7180611975245234373">بازآوری</translation>
 <translation id="7189874332498648577"><ph name="NUMBER_OF_GB" /> گیگابایت</translation>
 <translation id="7191454237977785534">ذخیره فایل به‌عنوان</translation>
 <translation id="7229570126336867161">‏EVDO مورد نیاز است</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
index a334303..0789d5a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Présentation PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> ko</translation>
 <translation id="4789067489790477934">Autoriser Parallels Desktop à accéder à vos fichiers sur Google Disque. Les modifications seront synchronisées sur vos autres appareils.</translation>
+<translation id="4790766916287588578">Hindi avec clavier InScript</translation>
 <translation id="4801956050125744859">Garder les deux</translation>
 <translation id="4804827417948292437">Avocat</translation>
 <translation id="4823651846660089135">L'appareil est en lecture seule</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
index 8bd0bfa..46378817 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Présentation PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> Ko</translation>
 <translation id="4789067489790477934">Autorisez Parallels Desktop à accéder aux fichiers dans votre espace Google Drive. Les modifications apportées seront synchronisées avec vos autres appareils.</translation>
+<translation id="4790766916287588578">Hindi avec clavier InScript</translation>
 <translation id="4801956050125744859">Garder les deux</translation>
 <translation id="4804827417948292437">Avocat</translation>
 <translation id="4823651846660089135">Appareil en lecture seule</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
index 3dda7d4..0cfa8b6 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPointova prezentacija</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Dajte Parallels Desktopu dopuštenje za pristup datotekama na Google disku. Promjene će se sinkronizirati na vaše ostale uređaje.</translation>
+<translation id="4790766916287588578">hindski s tipkovnicom InScript</translation>
 <translation id="4801956050125744859">Zadrži oba</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Uređaj je samo za čitanje</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
index b3603f46..dee20fb 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint-bemutató</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> kB</translation>
 <translation id="4789067489790477934">A Parallels Desktop engedélyt kap arra, hogy hozzáférjen a fájlokhoz az Ön Google Drive-fiókjában. A változtatások minden eszközön szinkronizálódnak.</translation>
+<translation id="4790766916287588578">Hindi InScript kiosztással</translation>
 <translation id="4801956050125744859">Mindkettő megtartása</translation>
 <translation id="4804827417948292437">Avokádó</translation>
 <translation id="4823651846660089135">Az eszköz csak olvasható</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
index 1f3a31fb..48361be 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint ներկայացում</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> ԿԲ</translation>
 <translation id="4789067489790477934">Հասանելի դարձրեք ձեր Google Drive-ի ֆայլերը Parallels Desktop-ին։ Փոփոխությունները կհամաժամացվեն ձեր մյուս սարքերի հետ։</translation>
+<translation id="4790766916287588578">հինդի (InScript ստեղնաշար)</translation>
 <translation id="4801956050125744859">Պահպանել երկուսն էլ</translation>
 <translation id="4804827417948292437">Ավոկադո</translation>
 <translation id="4823651846660089135">Սարքում կարելի է միայն կարդալու գործողություններ կատարել</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_is.xtb b/ui/chromeos/translations/ui_chromeos_strings_is.xtb
index f7c0116e..e44e7c2d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_is.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_is.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint-kynning</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Veita Parallels Desktop aðgang að skránum þínum á Google Drive. Breytingar samstillast við önnur tæki.</translation>
+<translation id="4790766916287588578">Hindí með InScript-lyklaborði</translation>
 <translation id="4801956050125744859">Halda báðum</translation>
 <translation id="4804827417948292437">Avókadó</translation>
 <translation id="4823651846660089135">Tæki er skrifvarið</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_it.xtb b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
index b92407c..e845c4f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_it.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Presentazione PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> kB</translation>
 <translation id="4789067489790477934">Concedi a Parallels Desktop l'autorizzazione per accedere ai file nel tuo account Google Drive. Le modifiche verranno sincronizzate con i tuoi altri dispositivi.</translation>
+<translation id="4790766916287588578">Hindi con tastiera InScript</translation>
 <translation id="4801956050125744859">Conserva entrambe</translation>
 <translation id="4804827417948292437">Avocado</translation>
 <translation id="4823651846660089135">Il dispositivo è in sola lettura</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
index 7337c29..262d118f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -413,7 +413,7 @@
 <translation id="4706042980341760088">Тамиль (жазу машинасы пернетақтасымен)</translation>
 <translation id="4711094779914110278">түрікше</translation>
 <translation id="4712283082407695269">"<ph name="PATH" />" ашылуда</translation>
-<translation id="4720185134442950733">Мобильдік деректер желісі</translation>
+<translation id="4720185134442950733">Мобильдік интернет желісі</translation>
 <translation id="4725096204469550614">Осы жылдың басында</translation>
 <translation id="4725511304875193254">Корги</translation>
 <translation id="4737050008115666127">Қону</translation>
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint презентациясы</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> КБ</translation>
 <translation id="4789067489790477934">Parallels Desktop үшін Google Drive дискісіндегі файлдарды пайдалануға рұқсат берілсін. Өзгертулер барлық құрылғыда болады.</translation>
+<translation id="4790766916287588578">Хинди (InScript пернетақтасымен)</translation>
 <translation id="4801956050125744859">Екеуін де сақтау</translation>
 <translation id="4804827417948292437">Авокадо</translation>
 <translation id="4823651846660089135">Құрылғы тек оқуға арналған</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
index 2e828eea..b13ca18e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint презентациясы</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> Кб</translation>
 <translation id="4789067489790477934">Parallels Desktop кызматына Google Drive'дагы файлдарга кирүүгө уруксат бериңиз. Киргизилген өзгөртүүлөр башка түзмөктөрүңүздө шайкештирилет.</translation>
+<translation id="4790766916287588578">Хиндиче (InScript баскычтобу)</translation>
 <translation id="4801956050125744859">Экөөнү тең калтыруу</translation>
 <translation id="4804827417948292437">Авокадо</translation>
 <translation id="4823651846660089135">Түзмөк окуу үчүн гана уруксат берет</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
index 67754d0a..f61ad8b5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint prezentācija</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Parallels Desktop saņems atļauju piekļūt failiem jūsu Google diskā. Izmaiņas tiks sinhronizētas ar citām jūsu ierīcēm.</translation>
+<translation id="4790766916287588578">Hindi, ar InScript tastatūru</translation>
 <translation id="4801956050125744859">Saglabāt abus</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Ierīce ir tikai lasāma.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
index e58e90b..24c1757 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Persembahan PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Beri Parallels Desktop kebenaran untuk mengakses fail dalam Google Drive anda. Perubahan akan disegerakkan ke peranti anda yang lain.</translation>
+<translation id="4790766916287588578">Bahasa Hindi dengan papan kekunci InScript</translation>
 <translation id="4801956050125744859">Simpan kedua-duanya</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Peranti dalam mod baca sahaja</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
index 3bfd90ee..a7a1880 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint प्रस्तुति</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> के.बि.</translation>
 <translation id="4789067489790477934">Parallels Desktop लाई आफ्नो Google Drive मा रहेका फाइलहरूमाथि पहुँच राख्ने अनुमति दिनुहोस्। परिवर्तनहरू तपाईंका अन्य यन्त्रमा पनि सिंक हुने छन्।</translation>
+<translation id="4790766916287588578">हिन्दी इनस्क्रिप्ट किबोर्ड</translation>
 <translation id="4801956050125744859">दुवै राख्नुहोस्</translation>
 <translation id="4804827417948292437">अभोकाडो</translation>
 <translation id="4823651846660089135">यन्त्र पढ्ने-मात्र मोडमा छ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
index 8c891559..cfa5833 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -721,6 +721,7 @@
 <translation id="7248671827512403053">Aplikacja</translation>
 <translation id="7256405249507348194">Nierozpoznany błąd: <ph name="DESC" /></translation>
 <translation id="7268659760406822741">Dostępne usługi</translation>
+<translation id="7292816689782057017">Zasady administratora nie pozwalają na zapisywanie w niektórych lokalizacjach.</translation>
 <translation id="7294063083760278948">Telugu – transliteracja</translation>
 <translation id="7295662345261934369">Udostępnij innym</translation>
 <translation id="7297443947353982503">Niepoprawna nazwa użytkownika lub hasło albo uwierzytelnianie EAP nie powiodło się</translation>
@@ -906,6 +907,7 @@
 <translation id="8810671769985673465">Pakowanie nie powiodło się, ponieważ element już istnieje: „<ph name="FILE_NAME" />”</translation>
 <translation id="8813284582615685103">Hiszpański (Hiszpania)</translation>
 <translation id="8834164572807951958">Osoby z uprawnieniami do: „<ph name="DESTINATION_NAME" />” uzyskają dostęp do kopii tych elementów.</translation>
+<translation id="8849389110234859568">Zasady administratora ograniczają dostęp do niektórych plików.</translation>
 <translation id="8857149712089373752">Nepalski z klawiaturą fonetyczną</translation>
 <translation id="8860454412039442620">Arkusz kalkulacyjny Excela</translation>
 <translation id="8866284467018526531">Arabski – transliteracja</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_si.xtb b/ui/chromeos/translations/ui_chromeos_strings_si.xtb
index 9e65e443..b549d2f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_si.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_si.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint සමර්පණය</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Parallels Desktop හට ඔබගේ Google Drive තුළ ඇති ගොනු වෙත ප්‍රවේශ වීමට අවසරය දෙන්න වෙනස් කිරීම් ඔබගේ අනෙකුත් උපාංගවලට සමමුහුර්ත කරනු ඇත.</translation>
+<translation id="4790766916287588578">InScript යතුරුපුවරුව සමග හින්දි</translation>
 <translation id="4801956050125744859">දෙකම තබා ගන්න</translation>
 <translation id="4804827417948292437">අලිගැටපේර</translation>
 <translation id="4823651846660089135">උපාංගය කියවීමට පමණි</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
index 7de291b..35e72a3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Prezantim në PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">Jepi leje Parallels Desktop që të qaset në skedarët në "Diskun tënd të Google". Ndryshimet do të sinkronizohen në pajisjet e tua të tjera.</translation>
+<translation id="4790766916287588578">Hindisht me tastierë InScript</translation>
 <translation id="4801956050125744859">Mbaji të dyja</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Pajisja është vetëm për lexim</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
index b276f95..b6c801bc2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint-presentation</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> kB</translation>
 <translation id="4789067489790477934">Ge Parallels Desktop behörighet att öppn filer på Google Drive. Ändringarna synkroniseras med dina andra enheter.</translation>
+<translation id="4790766916287588578">hindi med InScript-tangentbord</translation>
 <translation id="4801956050125744859">Behåll båda</translation>
 <translation id="4804827417948292437">Avokado</translation>
 <translation id="4823651846660089135">Enheten är skrivskyddad</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
index 08a9911..bd6955e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">Wasilisho la PowerPoint</translation>
 <translation id="4788401404269709922">KB <ph name="NUMBER_OF_KB" /></translation>
 <translation id="4789067489790477934">Ruhusu Parallels Desktop ifikie faili katika Hifadhi yako ya Google. Mabadiliko yatasawazishwa kwenye vifaa vyako vingine.</translation>
+<translation id="4790766916287588578">Kihindi kwenye kibodi ya Hati za Kihindi</translation>
 <translation id="4801956050125744859">Hifadhi yote mawili</translation>
 <translation id="4804827417948292437">Parachichi</translation>
 <translation id="4823651846660089135">Kifaa ni cha kusoma tu</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
index 11025a4..976f81e9 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint விளக்கக்காட்சி</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> கி.பை.</translation>
 <translation id="4789067489790477934">உங்கள் Google Driveவில் உள்ள கோப்புகளை அணுகுவதற்கான அனுமதியை Parallels Desktopபிற்கு வழங்கவும். மாற்றங்கள் உங்களின் பிற சாதனங்களுடன் ஒத்திசைக்கப்படும்.</translation>
+<translation id="4790766916287588578">இந்தி இன்ஸ்கிரிப்ட் கீபோர்டு</translation>
 <translation id="4801956050125744859">இரண்டையும் வைத்திரு</translation>
 <translation id="4804827417948292437">அவகாடோ</translation>
 <translation id="4823651846660089135">படிப்பதற்கு மட்டுமேயான சாதனம்</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_th.xtb b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
index f32640a..b892e1d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_th.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">งานนำเสนอ PowerPoint</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">ให้สิทธิ์ Parallels Desktop เข้าถึงไฟล์ใน Google ไดรฟ์ การเปลี่ยนแปลงจะซิงค์กับอุปกรณ์อื่นๆ ของคุณ</translation>
+<translation id="4790766916287588578">ภาษาฮินดีด้วยแป้นพิมพ์ InScript</translation>
 <translation id="4801956050125744859">เก็บไว้ทั้งสองเวอร์ชัน</translation>
 <translation id="4804827417948292437">อะโวคาโด</translation>
 <translation id="4823651846660089135">อุปกรณ์เป็นแบบอ่านอย่างเดียว</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
index 84b6c4f..9e48b74 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint 演示文稿</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">授权 Parallels Desktop 访问您 Google 云端硬盘中的文件。相关更改会同步到您的其他设备。</translation>
+<translation id="4790766916287588578">印地语 InScript 键盘</translation>
 <translation id="4801956050125744859">保留两种版本</translation>
 <translation id="4804827417948292437">牛油果</translation>
 <translation id="4823651846660089135">设备目前处于只读模式</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
index f3a3380..341ec1e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -424,6 +424,7 @@
 <translation id="4784330909746505604">PowerPoint 簡報</translation>
 <translation id="4788401404269709922"><ph name="NUMBER_OF_KB" /> KB</translation>
 <translation id="4789067489790477934">授權 Parallels Desktop 存取 Google 雲端硬碟中的檔案。系統會將變更內容同步至你的其他裝置。</translation>
+<translation id="4790766916287588578">北印度文搭配 InScript 鍵盤</translation>
 <translation id="4801956050125744859">兩個版本都保留</translation>
 <translation id="4804827417948292437">酪梨</translation>
 <translation id="4823651846660089135">裝置目前是唯讀模式</translation>
diff --git a/ui/file_manager/integration_tests/file_manager/file_transfer_connector.js b/ui/file_manager/integration_tests/file_manager/file_transfer_connector.js
index 455a7904..2f7d519 100644
--- a/ui/file_manager/integration_tests/file_manager/file_transfer_connector.js
+++ b/ui/file_manager/integration_tests/file_manager/file_transfer_connector.js
@@ -378,13 +378,31 @@
     await sendTestMessage({name: 'mountFakeMtpEmpty'});
   }
 
-  // Setup policy
+  // Setup policy.
   await sendTestMessage({
     name: 'setupFileTransferPolicy',
     source: transferInfo.source.enterpriseConnectorsVolumeIdentifier,
     destination: transferInfo.destination.enterpriseConnectorsVolumeIdentifier,
   });
 
+  // Setup reporting expectations.
+  await sendTestMessage({
+    name: 'expectFileTransferReports',
+    source_volume: transferInfo.source.enterpriseConnectorsVolumeIdentifier,
+    destination_volume:
+        transferInfo.destination.enterpriseConnectorsVolumeIdentifier,
+    entry_paths: entryTestSet.filter(entry => entry.type === EntryType.FILE)
+                     .map(entry => entry.targetPath),
+  });
+
+  // Setup the scanning closure to be able to wait for the scanning to be
+  // complete.
+  await sendTestMessage({
+    name: 'setupScanningRunLoop',
+    number_of_expected_delegates:
+        entryTestSet.filter(entry => !entry.targetPath.includes('/')).length,
+  });
+
   const dstContents = TestEntryInfo.getExpectedRows([ENTRIES.hello]);
 
   // Opens Files app and initiates source with entryTestSet and destination
@@ -434,6 +452,29 @@
   chrome.test.assertTrue(
       await remoteCall.callRemoteTestUtil('execCommand', appId, ['paste']));
 
+  const reportOnly =
+      await sendTestMessage({name: 'isReportOnlyFileTransferConnector'}) ===
+      'true';
+  if (reportOnly) {
+    await verifyAfterPasteReportOnly(appId, transferInfo, entryTestSet);
+  } else {
+    await verifyAfterPasteBlocking(
+        appId, transferInfo, entryTestSet, expectedFinalMsg);
+  }
+}
+
+/**
+ * Verify what happens after a paste when scanning can block files.
+ *
+ * @param {string} appId The app id of the files app window.
+ * @param {!TransferInfo} transferInfo Options for the transfer.
+ * @param {!Array<TestEntryInfo>} entryTestSet The set of file and directory
+ *     entries to be used for the test.
+ * @param {string} expectedFinalMsg The final message to expect at the progress
+ *     center.
+ */
+async function verifyAfterPasteBlocking(
+    appId, transferInfo, entryTestSet, expectedFinalMsg) {
   // Check that a scanning label is shown.
   const caller = getCaller();
   await repeatUntil(async () => {
@@ -503,8 +544,48 @@
 
   // Check that only one line of text is shown.
   chrome.test.assertFalse(!!element.attributes['secondary-text']);
+}
 
-  return appId;
+/**
+ * Verify what happens after a paste in the case of report-only scans.
+ *
+ * @param {string} appId The app id of the files app window.
+ * @param {!TransferInfo} transferInfo Options for the transfer.
+ * @param {!Array<TestEntryInfo>} entryTestSet The set of file and directory
+ *     entries to be used for the test.
+ */
+async function verifyAfterPasteReportOnly(appId, transferInfo, entryTestSet) {
+  // No check for scanning label, as there shouldn't be one.
+
+  // Wait for the expected files to appear in the file list.
+  // All files should appear, even those marked as 'blocked'.
+  const expectedEntries = entryTestSet.concat([ENTRIES.hello]);
+  await verifyDirectoryRecursively(
+      appId, expectedEntries, transferInfo.destination.breadcrumbsPath);
+
+  // Verify contents of the source directory.
+  await navigateWithDirectoryTree(appId, transferInfo.source.breadcrumbsPath);
+  let expectedSourceEntries = entryTestSet;
+  if (transferInfo.isMove) {
+    // For a move, the source directory should be empty.
+    expectedSourceEntries = [];
+  }
+  // Wait for the expected files to appear in the file list.
+  await verifyDirectoryRecursively(
+      appId, expectedSourceEntries, transferInfo.source.breadcrumbsPath);
+
+  // Check that the status panel automatically vanishes.
+  // This means that there was no error.
+  await remoteCall.waitForElementLost(
+      appId, ['#progress-panel', 'xf-panel-item']);
+
+  // After the transfer completed, we issue scanning responses.
+  // This ensures that scanning does not impact the transfer.
+  await sendTestMessage({name: 'issueFileTransferResponses'});
+
+  // We have to wait for the scanning to be completed to fulfill the report
+  // expectations.
+  await sendTestMessage({name: 'waitForFileTransferScanningToComplete'});
 }
 
 /**
diff --git a/ui/latency/latency_info.dot b/ui/latency/latency_info.dot
index f03c933d..c86146b 100644
--- a/ui/latency/latency_info.dot
+++ b/ui/latency/latency_info.dot
@@ -15,7 +15,6 @@
     scroll_to_schedule_metrics
       [label="\
 Event.Latency.<scroll_name>.<input_modality>.TimeToHandled2_<thread_name>\n\
-Event.Latency.Scroll.Wheel.TimeToHandled2_<thread_name>\n\
 UKM: Event.<scroll_name>.<input_modality>.TimeToHandled\n"];
     "Event.Latency.<scroll_name>.<input_modality>.HandledToRendererSwap2_<thread_name>";
     "Event.Latency.<scroll_name>.<input_modality>.RendererSwapToBrowserNotified2";
diff --git a/ui/latency/latency_tracker.cc b/ui/latency/latency_tracker.cc
index 6a7a14e..994dc0b 100644
--- a/ui/latency/latency_tracker.cc
+++ b/ui/latency/latency_tracker.cc
@@ -414,12 +414,6 @@
           ".TimeToHandled2_" + thread_name,
       original_timestamp, rendering_scheduled_timestamp);
 
-  if (input_modality == "Wheel") {
-    UMA_HISTOGRAM_SCROLL_LATENCY_LONG_2(
-        "Event.Latency.Scroll.Wheel.TimeToHandled2_" + thread_name,
-        original_timestamp, rendering_scheduled_timestamp);
-  }
-
   base::TimeTicks renderer_swap_timestamp;
   bool found_renderer_swap_component =
       latency.FindLatency(ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT,
diff --git a/ui/ozone/platform/wayland/host/wayland_pointer.cc b/ui/ozone/platform/wayland/host/wayland_pointer.cc
index 8d58ded9..266808a 100644
--- a/ui/ozone/platform/wayland/host/wayland_pointer.cc
+++ b/ui/ozone/platform/wayland/host/wayland_pointer.cc
@@ -13,6 +13,7 @@
 #include "ui/ozone/platform/wayland/host/wayland_connection.h"
 #include "ui/ozone/platform/wayland/host/wayland_serial_tracker.h"
 #include "ui/ozone/platform/wayland/host/wayland_window.h"
+#include "ui/ozone/platform/wayland/host/wayland_zaura_shell.h"
 
 namespace ui {
 
@@ -82,12 +83,14 @@
   pointer->connection_->serial_tracker().ResetSerial(
       wl::SerialType::kMouseEnter);
 
-  // TODO(https://crrev.com/c/1352584): Switch from kImmediate to kOnFrame when
-  // Exo comply with other compositors in how it isolates each
-  // wl_pointer.enter|leave event with their respective wl_pointer.frame.
+  auto event_dispatch_policy =
+      pointer->connection_->zaura_shell() &&
+              pointer->connection_->zaura_shell()->HasBugFix(1352584)
+          ? EventDispatchPolicyForPlatform()
+          : wl::EventDispatchPolicy::kImmediate;
+
   pointer->delegate_->OnPointerFocusChanged(
-      nullptr, pointer->delegate_->GetPointerLocation(),
-      wl::EventDispatchPolicy::kImmediate);
+      nullptr, pointer->delegate_->GetPointerLocation(), event_dispatch_policy);
 }
 
 // static
diff --git a/ui/strings/translations/ui_strings_fa.xtb b/ui/strings/translations/ui_strings_fa.xtb
index cc1b87e..81606a7 100644
--- a/ui/strings/translations/ui_strings_fa.xtb
+++ b/ui/strings/translations/ui_strings_fa.xtb
@@ -190,7 +190,7 @@
 <translation id="8090736967111090568">شماره از <ph name="ORIGIN" /></translation>
 <translation id="8106081041558092062">{HOURS,plural, =1{۱ ساعت قبل}one{# ساعت قبل}other{# ساعت قبل}}</translation>
 <translation id="8131263257437993507">{SECONDS,plural, =1{۱ ثانیه باقی مانده است}one{# ثانیه باقی مانده است}other{# ثانیه باقی مانده است}}</translation>
-<translation id="8134065097954893699">درحال تازه‌سازی این صفحه</translation>
+<translation id="8134065097954893699">درحال بار کردن مجدد این صفحه</translation>
 <translation id="815598010540052116">پیمایش به پایین</translation>
 <translation id="8179976553408161302">ورود</translation>
 <translation id="8210608804940886430">صفحه پایین</translation>
diff --git a/ui/webui/resources/cr_components/BUILD.gn b/ui/webui/resources/cr_components/BUILD.gn
index 20f87ee..e7111e5 100644
--- a/ui/webui/resources/cr_components/BUILD.gn
+++ b/ui/webui/resources/cr_components/BUILD.gn
@@ -50,11 +50,6 @@
       "chromeos/network/wifi_3.svg",
       "chromeos/network/wifi_4.svg",
       "chromeos/network/wifi_off.svg",
-      "chromeos/network_health/test_canceled.png",
-      "chromeos/network_health/test_failed.png",
-      "chromeos/network_health/test_not_run.png",
-      "chromeos/network_health/test_passed.png",
-      "chromeos/network_health/test_warning.png",
     ]
 
     manifest_files = [
@@ -104,8 +99,6 @@
       "chromeos/network/network_listener_behavior.js",
       "chromeos/network/network_list_types.js",
       "chromeos/network/onc_mojo.js",
-      "chromeos/network_health/mojo_interface_provider.js",
-      "chromeos/network_health/network_diagnostics_types.js",
     ]
   }
 
@@ -144,10 +137,6 @@
       "chromeos/cellular_setup/psim_flow_ui.js",
       "chromeos/cellular_setup/cellular_eid_dialog.js",
       "chromeos/cellular_setup/setup_loading_page.js",
-      "chromeos/network_health/network_health_container.js",
-      "chromeos/network_health/network_health_summary.js",
-      "chromeos/network_health/network_diagnostics.js",
-      "chromeos/network_health/routine_group.js",
       "chromeos/network/cr_policy_network_indicator_mojo.js",
       "chromeos/network/network_apnlist.js",
       "chromeos/network/network_choose_mobile.js",
diff --git a/ui/webui/resources/cr_components/chromeos/BUILD.gn b/ui/webui/resources/cr_components/chromeos/BUILD.gn
index 9e201a0..655be4c 100644
--- a/ui/webui/resources/cr_components/chromeos/BUILD.gn
+++ b/ui/webui/resources/cr_components/chromeos/BUILD.gn
@@ -11,7 +11,6 @@
     "bluetooth:closure_compile_module",
     "cellular_setup:closure_compile_module",
     "network:closure_compile_module",
-    "network_health:closure_compile_module",
   ]
 }
 
@@ -20,6 +19,5 @@
     "bluetooth:web_components",
     "cellular_setup:web_components",
     "network:web_components",
-    "network_health:web_components",
   ]
 }
diff --git a/weblayer/public/java/BUILD.gn b/weblayer/public/java/BUILD.gn
index b482612..a59fc0b 100644
--- a/weblayer/public/java/BUILD.gn
+++ b/weblayer/public/java/BUILD.gn
@@ -234,6 +234,7 @@
     "org/chromium/browserfragment/TabObserver.java",
     "org/chromium/browserfragment/TabObserverDelegate.java",
     "org/chromium/browserfragment/TabRegistry.java",
+    "org/chromium/browserfragment/ThreadCheck.java",
     "org/chromium/browserfragment/WebMessageCallback.java",
     "org/chromium/browserfragment/WebMessageReplyProxy.java",
   ]
diff --git a/weblayer/public/java/org/chromium/browserfragment/NavigationObserverDelegate.java b/weblayer/public/java/org/chromium/browserfragment/NavigationObserverDelegate.java
index 04c7302..b300838 100644
--- a/weblayer/public/java/org/chromium/browserfragment/NavigationObserverDelegate.java
+++ b/weblayer/public/java/org/chromium/browserfragment/NavigationObserverDelegate.java
@@ -23,21 +23,28 @@
     private ObserverList<NavigationObserver> mNavigationObservers =
             new ObserverList<NavigationObserver>();
 
+    public NavigationObserverDelegate() {
+        // Assert on UI thread as ObserverList can only be accessed from one thread.
+        ThreadCheck.ensureOnUiThread();
+    }
+
     /**
-     * Registers a {@link NavigationObserver}.
+     * Registers a {@link NavigationObserver}. Call only from the UI thread.
      *
      * @return true if the observer was added to the list of observers.
      */
     boolean registerObserver(NavigationObserver tabObserver) {
+        ThreadCheck.ensureOnUiThread();
         return mNavigationObservers.addObserver(tabObserver);
     }
 
     /**
-     * Unregisters a {@link NavigationObserver}.
+     * Unregisters a {@link NavigationObserver}. Call only from the UI thread.
      *
      * @return true if the observer was removed from the list of observers.
      */
     boolean unregisterObserver(NavigationObserver tabObserver) {
+        ThreadCheck.ensureOnUiThread();
         return mNavigationObservers.removeObserver(tabObserver);
     }
 
diff --git a/weblayer/public/java/org/chromium/browserfragment/TabListObserverDelegate.java b/weblayer/public/java/org/chromium/browserfragment/TabListObserverDelegate.java
index b4d3e938..651d2bd 100644
--- a/weblayer/public/java/org/chromium/browserfragment/TabListObserverDelegate.java
+++ b/weblayer/public/java/org/chromium/browserfragment/TabListObserverDelegate.java
@@ -22,21 +22,28 @@
 
     private ObserverList<TabListObserver> mTabListObservers = new ObserverList<TabListObserver>();
 
+    public TabListObserverDelegate() {
+        // Assert on UI thread as ObserverList can only be accessed from one thread.
+        ThreadCheck.ensureOnUiThread();
+    }
+
     /**
-     * Register a TabListObserver.
+     * Register a TabListObserver. Call only from the UI thread.
      *
      * @return true if the observer was added to the list of observers.
      */
     boolean registerObserver(TabListObserver tabListObserver) {
+        ThreadCheck.ensureOnUiThread();
         return mTabListObservers.addObserver(tabListObserver);
     }
 
     /**
-     * Unregister a TabListObserver.
+     * Unregister a TabListObserver. Call only from the UI thread.
      *
      * @return true if the observer was removed from the list of observers.
      */
     boolean unregisterObserver(TabListObserver tabListObserver) {
+        ThreadCheck.ensureOnUiThread();
         return mTabListObservers.removeObserver(tabListObserver);
     }
 
diff --git a/weblayer/public/java/org/chromium/browserfragment/TabManager.java b/weblayer/public/java/org/chromium/browserfragment/TabManager.java
index 5bec27e..89fc5bda 100644
--- a/weblayer/public/java/org/chromium/browserfragment/TabManager.java
+++ b/weblayer/public/java/org/chromium/browserfragment/TabManager.java
@@ -4,6 +4,8 @@
 
 package org.chromium.browserfragment;
 
+import android.os.Handler;
+import android.os.Looper;
 import android.os.RemoteException;
 
 import androidx.annotation.NonNull;
@@ -50,7 +52,9 @@
         @Override
         public void onResult(@Nullable ITabParams tabParams) {
             if (tabParams != null) {
-                mCompleter.set(TabRegistry.getInstance().getOrCreateTab(tabParams));
+                new Handler(Looper.getMainLooper()).post(() -> {
+                    mCompleter.set(TabRegistry.getInstance().getOrCreateTab(tabParams));
+                });
                 return;
             }
             mCompleter.set(null);
diff --git a/weblayer/public/java/org/chromium/browserfragment/TabObserverDelegate.java b/weblayer/public/java/org/chromium/browserfragment/TabObserverDelegate.java
index 8d1bd9f..4c5fda77 100644
--- a/weblayer/public/java/org/chromium/browserfragment/TabObserverDelegate.java
+++ b/weblayer/public/java/org/chromium/browserfragment/TabObserverDelegate.java
@@ -20,21 +20,28 @@
 
     private ObserverList<TabObserver> mTabObservers = new ObserverList<TabObserver>();
 
+    public TabObserverDelegate() {
+        // Assert on UI thread as ObserverList can only be accessed from one thread.
+        ThreadCheck.ensureOnUiThread();
+    }
+
     /**
-     * Registers a {@link TabObserver}.
+     * Registers a {@link TabObserver}. Call only from the UI thread.
      *
      * @return true if the observer was added to the list of observers.
      */
     boolean registerObserver(TabObserver tabObserver) {
+        ThreadCheck.ensureOnUiThread();
         return mTabObservers.addObserver(tabObserver);
     }
 
     /**
-     * Unregisters a {@link TabObserver}.
+     * Unregisters a {@link TabObserver}. Call only from the UI thread.
      *
      * @return true if the observer was removed from the list of observers.
      */
     boolean unregisterObserver(TabObserver tabObserver) {
+        ThreadCheck.ensureOnUiThread();
         return mTabObservers.removeObserver(tabObserver);
     }
 
diff --git a/weblayer/public/java/org/chromium/browserfragment/ThreadCheck.java b/weblayer/public/java/org/chromium/browserfragment/ThreadCheck.java
new file mode 100644
index 0000000..4127dab
--- /dev/null
+++ b/weblayer/public/java/org/chromium/browserfragment/ThreadCheck.java
@@ -0,0 +1,16 @@
+// 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.
+
+package org.chromium.browserfragment;
+
+import android.os.Looper;
+import android.util.AndroidRuntimeException;
+
+class ThreadCheck {
+    static void ensureOnUiThread() {
+        if (Looper.getMainLooper() != Looper.myLooper()) {
+            throw new AndroidRuntimeException("This method needs to be called on the main thread");
+        }
+    }
+}