diff --git a/DEPS b/DEPS
index 485b884..d838752 100644
--- a/DEPS
+++ b/DEPS
@@ -138,6 +138,12 @@
   # Fetch clang-tidy into the same bin/ directory as our clang binary.
   'checkout_clang_tidy': False,
 
+  # Fetch clang libraries and headers in order to build clang tooling. This is
+  # required to build C++-Rust interop codegen tools. This may break things that
+  # use it when clang rolls, and is meant for prototyping. You should talk to
+  # tools/clang/OWNERS before depending on it.
+  'checkout_clang_libs': False,
+
   # By default checkout the OpenXR loader library only on Windows. The OpenXR
   # backend for VR in Chromium is currently only supported for Windows, but
   # support for other platforms may be added in the future.
@@ -306,7 +312,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': '1a164a8ef025f3f2c0735e936f802a352956b627',
+  'catapult_revision': '8f3d60691b27c6868c3b719b63d76667eef36366',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -314,7 +320,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '12bcadba35805a2209e10bed6dbd8ee19b2558a8',
+  'devtools_frontend_revision': 'd3307fe8ab11976e262d29f679b6ec894dbc662c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -716,7 +722,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': 'pOC_fgXF3UQ176xy8dq5Ue_0mDiLot4PGslfbyWcVZsC',
+          'version': 'mXveNmYLBzdrJtZHW3R1-TrFHDurdETjg6PHUCO0TZUC',
         },
       ],
       'dep_type': 'cipd',
@@ -727,7 +733,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'LeoA0Wv35bgH_p5lOkwPxa1y0XTsB5tlcoYRFw8ioY4C',
+          'version': 'YnjQOGbjp6WYtlGL9XY4HmgVinWdQi5rnMQ19VlulxgC',
         },
       ],
       'dep_type': 'cipd',
@@ -738,7 +744,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': 'c47NwE87KkjD2MrTSkYBCdjdqtM-53Q3x4D55ICz5HgC',
+          'version': '1XWb1fxeqAMJ4grrNliyx8dbEYDFfIouz0EkwcrWK_oC',
         },
       ],
       'dep_type': 'cipd',
@@ -799,7 +805,7 @@
     'packages': [
       {
           'package': 'chromium/third_party/androidx',
-          'version': 'I4RRLMv8zGb2YSObwLllOCmDGxCPRT9KyzAV-BFZo_0C',
+          'version': '6d8ij5pzYh29WWjPbdbAWFBJSA1nUgkWf2p6wCVZKIsC',
       },
     ],
     'condition': 'checkout_android',
@@ -1018,7 +1024,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '1cad40c1e7201ae3c1273066c335771590bdce2b',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '3fc099b1f0bbdcdc4a0785b50b38a8267a000263',
       'condition': 'checkout_chromeos',
   },
 
@@ -1075,7 +1081,7 @@
     Var('chromium_git') + '/chromium/deps/flac.git' + '@' + 'af862024c8c8fa0ae07ced05e89013d881b00596',
 
   'src/third_party/flatbuffers/src':
-    Var('chromium_git') + '/external/github.com/google/flatbuffers.git' + '@' + '4f7f6dc301f5ffb9765b055d48324dc7629abd5a',
+    Var('chromium_git') + '/external/github.com/google/flatbuffers.git' + '@' + 'b8aaccee8248059b2af032cca0eb1d2ddbdb6cdc',
 
   # Used for embedded builds. CrOS & Linux use the system version.
   'src/third_party/fontconfig/src': {
@@ -1421,7 +1427,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '15e3467297c3877d090e92940a04b085318ab933',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '9c674c8ed6844fb88b545a8df9282a9405f8a072',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1642,7 +1648,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'c843f8d63c8c17acfbb7d48e09059a581ba779b9',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '04696b35f43a92220d15f8612e20f4c99f3a2af8',
+    Var('webrtc_git') + '/src.git' + '@' + '9754a43403e0b955546aff0e7d07d6f70def4043',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1719,7 +1725,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': '27KUeowb-avScJevs9PyckybR1s34lIOg_CMEaolREQC',
+        'version': '5GaoHsS9Sb6U1WEQwNSowrgNf8r6rvc0he_rf8kNgSQC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1730,7 +1736,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'OEszP2fR0fctn9Qr3fnIElqnNLPxHyhTUfWfaiiLVckC',
+        'version': '26ySD765nSYuqVvvQSBAEmI4Und408ihBEECbjElJK0C',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -3940,6 +3946,16 @@
                '--package=clang-tidy'],
   },
   {
+    # Grab the libraries and header files of the clang compiler that will be
+    # used to build Chromium. These can be used to build clang tooling for
+    # static analysis or codegen.
+    'name': 'clang_libs',
+    'pattern': '.',
+    'condition': 'checkout_clang_libs',
+    'action': ['python3', 'src/tools/clang/scripts/update.py',
+               '--package=clang-libs'],
+  },
+  {
     # Should run after the clang hook. Used on mac, as well as for orderfile
     # generation on Android.
     'name': 'objdump',
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 6389196..430de79 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -3467,6 +3467,22 @@
   else:
     return checkxmlstyle.CheckStyleOnCommit(input_api, output_api)
 
+def _CheckAndroidInfoBarDeprecation(input_api, output_api):
+  """Checks Android Infobar Deprecation """
+
+  import sys
+  original_sys_path = sys.path
+  try:
+    sys.path = sys.path + [input_api.os_path.join(
+        input_api.PresubmitLocalPath(), 'tools', 'android',
+        'infobar_deprecation')]
+    import infobar_deprecation
+  finally:
+    # Restore sys.path to what it was before.
+    sys.path = original_sys_path
+
+  return infobar_deprecation.CheckDeprecationOnUpload(input_api, output_api)
+
 
 class PydepsChecker(object):
   def __init__(self, input_api, pydeps_files):
@@ -4166,6 +4182,7 @@
   results.extend(_CheckAndroidXmlStyle(input_api, output_api, True))
   results.extend(_CheckNewImagesWarning(input_api, output_api))
   results.extend(_CheckAndroidNoBannedImports(input_api, output_api))
+  results.extend(_CheckAndroidInfoBarDeprecation(input_api, output_api))
   return results
 
 def ChecksAndroidSpecificOnCommit(input_api, output_api):
diff --git a/android_webview/browser/gfx/overlay_processor_webview.cc b/android_webview/browser/gfx/overlay_processor_webview.cc
index c4ee1abe..71c80d1 100644
--- a/android_webview/browser/gfx/overlay_processor_webview.cc
+++ b/android_webview/browser/gfx/overlay_processor_webview.cc
@@ -667,7 +667,7 @@
   return manager_->TakeHWUITransaction();
 }
 
-void OverlayProcessorWebView::CheckOverlaySupport(
+void OverlayProcessorWebView::CheckOverlaySupportImpl(
     const viz::OverlayProcessorInterface::OutputSurfaceOverlayPlane*
         primary_plane,
     viz::OverlayCandidateList* candidates) {
diff --git a/android_webview/browser/gfx/overlay_processor_webview.h b/android_webview/browser/gfx/overlay_processor_webview.h
index 72b7e9c..41d77d3 100644
--- a/android_webview/browser/gfx/overlay_processor_webview.h
+++ b/android_webview/browser/gfx/overlay_processor_webview.h
@@ -59,7 +59,7 @@
       viz::DisplayResourceProvider* resource_provider) override;
   void AdjustOutputSurfaceOverlay(absl::optional<OutputSurfaceOverlayPlane>*
                                       output_surface_plane) override {}
-  void CheckOverlaySupport(
+  void CheckOverlaySupportImpl(
       const viz::OverlayProcessorInterface::OutputSurfaceOverlayPlane*
           primary_plane,
       viz::OverlayCandidateList* candidates) override;
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc
index cd377c10..23d244e1 100644
--- a/ash/accelerators/accelerator_controller_unittest.cc
+++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -67,6 +67,7 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/metrics/user_action_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "chromeos/ui/base/window_state_type.h"
 #include "components/prefs/pref_change_registrar.h"
 #include "components/prefs/pref_service.h"
 #include "media/base/media_switches.h"
@@ -606,9 +607,13 @@
 
     controller_->PerformActionIfEnabled(TOGGLE_MAXIMIZED, {});
     EXPECT_FALSE(window_state->IsMaximized());
-    // Window gets restored to its restore bounds since side-maximized state
-    // is treated as a "maximized" state.
-    EXPECT_EQ(normal_bounds.ToString(), window->bounds().ToString());
+
+    // Window gets restored to its right snapped window bounds and its window
+    // state should also restore to the right snapped window state.
+    gfx::Rect expected_bounds = GetDefaultSnappedWindowBoundsInParent(
+        window.get(), SnapViewType::kSecondary);
+    EXPECT_EQ(expected_bounds.ToString(), window->bounds().ToString());
+    EXPECT_EQ(window_state->GetStateType(), WindowStateType::kSecondarySnapped);
 
     controller_->PerformActionIfEnabled(TOGGLE_MAXIMIZED, {});
     controller_->PerformActionIfEnabled(WINDOW_CYCLE_SNAP_LEFT, {});
diff --git a/ash/ambient/ambient_controller.cc b/ash/ambient/ambient_controller.cc
index c4534b16..ce73a93 100644
--- a/ash/ambient/ambient_controller.cc
+++ b/ash/ambient/ambient_controller.cc
@@ -418,7 +418,7 @@
 }
 
 void AmbientController::OnAuthScanDone(
-    device::mojom::ScanResult scan_result,
+    const device::mojom::FingerprintMessagePtr msg,
     const base::flat_map<std::string, std::vector<std::string>>& matches) {
   DismissUI();
 }
diff --git a/ash/ambient/ambient_controller.h b/ash/ambient/ambient_controller.h
index 3de6761..3cc4d68 100644
--- a/ash/ambient/ambient_controller.h
+++ b/ash/ambient/ambient_controller.h
@@ -85,7 +85,7 @@
 
   // fingerprint::mojom::FingerprintObserver:
   void OnAuthScanDone(
-      device::mojom::ScanResult scan_result,
+      const device::mojom::FingerprintMessagePtr msg,
       const base::flat_map<std::string, std::vector<std::string>>& matches)
       override;
   void OnSessionFailed() override {}
diff --git a/ash/app_list/views/app_list_bubble_view.cc b/ash/app_list/views/app_list_bubble_view.cc
index e9239fa..b42f477 100644
--- a/ash/app_list/views/app_list_bubble_view.cc
+++ b/ash/app_list/views/app_list_bubble_view.cc
@@ -348,9 +348,11 @@
     case AppListBubblePage::kApps:
     case AppListBubblePage::kSearch:
       search_box_view_->SetSearchBoxActive(true, /*event_type=*/ui::ET_UNKNOWN);
+      // Explicitly request focus in case the search box was active before.
+      search_box_view_->search_box()->RequestFocus();
       break;
     case AppListBubblePage::kAssistant:
-      // Explicitly set search box inactive so the next attempt to active it
+      // Explicitly set search box inactive so the next attempt to activate it
       // will succeed.
       search_box_view_->SetSearchBoxActive(false,
                                            /*event_type=*/ui::ET_UNKNOWN);
@@ -556,6 +558,9 @@
   // Restore the layer bounds. This isn't visible because opacity is 0.
   layer()->SetBounds(layer_bounds);
 
+  // Hide any open folder by showing the apps page.
+  ShowApps(/*folder_item_view=*/nullptr, /*select_folder=*/false);
+
   if (on_hide_animation_ended_)
     std::move(on_hide_animation_ended_).Run();
 }
diff --git a/ash/app_list/views/app_list_bubble_view_unittest.cc b/ash/app_list/views/app_list_bubble_view_unittest.cc
index 0a7f862..0c0731c 100644
--- a/ash/app_list/views/app_list_bubble_view_unittest.cc
+++ b/ash/app_list/views/app_list_bubble_view_unittest.cc
@@ -123,6 +123,8 @@
   // Shows the app list on the primary display.
   void ShowAppList() { GetAppListTestHelper()->ShowAppList(); }
 
+  void DismissAppList() { GetAppListTestHelper()->Dismiss(); }
+
   void AddContinueSuggestionResult(int num_suggestions) {
     GetAppListTestHelper()->AddContinueSuggestionResults(num_suggestions);
   }
@@ -430,6 +432,26 @@
   EXPECT_TRUE(search_box_view->is_search_box_active());
 }
 
+TEST_F(AppListBubbleViewTest, OpeningBubbleTwiceFocusesSearchBox) {
+  AddAppItems(1);
+  ShowAppList();
+
+  // Click on an item, which takes focus out of the search field.
+  AppListItemView* item =
+      GetAppListTestHelper()->GetScrollableAppsGridView()->GetItemViewAt(0);
+  LeftClickOn(item);
+  SearchBoxView* search_box_view = GetSearchBoxView();
+  ASSERT_FALSE(search_box_view->search_box()->HasFocus());
+
+  // The app list view and widget are cached after this close.
+  DismissAppList();
+
+  // Search box is focused on next show.
+  ShowAppList();
+  EXPECT_TRUE(search_box_view->search_box()->HasFocus());
+  EXPECT_TRUE(search_box_view->is_search_box_active());
+}
+
 TEST_F(AppListBubbleViewTest, SearchBoxTextUsesPrimaryTextColor) {
   ShowAppList();
 
@@ -843,6 +865,24 @@
   EXPECT_TRUE(GetAppListTestHelper()->GetBubbleFolderView()->GetVisible());
 }
 
+TEST_F(AppListBubbleViewTest, FolderClosedOnAppListDismiss) {
+  AddFolderWithApps(3);
+  ShowAppList();
+
+  AppListItemView* folder_item = GetAppsGridView()->GetItemViewAt(0);
+  LeftClickOn(folder_item);
+  ASSERT_TRUE(GetAppListTestHelper()->IsInFolderView());
+  ASSERT_TRUE(GetAppListTestHelper()->GetBubbleFolderView()->GetVisible());
+
+  // The bubble view and widget are cached after dismiss.
+  DismissAppList();
+
+  // The folder is closed when the app list is reopened.
+  ShowAppList();
+  EXPECT_FALSE(GetAppListTestHelper()->IsInFolderView());
+  EXPECT_FALSE(GetAppListTestHelper()->GetBubbleFolderView()->GetVisible());
+}
+
 TEST_F(AppListBubbleViewTest, LargeFolderViewFitsInsideMainBubble) {
   // Create more apps than fit in the default sized folder.
   AddFolderWithApps(30);
diff --git a/ash/app_list/views/apps_grid_context_menu.cc b/ash/app_list/views/apps_grid_context_menu.cc
index c94af1cf..714d3c3 100644
--- a/ash/app_list/views/apps_grid_context_menu.cc
+++ b/ash/app_list/views/apps_grid_context_menu.cc
@@ -31,10 +31,6 @@
       AppListModelProvider::Get()->model()->delegate()->RequestAppListSort(
           AppListSortOrder::kNameAlphabetical);
       break;
-    case AppsGridCommandId::kReorderByNameReverseAlphabetical:
-      AppListModelProvider::Get()->model()->delegate()->RequestAppListSort(
-          AppListSortOrder::kNameReverseAlphabetical);
-      break;
     case AppsGridCommandId::kReorderByColor:
       AppListModelProvider::Get()->model()->delegate()->RequestAppListSort(
           AppListSortOrder::kColor);
@@ -71,31 +67,23 @@
 
 void AppsGridContextMenu::BuildMenuModel() {
   context_menu_model_ = std::make_unique<ui::SimpleMenuModel>(this);
-  reorder_name_submenu_ = std::make_unique<ui::SimpleMenuModel>(this);
-
-  // As both of the submenu items are not planned to be launched, the option
-  // strings are directly written as the parameters.
-  // TODO(https://crbug.com/1269386): Add i18n strings for each menu item.
-  reorder_name_submenu_->AddItem(kReorderByNameAlphabetical, u"Alphabetical");
-  reorder_name_submenu_->AddItem(kReorderByNameReverseAlphabetical,
-                                 u"Reverse alphabetical");
 
   context_menu_model_->AddTitle(l10n_util::GetStringUTF16(
       IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE));
-  context_menu_model_->AddSubMenuWithIcon(
-      AppsGridCommandId::kReorderByName,
+  context_menu_model_->AddItemWithIcon(
+      AppsGridCommandId::kReorderByNameAlphabetical,
       l10n_util::GetStringUTF16(
           IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_NAME),
-      reorder_name_submenu_.get(),
       ui::ImageModel::FromVectorIcon(kSortAlphabeticalIcon));
-  // TODO(crbug.com/1276230): Add vector icon to reorder by color option.
-  // TODO(https://crbug.com/1269386): Add i18n strings for color menu item.
-  context_menu_model_->AddItem(kReorderByColor, u"Color");
+  context_menu_model_->AddItemWithIcon(
+      AppsGridCommandId::kReorderByColor,
+      l10n_util::GetStringUTF16(
+          IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_COLOR),
+      ui::ImageModel::FromVectorIcon(kSortColorIcon));
 }
 
 void AppsGridContextMenu::OnMenuClosed() {
   menu_runner_.reset();
-  reorder_name_submenu_.reset();
   context_menu_model_.reset();
   root_menu_item_view_ = nullptr;
   menu_model_adapter_.reset();
diff --git a/ash/app_list/views/apps_grid_context_menu.h b/ash/app_list/views/apps_grid_context_menu.h
index 9fee0b19..e05928e 100644
--- a/ash/app_list/views/apps_grid_context_menu.h
+++ b/ash/app_list/views/apps_grid_context_menu.h
@@ -76,10 +76,6 @@
 
   // The root menu item view of `context_menu_model_`. Cached for testing.
   views::MenuItemView* root_menu_item_view_ = nullptr;
-
-  // The submenu model that contains name reorder options used in
-  // `context_menu_model_`.
-  std::unique_ptr<ui::SimpleMenuModel> reorder_name_submenu_;
 };
 
 }  // namespace ash
diff --git a/ash/app_list/views/apps_grid_view_unittest.cc b/ash/app_list/views/apps_grid_view_unittest.cc
index e2487a15..4c00689 100644
--- a/ash/app_list/views/apps_grid_view_unittest.cc
+++ b/ash/app_list/views/apps_grid_view_unittest.cc
@@ -4404,41 +4404,10 @@
   const gfx::Point reorder_option_point =
       reorder_option->GetBoundsInScreen().CenterPoint();
   SimulateLeftClickOrTapAt(reorder_option_point);
-  ASSERT_TRUE(reorder_option->SubmenuIsShowing());
-
-  // Sort the apps by their name in alphabetical order.
-  const gfx::Point alphabetical_option = reorder_option->GetSubmenu()
-                                             ->GetMenuItemAt(0)
-                                             ->GetBoundsInScreen()
-                                             .CenterPoint();
-  SimulateLeftClickOrTapAt(alphabetical_option);
   EXPECT_EQ(AppListSortOrder::kNameAlphabetical,
             model_->requested_sort_order());
   EXPECT_FALSE(context_menu->IsMenuShowing());
 
-  // Open the menu again to test the reverse alphabetical sort option.
-  SimulateRightClickOrLongPressAt(empty_space);
-  EXPECT_TRUE(context_menu->IsMenuShowing());
-
-  // Cache the current context menu view.
-  reorder_option =
-      context_menu->root_menu_item_view()->GetSubmenu()->GetMenuItemAt(1);
-  ASSERT_TRUE(reorder_option->title() == u"Name");
-
-  // Open the Reorder by Name submenu.
-  SimulateLeftClickOrTapAt(reorder_option_point);
-  ASSERT_TRUE(reorder_option->SubmenuIsShowing());
-
-  // Sort the apps by their name in reverse alphabetical order.
-  const gfx::Point reverse_option = reorder_option->GetSubmenu()
-                                        ->GetMenuItemAt(1)
-                                        ->GetBoundsInScreen()
-                                        .CenterPoint();
-  SimulateLeftClickOrTapAt(reverse_option);
-  EXPECT_EQ(AppListSortOrder::kNameReverseAlphabetical,
-            model_->requested_sort_order());
-  EXPECT_FALSE(context_menu->IsMenuShowing());
-
   // Open the menu again to test the color sort option.
   SimulateRightClickOrLongPressAt(empty_space);
   EXPECT_TRUE(context_menu->IsMenuShowing());
@@ -4489,43 +4458,10 @@
   gfx::Point reorder_option_point =
       reorder_option->GetBoundsInScreen().CenterPoint();
   SimulateLeftClickOrTapAt(reorder_option_point);
-  ASSERT_TRUE(reorder_option->SubmenuIsShowing());
-
-  // Sort the apps by their name in alphabetical order.
-  const gfx::Point alphabetical_option = reorder_option->GetSubmenu()
-                                             ->GetMenuItemAt(0)
-                                             ->GetBoundsInScreen()
-                                             .CenterPoint();
-  SimulateLeftClickOrTapAt(alphabetical_option);
   EXPECT_EQ(AppListSortOrder::kNameAlphabetical,
             model_->requested_sort_order());
   EXPECT_FALSE(context_menu->IsMenuShowing());
 
-  // Open the menu again to test the reverse alphabetical sort option.
-  folder_item_point = folder_item->GetBoundsInScreen().CenterPoint();
-  SimulateRightClickOrLongPressAt(folder_item_point);
-  EXPECT_TRUE(context_menu->IsMenuShowing());
-
-  // Cache the current context menu view.
-  reorder_option =
-      context_menu->root_menu_item_view()->GetSubmenu()->GetMenuItemAt(1);
-  ASSERT_TRUE(reorder_option->title() == u"Name");
-
-  // Open the Reorder by Name submenu.
-  reorder_option_point = reorder_option->GetBoundsInScreen().CenterPoint();
-  SimulateLeftClickOrTapAt(reorder_option_point);
-  ASSERT_TRUE(reorder_option->SubmenuIsShowing());
-
-  // Sort the apps by their name in reverse alphabetical order.
-  const gfx::Point reverse_option = reorder_option->GetSubmenu()
-                                        ->GetMenuItemAt(1)
-                                        ->GetBoundsInScreen()
-                                        .CenterPoint();
-  SimulateLeftClickOrTapAt(reverse_option);
-  EXPECT_EQ(AppListSortOrder::kNameReverseAlphabetical,
-            model_->requested_sort_order());
-  EXPECT_FALSE(context_menu->IsMenuShowing());
-
   // Open the menu again to test the color sort option.
   SimulateRightClickOrLongPressAt(folder_item_point);
   EXPECT_TRUE(context_menu->IsMenuShowing());
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index 231849d..582ad69 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -4339,7 +4339,7 @@
       <message name="IDS_AUTH_FACTOR_LABEL_PASSWORD_OR_PIN_REQUIRED" desc="Label on user's lock screen prompting user to enter password or PIN after other sign in authentication methods fail.">
         Enter password or PIN for more security
       </message>
-      <message name="IDS_AUTH_FACTOR_LABEL_CLICK_TO_ENTER" desc="Label on user's lock screen when a user is successfully authenticated and may click to enter Chromebook.">
+      <message name="IDS_AUTH_FACTOR_LABEL_CLICK_TO_ENTER" desc="Label on user's lock screen when a user is successfully authenticated and may click on arrow icon to unlock/use the Chromebook.">
         Tap or click to enter
       </message>
 
@@ -4366,9 +4366,12 @@
       <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE" desc="Title of the context menu in apps grid view in Productivity Launcher.">
         Reorder by
       </message>
-      <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_NAME" desc="Title of the context menu item in apps grid view in Productivity Launcher that contains a submenu with options describing how the apps will be reordered by their names.">
+      <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_NAME" desc="Title of the context menu item in apps grid view in Productivity Launcher for reordering the apps by their names">
         Name
       </message>
+      <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_COLOR" desc="Title of the context menu item in apps grid view in Productivity Launcher for reordering the apps by their icon colors">
+        Color
+      </message>
       <message name="IDS_SUGGESTED_APPS_INDICATOR" desc="Indicator text in the launcher on top of suggested apps.">
         SUGGESTED APPS
       </message>
diff --git a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_COLOR.png.sha1 b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_COLOR.png.sha1
new file mode 100644
index 0000000..b8c8626f
--- /dev/null
+++ b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_COLOR.png.sha1
@@ -0,0 +1 @@
+12b911c5cadf78a8d05ef803dc6f1a645d2e9952
\ No newline at end of file
diff --git a/ash/capture_mode/capture_mode_session.cc b/ash/capture_mode/capture_mode_session.cc
index bfa4ae1..b72e9ea 100644
--- a/ash/capture_mode/capture_mode_session.cc
+++ b/ash/capture_mode/capture_mode_session.cc
@@ -1120,6 +1120,10 @@
     // without animation) when ShowAllUis() is called.
     widget->GetNativeWindow()->SetProperty(aura::client::kAnimationsDisabledKey,
                                            true);
+    // The layer's opacity could be less than 1.f if the widget was hidden
+    // before we disabled the animations above. We need to reset the opacity
+    // back to 1.f as we will hide the widget without animation.
+    widget->GetLayer()->SetOpacity(1.f);
     widget->Hide();
   }
 
@@ -1138,7 +1142,8 @@
     // before we re-enable the animations. This is to avoid having those widgets
     // show up in the captured images or videos in case this is used right
     // before ending the session to perform the capture.
-    widget->Show();
+    if (CanShowWidget(widget))
+      widget->Show();
     widget->GetNativeWindow()->SetProperty(aura::client::kAnimationsDisabledKey,
                                            false);
   }
@@ -1146,6 +1151,15 @@
   layer()->SchedulePaint(layer()->bounds());
 }
 
+bool CaptureModeSession::CanShowWidget(views::Widget* widget) const {
+  // If widget is the capture label widget, we will show it only if it doesn't
+  // intersect with the settings widget.
+  return !(capture_label_widget_ && capture_mode_settings_widget_ &&
+           capture_label_widget_.get() == widget &&
+           capture_mode_settings_widget_->GetWindowBoundsInScreen().Intersects(
+               capture_label_widget_->GetWindowBoundsInScreen()));
+}
+
 void CaptureModeSession::RefreshBarWidgetBounds() {
   DCHECK(capture_mode_bar_widget_);
   capture_mode_bar_widget_->SetBounds(
diff --git a/ash/capture_mode/capture_mode_session.h b/ash/capture_mode/capture_mode_session.h
index f75efcf..7bcb5b5 100644
--- a/ash/capture_mode/capture_mode_session.h
+++ b/ash/capture_mode/capture_mode_session.h
@@ -213,6 +213,10 @@
   void HideAllUis();
   void ShowAllUis();
 
+  // Called by `ShowAllUis` for each widget. Returns true if the given `widget`
+  // could be shown, otherwise, returns false.
+  bool CanShowWidget(views::Widget* widget) const;
+
   // Sets the correct screen bounds on the `capture_mode_bar_widget_` based on
   // the `current_root_`, potentially moving the bar to a new display if
   // `current_root_` is different`.
diff --git a/ash/capture_mode/capture_mode_unittests.cc b/ash/capture_mode/capture_mode_unittests.cc
index d719c2dc..4a1faf0 100644
--- a/ash/capture_mode/capture_mode_unittests.cc
+++ b/ash/capture_mode/capture_mode_unittests.cc
@@ -5754,13 +5754,13 @@
   EXPECT_FALSE(capture_folder.is_default_downloads_folder);
 }
 
-// Tests that when capture label widget overlaps with settings widget, hide
-// capture label widget. Show capture label widget after closing settings
-// widget.
+// Tests that when there's no overlap betwwen capture label widget and settings
+// widget, capture label widget is shown/hidden correctly after open/close the
+// folder selection window.
 TEST_F(CaptureModeAdvancedSettingsTest,
-       CaptureLabelViewOverlapsWithSettingsView) {
-  // Update the display size to make sure capture label widget will not overlap
-  // with settings widget
+       CaptureLabelViewNotOverlapsWithSettingsView) {
+  // Update the display size to make sure capture label widget will not
+  // overlap with settings widget
   UpdateDisplay("1200x1000");
 
   auto* controller = StartImageRegionCapture();
@@ -5776,29 +5776,69 @@
   EXPECT_TRUE(capture_label_widget->IsVisible());
   EXPECT_TRUE(settings_widget->IsVisible());
 
+  // Open folder selection window, check that both capture label widget and
+  // settings widget are invisible.
+  CaptureModeAdvancedSettingsTestApi test_api;
+  auto* dialog_factory = FakeFolderSelectionDialogFactory::Get();
+  ClickOnView(test_api.GetSelectFolderMenuItem(), event_generator);
+  EXPECT_TRUE(IsFolderSelectionDialogShown());
+  EXPECT_FALSE(capture_label_widget->IsVisible());
+  EXPECT_FALSE(settings_widget->IsVisible());
+
+  // Now close folder selection window, check that capture label widget and
+  // settings widget become visible.
+  dialog_factory->CancelDialog();
+  EXPECT_FALSE(IsFolderSelectionDialogShown());
+  EXPECT_TRUE(capture_label_widget->IsVisible());
+  EXPECT_EQ(capture_label_widget->GetLayer()->GetTargetOpacity(), 1.f);
+  EXPECT_TRUE(settings_widget->IsVisible());
+
   // Close settings widget. Capture label widget is visible.
   ClickOnView(GetSettingsButton(), event_generator);
   EXPECT_TRUE(capture_label_widget->IsVisible());
   controller->Stop();
+}
 
+// Tests that when capture label widget overlaps with settings widget, capture
+// label widget is shown/hidden correctly after open/close the folder selection
+// window, open/close settings menu. Regression test for
+// https://crbug.com/1279606.
+TEST_F(CaptureModeAdvancedSettingsTest,
+       CaptureLabelViewOverlapsWithSettingsView) {
   // Update display size to make capture label widget overlap with settings
   // widget.
   UpdateDisplay("1100x700");
-  controller = StartImageRegionCapture();
+  auto* controller = StartImageRegionCapture();
+  auto* event_generator = GetEventGenerator();
 
-  // Tests that capture label widget overlaps with settings widget and is hidden
-  // after setting widget is shown.
-  capture_label_widget = GetCaptureModeLabelWidget();
+  // Tests that capture label widget overlaps with settings widget and is
+  // hidden after setting widget is shown.
+  auto* capture_label_widget = GetCaptureModeLabelWidget();
   ClickOnView(GetSettingsButton(), event_generator);
-  settings_widget = GetCaptureModeSettingsWidget();
+  auto* settings_widget = GetCaptureModeSettingsWidget();
   EXPECT_TRUE(capture_label_widget->GetWindowBoundsInScreen().Intersects(
       settings_widget->GetWindowBoundsInScreen()));
   EXPECT_FALSE(GetCaptureModeLabelWidget()->IsVisible());
   EXPECT_TRUE(settings_widget->IsVisible());
 
-  // Tests that capture label widget is visible after settings widget is closed.
+  // Open folder selection window, capture label widget is invisible.
+  CaptureModeAdvancedSettingsTestApi test_api;
+  auto* dialog_factory = FakeFolderSelectionDialogFactory::Get();
+  ClickOnView(test_api.GetSelectFolderMenuItem(), event_generator);
+  EXPECT_TRUE(IsFolderSelectionDialogShown());
+  EXPECT_FALSE(capture_label_widget->IsVisible());
+
+  // Close folder selection window, capture label widget is invisible.
+  dialog_factory->CancelDialog();
+  EXPECT_FALSE(IsFolderSelectionDialogShown());
+  EXPECT_FALSE(capture_label_widget->IsVisible());
+
+  // Tests that capture label widget is visible after settings widget is
+  // closed.
   ClickOnView(GetSettingsButton(), event_generator);
   EXPECT_TRUE(capture_label_widget->IsVisible());
+  EXPECT_EQ(capture_label_widget->GetLayer()->GetTargetOpacity(), 1.f);
+  controller->Stop();
 }
 
 // Tests the basic keyboard navigation functions for the settings menu.
diff --git a/ash/components/phonehub/fake_camera_roll_manager.cc b/ash/components/phonehub/fake_camera_roll_manager.cc
index 4953e2e2..34eb7be 100644
--- a/ash/components/phonehub/fake_camera_roll_manager.cc
+++ b/ash/components/phonehub/fake_camera_roll_manager.cc
@@ -34,9 +34,16 @@
   ComputeAndUpdateUiState();
 }
 
+void FakeCameraRollManager::SetIsAndroidStorageGranted(bool granted) {
+  is_android_storage_granted_ = granted;
+  ComputeAndUpdateUiState();
+}
+
 void FakeCameraRollManager::ComputeAndUpdateUiState() {
   if (!is_camera_roll_accessible_) {
     ui_state_ = CameraRollUiState::SHOULD_HIDE;
+  } else if (!is_android_storage_granted_) {
+    ui_state_ = CameraRollUiState::NO_STORAGE_PERMISSION;
   } else if (is_avaiable_to_be_enabled_) {
     ui_state_ = (has_dismissed_onboarding_dialog_)
                     ? CameraRollUiState::SHOULD_HIDE
diff --git a/ash/components/phonehub/fake_camera_roll_manager.h b/ash/components/phonehub/fake_camera_roll_manager.h
index 74fec955..3569b9b 100644
--- a/ash/components/phonehub/fake_camera_roll_manager.h
+++ b/ash/components/phonehub/fake_camera_roll_manager.h
@@ -20,6 +20,7 @@
   void SetIsCameraRollAvailableToBeEnabled(bool can_enable);
   void SetIsCameraRollAccessible(bool accessiable);
   void EnableCameraRollFeatureInSystemSetting() override;
+  void SetIsAndroidStorageGranted(bool granted);
 
   using CameraRollManager::SetCurrentItems;
 
@@ -34,6 +35,7 @@
   bool is_avaiable_to_be_enabled_ = true;
   bool is_camera_roll_accessible_ = true;
   bool is_refreshing_after_user_opt_in_ = false;
+  bool is_android_storage_granted_ = true;
 };
 
 }  // namespace phonehub
diff --git a/ash/quick_pair/common/fast_pair/fast_pair_metrics.cc b/ash/quick_pair/common/fast_pair/fast_pair_metrics.cc
index ac63776..e87c5e6 100644
--- a/ash/quick_pair/common/fast_pair/fast_pair_metrics.cc
+++ b/ash/quick_pair/common/fast_pair/fast_pair_metrics.cc
@@ -27,6 +27,34 @@
     "Bluetooth.ChromeOS.FastPair.RetroactivePairing.Result";
 const char kTotalGattConnectionTimeMetric[] =
     "Bluetooth.ChromeOS.FastPair.TotalGattConnectionTime";
+const char kFastPairPairFailureInitialMetric[] =
+    "Bluetooth.ChromeOS.FastPair.PairFailure.InitialPairingProtocol";
+const char kFastPairPairFailureSubsequentMetric[] =
+    "Bluetooth.ChromeOS.FastPair.PairFailure.SubsequentPairingProtocol";
+const char kFastPairPairFailureRetroactiveMetric[] =
+    "Bluetooth.ChromeOS.FastPair.PairFailure.RetroactivePairingProtocol";
+const char kFastPairPairResultInitialMetric[] =
+    "Bluetooth.ChromeOS.FastPair.Pairing.Result.InitialPairingProtocol";
+const char kFastPairPairResultSubsequentMetric[] =
+    "Bluetooth.ChromeOS.FastPair.Pairing.Result.SubsequentPairingProtocol";
+const char kFastPairPairResultRetroactiveMetric[] =
+    "Bluetooth.ChromeOS.FastPair.Pairing.Result.RetroactivePairingProtocol";
+const char kFastPairAccountKeyWriteResultInitialMetric[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyWrite.Result.InitialPairingProtocol";
+const char kFastPairAccountKeyWriteResultSubsequentMetric[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyWrite.Result."
+    "SubsequentPairingProtocol";
+const char kFastPairAccountKeyWriteResultRetroactiveMetric[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyWrite.Result."
+    "RetroactivePairingProtocol";
+const char kFastPairAccountKeyWriteFailureInitialMetric[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyFailure.InitialPairingProtocol";
+const char kFastPairAccountKeyWriteFailureSubsequentMetric[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyFailure.SubsequentPairingProtocol";
+const char kFastPairAccountKeyWriteFailureRetroactiveMetric[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyFailure.RetroactivePairingProtocol";
+const char kKeyGenerationResultMetric[] =
+    "Bluetooth.ChromeOS.FastPair.KeyGenerationResult";
 
 }  // namespace
 
@@ -91,5 +119,75 @@
                           total_gatt_connection_time);
 }
 
+void RecordPairingResult(const Device& device, bool success) {
+  switch (device.protocol) {
+    case Protocol::kFastPairInitial:
+      base::UmaHistogramBoolean(kFastPairPairResultInitialMetric, success);
+      break;
+    case Protocol::kFastPairRetroactive:
+      base::UmaHistogramBoolean(kFastPairPairResultRetroactiveMetric, success);
+      break;
+    case Protocol::kFastPairSubsequent:
+      base::UmaHistogramBoolean(kFastPairPairResultSubsequentMetric, success);
+      break;
+  }
+}
+
+void RecordPairingFailureReason(const Device& device, PairFailure failure) {
+  switch (device.protocol) {
+    case Protocol::kFastPairInitial:
+      base::UmaHistogramSparse(kFastPairPairFailureInitialMetric,
+                               static_cast<int>(failure));
+      break;
+    case Protocol::kFastPairRetroactive:
+      base::UmaHistogramSparse(kFastPairPairFailureRetroactiveMetric,
+                               static_cast<int>(failure));
+      break;
+    case Protocol::kFastPairSubsequent:
+      base::UmaHistogramSparse(kFastPairPairFailureSubsequentMetric,
+                               static_cast<int>(failure));
+      break;
+  }
+}
+
+void RecordAccountKeyFailureReason(const Device& device,
+                                   AccountKeyFailure failure) {
+  switch (device.protocol) {
+    case Protocol::kFastPairInitial:
+      base::UmaHistogramSparse(kFastPairAccountKeyWriteFailureInitialMetric,
+                               static_cast<int>(failure));
+      break;
+    case Protocol::kFastPairRetroactive:
+      base::UmaHistogramSparse(kFastPairAccountKeyWriteFailureRetroactiveMetric,
+                               static_cast<int>(failure));
+      break;
+    case Protocol::kFastPairSubsequent:
+      base::UmaHistogramSparse(kFastPairAccountKeyWriteFailureSubsequentMetric,
+                               static_cast<int>(failure));
+      break;
+  }
+}
+
+void RecordAccountKeyResult(const Device& device, bool success) {
+  switch (device.protocol) {
+    case Protocol::kFastPairInitial:
+      base::UmaHistogramBoolean(kFastPairAccountKeyWriteResultInitialMetric,
+                                success);
+      break;
+    case Protocol::kFastPairRetroactive:
+      base::UmaHistogramBoolean(kFastPairAccountKeyWriteResultRetroactiveMetric,
+                                success);
+      break;
+    case Protocol::kFastPairSubsequent:
+      base::UmaHistogramBoolean(kFastPairAccountKeyWriteResultSubsequentMetric,
+                                success);
+      break;
+  }
+}
+
+void RecordKeyPairGenerationResult(bool success) {
+  base::UmaHistogramBoolean(kKeyGenerationResultMetric, success);
+}
+
 }  // namespace quick_pair
 }  // namespace ash
diff --git a/ash/quick_pair/common/fast_pair/fast_pair_metrics.h b/ash/quick_pair/common/fast_pair/fast_pair_metrics.h
index 71d76d86..3989b4e8 100644
--- a/ash/quick_pair/common/fast_pair/fast_pair_metrics.h
+++ b/ash/quick_pair/common/fast_pair/fast_pair_metrics.h
@@ -5,8 +5,11 @@
 #ifndef ASH_QUICK_PAIR_COMMON_FAST_PAIR_FAST_PAIR_METRICS_H_
 #define ASH_QUICK_PAIR_COMMON_FAST_PAIR_FAST_PAIR_METRICS_H_
 
+#include "ash/quick_pair/common/account_key_failure.h"
+#include "ash/quick_pair/common/pair_failure.h"
 #include "base/component_export.h"
 #include "base/time/time.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 
 namespace ash {
 namespace quick_pair {
@@ -78,6 +81,22 @@
 COMPONENT_EXPORT(QUICK_PAIR_COMMON)
 void RecordTotalGattConnectionTime(base::TimeDelta total_gatt_connection_time);
 
+COMPONENT_EXPORT(QUICK_PAIR_COMMON)
+void RecordPairingFailureReason(const Device& device, PairFailure failure);
+
+COMPONENT_EXPORT(QUICK_PAIR_COMMON)
+void RecordPairingResult(const Device& device, bool success);
+
+COMPONENT_EXPORT(QUICK_PAIR_COMMON)
+void RecordAccountKeyFailureReason(const Device& device,
+                                   AccountKeyFailure failure);
+
+COMPONENT_EXPORT(QUICK_PAIR_COMMON)
+void RecordAccountKeyResult(const Device& device, bool success);
+
+COMPONENT_EXPORT(QUICK_PAIR_COMMON)
+void RecordKeyPairGenerationResult(bool success);
+
 }  // namespace quick_pair
 }  // namespace ash
 
diff --git a/ash/quick_pair/common/pair_failure.h b/ash/quick_pair/common/pair_failure.h
index d827381..b3882db 100644
--- a/ash/quick_pair/common/pair_failure.h
+++ b/ash/quick_pair/common/pair_failure.h
@@ -11,6 +11,9 @@
 namespace ash {
 namespace quick_pair {
 
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused. This enum should be kept in sync with
+// the FastPairPairFailure enum in src/tools/metrics/histograms/enums.xml.
 enum class PairFailure {
   // Failed to create a GATT connection to the device.
   kCreateGattConnection = 0,
diff --git a/ash/quick_pair/fast_pair_handshake/fast_pair_data_encryptor_impl.cc b/ash/quick_pair/fast_pair_handshake/fast_pair_data_encryptor_impl.cc
index 455d70b..f28ccf7 100644
--- a/ash/quick_pair/fast_pair_handshake/fast_pair_data_encryptor_impl.cc
+++ b/ash/quick_pair/fast_pair_handshake/fast_pair_data_encryptor_impl.cc
@@ -7,6 +7,7 @@
 #include <array>
 #include <cstdint>
 
+#include "ash/quick_pair/common/fast_pair/fast_pair_metrics.h"
 #include "ash/quick_pair/common/logging.h"
 #include "ash/quick_pair/common/protocol.h"
 #include "ash/quick_pair/fast_pair_handshake/fast_pair_encryption.h"
@@ -125,6 +126,8 @@
       fast_pair_encryption::GenerateKeysWithEcdhKeyAgreement(
           public_anti_spoofing_key);
 
+  RecordKeyPairGenerationResult(/*success=*/key_pair.has_value());
+
   if (key_pair) {
     std::unique_ptr<FastPairDataEncryptorImpl> data_encryptor =
         base::WrapUnique(new FastPairDataEncryptorImpl(key_pair.value()));
diff --git a/ash/quick_pair/keyed_service/quick_pair_metrics_logger.cc b/ash/quick_pair/keyed_service/quick_pair_metrics_logger.cc
index 1631fae..927e16f 100644
--- a/ash/quick_pair/keyed_service/quick_pair_metrics_logger.cc
+++ b/ash/quick_pair/keyed_service/quick_pair_metrics_logger.cc
@@ -62,6 +62,7 @@
 void QuickPairMetricsLogger::OnDevicePaired(scoped_refptr<Device> device) {
   AttemptRecordingFastPairEngagementFlow(
       *device, FastPairEngagementFlowEvent::kPairingSucceeded);
+  RecordPairingResult(*device, /*success=*/true);
   feature_usage_metrics_logger_->RecordUsage(/*success=*/true);
 
   base::TimeDelta total_pair_time =
@@ -89,6 +90,8 @@
   AttemptRecordingTotalUxPairTime(*device, total_pair_time);
 
   feature_usage_metrics_logger_->RecordUsage(/*success=*/false);
+  RecordPairingFailureReason(*device, failure);
+  RecordPairingResult(*device, /*success=*/false);
 }
 
 void QuickPairMetricsLogger::OnDiscoveryAction(scoped_refptr<Device> device,
@@ -206,10 +209,16 @@
 void QuickPairMetricsLogger::OnAccountKeyWrite(
     scoped_refptr<Device> device,
     absl::optional<AccountKeyFailure> error) {
-  if (device->protocol != Protocol::kFastPairRetroactive)
-    return;
+  if (device->protocol == Protocol::kFastPairRetroactive)
+    RecordRetroactivePairingResult(/*success=*/!error.has_value());
 
-  RecordRetroactivePairingResult(/*success=*/!error.has_value());
+  if (error) {
+    RecordAccountKeyResult(*device, /*success=*/false);
+    RecordAccountKeyFailureReason(*device, error.value());
+    return;
+  }
+
+  RecordAccountKeyResult(*device, /*success=*/true);
 }
 
 void QuickPairMetricsLogger::OnCompanionAppAction(scoped_refptr<Device> device,
diff --git a/ash/quick_pair/keyed_service/quick_pair_metrics_logger_unittest.cc b/ash/quick_pair/keyed_service/quick_pair_metrics_logger_unittest.cc
index 83547adf..7999402 100644
--- a/ash/quick_pair/keyed_service/quick_pair_metrics_logger_unittest.cc
+++ b/ash/quick_pair/keyed_service/quick_pair_metrics_logger_unittest.cc
@@ -50,6 +50,27 @@
 const char kPairingMethodMetric[] = "Bluetooth.ChromeOS.FastPair.PairingMethod";
 const char kRetroactivePairingResultMetric[] =
     "Bluetooth.ChromeOS.FastPair.RetroactivePairing.Result";
+const char kFastPairPairFailureMetricInitial[] =
+    "Bluetooth.ChromeOS.FastPair.PairFailure.InitialPairingProtocol";
+const char kFastPairPairFailureMetricSubsequent[] =
+    "Bluetooth.ChromeOS.FastPair.PairFailure.SubsequentPairingProtocol";
+const char kFastPairPairFailureMetricRetroactive[] =
+    "Bluetooth.ChromeOS.FastPair.PairFailure.RetroactivePairingProtocol";
+const char kFastPairPairResultMetricInitial[] =
+    "Bluetooth.ChromeOS.FastPair.Pairing.Result.InitialPairingProtocol";
+const char kFastPairPairResultMetricSubsequent[] =
+    "Bluetooth.ChromeOS.FastPair.Pairing.Result.SubsequentPairingProtocol";
+const char kFastPairPairResultMetricRetroactive[] =
+    "Bluetooth.ChromeOS.FastPair.Pairing.Result.RetroactivePairingProtocol";
+const char kFastPairAccountKeyWriteResultMetricInitial[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyWrite.Result.InitialPairingProtocol";
+const char kFastPairAccountKeyWriteResultMetricRetroactive[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyWrite.Result."
+    "RetroactivePairingProtocol";
+const char kFastPairAccountKeyWriteFailureMetricInitial[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyFailure.InitialPairingProtocol";
+const char kFastPairAccountKeyWriteFailureMetricRetroactive[] =
+    "Bluetooth.ChromeOS.FastPair.AccountKeyFailure.RetroactivePairingProtocol";
 
 constexpr char kTestDeviceAddress[] = "11:12:13:14:15:16";
 constexpr char kTestBleDeviceName[] = "Test Device Name";
@@ -194,6 +215,9 @@
             PairFailure::kKeyBasedPairingCharacteristicDiscovery);
         break;
       case Protocol::kFastPairRetroactive:
+        mock_pairer_broker_->NotifyPairFailure(
+            retroactive_device_,
+            PairFailure::kKeyBasedPairingCharacteristicDiscovery);
         break;
     }
   }
@@ -209,6 +233,8 @@
         mock_pairer_broker_->NotifyDevicePaired(subsequent_device_);
         break;
       case Protocol::kFastPairRetroactive:
+        retroactive_device_->set_classic_address(kTestAddress);
+        mock_pairer_broker_->NotifyDevicePaired(retroactive_device_);
         break;
     }
   }
@@ -1534,20 +1560,198 @@
 
 TEST_F(QuickPairMetricsLoggerTest, WriteAccountKey_Initial) {
   histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 0);
   SimulateAccountKeyWritten(Protocol::kFastPairInitial);
   histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 1);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 0);
 }
 
 TEST_F(QuickPairMetricsLoggerTest, WriteAccountKey_Retroactive) {
   histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 0);
   SimulateAccountKeyWritten(Protocol::kFastPairRetroactive);
   histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 1);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 1);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 0);
 }
 
 TEST_F(QuickPairMetricsLoggerTest, WriteAccountKeyFailure_Retroactive) {
   histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 0);
   SimulateAccountKeyFailure(Protocol::kFastPairRetroactive);
   histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 1);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 1);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 1);
+}
+
+TEST_F(QuickPairMetricsLoggerTest, WriteAccountKeyFailure_Initial) {
+  histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 0);
+  SimulateAccountKeyFailure(Protocol::kFastPairInitial);
+  histogram_tester().ExpectTotalCount(kRetroactivePairingResultMetric, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricInitial, 1);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricInitial, 1);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteResultMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(
+      kFastPairAccountKeyWriteFailureMetricRetroactive, 0);
+}
+
+TEST_F(QuickPairMetricsLoggerTest, LogPairFailure_Initial) {
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+
+  SimulatePairingFailed(Protocol::kFastPairInitial);
+
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 1);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 1);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+}
+
+TEST_F(QuickPairMetricsLoggerTest, LogPairSuccess_Initial) {
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+
+  SimulatePairingSucceeded(Protocol::kFastPairInitial);
+
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 1);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+}
+
+TEST_F(QuickPairMetricsLoggerTest, LogPairFailure_Subsequent) {
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+
+  SimulatePairingFailed(Protocol::kFastPairSubsequent);
+
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 1);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 1);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+}
+
+TEST_F(QuickPairMetricsLoggerTest, LogPairSuccess_Subsequent) {
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+
+  SimulatePairingSucceeded(Protocol::kFastPairSubsequent);
+
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 1);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+}
+
+TEST_F(QuickPairMetricsLoggerTest, LogPairFailure_Retroactive) {
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+
+  SimulatePairingFailed(Protocol::kFastPairRetroactive);
+
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 1);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 1);
+}
+
+TEST_F(QuickPairMetricsLoggerTest, LogPairSuccess_Retroactive) {
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 0);
+
+  SimulatePairingSucceeded(Protocol::kFastPairRetroactive);
+
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairFailureMetricRetroactive, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricInitial, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricSubsequent, 0);
+  histogram_tester().ExpectTotalCount(kFastPairPairResultMetricRetroactive, 1);
 }
 
 }  // namespace quick_pair
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn
index 4c3ace6..cd7707c 100644
--- a/ash/resources/vector_icons/BUILD.gn
+++ b/ash/resources/vector_icons/BUILD.gn
@@ -241,6 +241,7 @@
     "six_files.icon",
     "small_close_button.icon",
     "sort_alphabetical.icon",
+    "sort_color.icon",
     "stylus_battery_status_unknown.icon",
     "switch_access.icon",
     "switch_access_back.icon",
diff --git a/ash/resources/vector_icons/sort_color.icon b/ash/resources/vector_icons/sort_color.icon
new file mode 100644
index 0000000..a41aaa81
--- /dev/null
+++ b/ash/resources/vector_icons/sort_color.icon
@@ -0,0 +1,51 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 20,
+MOVE_TO, 3, 10,
+R_CUBIC_TO, 0, 3.86f, 3.14f, 7, 7, 7,
+R_CUBIC_TO, 0.97f, 0, 1.75f, -0.78f, 1.75f, -1.75f,
+R_CUBIC_TO, 0, -0.43f, -0.16f, -0.84f, -0.45f, -1.17f,
+R_CUBIC_TO, -0.06f, -0.07f, -0.09f, -0.15f, -0.09f, -0.23f,
+R_CUBIC_TO, 0, -0.2f, 0.15f, -0.35f, 0.35f, -0.35f,
+R_H_LINE_TO, 1.24f,
+R_CUBIC_TO, 2.32f, 0, 4.2f, -1.88f, 4.2f, -4.2f,
+CUBIC_TO, 17, 5.83f, 13.86f, 3, 10, 3,
+CUBIC_TO, 6.14f, 3, 3, 6.14f, 3, 10,
+CLOSE,
+MOVE_TO, 5, 10,
+R_CUBIC_TO, 0, -2.76f, 2.24f, -5, 5, -5,
+R_CUBIC_TO, 2.76f, 0, 5, 1.96f, 5, 4.38f,
+CUBIC_TO, 15, 10.76f, 14, 12, 12, 12,
+R_H_LINE_TO, -1,
+R_CUBIC_TO, -0.86f, 0, -1.67f, 0.57f, -1.67f, 1.44f,
+R_CUBIC_TO, 0, 0.38f, 0.14f, 0.74f, 0.39f, 1.03f,
+R_CUBIC_TO, 0.04f, 0.04f, 0.09f, 0.12f, 0.09f, 0.22f,
+R_CUBIC_TO, 0, 0.18f, -0.14f, 0.31f, -0.31f, 0.31f,
+CUBIC_TO, 6.74f, 15, 5, 12.76f, 5, 10,
+CLOSE,
+R_MOVE_TO, 2, 2,
+R_CUBIC_TO, 0.55f, 0, 1, -0.45f, 1, -1,
+R_CUBIC_TO, 0, -0.55f, -0.45f, -1, -1, -1,
+R_CUBIC_TO, -0.55f, 0, -1, 0.45f, -1, 1,
+R_CUBIC_TO, 0, 0.55f, 0.45f, 1, 1, 1,
+CLOSE,
+R_MOVE_TO, 1.7f, -4,
+R_CUBIC_TO, 0, 0.55f, -0.45f, 1, -1, 1,
+R_CUBIC_TO, -0.55f, 0, -1, -0.45f, -1, -1,
+R_CUBIC_TO, 0, -0.55f, 0.45f, -1, 1, -1,
+R_CUBIC_TO, 0.55f, 0, 1, 0.45f, 1, 1,
+CLOSE,
+R_MOVE_TO, 2, 0,
+R_CUBIC_TO, 0.55f, 0, 1, -0.45f, 1, -1,
+R_CUBIC_TO, 0, -0.55f, -0.45f, -1, -1, -1,
+R_CUBIC_TO, -0.55f, 0, -1, 0.45f, -1, 1,
+R_CUBIC_TO, 0, 0.55f, 0.45f, 1, 1, 1,
+CLOSE,
+MOVE_TO, 14, 9,
+R_CUBIC_TO, 0, 0.55f, -0.45f, 1, -1, 1,
+R_CUBIC_TO, -0.55f, 0, -1, -0.45f, -1, -1,
+R_CUBIC_TO, 0, -0.55f, 0.45f, -1, 1, -1,
+R_CUBIC_TO, 0.55f, 0, 1, 0.45f, 1, 1,
+CLOSE
diff --git a/ash/shelf/test/shelf_layout_manager_test_base.cc b/ash/shelf/test/shelf_layout_manager_test_base.cc
index 983f71e6..e76f43c5 100644
--- a/ash/shelf/test/shelf_layout_manager_test_base.cc
+++ b/ash/shelf/test/shelf_layout_manager_test_base.cc
@@ -11,6 +11,7 @@
 #include "ash/shell.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h"
 #include "ash/wm/window_state.h"
+#include "ash/wm/wm_event.h"
 #include "ash/wm/workspace_controller.h"
 #include "base/bind.h"
 #include "chromeos/ui/base/window_properties.h"
@@ -692,7 +693,13 @@
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
 
-  widget->Restore();
+  // Change the window state back to its Normal state. We do that by sending
+  // a WM_EVENT_NORMAL to the window, instead of calling Widget::Restore()
+  // function, because restoring from a kMinimized window state will take
+  // the window back to its pre-minimized window state.
+  WMEvent restore_event(WM_EVENT_NORMAL);
+  WindowState::Get(widget->GetNativeWindow())->OnWMEvent(&restore_event);
+
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(layout_manager->HasVisibleWindow());
 
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index af0b423..0985350 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">ዝግ መግለጫ ፅሁፎችን ይጀምሩ</translation>
 <translation id="5078796286268621944">የተሳሳተ ፒን</translation>
 <translation id="5083553833479578423">ተጨማሪ የረዳት ባህሪያትን ያስከፍቱ።</translation>
+<translation id="5106223312672646208">ግላዊነት ያላብሱ</translation>
 <translation id="5117590920725113268">ቀጣዩን ወር አሳይ</translation>
 <translation id="5136175204352732067">የተለየ የቁልፍ ሰሌዳ ተገናኝቷል</translation>
 <translation id="5147567197700016471">ተከፍቷል</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index 46ba4c1..8c09f1d 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -193,6 +193,7 @@
 <translation id="2222841058024245321">سطح المكتب 7</translation>
 <translation id="2224075387478458881">يتم حظر استخدام ميزة تسجيل الشاشة عند عرض محتوى محمي.</translation>
 <translation id="225680501294068881">جارٍ البحث عن أجهزة...</translation>
+<translation id="2257486738914982088">حدث خطأ أثناء تنزيل الملف <ph name="FILENAME" />.</translation>
 <translation id="2268130516524549846">تم إيقاف البلوتوث</translation>
 <translation id="2268813581635650749">خروج من كل الحسابات</translation>
 <translation id="2269016722240250274">أحد التطبيقات يستخدم الميكروفون.</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">هل تريد فعلاً إيقاف النقرات التلقائية؟</translation>
 <translation id="4849058404725798627">تمييز الكائن باستخدام تركيز لوحة المفاتيح</translation>
 <translation id="485592688953820832">عدم اتخاذ أي إجراء (إيقاف مؤقَّت)</translation>
+<translation id="4860284199500934869">يُرجى التحقّق من الاتصال بالشبكة لتنزيل الملف <ph name="FILENAME" />.</translation>
 <translation id="486056901304535126">‏ستتم إعادة محاولة التنزيل لاحقًا. وسيتم إرسال ملفات التعرّف على الكلام إلى Google لمعالجتها إلى حين اكتمال عملية التنزيل.</translation>
 <translation id="4868492592575313542">مفعّلة</translation>
 <translation id="4872237917498892622">‏Alt+مفتاح البحث أو Shift</translation>
@@ -805,6 +807,7 @@
 <translation id="6452181791372256707">رفض</translation>
 <translation id="6453179446719226835">تم تغيير اللغة</translation>
 <translation id="6459472438155181876">تمديد الشاشة إلى <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">يتعذّر تنزيل الملف</translation>
 <translation id="6482559668224714696">مُكبِّر بملء الشاشة</translation>
 <translation id="6490471652906364588">‏جهاز USB-C (المنفذ الأيمن)</translation>
 <translation id="6491071886865974820">يتطلّب <ph name="MANAGER" /> منك تحديث جهاز <ph name="DEVICE_TYPE" /> قبل الموعد النهائي.</translation>
@@ -818,6 +821,8 @@
 <translation id="6537924328260219877">قوة الإشارة <ph name="SIGNAL_STRENGTH" />، بطارية الهاتف <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">جارٍ فحص الملف <ph name="FILENAME" /> لتنزيله</translation>
 <translation id="6542521951477560771">البث على <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+مثبَّت حديثًا</translation>
 <translation id="6559976592393364813">الطلب من المشرف</translation>
 <translation id="6565007273808762236">‏تعذُّر الاتصال من خلال شريحة eSIM</translation>
 <translation id="6570831796530454248">{0,plural, =1{تحديث الجهاز خلال ساعة واحدة}zero{تحديث الجهاز خلال # ساعة}two{تحديث الجهاز خلال ساعتين}few{تحديث الجهاز خلال # ساعات}many{تحديث الجهاز خلال # ساعة}other{تحديث الجهاز خلال # ساعة}}</translation>
@@ -849,6 +854,7 @@
 <translation id="6723839937902243910">الطاقة</translation>
 <translation id="6727969043791803658">البلوتوث متصل، ومستوى شحن البطارية: <ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">الانتقال إلى الإعدادات</translation>
 <translation id="6751052314767925245">ينفّذها المشرف</translation>
 <translation id="6751826523481687655">تتبّع الأداء قيْد التفعيل</translation>
 <translation id="6752912906630585008">تمت إزالة سطح المكتب <ph name="REMOVED_DESK" /> ودمجه مع سطح المكتب <ph name="RECEIVE_DESK" />.</translation>
@@ -984,6 +990,7 @@
 <translation id="7662283695561029522">النقر للإعداد</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">إضافة شبكة جوّال جديدة</translation>
+<translation id="7720410380936703141">إعادة المحاولة</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{إشعار واحد}zero{# إشعار}two{إشعاران (#)}few{# إشعارات}many{# إشعارًا}other{# إشعار}}</translation>
 <translation id="7724603315864178912">قص</translation>
 <translation id="7745560842763881396">عرض التطبيقات في الرفّ</translation>
@@ -1170,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">استخدام <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">فتح قفل الجهاز بواسطة <ph name="LOGIN_ID" /> لتنفيذ إجراء الإشعارات</translation>
+<translation id="9000771174482730261">إدارة مساحة التخزين</translation>
 <translation id="9017320285115481645">‏يُرجى إدخال رمز الدخول المخصّص للوالدين في Family Link.</translation>
 <translation id="9024331582947483881">ملء الشاشة</translation>
 <translation id="9047624247355796468">فتح الإعدادات للشبكة <ph name="NETWORK_NAME" /></translation>
@@ -1215,6 +1223,7 @@
 <translation id="938963181863597773">ماذا يتضمّن تقويمي؟</translation>
 <translation id="945522503751344254">إرسال تعليقات</translation>
 <translation id="951991426597076286">رفض</translation>
+<translation id="954052413789300507">لا تتوفّر مساحة كافية لتنزيل الملف <ph name="FILENAME" />. عليك إخلاء بعض المساحة.</translation>
 <translation id="974545358917229949">عرض <ph name="RESULT_COUNT" /> نتيجة عن <ph name="QUERY" /></translation>
 <translation id="98515147261107953">أفقي</translation>
 <translation id="990277280839877440">تم إغلاق النافذة <ph name="WINDOW_TITILE" />.</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb
index 8df3742d..a3bc20a 100644
--- a/ash/strings/ash_strings_as.xtb
+++ b/ash/strings/ash_strings_as.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">ছাব-টাইটেল আৰম্ভ কৰক</translation>
 <translation id="5078796286268621944">ভুল পিন</translation>
 <translation id="5083553833479578423">Assistantৰ অন্যান্য সুবিধাসমূহ ব্যৱহাৰ কৰক।</translation>
+<translation id="5106223312672646208">ব্যক্তিগতকৰণ কৰক</translation>
 <translation id="5117590920725113268">পৰৱৰ্তী মাহ দেখুৱাওক</translation>
 <translation id="5136175204352732067">বিভিন্ন কীব’র্ড সংযোগ কৰা হৈছে</translation>
 <translation id="5147567197700016471">আনলক কৰা হ’ল</translation>
@@ -818,6 +819,7 @@
 <translation id="6528179044667508675">অসুবিধা নিদিব</translation>
 <translation id="65320610082834431">ইম'জিসমূহ</translation>
 <translation id="6537924328260219877">ছিগনেলৰ ক্ষমতা <ph name="SIGNAL_STRENGTH" />, ফ’নৰ বেটাৰী <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999"><ph name="FILENAME" /> স্কেনিং ডাউনল’ড কৰক</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> লৈ কাষ্ট কৰি থকা হৈছে</translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 নতুনকৈ ইনষ্টল কৰা</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb
index f85c316..da82316 100644
--- a/ash/strings/ash_strings_be.xtb
+++ b/ash/strings/ash_strings_be.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Працоўны стол 7</translation>
 <translation id="2224075387478458881">Запіс экрана забаронены, калі на ім ёсць абароненае змесціва</translation>
 <translation id="225680501294068881">Ідзе пошук прылад…</translation>
+<translation id="2257486738914982088">Не ўдалося спампаваць файл "<ph name="FILENAME" />"</translation>
 <translation id="2268130516524549846">Bluetooth выключаны</translation>
 <translation id="2268813581635650749">Выйсці адусюль</translation>
 <translation id="2269016722240250274">Мікрафон выкарыстоўваецца адной з праграм</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Сапраўды выключыць аўтаматычныя націсканні?</translation>
 <translation id="4849058404725798627">Вылучаць аб'ект з дапамогай клавіятурнага фокуса</translation>
 <translation id="485592688953820832">Нічога не рабіць (паўза)</translation>
+<translation id="4860284199500934869">Каб спампаваць файл "<ph name="FILENAME" />", праверце падключэнне да сеткі.</translation>
 <translation id="486056901304535126">Спроба спампаваць будзе зроблена пазней. Да завяршэння спампоўвання аўдыяматэрыял будзе адпраўлены для апрацоўкі ў Google.</translation>
 <translation id="4868492592575313542">уключыла</translation>
 <translation id="4872237917498892622">Alt + Search або Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Адхіліць</translation>
 <translation id="6453179446719226835">Мова была зменена</translation>
 <translation id="6459472438155181876">Экран пашыраны на дысплэй <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Не ўдаецца спампаваць файл</translation>
 <translation id="6482559668224714696">Лупа для поўнаэкраннага рэжыму</translation>
 <translation id="6490471652906364588">Прылада USB-C (правы порт)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> патрабуе, каб вы абнавілі прыладу <ph name="DEVICE_TYPE" /> да заканчэння тэрміну</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Не турбаваць</translation>
 <translation id="65320610082834431">Эмодзі</translation>
 <translation id="6537924328260219877">Магутнасць сігналу – <ph name="SIGNAL_STRENGTH" />, зарад акумулятара тэлефона – <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Ідзе праверка спампаванага файла "<ph name="FILENAME" />"</translation>
 <translation id="6542521951477560771">Вядзецца трансляцыя на прыладу "<ph name="RECEIVER_NAME" />"</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Усталявана нядаўна</translation>
 <translation id="6559976592393364813">Спытайце адміністратара</translation>
 <translation id="6565007273808762236">Падключэнне праз eSIM-карты недаступнае</translation>
 <translation id="6570831796530454248">{0,plural, =1{Абнавіце прыладу на працягу гадзіны}one{Абнавіце прыладу на працягу # гадзіны}few{Абнавіце прыладу на працягу # гадзін}many{Абнавіце прыладу на працягу # гадзін}other{Абнавіце прыладу на працягу # гадзіны}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Кнопка сілкавання</translation>
 <translation id="6727969043791803658">Прылада падключана. Зарад акумулятара: <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ПЕРАЙСЦІ Ў НАЛАДЫ</translation>
 <translation id="6751052314767925245">Гэтай функцыяй кіруе адміністратар</translation>
 <translation id="6751826523481687655">Трасіроўка прадукцыйнасці ўключана</translation>
 <translation id="6752912906630585008">Стол <ph name="REMOVED_DESK" /> быў выдалены і аб'яднаны са Сталом <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Дакраніцеся, каб сканфігураваць</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Дадаць новую сотавую сетку</translation>
+<translation id="7720410380936703141">ПАЎТАРЫЦЬ СПРОБУ</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 апавяшчэнне}one{# апавяшчэнне}few{# апавяшчэнні}many{# апавяшчэнняў}other{# апавяшчэння}}</translation>
 <translation id="7724603315864178912">Выразаць</translation>
 <translation id="7745560842763881396">Паказаць праграмы на паліцы</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Выкарыстоўваецца <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Разблакіруйце прыладу як <ph name="LOGIN_ID" />, каб выканаць дзеянне па апавяшчэнні</translation>
+<translation id="9000771174482730261">КІРАВАЦЬ СХОВІШЧАМ</translation>
 <translation id="9017320285115481645">Увядзіце бацькоўскі код доступу Family Link.</translation>
 <translation id="9024331582947483881">увесь экран</translation>
 <translation id="9047624247355796468">Адкрыць налады для сеткі <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Што ў маім календары?</translation>
 <translation id="945522503751344254">Адправіць водгук</translation>
 <translation id="951991426597076286">Адхіліць</translation>
+<translation id="954052413789300507">Файл "<ph name="FILENAME" />" не змяшчаецца ў сховішчы. Вызваліце месца.</translation>
 <translation id="974545358917229949">Паказваюцца вынікі (<ph name="RESULT_COUNT" />) па запыце "<ph name="QUERY" />"</translation>
 <translation id="98515147261107953">Альбомная</translation>
 <translation id="990277280839877440">Акно <ph name="WINDOW_TITILE" /> закрыта.</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 6100cf3b..9b4c831 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Работен кът 7</translation>
 <translation id="2224075387478458881">Записването на екрана не е разрешено, когато се вижда защитено съдържание</translation>
 <translation id="225680501294068881">Сканира се за устройства...</translation>
+<translation id="2257486738914982088">Нещо се обърка при изтеглянето на <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth е деактивиран</translation>
 <translation id="2268813581635650749">Изход за всички</translation>
 <translation id="2269016722240250274">Приложение използва микрофона ви</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Наистина ли искате да изключите автоматичните кликвания?</translation>
 <translation id="4849058404725798627">Открояване на обекта, върху който е фокусът от клавиатурата</translation>
 <translation id="485592688953820832">Без действие (пауза)</translation>
+<translation id="4860284199500934869">За да изтеглите <ph name="FILENAME" />, проверете връзката си с мрежата</translation>
 <translation id="486056901304535126">По-късно ще се направи опит за изтегляне. Говорът ще се изпраща до Google за обработка, докато изтеглянето завърши.</translation>
 <translation id="4868492592575313542">активирана</translation>
 <translation id="4872237917498892622">„Alt + търсене“ или „Shift“</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Отхвърляне</translation>
 <translation id="6453179446719226835">Езикът е променен</translation>
 <translation id="6459472438155181876">Екранът се разширява на „<ph name="DISPLAY_NAME" />“</translation>
+<translation id="6477681113376365978">Файлът не може да бъде изтеглен</translation>
 <translation id="6482559668224714696">Лупа за увеличаване на целия екран</translation>
 <translation id="6490471652906364588">USB-C устройство (десният порт)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> изисква да актуализирате устройството си <ph name="DEVICE_TYPE" /> преди крайния срок</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Не безпокойте</translation>
 <translation id="65320610082834431">Емоджи</translation>
 <translation id="6537924328260219877">Сила на сигнала <ph name="SIGNAL_STRENGTH" />, батерия на телефона <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Изтегляният файл <ph name="FILENAME" /> се сканира</translation>
 <translation id="6542521951477560771">Предава се към „<ph name="RECEIVER_NAME" />“</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Наскоро инсталирано</translation>
 <translation id="6559976592393364813">Попитайте администратора</translation>
 <translation id="6565007273808762236">Няма връзка с електронната SIM карта</translation>
 <translation id="6570831796530454248">{0,plural, =1{Актуализирайте устройството в рамките на 1 час}other{Актуализирайте устройството в рамките на # часа}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Захранване</translation>
 <translation id="6727969043791803658">Свързано, <ph name="BATTERY_PERCENTAGE" />% батерия</translation>
 <translation id="6732800389263199929">+ <ph name="COUNT" /></translation>
+<translation id="6739144137573853180">КЪМ НАСТРОЙКИТЕ</translation>
 <translation id="6751052314767925245">Наложено от администратора ви</translation>
 <translation id="6751826523481687655">Проследяването на ефективността е включено</translation>
 <translation id="6752912906630585008">Работен кът <ph name="REMOVED_DESK" /> е премахнат и е обединен с работен кът <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Докоснете, за да конфигурирате</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Добавяне на нова мобилна мрежа</translation>
+<translation id="7720410380936703141">НОВ ОПИТ</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 известие}other{# известия}}</translation>
 <translation id="7724603315864178912">Изрязване</translation>
 <translation id="7745560842763881396">Показване на приложенията в лавицата</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Използвате <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Отключете устройството като <ph name="LOGIN_ID" />, за да се изпълни действието от известието</translation>
+<translation id="9000771174482730261">УПРАВЛЕНИЕ НА ХРАНИЛИЩЕТО</translation>
 <translation id="9017320285115481645">Въведете кода за достъп на родител от Family Link.</translation>
 <translation id="9024331582947483881">цял екран</translation>
 <translation id="9047624247355796468">Отваряне на настройките за <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">„What's on my calendar?“ („Какво има в календара ми?“)</translation>
 <translation id="945522503751344254">Изпращане на отзиви</translation>
 <translation id="951991426597076286">Отхвърляне</translation>
+<translation id="954052413789300507">Няма достатъчно място за <ph name="FILENAME" />. Освободете място.</translation>
 <translation id="974545358917229949">Показани са <ph name="RESULT_COUNT" /> резултата за „<ph name="QUERY" />“</translation>
 <translation id="98515147261107953">Хоризонтално</translation>
 <translation id="990277280839877440">Прозорецът <ph name="WINDOW_TITILE" /> бе затворен.</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 004f086..470a921 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">ক্লোজড ক্যাপশন শুরু করুন</translation>
 <translation id="5078796286268621944">ভুল পিন</translation>
 <translation id="5083553833479578423">অ্যাসিস্ট্যান্ট-এর আরও বৈশিষ্ট্য আনলক করুন।</translation>
+<translation id="5106223312672646208">পছন্দমতো</translation>
 <translation id="5117590920725113268">পরবর্তী মাস দেখান</translation>
 <translation id="5136175204352732067">বিভিন্ন কীবোর্ড কানেক্ট করা হয়েছে</translation>
 <translation id="5147567197700016471">আনলক করা হয়েছে</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index 1e1f922c..ad8bfe42 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">Pokreni titlove</translation>
 <translation id="5078796286268621944">Pogrešan PIN</translation>
 <translation id="5083553833479578423">Otključajte više funkcija Asistenta.</translation>
+<translation id="5106223312672646208">Personalizirajte</translation>
 <translation id="5117590920725113268">Prikaz sljedećeg mjeseca</translation>
 <translation id="5136175204352732067">Povezana je drugačija tastatura</translation>
 <translation id="5147567197700016471">Otključano</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index d6423a47..a396d171 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Escriptori 7</translation>
 <translation id="2224075387478458881">No es permet la gravació de pantalla quan es mostra contingut protegit</translation>
 <translation id="225680501294068881">S'estan cercant dispositius...</translation>
+<translation id="2257486738914982088">S'ha produït un error en baixar <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">S'ha desactivat el Bluetooth</translation>
 <translation id="2268813581635650749">Tanca les sessions</translation>
 <translation id="2269016722240250274">Una aplicació està utilitzant el micròfon</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Confirmes que vols desactivar els clics automàtics?</translation>
 <translation id="4849058404725798627">Ressalta l'objecte amb el focus del teclat</translation>
 <translation id="485592688953820832">No facis res (pausa)</translation>
+<translation id="4860284199500934869">Comprova la connexió a la xarxa per baixar <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">La baixada s'intentarà més tard. Fins que es completi, s'enviarà la parla a Google perquè la processi.</translation>
 <translation id="4868492592575313542">activada</translation>
 <translation id="4872237917498892622">Alt+Cerca o Maj</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">Inicia els subtítols</translation>
 <translation id="5078796286268621944">PIN incorrecte</translation>
 <translation id="5083553833479578423">Desbloqueja més funcions de l'Assistent.</translation>
+<translation id="5106223312672646208">Personalitza</translation>
 <translation id="5117590920725113268">Mostra el mes següent</translation>
 <translation id="5136175204352732067">S'ha connectat un altre teclat</translation>
 <translation id="5147567197700016471">Desbloquejat</translation>
@@ -804,6 +807,7 @@
 <translation id="6452181791372256707">Rebutja</translation>
 <translation id="6453179446719226835">S'ha canviat l'idioma</translation>
 <translation id="6459472438155181876">S'està ampliant la pantalla a <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">No es pot baixar el fitxer</translation>
 <translation id="6482559668224714696">Lupa de pantalla completa</translation>
 <translation id="6490471652906364588">Dispositiu USB-C (port dret)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> requereix que actualitzis el dispositiu <ph name="DEVICE_TYPE" /> abans del termini establert</translation>
@@ -815,7 +819,10 @@
 <translation id="6528179044667508675">No molestis</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877"><ph name="SIGNAL_STRENGTH" /> d'intensitat del senyal, <ph name="BATTERY_STATUS" /> de bateria al telèfon</translation>
+<translation id="6539852571005954999">S'està escanejant <ph name="FILENAME" /> per baixar</translation>
 <translation id="6542521951477560771">S'està emetent a <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Instal·lació nova</translation>
 <translation id="6559976592393364813">Pregunta a l'administrador</translation>
 <translation id="6565007273808762236">La connexió eSIM no està disponible</translation>
 <translation id="6570831796530454248">{0,plural, =1{Actualitza el dispositiu en 1 hora}other{Actualitza el dispositiu en # hores}}</translation>
@@ -847,6 +854,7 @@
 <translation id="6723839937902243910">Bateria</translation>
 <translation id="6727969043791803658">Connectat, <ph name="BATTERY_PERCENTAGE" />% de bateria</translation>
 <translation id="6732800389263199929">+ <ph name="COUNT" /></translation>
+<translation id="6739144137573853180">VES A CONFIGURACIÓ</translation>
 <translation id="6751052314767925245">Funció aplicada per l'administrador</translation>
 <translation id="6751826523481687655">La traça del rendiment està activada</translation>
 <translation id="6752912906630585008">L'escriptori <ph name="REMOVED_DESK" /> s'ha suprimit i s'ha fusionat amb l'escriptori <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +990,7 @@
 <translation id="7662283695561029522">Toca per configurar</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Afegeix una xarxa mòbil nova</translation>
+<translation id="7720410380936703141">TORNA-HO A PROVAR</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificació}other{# notificacions}}</translation>
 <translation id="7724603315864178912">Retalla</translation>
 <translation id="7745560842763881396">Mostra les aplicacions del prestatge</translation>
@@ -1168,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">S'està utilitzant <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Desbloqueja el dispositiu com a <ph name="LOGIN_ID" /> per dur a terme l'acció que indica la notificació</translation>
+<translation id="9000771174482730261">GESTIONA L'EMMAGATZEMATGE</translation>
 <translation id="9017320285115481645">Introdueix el codi d'accés parental de Family Link.</translation>
 <translation id="9024331582947483881">pantalla completa</translation>
 <translation id="9047624247355796468">Obre la configuració de la xarxa <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1223,7 @@
 <translation id="938963181863597773">Què tinc programat al calendari?</translation>
 <translation id="945522503751344254">Envia suggeriments</translation>
 <translation id="951991426597076286">Rebutja</translation>
+<translation id="954052413789300507">No hi ha prou espai per a <ph name="FILENAME" />. Allibera espai.</translation>
 <translation id="974545358917229949">S'estan mostrant <ph name="RESULT_COUNT" /> resultats per a "<ph name="QUERY" />"</translation>
 <translation id="98515147261107953">Horitzontal</translation>
 <translation id="990277280839877440">La finestra <ph name="WINDOW_TITILE" /> s'ha tancat.</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index b5ec478..861d918 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Plocha 7</translation>
 <translation id="2224075387478458881">Když je viditelný chráněný obsah, nahrávání obrazovky je zakázáno</translation>
 <translation id="225680501294068881">Vyhledávání zařízení…</translation>
+<translation id="2257486738914982088">Při stahování souboru <ph name="FILENAME" /> se něco pokazilo</translation>
 <translation id="2268130516524549846">Rozhraní Bluetooth deaktivováno</translation>
 <translation id="2268813581635650749">Odhlásit vše</translation>
 <translation id="2269016722240250274">Váš mikrofon používá nějaká aplikace</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Opravdu chcete automatická kliknutí vypnout?</translation>
 <translation id="4849058404725798627">Zvýraznit objekt se zaměřením pro zadávání</translation>
 <translation id="485592688953820832">Žádná akce (pozastavit)</translation>
+<translation id="4860284199500934869">Pokud chcete stáhnout soubor <ph name="FILENAME" />, zkontrolujte připojení k síti</translation>
 <translation id="486056901304535126">Zkusíme je stáhnout později. Dokud nebudou staženy, bude se řeč ke zpracování odesílat do Googlu.</translation>
 <translation id="4868492592575313542">aktivovala</translation>
 <translation id="4872237917498892622">Alt + Vyhledávání nebo Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Odmítnout</translation>
 <translation id="6453179446719226835">Jazyk se změnil</translation>
 <translation id="6459472438155181876">Rozšíření obrazovky na displej <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Soubor nelze stáhnout</translation>
 <translation id="6482559668224714696">Lupa celé obrazovky</translation>
 <translation id="6490471652906364588">Zařízení USB Type-C (pravý port)</translation>
 <translation id="6491071886865974820">Organizace <ph name="MANAGER" /> vyžaduje, abyste toto zařízení <ph name="DEVICE_TYPE" /> do stanoveného termínu aktualizovali.</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Nerušit</translation>
 <translation id="65320610082834431">Smajlíci</translation>
 <translation id="6537924328260219877">Síla signálu: <ph name="SIGNAL_STRENGTH" />, baterie telefonu: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Skenování staženého souboru <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Odesílání do zařízení <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nová instalace</translation>
 <translation id="6559976592393364813">Zeptejte se administrátora</translation>
 <translation id="6565007273808762236">Připojení k eSIM není k dispozici</translation>
 <translation id="6570831796530454248">{0,plural, =1{Do hodiny zařízení aktualizujte}few{Do # hodin zařízení aktualizujte}many{Do # hodiny zařízení aktualizujte}other{Do # hodin zařízení aktualizujte}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Napájení</translation>
 <translation id="6727969043791803658">Připojeno, <ph name="BATTERY_PERCENTAGE" /> % baterie</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">PŘEJÍT DO NASTAVENÍ</translation>
 <translation id="6751052314767925245">Vynuceno administrátorem</translation>
 <translation id="6751826523481687655">Trasování výkonu je zapnuté</translation>
 <translation id="6752912906630585008">Plocha <ph name="REMOVED_DESK" /> byla odstraněna a sloučena s plochou <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Klepnutím zahájíte konfiguraci</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Přidat novou mobilní síť</translation>
+<translation id="7720410380936703141">ZKUSIT ZNOVU</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 oznámení}few{# oznámení}many{# oznámení}other{# oznámení}}</translation>
 <translation id="7724603315864178912">Vyjmout</translation>
 <translation id="7745560842763881396">Zobrazit aplikace v poličce</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Metoda zadávání: <ph name="IME_NAME" /></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>
 <translation id="9024331582947483881">celá obrazovka</translation>
 <translation id="9047624247355796468">Otevřít nastavení sítě <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Co mám v kalendáři?</translation>
 <translation id="945522503751344254">Odeslat zpětnou vazbu</translation>
 <translation id="951991426597076286">Odmítnout</translation>
+<translation id="954052413789300507">Pro soubor <ph name="FILENAME" /> není k dispozici dostatek volného místa. Uvolněte místo.</translation>
 <translation id="974545358917229949">Zobrazuje se tento počet výsledků pro dotaz <ph name="QUERY" />: <ph name="RESULT_COUNT" /></translation>
 <translation id="98515147261107953">Na šířku</translation>
 <translation id="990277280839877440">Okno <ph name="WINDOW_TITILE" /> bylo zavřeno.</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index 000a113..2a1b9df 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Skrivebord 7</translation>
 <translation id="2224075387478458881">Skærmoptagelse er ikke tilladt, når beskyttet indhold er synligt</translation>
 <translation id="225680501294068881">Søger efter enheder...</translation>
+<translation id="2257486738914982088">Noget gik galt under download af <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth er deaktiveret</translation>
 <translation id="2268813581635650749">Log alle ud</translation>
 <translation id="2269016722240250274">Din mikrofon anvendes af en app</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Er du sikker på, at du vil deaktivere automatiske klik?</translation>
 <translation id="4849058404725798627">Fremhæv element med tastaturfokus</translation>
 <translation id="485592688953820832">Ingen handling (pause)</translation>
+<translation id="4860284199500934869">Tjek din netværksforbindelse for at downloade <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Downloaden forsøges senere. Tale sendes til behandling hos Google, indtil downloaden er fuldført.</translation>
 <translation id="4868492592575313542">aktiveret</translation>
 <translation id="4872237917498892622">Alt+Søg eller Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Afvis</translation>
 <translation id="6453179446719226835">Sproget er blevet ændret</translation>
 <translation id="6459472438155181876">Udvider skærmen til <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Filen kan ikke downloades</translation>
 <translation id="6482559668224714696">Forstørrelse af fuld skærm</translation>
 <translation id="6490471652906364588">USB-C-enhed (højre port)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> kræver, at du opdaterer din <ph name="DEVICE_TYPE" />, før fristen udløber</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Forstyr ikke</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877">Signalstyrke <ph name="SIGNAL_STRENGTH" />, telefonbatteri <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Downloaden scannes: <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Caster til <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Installeret for nylig</translation>
 <translation id="6559976592393364813">Spørg din administrator</translation>
 <translation id="6565007273808762236">eSIM-forbindelse er ikke tilgængelig</translation>
 <translation id="6570831796530454248">{0,plural, =1{Genstart enheden inden for en time}one{Genstart enheden inden for # time}other{Genstart enheden inden for # timer}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Strøm</translation>
 <translation id="6727969043791803658">Tilsluttet, <ph name="BATTERY_PERCENTAGE" /> % batteri</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">GÅ TIL INDSTILLINGER</translation>
 <translation id="6751052314767925245">Håndhæves af din administrator</translation>
 <translation id="6751826523481687655">Sporing af effektivitet er slået til</translation>
 <translation id="6752912906630585008">Skrivebord <ph name="REMOVED_DESK" /> blev fjernet og slået sammen med Skrivebord <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Tryk for at konfigurere</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Tilføj et mobilnetværk</translation>
+<translation id="7720410380936703141">PRØV IGEN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifikation}one{# notifikation}other{# notifikationer}}</translation>
 <translation id="7724603315864178912">Klip</translation>
 <translation id="7745560842763881396">Vis apps på hylde</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> anvendes</translation>
 <translation id="899350903320462459">Lås enheden op som <ph name="LOGIN_ID" /> for at udføre notifikationshandlingen</translation>
+<translation id="9000771174482730261">ADMINISTRER LAGERPLADS</translation>
 <translation id="9017320285115481645">Angiv forældreadgangskoden til Family Link.</translation>
 <translation id="9024331582947483881">fuld skærm</translation>
 <translation id="9047624247355796468">Åbn indstillingerne for <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Hvad har jeg i kalenderen?</translation>
 <translation id="945522503751344254">Send feedback</translation>
 <translation id="951991426597076286">Afvis</translation>
+<translation id="954052413789300507">Der er ikke nok plads til <ph name="FILENAME" />. Frigør plads.</translation>
 <translation id="974545358917229949">Viser <ph name="RESULT_COUNT" /> resultater for <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Liggende</translation>
 <translation id="990277280839877440">Vinduet <ph name="WINDOW_TITILE" /> blev lukket.</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index 29054ba..c37ff51 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -818,6 +818,7 @@
 <translation id="6528179044667508675">Nicht stören</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877">Signalstärke bei <ph name="SIGNAL_STRENGTH" />, Smartphone-Akku bei <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Download angehalten. <ph name="FILENAME" /> wird gescannt.</translation>
 <translation id="6542521951477560771">Inhalte werden an <ph name="RECEIVER_NAME" /> gestreamt</translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 Neuinstallation</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index 87924bb..9e81567 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Escritorio 7</translation>
 <translation id="2224075387478458881">No se permite la grabación de pantalla cuando hay contenido protegido a la vista.</translation>
 <translation id="225680501294068881">Buscando dispositivos...</translation>
+<translation id="2257486738914982088">Ocurrió un error al descargar <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth desactivado</translation>
 <translation id="2268813581635650749">Salir de todo</translation>
 <translation id="2269016722240250274">Una aplicación está usando tu micrófono.</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">¿Confirmas que quieres desactivar los clics automáticos?</translation>
 <translation id="4849058404725798627">Resaltar el objeto con el enfoque del teclado</translation>
 <translation id="485592688953820832">No es necesaria ninguna acción (pausa)</translation>
+<translation id="4860284199500934869">Comprueba la conexión de red para descargar <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Se intentará completar la descarga más tarde. La enunciación se enviará a Google para su procesamiento hasta que se complete la descarga.</translation>
 <translation id="4868492592575313542">activada</translation>
 <translation id="4872237917498892622">Alt+tecla de búsqueda o Mayús</translation>
@@ -805,6 +807,7 @@
 <translation id="6452181791372256707">Rechazar</translation>
 <translation id="6453179446719226835">Se cambió el idioma</translation>
 <translation id="6459472438155181876">Ampliando pantalla para <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">No se puede descargar el archivo</translation>
 <translation id="6482559668224714696">Lupa de pantalla completa</translation>
 <translation id="6490471652906364588">Dispositivo USB-C (puerto derecho)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> requiere que actualices tu <ph name="DEVICE_TYPE" /> antes de la fecha límite</translation>
@@ -816,7 +819,10 @@
 <translation id="6528179044667508675">No interrumpir</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877">Intensidad de la señal: <ph name="SIGNAL_STRENGTH" />, nivel de batería del teléfono: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Análisis de descargas: <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Transmitiendo a <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nueva instalación</translation>
 <translation id="6559976592393364813">Pregúntale al administrador</translation>
 <translation id="6565007273808762236">No se puede establecer conexión con la tarjeta eSIM</translation>
 <translation id="6570831796530454248">{0,plural, =1{Actualiza el dispositivo en el transcurso de 1 hora}other{Actualiza el dispositivo en el transcurso de # horas}}</translation>
@@ -848,6 +854,7 @@
 <translation id="6723839937902243910">Alimentación</translation>
 <translation id="6727969043791803658">Conectado (batería: <ph name="BATTERY_PERCENTAGE" />%)</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">IR A CONFIGURACIÓN</translation>
 <translation id="6751052314767925245">El administrador controla la función</translation>
 <translation id="6751826523481687655">Se activó el registro del rendimiento</translation>
 <translation id="6752912906630585008">Se quitó el escritorio <ph name="REMOVED_DESK" /> y se combinó con el <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +990,7 @@
 <translation id="7662283695561029522">Presiona para configurar</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Agregar una nueva red móvil</translation>
+<translation id="7720410380936703141">VOLVER A INTENTAR</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation>
 <translation id="7724603315864178912">Cortar</translation>
 <translation id="7745560842763881396">Mostrar apps en la barra</translation>
@@ -1169,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> en uso</translation>
 <translation id="899350903320462459">Desbloquea el dispositivo como <ph name="LOGIN_ID" /> para realizar la acción con las notificaciones</translation>
+<translation id="9000771174482730261">ADMINISTRAR EL ALMACENAMIENTO</translation>
 <translation id="9017320285115481645">Ingresa el código de acceso parental de Family Link.</translation>
 <translation id="9024331582947483881">pantalla completa</translation>
 <translation id="9047624247355796468">Abrir la configuración para <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1223,7 @@
 <translation id="938963181863597773">¿Qué eventos tengo en mi calendario?</translation>
 <translation id="945522503751344254">Enviar comentarios</translation>
 <translation id="951991426597076286">Rechazar</translation>
+<translation id="954052413789300507">No hay suficiente espacio disponible para <ph name="FILENAME" />. Libera espacio.</translation>
 <translation id="974545358917229949">Mostrando <ph name="RESULT_COUNT" /> resultados para <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Horizontal</translation>
 <translation id="990277280839877440">Se cerró la ventana <ph name="WINDOW_TITILE" />.</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index 281a7dd..cd891d9 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -40,7 +40,7 @@
 <translation id="1190609913194133056">Centro de notificaciones</translation>
 <translation id="1190678134285018527">El dispositivo debe volver a la versión anterior</translation>
 <translation id="1195412055398077112">reajustar</translation>
-<translation id="119944043368869598">Eliminar todo</translation>
+<translation id="119944043368869598">Borrar todo</translation>
 <translation id="1199716647557067911">¿Seguro que quieres desactivar la accesibilidad con interruptores?</translation>
 <translation id="1201402288615127009">Siguiente</translation>
 <translation id="1210557957257435379">grabación de pantalla</translation>
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Escritorio 7</translation>
 <translation id="2224075387478458881">La grabación de pantalla no está permitida cuando se muestra contenido protegido</translation>
 <translation id="225680501294068881">Buscando dispositivos...</translation>
+<translation id="2257486738914982088">No se ha podido descargar <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth inhabilitado</translation>
 <translation id="2268813581635650749">Cerrar sesiones</translation>
 <translation id="2269016722240250274">Una aplicación está usando tu micrófono</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">¿Seguro que quieres desactivar los clics automáticos?</translation>
 <translation id="4849058404725798627">Resaltar el objeto con el foco del teclado</translation>
 <translation id="485592688953820832">Ninguna acción (pausa)</translation>
+<translation id="4860284199500934869">Comprueba tu conexión de red para descargar <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Se intentarán descargar más tarde. La voz se enviará a Google para procesarse hasta que se complete la descarga.</translation>
 <translation id="4868492592575313542">activado</translation>
 <translation id="4872237917498892622">Alt+tecla de búsqueda o Mayús</translation>
@@ -805,6 +807,7 @@
 <translation id="6452181791372256707">Rechazar</translation>
 <translation id="6453179446719226835">Se ha cambiado el idioma</translation>
 <translation id="6459472438155181876">Extendiendo pantalla a <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">No se puede descargar el archivo</translation>
 <translation id="6482559668224714696">Lupa de pantalla completa</translation>
 <translation id="6490471652906364588">Dispositivo USB-C (puerto derecho)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> requiere que actualices tu <ph name="DEVICE_TYPE" /> antes del plazo límite</translation>
@@ -816,7 +819,10 @@
 <translation id="6528179044667508675">No molestar</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877">Intensidad de la señal: <ph name="SIGNAL_STRENGTH" />, batería del teléfono: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Analizando <ph name="FILENAME" /> para descargar</translation>
 <translation id="6542521951477560771">Enviando contenido a <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nueva instalación</translation>
 <translation id="6559976592393364813">Pregunta al administrador</translation>
 <translation id="6565007273808762236">Conexión eSIM no disponible</translation>
 <translation id="6570831796530454248">{0,plural, =1{Actualiza el dispositivo en un plazo de 1 hora}other{Actualiza el dispositivo en un plazo de # horas}}</translation>
@@ -848,6 +854,7 @@
 <translation id="6723839937902243910">Batería</translation>
 <translation id="6727969043791803658">Conectado, <ph name="BATTERY_PERCENTAGE" /> % de batería</translation>
 <translation id="6732800389263199929"><ph name="COUNT" /> +</translation>
+<translation id="6739144137573853180">IR A CONFIGURACIÓN</translation>
 <translation id="6751052314767925245">Esta función la gestiona tu administrador</translation>
 <translation id="6751826523481687655">El control del rendimiento está activado</translation>
 <translation id="6752912906630585008">Se ha quitado el escritorio <ph name="REMOVED_DESK" /> y se ha combinado con el escritorio <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +990,7 @@
 <translation id="7662283695561029522">Toca para configurar</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Añadir nueva red móvil</translation>
+<translation id="7720410380936703141">REINTENTAR</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation>
 <translation id="7724603315864178912">Cortar</translation>
 <translation id="7745560842763881396">Mostrar aplicaciones de la estantería</translation>
@@ -1169,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Estás usando <ph name="IME_NAME" /></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>
 <translation id="9024331582947483881">pantalla completa</translation>
 <translation id="9047624247355796468">Abrir la configuración de <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1223,7 @@
 <translation id="938963181863597773">¿Qué tengo en el calendario?</translation>
 <translation id="945522503751344254">Enviar comentarios</translation>
 <translation id="951991426597076286">Rechazar</translation>
+<translation id="954052413789300507">No hay suficiente espacio para <ph name="FILENAME" />. Libera espacio.</translation>
 <translation id="974545358917229949">Se muestran <ph name="RESULT_COUNT" /> resultados de <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Horizontal</translation>
 <translation id="990277280839877440">La ventana <ph name="WINDOW_TITILE" /> se ha cerrado.</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index f038d7fd..77d8ce1 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Töölaud 7</translation>
 <translation id="2224075387478458881">Ekraanikuva jäädvustamine pole lubatud, kui kaitstud sisu on nähtaval</translation>
 <translation id="225680501294068881">Seadmete skannimine ...</translation>
+<translation id="2257486738914982088">Midagi läks faili <ph name="FILENAME" /> allalaadimisel valesti</translation>
 <translation id="2268130516524549846">Bluetooth on keelatud</translation>
 <translation id="2268813581635650749">Logi kõik välja</translation>
 <translation id="2269016722240250274">Rakendus kasutab teie mikrofoni</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">Kas soovite automaatsed klikid kindlasti välja lülitada?</translation>
 <translation id="4849058404725798627">Klaviatuuri fookusega objekti esiletõstmine</translation>
 <translation id="485592688953820832">Toiming puudub (peatamine)</translation>
+<translation id="4860284199500934869">Kontrollige oma võrguühendust, et fail <ph name="FILENAME" /> alla laadida</translation>
 <translation id="486056901304535126">Hiljem üritatakse uuesti alla laadida. Kõne saadetakse Google'ile töötlemiseks, kui allalaadimine on lõpetatud.</translation>
 <translation id="4868492592575313542">aktiveeritud</translation>
 <translation id="4872237917498892622">Alt + otsinguklahv või tõstuklahv</translation>
@@ -805,6 +807,7 @@
 <translation id="6452181791372256707">Lükka tagasi</translation>
 <translation id="6453179446719226835">Keelt muudeti</translation>
 <translation id="6459472438155181876">Ekraani laiendamine seadmesse <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Faili ei saa alla laadida</translation>
 <translation id="6482559668224714696">Täisekraani luup</translation>
 <translation id="6490471652906364588">C-tüüpi USB-seade (parempoolne port)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> nõuab, et värskendaksite seadme <ph name="DEVICE_TYPE" /> operatsioonisüsteemi enne tähtaega</translation>
@@ -816,7 +819,10 @@
 <translation id="6528179044667508675">Mitte segada</translation>
 <translation id="65320610082834431">Emotikonid</translation>
 <translation id="6537924328260219877">Signaalitugevus: <ph name="SIGNAL_STRENGTH" />, telefoni aku: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Allalaaditava faili <ph name="FILENAME" /> skannimine</translation>
 <translation id="6542521951477560771">Ülekandmine seadmesse <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Uus installimine</translation>
 <translation id="6559976592393364813">Küsige administraatorilt</translation>
 <translation id="6565007273808762236">eSIM-i ühendus pole saadaval</translation>
 <translation id="6570831796530454248">{0,plural, =1{Värskendage seadet tunni jooksul}other{Värskendage seadet # tunni jooksul}}</translation>
@@ -848,6 +854,7 @@
 <translation id="6723839937902243910">Toide</translation>
 <translation id="6727969043791803658">Ühendatud, <ph name="BATTERY_PERCENTAGE" />% akut</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">AVAGE SEADED</translation>
 <translation id="6751052314767925245">Jõustas administraator</translation>
 <translation id="6751826523481687655">Toimivuse jälgimine on sisse lülitatud</translation>
 <translation id="6752912906630585008">Töölaud <ph name="REMOVED_DESK" /> eemaldati ja liideti töölauaga <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +990,7 @@
 <translation id="7662283695561029522">Puudutage seadistamiseks</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Lisa uus mobiilsidevõrk</translation>
+<translation id="7720410380936703141">PROOVIGE UUESTI</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 märguanne}other{# märguannet}}</translation>
 <translation id="7724603315864178912">Lõika</translation>
 <translation id="7745560842763881396">Kuva riiulil olevad rakendused</translation>
@@ -1169,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Kasutusel: <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Märguandetoimingu tegemiseks avage seade kontoga <ph name="LOGIN_ID" /></translation>
+<translation id="9000771174482730261">HALLAKE SALVESTUSRUUMI</translation>
 <translation id="9017320285115481645">Sisestage Family Linki vanema pääsukood.</translation>
 <translation id="9024331582947483881">täisekraan</translation>
 <translation id="9047624247355796468">Ava võrgu <ph name="NETWORK_NAME" /> seaded</translation>
@@ -1214,6 +1223,7 @@
 <translation id="938963181863597773">Mis on minu kalendris?</translation>
 <translation id="945522503751344254">Tagasiside saatmine</translation>
 <translation id="951991426597076286">Keeldu</translation>
+<translation id="954052413789300507">Faili <ph name="FILENAME" /> jaoks pole piisavalt ruumi. Vabastage ruumi.</translation>
 <translation id="974545358917229949">Kuvatud on <ph name="RESULT_COUNT" /> tulemust päringule <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Horisontaalpaigutus</translation>
 <translation id="990277280839877440">Aken <ph name="WINDOW_TITILE" /> on suletud.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 189db81..e1e89ff 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">شروع زیرنویس ناشنوایان</translation>
 <translation id="5078796286268621944">پین اشتباه</translation>
 <translation id="5083553833479578423">باز کردن قفل ویژگی‌های بیشتری از «دستیار».</translation>
+<translation id="5106223312672646208">شخصی‌سازی</translation>
 <translation id="5117590920725113268">نمایش ماه بعدی</translation>
 <translation id="5136175204352732067">صفحه‌کلید دیگری متصل شد</translation>
 <translation id="5147567197700016471">قفل باز شد</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index e33cc10..6ee0fb8 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Työpöytä 7</translation>
 <translation id="2224075387478458881">Näytön tallentajan käyttöä ei sallita, kun suojattua sisältöä on nähtävissä</translation>
 <translation id="225680501294068881">Etsitään laitteita...</translation>
+<translation id="2257486738914982088">Jotain meni pieleen, eikä <ph name="FILENAME" /> latautunut</translation>
 <translation id="2268130516524549846">Bluetooth pois käytöstä</translation>
 <translation id="2268813581635650749">Kirjaa kaikki ulos</translation>
 <translation id="2269016722240250274">Sovellus käyttää mikrofoniasi</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Haluatko varmasti lopettaa automaattisen klikkaamisen?</translation>
 <translation id="4849058404725798627">Korosta tekstin syöttökohde</translation>
 <translation id="485592688953820832">Ei toimenpiteitä (keskeytä)</translation>
+<translation id="4860284199500934869">Tarkista verkkoyhteys, jotta <ph name="FILENAME" /> voidaan ladata</translation>
 <translation id="486056901304535126">Lataamista yritetään myöhemmin. Puhe lähetetään Googlelle käsittelyyn, kunnes lataus on valmis.</translation>
 <translation id="4868492592575313542">otettu käyttöön</translation>
 <translation id="4872237917498892622">Alt + haku tai Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Hylkää</translation>
 <translation id="6453179446719226835">Kieli muutettu</translation>
 <translation id="6459472438155181876">Ruutua laajennetaan: <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Tiedostoa ei voi ladata</translation>
 <translation id="6482559668224714696">Koko näytön suurennus</translation>
 <translation id="6490471652906364588">C-tyypin USB-laite (oikean sivun portti)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> edellyttää, että <ph name="DEVICE_TYPE" /> on päivitetty määräaikaan mennessä</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Älä häiritse</translation>
 <translation id="65320610082834431">Emojit</translation>
 <translation id="6537924328260219877">Signaalin vahvuus <ph name="SIGNAL_STRENGTH" />, puhelimen akun varaus <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Latausta <ph name="FILENAME" /> skannataan</translation>
 <translation id="6542521951477560771">Suoratoistetaan: <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Uusi asennus</translation>
 <translation id="6559976592393364813">Pyydä apua järjestelmänvalvojalta</translation>
 <translation id="6565007273808762236">eSIM-yhteys ei ole käytettävissä</translation>
 <translation id="6570831796530454248">{0,plural, =1{Päivitä laite tunnin kuluessa}other{Päivitä laite # tunnin kuluessa}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Virta</translation>
 <translation id="6727969043791803658">Yhdistetty, akun taso <ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">AVAA ASETUKSET</translation>
 <translation id="6751052314767925245">Järjestelmänvalvojan käyttämä</translation>
 <translation id="6751826523481687655">Tehokkuuden seuranta on käytössä</translation>
 <translation id="6752912906630585008">Työpöytä <ph name="REMOVED_DESK" /> poistettu ja yhdistetty työpöytään <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Määritä napauttamalla.</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Lisää uusi mobiiliverkko</translation>
+<translation id="7720410380936703141">YRITÄ UUDELLEEN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ilmoitus}other{# ilmoitusta}}</translation>
 <translation id="7724603315864178912">Leikkaa</translation>
 <translation id="7745560842763881396">Näytä sovellukset hyllyssä</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> käytössä</translation>
 <translation id="899350903320462459">Avaa laitteen lukitus tunnuksella <ph name="LOGIN_ID" />, niin voit käyttää ilmoitustoimintoa</translation>
+<translation id="9000771174482730261">HALLINNOI TALLENNUSTILAA</translation>
 <translation id="9017320285115481645">Syötä vanhemman Family Link ‑käyttökoodi</translation>
 <translation id="9024331582947483881">koko näyttö</translation>
 <translation id="9047624247355796468">Avaa asetukset: <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Mitä kalenterissani on?</translation>
 <translation id="945522503751344254">Lähetä palautetta</translation>
 <translation id="951991426597076286">Hylkää</translation>
+<translation id="954052413789300507">Tallennustilaa ei ole tarpeeksi, jotta <ph name="FILENAME" /> voitaisiin ladata. Vapauta tilaa.</translation>
 <translation id="974545358917229949">Näytetään <ph name="RESULT_COUNT" /> tulosta haulla <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Vaakasuunta</translation>
 <translation id="990277280839877440">Ikkuna <ph name="WINDOW_TITILE" /> suljettu.</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index a0d25bf..7dd2fe0 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Desk 7</translation>
 <translation id="2224075387478458881">Hindi pinapayagan ang pag-record ng screen kapag may nakikitang protektadong content</translation>
 <translation id="225680501294068881">Nag-i-scan para sa mga device...</translation>
+<translation id="2257486738914982088">Nagkaproblema habang dina-download ang <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Hindi pinagana ang Bluetooth</translation>
 <translation id="2268813581635650749">I-sign out ang lahat</translation>
 <translation id="2269016722240250274">May application na gumagamit ng iyong mikropono</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Sigurado ka bang gusto mong i-off ang mga awtomatikong pag-click?</translation>
 <translation id="4849058404725798627">I-highlight ang bagay sa pamamagitan ng pag-focus ng keyboard</translation>
 <translation id="485592688953820832">Walang pagkilos (i-pause)</translation>
+<translation id="4860284199500934869">Suriin ang iyong koneksyon ng network para ma-download ang <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Susubukan mamaya ang pag-download. Ipapadala ang speech sa Google para sa pagpoproseso hanggang sa makumpleto ang pag-download.</translation>
 <translation id="4868492592575313542">na-activate</translation>
 <translation id="4872237917498892622">Alt+Search o Shift</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">Simulan ang mga closed caption</translation>
 <translation id="5078796286268621944">Maling PIN</translation>
 <translation id="5083553833479578423">Mag-unlock ng higit pang feature ng Assistant.</translation>
+<translation id="5106223312672646208">I-personalize</translation>
 <translation id="5117590920725113268">Ipakita ang susunod na buwan</translation>
 <translation id="5136175204352732067">Ibang keyboard ang nakakonekta</translation>
 <translation id="5147567197700016471">Na-unlock na</translation>
@@ -804,6 +807,7 @@
 <translation id="6452181791372256707">Tanggihan</translation>
 <translation id="6453179446719226835">Napalitan na ang wika</translation>
 <translation id="6459472438155181876">Pinapalawak ang screen sa <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Hindi makapag-download ng file</translation>
 <translation id="6482559668224714696">Full-screen magnifier</translation>
 <translation id="6490471652906364588">USB-C device (port sa kanan)</translation>
 <translation id="6491071886865974820">Hinihiling sa iyo ng <ph name="MANAGER" /> na i-update mo ang iyong <ph name="DEVICE_TYPE" /> bago ang deadline</translation>
@@ -815,7 +819,10 @@
 <translation id="6528179044667508675">Wag istorbohin</translation>
 <translation id="65320610082834431">Mga Emoji</translation>
 <translation id="6537924328260219877">Lakas ng Signal <ph name="SIGNAL_STRENGTH" />, Baterya ng Telepono <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Sina-scan ang <ph name="FILENAME" /> para sa pag-download</translation>
 <translation id="6542521951477560771">Nagka-cast sa <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Kaka-install lang</translation>
 <translation id="6559976592393364813">Magtanong sa Administrator</translation>
 <translation id="6565007273808762236">Hindi available ang koneksyon sa eSIM</translation>
 <translation id="6570831796530454248">{0,plural, =1{I-update ang device sa loob ng isang oras}one{I-update ang device sa loob ng # oras}other{I-update ang device sa loob ng # na oras}}</translation>
@@ -847,6 +854,7 @@
 <translation id="6723839937902243910">Power</translation>
 <translation id="6727969043791803658">Nakakonekta, <ph name="BATTERY_PERCENTAGE" />% ang baterya</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">PUMUNTA SA MGA SETTING</translation>
 <translation id="6751052314767925245">Ipinapatupad ng iyong administrator</translation>
 <translation id="6751826523481687655">Naka-on ang pag-trace ng performance</translation>
 <translation id="6752912906630585008">Inalis ang Desk na <ph name="REMOVED_DESK" /> at isinama sa Desk na <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +990,7 @@
 <translation id="7662283695561029522">I-tap upang i-configure</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Magdagdag ng bagong cellular network</translation>
+<translation id="7720410380936703141">SUBUKAN ULIT</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# na notification}}</translation>
 <translation id="7724603315864178912">I-cut</translation>
 <translation id="7745560842763881396">Ipakita ang mga app sa shelf</translation>
@@ -1168,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Gamit ang <ph name="IME_NAME" /></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>
 <translation id="9024331582947483881">buong screen</translation>
 <translation id="9047624247355796468">Buksan ang mga setting para sa <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1223,7 @@
 <translation id="938963181863597773">Ano'ng nakaiskedyul sa kalendaryo ko?</translation>
 <translation id="945522503751344254">Magpadala ng feedback</translation>
 <translation id="951991426597076286">Tanggihan</translation>
+<translation id="954052413789300507">Walang sapat na espasyo para sa <ph name="FILENAME" />. Magbakante ng espasyo.</translation>
 <translation id="974545358917229949">Ipinapakita ang <ph name="RESULT_COUNT" /> (na) resulta para sa <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Landscape</translation>
 <translation id="990277280839877440">Isinara ang window na <ph name="WINDOW_TITILE" />.</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb
index 2432a452..b8cb9e3 100644
--- a/ash/strings/ash_strings_fr-CA.xtb
+++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -35,6 +35,7 @@
 <translation id="1175572348579024023">Faire défiler</translation>
 <translation id="1178581264944972037">Interrompre</translation>
 <translation id="1181037720776840403">Supprimer</translation>
+<translation id="118437560755358292">Entrez le mot de passe ou le NIP pour plus de sécurité</translation>
 <translation id="118532027333893379">Touchez n'importe où pour capturer la totalité de l'écran</translation>
 <translation id="1190609913194133056">Centre de notification</translation>
 <translation id="1190678134285018527">L'appareil doit revenir à la version antérieure</translation>
@@ -191,6 +192,7 @@
 <translation id="2222841058024245321">Bureau 7</translation>
 <translation id="2224075387478458881">L'enregistrement de l'écran n"est pas autorisé lorsque du contenu protégé est visible</translation>
 <translation id="225680501294068881">Recherche d'appareils en cours…</translation>
+<translation id="2257486738914982088">Un problème est survenu lors du téléchargement de <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">La connectivité Bluetooth est désactivée</translation>
 <translation id="2268813581635650749">Tous déconnecter</translation>
 <translation id="2269016722240250274">Une application utilise votre microphone</translation>
@@ -338,6 +340,7 @@
 <translation id="3307642347673023554">Mode ordinateur portable activé</translation>
 <translation id="3308453408813785101"><ph name="USER_EMAIL_ADDRESS" /> peut toujours se connecter plus tard.</translation>
 <translation id="3321628682574733415">Code parental incorrect</translation>
+<translation id="3339826665088060472">Captures d'écran, outils pour réaliser des captures d'écran et des enregistrements d'écran</translation>
 <translation id="3341303451326249809">Capture d'écran réussie</translation>
 <translation id="334252345105450327">Prendre une capture d'écran</translation>
 <translation id="3351879221545518001">Vous diffusez actuellement l'écran.</translation>
@@ -394,6 +397,7 @@
 <translation id="3606978283550408104">L'afficheur braille est connecté.</translation>
 <translation id="3615926715408477684">L'activation des données cellulaires activera le Bluetooth</translation>
 <translation id="3616883743181209306">Le menu a été déplacé vers le coin supérieur droit de l'écran.</translation>
+<translation id="3619536907358025872">Paramètres de capture d'écran</translation>
 <translation id="3621202678540785336">Entrée</translation>
 <translation id="3621712662352432595">Paramètres audio</translation>
 <translation id="3626281679859535460">Luminosité</translation>
@@ -492,6 +496,7 @@
 <translation id="4269883910223712419">L'administrateur de cet appareil peut :</translation>
 <translation id="4274537685965975248">Le raccourci-clavier Ctrl+Alt+flèche vers le bas a changé. Pour utiliser la touche Fin, appuyez sur la touche <ph name="LAUNCHER_KEY_NAME" />+flèche vers la droite.</translation>
 <translation id="4279490309300973883">Mise en miroir</translation>
+<translation id="4283888303416325161">Entrez le mot de passe pour plus de sécurité</translation>
 <translation id="4285498937028063278">Annuler l'épinglage</translation>
 <translation id="429402653707266969">Basculer l'emplacement de la barre d'outils</translation>
 <translation id="4294319844246081198">Bonjour <ph name="GIVEN_NAME" />,</translation>
@@ -583,6 +588,7 @@
 <translation id="4831034276697007977">Voulez-vous vraiment désactiver les clics automatiques?</translation>
 <translation id="4849058404725798627">Mettre l'élément sélectionné par le clavier en surbrillance</translation>
 <translation id="485592688953820832">Aucune action (pause)</translation>
+<translation id="4860284199500934869">Vérifiez votre connexion réseau pour télécharger <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Une tentative de téléchargement aura lieu ultérieurement. Le fichier vocal sera envoyé à Google aux fins de traitement jusqu'à la fin du téléchargement.</translation>
 <translation id="4868492592575313542">activée</translation>
 <translation id="4872237917498892622">Alt + Recherche ou Maj.</translation>
@@ -761,6 +767,7 @@
 <translation id="607652042414456612">Votre ordinateur est visible pour les appareils Bluetooth situés à proximité sous le nom « <ph name="NAME" /> » et a comme adresse <ph name="ADDRESS" />.</translation>
 <translation id="6114505516289286752">Fichiers vocaux en <ph name="LANGUAGE" /> téléchargés</translation>
 <translation id="6119360623251949462"><ph name="CHARGING_STATE" />. <ph name="BATTERY_SAVER_STATE" /></translation>
+<translation id="6121838516699723042">Confirmer le téléchargement de <ph name="FILENAME" /></translation>
 <translation id="612734058257491180">L'Assistant Google n'est pas accessible dans une session d'invité.</translation>
 <translation id="6134259848159370930">Recherchez dans votre appareil, dans vos applications, dans vos paramètres et sur le Web.</translation>
 <translation id="6137566720514957455">Ouvrir la boîte de dialogue de retrait pour <ph name="USER_EMAIL_ADDRESS" /></translation>
@@ -799,6 +806,7 @@
 <translation id="6452181791372256707">Refuser</translation>
 <translation id="6453179446719226835">La langue a été modifiée</translation>
 <translation id="6459472438155181876">Extension de l'écran à <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Impossible de télécharger le fichier</translation>
 <translation id="6482559668224714696">Loupe en mode plein écran</translation>
 <translation id="6490471652906364588">Appareil USB-C (port de droite)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> exige que vous mettiez à jour votre <ph name="DEVICE_TYPE" /> avant la date limite</translation>
@@ -811,6 +819,8 @@
 <translation id="65320610082834431">Émojis</translation>
 <translation id="6537924328260219877">Force du signal : <ph name="SIGNAL_STRENGTH" />, pile du téléphone : <ph name="BATTERY_STATUS" /></translation>
 <translation id="6542521951477560771">Diffusion sur <ph name="RECEIVER_NAME" /> en cours…</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nouvelle installation</translation>
 <translation id="6559976592393364813">Adressez-vous à l'administrateur</translation>
 <translation id="6565007273808762236">Connexion eSIM non proposée</translation>
 <translation id="6570831796530454248">{0,plural, =1{Mettez à jour l'appareil d'ici une heure}one{Mettez à jour l'appareil d'ici # heure}other{Mettez à jour l'appareil d'ici # heures}}</translation>
@@ -842,6 +852,7 @@
 <translation id="6723839937902243910">Alimentation</translation>
 <translation id="6727969043791803658">Connecté, pile chargée à <ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="6732800389263199929">+ <ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ACCÉDER AUX PARAMÈTRES</translation>
 <translation id="6751052314767925245">Fonctionnalité imposée par votre administrateur</translation>
 <translation id="6751826523481687655">Le suivi des performances est activé</translation>
 <translation id="6752912906630585008">Le bureau <ph name="REMOVED_DESK" /> a été supprimé et fusionné avec le bureau <ph name="RECEIVE_DESK" /></translation>
@@ -977,6 +988,7 @@
 <translation id="7662283695561029522">Touchez pour configurer</translation>
 <translation id="7705524343798198388">RPV</translation>
 <translation id="7714767791242455379">Ajouter un nouveau réseau cellulaire</translation>
+<translation id="7720410380936703141">RÉESSAYER</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# notifications}}</translation>
 <translation id="7724603315864178912">Couper</translation>
 <translation id="7745560842763881396">Afficher les applications sur l'étagère</translation>
@@ -1163,6 +1175,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Mode de saisie utilisé : <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Déverrouillez l'appareil en tant que <ph name="LOGIN_ID" /> pour effectuer l'action de la notification</translation>
+<translation id="9000771174482730261">GÉRER L'ESPACE DE STOCKAGE</translation>
 <translation id="9017320285115481645">Entrez le code d'accès parental pour Family Link.</translation>
 <translation id="9024331582947483881">plein écran</translation>
 <translation id="9047624247355796468">Ouvrir les paramètres pour <ph name="NETWORK_NAME" /></translation>
@@ -1208,6 +1221,7 @@
 <translation id="938963181863597773">Qu'y a-t-il dans mon agenda?</translation>
 <translation id="945522503751344254">Envoyer un commentaire à Google</translation>
 <translation id="951991426597076286">Refuser</translation>
+<translation id="954052413789300507">Espace de stockage insuffisant pour <ph name="FILENAME" />. Libérez de l'espace de stockage.</translation>
 <translation id="974545358917229949">Affichage de <ph name="RESULT_COUNT" /> résultats pour <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Paysage</translation>
 <translation id="990277280839877440">La fenêtre <ph name="WINDOW_TITILE" /> a été fermée.</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index e634031..2b0f8c04 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Bureau 7</translation>
 <translation id="2224075387478458881">L'enregistrement d'écran n'est pas autorisé lorsqu'un contenu protégé est affiché</translation>
 <translation id="225680501294068881">Recherche d'appareils…</translation>
+<translation id="2257486738914982088">Une erreur s'est produite lors du téléchargement de <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth désactivé</translation>
 <translation id="2268813581635650749">Déconnecter les util.</translation>
 <translation id="2269016722240250274">Une application utilise le micro</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Voulez-vous vraiment désactiver les clics automatiques ?</translation>
 <translation id="4849058404725798627">Mettre l'objet sélectionné au clavier en surbrillance</translation>
 <translation id="485592688953820832">Aucune action (pause)</translation>
+<translation id="4860284199500934869">Vérifiez votre connexion réseau pour télécharger <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Le téléchargement sera relancé plus tard. Les paroles seront envoyées à Google pour traitement une fois le téléchargement terminé.</translation>
 <translation id="4868492592575313542">a activé</translation>
 <translation id="4872237917498892622">Alt + Recherche ou Maj</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Refuser</translation>
 <translation id="6453179446719226835">La langue a été modifiée</translation>
 <translation id="6459472438155181876">Extension de l'écran pour <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Impossible de télécharger le fichier</translation>
 <translation id="6482559668224714696">Loupe plein écran</translation>
 <translation id="6490471652906364588">Appareil USB de type C (port situé sur la droite de l'appareil)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> exige la mise à jour de votre <ph name="DEVICE_TYPE" /> avant la date limite</translation>
@@ -817,6 +820,8 @@
 <translation id="6537924328260219877">Force du signal : <ph name="SIGNAL_STRENGTH" />, batterie du téléphone à <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">Téléchargement en cours d'analyse : <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Diffusion vers <ph name="RECEIVER_NAME" />…</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nouvelle installation</translation>
 <translation id="6559976592393364813">Se renseigner auprès de l'administrateur</translation>
 <translation id="6565007273808762236">Connexion eSIM indisponible</translation>
 <translation id="6570831796530454248">{0,plural, =1{Mettre à jour l'appareil d'ici 1 heure}one{Mettre à jour l'appareil d'ici # heure}other{Mettre à jour l'appareil d'ici # heures}}</translation>
@@ -848,6 +853,7 @@
 <translation id="6723839937902243910">Alimentation</translation>
 <translation id="6727969043791803658">Connecté, batterie à <ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="6732800389263199929">et <ph name="COUNT" /> autre(s)</translation>
+<translation id="6739144137573853180">ACCÉDER AUX PARAMÈTRES</translation>
 <translation id="6751052314767925245">Cette fonctionnalité est appliquée par votre administrateur</translation>
 <translation id="6751826523481687655">Le suivi des performances est activé</translation>
 <translation id="6752912906630585008">Bureau <ph name="REMOVED_DESK" /> supprimé et fusionné avec le Bureau <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +989,7 @@
 <translation id="7662283695561029522">Appuyer pour configurer</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Ajouter un réseau mobile</translation>
+<translation id="7720410380936703141">RÉESSAYER</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# notifications}}</translation>
 <translation id="7724603315864178912">Couper</translation>
 <translation id="7745560842763881396">Afficher les applis sur l'étagère</translation>
@@ -1169,6 +1176,7 @@
 <translation id="8983038754672563810">3G+</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> en cours d'utilisation</translation>
 <translation id="899350903320462459">Déverrouiller l'appareil en tant que <ph name="LOGIN_ID" /> pour effectuer l'action de notification</translation>
+<translation id="9000771174482730261">GÉRER L'ESPACE DE STOCKAGE</translation>
 <translation id="9017320285115481645">Saisissez le code d'accès parental Family Link.</translation>
 <translation id="9024331582947483881">plein écran</translation>
 <translation id="9047624247355796468">Ouvrir les paramètres du réseau <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1222,7 @@
 <translation id="938963181863597773">Qu'y a-t-il dans mon agenda ?</translation>
 <translation id="945522503751344254">Envoyer un commentaire</translation>
 <translation id="951991426597076286">Refuser</translation>
+<translation id="954052413789300507">Espace insuffisant pour <ph name="FILENAME" />. Libérez de l'espace.</translation>
 <translation id="974545358917229949">Affichage de <ph name="RESULT_COUNT" /> résultats pour <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Paysage</translation>
 <translation id="990277280839877440">Fenêtre <ph name="WINDOW_TITILE" /> fermée.</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb
index 3831ab9..2fc8516 100644
--- a/ash/strings/ash_strings_gl.xtb
+++ b/ash/strings/ash_strings_gl.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Escritorio 7</translation>
 <translation id="2224075387478458881">Non se pode gravar a pantalla cando nela se mostra contido protexido</translation>
 <translation id="225680501294068881">Buscando dispositivos...</translation>
+<translation id="2257486738914982088">Produciuse un erro ao descargar o ficheiro <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth desactivado</translation>
 <translation id="2268813581635650749">Pechar as sesións</translation>
 <translation id="2269016722240250274">Unha aplicación está utilizando o teu micrófono</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">Seguro que queres desactivar os clics automáticos?</translation>
 <translation id="4849058404725798627">Destacar obxecto co enfoque do teclado</translation>
 <translation id="485592688953820832">Ningunha acción (pausa)</translation>
+<translation id="4860284199500934869">Para descargar o ficheiro <ph name="FILENAME" />, comproba a túa conexión de rede</translation>
 <translation id="486056901304535126">Tentarase de novo máis tarde. Ata que finalice a descarga, enviaráselle a Google o que se fale para que o procese.</translation>
 <translation id="4868492592575313542">activou</translation>
 <translation id="4872237917498892622">Alt+Busca ou Maiús</translation>
@@ -805,6 +807,7 @@
 <translation id="6452181791372256707">Rexeitar</translation>
 <translation id="6453179446719226835">Cambiouse o idioma</translation>
 <translation id="6459472438155181876">Ampliando pantalla a <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Non se puido descargar o ficheiro</translation>
 <translation id="6482559668224714696">Lupa de pantalla completa</translation>
 <translation id="6490471652906364588">Dispositivo USB‑C (porto dereito)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> require que actualices o teu dispositivo (<ph name="DEVICE_TYPE" />) antes de que finalice o prazo</translation>
@@ -816,7 +819,10 @@
 <translation id="6528179044667508675">Non molestar</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877">Intensidade do sinal do <ph name="SIGNAL_STRENGTH" />, batería do teléfono ao <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Escaneando ficheiro <ph name="FILENAME" /> para descargalo</translation>
 <translation id="6542521951477560771">Emitindo en: <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nova instalación</translation>
 <translation id="6559976592393364813">Pedirllo ao administrador</translation>
 <translation id="6565007273808762236">Non se puido establecer conexión coa eSIM</translation>
 <translation id="6570831796530454248">{0,plural, =1{Actualiza o dispositivo en 1 hora}other{Actualiza o dispositivo en # horas}}</translation>
@@ -848,6 +854,7 @@
 <translation id="6723839937902243910">A</translation>
 <translation id="6727969043791803658">Conectado, <ph name="BATTERY_PERCENTAGE" /> % de batería</translation>
 <translation id="6732800389263199929"><ph name="COUNT" /> máis</translation>
+<translation id="6739144137573853180">IR A CONFIGURACIÓN</translation>
 <translation id="6751052314767925245">Función aplicada polo teu administrador</translation>
 <translation id="6751826523481687655">O rastrexo do rendemento está activado</translation>
 <translation id="6752912906630585008">Quitouse o escritorio <ph name="REMOVED_DESK" /> e combinouse co escritorio <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +990,7 @@
 <translation id="7662283695561029522">Toca para configurar a conexión compartida</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Engadir nova rede de telefonía móbil</translation>
+<translation id="7720410380936703141">TENTAR DE NOVO</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificacións}}</translation>
 <translation id="7724603315864178912">Cortar</translation>
 <translation id="7745560842763881396">Mostrar as aplicacións do estante</translation>
@@ -1169,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Usando: <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Desbloquea o dispositivo como <ph name="LOGIN_ID" /> para levar a cabo a acción de notificación</translation>
+<translation id="9000771174482730261">XESTIONAR ALMACENAMENTO</translation>
 <translation id="9017320285115481645">Introduce o código de acceso parental de Family Link.</translation>
 <translation id="9024331582947483881">pantalla completa</translation>
 <translation id="9047624247355796468">Abrir a configuración de <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1223,7 @@
 <translation id="938963181863597773">Que hai no meu calendario?</translation>
 <translation id="945522503751344254">Enviar comentarios</translation>
 <translation id="951991426597076286">Rexeitar</translation>
+<translation id="954052413789300507">Non hai espazo suficiente para o ficheiro <ph name="FILENAME" />. Libera espazo.</translation>
 <translation id="974545358917229949">Mostrando <ph name="RESULT_COUNT" /> resultados para "<ph name="QUERY" />"</translation>
 <translation id="98515147261107953">Horizontal</translation>
 <translation id="990277280839877440">Pechouse a ventá <ph name="WINDOW_TITILE" />.</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index 6c9f185..65f4b0e2 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">ડેસ્ક 7</translation>
 <translation id="2224075387478458881">સંરક્ષિત કન્ટેન્ટ દેખાય ત્યારે સ્ક્રીન રેકોર્ડિંગની મંજૂરી નથી</translation>
 <translation id="225680501294068881">ઉપકરણો માટે સ્કેન કરી રહ્યું છે...</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> ડાઉનલોડ કરતી વખતે કંઈક ખોટું થયું</translation>
 <translation id="2268130516524549846">Bluetooth અક્ષમ છે</translation>
 <translation id="2268813581635650749">બધાને સાઇન આઉટ કરો</translation>
 <translation id="2269016722240250274">કોઈ ઍપ્લિકેશન તમારા માઇક્રોફોનનો ઉપયોગ કરી રહી છે</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">શું તમારે ખરેખર ઑટોમૅટિક ક્લિક બંધ કરવા છે?</translation>
 <translation id="4849058404725798627">કીબોર્ડ ફોકસ વડે ઑબ્જેક્ટને હાઇલાઇટ કરો</translation>
 <translation id="485592688953820832">કોઈ ક્રિયા નથી (થોભાવો)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> ડાઉનલોડ કરવા માટે, તમારું નેટવર્ક કનેક્શન ચેક કરો</translation>
 <translation id="486056901304535126">થોડા સમય પછી ડાઉનલોડ કરવાનો પ્રયાસ કરવામાં આવશે. ડાઉનલોડ પૂર્ણ થાય ત્યાં સુધી, Googleને પ્રક્રિયા કરવા માટે સ્પીચ મોકલવામાં આવશે.</translation>
 <translation id="4868492592575313542">સક્રિય કરેલું</translation>
 <translation id="4872237917498892622">Alt+Search અથવા Shift</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">ઉપશીર્ષકો શરૂ કરો</translation>
 <translation id="5078796286268621944">ખોટો PIN</translation>
 <translation id="5083553833479578423">Assistantની વધુ સુવિધાઓને અનલૉક કરો.</translation>
+<translation id="5106223312672646208">મનગમતું બનાવો</translation>
 <translation id="5117590920725113268">આગલો મહિનો દર્શાવો</translation>
 <translation id="5136175204352732067">અલગ કીબોર્ડ કનેક્ટ કર્યું</translation>
 <translation id="5147567197700016471">અનલૉક કર્યું</translation>
@@ -804,6 +807,7 @@
 <translation id="6452181791372256707">નકારો</translation>
 <translation id="6453179446719226835">ભાષા બદલવામાં આવી છે</translation>
 <translation id="6459472438155181876">સ્ક્રીનને <ph name="DISPLAY_NAME" /> પર વિસ્તૃત કરી રહ્યાં છે</translation>
+<translation id="6477681113376365978">ફાઇલ ડાઉનલોડ કરી શકાતી નથી</translation>
 <translation id="6482559668224714696">પૂર્ણ-સ્ક્રીન મૅગ્નિફાયર</translation>
 <translation id="6490471652906364588">USB-C ઉપકરણ (જમણું પોર્ટ)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> માટે જરૂરી છે કે તમે સમયસીમા સમાપ્ત થાય તે પહેલાં તમારું <ph name="DEVICE_TYPE" /> અપડેટ કરો</translation>
@@ -817,6 +821,8 @@
 <translation id="6537924328260219877">સિગ્નલની સશક્તતા <ph name="SIGNAL_STRENGTH" />, ફોનની બૅટરી <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">ડાઉનલોડ <ph name="FILENAME" /> સ્કૅન કરી રહ્યું છે</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> પર કાસ્ટ કરી રહ્યાં છીએ</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+નવી ઇન્સ્ટૉલ કરી છે</translation>
 <translation id="6559976592393364813">વ્યવસ્થાપકને પૂછો</translation>
 <translation id="6565007273808762236">ઇ-સિમ કનેક્શન ઉપલબ્ધ નથી</translation>
 <translation id="6570831796530454248">{0,plural, =1{એક કલાકની અંદર ડિવાઇસ અપડેટ કરો}one{# કલાકની અંદર ડિવાઇસ અપડેટ કરો}other{# કલાકની અંદર ડિવાઇસ અપડેટ કરો}}</translation>
@@ -848,6 +854,7 @@
 <translation id="6723839937902243910">પાવર</translation>
 <translation id="6727969043791803658">કનેક્ટ થયેલ, બૅટરી <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">સેટિંગ પર જાઓ</translation>
 <translation id="6751052314767925245">તમારા વ્યવસ્થાપક દ્વારા લાગુ કરેલી</translation>
 <translation id="6751826523481687655">કાર્યપ્રદર્શનની નોંધ રાખવાનું ચાલુ કરેલું છે</translation>
 <translation id="6752912906630585008">ડેસ્ક <ph name="REMOVED_DESK" /> કાઢી નાખ્યું અને ડેસ્ક <ph name="RECEIVE_DESK" /> સાથે મર્જ કર્યું</translation>
@@ -983,6 +990,7 @@
 <translation id="7662283695561029522">ગોઠવવા માટે ટૅપ કરો</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">નવું સેલ્યુલર નેટવર્ક ઉમેરો</translation>
+<translation id="7720410380936703141">ફરી પ્રયાસ કરો</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 નોટિફિકેશન}one{# નોટિફિકેશન}other{# નોટિફિકેશન}}</translation>
 <translation id="7724603315864178912">કાપો</translation>
 <translation id="7745560842763881396">શેલ્ફમાં ઍપ બતાવો</translation>
@@ -1169,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" />નો ઉપયોગ કરી રહ્યા છે</translation>
 <translation id="899350903320462459">નોટિફિકેશન ક્રિયા કરવા માટે ઉપકરણને <ph name="LOGIN_ID" /> તરીકે અનલૉક કરો</translation>
+<translation id="9000771174482730261">સ્ટોરેજ મેનેજ કરો</translation>
 <translation id="9017320285115481645">Family Linkનો માતાપિતા માટેનો ઍક્સેસ કોડ દાખલ કરો.</translation>
 <translation id="9024331582947483881">પૂર્ણ સ્ક્રીન</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> માટે સેટિંગ ખોલો</translation>
@@ -1214,6 +1223,7 @@
 <translation id="938963181863597773">મારા કૅલેન્ડરમાં શું છે?</translation>
 <translation id="945522503751344254">પ્રતિસાદ મોકલો</translation>
 <translation id="951991426597076286">નકારો</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> માટે પર્યાપ્ત સ્પેસ નથી. સ્પેસ ખાલી કરો.</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> માટે <ph name="RESULT_COUNT" /> પરિણામ બતાવી રહ્યાં છીએ</translation>
 <translation id="98515147261107953">લેન્ડસ્કૅપ</translation>
 <translation id="990277280839877440">વિંડો <ph name="WINDOW_TITILE" /> બંધ કરેલી છે.</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index 341e54e..a93b6d9 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -624,6 +624,7 @@
 <translation id="5075554201838155866">सबटाइटल चालू करें</translation>
 <translation id="5078796286268621944">गलत पिन</translation>
 <translation id="5083553833479578423">Assistant की और भी सुविधाओं के बारे में जानें.</translation>
+<translation id="5106223312672646208">अपने हिसाब से बनाएं</translation>
 <translation id="5117590920725113268">अगला महीना दिखाएं</translation>
 <translation id="5136175204352732067">अलग कीबोर्ड कनेक्ट किया गया</translation>
 <translation id="5147567197700016471">अनलॉक हो गया</translation>
@@ -819,6 +820,7 @@
 <translation id="6528179044667508675">परेशान न करें</translation>
 <translation id="65320610082834431">इमोजी</translation>
 <translation id="6537924328260219877">सिग्नल की क्षमता <ph name="SIGNAL_STRENGTH" />, फ़ोन की बैटरी <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">डाउनलोड हो रही फ़ाइल <ph name="FILENAME" /> को स्कैन किया जा रहा है</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> पर कास्ट किया जा रहा है</translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 अभी इंस्टॉल किया गया है</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 0a00e79d..5bd1bb0 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">7. asztal</translation>
 <translation id="2224075387478458881">Nem engedélyezett felvétel készítése a képernyőről, ha védett tartalom látható rajta</translation>
 <translation id="225680501294068881">Eszközök keresése...</translation>
+<translation id="2257486738914982088">Hiba történt a következő fájl letöltésekor: <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth letiltva</translation>
 <translation id="2268813581635650749">Összes kiléptetése</translation>
 <translation id="2269016722240250274">Egy alkalmazás használja a mikrofonját</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">Biztosan kikapcsolja az automatikus kattintásokat?</translation>
 <translation id="4849058404725798627">Objektum kiemelése billentyűzetfókusszal</translation>
 <translation id="485592688953820832">Nincs művelet (szünet)</translation>
+<translation id="4860284199500934869">Ellenőrizze a hálózati kapcsolatot a(z) <ph name="FILENAME" /> letöltéséhez</translation>
 <translation id="486056901304535126">A letöltést később kísérli meg a rendszer. A beszédet a rendszer a letöltés befejezéséig elküldi a Google-nak feldolgozásra.</translation>
 <translation id="4868492592575313542">aktiválva</translation>
 <translation id="4872237917498892622">Alt + Keresés vagy Shift</translation>
@@ -622,6 +624,7 @@
 <translation id="5075554201838155866">Feliratok indítása</translation>
 <translation id="5078796286268621944">Helytelen PIN-kód</translation>
 <translation id="5083553833479578423">Hozzáférés a Segéd további funkcióihoz</translation>
+<translation id="5106223312672646208">Személyre szabás</translation>
 <translation id="5117590920725113268">A következő hónap megjelenítése</translation>
 <translation id="5136175204352732067">Új billentyűzet lett csatlakoztatva</translation>
 <translation id="5147567197700016471">Feloldva</translation>
@@ -805,6 +808,7 @@
 <translation id="6452181791372256707">Elutasítás</translation>
 <translation id="6453179446719226835">A nyelv módosult</translation>
 <translation id="6459472438155181876">Képernyő kiterjesztése erre: <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Nem sikerült a fájl letöltése</translation>
 <translation id="6482559668224714696">Teljes képernyős nagyító</translation>
 <translation id="6490471652906364588">C típusú USB-vel kompatibilis eszköz (jobb oldali port)</translation>
 <translation id="6491071886865974820">A(z) <ph name="MANAGER" /> megköveteli, hogy frissítse <ph name="DEVICE_TYPE" /> eszközét a határidőig</translation>
@@ -816,7 +820,10 @@
 <translation id="6528179044667508675">Ne zavarj</translation>
 <translation id="65320610082834431">Emojik</translation>
 <translation id="6537924328260219877">Jelerősség: <ph name="SIGNAL_STRENGTH" />, telefon akkumulátora: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Folyamatban van a következő letöltés ellenőrzése: <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Küldés ide: <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Frissen telepítve</translation>
 <translation id="6559976592393364813">Érdeklődjön a rendszergazdánál</translation>
 <translation id="6565007273808762236">eSIM-kapcsolat nem áll rendelkezésre</translation>
 <translation id="6570831796530454248">{0,plural, =1{1 órán belül frissítse az eszközt}other{# órán belül frissítse az eszközt}}</translation>
@@ -848,6 +855,7 @@
 <translation id="6723839937902243910">Energiaellátás</translation>
 <translation id="6727969043791803658">Csatlakoztatva, <ph name="BATTERY_PERCENTAGE" />%-os töltöttség</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">UGRÁS A BEÁLLÍTÁSOKHOZ</translation>
 <translation id="6751052314767925245">Használatát megköveteli az adminisztrátor</translation>
 <translation id="6751826523481687655">A teljesítménykövetés be van kapcsolva</translation>
 <translation id="6752912906630585008">A(z) „<ph name="REMOVED_DESK" />” asztal el lett távolítva, és össze lett vonva a(z) „<ph name="RECEIVE_DESK" />” asztallal</translation>
@@ -983,6 +991,7 @@
 <translation id="7662283695561029522">Koppintson a konfiguráláshoz</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Új mobilhálózat hozzáadása</translation>
+<translation id="7720410380936703141">ÚJRA</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 értesítés}other{# értesítés}}</translation>
 <translation id="7724603315864178912">Kivágás</translation>
 <translation id="7745560842763881396">A polcon található alkalmazások megjelenítése</translation>
@@ -1169,6 +1178,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> használata</translation>
 <translation id="899350903320462459">Az eszköz zárolásának feloldása az értesítési művelet végrehajtásához a következő felhasználó által: <ph name="LOGIN_ID" />.</translation>
+<translation id="9000771174482730261">TÁRHELY KEZELÉSE</translation>
 <translation id="9017320285115481645">Adja meg a Family Link szülői hozzáférési kódját.</translation>
 <translation id="9024331582947483881">teljes képernyő</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> beállításainak megnyitása</translation>
@@ -1214,6 +1224,7 @@
 <translation id="938963181863597773">Mi van a naptáramban?</translation>
 <translation id="945522503751344254">Visszajelzés küldése</translation>
 <translation id="951991426597076286">Elutasítás</translation>
+<translation id="954052413789300507">Nincs elég tárhely a következő fájl számára: <ph name="FILENAME" />. Szabadítson fel tárhelyet.</translation>
 <translation id="974545358917229949"><ph name="RESULT_COUNT" /> találat megjelenítése a következő lekérdezésre: <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Fekvő</translation>
 <translation id="990277280839877440">Bezárta a következő ablakot: <ph name="WINDOW_TITILE" />.</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 49c2bab..ce820ea 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Desktop 7</translation>
 <translation id="2224075387478458881">Perekaman layar tidak diizinkan saat konten yang dilindungi terlihat</translation>
 <translation id="225680501294068881">Memindai perangkat...</translation>
+<translation id="2257486738914982088">Terjadi masalah saat mendownload <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth dinonaktifkan</translation>
 <translation id="2268813581635650749">Keluarkan semua</translation>
 <translation id="2269016722240250274">Aplikasi sedang menggunakan mikrofon Anda</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Yakin ingin menonaktifkan klik otomatis?</translation>
 <translation id="4849058404725798627">Sorot objek dengan fokus keyboard</translation>
 <translation id="485592688953820832">Tidak ada tindakan (jeda)</translation>
+<translation id="4860284199500934869">Periksa koneksi jaringan Anda untuk mendownload <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Download akan dicoba nanti. Ucapan akan dikirim ke Google untuk diproses hingga download selesai.</translation>
 <translation id="4868492592575313542">diaktifkan</translation>
 <translation id="4872237917498892622">Alt+Telusuri atau Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Tolak</translation>
 <translation id="6453179446719226835">Bahasa telah diubah</translation>
 <translation id="6459472438155181876">Memperpanjang layar ke <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Tidak dapat mendownload file</translation>
 <translation id="6482559668224714696">Kaca pembesar layar penuh</translation>
 <translation id="6490471652906364588">Perangkat USB-C (port sebelah kanan)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> mengharuskan Anda mengupdate <ph name="DEVICE_TYPE" /> sebelum tiba batas waktu</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Jangan ganggu</translation>
 <translation id="65320610082834431">Emoji</translation>
 <translation id="6537924328260219877">Kekuatan Sinyal <ph name="SIGNAL_STRENGTH" />, Baterai Ponsel <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Download <ph name="FILENAME" /> yang sedang dipindai</translation>
 <translation id="6542521951477560771">Transmisikan ke <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Baru diinstal</translation>
 <translation id="6559976592393364813">Tanyakan kepada Administrator</translation>
 <translation id="6565007273808762236">Koneksi eSIM tidak tersedia</translation>
 <translation id="6570831796530454248">{0,plural, =1{Update perangkat dalam 1 jam}other{Update perangkat dalam # jam}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Daya</translation>
 <translation id="6727969043791803658">Terhubung, baterai <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">BUKA SETELAN</translation>
 <translation id="6751052314767925245">Diterapkan oleh administrator Anda</translation>
 <translation id="6751826523481687655">Pelacakan performa diaktifkan</translation>
 <translation id="6752912906630585008">Desktop <ph name="REMOVED_DESK" /> dihapus dan digabung dengan Desktop <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Ketuk untuk mengonfigurasi</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Tambahkan jaringan seluler baru</translation>
+<translation id="7720410380936703141">COBA LAGI</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifikasi}other{# notifikasi}}</translation>
 <translation id="7724603315864178912">Potong</translation>
 <translation id="7745560842763881396">Tampilkan aplikasi di rak</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Menggunakan <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Buka kunci perangkat sebagai <ph name="LOGIN_ID" /> untuk melakukan tindakan notifikasi</translation>
+<translation id="9000771174482730261">KELOLA PENYIMPANAN</translation>
 <translation id="9017320285115481645">Masukkan kode akses orang tua Family Link.</translation>
 <translation id="9024331582947483881">layar penuh</translation>
 <translation id="9047624247355796468">Buka setelan untuk <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Apa saja daftar acara di kalender saya?</translation>
 <translation id="945522503751344254">Kirim masukan</translation>
 <translation id="951991426597076286">Tolak</translation>
+<translation id="954052413789300507">Ruang penyimpanan tidak cukup untuk <ph name="FILENAME" />. Kosongkan ruang penyimpanan.</translation>
 <translation id="974545358917229949">Menampilkan <ph name="RESULT_COUNT" /> hasil untuk <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Lanskap</translation>
 <translation id="990277280839877440">Jendela <ph name="WINDOW_TITILE" /> menutup.</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb
index bd477783..e143cd1 100644
--- a/ash/strings/ash_strings_is.xtb
+++ b/ash/strings/ash_strings_is.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Skrifborð 7</translation>
 <translation id="2224075387478458881">Skjáupptaka er óheimil á meðan varið efni er sýnilegt</translation>
 <translation id="225680501294068881">Leitar að tækjum...</translation>
+<translation id="2257486738914982088">Eitthvað fór úrskeiðis við að sækja <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Slökkt á Bluetooth</translation>
 <translation id="2268813581635650749">Skrá alla út</translation>
 <translation id="2269016722240250274">Forrit er að nota hljóðnemann þinn</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Viltu örugglega slökkva á sjálfvirkum smellum?</translation>
 <translation id="4849058404725798627">Auðkenna hlut með lyklaborðsfókus</translation>
 <translation id="485592688953820832">Engin aðgerð (hlé)</translation>
+<translation id="4860284199500934869">Athugaðu nettenginguna til að sækja <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Reynt verður að hlaða niður síðar. Tal verður sent til Google til úrvinnslu þar til niðurhali er lokið.</translation>
 <translation id="4868492592575313542">virkjað</translation>
 <translation id="4872237917498892622">Alt+leitarlykill eða Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Hafna</translation>
 <translation id="6453179446719226835">Tungumálinu hefur verið breytt</translation>
 <translation id="6459472438155181876">Stækkar skjá yfir á <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Ekki tókst að sækja skrá</translation>
 <translation id="6482559668224714696">Stækkunargler á öllum skjánum</translation>
 <translation id="6490471652906364588">USB-C-tæki (hægra tengi)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> krefst þess að þú uppfærir <ph name="DEVICE_TYPE" /> áður en fresturinn rennur út</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Ónáðið ekki</translation>
 <translation id="65320610082834431">Emoji-tákn</translation>
 <translation id="6537924328260219877"><ph name="SIGNAL_STRENGTH" /> sendistyrkur, <ph name="BATTERY_STATUS" /> hleðsla á rafhlöðu símans</translation>
+<translation id="6539852571005954999">Niðurhal skannar <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Sendir út til <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Ný uppsetning</translation>
 <translation id="6559976592393364813">Spyrja kerfisstjóra</translation>
 <translation id="6565007273808762236">eSIM-tenging er ekki tiltæk</translation>
 <translation id="6570831796530454248">{0,plural, =1{Uppfærðu tækið innan klukkustundar}one{Uppfærðu tækið innan # klukkustundar}other{Uppfærðu tækið innan # klukkustunda}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Orka</translation>
 <translation id="6727969043791803658">Tengt, <ph name="BATTERY_PERCENTAGE" />% rafhlaða</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">OPNA STILLINGAR</translation>
 <translation id="6751052314767925245">Framfylgt af kerfisstjóra</translation>
 <translation id="6751826523481687655">Kveikt er á afkastarakningu</translation>
 <translation id="6752912906630585008">Skjáborð <ph name="REMOVED_DESK" /> fjarlægt og sameinað skjáborði <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Ýttu til að stilla</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Bæta nýju farsímakerfi við</translation>
+<translation id="7720410380936703141">REYNDU AFTUR</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Ein tilkynning}one{# tilkynning}other{# tilkynningar}}</translation>
 <translation id="7724603315864178912">Klippa</translation>
 <translation id="7745560842763881396">Sýna forrit á hillu</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Notar <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Opnaðu tækið sem <ph name="LOGIN_ID" /> til að framkvæma aðgerð tilkynningarinnar</translation>
+<translation id="9000771174482730261">STJÓRNA GEYMSLURÝMI</translation>
 <translation id="9017320285115481645">Færðu inn aðgangskóða foreldris fyrir Family Link.</translation>
 <translation id="9024331582947483881">allur skjárinn</translation>
 <translation id="9047624247355796468">Opna stillingar fyrir <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Hvað er á dagskránni hjá mér?</translation>
 <translation id="945522503751344254">Senda ábendingu</translation>
 <translation id="951991426597076286">Hafna</translation>
+<translation id="954052413789300507">Ekki nægilegt pláss fyrir <ph name="FILENAME" />. Losaðu um pláss.</translation>
 <translation id="974545358917229949">Sýnir niðurstöður <ph name="RESULT_COUNT" /> fyrir „<ph name="QUERY" />“</translation>
 <translation id="98515147261107953">Langsnið</translation>
 <translation id="990277280839877440">Glugganum „<ph name="WINDOW_TITILE" />“ lokað.</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index 5121dd8f..f81cb30 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">שולחן עבודה וירטואלי 7</translation>
 <translation id="2224075387478458881">הקלטת המסך אסורה כשמוצג תוכן מוגן</translation>
 <translation id="225680501294068881">מתבצעת סריקה לאיתור מכשירים...</translation>
+<translation id="2257486738914982088">משהו השתבש במהלך ההורדה של <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">‏Bluetooth מושבת</translation>
 <translation id="2268813581635650749">הוצאת כולם</translation>
 <translation id="2269016722240250274">אפליקציה כלשהי משתמשת במיקרופון</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">הקליקים האוטומטיים יושבתו. האם להמשיך?</translation>
 <translation id="4849058404725798627">הדגשה של האובייקט במיקוד המקלדת</translation>
 <translation id="485592688953820832">ללא פעולה (השהיה)</translation>
+<translation id="4860284199500934869">צריך לבדוק את החיבור לרשת כדי להוריד את <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">‏יתבצע ניסיון הורדה מאוחר יותר. הדיבור יישלח אל Google לעיבוד עד שההורדה תושלם.</translation>
 <translation id="4868492592575313542">מופעלת</translation>
 <translation id="4872237917498892622">‏Alt + חיפוש או Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">דחייה</translation>
 <translation id="6453179446719226835">שינוי השפה הסתיים</translation>
 <translation id="6459472438155181876">הרחבת המסך אל <ph name="DISPLAY_NAME" /> מתבצעת</translation>
+<translation id="6477681113376365978">לא ניתן להוריד את הקובץ</translation>
 <translation id="6482559668224714696">זכוכית מגדלת במסך מלא</translation>
 <translation id="6490471652906364588">‏מכשיר עם יציאת USB-C (יציאה ימנית)</translation>
 <translation id="6491071886865974820">בהתאם לדרישה של <ph name="MANAGER" />, עליך לעדכן את ה-<ph name="DEVICE_TYPE" /> לפני המועד האחרון</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">נא לא להפריע</translation>
 <translation id="65320610082834431">אמוג'י</translation>
 <translation id="6537924328260219877">עוצמת האות: <ph name="SIGNAL_STRENGTH" />, סוללת הטלפון: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">מתבצעת סריקה של קובץ ההורדה <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">ההעברה אל <ph name="RECEIVER_NAME" /> מתבצעת</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+התקנה חדשה</translation>
 <translation id="6559976592393364813">יש לבקש ממנהל המערכת</translation>
 <translation id="6565007273808762236">‏החיבור ל-eSIM לא זמין</translation>
 <translation id="6570831796530454248">{0,plural, =1{עליך לעדכן את המכשיר בתוך שעה אחת}two{עליך לעדכן את המכשיר בתוך שעתיים}many{עליך לעדכן את המכשיר בתוך # שעות}other{עליך לעדכן את המכשיר בתוך # שעות}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">חשמל</translation>
 <translation id="6727969043791803658">‏מחובר, ‎<ph name="BATTERY_PERCENTAGE" />%‎ סוללה</translation>
 <translation id="6732800389263199929">‎+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">מעבר להגדרות</translation>
 <translation id="6751052314767925245">התכונה הזו נאכפת על ידי מנהל המערכת</translation>
 <translation id="6751826523481687655">מעקב הביצועים פועל</translation>
 <translation id="6752912906630585008">שולחן העבודה <ph name="REMOVED_DESK" /> הוסר ושולב עם שולחן העבודה <ph name="RECEIVE_DESK" /></translation>
@@ -984,6 +991,7 @@
 <translation id="7662283695561029522">יש להקיש כדי להגדיר</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">הוספה של רשת סלולרית חדשה</translation>
+<translation id="7720410380936703141">ניסיון חוזר</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{הודעה אחת}two{2 הודעות}many{# הודעות}other{# הודעות}}</translation>
 <translation id="7724603315864178912">חיתוך</translation>
 <translation id="7745560842763881396">הצגת האפליקציות במדף</translation>
@@ -1170,6 +1178,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">מקלדת בשימוש: <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">יש לבטל את נעילת המכשיר כ-<ph name="LOGIN_ID" /> על מנת לבצע את פעולת ההודעה</translation>
+<translation id="9000771174482730261">ניהול האחסון</translation>
 <translation id="9017320285115481645">‏יש להזין את קוד הגישה להורים עבור Family Link.</translation>
 <translation id="9024331582947483881">מסך מלא</translation>
 <translation id="9047624247355796468">פתיחת ההגדרות של <ph name="NETWORK_NAME" /></translation>
@@ -1217,6 +1226,7 @@
 <translation id="938963181863597773">אירועים קרובים ביומן שלי</translation>
 <translation id="945522503751344254"> שליחת משוב</translation>
 <translation id="951991426597076286">דחייה</translation>
+<translation id="954052413789300507">אין מספיק נפח אחסון פנוי בשביל <ph name="FILENAME" />. עליך לפנות מקום.</translation>
 <translation id="974545358917229949">מוצגות <ph name="RESULT_COUNT" /> תוצאות עבור השאילתה: <ph name="QUERY" /></translation>
 <translation id="98515147261107953">לרוחב</translation>
 <translation id="990277280839877440">החלון <ph name="WINDOW_TITILE" /> נסגר.</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 3b581d6..73a84e3 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">字幕を開始</translation>
 <translation id="5078796286268621944">PIN が正しくありません</translation>
 <translation id="5083553833479578423">さらに多くのアシスタント機能をぜひご活用ください。</translation>
+<translation id="5106223312672646208">カスタマイズ</translation>
 <translation id="5117590920725113268">次の月を表示</translation>
 <translation id="5136175204352732067">別のキーボードが接続されています</translation>
 <translation id="5147567197700016471">ロック解除済み</translation>
@@ -818,6 +819,7 @@
 <translation id="6528179044667508675">サイレント</translation>
 <translation id="65320610082834431">絵文字</translation>
 <translation id="6537924328260219877">信号強度 <ph name="SIGNAL_STRENGTH" />、電池残量 <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">ダウンロードする <ph name="FILENAME" /> をスキャンしています</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> にキャストしています</translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 新たなインストール</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index 8834b737..4c6cf5a 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">სამუშაო მაგიდა 7</translation>
 <translation id="2224075387478458881">ეკრანის ჩაწერა დაუშვებელია, როცა ხილულია დაცული კონტენტი</translation>
 <translation id="225680501294068881">სკანირება მოწყობილობებისთვის…</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> ვერ ჩამოიტვირთა შეფერხების გამო</translation>
 <translation id="2268130516524549846">Bluetooth გათიშულია</translation>
 <translation id="2268813581635650749">ყველას გამოსვლა</translation>
 <translation id="2269016722240250274">აპლიკაცია იყენებს თქვენს მიკროფონს</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">ნამდვილად გსურთ, გამორთოთ ავტომატური დაწკაპუნებები?</translation>
 <translation id="4849058404725798627">კლავიატურის მეშვეობით არჩეული ობიექტის გამოყოფა</translation>
 <translation id="485592688953820832">ქმედების გარეშე (პაუზა)</translation>
+<translation id="4860284199500934869">შეამოწმეთ კავშირი ქსელთან, <ph name="FILENAME" /> რომ ჩამოტვირთოთ</translation>
 <translation id="486056901304535126">ჩამოტვირთვას მოგვიანებით შევეცდებით. ჩამოტვირთვის დასრულებამდე მეტყველება გაეგზავნება Google-ს დასამუშავებლად.</translation>
 <translation id="4868492592575313542">გააქტიურებულია</translation>
 <translation id="4872237917498892622">Alt+ძიება ან Shift</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">დახურული სუბტიტრების გაშვება</translation>
 <translation id="5078796286268621944">არასწორი პინი</translation>
 <translation id="5083553833479578423">განბლოკეთ ასისტენტის დამატებითი ფუნქციები.</translation>
+<translation id="5106223312672646208">პერსონალიზება</translation>
 <translation id="5117590920725113268">შემდეგი თვის ჩვენება</translation>
 <translation id="5136175204352732067">დაკავშირებულია განსხვავებული კლავიატურა</translation>
 <translation id="5147567197700016471">განბლოკილია</translation>
@@ -804,6 +807,7 @@
 <translation id="6452181791372256707">უარყოფა</translation>
 <translation id="6453179446719226835">ენა შეიცვალა</translation>
 <translation id="6459472438155181876">ეკრანის გაგრძელება <ph name="DISPLAY_NAME" />-მდე</translation>
+<translation id="6477681113376365978">ფაილი ვერ ჩამოიტვირთა</translation>
 <translation id="6482559668224714696">სრულეკრანიანი ლუპა</translation>
 <translation id="6490471652906364588">USB-C მოწყობილობა (მარჯვენა პორტი)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> ითხოვს, განაახლოთ თქვენი <ph name="DEVICE_TYPE" /> ბოლო ვადამდე</translation>
@@ -817,6 +821,8 @@
 <translation id="6537924328260219877">სიგნალის სიძლიერე: <ph name="SIGNAL_STRENGTH" />, ტელეფონის ბატარეა: <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">ჩამოტვირთული <ph name="FILENAME" /> სკანირდება</translation>
 <translation id="6542521951477560771">მიმდინარეობს ტრანსლირება <ph name="RECEIVER_NAME" />-ში</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+ახალდაინსტალირებული</translation>
 <translation id="6559976592393364813">ჰკითხეთ ადმინისტრატორს</translation>
 <translation id="6565007273808762236">eSIM კავშირი მიუწვდომელია</translation>
 <translation id="6570831796530454248">{0,plural, =1{განაახლეთ მოწყობილობა 1 საათის განმავლობაში}other{განაახლეთ მოწყობილობა # საათის განმავლობაში}}</translation>
@@ -848,6 +854,7 @@
 <translation id="6723839937902243910">ენერგია</translation>
 <translation id="6727969043791803658">დაკავშირებულია, ბატარეის დონეა <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">პარამეტრებზე გადასვლა</translation>
 <translation id="6751052314767925245">იძულებით გააქტიურებულია თქვენი ადმინისტრატორის მიერ</translation>
 <translation id="6751826523481687655">ეფექტურობის ტრასირება ჩართულია</translation>
 <translation id="6752912906630585008">სამუშაო მაგიდა <ph name="REMOVED_DESK" /> ამოიშალა და გაერთიანდა სამუშაო მაგიდასთან <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +990,7 @@
 <translation id="7662283695561029522">შეეხეთ პარამეტრების კონფიგურაციისთვის</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">ახალი ფიჭური ქსელის დამატება</translation>
+<translation id="7720410380936703141">ხელახლა ცდა</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 შეტყობინება}other{# შეტყობინება}}</translation>
 <translation id="7724603315864178912">ამოჭრა</translation>
 <translation id="7745560842763881396">თაროზე აპების ჩვენება</translation>
@@ -1169,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">გამოიყენება <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">შეტყობინების ქმედების შესასრულებლად განბლოკეთ მოწყობილობა <ph name="LOGIN_ID" />-ის სახელით</translation>
+<translation id="9000771174482730261">მეხსიერების მართვა</translation>
 <translation id="9017320285115481645">შეიყვანეთ Family Link-ის წვდომის კოდი მშობლებისთვის.</translation>
 <translation id="9024331582947483881">მთელ ეკრანზე</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" />-ის პარამეტრების გახსნა</translation>
@@ -1214,6 +1223,7 @@
 <translation id="938963181863597773">რა მაქვს კალენდარში?</translation>
 <translation id="945522503751344254">შეფასების გაგზავნა</translation>
 <translation id="951991426597076286">უარყოფა</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> ვერ ჩამოიტვირთება არასაკმარისი სივრცის გამო. გაათავისუფლეთ მეხსიერება.</translation>
 <translation id="974545358917229949">ნაჩვენებია <ph name="RESULT_COUNT" /> შედეგი მოთხოვნაზე: <ph name="QUERY" /></translation>
 <translation id="98515147261107953">პეიზაჟი</translation>
 <translation id="990277280839877440">ფანჯარა „<ph name="WINDOW_TITILE" />“ დაიხურა.</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb
index 6b26a62..66fef5e 100644
--- a/ash/strings/ash_strings_kk.xtb
+++ b/ash/strings/ash_strings_kk.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">7-ші жұмыс үстелі</translation>
 <translation id="2224075387478458881">Қорғалған мазмұн көрініп тұрғанда, экранды жазуға болмайды.</translation>
 <translation id="225680501294068881">Құрылғылар ізделуде…</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> файлын жүктеп алу кезінде бірдеңе дұрыс болмады.</translation>
 <translation id="2268130516524549846">Bluetooth өшірілген</translation>
 <translation id="2268813581635650749">Барлығын шығару</translation>
 <translation id="2269016722240250274">Қолданба сіздің микрофоныңызды қолданып жатыр.</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Автоматты түрде басу функциясын шынымен де өшіргіңіз келе ме?</translation>
 <translation id="4849058404725798627">Нысанды пернетақта фокусымен бөлектеу</translation>
 <translation id="485592688953820832">Ештеңе істемеу (кідірту)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> файлын жүктеп алу үшін желі байланысын тексеріңіз.</translation>
 <translation id="486056901304535126">Жүктеп алу кейінірек қайталанады. Жүктеп алу аяқталғанша, айтылған сөз оны өңдеу үшін Google-ға жіберіледі.</translation>
 <translation id="4868492592575313542">іске қосылды</translation>
 <translation id="4872237917498892622">Alt+іздеу немесе Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Қабылдамау</translation>
 <translation id="6453179446719226835">Тіл өзгерді</translation>
 <translation id="6459472438155181876">Экранды <ph name="DISPLAY_NAME" /> дисплейіне кеңейту</translation>
+<translation id="6477681113376365978">Файлды жүктеп алу мүмкін емес</translation>
 <translation id="6482559668224714696">Толық экран ұлғайтқышы</translation>
 <translation id="6490471652906364588">USB-C құрылғысы (оң жақ ұяшық)</translation>
 <translation id="6491071886865974820">Мерзім аяқталғанға дейін, <ph name="MANAGER" /> сізден <ph name="DEVICE_TYPE" /> құрылғысын жаңартуыңызды талап етеді.</translation>
@@ -817,6 +820,8 @@
 <translation id="6537924328260219877">Сигнал күші: <ph name="SIGNAL_STRENGTH" />, телефон батареясы: <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">Жүктеп алынған <ph name="FILENAME" /> файлы сканерленіп жатыр</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> құрылғысына трансляциялануда</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Жаңадан орнатылды</translation>
 <translation id="6559976592393364813">Әкімшіден сұраңыз.</translation>
 <translation id="6565007273808762236">eSIM байланысы жоқ</translation>
 <translation id="6570831796530454248">{0,plural, =1{Құрылғыны 1 сағатта жаңарту керек}other{Құрылғыны # сағатта жаңарту керек}}</translation>
@@ -848,6 +853,7 @@
 <translation id="6723839937902243910">Күш</translation>
 <translation id="6727969043791803658">Жалғанды, батарея заряды: <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ПАРАМЕТРЛЕРГЕ ӨТУ</translation>
 <translation id="6751052314767925245">Әкімші қосқан.</translation>
 <translation id="6751826523481687655">Жұмыс өнімділігін қадағалау функциясы қосылды</translation>
 <translation id="6752912906630585008"><ph name="REMOVED_DESK" /> үстелі өшіріліп, <ph name="RECEIVE_DESK" /> үстелімен біріктірілді.</translation>
@@ -983,6 +989,7 @@
 <translation id="7662283695561029522">Конфигурациялау үшін түртіңіз</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Жаңа ұялы желі қосу</translation>
+<translation id="7720410380936703141">ҚАЙТАЛАП КӨРУ</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 хабарландыру}other{# хабарландыру}}</translation>
 <translation id="7724603315864178912">Қиып алу</translation>
 <translation id="7745560842763881396">Сөредегі қолданбаларды көрсету</translation>
@@ -1169,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> пайдалану</translation>
 <translation id="899350903320462459">Хабарландыруда ұсынылған әрекетті орындау үшін <ph name="LOGIN_ID" /> арқылы құрылғының құлпын ашыңыз</translation>
+<translation id="9000771174482730261">ЖАДТЫ БАСҚАРУ</translation>
 <translation id="9017320285115481645">Family Link ата-ананың рұқсат кодын енгізіңіз.</translation>
 <translation id="9024331582947483881">толық экран</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> желісіне арналған параметрлерді ашу</translation>
@@ -1214,6 +1222,7 @@
 <translation id="938963181863597773">Күнтізбемде не бар?</translation>
 <translation id="945522503751344254">Пікір жіберу</translation>
 <translation id="951991426597076286">Қабылдамау</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> файлын сақтауға орын жеткіліксіз. Орын босатыңыз.</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> бойынша <ph name="RESULT_COUNT" /> нәтиже көрсетілуде</translation>
 <translation id="98515147261107953">Альбомдық</translation>
 <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> терезесі жабық.</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb
index 708a646..8a27b78 100644
--- a/ash/strings/ash_strings_km.xtb
+++ b/ash/strings/ash_strings_km.xtb
@@ -819,6 +819,7 @@
 <translation id="6528179044667508675">ហាមរំខាន</translation>
 <translation id="65320610082834431">រូប​អារម្មណ៍</translation>
 <translation id="6537924328260219877">កម្លាំងរលកសញ្ញា <ph name="SIGNAL_STRENGTH" />, ថ្មទូរសព្ទ <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">កំពុងស្កេន​ការទាញយក <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">កំពុង​បញ្ជូនទៅ <ph name="RECEIVER_NAME" /></translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 ការដំឡើងថ្មី</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index fe15e2d7a..93f71933 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">ಉಪಶೀರ್ಷಿಕೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="5078796286268621944">ತಪ್ಪಾದ PIN</translation>
 <translation id="5083553833479578423">ಇನ್ನಷ್ಟು ಅಸಿಸ್ಟೆಂಟ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಅನ್‌ಲಾಕ್‌ ಮಾಡಿ.</translation>
+<translation id="5106223312672646208">ವೈಯಕ್ತೀಕರಿಸಿ</translation>
 <translation id="5117590920725113268">ಮುಂದಿನ ತಿಂಗಳು ತೋರಿಸಿ</translation>
 <translation id="5136175204352732067">ವಿವಿಧ ಕೀಬೋರ್ಡ್ ಸಂಪರ್ಕಗೊಂಡಿದೆ</translation>
 <translation id="5147567197700016471">ಅನ್‌ಲಾಕ್ ಆಗಿದೆ</translation>
@@ -819,6 +820,7 @@
 <translation id="6528179044667508675">ಅಡಚಣೆ ಮಾಡಬೇಡಿ</translation>
 <translation id="65320610082834431">ಎಮೋಜಿಗಳು</translation>
 <translation id="6537924328260219877">ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ <ph name="SIGNAL_STRENGTH" />, ಫೋನ್ ಬ್ಯಾಟರಿ <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">ಸ್ಕ್ಯಾನ್ ಆಗುತ್ತಿರುವ <ph name="FILENAME" /> ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> ಗೆ ಬಿತ್ತರಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 ಹೊಸ ಇನ್‌ಸ್ಟಾಲ್</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index 5f4580d..f530531 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">데스크 7</translation>
 <translation id="2224075387478458881">보호된 콘텐츠가 보일 때는 화면 녹화를 할 수 없습니다.</translation>
 <translation id="225680501294068881">기기 검색 중...</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> 파일을 다운로드하는 중에 문제가 발생했습니다.</translation>
 <translation id="2268130516524549846">블루투스를 사용 안 함</translation>
 <translation id="2268813581635650749">모두 로그아웃</translation>
 <translation id="2269016722240250274">다른 애플리케이션에서 마이크를 사용 중입니다.</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">자동 클릭을 사용 중지하시겠습니까?</translation>
 <translation id="4849058404725798627">키보드 포커스로 개체 강조표시</translation>
 <translation id="485592688953820832">작업 없음(일시중지)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> 파일을 다운로드하려면 네트워크 연결 상태를 확인하세요.</translation>
 <translation id="486056901304535126">다운로드가 나중에 시도됩니다. 다운로드가 완료될 때까지는 음성이 Google로 전송되어 처리됩니다.</translation>
 <translation id="4868492592575313542">활성화됨</translation>
 <translation id="4872237917498892622">Alt+검색 또는 Shift 키</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">거부</translation>
 <translation id="6453179446719226835">언어가 변경됨</translation>
 <translation id="6459472438155181876">화면을 <ph name="DISPLAY_NAME" />(으)로 확장</translation>
+<translation id="6477681113376365978">파일을 다운로드할 수 없음</translation>
 <translation id="6482559668224714696">전체 화면 돋보기</translation>
 <translation id="6490471652906364588">USB-C 기기(오른쪽 포트)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" />에서 기한 전에 <ph name="DEVICE_TYPE" /> 기기를 업데이트할 것을 요구합니다.</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">방해 금지 모드</translation>
 <translation id="65320610082834431">그림 이모티콘</translation>
 <translation id="6537924328260219877">신호 강도 <ph name="SIGNAL_STRENGTH" />, 휴대전화 배터리 <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">스캔 중인 <ph name="FILENAME" /> 파일 다운로드</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" />(으)로 전송 중</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+새로 설치됨</translation>
 <translation id="6559976592393364813">관리자에게 요청</translation>
 <translation id="6565007273808762236">eSIM 연결을 사용할 수 없음</translation>
 <translation id="6570831796530454248">{0,plural, =1{1시간 이내에 기기 업데이트}other{#시간 이내에 기기 업데이트}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">전원</translation>
 <translation id="6727969043791803658">연결됨, 배터리 <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">설정으로 이동</translation>
 <translation id="6751052314767925245">관리자가 시행함</translation>
 <translation id="6751826523481687655">성능 추적이 사용 설정되어 있습니다.</translation>
 <translation id="6752912906630585008"><ph name="REMOVED_DESK" /> 데스크가 삭제되고 <ph name="RECEIVE_DESK" /> 데스크와 병합되었습니다.</translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">설정하려면 탭하세요.</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">새 셀룰러 네트워크 추가</translation>
+<translation id="7720410380936703141">다시 시도</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{알림 1개}other{알림 #개}}</translation>
 <translation id="7724603315864178912">잘라내기</translation>
 <translation id="7745560842763881396">실행기에 앱 표시</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> 사용 중</translation>
 <translation id="899350903320462459">알림 작업을 실행하려면 <ph name="LOGIN_ID" />(으)로 기기의 잠금을 해제하세요.</translation>
+<translation id="9000771174482730261">저장용량 관리</translation>
 <translation id="9017320285115481645">Family Link 부모 액세스 코드를 입력하세요.</translation>
 <translation id="9024331582947483881">전체화면</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> 설정 열기</translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">오늘 내 일정이 어떻게 돼?</translation>
 <translation id="945522503751344254">의견 보내기</translation>
 <translation id="951991426597076286">거부</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> 파일을 저장할 공간이 부족합니다. 기기 여유 공간을 확보하세요.</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> 검색결과 <ph name="RESULT_COUNT" />개 표시 중</translation>
 <translation id="98515147261107953">가로 방향</translation>
 <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> 창이 닫혔습니다.</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb
index 0e857bb..f5c22ad4 100644
--- a/ash/strings/ash_strings_lo.xtb
+++ b/ash/strings/ash_strings_lo.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">ໂຕະ 7</translation>
 <translation id="2224075387478458881">ບໍ່ອະນຸຍາດການບັນທຶກໜ້າຈໍເມື່ອສະແດງເນື້ອຫາທີ່ໄດ້ຮັບການປົກປ້ອງຢູ່</translation>
 <translation id="225680501294068881">ກໍາລັງສະແກນຫາອຸ​ປະ​ກອນ...</translation>
+<translation id="2257486738914982088">ມີບາງຢ່າງເກີດຂຶ້ນໃນຂະນະທີ່ກຳລັງດາວໂຫຼດ <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth ປິດໃຊ້ງານແລ້ວ</translation>
 <translation id="2268813581635650749">ອອກຈາກລະບົບທັງໝົດ</translation>
 <translation id="2269016722240250274">ມີແອັບພລິເຄຊັນກຳລັງໃຊ້ໄມໂຄຣໂຟນຂອງທ່ານຢູ່</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">ທ່ານແນ່ໃຈບໍ່ວ່າທ່ານຕ້ອງການປິດການຄລິກອັດຕະໂນມັດ?</translation>
 <translation id="4849058404725798627">ໝາຍວັດຖຸດ້ວຍໂຟກັສແປ້ນພິມ</translation>
 <translation id="485592688953820832">ບໍ່ດຳເນີນການ (ຢຸດຊົ່ວຄາວ)</translation>
+<translation id="4860284199500934869">ກວດສອບການເຊື່ອມຕໍ່ເຄືອຂ່າຍຂອງທ່ານເພື່ອດາວໂຫຼດ <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">ຈະລອງດາວໂຫຼດໃນພາຍຫຼັງ. ການເວົ້າຈະຖືກສົ່ງໄປໃຫ້ Google ເພື່ອການປະມວນຜົນຈົນກວ່າການດາວໂຫຼດຈະສຳເລັດ.</translation>
 <translation id="4868492592575313542">ເປີດນຳໃຊ້ແລ້ວ</translation>
 <translation id="4872237917498892622">Alt+ຊອກຫາ ຫຼື Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">ປະ​ຕິ​ເສດ</translation>
 <translation id="6453179446719226835">ປ່ຽນພາສາແລ້ວ</translation>
 <translation id="6459472438155181876">ກໍາລັງ​ຂະ​ຫຍາຍ​ຫນ້າ​ຈໍ​ເພື່ອ <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">ບໍ່ສາມາດດາວໂຫຼດໄຟລ໌ໄດ້</translation>
 <translation id="6482559668224714696">ແວ່ນຂະຫຍາຍເຕັມຈໍ</translation>
 <translation id="6490471652906364588">ອຸ​ປະ​ກອນ USB-C (ຊ່ອງ​ຂວາ)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> ຕ້ອງການໃຫ້ທ່ານອັບເດດ <ph name="DEVICE_TYPE" /> ຂອງທ່ານກ່ອນເວລາທີ່ກຳນົດໄວ້</translation>
@@ -817,6 +820,8 @@
 <translation id="6537924328260219877">ຄວາມແຮງສັນຍານ <ph name="SIGNAL_STRENGTH" />, ແບັດເຕີຣີໂທລະສັບ <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">ກຳລັງສະແກນການດາວໂຫຼດ <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">ກໍາລັງສົ່ງສັນຍານຫາ <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+ຕິດຕັ້ງໃໝ່</translation>
 <translation id="6559976592393364813">ສອບຖາມຜູ້ເບິ່ງແຍງລະບົບ</translation>
 <translation id="6565007273808762236">ການເຊື່ອມຕໍ່ eSIM ບໍ່ສາມາດໃຊ້ໄດ້</translation>
 <translation id="6570831796530454248">{0,plural, =1{ອັບເດດອຸປະກອນພາຍໃນໜຶ່ງຊົ່ວໂມງ}other{ອັບເດດອຸປະກອນພາຍໃນ # ຊົ່ວໂມງ}}</translation>
@@ -848,6 +853,7 @@
 <translation id="6723839937902243910">ໄຟ</translation>
 <translation id="6727969043791803658">ເຊື່ອມຕໍ່ແລ້ວ, ແບັດເຕີຣີ <ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ໄປຫາການຕັ້ງຄ່າ</translation>
 <translation id="6751052314767925245">ບັງຄັບໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ</translation>
 <translation id="6751826523481687655">ການຕິດຕາມປະສິດທິພາບເປີດຢູ່</translation>
 <translation id="6752912906630585008">ລຶບເດັສ <ph name="REMOVED_DESK" /> ອອກ ແລະ ຮວມກັບເດັສ <ph name="RECEIVE_DESK" /> ແລ້ວ</translation>
@@ -983,6 +989,7 @@
 <translation id="7662283695561029522">ແຕະເພື່ອກຳນົດຄ່າ</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">ເພີ່ມເຄືອຂ່າຍມືຖືໃໝ່</translation>
+<translation id="7720410380936703141">ລອງໃໝ່</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ການແຈ້ງເຕືອນ}other{# ການແຈ້ງເຕືອນ}}</translation>
 <translation id="7724603315864178912">ຕັດ</translation>
 <translation id="7745560842763881396">ສະແດງແອັບໃນຖ້ານ</translation>
@@ -1169,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">ກຳລັງໃຊ້ <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">ປົດລັອກອຸປະກອນເປັນ <ph name="LOGIN_ID" /> ເພື່ອເຮັດການດຳເນີນການແຈ້ງເຕືອນ</translation>
+<translation id="9000771174482730261">ຈັດການບ່ອນເກັບຂໍ້ມູນ</translation>
 <translation id="9017320285115481645">ປ້ອນລະຫັດເຂົ້າເຖິງ Family Link ຂອງພໍ່ແມ່.</translation>
 <translation id="9024331582947483881">ເຕັມຫນ້າ​ຈໍ​</translation>
 <translation id="9047624247355796468">ເປີດການຕັ້ງຄ່າສຳລັບ <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1222,7 @@
 <translation id="938963181863597773">ມີຫຍັງໃນປະຕິທິນຂອງຂ້ອຍ?</translation>
 <translation id="945522503751344254">ສົ່ງ​ຄໍາ​ຄິດ​​ເຫັນ</translation>
 <translation id="951991426597076286">ປະຕິເສດ</translation>
+<translation id="954052413789300507">ພື້ນທີ່ບໍ່ພຽງພໍສຳລັບ <ph name="FILENAME" />. ກະລຸນາສ້າງພື້ນທີ່ຫວ່າງກ່ອນ.</translation>
 <translation id="974545358917229949">ສະແດງຜົນການຊອກຫາ <ph name="RESULT_COUNT" /> ລາຍການສຳລັບ <ph name="QUERY" /></translation>
 <translation id="98515147261107953">ລວງຂວາງ</translation>
 <translation id="990277280839877440">ປິດໜ້າຈໍ <ph name="WINDOW_TITILE" /> ແລ້ວ.</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index d32d5ad2..5004185 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">Įjungti subtitrus</translation>
 <translation id="5078796286268621944">Neteisingas PIN kodas</translation>
 <translation id="5083553833479578423">Atrakinkite daugiau Padėjėjo funkcijų.</translation>
+<translation id="5106223312672646208">Suasmeninimas</translation>
 <translation id="5117590920725113268">Rodyti kitą mėnesį</translation>
 <translation id="5136175204352732067">Prijungta kita klaviatūra</translation>
 <translation id="5147567197700016471">Atrakinta</translation>
@@ -818,6 +819,7 @@
 <translation id="6528179044667508675">Netrukdyti</translation>
 <translation id="65320610082834431">Jaustukai</translation>
 <translation id="6537924328260219877">Signalo stiprumas <ph name="SIGNAL_STRENGTH" />, telefono akumuliatorius <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Atsisiųsti nuskaitomą „<ph name="FILENAME" />“</translation>
 <translation id="6542521951477560771">Perduodama į „<ph name="RECEIVER_NAME" />“</translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 Naujas įdiegimas</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index 43e7892..294c3fa 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">7. darbvieta</translation>
 <translation id="2224075387478458881">Ja ekrānā ir redzams aizsargāts saturs, ekrāna ierakstīšana ir liegta.</translation>
 <translation id="225680501294068881">Notiek ierīču meklēšana...</translation>
+<translation id="2257486738914982088">Lejupielādējot failu “<ph name="FILENAME" />”, radās kļūda.</translation>
 <translation id="2268130516524549846">Bluetooth atspējots</translation>
 <translation id="2268813581635650749">Izrakstīt visus</translation>
 <translation id="2269016722240250274">Jūsu mikrofonu izmanto lietojumprogramma</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Vai tiešām vēlaties izslēgt automātiskos klikšķus?</translation>
 <translation id="4849058404725798627">Izcelt objektu ar tastatūras fokusu</translation>
 <translation id="485592688953820832">Neveikt darbību (pārtraukt)</translation>
+<translation id="4860284199500934869">Pārbaudiet tīkla savienojumu, lai lejupielādētu failu “<ph name="FILENAME" />”.</translation>
 <translation id="486056901304535126">Tiks mēģināts veikt lejupielādi vēlāk. Uzņēmumam Google tiks nosūtīta runa apstrādei, līdz lejupielāde tiks pabeigta.</translation>
 <translation id="4868492592575313542">aktivizēts</translation>
 <translation id="4872237917498892622">Alt+Meklēt vai Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Noraidīt</translation>
 <translation id="6453179446719226835">Valodas maiņa</translation>
 <translation id="6459472438155181876">Paplašina ekrānu uz: <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Nevar lejupielādēt failu</translation>
 <translation id="6482559668224714696">Pilnekrāna lupa</translation>
 <translation id="6490471652906364588">USB-C ierīce (pieslēgvieta pa labi)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> pieprasa, lai jūs atjauninātu ierīci <ph name="DEVICE_TYPE" /> pirms noteiktā termiņa</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Netraucēt</translation>
 <translation id="65320610082834431">Emocijzīmes</translation>
 <translation id="6537924328260219877">Signāla stiprums: <ph name="SIGNAL_STRENGTH" />, tālruņa akumulatora statuss: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Notiek lejupielādes faila “<ph name="FILENAME" />” pārbaude</translation>
 <translation id="6542521951477560771">Notiek apraide uz ierīci <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Jauna instalācija</translation>
 <translation id="6559976592393364813">Jautājiet administratoram</translation>
 <translation id="6565007273808762236">eSIM savienojums nav pieejams</translation>
 <translation id="6570831796530454248">{0,plural, =1{Ierīce jāatjaunina stundas laikā}zero{Ierīce jāatjaunina # stundu laikā}one{Ierīce jāatjaunina # stundas laikā}other{Ierīce jāatjaunina # stundu laikā}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Strāvas padeve</translation>
 <translation id="6727969043791803658">Savienojums izveidots, akumulatora uzlādes līmenis: <ph name="BATTERY_PERCENTAGE" /></translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">PĀRIET UZ IESTATĪJUMIEM</translation>
 <translation id="6751052314767925245">Piemēroja jūsu administrators</translation>
 <translation id="6751826523481687655">Veiktspējas izsekošana ir ieslēgta.</translation>
 <translation id="6752912906630585008">Darbvirsma <ph name="REMOVED_DESK" /> ir noņemta un apvienota ar darbvirsmu <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Pieskarieties, lai konfigurētu.</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Pievienot jaunu mobilo tīklu</translation>
+<translation id="7720410380936703141">MĒĢINĀT VĒLREIZ</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 paziņojums}zero{# paziņojumu}one{# paziņojums}other{# paziņojumi}}</translation>
 <translation id="7724603315864178912">Izgriezt</translation>
 <translation id="7745560842763881396">Rādīt lietotņu joslu</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Izmantojot <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Atbloķēt ierīci kā <ph name="LOGIN_ID" />, lai veiktu paziņojuma darbību</translation>
+<translation id="9000771174482730261">PĀRVALDĪT KRĀTUVI</translation>
 <translation id="9017320285115481645">Ievadiet Family Link vecāku piekļuves kodu.</translation>
 <translation id="9024331582947483881">pilnekrāna režīms</translation>
 <translation id="9047624247355796468">Atvērt tīkla <ph name="NETWORK_NAME" /> iestatījumus</translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Kas ir atrodams manā kalendārā?</translation>
 <translation id="945522503751344254">Sūtīt atsauksmes</translation>
 <translation id="951991426597076286">Noraidīt</translation>
+<translation id="954052413789300507">Nepietiek vietas krātuvē, lai lejupielādētu “<ph name="FILENAME" />”. Atbrīvojiet vietu krātuvē.</translation>
 <translation id="974545358917229949">Tiek rādīti <ph name="RESULT_COUNT" /> rezultāti vaicājumam “<ph name="QUERY" />”</translation>
 <translation id="98515147261107953">Ainava</translation>
 <translation id="990277280839877440">Logs “<ph name="WINDOW_TITILE" />” ir aizvērts.</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index 93c8b1c..87e1360 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Работна површина 7</translation>
 <translation id="2224075387478458881">Снимањето на екранот не е дозволено кога се видливи заштитени содржини</translation>
 <translation id="225680501294068881">Скенирање за уреди...</translation>
+<translation id="2257486738914982088">Нешто тргна наопаку при преземањето на <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth е оневозможен</translation>
 <translation id="2268813581635650749">Одјави се од сите</translation>
 <translation id="2269016722240250274">Една апликација го користи микрофонот</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">Дали сигурно сакате да ги исклучите автоматските кликови?</translation>
 <translation id="4849058404725798627">Нагласи го предметот со фокус на тастатурата</translation>
 <translation id="485592688953820832">Нема дејство (пауза)</translation>
+<translation id="4860284199500934869">Проверете ја мрежната врска за да се преземе <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Подоцна ќе се изврши обид за преземање. Говорот ќе се испрати во Google за обработка додека да заврши преземањето.</translation>
 <translation id="4868492592575313542">активиранo</translation>
 <translation id="4872237917498892622">Alt+Search или Shift</translation>
@@ -805,6 +807,7 @@
 <translation id="6452181791372256707">Отфрли</translation>
 <translation id="6453179446719226835">Јазикот е променет</translation>
 <translation id="6459472438155181876">Проширување екран на <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Датотеката не може да се преземе</translation>
 <translation id="6482559668224714696">Лупа за цел екран</translation>
 <translation id="6490471652906364588">USB-Ц уред (десна порта)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> бара да го ажурирате вашиот <ph name="DEVICE_TYPE" /> пред крајниот рок</translation>
@@ -818,6 +821,8 @@
 <translation id="6537924328260219877">Јачина на сигналот: <ph name="SIGNAL_STRENGTH" />, батерија на телефонот: <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999"><ph name="FILENAME" /> се скенира за преземање</translation>
 <translation id="6542521951477560771">Емитување на <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Нова инсталација</translation>
 <translation id="6559976592393364813">Прашајте го администраторот</translation>
 <translation id="6565007273808762236">Поврзувањето со eSIM е недостапно</translation>
 <translation id="6570831796530454248">{0,plural, =1{Ажурирајте го уредот во рок од еден час}one{Ажурирајте го уредот во рок од # час}other{Ажурирајте го уредот во рок од # часа}}</translation>
@@ -849,6 +854,7 @@
 <translation id="6723839937902243910">Енергија</translation>
 <translation id="6727969043791803658">Поврзан, <ph name="BATTERY_PERCENTAGE" /> % батерија</translation>
 <translation id="6732800389263199929">+ <ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ОДИ ВО ПОСТАВКИ</translation>
 <translation id="6751052314767925245">Наметнато од администраторот</translation>
 <translation id="6751826523481687655">Следењето на изведбата е вклучено</translation>
 <translation id="6752912906630585008">Работниот простор <ph name="REMOVED_DESK" /> е отстранет и споен со работниот простор <ph name="RECEIVE_DESK" /></translation>
@@ -984,6 +990,7 @@
 <translation id="7662283695561029522">Допрете за конфигурирање</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Додајте нова мобилна мрежа</translation>
+<translation id="7720410380936703141">ОБИДЕТЕ СЕ ПОВТОРНО</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 известување}one{# известување}other{# известувања}}</translation>
 <translation id="7724603315864178912">Исечи</translation>
 <translation id="7745560842763881396">Прикажи ги апликациите од полицата</translation>
@@ -1170,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Се користи <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Отклучете го уредот како <ph name="LOGIN_ID" /> за да се изврши дејството од известувањето</translation>
+<translation id="9000771174482730261">УПРАВУВАЈТЕ СО КАПАЦИТЕТОТ</translation>
 <translation id="9017320285115481645">Внесете го кодот за пристап на родители на Family Link.</translation>
 <translation id="9024331582947483881">цел екран</translation>
 <translation id="9047624247355796468">Отвори поставки за <ph name="NETWORK_NAME" /></translation>
@@ -1215,6 +1223,7 @@
 <translation id="938963181863597773">Што има во мојот календар?</translation>
 <translation id="945522503751344254">Испратете повратни информации</translation>
 <translation id="951991426597076286">Одбиј</translation>
+<translation id="954052413789300507">Нема доволно простор за <ph name="FILENAME" />. Ослободете простор.</translation>
 <translation id="974545358917229949">Се прикажуваат <ph name="RESULT_COUNT" /> резултати за <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Пејзаж</translation>
 <translation id="990277280839877440">Прозорецот <ph name="WINDOW_TITILE" /> е затворен.</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index 76f04a4..bd9b280 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">सबटायटल सुरू करा</translation>
 <translation id="5078796286268621944">चुकीचा पिन</translation>
 <translation id="5083553833479578423">असिस्टंटची आणखी वैशिष्ट्ये अनलॉक करा.</translation>
+<translation id="5106223312672646208">पर्सनलाइझ करा</translation>
 <translation id="5117590920725113268">पुढील महिना दर्शवा</translation>
 <translation id="5136175204352732067">वेगळा कीबोर्ड कनेक्ट केला आहे</translation>
 <translation id="5147567197700016471">अनलॉक केली</translation>
@@ -818,6 +819,7 @@
 <translation id="6528179044667508675">व्यत्यय आणू नका</translation>
 <translation id="65320610082834431">इमोजी</translation>
 <translation id="6537924328260219877">सिग्नल क्षमता <ph name="SIGNAL_STRENGTH" />, फोन बॅटरी <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999"><ph name="FILENAME" /> डाउनलोड स्कॅन करत आहे</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> वर कास्ट करत आहे</translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 नवीन इंस्टॉल केले आहे</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 26b376f..a52e58d 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Meja 7</translation>
 <translation id="2224075387478458881">Rakaman skrin tidak dibenarkan apabila kandungan yang dilindungi kelihatan</translation>
 <translation id="225680501294068881">Mengimbas untuk peranti...</translation>
+<translation id="2257486738914982088">Kesilapan telah berlaku semasa memuat turun <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth dilumpuhkan</translation>
 <translation id="2268813581635650749">Log keluar semua</translation>
 <translation id="2269016722240250274">Satu aplikasi sedang menggunakan mikrofon anda</translation>
@@ -588,6 +589,7 @@
 <translation id="4831034276697007977">Adakah anda pasti mahu mematikan klik automatik?</translation>
 <translation id="4849058404725798627">Serlahkan objek dengan fokus papan kekunci</translation>
 <translation id="485592688953820832">Tiada tindakan (jeda)</translation>
+<translation id="4860284199500934869">Semak sambungan rangkaian anda untuk memuat turun <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Muat turun akan cuba dilakukan kemudian. Pertuturan akan dihantar kepada Google untuk diproses sehingga muat turun selesai.</translation>
 <translation id="4868492592575313542">diaktifkan</translation>
 <translation id="4872237917498892622">Alt+Search atau Shift</translation>
@@ -805,6 +807,7 @@
 <translation id="6452181791372256707">Tolak</translation>
 <translation id="6453179446719226835">Bahasa telah ditukar</translation>
 <translation id="6459472438155181876">Melanjutkan skrin ke <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Tidak dapat memuat turun fail</translation>
 <translation id="6482559668224714696">Penggadang skrin penuh</translation>
 <translation id="6490471652906364588">Peranti USB-C (port kanan)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> menghendaki anda mengemas kini <ph name="DEVICE_TYPE" /> anda sebelum tarikh akhir</translation>
@@ -816,7 +819,10 @@
 <translation id="6528179044667508675">Jangan ganggu</translation>
 <translation id="65320610082834431">Emoji</translation>
 <translation id="6537924328260219877">Kekuatan Isyarat <ph name="SIGNAL_STRENGTH" />, Bateri Telefon <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Pengimbasan muat turun <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Menghantar ke <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Pemasangan baharu</translation>
 <translation id="6559976592393364813">Tanya Pentadbir</translation>
 <translation id="6565007273808762236">Sambungan eSIM tidak tersedia</translation>
 <translation id="6570831796530454248">{0,plural, =1{Kemas kini peranti dalam masa sejam}other{Kemas kini peranti dalam masa # jam}}</translation>
@@ -848,6 +854,7 @@
 <translation id="6723839937902243910">Kuasa</translation>
 <translation id="6727969043791803658">Disambungkan, bateri <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">PERGI KE TETAPAN</translation>
 <translation id="6751052314767925245">Dikuatkuasakan oleh pentadbir anda</translation>
 <translation id="6751826523481687655">Pengesanan prestasi dihidupkan</translation>
 <translation id="6752912906630585008">Meja <ph name="REMOVED_DESK" /> dialih keluar dan digabungkan dengan Meja <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +990,7 @@
 <translation id="7662283695561029522">Ketik untuk membuat konfigurasi</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Tambah rangkaian selular baharu</translation>
+<translation id="7720410380936703141">CUBA LAGI</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 pemberitahuan}other{# pemberitahuan}}</translation>
 <translation id="7724603315864178912">Potong</translation>
 <translation id="7745560842763881396">Tunjukkan apl dalam rak</translation>
@@ -1169,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Menggunakan <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Buka kunci peranti sebagai <ph name="LOGIN_ID" /> untuk melaksanakan tindakan pemberitahuan</translation>
+<translation id="9000771174482730261">URUS STORAN</translation>
 <translation id="9017320285115481645">Masukkan kod akses ibu bapa Family Link.</translation>
 <translation id="9024331582947483881">skrin penuh</translation>
 <translation id="9047624247355796468">Buka tetapan untuk <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1223,7 @@
 <translation id="938963181863597773">Apakah acara dalam kalendar saya?</translation>
 <translation id="945522503751344254">Hantar maklum balas</translation>
 <translation id="951991426597076286">Tolak</translation>
+<translation id="954052413789300507">Ruang tidak mencukupi untuk <ph name="FILENAME" />. Kosongkan ruang.</translation>
 <translation id="974545358917229949">Memaparkan <ph name="RESULT_COUNT" /> hasil carian untuk <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Lanskap</translation>
 <translation id="990277280839877440">Tetingkap <ph name="WINDOW_TITILE" /> ditutup.</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index ad6d05d5..88059a0e 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">မျက်နှာပြင်နေရာ ၇</translation>
 <translation id="2224075387478458881">ကာကွယ်ထားသော အကြောင်းအရာများကို မြင်နိုင်ချိန်တွင် ဖန်သားပြင်ရိုက်ကူးခြင်းကို ခွင့်မပြုပါ</translation>
 <translation id="225680501294068881">စက်ပစ္စည်းများ ရှာဖွေနေ...</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> ဒေါင်းလုဒ်လုပ်နေစဉ် တစ်ခုခု မှားသွားသည်</translation>
 <translation id="2268130516524549846">ဘလူးတုရှ် ပိတ်ထား</translation>
 <translation id="2268813581635650749">အားလုံးမှ ထွက်ရန်</translation>
 <translation id="2269016722240250274">အပလီကေးရှင်းတစ်ခုက သင့်မိုက်ခရိုဖုန်းကို အသုံးပြုနေသည်</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">အလိုအလျောက်နှိပ်ခြင်းကို ပိတ်လိုသည်မှာ သေချာပါသလား။</translation>
 <translation id="4849058404725798627">အရာဝတ္ထုကို ကီးဘုတ်ခလုတ်ဖြင့် မြင်သာထင်သာဖြစ်အောင်ပြုလုပ်ရန်</translation>
 <translation id="485592688953820832">မည်သည့်အရာမျှ လုပ်ဆောင်ရန်မလို (ခေတ္တရပ်ရန်)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> ဒေါင်းလုဒ်လုပ်ရန် သင်၏ကွန်ရက်ချိတ်ဆက်မှုကို စစ်ဆေးပါ</translation>
 <translation id="486056901304535126">နောက်မှ ဒေါင်းလုဒ်လုပ်ပါမည်။ စကားသံကို စီမံလုပ်ဆောင်ရန် ဒေါင်းလုဒ်လုပ်မှု မပြီးမချင်း Google သို့ ပို့ပါမည်။</translation>
 <translation id="4868492592575313542">ဖွင့်ထားသည်</translation>
 <translation id="4872237917498892622">Alt+Search သို့မဟုတ် Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">ပယ်ချရန်</translation>
 <translation id="6453179446719226835">ဘာသာစကား ပြောင်းထားပါသည်</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME" />သို့ မျက်နှာပြင်ကို တိုးချဲ့နေ</translation>
+<translation id="6477681113376365978">ဖိုင်ကို ဒေါင်းလုဒ်လုပ်၍မရပါ</translation>
 <translation id="6482559668224714696">မျက်နှာပြင်အပြည့် မှန်ဘီလူး</translation>
 <translation id="6490471652906364588">USB-C ကိရိယာ (ညာ ပို့တ်)</translation>
 <translation id="6491071886865974820">နောက်ဆုံးသတ်မှတ်ချိန်မတိုင်မီ သင့် <ph name="DEVICE_TYPE" /> ကိုအပ်ဒိတ်လုပ်ရန် <ph name="MANAGER" /> ကသတ်မှတ်ထားသည်</translation>
@@ -817,6 +820,8 @@
 <translation id="6537924328260219877">လိုင်းဆွဲအား <ph name="SIGNAL_STRENGTH" />၊ ဖုန်းဘက်ထရီ <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999"><ph name="FILENAME" /> ဒေါင်းလုဒ်ဖိုင်ကို စစ်ဆေးနေသည်</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> သို့ ကာစ် လုပ်နေသည်</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+အသစ်ထည့်သွင်းမှု</translation>
 <translation id="6559976592393364813">စီမံခန့်ခွဲသူကို မေးရန်</translation>
 <translation id="6565007273808762236">eSIM ချိတ်ဆက်မှု မရနိုင်ပါ</translation>
 <translation id="6570831796530454248">{0,plural, =1{စက်ကို တစ်နာရီအတွင်း အပ်ဒိတ်လုပ်ပါ}other{စက်ကို # နာရီအတွင်း အပ်ဒိတ်လုပ်ပါ}}</translation>
@@ -848,6 +853,7 @@
 <translation id="6723839937902243910">ပါဝါ</translation>
 <translation id="6727969043791803658">ချိတ်ဆက်ပြီးပြီ၊ ဘက်ထရီ <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ဆက်တင်များသို့ သွားရန်</translation>
 <translation id="6751052314767925245">သင့်စီမံခန့်ခွဲသူက ထည့်သွင်းအသုံးပြုထားသည်</translation>
 <translation id="6751826523481687655">စွမ်းဆောင်ရည် မှတ်တမ်းတင်ခြင်းကို ဖွင့်ထားသည်</translation>
 <translation id="6752912906630585008">'မြင်ကွင်း <ph name="REMOVED_DESK" />' ကိုဖယ်ရှားပြီး 'မြင်ကွင်း <ph name="RECEIVE_DESK" />' နှင့် ပေါင်းစည်းလိုက်သည်</translation>
@@ -983,6 +989,7 @@
 <translation id="7662283695561029522">စီစဉ်သတ်မှတ်ရန် တို့ပါ</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">ဆယ်လူလာကွန်ရက်အသစ် ထည့်ရန်</translation>
+<translation id="7720410380936703141">ထပ်စမ်းကြည့်ရန်</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{အကြောင်းကြားချက် ၁ ခု}other{အကြောင်းကြားချက် # ခု}}</translation>
 <translation id="7724603315864178912">ဖြတ်တောက်</translation>
 <translation id="7745560842763881396">အက်ပ်များကို စင်တွင်ပြရန်</translation>
@@ -1169,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> ကို အသုံးပြုနေသည်</translation>
 <translation id="899350903320462459">အကြောင်းကြားခြင်း လုပ်ဆောင်ရန်အတွက် <ph name="LOGIN_ID" /> အဖြစ် စက်ပစ္စည်းကို လော့ခ်ဖွင့်ပါ</translation>
+<translation id="9000771174482730261">သိုလှောင်ခန်း စီမံခန့်ခွဲရန်</translation>
 <translation id="9017320285115481645">Family Link မိဘသုံးကုဒ် ထည့်ပါ။</translation>
 <translation id="9024331582947483881">မျက်နှာပြင်အပြည့်</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> အတွက် ဆက်တင်များကို ဖွင့်ရန်</translation>
@@ -1214,6 +1222,7 @@
 <translation id="938963181863597773">ကျွန်ုပ်၏ ပြက္ခဒိန်မှာ ဘာတွေရှိလဲ။</translation>
 <translation id="945522503751344254">အကြံပြုချက် ပေးပို့မည်</translation>
 <translation id="951991426597076286">ပယ်ချရန်</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> အတွက် နေရာမလောက်ပါ။ နေရာလွတ်ပြုလုပ်ပါ။</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> အတွက် ရလဒ် <ph name="RESULT_COUNT" /> ခုကို ပြနေသည်</translation>
 <translation id="98515147261107953">ဘေးတိုက်</translation>
 <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> ဝင်းဒိုးကို ပိတ်ထားသည်။</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb
index cfd3506..1a80cc5e 100644
--- a/ash/strings/ash_strings_ne.xtb
+++ b/ash/strings/ash_strings_ne.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">डेस्क ७</translation>
 <translation id="2224075387478458881">स्क्रिनमा संरक्षित सामग्री देखिएका बेला स्क्रिन रेकर्ड गर्न मिल्दैन</translation>
 <translation id="225680501294068881">उपकरणहरूको लागि स्क्यान गर्दै ...</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> डाउनलोड गर्ने क्रममा केही चिज गडबड भयो</translation>
 <translation id="2268130516524549846">ब्लुतुथ असक्षम गरियो</translation>
 <translation id="2268813581635650749">सबै साइन आउट गर्नु…</translation>
 <translation id="2269016722240250274">एउटा एपले तपाईंको डिभाइसको माइक्रोफोन प्रयोग गरिरहेको छ</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">तपाईंले स्वचालित क्लिक सुविधा निष्क्रिय पार्न चाहनुभएकै हो?</translation>
 <translation id="4849058404725798627">किबोर्डको फोकसमार्फत वस्तुलाई हाइलाइट</translation>
 <translation id="485592688953820832">कुनै कारबाही नगर्नुहोस् (पज गर्नुहोस्)</translation>
+<translation id="4860284199500934869">तपाईं <ph name="FILENAME" /> डाउनलोड गर्न चाहनुहुन्छ भने आफ्नो डिभाइसको नेटवर्क कनेक्सन जाँच्नुहोस्</translation>
 <translation id="486056901304535126">पछि डाउनलोड गर्ने प्रयास गरिने छ। डाउनलोड गर्ने कार्य पूरा नहुँदासम्म बोलिएको कुरा प्रोसेस गर्नका निम्ति Google मा पठाइने छ।</translation>
 <translation id="4868492592575313542">सक्रिय गरियो</translation>
 <translation id="4872237917498892622">Alt+खोज्नुहोस् वा Shift</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">क्लोज्ड क्याप्सन अन गर्नुहोस्</translation>
 <translation id="5078796286268621944">गलत PIN</translation>
 <translation id="5083553833479578423">सहायकका थप सुविधाहरू अनलक गर्नुहोस्।</translation>
+<translation id="5106223312672646208">पर्सनलाइज गर्नुहोस्</translation>
 <translation id="5117590920725113268">अर्को महिना देखाउनुहोस्</translation>
 <translation id="5136175204352732067">भिन्न किबोर्ड जडान गरियो</translation>
 <translation id="5147567197700016471">अनलक गरिएको छ</translation>
@@ -804,6 +807,7 @@
 <translation id="6452181791372256707">अस्वीकार</translation>
 <translation id="6453179446719226835">भाषा परिवर्तन गरिएको छ</translation>
 <translation id="6459472438155181876">स्क्रिनलाई <ph name="DISPLAY_NAME" /> मा विस्तार गर्दै</translation>
+<translation id="6477681113376365978">यो फाइल डाउनलोड गर्न सकिएन</translation>
 <translation id="6482559668224714696">फुल स्क्रिन म्याग्निफायर</translation>
 <translation id="6490471652906364588">USB-C यन्त्र (दायाँ पोर्ट)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> का अनुसार तपाईंले म्याद सकिनुअघि नै आफ्नो <ph name="DEVICE_TYPE" /> अपडेट गर्नु पर्ने हुन्छ</translation>
@@ -815,7 +819,10 @@
 <translation id="6528179044667508675">बाधा नगर्नुहोस्</translation>
 <translation id="65320610082834431">इमोजीहरू</translation>
 <translation id="6537924328260219877">सिग्नलको क्षमता <ph name="SIGNAL_STRENGTH" />, <ph name="BATTERY_STATUS" /> फोनको ब्याट्री</translation>
+<translation id="6539852571005954999"><ph name="FILENAME" /> स्क्यान गरेर डाउनलोड गर्नुहोस्</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> मा Cast गर्दै</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+भर्खरै इन्स्टल गरिएको छ</translation>
 <translation id="6559976592393364813">प्रशासकलाई सोध्नुहोस्</translation>
 <translation id="6565007273808762236">eSIM कनेक्सन उपलब्ध छैन</translation>
 <translation id="6570831796530454248">{0,plural, =1{एक घण्टाभित्र डिभाइस रिस्टार्ट गर्नुहोस्}other{# घण्टाभित्र डिभाइस रिस्टार्ट गर्नुहोस्}}</translation>
@@ -847,6 +854,7 @@
 <translation id="6723839937902243910">पावर</translation>
 <translation id="6727969043791803658">जोडियो, ब्याट्री <ph name="BATTERY_PERCENTAGE" />% छ</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">सेटिङमा जानुहोस्</translation>
 <translation id="6751052314767925245">तपाईंका प्रशासकले लागू गर्नुभएको</translation>
 <translation id="6751826523481687655">प्रदर्शन ट्रेस गरिँदै छ</translation>
 <translation id="6752912906630585008">डेस्क <ph name="REMOVED_DESK" /> हटाइयो र डेस्क <ph name="RECEIVE_DESK" /> मा गाभियो</translation>
@@ -982,6 +990,7 @@
 <translation id="7662283695561029522">कन्फिगर गर्न ट्याप गर्नुहोस्</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">नयाँ मोबाइल नेटवर्क हाल्नुहोस्</translation>
+<translation id="7720410380936703141">फेरि प्रयास गर्नुहोस्</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{१ सूचना}other{# सूचनाहरू}}</translation>
 <translation id="7724603315864178912">काट्नुहोस्</translation>
 <translation id="7745560842763881396">सेल्फमा एपहरू देखाउनुहोस्</translation>
@@ -1168,6 +1177,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> प्रयोग गरिँदै</translation>
 <translation id="899350903320462459">सूचनासम्बन्धी कारबाही गर्न यन्त्रलाई <ph name="LOGIN_ID" /> का रूपमा अनलक गर्नुहोस्</translation>
+<translation id="9000771174482730261">भण्डारण व्यवस्थापन गर्नुहोस्</translation>
 <translation id="9017320285115481645">Family Link को अभिभावकको पहुँचसम्बन्धी कोड प्रविष्टि गर्नुहोस्।</translation>
 <translation id="9024331582947483881">फुल स्क्रिन</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> को सेटिङ खोल्नुहोस्</translation>
@@ -1213,6 +1223,7 @@
 <translation id="938963181863597773">मेरो क्यालेन्डरमा के छ?</translation>
 <translation id="945522503751344254">पृष्ठपोषण पठाउनुहोस्</translation>
 <translation id="951991426597076286">अस्वीकार गर्नुहोस्</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> डाउनलोड गर्नका निम्ति पर्याप्त खाली ठाउँ छैन। ठाउँ खाली गर्नुहोस्।</translation>
 <translation id="974545358917229949"><ph name="RESULT_COUNT" /> सम्बन्धी <ph name="QUERY" /> परिणामहरू देखाउँदै</translation>
 <translation id="98515147261107953">ल्यान्डस्केप</translation>
 <translation id="990277280839877440">विन्डो <ph name="WINDOW_TITILE" /> बन्द गरियो।</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index f7261e2..00dbbb7 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">Start teksting</translation>
 <translation id="5078796286268621944">Feil personlig kode</translation>
 <translation id="5083553833479578423">Lås opp flere Assistent-funksjoner.</translation>
+<translation id="5106223312672646208">Tilpass</translation>
 <translation id="5117590920725113268">Se neste måned</translation>
 <translation id="5136175204352732067">Et annet tastatur er koblet til</translation>
 <translation id="5147567197700016471">Ulåst</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index 34af54c..1a13967 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">ଡେସ୍କ 7</translation>
 <translation id="2224075387478458881">ସୁରକ୍ଷିତ ବିଷୟବସ୍ତୁ ଦୃଶ୍ୟମାନ ହେଲେ ସ୍କ୍ରିନ୍ ରେକର୍ଡିଂକୁ ଅନୁମତି ଦିଆଯାଏ ନାହିଁ</translation>
 <translation id="225680501294068881">ଡିଭାଇସ୍‌ଗୁଡ଼ିକ ପାଇଁ ସ୍କାନ୍ ହେଉଛି…</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" />କୁ ଡାଉନଲୋଡ କରିବା ସମୟରେ କିଛି ତ୍ରୁଟି ହୋଇଛି</translation>
 <translation id="2268130516524549846">ବ୍ଲୁ-ଟୁଥ୍ ଅକ୍ଷମ କରାଗଲା</translation>
 <translation id="2268813581635650749">ସବୁ ସାଇନ୍ ଆଉଟ୍ କର</translation>
 <translation id="2269016722240250274">ଏକ ଆପ୍ଲିକେସନ୍ ଆପଣଙ୍କ ମାଇକ୍ରୋଫୋନକୁ ବ୍ୟବହାର କରୁଛି</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">ଆପଣ ସ୍ୱଚାଳିତ କ୍ଲିକ୍‌ଗୁଡ଼ିକୁ ବନ୍ଦ କରିବାକୁ ଚାହୁଁଥିବା ସୁନିଶ୍ଚିତ କି?</translation>
 <translation id="4849058404725798627">କୀ'ବୋର୍ଡ ଫୋକସ୍ ମାଧ୍ୟମରେ ବସ୍ତୁକୁ ହାଇଲାଇଟ୍ କରନ୍ତୁ</translation>
 <translation id="485592688953820832">କୌଣସି ପଦକ୍ଷେପ ନାହିଁ (ବିରତ କରନ୍ତୁ)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" />କୁ ଡାଉନଲୋଡ କରିବା ପାଇଁ ଆପଣଙ୍କ ନେଟୱାର୍କ ସଂଯୋଗ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="486056901304535126">ଡାଉନଲୋଡ କରିବା ପାଇଁ ପରେ ଚେଷ୍ଟା କରାଯିବ। ଡାଉନଲୋଡ ସମ୍ପୂର୍ଣ୍ଣ ନହେବା ପର୍ଯ୍ୟନ୍ତ ପ୍ରକ୍ରିୟାକରଣ ପାଇଁ Googleକୁ ସ୍ପିଚ ପଠାଯିବ।</translation>
 <translation id="4868492592575313542">ସକ୍ରିୟ କରାଯାଇଛି</translation>
 <translation id="4872237917498892622">Alt+Search କିମ୍ବା Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ</translation>
 <translation id="6453179446719226835">ଭାଷା ପରିବର୍ତ୍ତନ କରାଯାଇଛି</translation>
 <translation id="6459472438155181876">ସ୍କ୍ରିନ୍ <ph name="DISPLAY_NAME" />କୁ ପ୍ରସାରିତ ହୋଇଛି</translation>
+<translation id="6477681113376365978">ଫାଇଲକୁ ଡାଉନଲୋଡ କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="6482559668224714696">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍‌ ମ୍ୟାଗ୍ନିଫାୟର୍</translation>
 <translation id="6490471652906364588">USB-C ଡିଭାଇସ୍‍ (ଡାହାଣ ପୋର୍ଟ)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> ପାଇଁ ଆପଣ ସମୟସୀମା ପୂର୍ବରୁ ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />କୁ ଅପଡେଟ କରିବା ଆବଶ୍ୟକ</translation>
@@ -815,7 +818,9 @@
 <translation id="6528179044667508675">ବିରକ୍ତ କରନାହିଁ</translation>
 <translation id="65320610082834431">ଇମୋଜିଗୁଡ଼ିକ</translation>
 <translation id="6537924328260219877">ସିଗ୍‍ନାଲ୍‍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />, ଫୋନ୍ ବ୍ୟାଟେରୀ <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">ଡାଉନଲୋଡ ପାଇଁ <ph name="FILENAME" /> ସ୍କାନ କରାଯାଉଛି</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" />ରେ କାଷ୍ଟ କରାଯାଉଛି</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />କୁ ନୂଆ ଇନଷ୍ଟଲ କରାଯାଇଛି</translation>
 <translation id="6559976592393364813">ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କୁ ପଚାରନ୍ତୁ</translation>
 <translation id="6565007273808762236">eSIM ସଂଯୋଗ ଉପଲବ୍ଧ ନାହିଁ</translation>
 <translation id="6570831796530454248">{0,plural, =1{ଏକ ଘଣ୍ଟା ଭିତରେ ଡିଭାଇସକୁ ଅପଡେଟ କରନ୍ତୁ}other{# ଘଣ୍ଟା ଭିତରେ ଡିଭାଇସକୁ ଅପଡେଟ କରନ୍ତୁ}}</translation>
@@ -847,6 +852,7 @@
 <translation id="6723839937902243910">ପାୱର୍</translation>
 <translation id="6727969043791803658">ସଂଯୋଗ କରାଯାଇଛି, <ph name="BATTERY_PERCENTAGE" />% ବ୍ୟାଟେରୀ</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ସେଟିଂସକୁ ଯାଆନ୍ତୁ</translation>
 <translation id="6751052314767925245">ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି</translation>
 <translation id="6751826523481687655">କାର୍ଯ୍ୟ-ସମ୍ପାଦନ ଟ୍ରେସିଂ ଚାଲୁ କରାଯାଇଛି</translation>
 <translation id="6752912906630585008"><ph name="REMOVED_DESK" /> ଡେସ୍କ କାଢ଼ି ଦିଆଯାଇଛି ଏବଂ <ph name="RECEIVE_DESK" /> ଡେସ୍କ ସହ ମିଶାଇ ଦିଆଯାଇଛି</translation>
@@ -982,6 +988,7 @@
 <translation id="7662283695561029522">କନ୍‌ଫିଗର୍‌ କରିବାକୁ ଟାପ୍‍ କରନ୍ତୁ</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">ନୂଆ ସେଲ୍ୟୁଲାର୍ ନେଟୱାର୍କ ଯୋଗ କରନ୍ତୁ</translation>
+<translation id="7720410380936703141">ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1ଟି ବିଜ୍ଞପ୍ତି}other{#ଟି ବିଜ୍ଞପ୍ତି}}</translation>
 <translation id="7724603315864178912">Cut</translation>
 <translation id="7745560842763881396">ସେଲ୍ଫରେ ଥିବା ଆପଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ</translation>
@@ -1168,6 +1175,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> ବ୍ୟବହାର କରି</translation>
 <translation id="899350903320462459">ବିଜ୍ଞପ୍ତି କାର୍ଯ୍ୟ ସମ୍ପାଦନ କରିବାକୁ ଡିଭାଇସ୍‌କୁ <ph name="LOGIN_ID" /> ଭାବେ ଅନ୍‌ଲକ୍‌ କରନ୍ତୁ</translation>
+<translation id="9000771174482730261">ଷ୍ଟୋରେଜ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="9017320285115481645">Family Linkର ପ୍ୟାରେଣ୍ଟ ଆକ୍ସେସ୍ କୋଡ୍ ଲେଖନ୍ତୁ।</translation>
 <translation id="9024331582947483881">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> ପାଇଁ ସେଟିଂସ୍ ଖୋଲନ୍ତୁ</translation>
@@ -1213,6 +1221,7 @@
 <translation id="938963181863597773">ମୋ କ୍ୟାଲେଣ୍ଡରରେ କ’ଣ ଅଛି?</translation>
 <translation id="945522503751344254">ମତାମତ ପଠାନ୍ତୁ</translation>
 <translation id="951991426597076286">ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> ପାଇଁ ଯଥେଷ୍ଟ ସ୍ପେସ ନାହିଁ। ସ୍ପେସ ଖାଲି କରନ୍ତୁ।</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> ପାଇଁ <ph name="RESULT_COUNT" />ଟି ଫଳାଫଳ ଡିସ୍‌ପ୍ଲେ ହେଉଛି</translation>
 <translation id="98515147261107953">ଲ୍ୟାଣ୍ଡସ୍କେପ୍</translation>
 <translation id="990277280839877440">Window <ph name="WINDOW_TITILE" /> ବନ୍ଦ କରାଯାଇଛି।</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb
index b424424..644971b 100644
--- a/ash/strings/ash_strings_pa.xtb
+++ b/ash/strings/ash_strings_pa.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">ਡੈਸਕ 7</translation>
 <translation id="2224075387478458881">ਸੁਰੱਖਿਅਤ ਸਮੱਗਰੀ ਦੇ ਦਿਸਣਯੋਗ ਹੋਣ 'ਤੇ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ</translation>
 <translation id="225680501294068881">ਡਿਵਾਈਸਾਂ ਲਈ ਸਕੈਨ ਕਰ ਰਿਹਾ ਹੈ...</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> ਡਾਊਨਲੋਡ ਕਰਨ ਵੇਲੇ ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ</translation>
 <translation id="2268130516524549846">ਬਲੂਟੁੱਥ ਬੰਦ ਹੈ</translation>
 <translation id="2268813581635650749">ਸਭ ਨੂੰ ਸਾਈਨ-ਆਊਟ ਕਰੋ</translation>
 <translation id="2269016722240250274">ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਤੁਹਾਡੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਸਵੈਚਲਿਤ ਕਲਿੱਕਾਂ ਨੂੰ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation>
 <translation id="4849058404725798627">ਕੀ-ਬੋਰਡ ਫੋਕਸ ਨਾਲ ਵਸਤੂ ਨੂੰ ਉਜਾਗਰ ਕਰੋ</translation>
 <translation id="485592688953820832">ਕੋਈ ਕਾਰਵਾਈ ਨਹੀਂ (ਰੋਕੋ)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਆਪਣੇ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ</translation>
 <translation id="486056901304535126">ਬਾਅਦ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾਵੇਗੀ। ਡਾਊਨਲੋਡ ਪੂਰਾ ਹੋਣ ਤੱਕ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਲਈ ਬੋਲੀ Google ਨੂੰ ਭੇਜੀ ਜਾਵੇਗੀ।</translation>
 <translation id="4868492592575313542">ਕਿਰਿਆਸ਼ੀਲ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="4872237917498892622">Alt+Search ਜਾਂ Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">ਰੱਦ ਕਰੋ</translation>
 <translation id="6453179446719226835">ਭਾਸ਼ਾ ਬਦਲ ਦਿੱਤੀ ਗਈ ਹੈ</translation>
 <translation id="6459472438155181876">ਸਕ੍ਰੀਨ <ph name="DISPLAY_NAME" /> ਵਿੱਚ ਵਧਾ ਰਿਹਾ ਹੈ</translation>
+<translation id="6477681113376365978">ਫ਼ਾਈਲ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ</translation>
 <translation id="6482559668224714696">ਪੂਰੀ-ਸਕ੍ਰੀਨ ਵੱਡਦਰਸ਼ੀ</translation>
 <translation id="6490471652906364588">USB-C ਡਿਵਾਈਸ (ਸੱਜਾ ਪੋਰਟ)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> ਲਈ ਤੁਹਾਨੂੰ ਸਮਾਂ-ਸੀਮਾ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ <ph name="DEVICE_TYPE" /> ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ</translation>
 <translation id="65320610082834431">ਇਮੋਜੀ</translation>
 <translation id="6537924328260219877">ਸਿਗਨਲ ਦੀ ਤੀਬਰਤਾ <ph name="SIGNAL_STRENGTH" />, ਫ਼ੋਨ ਦੀ ਬੈਟਰੀ <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">ਡਾਊਨਲੋਡ ਹੋ ਰਹੀ <ph name="FILENAME" /> ਫ਼ਾਈਲ ਨੂੰ ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> 'ਤੇ ਕਾਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+ਨਵੀਂ ਸਥਾਪਤ ਕੀਤੀ ਗਈ</translation>
 <translation id="6559976592393364813">ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਪੁੱਛੋ</translation>
 <translation id="6565007273808762236">ਈ-ਸਿਮ ਕਨੈਕਸ਼ਨ ਉਪਲਬਧ ਨਹੀਂ</translation>
 <translation id="6570831796530454248">{0,plural, =1{ਡੀਵਾਈਸ ਨੂੰ ਇੱਕ ਘੰਟੇ ਦੇ ਅੰਦਰ ਅੱਪਡੇਟ ਕਰੋ}one{ਡੀਵਾਈਸ ਨੂੰ # ਘੰਟੇ ਦੇ ਅੰਦਰ ਅੱਪਡੇਟ ਕਰੋ}other{ਡੀਵਾਈਸ ਨੂੰ # ਘੰਟਿਆਂ ਦੇ ਅੰਦਰ ਅੱਪਡੇਟ ਕਰੋ}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">ਪਾਵਰ</translation>
 <translation id="6727969043791803658">ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ, <ph name="BATTERY_PERCENTAGE" />% ਬੈਟਰੀ</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ਸੈਟਿੰਗਾਂ 'ਤੇ ਜਾਓ</translation>
 <translation id="6751052314767925245">ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਲਾਗੂ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="6751826523481687655">ਪ੍ਰਦਰਸ਼ਨ ਟ੍ਰੇਸਿੰਗ ਚਾਲੂ ਹੈ</translation>
 <translation id="6752912906630585008">ਡੈਸਕ <ph name="REMOVED_DESK" /> ਨੂੰ ਹਟਾ ਕੇ ਡੈਸਕ <ph name="RECEIVE_DESK" /> ਵਿੱਚ ਵਿਲੀਨ ਕੀਤਾ ਗਿਆ</translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">ਸੰਰੂਪਣ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">ਨਵਾਂ ਸੈਲਿਊਲਰ ਨੈੱਟਵਰਕ ਸ਼ਾਮਲ ਕਰੋ</translation>
+<translation id="7720410380936703141">ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ਸੂਚਨਾ}one{# ਸੂਚਨਾ}other{# ਸੂਚਨਾਵਾਂ}}</translation>
 <translation id="7724603315864178912">ਕੱਟੋ</translation>
 <translation id="7745560842763881396">ਐਪਾਂ ਨੂੰ ਸ਼ੈਲਫ ਵਿੱਚ ਦਿਖਾਓ</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> ਦੀ ਵਰਤੋਂ ਹੋ ਰਹੀ ਹੈ</translation>
 <translation id="899350903320462459">ਸੂਚਨਾ 'ਤੇ ਕਾਰਵਾਈ ਕਰਨ ਲਈ <ph name="LOGIN_ID" /> ਵਜੋਂ ਡੀਵਾਈਸ ਨੂੰ ਅਣਲਾਕ ਕਰੋ</translation>
+<translation id="9000771174482730261">ਸਟੋਰੇਜ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
 <translation id="9017320285115481645">Family Link ਦਾ ਮਾਂ-ਪਿਓ ਪਹੁੰਚ ਕੋਡ ਦਾਖਲ ਕਰੋ।</translation>
 <translation id="9024331582947483881">ਫੁਲ ਸਕ੍ਰੀਨ</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> ਲਈ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ</translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">ਮੇਰੇ ਕੈਲੰਡਰ 'ਤੇ ਕੀ ਹੈ?</translation>
 <translation id="945522503751344254">ਪ੍ਰਤੀਕਰਮ ਭੇਜੋ</translation>
 <translation id="951991426597076286">ਅਸਵੀਕਾਰ ਕਰੋ</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> ਲਈ ਲੋੜੀਂਦੀ ਜਗ੍ਹਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਜਗ੍ਹਾ ਖਾਲੀ ਕਰੋ।</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> ਲਈ <ph name="RESULT_COUNT" /> ਨਤੀਜੇ ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ</translation>
 <translation id="98515147261107953">ਲੈਂਡਸਕੇਪ</translation>
 <translation id="990277280839877440">ਵਿੰਡੋ <ph name="WINDOW_TITILE" /> ਬੰਦ ਹੋਈ।</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index 758c32c..ebb374b 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -819,6 +819,7 @@
 <translation id="6528179044667508675">Não incomodar</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877">Intensidade do sinal: <ph name="SIGNAL_STRENGTH" />, bateria do telemóvel: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">A analisar a transferência <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">A transmitir para <ph name="RECEIVER_NAME" /></translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 Nova instalação</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 2127982c..470d23f 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">Pornește subtitrările</translation>
 <translation id="5078796286268621944">Cod PIN incorect</translation>
 <translation id="5083553833479578423">Deblochează mai multe funcții ale Asistentului.</translation>
+<translation id="5106223312672646208">Personalizează</translation>
 <translation id="5117590920725113268">Afișează luna următoare</translation>
 <translation id="5136175204352732067">Altă tastatură conectată</translation>
 <translation id="5147567197700016471">Deblocat</translation>
@@ -818,6 +819,7 @@
 <translation id="6528179044667508675">Nu deranja</translation>
 <translation id="65320610082834431">Emoji</translation>
 <translation id="6537924328260219877">Puterea semnalului: <ph name="SIGNAL_STRENGTH" />, bateria telefonului: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Se scanează <ph name="FILENAME" /> pentru descărcare</translation>
 <translation id="6542521951477560771">Se proiectează conținut la <ph name="RECEIVER_NAME" /></translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 Instalare nouă</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index 5b486a3..41058364 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -818,6 +818,7 @@
 <translation id="6528179044667508675">Не беспокоить</translation>
 <translation id="65320610082834431">Эмодзи</translation>
 <translation id="6537924328260219877">Уровень сигнала – <ph name="SIGNAL_STRENGTH" />, заряд батареи – <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Выполняется проверка скачиваемого файла "<ph name="FILENAME" />"</translation>
 <translation id="6542521951477560771">Трансляция на устройство "<ph name="RECEIVER_NAME" />"</translation>
 <translation id="655633303491376835">"<ph name="APP_NAME" />"
 Новое приложение</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb
index d57e8a3..8a848340 100644
--- a/ash/strings/ash_strings_si.xtb
+++ b/ash/strings/ash_strings_si.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">සංවෘත සිරස්තල ආරම්භ කරන්න</translation>
 <translation id="5078796286268621944">වැරදි PIN</translation>
 <translation id="5083553833479578423">තව සහායක අංග අගුලු හරින්න</translation>
+<translation id="5106223312672646208">පුද්ගලිකකරණය</translation>
 <translation id="5117590920725113268">ඊළඟ මාසය පෙන්වන්න</translation>
 <translation id="5136175204352732067">වෙනස් යතුරු පුවරුවක් සම්බන්ධ කර ඇත</translation>
 <translation id="5147567197700016471">අගුලු හැර ඇත</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 08ec21b..a23113c2 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Namizje 7</translation>
 <translation id="2224075387478458881">Snemanje zaslona ni dovoljeno, ko je vidna zaščitena vsebina.</translation>
 <translation id="225680501294068881">Iskanje naprav ...</translation>
+<translation id="2257486738914982088">Pri prenosu datoteke <ph name="FILENAME" /> je prišlo do napake.</translation>
 <translation id="2268130516524549846">Bluetooth onemogočen</translation>
 <translation id="2268813581635650749">Odjava vseh</translation>
 <translation id="2269016722240250274">Aplikacija uporablja vaš mikrofon.</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Ali ste prepričani, da želite izklopiti samodejne klike?</translation>
 <translation id="4849058404725798627">Označitev predmeta s fokusom na tipkovnici</translation>
 <translation id="485592688953820832">Brez dejanj (zaustavitev)</translation>
+<translation id="4860284199500934869">Preverite omrežno povezavo za prenos datoteke <ph name="FILENAME" />.</translation>
 <translation id="486056901304535126">Poskus prenosa bo izveden pozneje. Govor bo poslan Googlu v obdelavo, dokler prenos ne bo dokončan.</translation>
 <translation id="4868492592575313542">aktivirano</translation>
 <translation id="4872237917498892622">Alt + iskanje ali Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Zavrni</translation>
 <translation id="6453179446719226835">Jezik je spremenjen</translation>
 <translation id="6459472438155181876">Razširitev zaslon na <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Datoteke ni mogoče prenesti</translation>
 <translation id="6482559668224714696">Celozaslonska lupa</translation>
 <translation id="6490471652906364588">Naprava USB-C (desna vrata)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> zahteva, da pred rokom posodobite napravo <ph name="DEVICE_TYPE" />.</translation>
@@ -817,6 +820,8 @@
 <translation id="6537924328260219877">Moč signala je <ph name="SIGNAL_STRENGTH" />, stanje baterije telefona je <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">Pregledovanje prenosa: <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Predvajanje v napravi <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nova namestitev</translation>
 <translation id="6559976592393364813">Vprašajte skrbnika</translation>
 <translation id="6565007273808762236">Povezava prek kartice eSIM ni na voljo</translation>
 <translation id="6570831796530454248">{0,plural, =1{Posodobite napravo v eni uri}one{Posodobite napravo v # uri}two{Posodobite napravo v # urah}few{Posodobite napravo v # urah}other{Posodobite napravo v # urah}}</translation>
@@ -848,6 +853,7 @@
 <translation id="6723839937902243910">Napajanje</translation>
 <translation id="6727969043791803658">Povezano, <ph name="BATTERY_PERCENTAGE" /> % energije akumulatorja</translation>
 <translation id="6732800389263199929">In še <ph name="COUNT" /></translation>
+<translation id="6739144137573853180">NASTAVITVE</translation>
 <translation id="6751052314767925245">Uveljavil vaš skrbnik</translation>
 <translation id="6751826523481687655">Sledenje učinkovitosti delovanja je vklopljeno</translation>
 <translation id="6752912906630585008">Namizje <ph name="REMOVED_DESK" /> je bilo odstranjeno in združeno z namizjem <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +989,7 @@
 <translation id="7662283695561029522">Dotaknite se, če želite konfigurirati</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Dodaj novo mobilno omrežje</translation>
+<translation id="7720410380936703141">POSKUSI ZNOVA</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obvestilo}one{# obvestilo}two{# obvestili}few{# obvestila}other{# obvestil}}</translation>
 <translation id="7724603315864178912">Izreži</translation>
 <translation id="7745560842763881396">Prikaz aplikacij na polici</translation>
@@ -1169,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Uporaba tega: <ph name="IME_NAME" /></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>
 <translation id="9024331582947483881">celozaslonski način</translation>
 <translation id="9047624247355796468">Odpri nastavitve za <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1222,7 @@
 <translation id="938963181863597773">Kaj je v mojem koledarju?</translation>
 <translation id="945522503751344254">Pošiljanje povratnih informacij</translation>
 <translation id="951991426597076286">Zavrni</translation>
+<translation id="954052413789300507">Ni dovolj prostora za datoteko <ph name="FILENAME" />. Sprostite prostor.</translation>
 <translation id="974545358917229949">Prikaz <ph name="RESULT_COUNT" /> rezultatov za poizvedbo <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Ležeče</translation>
 <translation id="990277280839877440">Okno <ph name="WINDOW_TITILE" /> je zaprto.</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb
index 2e0c5d1..1e2580c9 100644
--- a/ash/strings/ash_strings_sq.xtb
+++ b/ash/strings/ash_strings_sq.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Tavolina e punës 7</translation>
 <translation id="2224075387478458881">Regjistrimi i ekranit nuk lejohet kur përmbajtja e mbrojtur është e dukshme</translation>
 <translation id="225680501294068881">Po skanon për pajisje...</translation>
+<translation id="2257486738914982088">Ndodhi një gabim gjatë shkarkimi të <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth-i u çaktivizua</translation>
 <translation id="2268813581635650749">Dil nga të gjitha</translation>
 <translation id="2269016722240250274">Mikrofonin tënd po e përdor një aplikacion</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Je i sigurt që dëshiron të çaktivizosh klikimet automatike?</translation>
 <translation id="4849058404725798627">Thekso objektin me fokusin e tastierës</translation>
 <translation id="485592688953820832">Asnjë veprim (vendos në pauzë)</translation>
+<translation id="4860284199500934869">Kontrollo lidhjen e rrjetit për të shkarkuar <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Shkarkimi do të provohet më vonë. Ligjërimi do të dërgohet te Google për përpunim derisa shkarkimi të përfundojë.</translation>
 <translation id="4868492592575313542">aktivizuar</translation>
 <translation id="4872237917498892622">Alt+Kërko ose Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Refuzo</translation>
 <translation id="6453179446719226835">Gjuha është ndryshuar</translation>
 <translation id="6459472438155181876">Po zgjeron ekranin në <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Skedari nuk mund të shkarkohet</translation>
 <translation id="6482559668224714696">Zmadhuesi në ekran të plotë</translation>
 <translation id="6490471652906364588">Pajisja USB-C (porta djathtas)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> kërkon që ta përditësosh pajisjen tënde <ph name="DEVICE_TYPE" /> përpara afatit</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Mos shqetëso</translation>
 <translation id="65320610082834431">Emoji</translation>
 <translation id="6537924328260219877">Fuqia e sinjalit <ph name="SIGNAL_STRENGTH" />, bateria e telefonit <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Po skanohet shkarkimi: <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Po transmeton <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Instalim i ri</translation>
 <translation id="6559976592393364813">Pyet administratorin</translation>
 <translation id="6565007273808762236">Lidhja e kartës eSIM nuk ofrohet</translation>
 <translation id="6570831796530454248">{0,plural, =1{Përditëso pajisjen brenda një ore}other{Përditëso pajisjen brenda # orësh}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Energjia</translation>
 <translation id="6727969043791803658">E lidhur, bateria <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">SHKO TE CILËSIMET</translation>
 <translation id="6751052314767925245">E zbatuar nga administratori yt</translation>
 <translation id="6751826523481687655">Gjurmimi i cilësisë së funksionimit është aktivizuar</translation>
 <translation id="6752912906630585008">Tavolina e punës <ph name="REMOVED_DESK" /> u hoq dhe u shkri me tavolinën e punës <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Trokit për të konfiguruar</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Shto rrjet të ri celular</translation>
+<translation id="7720410380936703141">PROVO SËRISH</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 njoftim}other{# njoftime}}</translation>
 <translation id="7724603315864178912">Prite</translation>
 <translation id="7745560842763881396">Shfaq aplikacionet në raft</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Po përdor <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Shkyç pajisjen si <ph name="LOGIN_ID" /> për të kryer veprimin e njoftimit</translation>
+<translation id="9000771174482730261">MENAXHO HAPËSIRËN RUAJTËSE</translation>
 <translation id="9017320285115481645">Fut kodin e qasjes së prindit për Family Link</translation>
 <translation id="9024331582947483881">ekrani i plotë</translation>
 <translation id="9047624247355796468">Hap cilësimet për <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Çfarë ka në kalendarin tim?</translation>
 <translation id="945522503751344254">Dërgo komente</translation>
 <translation id="951991426597076286">Refuzo</translation>
+<translation id="954052413789300507">Nuk ka hapësirë të mjaftueshme për <ph name="FILENAME" />. Liro hapësirën.</translation>
 <translation id="974545358917229949">Po shfaq <ph name="RESULT_COUNT" /> rezultate për <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Horizontal</translation>
 <translation id="990277280839877440">Dritarja <ph name="WINDOW_TITILE" /> u mbyll.</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index 0ddd99da..47d5d28 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">Pokreni titl</translation>
 <translation id="5078796286268621944">Netačan PIN</translation>
 <translation id="5083553833479578423">Otključajte još funkcija Pomoćnika.</translation>
+<translation id="5106223312672646208">Personalizujte</translation>
 <translation id="5117590920725113268">Prikaži sledeći mesec</translation>
 <translation id="5136175204352732067">Neka druga tastatura je povezana</translation>
 <translation id="5147567197700016471">Otključano</translation>
@@ -818,6 +819,7 @@
 <translation id="6528179044667508675">Ne uznemiravaj</translation>
 <translation id="65320610082834431">Emodžiji</translation>
 <translation id="6537924328260219877">Jačina signala <ph name="SIGNAL_STRENGTH" />, baterija telefona <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Skenira se fajl <ph name="FILENAME" /> koji se preuzima</translation>
 <translation id="6542521951477560771">Prebacuje se na <ph name="RECEIVER_NAME" /></translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 Novo instaliranje</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index 13d564e7..06fe127fe 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">Покрени титл</translation>
 <translation id="5078796286268621944">Нетачан PIN</translation>
 <translation id="5083553833479578423">Откључајте још функција Помоћника.</translation>
+<translation id="5106223312672646208">Персонализујте</translation>
 <translation id="5117590920725113268">Прикажи следећи месец</translation>
 <translation id="5136175204352732067">Нека друга тастатура је повезана</translation>
 <translation id="5147567197700016471">Откључано</translation>
@@ -818,6 +819,7 @@
 <translation id="6528179044667508675">Не узнемиравај</translation>
 <translation id="65320610082834431">Емоџији</translation>
 <translation id="6537924328260219877">Јачина сигнала <ph name="SIGNAL_STRENGTH" />, батерија телефона <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Скенира се фајл <ph name="FILENAME" /> који се преузима</translation>
 <translation id="6542521951477560771">Пребацује се на <ph name="RECEIVER_NAME" /></translation>
 <translation id="655633303491376835"><ph name="APP_NAME" />
 Ново инсталирање</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index 5a475c64..a247b494 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Skrivbord 7</translation>
 <translation id="2224075387478458881">Skärminspelning tillåts inte när skyddat innehåll är synligt</translation>
 <translation id="225680501294068881">Söker efter enheter ...</translation>
+<translation id="2257486738914982088">Det gick inte att ladda ned <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth inaktiverat</translation>
 <translation id="2268813581635650749">Logga ut alla</translation>
 <translation id="2269016722240250274">Mikrofonen används av en app</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Vill du inaktivera automatiska klick?</translation>
 <translation id="4849058404725798627">Markera objekt med tangentbordsfokus</translation>
 <translation id="485592688953820832">Ingen åtgärd (pausa)</translation>
+<translation id="4860284199500934869">Kontrollera nätverksanslutningen om du vill ladda ned <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Ett nytt nedladdningsförsök görs senare. Tal skickas till Google för bearbetning tills nedladdningen har slutförts.</translation>
 <translation id="4868492592575313542">aktiverad</translation>
 <translation id="4872237917498892622">Alt + Sök eller Skift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Avvisa</translation>
 <translation id="6453179446719226835">Språket har ändrats</translation>
 <translation id="6459472438155181876">Utökar skärmen till <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Det går inte att ladda ned filen</translation>
 <translation id="6482559668224714696">Helskärmsförstoring</translation>
 <translation id="6490471652906364588">USB-C-enhet (höger port)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> kräver att du uppdaterar din <ph name="DEVICE_TYPE" /> före deadline</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Stör ej</translation>
 <translation id="65320610082834431">Emojis</translation>
 <translation id="6537924328260219877">Signalstyrka <ph name="SIGNAL_STRENGTH" />, telefonens batteri<ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Genomsökning av filen <ph name="FILENAME" /> som laddas ned</translation>
 <translation id="6542521951477560771">Castar till <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Nyligen installerad</translation>
 <translation id="6559976592393364813">Fråga administratören</translation>
 <translation id="6565007273808762236">eSIM-anslutning tillgänglig</translation>
 <translation id="6570831796530454248">{0,plural, =1{Uppdatera enheten inom en timme}other{Uppdatera enheten inom # timmar}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Batteri</translation>
 <translation id="6727969043791803658">Ansluten, <ph name="BATTERY_PERCENTAGE" /> % batterinivå</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ÖPPNA INSTÄLLNINGARNA</translation>
 <translation id="6751052314767925245">Har ställts in som obligatorisk av administratören</translation>
 <translation id="6751826523481687655">Prestandaspårning har aktiverats</translation>
 <translation id="6752912906630585008">Skrivbordet <ph name="REMOVED_DESK" /> har tagits bort och slagits samman med skrivbordet <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Tryck om du vill konfigurera</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Lägg till nytt mobilnätverk</translation>
+<translation id="7720410380936703141">FÖRSÖK IGEN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 avisering}other{# aviseringar}}</translation>
 <translation id="7724603315864178912">Klipp ut</translation>
 <translation id="7745560842763881396">Visa appar på hyllan</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Använder <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Lås upp enheten som <ph name="LOGIN_ID" /> så att aviseringen kan göras</translation>
+<translation id="9000771174482730261">HANTERA LAGRING</translation>
 <translation id="9017320285115481645">Ange föräldraåtkomstkoden för Family Link.</translation>
 <translation id="9024331582947483881">helskärm</translation>
 <translation id="9047624247355796468">Öppnar inställningarna för <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Vad står det i min kalender?</translation>
 <translation id="945522503751344254">Skicka feedback</translation>
 <translation id="951991426597076286">Godkänn inte</translation>
+<translation id="954052413789300507">Det finns inte tillräckligt med utrymme för <ph name="FILENAME" />. Frigör utrymme.</translation>
 <translation id="974545358917229949"><ph name="RESULT_COUNT" /> resultat visas för <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Liggande</translation>
 <translation id="990277280839877440">Fönstret <ph name="WINDOW_TITILE" /> har stängts.</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index ddc54d2..f6da83f 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Eneokazi la saba</translation>
 <translation id="2224075387478458881">Huruhusiwi kurekodi skrini wakati maudhui yanayolindwa yanaonekana</translation>
 <translation id="225680501294068881">Inatambazaa vifaa...</translation>
+<translation id="2257486738914982088">Hitilafu fulani imetokea wakati wa kupakua <ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">Bluetooth imelemazwa</translation>
 <translation id="2268813581635650749">Ondoa wote</translation>
 <translation id="2269016722240250274">Kuna programu inayotumia maikrofoni yako</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Je, una uhakika ungependa kuzima mibofyo ya kiotomatiki?</translation>
 <translation id="4849058404725798627">Angazia kipengee kilicholengwa kwa kibodi</translation>
 <translation id="485592688953820832">Hakuna kitendo (simamisha)</translation>
+<translation id="4860284199500934869">Kagua muunganisho wako wa mtandao ili upakue <ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Itajaribu kupakua baadaye. Matamshi yatatumwa kwa Google ili yachakatwe hadi upakuaji utakapokamilika.</translation>
 <translation id="4868492592575313542">kimewashwa</translation>
 <translation id="4872237917498892622">Alt + Utafutaji au Hama</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">Anzisha manukuu</translation>
 <translation id="5078796286268621944">PIN isiyo sahihi</translation>
 <translation id="5083553833479578423">Fungua vipengele zaidi vya programu yako ya Mratibu.</translation>
+<translation id="5106223312672646208">Weka mapendeleo</translation>
 <translation id="5117590920725113268">Onyesha mwezi unaofuata</translation>
 <translation id="5136175204352732067">Kibodi tofauti imeunganishwa</translation>
 <translation id="5147567197700016471">Imefunguliwa</translation>
@@ -804,6 +807,7 @@
 <translation id="6452181791372256707">Kataa</translation>
 <translation id="6453179446719226835">Lugha imebadilishwa</translation>
 <translation id="6459472438155181876">Inapanua skrini kwenye <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Imeshindwa kupakua faili</translation>
 <translation id="6482559668224714696">Kikuzaji cha skrini nzima</translation>
 <translation id="6490471652906364588">Kifaa cha USB-C (mlango wa kulia)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> inahitaji usasishe <ph name="DEVICE_TYPE" /> yako kabla ya tarehe ya mwisho</translation>
@@ -815,7 +819,10 @@
 <translation id="6528179044667508675">Usinisumbue</translation>
 <translation id="65320610082834431">Emoji</translation>
 <translation id="6537924328260219877">Uthabiti wa Mtandao <ph name="SIGNAL_STRENGTH" />, Betri ya Simu <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Inakagua kipakuliwa <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Tuma kwenye <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Imesakinishwa hivi karibuni</translation>
 <translation id="6559976592393364813">Mwulize Msimamizi</translation>
 <translation id="6565007273808762236">Muunganisho wa eSIM haupatikani</translation>
 <translation id="6570831796530454248">{0,plural, =1{Sasisha kifaa ndani ya saa moja}other{Sasisha kifaa ndani ya saa #}}</translation>
@@ -847,6 +854,7 @@
 <translation id="6723839937902243910">Nishati</translation>
 <translation id="6727969043791803658">Imeunganishwa, kiasi cha chaji ni <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">NENDA KWENYE MIPANGILIO</translation>
 <translation id="6751052314767925245">Kinadhibitiwa na msimamizi wako</translation>
 <translation id="6751826523481687655">Kipengele cha ufuatiliaji wa utendaji kimewashwa</translation>
 <translation id="6752912906630585008">Kiolesura cha <ph name="REMOVED_DESK" /> kimeondolewa na kimeunganishwa na Kiolesura cha <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +991,7 @@
 <translation id="7662283695561029522">Gusa ili uweke mipangilio</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Ongeza mtandao mpya wa simu</translation>
+<translation id="7720410380936703141">JARIBU TENA</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Arifa 1}other{Arifa #}}</translation>
 <translation id="7724603315864178912">Kata</translation>
 <translation id="7745560842763881396">Onyesha programu kwenye rafu</translation>
@@ -1169,6 +1178,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Unatumia <ph name="IME_NAME" /></translation>
 <translation id="899350903320462459">Fungua kifaa kwa kuingia katika akaunti ukitumia <ph name="LOGIN_ID" /> ili utekeleze kitendo cha arifa</translation>
+<translation id="9000771174482730261">DHIBITI NAFASI YA HIFADHI</translation>
 <translation id="9017320285115481645">Weka msimbo wa kufikia wa mzazi katika Family Link.</translation>
 <translation id="9024331582947483881">skrini nzima</translation>
 <translation id="9047624247355796468">Fungua mipangilio ya <ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1224,7 @@
 <translation id="938963181863597773">Kuna nini kwenye kalenda yangu?</translation>
 <translation id="945522503751344254">Tuma maoni</translation>
 <translation id="951991426597076286">Kataa</translation>
+<translation id="954052413789300507">Hakuna nafasi inayotosha kupakua <ph name="FILENAME" />. Futa baadhi ya faili ili upate nafasi.</translation>
 <translation id="974545358917229949">Inaonyesha matokeo <ph name="RESULT_COUNT" /> ya <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Mlalo</translation>
 <translation id="990277280839877440">Dirisha la <ph name="WINDOW_TITILE" /> limefungwa.</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index 01946a2..d07be26 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">டெஸ்க் 7</translation>
 <translation id="2224075387478458881">பாதுகாக்கப்பட்ட உள்ளடக்கம் காட்டப்படும்போது ஸ்கிரீன் ரெக்கார்டிங் அனுமதிக்கப்படாது</translation>
 <translation id="225680501294068881">சாதனங்களைக் கண்டறிகிறது...</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> ஃபைலைப் பதிவிறக்கும்போது ஏதோ தவறாகிவிட்டது</translation>
 <translation id="2268130516524549846">புளூடூத் முடக்கப்பட்டது</translation>
 <translation id="2268813581635650749">அனைவரையும் வெளியேற்று</translation>
 <translation id="2269016722240250274">உங்கள் மைக்ரோஃபோனை ஆப்ஸ் பயன்படுத்துகிறது</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">தானாகக் கிளிக் செய்யும் அம்சத்தை ஆஃப் செய்ய விரும்புகிறீர்களா?</translation>
 <translation id="4849058404725798627">கீபோர்டு ஃபோகஸ் மூலம் ஆப்ஜெக்ட்டைத் தனிப்படுத்து</translation>
 <translation id="485592688953820832">எந்தச் செயலும் இல்லை (இடைநிறுத்தும்)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> ஃபைலைப் பதிவிறக்க, நெட்வொர்க் இணைப்பைச் சரிபார்க்கவும்</translation>
 <translation id="486056901304535126">பின்னர் பதிவிறக்க முயலும். பதிவிறக்கம் முடியும் வரை பேசுபவை அனைத்தும் செயலாக்கத்திற்காக Googleளுக்கு அனுப்பப்படும்.</translation>
 <translation id="4868492592575313542">செயல்படுத்தப்பட்டது</translation>
 <translation id="4872237917498892622">Alt+தேடல் அல்லது Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">நிராகரி</translation>
 <translation id="6453179446719226835">மொழி மாற்றப்பட்டது</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME" /> க்கு திரை விரிவாக்கப்படுகிறது</translation>
+<translation id="6477681113376365978">ஃபைலைப் பதிவிறக்க முடியவில்லை</translation>
 <translation id="6482559668224714696">முழுத்திரைப் பெரிதாக்கி</translation>
 <translation id="6490471652906364588">USB-C சாதனம் (வலது போர்ட்)</translation>
 <translation id="6491071886865974820">காலக்கெடுவுக்கு முன்பு இந்த <ph name="DEVICE_TYPE" /> ஐப் புதுப்பிக்குமாறு <ph name="MANAGER" /> கோருகிறது</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">தொந்தரவு செய்யாதே</translation>
 <translation id="65320610082834431">ஈமோஜிகள்</translation>
 <translation id="6537924328260219877">சிக்னல் வலிமை: <ph name="SIGNAL_STRENGTH" />, மொபைல் பேட்டரி: <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">ஸ்கேன் செய்யப்படுகின்ற <ph name="FILENAME" /> ஃபைலைப் பதிவிறக்கும்</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" />க்கு அலைபரப்புகிறது</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+புதிய நிறுவல்</translation>
 <translation id="6559976592393364813">நிர்வாகியைக் கேட்கவும்</translation>
 <translation id="6565007273808762236">eSIM இணைப்பு கிடைக்கவில்லை</translation>
 <translation id="6570831796530454248">{0,plural, =1{ஒரு மணிநேரத்திற்குள் சாதனத்தை மீண்டும் தொடங்குங்கள்}other{# மணிநேரத்திற்குள் சாதனத்தை மீண்டும் தொடங்குங்கள்}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">ஆற்றல்</translation>
 <translation id="6727969043791803658">இணைக்கப்பட்டது, பேட்டரி: <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">அமைப்புகளுக்குச் செல்லுங்கள்</translation>
 <translation id="6751052314767925245">உங்கள் நிர்வாகி செயல்படுத்தியுள்ளார்</translation>
 <translation id="6751826523481687655">செயல்திறன் டிரேஸிங் இயக்கத்தில் உள்ளது</translation>
 <translation id="6752912906630585008">டெஸ்க் <ph name="REMOVED_DESK" /> அகற்றப்பட்டு டெஸ்க் <ph name="RECEIVE_DESK" /> உடன் சேர்க்கப்பட்டது</translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">உள்ளமைக்க, தட்டவும்</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">புதிய மொபைல் நெட்வொர்க்கைச் சேர்</translation>
+<translation id="7720410380936703141">மீண்டும் முயல்க</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 அறிவிப்பு}other{# அறிவிப்புகள்}}</translation>
 <translation id="7724603315864178912">வெட்டு</translation>
 <translation id="7745560842763881396">ஆப்ஸை ஷெல்ஃபில் காட்டும்</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> பயன்படுத்தப்படுகிறது</translation>
 <translation id="899350903320462459">அறிவிப்பில் வந்த செயலைச் செய்வதற்கு, சாதனத்தை <ph name="LOGIN_ID" /> ஆக அன்லாக் செய்யவும்</translation>
+<translation id="9000771174482730261">சேமிப்பிடத்தை நிர்வகியுங்கள்</translation>
 <translation id="9017320285115481645">Family Link பெற்றோர் அணுகல் குறியீட்டை உள்ளிடவும்.</translation>
 <translation id="9024331582947483881">முழுத்திரை</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" />க்கான அமைப்புகளைத் திறக்கும்</translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">எனது கேலெண்டரில் என்ன உள்ளது?</translation>
 <translation id="945522503751344254">கருத்தை அனுப்பு</translation>
 <translation id="951991426597076286">நிராகரி</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> ஃபைலைப் பதிவிறக்க போதிய இடமில்லை. சேமிப்பிடத்தைக் காலியாக்கவும்.</translation>
 <translation id="974545358917229949"><ph name="QUERY" />க்கான <ph name="RESULT_COUNT" /> முடிவுகளைக் காட்டுகிறது</translation>
 <translation id="98515147261107953">லேண்ட்ஸ்கேப்</translation>
 <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> சாளரம் மூடப்பட்டது.</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 35f01d1..96eb3470 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -624,6 +624,7 @@
 <translation id="5075554201838155866">క్యాప్షన్‌లను ప్రారంభించు</translation>
 <translation id="5078796286268621944"> సరి కానటువంటి PIN</translation>
 <translation id="5083553833479578423">మరిన్ని Assistant ఫీచర్‌లను అన్‌లాక్ చేయండి.</translation>
+<translation id="5106223312672646208">వ్యక్తిగతీకరించండి</translation>
 <translation id="5117590920725113268">తరువాత నెలను చూపుతుంది</translation>
 <translation id="5136175204352732067">వేరే కీబోర్డ్ కనెక్ట్ చేయబడింది</translation>
 <translation id="5147567197700016471">అన్‌లాక్ చేయబడింది</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index 240f68e..b4e85b2 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">เริ่มคำอธิบายภาพ</translation>
 <translation id="5078796286268621944">PIN ไม่ถูกต้อง</translation>
 <translation id="5083553833479578423">ใช้ฟีเจอร์จาก Assistant ได้มากขึ้น</translation>
+<translation id="5106223312672646208">ปรับเปลี่ยนในแบบของคุณ</translation>
 <translation id="5117590920725113268">แสดงเดือนถัดไป</translation>
 <translation id="5136175204352732067">เชื่อมต่อกับแป้นพิมพ์อื่นแล้ว</translation>
 <translation id="5147567197700016471">ปลดล็อกแล้ว</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index bd32b67..4dd76d9 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Masa 7</translation>
 <translation id="2224075387478458881">Ekranda korunan içerik varken ekran kaydı almaya izin verilmez</translation>
 <translation id="225680501294068881">Cihazlar taranıyor...</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> indirilirken bir sorun oluştu</translation>
 <translation id="2268130516524549846">Bluetooth devre dışı</translation>
 <translation id="2268813581635650749">Tüm oturumları kapat</translation>
 <translation id="2269016722240250274">Bir uygulama mikrofonunuzu kullanıyor</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Otomatik tıklamaları kapatmak istediğinizden emin misiniz?</translation>
 <translation id="4849058404725798627">Klavye odağının olduğu nesneyi vurgula</translation>
 <translation id="485592688953820832">İşlem yok (duraklat)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> dosyasını indirmek için ağ bağlantınızı kontrol edin</translation>
 <translation id="486056901304535126">İndirme işlemi daha sonra tekrar denenecek. Konuşma, indirme işlemi tamamlanana kadar işlenmek üzere Google'a gönderilecek.</translation>
 <translation id="4868492592575313542">etkin</translation>
 <translation id="4872237917498892622">Alt+Arama veya Üst Karakter</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">Altyazıları başlat</translation>
 <translation id="5078796286268621944">Yanlış PIN</translation>
 <translation id="5083553833479578423">Diğer Asistan özelliklerinin kilidini açın.</translation>
+<translation id="5106223312672646208">Kişiselleştir</translation>
 <translation id="5117590920725113268">Sonraki ayı göster</translation>
 <translation id="5136175204352732067">Farklı klavye bağlandı</translation>
 <translation id="5147567197700016471">Kilitli değil</translation>
@@ -805,6 +808,7 @@
 <translation id="6452181791372256707">Reddet</translation>
 <translation id="6453179446719226835">Dil değiştirildi</translation>
 <translation id="6459472438155181876">Ekran şuraya genişletiliyor: <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Dosya indirilemiyor</translation>
 <translation id="6482559668224714696">Tam ekran büyüteci</translation>
 <translation id="6490471652906364588">USB-C cihaz (sağ bağlantı noktası)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> son tarihten önce bu <ph name="DEVICE_TYPE" /> cihazı güncellemenizi gerektiriyor</translation>
@@ -816,7 +820,10 @@
 <translation id="6528179044667508675">Rahatsız etme</translation>
 <translation id="65320610082834431">Emoji'ler</translation>
 <translation id="6537924328260219877"><ph name="SIGNAL_STRENGTH" /> Sinyal Gücü, <ph name="BATTERY_STATUS" /> Telefon Pili</translation>
+<translation id="6539852571005954999">İndirilen dosya taranıyor: <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> alıcısına gönderiliyor</translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Yeni yüklenmiş</translation>
 <translation id="6559976592393364813">Yöneticiye sorun</translation>
 <translation id="6565007273808762236">eSIM bağlantısı kullanılamıyor</translation>
 <translation id="6570831796530454248">{0,plural, =1{Cihazı bir saat içinde güncelleyin}other{Cihazı # saat içinde güncelleyin}}</translation>
@@ -848,6 +855,7 @@
 <translation id="6723839937902243910">Güç</translation>
 <translation id="6727969043791803658">Bağlandı, %<ph name="BATTERY_PERCENTAGE" /> pil</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">AYARLARA GİT</translation>
 <translation id="6751052314767925245">Yöneticiniz tarafınızdan zorunlu tutuldu</translation>
 <translation id="6751826523481687655">Performans izleme açık</translation>
 <translation id="6752912906630585008">Masa <ph name="REMOVED_DESK" /> kaldırılarak Masa <ph name="RECEIVE_DESK" /> ile birleştirildi</translation>
@@ -983,6 +991,7 @@
 <translation id="7662283695561029522">Yapılandırmak için dokunun</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Yeni hücresel ağ ekle</translation>
+<translation id="7720410380936703141">TEKRAR DENE</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 bildirim}other{# bildirim}}</translation>
 <translation id="7724603315864178912">Kes</translation>
 <translation id="7745560842763881396">Raftaki uygulamaları göster</translation>
@@ -1169,6 +1178,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> kullanılıyor</translation>
 <translation id="899350903320462459">Bildirim işlemi gerçekleştirmek için <ph name="LOGIN_ID" /> olarak cihazın kilidini açın</translation>
+<translation id="9000771174482730261">DEPOLAMA ALANINI YÖNET</translation>
 <translation id="9017320285115481645">Family Link ebeveyn erişim kodunu girin.</translation>
 <translation id="9024331582947483881">tam ekran</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> ayarlarını aç</translation>
@@ -1214,6 +1224,7 @@
 <translation id="938963181863597773">Takvimimde ne var?</translation>
 <translation id="945522503751344254">Geri bildirim gönder</translation>
 <translation id="951991426597076286">Reddet</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> için yeterli alan yok. Yer açın.</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> için <ph name="RESULT_COUNT" /> sonuç gösteriliyor</translation>
 <translation id="98515147261107953">Yatay</translation>
 <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> penceresi kapandı.</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb
index 4d7d47ae..444e4906 100644
--- a/ash/strings/ash_strings_ur.xtb
+++ b/ash/strings/ash_strings_ur.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">ڈیسک 7</translation>
 <translation id="2224075387478458881">تحفظ یافتہ مواد کے مرئی ہونے پر اسکرین ریکارڈنگ کی اجازت نہیں ہے</translation>
 <translation id="225680501294068881">آلات کیلئے سکیننگ کی جا رہی ہے…</translation>
+<translation id="2257486738914982088"><ph name="FILENAME" /> ڈاؤن لوڈ کرنے کے دوران کچھ غلط ہو گیا</translation>
 <translation id="2268130516524549846">بلوٹوتھ غیر فعال کر دیا گیا</translation>
 <translation id="2268813581635650749">سب سے سائن آؤٹ کریں</translation>
 <translation id="2269016722240250274">ایک ایپلیکیشن آپ کا مائیکروفون استعمال کر رہی ہے</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">کیا آپ واقعی خودکار کلکس کو آف کرنا چاہتے ہیں؟</translation>
 <translation id="4849058404725798627">کی بورڈ فوکس کی مدد سے آبجیکٹ کو نمایاں کریں</translation>
 <translation id="485592688953820832">کوئی کارروائی نہیں (موقوف کریں)</translation>
+<translation id="4860284199500934869"><ph name="FILENAME" /> کو ڈاؤن لوڈ کرنے کے ليے اپنا نیٹ ورک کنکشن چیک کریں</translation>
 <translation id="486056901304535126">‏بعد میں ڈاؤن لوڈ کرنے کی کوشش کی جائے گی۔ اسپیچ پروسیسنگ کے لیے Google کو بھیجی جائے گی جب تک کہ ڈاؤن لوڈ مکمل نہ ہو جائے۔</translation>
 <translation id="4868492592575313542">فعال</translation>
 <translation id="4872237917498892622">‏Alt+تلاش یا Shift</translation>
@@ -621,6 +623,7 @@
 <translation id="5075554201838155866">سب ٹائٹلز شروع کریں</translation>
 <translation id="5078796286268621944">‏غلط PIN</translation>
 <translation id="5083553833479578423">اسسٹنٹ کی مزید خصوصیات کو غیر مقفل کریں۔</translation>
+<translation id="5106223312672646208">ذاتی نوعیت کا بنائیں</translation>
 <translation id="5117590920725113268">اگلا مہینہ دکھائیں</translation>
 <translation id="5136175204352732067">مختلف کی بورڈ منسلک کر دیا گیا</translation>
 <translation id="5147567197700016471">غیر مقفل</translation>
@@ -804,6 +807,7 @@
 <translation id="6452181791372256707">مسترد کریں</translation>
 <translation id="6453179446719226835">زبان تبدیل ہو گئی ہے</translation>
 <translation id="6459472438155181876">اسکرین کو <ph name="DISPLAY_NAME" /> میں پھیلایا جا رہا ہے</translation>
+<translation id="6477681113376365978">فائل ڈاؤن لوڈ نہیں کر سکتے</translation>
 <translation id="6482559668224714696">پوری اسکرین مکبّر</translation>
 <translation id="6490471652906364588">‏USB-C آلہ (دایاں پورٹ)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> کا تقاضہ ہے کہ آپ آخری تاریخ سے پہلے اپنے <ph name="DEVICE_TYPE" /> کو اپ ڈیٹ کریں</translation>
@@ -817,6 +821,7 @@
 <translation id="6537924328260219877">سگنل کی مضبوطی <ph name="SIGNAL_STRENGTH" />، فون کی بیٹری <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">اسکین ہونے والی <ph name="FILENAME" /> کو ڈاؤن لوڈ کریں</translation>
 <translation id="6542521951477560771"><ph name="RECEIVER_NAME" /> پر کاسٹ کیا جا رہا ہے</translation>
+<translation id="655633303491376835">نئی انسٹال کردہ <ph name="APP_NAME" /></translation>
 <translation id="6559976592393364813">منتظم سے پوچھیں</translation>
 <translation id="6565007273808762236">‏eSIM کنکشن دستیاب نہیں ہے</translation>
 <translation id="6570831796530454248">{0,plural, =1{ایک گھنٹے کے اندر آلہ اپ ڈیٹ کریں}other{# گھنٹے کے اندر آلہ اپ ڈیٹ کریں}}</translation>
@@ -848,6 +853,7 @@
 <translation id="6723839937902243910">پاور</translation>
 <translation id="6727969043791803658">منسلک ہے، <ph name="BATTERY_PERCENTAGE" /> فیصد بیٹری ہے</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">ترتیبات پر جائیں</translation>
 <translation id="6751052314767925245">آپ کے منتظم کے ذریعے نافذ کیا گیا</translation>
 <translation id="6751826523481687655">کارکردگی کا پتا لگانا آن ہے</translation>
 <translation id="6752912906630585008"><ph name="REMOVED_DESK" /> ڈیسک ہٹا دیے گئے اور <ph name="RECEIVE_DESK" /> ڈیسک کے ساتھ ضم ہو گئے</translation>
@@ -983,6 +989,7 @@
 <translation id="7662283695561029522">کنفیگر کرنے کیلئے تھپتھپائیں</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">نیا سیلولر نیٹ ورک شامل کریں</translation>
+<translation id="7720410380936703141">دوبارہ کوشش کریں</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 اطلاع}other{# اطلاعات}}</translation>
 <translation id="7724603315864178912">کٹ کریں</translation>
 <translation id="7745560842763881396">شیلف میں ایپس دکھائیں</translation>
@@ -1169,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590"><ph name="IME_NAME" /> کے ذریعے</translation>
 <translation id="899350903320462459">اطلاع کی کارروائی کرنے کیلئے، آلے کو بطور <ph name="LOGIN_ID" /> غیر مقفل کریں</translation>
+<translation id="9000771174482730261">اسٹوریج کا نظم کریں</translation>
 <translation id="9017320285115481645">‏Family Link کا والدین کا رسائی کا کوڈ درج کریں۔</translation>
 <translation id="9024331582947483881">پوری اسکرین</translation>
 <translation id="9047624247355796468"><ph name="NETWORK_NAME" /> کے لیے ترتیبات کھولیں</translation>
@@ -1214,6 +1222,7 @@
 <translation id="938963181863597773">میرے کیلینڈر میں کیا ہے؟</translation>
 <translation id="945522503751344254">تاثرات بھیجیں</translation>
 <translation id="951991426597076286">مسترد کریں</translation>
+<translation id="954052413789300507"><ph name="FILENAME" /> کے لیے کافی جگہ نہیں ہے۔ جگہ خالی کریں۔</translation>
 <translation id="974545358917229949"><ph name="QUERY" /> کے <ph name="RESULT_COUNT" /> نتائج دکھائے جا رہے ہیں</translation>
 <translation id="98515147261107953">لینڈ اسکیپ</translation>
 <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> ونڈو بند ہے۔</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 92dcd57..ec956a93 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Không gian làm việc 7</translation>
 <translation id="2224075387478458881">Không thể sử dụng chức năng ghi màn hình khi có nội dung được bảo vệ</translation>
 <translation id="225680501294068881">Đang quét tìm thiết bị...</translation>
+<translation id="2257486738914982088">Đã xảy ra lỗi trong khi tải <ph name="FILENAME" /> xuống</translation>
 <translation id="2268130516524549846">Đã tắt bluetooth</translation>
 <translation id="2268813581635650749">Đăng xuất tất cả</translation>
 <translation id="2269016722240250274">Một ứng dụng đang sử dụng micrô của bạn</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Bạn có chắc chắn muốn tắt tính năng tự động nhấp không?</translation>
 <translation id="4849058404725798627">Đánh dấu đối tượng bằng tiêu điểm bàn phím</translation>
 <translation id="485592688953820832">Không có hành động nào (tạm dừng)</translation>
+<translation id="4860284199500934869">Hãy kiểm tra kết nối mạng của bạn để tải <ph name="FILENAME" /> xuống</translation>
 <translation id="486056901304535126">Thử tải xuống sau. Dữ liệu giọng nói sẽ được gửi tới Google để xử lý cho đến khi quá trình tải xuống hoàn tất.</translation>
 <translation id="4868492592575313542">đã bật</translation>
 <translation id="4872237917498892622">Alt+Search hoặc Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Từ chối</translation>
 <translation id="6453179446719226835">Đã thay đổi ngôn ngữ</translation>
 <translation id="6459472438155181876">Đang mở rộng màn hình tới <ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Không tải được tệp xuống</translation>
 <translation id="6482559668224714696">Phóng to toàn màn hình</translation>
 <translation id="6490471652906364588">Thiết bị USB-C (cổng bên phải)</translation>
 <translation id="6491071886865974820">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 trước thời hạn</translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">Ko làm phiền</translation>
 <translation id="65320610082834431">Biểu tượng cảm xúc</translation>
 <translation id="6537924328260219877">Cường độ tín hiệu <ph name="SIGNAL_STRENGTH" />, Pin điện thoại <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">Đang quét tệp tải xuống <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Đang truyền tới <ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Mới cài đặt</translation>
 <translation id="6559976592393364813">Hỏi quản trị viên</translation>
 <translation id="6565007273808762236">Kết nối eSIM không có sẵn</translation>
 <translation id="6570831796530454248">{0,plural, =1{Cập nhật thiết bị trong vòng 1 giờ}other{Cập nhật thiết bị trong vòng # giờ}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">Nguồn</translation>
 <translation id="6727969043791803658">Đã kết nối, <ph name="BATTERY_PERCENTAGE" />% pin</translation>
 <translation id="6732800389263199929">+ <ph name="COUNT" /></translation>
+<translation id="6739144137573853180">CHUYỂN ĐẾN PHẦN CÀI ĐẶT</translation>
 <translation id="6751052314767925245">Do quản trị viên thực thi</translation>
 <translation id="6751826523481687655">Tính năng theo dõi hiệu suất đang bật</translation>
 <translation id="6752912906630585008">Đã xóa và hợp nhất Không gian làm việc <ph name="REMOVED_DESK" /> với Không gian làm việc <ph name="RECEIVE_DESK" /></translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">Nhấn để định cấu hình</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">Thêm mạng di động mới</translation>
+<translation id="7720410380936703141">THỬ LẠI</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 thông báo}other{# thông báo}}</translation>
 <translation id="7724603315864178912">Cắt</translation>
 <translation id="7745560842763881396">Hiện các ứng dụng trên kệ</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">Đang dùng <ph name="IME_NAME" /></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>
 <translation id="9024331582947483881">toàn màn hình</translation>
 <translation id="9047624247355796468">Mở tùy chọn cài đặt cho <ph name="NETWORK_NAME" /></translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">Trên lịch của tôi có sự kiện gì?</translation>
 <translation id="945522503751344254">Gửi phản hồi</translation>
 <translation id="951991426597076286">Từ chối</translation>
+<translation id="954052413789300507">Không đủ dung lượng cho <ph name="FILENAME" />. Giải phóng dung lượng.</translation>
 <translation id="974545358917229949">Đang hiển thị <ph name="RESULT_COUNT" /> kết quả cho <ph name="QUERY" /></translation>
 <translation id="98515147261107953">Khổ ngang</translation>
 <translation id="990277280839877440">Đã đóng cửa sổ <ph name="WINDOW_TITILE" />.</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 4a2d3283..862d071d 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">桌面 7</translation>
 <translation id="2224075387478458881">禁止在屏幕显示受保护内容时录制屏幕</translation>
 <translation id="225680501294068881">正在查找设备...</translation>
+<translation id="2257486738914982088">下载“<ph name="FILENAME" />”时出了点问题</translation>
 <translation id="2268130516524549846">蓝牙已停用</translation>
 <translation id="2268813581635650749">全部退出</translation>
 <translation id="2269016722240250274">有一个应用正在使用您的麦克风</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">确定要关闭自动点击吗?</translation>
 <translation id="4849058404725798627">突出显示键盘焦点所在对象</translation>
 <translation id="485592688953820832">不执行任何操作(暂停)</translation>
+<translation id="4860284199500934869">请检查您的网络连接状况以下载“<ph name="FILENAME" />”</translation>
 <translation id="486056901304535126">系统会于晚些时候再次尝试下载。系统会将语音发送给 Google 以供处理,直到下载完毕。</translation>
 <translation id="4868492592575313542">已启用</translation>
 <translation id="4872237917498892622">Alt + 搜索键或 Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">拒绝</translation>
 <translation id="6453179446719226835">语言已更改</translation>
 <translation id="6459472438155181876">正在将屏幕扩展到<ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">无法下载文件</translation>
 <translation id="6482559668224714696">全屏放大镜</translation>
 <translation id="6490471652906364588">USB-C 设备(右侧端口)</translation>
 <translation id="6491071886865974820"><ph name="MANAGER" /> 要求您在截止日期之前更新 <ph name="DEVICE_TYPE" /></translation>
@@ -815,7 +818,10 @@
 <translation id="6528179044667508675">请勿打扰</translation>
 <translation id="65320610082834431">表情符号</translation>
 <translation id="6537924328260219877">信号强度为 <ph name="SIGNAL_STRENGTH" />,剩余电量为 <ph name="BATTERY_STATUS" /></translation>
+<translation id="6539852571005954999">正在扫描要下载的文件“<ph name="FILENAME" />”</translation>
 <translation id="6542521951477560771">正在投射到<ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+新安装</translation>
 <translation id="6559976592393364813">询问您的管理员</translation>
 <translation id="6565007273808762236">无法连接 eSIM 卡</translation>
 <translation id="6570831796530454248">{0,plural, =1{请在 1 小时内更新此设备}other{请在 # 小时内更新此设备}}</translation>
@@ -847,6 +853,7 @@
 <translation id="6723839937902243910">电源</translation>
 <translation id="6727969043791803658">已连接,剩余电量为 <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">转到“设置”</translation>
 <translation id="6751052314767925245">由您的管理员强制执行</translation>
 <translation id="6751826523481687655">已启用性能跟踪</translation>
 <translation id="6752912906630585008">桌面“<ph name="REMOVED_DESK" />”已移除并与桌面“<ph name="RECEIVE_DESK" />”合并</translation>
@@ -982,6 +989,7 @@
 <translation id="7662283695561029522">点按即可配置</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">添加新的移动网络</translation>
+<translation id="7720410380936703141">重试</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 条通知}other{# 条通知}}</translation>
 <translation id="7724603315864178912">剪切</translation>
 <translation id="7745560842763881396">显示任务栏中的应用</translation>
@@ -1168,6 +1176,7 @@
 <translation id="8983038754672563810">HSPA</translation>
 <translation id="8990809378771970590">目前使用的是“<ph name="IME_NAME" />”</translation>
 <translation id="899350903320462459">以 <ph name="LOGIN_ID" /> 身份解锁设备即可执行通知操作</translation>
+<translation id="9000771174482730261">管理存储空间</translation>
 <translation id="9017320285115481645">输入 Family Link 家长访问码。</translation>
 <translation id="9024331582947483881">全屏</translation>
 <translation id="9047624247355796468">打开“<ph name="NETWORK_NAME" />”的设置。</translation>
@@ -1213,6 +1222,7 @@
 <translation id="938963181863597773">我的日历中有哪些活动?</translation>
 <translation id="945522503751344254">发送反馈</translation>
 <translation id="951991426597076286">拒绝</translation>
+<translation id="954052413789300507">空间不足,无法下载“<ph name="FILENAME" />”。请先释放空间。</translation>
 <translation id="974545358917229949">显示了 <ph name="RESULT_COUNT" /> 条与“<ph name="QUERY" />”相符的结果</translation>
 <translation id="98515147261107953">横向</translation>
 <translation id="990277280839877440">已关闭窗口“<ph name="WINDOW_TITILE" />”。</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index d706fb12..ce41a7b 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -192,7 +192,7 @@
 <translation id="2222841058024245321">桌面 7</translation>
 <translation id="2224075387478458881">當畫面上有受保護的內容時,就無法使用螢幕畫面錄影功能</translation>
 <translation id="225680501294068881">正在掃描裝置…</translation>
-<translation id="2257486738914982088">下載「<ph name="FILENAME" />」時發生問題</translation>
+<translation id="2257486738914982088">下載「<ph name="FILENAME" />」時發生錯誤</translation>
 <translation id="2268130516524549846">藍牙已停用</translation>
 <translation id="2268813581635650749">登出所有使用者</translation>
 <translation id="2269016722240250274">某個應用程式正在使用麥克風</translation>
@@ -622,6 +622,7 @@
 <translation id="5075554201838155866">啟用字幕</translation>
 <translation id="5078796286268621944">PIN 不正確</translation>
 <translation id="5083553833479578423">啟用更多「Google 助理」功能。</translation>
+<translation id="5106223312672646208">個人化</translation>
 <translation id="5117590920725113268">顯示下個月</translation>
 <translation id="5136175204352732067">已連接不同的鍵盤</translation>
 <translation id="5147567197700016471">已解鎖</translation>
@@ -817,7 +818,7 @@
 <translation id="6528179044667508675">請勿騷擾</translation>
 <translation id="65320610082834431">Emoji</translation>
 <translation id="6537924328260219877">訊號強度係 <ph name="SIGNAL_STRENGTH" />,手機電量係 <ph name="BATTERY_STATUS" /></translation>
-<translation id="6539852571005954999">正在掃描下載項目「<ph name="FILENAME" />」</translation>
+<translation id="6539852571005954999">掃瞄緊下載項目 <ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">正在投放至<ph name="RECEIVER_NAME" /></translation>
 <translation id="655633303491376835">新安裝的「<ph name="APP_NAME" />」</translation>
 <translation id="6559976592393364813">詢問管理員</translation>
@@ -1220,7 +1221,7 @@
 <translation id="938963181863597773">我日曆有咩活動?</translation>
 <translation id="945522503751344254">提供意見反映</translation>
 <translation id="951991426597076286">拒絕</translation>
-<translation id="954052413789300507">可用空間不足,無法下載「<ph name="FILENAME" />」。請釋出空間。</translation>
+<translation id="954052413789300507">可用空間不足,無法下載「<ph name="FILENAME" />」。請騰出空間。</translation>
 <translation id="974545358917229949">顯示緊 <ph name="RESULT_COUNT" /> 個同「<ph name="QUERY" />」有關嘅結果</translation>
 <translation id="98515147261107953">橫向</translation>
 <translation id="990277280839877440">視窗 <ph name="WINDOW_TITILE" /> 閂咗。</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index b2d6ff12..1ae3dff 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -623,6 +623,7 @@
 <translation id="5075554201838155866">啟用隱藏式輔助字幕</translation>
 <translation id="5078796286268621944">PIN 不正確</translation>
 <translation id="5083553833479578423">啟用更多 Google 助理功能。</translation>
+<translation id="5106223312672646208">個人化</translation>
 <translation id="5117590920725113268">顯示下一個月</translation>
 <translation id="5136175204352732067">已連接其他鍵盤</translation>
 <translation id="5147567197700016471">已解鎖</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb
index 1b5a827..71b2088 100644
--- a/ash/strings/ash_strings_zu.xtb
+++ b/ash/strings/ash_strings_zu.xtb
@@ -192,6 +192,7 @@
 <translation id="2222841058024245321">Itafula 7</translation>
 <translation id="2224075387478458881">Ukurekhoda isikrini akuvumelekile lapho okuqukethwe okuvikelekile kungabonakali</translation>
 <translation id="225680501294068881">Iskenela amadivayisi...</translation>
+<translation id="2257486738914982088">Okuthile akuhambanga kahle lapho udawuniloda i-<ph name="FILENAME" /></translation>
 <translation id="2268130516524549846">I-Bluetooth ikhutshaziwe</translation>
 <translation id="2268813581635650749">Phuma kuwo wonke</translation>
 <translation id="2269016722240250274">Uhlelo lwakho lokusebenza lusebenzisa imakrofoni yakho</translation>
@@ -587,6 +588,7 @@
 <translation id="4831034276697007977">Ingabe uqinisekile ukuthi ufuna ukuvala ukuchofoza kwangokwezifiso?</translation>
 <translation id="4849058404725798627">Gqamisa into nokugxila kwekhibhodi</translation>
 <translation id="485592688953820832">Asikho isenzo (kuphumuziwe)</translation>
+<translation id="4860284199500934869">Hlola uxhumo lwenethiwekhi yakho ukuze udawunilode i-<ph name="FILENAME" /></translation>
 <translation id="486056901304535126">Ukudawuniloda kuzozanywa kamuva. Inkulumo izothunyelwa ku-Google ukuze icubungulwe kuze kuqedwe ukudawuniloda.</translation>
 <translation id="4868492592575313542">yenziwe yasebenza</translation>
 <translation id="4872237917498892622">I-Alt+Search noma i-Shift</translation>
@@ -804,6 +806,7 @@
 <translation id="6452181791372256707">Yenqaba</translation>
 <translation id="6453179446719226835">Ulimi lushintshiwe</translation>
 <translation id="6459472438155181876">Ikhulisa isikrini sibe ku-<ph name="DISPLAY_NAME" /></translation>
+<translation id="6477681113376365978">Ayikwazi ukudawuniloda ifayela</translation>
 <translation id="6482559668224714696">Isikhulisi sesikrini esidokhiwe</translation>
 <translation id="6490471652906364588">Idivayisi ye-USB-C (imbobo engakwesokudla)</translation>
 <translation id="6491071886865974820">I-<ph name="MANAGER" /> ifuna ukuba ubuyekeze i-<ph name="DEVICE_TYPE" /> yakho ngaphambi komnqamulajuqu</translation>
@@ -817,6 +820,8 @@
 <translation id="6537924328260219877">Amandla esignali <ph name="SIGNAL_STRENGTH" />, Ibhethri lefoni <ph name="BATTERY_STATUS" /></translation>
 <translation id="6539852571005954999">Ukudawuniloda kuskena i-<ph name="FILENAME" /></translation>
 <translation id="6542521951477560771">Ukusakaza ku-<ph name="RECEIVER_NAME" /></translation>
+<translation id="655633303491376835"><ph name="APP_NAME" />
+Ukufaka okusha</translation>
 <translation id="6559976592393364813">Buza umlawuli</translation>
 <translation id="6565007273808762236">uxhumo lwe-eSIM alutholakali</translation>
 <translation id="6570831796530454248">{0,plural, =1{Buyekeza idivayisi phakathi nehora}one{Buyekeza idivayisi phakathi namahora angu-#}other{Buyekeza idivayisi phakathi namahora angu-#}}</translation>
@@ -848,6 +853,7 @@
 <translation id="6723839937902243910">Amandla</translation>
 <translation id="6727969043791803658">Ixhunyiwe, ibhethri ngu-<ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="6732800389263199929">+<ph name="COUNT" /></translation>
+<translation id="6739144137573853180">IYA KUMASETHINGI</translation>
 <translation id="6751052314767925245">Kulawulwa umphathi wakho</translation>
 <translation id="6751826523481687655">Ukulandelela kokusebenza kuvuliwe</translation>
 <translation id="6752912906630585008">Ideski <ph name="REMOVED_DESK" /> lisusiwe futhi lahlanganiswa nedeski <ph name="RECEIVE_DESK" /></translation>
@@ -983,6 +989,7 @@
 <translation id="7662283695561029522">Thepha ukuze ulungiselele</translation>
 <translation id="7705524343798198388">I-VPN</translation>
 <translation id="7714767791242455379">Engeza inethiwekhi yeselula entsha</translation>
+<translation id="7720410380936703141">ZAMA FUTHI</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 isaziso}one{# izaziso}other{# izaziso}}</translation>
 <translation id="7724603315864178912">Sika</translation>
 <translation id="7745560842763881396">Bonisa izinhlelo zokusebenza kushelufu</translation>
@@ -1169,6 +1176,7 @@
 <translation id="8983038754672563810">I-HSPA</translation>
 <translation id="8990809378771970590">Usebenzisa i-<ph name="IME_NAME" /></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>
 <translation id="9024331582947483881">isikrini esigcwele</translation>
 <translation id="9047624247355796468">Vula izilungiselelo ze-<ph name="NETWORK_NAME" /></translation>
@@ -1214,6 +1222,7 @@
 <translation id="938963181863597773">Yini okukukhalenda yami?</translation>
 <translation id="945522503751344254">Thumela impendulo</translation>
 <translation id="951991426597076286">Yenqaba</translation>
+<translation id="954052413789300507">Akunasikhala esanele se-<ph name="FILENAME" />. Khulula isikhala.</translation>
 <translation id="974545358917229949">Kuboniswa imphumela engu-<ph name="RESULT_COUNT" /> ye-<ph name="QUERY" /></translation>
 <translation id="98515147261107953">Ukwakheka kwezwe</translation>
 <translation id="990277280839877440">Iwindi elingu-<ph name="WINDOW_TITILE" /> livaliwe.</translation>
diff --git a/ash/webui/camera_app_ui/camera_app_ui.cc b/ash/webui/camera_app_ui/camera_app_ui.cc
index 0689aed..4a39291e 100644
--- a/ash/webui/camera_app_ui/camera_app_ui.cc
+++ b/ash/webui/camera_app_ui/camera_app_ui.cc
@@ -206,6 +206,8 @@
   allowlist->RegisterAutoGrantedPermission(host_origin,
                                            ContentSettingsType::IDLE_DETECTION);
 
+  delegate_->SetLaunchDirectory();
+
   window()->SetProperty(kMinimizeOnBackKey, false);
 
   // Set up the data source.
diff --git a/ash/webui/camera_app_ui/camera_app_ui_delegate.h b/ash/webui/camera_app_ui/camera_app_ui_delegate.h
index 65ddd3cd..640e658ac 100644
--- a/ash/webui/camera_app_ui/camera_app_ui_delegate.h
+++ b/ash/webui/camera_app_ui/camera_app_ui_delegate.h
@@ -33,6 +33,10 @@
 
   virtual ~CameraAppUIDelegate() = default;
 
+  // Sets Downloads folder as launch directory by File Handling API so that we
+  // can get the handle on the app side.
+  virtual void SetLaunchDirectory() = 0;
+
   // Takes a WebUIDataSource, and adds load time data into it.
   virtual void PopulateLoadTimeData(content::WebUIDataSource* source) = 0;
 
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 bbcd18f0..2a92981 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videoresolusie</translation>
 <translation id="7337660886763914220">Lêerstelselfoute.</translation>
 <translation id="7450541714075000668">Teks gekopieer</translation>
-<translation id="7476762461674917065">Wys GIF-opname-opsie</translation>
 <translation id="7488619942230388918">Neem GIF-video op</translation>
 <translation id="7557677699350329807">Skakel oor na volgende kamera</translation>
 <translation id="7607002721634913082">Laat wag</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 be2dd4e8..30cbc8b 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">የቪዲዮ ምስል ጥራት</translation>
 <translation id="7337660886763914220">የፋይል ሥርዓት ስህተቶች።</translation>
 <translation id="7450541714075000668">ፅሁፍ ገልብጧል</translation>
-<translation id="7476762461674917065">የGIF ቀረጻ አማራጭን አሳይ</translation>
 <translation id="7488619942230388918">የጂአይኤፍ ቪዲዮን ይቅረጹ</translation>
 <translation id="7557677699350329807">ወደ ቀጣዩ ካሜራ ቀይር</translation>
 <translation id="7607002721634913082">ለአፍታ ቆሟል</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb
index 40ee85e..224d02d7 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb
@@ -118,7 +118,6 @@
 <translation id="7243947652761655814">درجة دقة الفيديو</translation>
 <translation id="7337660886763914220">أخطاء نظام الملفات.</translation>
 <translation id="7450541714075000668">تم نسخ النص.</translation>
-<translation id="7476762461674917065">‏عرض خيار التسجيل بتنسيق GIF</translation>
 <translation id="7488619942230388918">‏تسجيل فيديو بتنسيق GIF</translation>
 <translation id="7557677699350329807">التبديل إلى الكاميرا التالية</translation>
 <translation id="7607002721634913082">تعليق التحميل</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb
index 602f331b..bd34030b 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ভিডিঅ’ৰ ৰিজ’লিউশ্বন</translation>
 <translation id="7337660886763914220">ফাইল ছিষ্টেমৰ আসোঁৱাহ।</translation>
 <translation id="7450541714075000668">পাঠৰ প্ৰতিলিপি কৰা হ’ল</translation>
-<translation id="7476762461674917065">GIF ৰেকৰ্ড কৰাৰ বিকল্প দেখুৱাওক</translation>
 <translation id="7488619942230388918">GIF ভিডিঅ’ ৰেকৰ্ড কৰক</translation>
 <translation id="7557677699350329807">পৰৱৰ্তী কেমেৰালৈ সলনি কৰক</translation>
 <translation id="7607002721634913082">পজ হৈ আছে</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 68c5782..cbd2e5e6b 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
@@ -115,7 +115,6 @@
 <translation id="7243947652761655814">Videonun ayırdetmə dəqiqliyi</translation>
 <translation id="7337660886763914220">Fayl sistemi xətaları.</translation>
 <translation id="7450541714075000668">Mətn kopyalandı</translation>
-<translation id="7476762461674917065">GIF qeydəalma seçimini göstərin</translation>
 <translation id="7488619942230388918">GIF video çəkin</translation>
 <translation id="7557677699350329807">Növbəti kameraya keçin</translation>
 <translation id="7607002721634913082">Durduruldu</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 79b97f1..d357f889 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Раздзяляльнасць відэа</translation>
 <translation id="7337660886763914220">Памылкі ў файлавай сістэме.</translation>
 <translation id="7450541714075000668">Тэкст скапіраваны</translation>
-<translation id="7476762461674917065">Паказаць варыянт запісу файла GIF</translation>
 <translation id="7488619942230388918">Запісаць відэа ў фармаце GIF</translation>
 <translation id="7557677699350329807">Пераключыцца на наступную камеру</translation>
 <translation id="7607002721634913082">Прыпынена</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
index 6fb34e53..00a6863 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Разделителна способност за видеоклиповете</translation>
 <translation id="7337660886763914220">Грешки във файловата система.</translation>
 <translation id="7450541714075000668">Текстът е копиран</translation>
-<translation id="7476762461674917065">Показване на опцията за запис на GIF</translation>
 <translation id="7488619942230388918">Записване на GIF</translation>
 <translation id="7557677699350329807">Превключване към следващата камера</translation>
 <translation id="7607002721634913082">На пауза</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_bn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_bn.xtb
index 5ead606..37db688 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_bn.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_bn.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ভিডিও রেজোলিউশন</translation>
 <translation id="7337660886763914220">ফাইল সিস্টেমে সমস্যা হয়েছে।</translation>
 <translation id="7450541714075000668">টেক্সট কপি করা হয়েছে</translation>
-<translation id="7476762461674917065">GIF রেকর্ড করার বিকল্প দেখুন</translation>
 <translation id="7488619942230388918">GIF ভিডিও রেকর্ড করুন</translation>
 <translation id="7557677699350329807">পরের ক্যামেরা বেছে নিন</translation>
 <translation id="7607002721634913082">বিরত রয়েছে</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 675a032..edcf6c8f 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Rezolucija videozapisa</translation>
 <translation id="7337660886763914220">Greške sistema fajlova.</translation>
 <translation id="7450541714075000668">Tekst je kopiran</translation>
-<translation id="7476762461674917065">Prikaži opciju za snimanje GIF-a</translation>
 <translation id="7488619942230388918">Snimi GIF videozapis</translation>
 <translation id="7557677699350329807">Prebaci na sljedeću kameru</translation>
 <translation id="7607002721634913082">Pauzirano</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
index c4b50cd..3ba3f46 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolució del vídeo</translation>
 <translation id="7337660886763914220">Hi ha errors al sistema de fitxers.</translation>
 <translation id="7450541714075000668">El text s'ha copiat</translation>
-<translation id="7476762461674917065">Mostra l'opció de gravació en format GIF</translation>
 <translation id="7488619942230388918">Grava un vídeo en format GIF</translation>
 <translation id="7557677699350329807">Canvia a la càmera següent</translation>
 <translation id="7607002721634913082">En pausa</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 fd6f29f..c09bdbd 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Rozlišení videa</translation>
 <translation id="7337660886763914220">Chyby systému souborů.</translation>
 <translation id="7450541714075000668">Text byl zkopírován</translation>
-<translation id="7476762461674917065">Zobrazit možnost záznamu obrázku GIF</translation>
 <translation id="7488619942230388918">Nahrát video GIF</translation>
 <translation id="7557677699350329807">Přepnout na další fotoaparát</translation>
 <translation id="7607002721634913082">Přerušeno</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
index 5a2e37cb..894e2f3 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
@@ -118,7 +118,6 @@
 <translation id="7243947652761655814">Videoopløsning</translation>
 <translation id="7337660886763914220">Der er fejl i filsystemet.</translation>
 <translation id="7450541714075000668">Teksten blev kopieret</translation>
-<translation id="7476762461674917065">Vis valgmulighed for gifoptagelse</translation>
 <translation id="7488619942230388918">Optag gifvideo</translation>
 <translation id="7557677699350329807">Skift til næste kamera</translation>
 <translation id="7607002721634913082">Sat på pause</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb
index ea900ec..f200672 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videoauflösung</translation>
 <translation id="7337660886763914220">Fehler im Dateisystem.</translation>
 <translation id="7450541714075000668">Text kopiert</translation>
-<translation id="7476762461674917065">Option zur Aufnahme von GIFs anzeigen</translation>
 <translation id="7488619942230388918">GIF-Video aufzeichnen</translation>
 <translation id="7557677699350329807">Zur nächsten Kamera wechseln</translation>
 <translation id="7607002721634913082">Angehalten</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb
index 18994f9..7094332 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Ανάλυση βίντεο</translation>
 <translation id="7337660886763914220">Σφάλματα συστήματος αρχείων.</translation>
 <translation id="7450541714075000668">Το κείμενο αντιγράφηκε</translation>
-<translation id="7476762461674917065">Εμφάνιση επιλογής εγγραφής GIF</translation>
 <translation id="7488619942230388918">Εγγραφή βίντεο GIF</translation>
 <translation id="7557677699350329807">Μετάβαση στην επόμενη κάμερα</translation>
 <translation id="7607002721634913082">Έγινε παύση</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb
index 40fef499..44e99c4 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Video resolution</translation>
 <translation id="7337660886763914220">File system errors.</translation>
 <translation id="7450541714075000668">Text copied</translation>
-<translation id="7476762461674917065">Show GIF recording option</translation>
 <translation id="7488619942230388918">Record GIF video</translation>
 <translation id="7557677699350329807">Switch to next camera</translation>
 <translation id="7607002721634913082">Paused</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 6f3d78d..e936dbce 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolución de video</translation>
 <translation id="7337660886763914220">Errores en el sistema de archivos</translation>
 <translation id="7450541714075000668">Se copió el texto.</translation>
-<translation id="7476762461674917065">Mostrar opción de grabación de GIF</translation>
 <translation id="7488619942230388918">Grabar video de GIF</translation>
 <translation id="7557677699350329807">Cambiar a la siguiente cámara</translation>
 <translation id="7607002721634913082">Detenido</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 829319f..0a069a45 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolución de vídeo</translation>
 <translation id="7337660886763914220">Errores del sistema de archivos.</translation>
 <translation id="7450541714075000668">Texto copiado</translation>
-<translation id="7476762461674917065">Mostrar opción de grabación de GIF</translation>
 <translation id="7488619942230388918">Grabar vídeo GIF</translation>
 <translation id="7557677699350329807">Cambiar a la siguiente cámara</translation>
 <translation id="7607002721634913082">En pausa</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 eec595f2..9b5fd8b5 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Video eraldusvõime</translation>
 <translation id="7337660886763914220">Failisüsteemi vead.</translation>
 <translation id="7450541714075000668">Tekst on kopeeritud</translation>
-<translation id="7476762461674917065">Kuva GIF-i salvestamise valik</translation>
 <translation id="7488619942230388918">GIF-video salvestamine</translation>
 <translation id="7557677699350329807">Vaheta järgmisele kaamerale</translation>
 <translation id="7607002721634913082">Peatatud</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb
index 8c48527..3bb476e 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Bideoaren bereizmena</translation>
 <translation id="7337660886763914220">Errore batzuk gertatu dira fitxategi-sisteman.</translation>
 <translation id="7450541714075000668">Kopiatu da testua</translation>
-<translation id="7476762461674917065">Erakutsi GIFak grabatzeko aukera</translation>
 <translation id="7488619942230388918">Grabatu GIF formatuko bideo bat</translation>
 <translation id="7557677699350329807">Aldatu hurrengo kamerara</translation>
 <translation id="7607002721634913082">Pausatuta</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb
index 829c56a..d818d0e1 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">وضوح ویدیو</translation>
 <translation id="7337660886763914220">خطاهایی در سیستم فایل روی داده است.</translation>
 <translation id="7450541714075000668">نوشتار کپی شد</translation>
-<translation id="7476762461674917065">‏گزینه «نمایش GIF ضبط‌شده»</translation>
 <translation id="7488619942230388918">‏ضبط ویدیوی GIF</translation>
 <translation id="7557677699350329807">جابه‌جایی به دوربین بعدی</translation>
 <translation id="7607002721634913082">متوقف</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 61cc8a6..35201c03 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videon resoluutio</translation>
 <translation id="7337660886763914220">Tiedostojärjestelmän virheitä</translation>
 <translation id="7450541714075000668">Teksti kopioitu</translation>
-<translation id="7476762461674917065">Näytä GIF-tiedoston tallennusvaihtoehto</translation>
 <translation id="7488619942230388918">Kuvaa GIF-video</translation>
 <translation id="7557677699350329807">Vaihda seuraavaan kameraan</translation>
 <translation id="7607002721634913082">Keskeytetty</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
index 7dbcebb..559faf5 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolution ng video</translation>
 <translation id="7337660886763914220">Mga error sa file system.</translation>
 <translation id="7450541714075000668">Nakopya ang text</translation>
-<translation id="7476762461674917065">Ipakita ang opsyon sa pag-record ng GIF</translation>
 <translation id="7488619942230388918">Mag-record ng GIF na video</translation>
 <translation id="7557677699350329807">Lumipat sa susunod na camera</translation>
 <translation id="7607002721634913082">I-pause</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 5d6d5c2..856e467 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
@@ -22,6 +22,7 @@
 <translation id="1851616744363735765">INTERROMPU</translation>
 <translation id="1862930711583847113">Impossible d'exporter <ph name="FILE" /></translation>
 <translation id="1899697626337024495">Résolution des photos</translation>
+<translation id="1925845977604399247">Accéder à la galerie</translation>
 <translation id="2022953316617983419">Code QR</translation>
 <translation id="2036868001356139588">Durée de la minuterie</translation>
 <translation id="2050339315714019657">Portrait</translation>
@@ -116,7 +117,6 @@
 <translation id="7243947652761655814">Résolution vidéo</translation>
 <translation id="7337660886763914220">Erreurs de système de fichiers.</translation>
 <translation id="7450541714075000668">Texte copié</translation>
-<translation id="7476762461674917065">Afficher l'option d'enregistrement GIF</translation>
 <translation id="7488619942230388918">Enregistrer une vidéo en mode GIF</translation>
 <translation id="7557677699350329807">Passer à l'appareil photo suivant</translation>
 <translation id="7607002721634913082">Interrompu</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 31841f6..01375243 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Résolution vidéo</translation>
 <translation id="7337660886763914220">Erreurs du système de fichiers.</translation>
 <translation id="7450541714075000668">Texte copié</translation>
-<translation id="7476762461674917065">Afficher l'option d'enregistrement GIF</translation>
 <translation id="7488619942230388918">Enregistrer une vidéo GIF</translation>
 <translation id="7557677699350329807">Passer à la caméra suivante</translation>
 <translation id="7607002721634913082">Suspendu</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 d72295a..dae3a4b 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolución de vídeo</translation>
 <translation id="7337660886763914220">Producíronse erros relacionados co sistema de ficheiros.</translation>
 <translation id="7450541714075000668">Copiouse o texto</translation>
-<translation id="7476762461674917065">Mostrar opción de gravación de GIF</translation>
 <translation id="7488619942230388918">Gravar vídeo GIF</translation>
 <translation id="7557677699350329807">Cambiar á seguinte cámara</translation>
 <translation id="7607002721634913082">En pausa</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb
index 01f03607..e2613e3 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">વીડિયો રિઝોલ્યુશન</translation>
 <translation id="7337660886763914220">ફાઇલ સિસ્ટમની ભૂલો.</translation>
 <translation id="7450541714075000668">ટેક્સ્ટ કૉપિ કરી</translation>
-<translation id="7476762461674917065">GIF રેકોર્ડ કરવાનો વિકલ્પ બતાવો</translation>
 <translation id="7488619942230388918">GIF વીડિયો રેકોર્ડ કરો</translation>
 <translation id="7557677699350329807">આગલા કૅમેરા પર સ્વિચ કરો</translation>
 <translation id="7607002721634913082">થોભાવેલું</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb
index 5a01990..2c9fd9c3 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">वीडियो का रिज़ॉल्यूशन</translation>
 <translation id="7337660886763914220">फ़ाइल सिस्टम की गड़बड़ियां.</translation>
 <translation id="7450541714075000668">टेक्स्ट कॉपी किया गया</translation>
-<translation id="7476762461674917065">GIF रिकॉर्डिंग का विकल्प दिखाएं</translation>
 <translation id="7488619942230388918">GIF वीडियो रिकॉर्ड करें</translation>
 <translation id="7557677699350329807">अगले कैमरे का इस्तेमाल करें</translation>
 <translation id="7607002721634913082">रोका गया</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 cdcf7c3..0862ad8 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Razlučivost videozapisa</translation>
 <translation id="7337660886763914220">Pogreške datotečnog sustava.</translation>
 <translation id="7450541714075000668">Tekst kopiran</translation>
-<translation id="7476762461674917065">Prikaži opciju snimanja GIF-a</translation>
 <translation id="7488619942230388918">Snimite GIF videozapis</translation>
 <translation id="7557677699350329807">Prijeđi na sljedeći fotoaparat</translation>
 <translation id="7607002721634913082">Pauzirano</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 efefd98e..b669a92 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videó felbontása</translation>
 <translation id="7337660886763914220">Fájlrendszerbeli hibák.</translation>
 <translation id="7450541714075000668">Szöveg vágólapra másolva</translation>
-<translation id="7476762461674917065">GIF-rögzítési lehetőség megjelenítése</translation>
 <translation id="7488619942230388918">GIF-videó rögzítése</translation>
 <translation id="7557677699350329807">Váltás a következő kamerára</translation>
 <translation id="7607002721634913082">Szünet</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 105d2d1..93698d9 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Տեսանյութի լուծաչափը</translation>
 <translation id="7337660886763914220">Ֆայլային համակարգի սխալներ են առաջացել:</translation>
 <translation id="7450541714075000668">Տեքստը պատճենվեց</translation>
-<translation id="7476762461674917065">Ցույց տալ «GIF ձևաչափով տեսագրում» պարամետրը</translation>
 <translation id="7488619942230388918">Տեսագրել GIF ձևաչափով տեսանյութ</translation>
 <translation id="7557677699350329807">Փոխել տեսախցիկը</translation>
 <translation id="7607002721634913082">Դադարեցված է</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb
index b7d4b52f..6f747d4 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolusi video</translation>
 <translation id="7337660886763914220">Error sistem file.</translation>
 <translation id="7450541714075000668">Teks disalin</translation>
-<translation id="7476762461674917065">Tampilkan opsi perekaman GIF</translation>
 <translation id="7488619942230388918">Rekam video GIF</translation>
 <translation id="7557677699350329807">Beralih ke kamera berikutnya</translation>
 <translation id="7607002721634913082">Dijeda</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 267478c3..2c708f0 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Upplausn myndskeiðs</translation>
 <translation id="7337660886763914220">Villur eru í skráakerfi.</translation>
 <translation id="7450541714075000668">Texti afritaður</translation>
-<translation id="7476762461674917065">Sýna GIF upptökuvalkost</translation>
 <translation id="7488619942230388918">Taka upp GIF-vídeó</translation>
 <translation id="7557677699350329807">Skipta yfir í næstu myndavél</translation>
 <translation id="7607002721634913082">Hlé</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 09fb830..c819bf71 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Risoluzione video</translation>
 <translation id="7337660886763914220">Errori del file system.</translation>
 <translation id="7450541714075000668">Testo copiato</translation>
-<translation id="7476762461674917065">Mostra opzione di registrazione GIF</translation>
 <translation id="7488619942230388918">Registra video GIF</translation>
 <translation id="7557677699350329807">Passa alla fotocamera successiva</translation>
 <translation id="7607002721634913082">In pausa</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb
index 9d146fd..5f0ae4d1 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">רזולוציית הווידאו</translation>
 <translation id="7337660886763914220">שגיאות במערכת הקבצים.</translation>
 <translation id="7450541714075000668">הטקסט הועתק</translation>
-<translation id="7476762461674917065">‏הצגת האפשרות להקלטת GIF</translation>
 <translation id="7488619942230388918">‏צילום סרטון בפורמט GIF</translation>
 <translation id="7557677699350329807">מעבר למצלמה הבאה</translation>
 <translation id="7607002721634913082">ההורדה בהשהיה</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb
index 3d84ac1f..091f988 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">動画の解像度</translation>
 <translation id="7337660886763914220">ファイル システムのエラーが発生しました。</translation>
 <translation id="7450541714075000668">テキストをコピーしました</translation>
-<translation id="7476762461674917065">GIF 記録オプションを表示</translation>
 <translation id="7488619942230388918">GIF 動画を録画する</translation>
 <translation id="7557677699350329807">次のカメラに切り替え</translation>
 <translation id="7607002721634913082">一時停止中</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 c92d911..5b625519 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ვიდეოს გარჩევადობა</translation>
 <translation id="7337660886763914220">ფაილების სისტემის შეცდომები.</translation>
 <translation id="7450541714075000668">ტექსტი დაკოპირდა</translation>
-<translation id="7476762461674917065">GIF-ის ჩაწერის ვარიანტის ჩვენება</translation>
 <translation id="7488619942230388918">GIF ვიდეოს ჩაწერა</translation>
 <translation id="7557677699350329807">მომდევნო კამერაზე გადართვა</translation>
 <translation id="7607002721634913082">დაპაუზებული</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 4c373b1..bdc52d7 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Бейне ажыратымдылығы</translation>
 <translation id="7337660886763914220">Файл жүйесінің қателері.</translation>
 <translation id="7450541714075000668">Мәтін көшірмесі жасалды</translation>
-<translation id="7476762461674917065">GIF жазу опциясын көрсету</translation>
 <translation id="7488619942230388918">GIF бейнесін жазу</translation>
 <translation id="7557677699350329807">Келесі камераға ауысу</translation>
 <translation id="7607002721634913082">Кідіртілген</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_km.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_km.xtb
index 5a5c350..7230212 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_km.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_km.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">កម្រិតច្បាស់នៃ​វីដេអូ</translation>
 <translation id="7337660886763914220">បញ្ហា​ប្រព័ន្ធ​ឯកសារ។</translation>
 <translation id="7450541714075000668">បាន​ចម្លង​អត្ថបទ</translation>
-<translation id="7476762461674917065">បង្ហាញជម្រើសនៃការថត GIF</translation>
 <translation id="7488619942230388918">ថតវីដេអូ GIF</translation>
 <translation id="7557677699350329807">ប្ដូរទៅ​កាមេរ៉ាបន្ទាប់</translation>
 <translation id="7607002721634913082">បានផ្អាក</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
index d40b505..b308d91 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ವೀಡಿಯೊ ರೆಸಲ್ಯೂಷನ್</translation>
 <translation id="7337660886763914220">ಫೈಲ್ ಸಿಸ್ಟಂ ದೋಷಗಳು.</translation>
 <translation id="7450541714075000668">ಪಠ್ಯವನ್ನು ನಕಲಿಸಲಾಗಿದೆ</translation>
-<translation id="7476762461674917065">GIF ರೆಕಾರ್ಡಿಂಗ್ ಆಯ್ಕೆಯನ್ನು ತೋರಿಸಿ</translation>
 <translation id="7488619942230388918">GIF ವೀಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಿ</translation>
 <translation id="7557677699350329807">ಮುಂದಿನ ಕ್ಯಾಮರಾಗೆ ಬದಲಿಸಿ</translation>
 <translation id="7607002721634913082">ವಿರಾಮದಲ್ಲಿದೆ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb
index 4b2f0ef..86063e7 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">동영상 해상도</translation>
 <translation id="7337660886763914220">파일 시스템 오류가 발생했습니다.</translation>
 <translation id="7450541714075000668">텍스트 복사됨</translation>
-<translation id="7476762461674917065">GIF 녹화 옵션 표시</translation>
 <translation id="7488619942230388918">GIF 동영상 녹화</translation>
 <translation id="7557677699350329807">다음 카메라로 전환</translation>
 <translation id="7607002721634913082">일시중지됨</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 c0dec2e..a9fb87e 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Видеонун дааналыгы</translation>
 <translation id="7337660886763914220">Файл тутумунда ката кетти.</translation>
 <translation id="7450541714075000668">Текст көчүрүлдү</translation>
-<translation id="7476762461674917065">GIF видеосун жаздыруу опцияларын көрсөтүү</translation>
 <translation id="7488619942230388918">GIF видеосун жаздыруу</translation>
 <translation id="7557677699350329807">Кийинки камераны иштетүү</translation>
 <translation id="7607002721634913082">Бир азга токтотулду</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 174bbe6..e5c85a65 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ຄວາມລະອຽດຂອງວິດີໂອ</translation>
 <translation id="7337660886763914220">ຂໍ້ຜິດພາດຂອງໄຟລ໌ລະບົບ.</translation>
 <translation id="7450541714075000668">ສຳເນົາຂໍ້ຄວາມແລ້ວ</translation>
-<translation id="7476762461674917065">ສະແດງຕົວເລືອກການບັນທຶກ GIF</translation>
 <translation id="7488619942230388918">ບັນທຶກວິດີໂອ GIF</translation>
 <translation id="7557677699350329807">ປ່ຽນເປັນກ້ອງຖັດໄປ</translation>
 <translation id="7607002721634913082">ຢຸດແລ້ວ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb
index fd40430..7db94ea 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Vaizdo įrašo skyra</translation>
 <translation id="7337660886763914220">Failų sistemos klaidos.</translation>
 <translation id="7450541714075000668">Tekstas nukopijuotas</translation>
-<translation id="7476762461674917065">Rodyti GIF įrašymo parinktį</translation>
 <translation id="7488619942230388918">Įrašyti GIF vaizdo įrašą</translation>
 <translation id="7557677699350329807">Perjungti į kitą fotoaparatą</translation>
 <translation id="7607002721634913082">Pristabdyta</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 dbca592..8bf210d9 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videoklipu izšķirtspēja</translation>
 <translation id="7337660886763914220">Failu sistēmas kļūdas.</translation>
 <translation id="7450541714075000668">Teksts ir nokopēts</translation>
-<translation id="7476762461674917065">Rādīt GIF ierakstīšanas iespēju</translation>
 <translation id="7488619942230388918">Ierakstīt GIF videoklipu</translation>
 <translation id="7557677699350329807">Pārslēgties uz nākamo kameru</translation>
 <translation id="7607002721634913082">Apturēta</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb
index 82f8411..06fc4c7 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Видеорезолуција</translation>
 <translation id="7337660886763914220">Грешки во системот со датотеки.</translation>
 <translation id="7450541714075000668">Текстот е копиран</translation>
-<translation id="7476762461674917065">Прикажи опција за снимање GIF</translation>
 <translation id="7488619942230388918">Снимете GIF-видео</translation>
 <translation id="7557677699350329807">Префрли на следната камера</translation>
 <translation id="7607002721634913082">Паузирано</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb
index a7184f0..9be7d4c 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">വീഡിയോ റെസല്യൂഷൻ</translation>
 <translation id="7337660886763914220">ഫയൽ സിസ്‌റ്റം പിശകുകൾ.</translation>
 <translation id="7450541714075000668">ടെക്‌സ്റ്റ് പകർത്തി</translation>
-<translation id="7476762461674917065">GIF റെക്കോർഡിംഗ് ഓപ്ഷൻ കാണിക്കുക</translation>
 <translation id="7488619942230388918">GIF വീഡിയോ റെക്കോർഡ് ചെയ്യുക</translation>
 <translation id="7557677699350329807">അടുത്ത ക്യാമറയിലേക്ക് മാറുക</translation>
 <translation id="7607002721634913082">അല്പംനിര്‍ത്തി</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb
index 0f6f220..8f863cc 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Видео нягтрал</translation>
 <translation id="7337660886763914220">Файлын системийн алдаа гарлаа.</translation>
 <translation id="7450541714075000668">Текстийг хуулсан</translation>
-<translation id="7476762461674917065">GIF бичих сонголтыг харуулах</translation>
 <translation id="7488619942230388918">GIF видео бичих</translation>
 <translation id="7557677699350329807">Дараагийн камер руу сэлгэх</translation>
 <translation id="7607002721634913082">зогссон</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
index d2ba8c4..347f084 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">व्हिडिओ रिझोल्युशन</translation>
 <translation id="7337660886763914220">फाइल सिस्टम एरर.</translation>
 <translation id="7450541714075000668">मजकूर कॉपी केला</translation>
-<translation id="7476762461674917065">GIF रेकॉर्डिंग पर्याय दाखवा</translation>
 <translation id="7488619942230388918">GIF व्हिडिओ रेकॉर्ड करा</translation>
 <translation id="7557677699350329807">पुढील कॅमेर्‍यावर स्विच करा</translation>
 <translation id="7607002721634913082">विराम द्या</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 1fdc03d..3a098b11b 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Peleraian video</translation>
 <translation id="7337660886763914220">Ralat sistem fail.</translation>
 <translation id="7450541714075000668">Teks disalin</translation>
-<translation id="7476762461674917065">Paparkan pilihan rakaman GIF</translation>
 <translation id="7488619942230388918">Rakam video GIF</translation>
 <translation id="7557677699350329807">Beralih kepada kamera seterusnya</translation>
 <translation id="7607002721634913082">Dijeda</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb
index 3832527..0e4c70cd 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ဗီဒီယို ပုံရိပ်ပြတ်သားကိန်း</translation>
 <translation id="7337660886763914220">ဖိုင်စနစ် အမှားများ။</translation>
 <translation id="7450541714075000668">စာသားကူးယူပြီးပါပြီ</translation>
-<translation id="7476762461674917065">GIF ဖမ်းယူနည်း ပြပါ</translation>
 <translation id="7488619942230388918">GIF ဗီဒီယို ရိုက်ကူးရန်</translation>
 <translation id="7557677699350329807">ကင်မရာနောက်တစ်ခုသို့ ပြောင်းရန်</translation>
 <translation id="7607002721634913082">ဆိုင်းငံ့ထား</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 050fd0d..8a1aef9 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">भिडियोको रिजोल्युसन</translation>
 <translation id="7337660886763914220">फाइल प्रणालीसम्बन्धी त्रुटिहरू।</translation>
 <translation id="7450541714075000668">टेक्स्ट कपी गरियो</translation>
-<translation id="7476762461674917065">GIF रेकर्ड गर्ने विकल्प देखाइयोस्</translation>
 <translation id="7488619942230388918">GIF भिडियो रेकर्ड गर्नुहोस्</translation>
 <translation id="7557677699350329807">अर्को क्यामेरा प्रयोग गर्नुहोस्</translation>
 <translation id="7607002721634913082">रोकिएको छ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb
index 4af5c51..33df4e4 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videoresolutie</translation>
 <translation id="7337660886763914220">Bestandssysteemfouten.</translation>
 <translation id="7450541714075000668">Tekst gekopieerd</translation>
-<translation id="7476762461674917065">Gif-opnameoptie bekijken</translation>
 <translation id="7488619942230388918">Gif-video opnemen</translation>
 <translation id="7557677699350329807">Naar volgende camera</translation>
 <translation id="7607002721634913082">Onderbroken</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 c188c3aa..e67e5b4 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videooppløsning</translation>
 <translation id="7337660886763914220">Filsystemfeil.</translation>
 <translation id="7450541714075000668">Teksten er kopiert</translation>
-<translation id="7476762461674917065">Vis alternativ for GIF-opptak</translation>
 <translation id="7488619942230388918">Ta opp GIF-video</translation>
 <translation id="7557677699350329807">Bytt til neste kamera</translation>
 <translation id="7607002721634913082">Satt på pause</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb
index 4ca801c1..b60a903 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ଭିଡିଓ ରିଜୋଲ୍ୟୁସନ୍</translation>
 <translation id="7337660886763914220">ଫାଇଲ୍ ସିଷ୍ଟମ୍‌ର ତ୍ରୁଟିଗୁଡ଼ିକ।</translation>
 <translation id="7450541714075000668">ଟେକ୍ସଟ୍ କପି କରାଯାଇଛି</translation>
-<translation id="7476762461674917065">GIF ରେକର୍ଡ କରିବାର ବିକଳ୍ପ ଦେଖାନ୍ତୁ</translation>
 <translation id="7488619942230388918">GIF ଭିଡିଓ ରେକର୍ଡ କରନ୍ତୁ</translation>
 <translation id="7557677699350329807">ପରବର୍ତ୍ତୀ କ୍ୟାମେରାକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation>
 <translation id="7607002721634913082">ଅଚଳିତ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb
index 68d7b10..0acccb7 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ਵੀਡੀਓ ਰੈਜ਼ੋਲਿਊਸ਼ਨ</translation>
 <translation id="7337660886763914220">ਫ਼ਾਈਲ ਸਿਸਟਮ ਗੜਬੜੀਆਂ।</translation>
 <translation id="7450541714075000668">ਲਿਖਤ ਕਾਪੀ ਕੀਤੀ ਗਈ</translation>
-<translation id="7476762461674917065">GIF ਰਿਕਾਰਡ ਕਰਨ ਵਾਲਾ ਵਿਕਲਪ ਦਿਖਾਓ</translation>
 <translation id="7488619942230388918">GIF ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰੋ</translation>
 <translation id="7557677699350329807">ਅਗਲੇ ਕੈਮਰੇ 'ਤੇ ਜਾਓ</translation>
 <translation id="7607002721634913082">ਰੋਕਿਆ ਗਿਆ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pl.xtb
index 6133b7c..9d2288b 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pl.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pl.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Rozdzielczość wideo</translation>
 <translation id="7337660886763914220">Błędy systemu plików.</translation>
 <translation id="7450541714075000668">Tekst został skopiowany</translation>
-<translation id="7476762461674917065">Pokaż opcje zapisywania GIF-a</translation>
 <translation id="7488619942230388918">Nagraj film GIF</translation>
 <translation id="7557677699350329807">Przełącz na następny aparat</translation>
 <translation id="7607002721634913082">Wstrzymano</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb
index 6590007d..7f36f6c 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolução do vídeo</translation>
 <translation id="7337660886763914220">Erros no sistema de arquivos.</translation>
 <translation id="7450541714075000668">Texto copiado</translation>
-<translation id="7476762461674917065">Mostrar opção de gravação de GIF</translation>
 <translation id="7488619942230388918">Gravar um GIF</translation>
 <translation id="7557677699350329807">Alternar para a próxima câmera</translation>
 <translation id="7607002721634913082">Pausado</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb
index 1b370be..49e660b 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Resolução do vídeo</translation>
 <translation id="7337660886763914220">Erros do sistema de ficheiros.</translation>
 <translation id="7450541714075000668">Texto copiado</translation>
-<translation id="7476762461674917065">Mostrar opção de gravação de GIF</translation>
 <translation id="7488619942230388918">Gravar vídeo GIF</translation>
 <translation id="7557677699350329807">Mudar para a câmara seguinte</translation>
 <translation id="7607002721634913082">Em pausa</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb
index 3ebb6eb..db1807d 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Rezoluție video</translation>
 <translation id="7337660886763914220">Erori în sistemul de fișiere.</translation>
 <translation id="7450541714075000668">Text copiat</translation>
-<translation id="7476762461674917065">Afișează opțiunea de înregistrare GIF</translation>
 <translation id="7488619942230388918">Înregistrează un videoclip GIF</translation>
 <translation id="7557677699350329807">Comută la următoarea cameră foto</translation>
 <translation id="7607002721634913082">Întreruptă</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 fd49ae5..87d64c8 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Разрешение видео</translation>
 <translation id="7337660886763914220">Ошибки файловой системы.</translation>
 <translation id="7450541714075000668">Текст скопирован.</translation>
-<translation id="7476762461674917065">Показывать функцию записи в формате GIF</translation>
 <translation id="7488619942230388918">Записать видео в формате GIF</translation>
 <translation id="7557677699350329807">Переключиться на следующую камеру</translation>
 <translation id="7607002721634913082">Приостановлен</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 e30af32d..d1c9648 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">වීඩියෝ විභේදනය</translation>
 <translation id="7337660886763914220">ගොනු පද්ධති දෝෂ.</translation>
 <translation id="7450541714075000668">පෙළ පිටපත් කරන ලදී</translation>
-<translation id="7476762461674917065">GIF පටිගත කිරීමේ විකල්පය පෙන්වන්න</translation>
 <translation id="7488619942230388918">GIF වීඩියෝව පටිගත කරන්න</translation>
 <translation id="7557677699350329807">මීළඟ කැමරාවට මාරු වන්න</translation>
 <translation id="7607002721634913082">අත්හිටුවන ලදි</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb
index 3263948f..dd7bd35 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Rozlíšenie videa</translation>
 <translation id="7337660886763914220">Chyby systému súborov.</translation>
 <translation id="7450541714075000668">Text bol skopírovaný</translation>
-<translation id="7476762461674917065">Zobraziť možnosť nahrávania gifov</translation>
 <translation id="7488619942230388918">Nahrať video typu gif</translation>
 <translation id="7557677699350329807">Prepnúť na ďalší fotoaparát</translation>
 <translation id="7607002721634913082">Pozastavené</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
index e116245..4c41abf 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Ločljivost videoposnetka</translation>
 <translation id="7337660886763914220">Napake datotečnega sistema.</translation>
 <translation id="7450541714075000668">Besedilo je kopirano.</translation>
-<translation id="7476762461674917065">Prikaži možnost snemanja GIF-a</translation>
 <translation id="7488619942230388918">Snemanje videoposnetka GIF</translation>
 <translation id="7557677699350329807">Preklop na naslednji fotoaparat</translation>
 <translation id="7607002721634913082">Začasno ustavljeno</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 1236ab4c..9a9e83c5 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Rezolucioni i videos</translation>
 <translation id="7337660886763914220">Gabimet e sistemit të skedarëve.</translation>
 <translation id="7450541714075000668">Teksti u kopjua</translation>
-<translation id="7476762461674917065">Shfaq opsionin e regjistrimit për GIF</translation>
 <translation id="7488619942230388918">Regjistro video GIF</translation>
 <translation id="7557677699350329807">Kalo te kamera tjetër</translation>
 <translation id="7607002721634913082">Ndërprerë</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb
index 6fae6048..2d46f53 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Rezolucija video snimka</translation>
 <translation id="7337660886763914220">Greške sistema datoteka.</translation>
 <translation id="7450541714075000668">Tekst je kopiran</translation>
-<translation id="7476762461674917065">Prikaži opciju za snimanje GIF-a</translation>
 <translation id="7488619942230388918">Snimite GIF video</translation>
 <translation id="7557677699350329807">Pređi na sledeću kameru</translation>
 <translation id="7607002721634913082">Pauzirano</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb
index 097899dc0..00fdeaa 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Резолуција видео снимка</translation>
 <translation id="7337660886763914220">Грешке система датотека.</translation>
 <translation id="7450541714075000668">Текст је копиран</translation>
-<translation id="7476762461674917065">Прикажи опцију за снимање GIF-а</translation>
 <translation id="7488619942230388918">Снимите GIF видео</translation>
 <translation id="7557677699350329807">Пређи на следећу камеру</translation>
 <translation id="7607002721634913082">Паузирано</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 2fff9ed..1a42211 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Videoupplösning</translation>
 <translation id="7337660886763914220">Fel i filsystemet.</translation>
 <translation id="7450541714075000668">Texten har kopierats</translation>
-<translation id="7476762461674917065">Visa alternativ för GIF-inspelning</translation>
 <translation id="7488619942230388918">Spela in GIF-video</translation>
 <translation id="7557677699350329807">Byt till nästa kamera</translation>
 <translation id="7607002721634913082">Pausad</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 e3c40d2..a0ddd567 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Ubora wa video</translation>
 <translation id="7337660886763914220">Hitilafu za mfumo wa faili.</translation>
 <translation id="7450541714075000668">Maandishi yamenakiliwa</translation>
-<translation id="7476762461674917065">Onyesha chaguo la kurekodi GIF</translation>
 <translation id="7488619942230388918">Rekodi video ya GIF</translation>
 <translation id="7557677699350329807">Tumia kamera inayofuata</translation>
 <translation id="7607002721634913082">Imepumzishwa</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 0442c59..21c1b79 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">வீடியோ தெளிவுத்திறன்</translation>
 <translation id="7337660886763914220">ஃபைல் அமைப்புப் பிழைகள்.</translation>
 <translation id="7450541714075000668">உரை நகலெடுக்கப்பட்டது</translation>
-<translation id="7476762461674917065">GIF ரெக்கார்டிங் விருப்பத்தேர்வைக் காட்டு</translation>
 <translation id="7488619942230388918">GIF வீடியோவை ரெக்கார்டு செய்யும்</translation>
 <translation id="7557677699350329807">அடுத்த கேமராவுக்கு மாறு</translation>
 <translation id="7607002721634913082">இடைநிறுத்தப்பட்டது</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb
index 11cb8cd..b84116f 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">వీడియో రిజల్యూషన్</translation>
 <translation id="7337660886763914220">ఫైల్ సిస్టమ్ ఎర్రర్‌లు.</translation>
 <translation id="7450541714075000668">టెక్స్ట్ కాపీ చేయబడింది</translation>
-<translation id="7476762461674917065">GIF రికార్డింగ్ ఆప్షన్‌ను చూడండి</translation>
 <translation id="7488619942230388918">GIF వీడియోను రికార్డ్ చేయండి</translation>
 <translation id="7557677699350329807">తర్వాతి కెమెరాకు మార్చు</translation>
 <translation id="7607002721634913082">పాజ్ చెయ్యబడింది</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 8b03a67..1bc2dd0 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ความละเอียดวิดีโอ</translation>
 <translation id="7337660886763914220">ข้อผิดพลาดเกี่ยวกับระบบไฟล์</translation>
 <translation id="7450541714075000668">คัดลอกข้อความแล้ว</translation>
-<translation id="7476762461674917065">แสดงตัวเลือกการบันทึก GIF</translation>
 <translation id="7488619942230388918">บันทึกวิดีโอ GIF</translation>
 <translation id="7557677699350329807">เปลี่ยนไปใช้กล้องถัดไป</translation>
 <translation id="7607002721634913082">หยุดชั่วคราว</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb
index 19b19e6..993adca5 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Video çözünürlüğü</translation>
 <translation id="7337660886763914220">Dosya sistemi hataları.</translation>
 <translation id="7450541714075000668">Metin kopyalandı</translation>
-<translation id="7476762461674917065">GIF kaydetme seçeneğini göster</translation>
 <translation id="7488619942230388918">GIF video kaydet</translation>
 <translation id="7557677699350329807">Sonraki kameraya geç</translation>
 <translation id="7607002721634913082">Duraklatıldı</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb
index c544c51..6507610 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Роздільна здатність відео</translation>
 <translation id="7337660886763914220">Помилки файлової системи.</translation>
 <translation id="7450541714075000668">Текст скопійовано</translation>
-<translation id="7476762461674917065">Показувати опцію запису GIF</translation>
 <translation id="7488619942230388918">Записати відео у форматі GIF</translation>
 <translation id="7557677699350329807">Перемкнутися на наступну камеру</translation>
 <translation id="7607002721634913082">Призупинено</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb
index e682857..28e5168d 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">ویڈیو ریزولیوشن</translation>
 <translation id="7337660886763914220">فائل سسٹم کی خرابیاں۔</translation>
 <translation id="7450541714075000668">متن کاپی ہو گیا</translation>
-<translation id="7476762461674917065">‏GIF ریکارڈنگ کا اختیار دکھائیں</translation>
 <translation id="7488619942230388918">‏GIF ویڈیو ریکارڈ کریں</translation>
 <translation id="7557677699350329807">اگلے کیمرے پر سوئچ کريں</translation>
 <translation id="7607002721634913082">موقوف</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb
index b5972294..be2a4c0 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Video tiniqligi</translation>
 <translation id="7337660886763914220">Fayllar tizimiga oid xatoliklar.</translation>
 <translation id="7450541714075000668">Matn nusxalandi</translation>
-<translation id="7476762461674917065">GIF yozib olish parametrini koʻrsatish</translation>
 <translation id="7488619942230388918">GIF video yozib olish</translation>
 <translation id="7557677699350329807">Keyingi kameraga almashtirish</translation>
 <translation id="7607002721634913082">Vaqtincha to‘xtatildi</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_vi.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_vi.xtb
index cfe4861..9ed16d6e 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_vi.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_vi.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Độ phân giải video</translation>
 <translation id="7337660886763914220">Lỗi hệ thống tệp.</translation>
 <translation id="7450541714075000668">Đã sao chép văn bản</translation>
-<translation id="7476762461674917065">Hiện lựa chọn quay dạng GIF</translation>
 <translation id="7488619942230388918">Quay video dạng GIF</translation>
 <translation id="7557677699350329807">Chuyển sang máy ảnh tiếp theo</translation>
 <translation id="7607002721634913082">Đã tạm dừng</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 43b253c..89316d2 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">视频分辨率</translation>
 <translation id="7337660886763914220">文件系统出错。</translation>
 <translation id="7450541714075000668">文本已复制</translation>
-<translation id="7476762461674917065">显示 GIF 录制选项</translation>
 <translation id="7488619942230388918">录制 GIF 视频</translation>
 <translation id="7557677699350329807">切换到下一个摄像头</translation>
 <translation id="7607002721634913082">已暂停</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb
index 02ed46c..09674a8 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">影片解像度</translation>
 <translation id="7337660886763914220">檔案系統錯誤。</translation>
 <translation id="7450541714075000668">已複製文字</translation>
-<translation id="7476762461674917065">顯示 GIF 錄製選項</translation>
 <translation id="7488619942230388918">錄製 GIF 影片</translation>
 <translation id="7557677699350329807">切換至下一部相機</translation>
 <translation id="7607002721634913082">已暫停</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 d065a597..f4f8b30 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
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">影片解析度</translation>
 <translation id="7337660886763914220">檔案系統發生錯誤。</translation>
 <translation id="7450541714075000668">已複製文字</translation>
-<translation id="7476762461674917065">顯示 GIF 錄製選項</translation>
 <translation id="7488619942230388918">錄製 GIF 影片</translation>
 <translation id="7557677699350329807">切換至下一個相機</translation>
 <translation id="7607002721634913082">已暫停</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb
index fce2e10..4f29528 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb
@@ -117,7 +117,6 @@
 <translation id="7243947652761655814">Ukulungiswa kwevidiyo</translation>
 <translation id="7337660886763914220">Amaphutha esistimu lefayela.</translation>
 <translation id="7450541714075000668">Umbhalo okopishiwe</translation>
-<translation id="7476762461674917065">Bonisa inketho yokurekhoda i-GIF</translation>
 <translation id="7488619942230388918">Rekhoda ividiyo ye-GIF</translation>
 <translation id="7557677699350329807">Shintshela kukhamera elandelayo</translation>
 <translation id="7607002721634913082">Imiswe isikhashana</translation>
diff --git a/ash/webui/shimless_rma/backend/shimless_rma_service.cc b/ash/webui/shimless_rma/backend/shimless_rma_service.cc
index a781d78..f2a64d9 100644
--- a/ash/webui/shimless_rma/backend/shimless_rma_service.cc
+++ b/ash/webui/shimless_rma/backend/shimless_rma_service.cc
@@ -701,6 +701,20 @@
   TransitionNextStateGeneric(std::move(callback));
 }
 
+void ShimlessRmaService::RetryProvisioning(RetryProvisioningCallback callback) {
+  if (state_proto_.state_case() != rmad::RmadState::kProvisionDevice) {
+    LOG(ERROR) << "RetryProvisioning called from incorrect state "
+               << state_proto_.state_case();
+    std::move(callback).Run(RmadStateToMojo(state_proto_.state_case()),
+                            can_abort_, can_go_back_,
+                            rmad::RmadErrorCode::RMAD_ERROR_REQUEST_INVALID);
+    return;
+  }
+  state_proto_.mutable_provision_device()->set_choice(
+      rmad::ProvisionDeviceState::RMAD_PROVISION_CHOICE_RETRY);
+  TransitionNextStateGeneric(std::move(callback));
+}
+
 void ShimlessRmaService::ProvisioningComplete(
     ProvisioningCompleteCallback callback) {
   if (state_proto_.state_case() != rmad::RmadState::kProvisionDevice) {
diff --git a/ash/webui/shimless_rma/backend/shimless_rma_service.h b/ash/webui/shimless_rma/backend/shimless_rma_service.h
index 8964a31..d62bd9443 100644
--- a/ash/webui/shimless_rma/backend/shimless_rma_service.h
+++ b/ash/webui/shimless_rma/backend/shimless_rma_service.h
@@ -116,6 +116,7 @@
   void ContinueCalibration(ContinueCalibrationCallback callback) override;
   void CalibrationComplete(CalibrationCompleteCallback callback) override;
 
+  void RetryProvisioning(RetryProvisioningCallback callback) override;
   void ProvisioningComplete(ProvisioningCompleteCallback callback) override;
 
   void FinalizationComplete(FinalizationCompleteCallback callback) override;
diff --git a/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc b/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc
index 11be20e..07e450aa6 100644
--- a/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc
+++ b/ash/webui/shimless_rma/backend/shimless_rma_service_unittest.cc
@@ -2310,6 +2310,31 @@
   run_loop.Run();
 }
 
+TEST_F(ShimlessRmaServiceTest, RetryProvisioning) {
+  const std::vector<rmad::GetStateReply> fake_states = {
+      CreateStateReply(rmad::RmadState::kProvisionDevice, rmad::RMAD_ERROR_OK),
+      CreateStateReply(rmad::RmadState::kDeviceDestination,
+                       rmad::RMAD_ERROR_OK)};
+  fake_rmad_client_()->SetFakeStateReplies(std::move(fake_states));
+  base::RunLoop run_loop;
+  shimless_rma_provider_->GetCurrentState(base::BindLambdaForTesting(
+      [&](mojom::State state, bool can_cancel, bool can_go_back,
+          rmad::RmadErrorCode error) {
+        EXPECT_EQ(state, mojom::State::kProvisionDevice);
+        EXPECT_EQ(error, rmad::RmadErrorCode::RMAD_ERROR_OK);
+      }));
+  run_loop.RunUntilIdle();
+
+  shimless_rma_provider_->RetryProvisioning(base::BindLambdaForTesting(
+      [&](mojom::State state, bool can_cancel, bool can_go_back,
+          rmad::RmadErrorCode error) {
+        EXPECT_EQ(state, mojom::State::kChooseDestination);
+        EXPECT_EQ(error, rmad::RmadErrorCode::RMAD_ERROR_OK);
+        run_loop.Quit();
+      }));
+  run_loop.Run();
+}
+
 TEST_F(ShimlessRmaServiceTest, kFinalize) {
   const std::vector<rmad::GetStateReply> fake_states = {
       CreateStateReply(rmad::RmadState::kFinalize, rmad::RMAD_ERROR_OK),
diff --git a/ash/webui/shimless_rma/mojom/shimless_rma.mojom b/ash/webui/shimless_rma/mojom/shimless_rma.mojom
index dafcd5e6..30fa6dc 100644
--- a/ash/webui/shimless_rma/mojom/shimless_rma.mojom
+++ b/ash/webui/shimless_rma/mojom/shimless_rma.mojom
@@ -651,6 +651,9 @@
   ///////////////////////////////////////
   // Methods for kProvisionDevice state
   //
+  // Retries provisioning after a blocking failure.
+  RetryProvisioning() => (State state, bool can_cancel, bool can_go_back,
+          RmadErrorCode error);
   ProvisioningComplete()
       => (State state, bool can_cancel, bool can_go_back,
           RmadErrorCode error);
diff --git a/ash/webui/shimless_rma/resources/fake_shimless_rma_service.js b/ash/webui/shimless_rma/resources/fake_shimless_rma_service.js
index e6b690b..53d445b 100644
--- a/ash/webui/shimless_rma/resources/fake_shimless_rma_service.js
+++ b/ash/webui/shimless_rma/resources/fake_shimless_rma_service.js
@@ -645,6 +645,14 @@
   /**
    * @return {!Promise<!StateResult>}
    */
+  retryProvisioning() {
+    return this.getNextStateForMethod_(
+        'retryProvisioning', State.kProvisionDevice);
+  }
+
+  /**
+   * @return {!Promise<!StateResult>}
+   */
   provisioningComplete() {
     return this.getNextStateForMethod_(
         'provisioningComplete', State.kProvisionDevice);
@@ -1217,6 +1225,7 @@
     this.methods_.register('continueCalibration');
     this.methods_.register('calibrationComplete');
 
+    this.methods_.register('retryProvisioning');
     this.methods_.register('provisioningComplete');
 
     this.methods_.register('finalizationComplete');
diff --git a/ash/wm/base_state.cc b/ash/wm/base_state.cc
index 07523d2..2a90334 100644
--- a/ash/wm/base_state.cc
+++ b/ash/wm/base_state.cc
@@ -58,9 +58,12 @@
 }
 
 // static
-WindowStateType BaseState::GetStateForTransitionEvent(const WMEvent* event) {
+WindowStateType BaseState::GetStateForTransitionEvent(WindowState* window_state,
+                                                      const WMEvent* event) {
   switch (event->type()) {
     case WM_EVENT_NORMAL:
+      if (window_state->window()->GetProperty(aura::client::kIsRestoringKey))
+        return window_state->GetRestoreWindowState();
       return WindowStateType::kNormal;
     case WM_EVENT_MAXIMIZE:
       return WindowStateType::kMaximized;
diff --git a/ash/wm/base_state.h b/ash/wm/base_state.h
index bd05c27..5cbfab2 100644
--- a/ash/wm/base_state.h
+++ b/ash/wm/base_state.h
@@ -31,6 +31,7 @@
  protected:
   // Returns the chromeos::WindowStateType corresponds to the WMEvent type.
   static chromeos::WindowStateType GetStateForTransitionEvent(
+      WindowState* window_state,
       const WMEvent* event);
 
   static void CenterWindow(WindowState* window_state);
diff --git a/ash/wm/client_controlled_state.cc b/ash/wm/client_controlled_state.cc
index 4402d8a..fa5709f 100644
--- a/ash/wm/client_controlled_state.cc
+++ b/ash/wm/client_controlled_state.cc
@@ -68,7 +68,8 @@
         Shell::Get()->screen_pinning_controller()->IsPinned()) {
       return;
     }
-    WindowStateType next_state_type = GetStateForTransitionEvent(event);
+    WindowStateType next_state_type =
+        GetStateForTransitionEvent(window_state, event);
     delegate_->HandleWindowStateRequest(window_state, next_state_type);
     WindowStateType old_state_type = state_type_;
 
@@ -319,7 +320,7 @@
     const WMEvent* event) {
   DCHECK(event->IsTransitionEvent());
 
-  const WindowStateType next = GetStateForTransitionEvent(event);
+  const WindowStateType next = GetStateForTransitionEvent(window_state, event);
 
   if (Shell::Get()->tablet_mode_controller()->InTabletMode() &&
       next == WindowStateType::kNormal && window_state->CanMaximize())
diff --git a/ash/wm/default_state.cc b/ash/wm/default_state.cc
index 0d1f16fe..1d1ecb7 100644
--- a/ash/wm/default_state.cc
+++ b/ash/wm/default_state.cc
@@ -338,7 +338,8 @@
 void DefaultState::HandleTransitionEvents(WindowState* window_state,
                                           const WMEvent* event) {
   WindowStateType current_state_type = window_state->GetStateType();
-  WindowStateType next_state_type = GetStateForTransitionEvent(event);
+  WindowStateType next_state_type =
+      GetStateForTransitionEvent(window_state, event);
   if (event->IsPinEvent()) {
     // If there already is a pinned window, it is not allowed to set it
     // to this window.
diff --git a/ash/wm/desks/templates/desks_templates_dialog_controller.cc b/ash/wm/desks/templates/desks_templates_dialog_controller.cc
index e6d5787..a2c88f6 100644
--- a/ash/wm/desks/templates/desks_templates_dialog_controller.cc
+++ b/ash/wm/desks/templates/desks_templates_dialog_controller.cc
@@ -6,6 +6,7 @@
 
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
+#include "ash/style/ash_color_provider.h"
 #include "ash/wm/desks/templates/desks_templates_grid_view.h"
 #include "ash/wm/desks/templates/desks_templates_icon_container.h"
 #include "ash/wm/desks/templates/desks_templates_item_view.h"
@@ -58,11 +59,16 @@
             views::DISTANCE_RELATED_CONTROL_VERTICAL)));
 
     // Add the description for the dialog.
-    AddChildView(views::Builder<views::Label>()
-                     .CopyAddressTo(&description_label_)
-                     .SetMultiLine(true)
-                     .SetHorizontalAlignment(gfx::ALIGN_LEFT)
-                     .Build());
+    AddChildView(
+        views::Builder<views::Label>()
+            .CopyAddressTo(&description_label_)
+            .SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 14,
+                                       gfx::Font::Weight::NORMAL))
+            .SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+                AshColorProvider::ContentLayerType::kTextColorPrimary))
+            .SetMultiLine(true)
+            .SetHorizontalAlignment(gfx::ALIGN_LEFT)
+            .Build());
   }
   DesksTemplatesDialog(const DesksTemplatesDialog&) = delete;
   DesksTemplatesDialog& operator=(const DesksTemplatesDialog&) = delete;
@@ -81,6 +87,11 @@
     description_label_->SetText(text);
   }
 
+  void SetDescriptionAccessibleName(const std::u16string& accessible_name) {
+    DCHECK(description_label_);
+    description_label_->SetAccessibleName(accessible_name);
+  }
+
  private:
   views::Label* description_label_ = nullptr;
 };
@@ -91,6 +102,7 @@
 VIEW_BUILDER_PROPERTY(int, TitleText)
 VIEW_BUILDER_PROPERTY(int, ConfirmButtonText)
 VIEW_BUILDER_PROPERTY(std::u16string, DescriptionText)
+VIEW_BUILDER_PROPERTY(std::u16string, DescriptionAccessibleName)
 END_VIEW_BUILDER
 
 BEGIN_METADATA(DesksTemplatesDialog, views::DialogDelegateView)
@@ -159,6 +171,12 @@
           .AddChildren(
               views::Builder<views::Label>()
                   .SetHorizontalAlignment(gfx::ALIGN_LEFT)
+                  .SetFontList(gfx::FontList({"Roboto"}, gfx::Font::NORMAL, 14,
+                                             gfx::Font::Weight::MEDIUM))
+                  .SetEnabledColor(
+                      AshColorProvider::Get()->GetContentLayerColor(
+                          AshColorProvider::ContentLayerType::
+                              kTextColorPrimary))
                   .SetText(l10n_util::GetStringUTF16(
                       IDS_ASH_DESKS_TEMPLATES_UNSUPPORTED_APPS_DIALOG_HEADER)),
               views::Builder<DesksTemplatesIconContainer>().CopyAddressTo(
@@ -178,6 +196,9 @@
                     .SetDescriptionText(l10n_util::GetStringFUTF16(
                         IDS_ASH_DESKS_TEMPLATES_REPLACE_DIALOG_DESCRIPTION,
                         GetStringWithQuotes(template_name)))
+                    .SetDescriptionAccessibleName(l10n_util::GetStringFUTF16(
+                        IDS_ASH_DESKS_TEMPLATES_REPLACE_DIALOG_DESCRIPTION,
+                        template_name))
                     .Build();
   CreateDialogWidget(std::move(dialog), root_window);
 }
@@ -196,6 +217,8 @@
           .SetDescriptionText(l10n_util::GetStringFUTF16(
               IDS_ASH_DESKS_TEMPLATES_DELETE_DIALOG_DESCRIPTION,
               GetStringWithQuotes(template_name)))
+          .SetDescriptionAccessibleName(l10n_util::GetStringFUTF16(
+              IDS_ASH_DESKS_TEMPLATES_DELETE_DIALOG_DESCRIPTION, template_name))
           .SetAcceptCallback(std::move(on_accept_callback))
           .Build();
 
diff --git a/ash/wm/desks/templates/desks_templates_grid_view.cc b/ash/wm/desks/templates/desks_templates_grid_view.cc
index cbe57983..283b520 100644
--- a/ash/wm/desks/templates/desks_templates_grid_view.cc
+++ b/ash/wm/desks/templates/desks_templates_grid_view.cc
@@ -240,6 +240,13 @@
 
 void DesksTemplatesGridView::OnLocatedEvent(ui::LocatedEvent* event,
                                             bool is_touch) {
+  if (widget_window_ && widget_window_->event_targeting_policy() ==
+                            aura::EventTargetingPolicy::kNone) {
+    // If this is true, then we're in the process of fading out `this` and don't
+    // want to handle any events anymore so do nothing.
+    return;
+  }
+
   switch (event->type()) {
     case ui::ET_MOUSE_MOVED:
     case ui::ET_MOUSE_ENTERED:
diff --git a/ash/wm/haptics_util_unittest.cc b/ash/wm/haptics_util_unittest.cc
index 3ae71b51..156f160 100644
--- a/ash/wm/haptics_util_unittest.cc
+++ b/ash/wm/haptics_util_unittest.cc
@@ -9,6 +9,8 @@
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/wm/desks/desk_animation_impl.h"
+#include "ash/wm/desks/desk_mini_view.h"
+#include "ash/wm/desks/desks_bar_view.h"
 #include "ash/wm/desks/desks_constants.h"
 #include "ash/wm/desks/desks_controller.h"
 #include "ash/wm/desks/desks_histogram_enums.h"
@@ -16,6 +18,7 @@
 #include "ash/wm/desks/root_window_desk_switch_animator_test_api.h"
 #include "ash/wm/gestures/wm_gesture_handler.h"
 #include "ash/wm/overview/overview_controller.h"
+#include "ash/wm/overview/overview_grid.h"
 #include "ash/wm/overview/overview_item.h"
 #include "ash/wm/overview/overview_session.h"
 #include "ash/wm/workspace/workspace_window_resizer.h"
@@ -24,6 +27,7 @@
 #include "ui/events/devices/haptic_touchpad_effects.h"
 #include "ui/events/devices/stylus_state.h"
 #include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/geometry/rect_f.h"
 #include "ui/ozone/public/input_controller.h"
 #include "ui/ozone/public/ozone_platform.h"
 
@@ -380,4 +384,52 @@
                    HapticTouchpadEffectStrength::kMedium));
 }
 
+// Tests that haptics are sent when dragging a window/desk in overview.
+TEST_F(HapticsUtilTest, HapticFeedbackForDragAndDrop) {
+  auto input_controller = std::make_unique<InputControllerForTesting>();
+  OverviewController* overview_controller = Shell::Get()->overview_controller();
+  haptics_util::SetInputControllerForTesting(input_controller.get());
+
+  std::unique_ptr<aura::Window> window = CreateTestWindow();
+  ui::test::EventGenerator* event_generator = GetEventGenerator();
+
+  // Add three desks for a total of two.
+  auto* desks_controller = DesksController::Get();
+  desks_controller->NewDesk(DesksCreationRemovalSource::kButton);
+
+  // Drag a window in overview. Test that kTick feedback is sent.
+  EnterOverview();
+  OverviewItem* overview_item =
+      overview_controller->overview_session()->GetOverviewItemForWindow(
+          window.get());
+  const gfx::RectF bounds_f = overview_item->target_bounds();
+  event_generator->set_current_screen_location(
+      gfx::ToRoundedPoint(bounds_f.CenterPoint()));
+  event_generator->PressLeftButton();
+  event_generator->MoveMouseTo(gfx::ToRoundedPoint(bounds_f.right_center()));
+  EXPECT_EQ(1, input_controller->GetSendHapticCount(
+                   HapticTouchpadEffect::kTick,
+                   HapticTouchpadEffectStrength::kMedium));
+  event_generator->ReleaseLeftButton();
+  EXPECT_TRUE(overview_controller->InOverviewSession());
+
+  // Drag a desk in overview. Test that kTick feedback is sent.
+  const gfx::Rect bounds = overview_controller->overview_session()
+                               ->grid_list()
+                               .front()
+                               ->desks_bar_view()
+                               ->mini_views()
+                               .front()
+                               ->bounds();
+  event_generator->set_current_screen_location(bounds.CenterPoint());
+  event_generator->PressLeftButton();
+  event_generator->MoveMouseTo(bounds.right_center());
+  EXPECT_EQ(2, input_controller->GetSendHapticCount(
+                   HapticTouchpadEffect::kTick,
+                   HapticTouchpadEffectStrength::kMedium));
+  event_generator->ReleaseLeftButton();
+  EXPECT_TRUE(overview_controller->InOverviewSession());
+  ExitOverview();
+}
+
 }  // namespace ash
diff --git a/ash/wm/overview/overview_grid.cc b/ash/wm/overview/overview_grid.cc
index 6b2b3247..cabfece 100644
--- a/ash/wm/overview/overview_grid.cc
+++ b/ash/wm/overview/overview_grid.cc
@@ -1422,16 +1422,6 @@
   return dragged_item_over_bar;
 }
 
-int OverviewGrid::GetDeskIndexFromScreenLocation(
-    const gfx::Point& screen_location) {
-  auto* desks_controller = DesksController::Get();
-  for (auto* mini_view : desks_bar_view_->mini_views()) {
-    if (mini_view->IsPointOnMiniView(screen_location))
-      return desks_controller->GetDeskIndex(mini_view->desk());
-  }
-  return -1;
-}
-
 bool OverviewGrid::MaybeDropItemOnDeskMiniViewOrNewDeskButton(
     const gfx::Point& screen_location,
     OverviewItem* drag_item) {
@@ -1768,6 +1758,10 @@
 
   if (exit_overview && overview_session_->enter_exit_overview_type() !=
                            OverviewEnterExitType::kImmediateExit) {
+    // Disable the `desks_templates_grid_widget_`'s event targeting so it can't
+    // get any events during the animation.
+    desks_templates_grid_widget_->GetNativeWindow()->SetEventTargetingPolicy(
+        aura::EventTargetingPolicy::kNone);
     FadeOutWidgetFromOverview(
         std::move(desks_templates_grid_widget_),
         OVERVIEW_ANIMATION_EXIT_OVERVIEW_MODE_DESKS_TEMPLATES_GRID_FADE_OUT);
diff --git a/ash/wm/overview/overview_grid.h b/ash/wm/overview/overview_grid.h
index d2cf22e..9a4887c7 100644
--- a/ash/wm/overview/overview_grid.h
+++ b/ash/wm/overview/overview_grid.h
@@ -290,10 +290,6 @@
                               bool update_desks_bar_drag_details,
                               bool for_drop);
 
-  // Returns the desk index of the provided screen location if it belongs to
-  // any, otherwise `-1` will be returned.
-  int GetDeskIndexFromScreenLocation(const gfx::Point& screen_location);
-
   // Updates the drag details for DesksBarView to end the drag and move the
   // window of |drag_item| to another desk if it was dropped on a mini_view of
   // a desk that is different than that of the active desk or if dropped on the
diff --git a/ash/wm/overview/overview_window_drag_controller.cc b/ash/wm/overview/overview_window_drag_controller.cc
index bd5b892..7415ec7 100644
--- a/ash/wm/overview/overview_window_drag_controller.cc
+++ b/ash/wm/overview/overview_window_drag_controller.cc
@@ -554,27 +554,11 @@
       // Update the mini views borders by checking if |location_in_screen|
       // intersects. Only update the borders if the dragged item is not visible
       // on all desks.
-      bool intersects_with_desks_bar = overview_grid->IntersectsWithDesksBar(
+      overview_grid->IntersectsWithDesksBar(
           gfx::ToRoundedPoint(location_in_screen),
           /*update_desks_bar_drag_details=*/
           !DraggedItemIsVisibleOnAllDesks(item_), /*for_drop=*/false);
 
-      // Fire a haptic event if necessary.
-      if (intersects_with_desks_bar && !is_touch_dragging_) {
-        const int desk_index = overview_grid->GetDeskIndexFromScreenLocation(
-            gfx::ToRoundedPoint(location_in_screen));
-        if (last_desk_index_ != desk_index) {
-          last_desk_index_ = desk_index;
-          if (desk_index != -1) {
-            haptics_util::PlayHapticTouchpadEffect(
-                ui::HapticTouchpadEffect::kTick,
-                ui::HapticTouchpadEffectStrength::kMedium);
-          }
-        }
-      } else {
-        last_desk_index_ = -1;
-      }
-
       float value = 0.f;
       if (centerpoint.y() < desks_bar_data.desks_bar_bounds.y() ||
           centerpoint.y() > desks_bar_data.desks_bar_bounds.bottom()) {
diff --git a/ash/wm/overview/overview_window_drag_controller.h b/ash/wm/overview/overview_window_drag_controller.h
index ecd2bfc..6f72f3a 100644
--- a/ash/wm/overview/overview_window_drag_controller.h
+++ b/ash/wm/overview/overview_window_drag_controller.h
@@ -232,12 +232,6 @@
   // Set to true once the bounds of |item_| change.
   bool did_move_ = false;
 
-  // The last desk index that the screen location points to during drag. Please
-  // note that this would be set to `-1` when it does not intersect with desks
-  // bar. It is used to keep track of haptic feedback since we do not want
-  // duplicate event for the same desk during drag.
-  int last_desk_index_ = -1;
-
   // Records the presentation time of window drag operation in overview mode.
   std::unique_ptr<PresentationTimeRecorder> presentation_time_recorder_;
 
diff --git a/ash/wm/window_state.cc b/ash/wm/window_state.cc
index e0d8ffb1..17560df 100644
--- a/ash/wm/window_state.cc
+++ b/ash/wm/window_state.cc
@@ -32,6 +32,8 @@
 #include "ash/wm/window_util.h"
 #include "ash/wm/wm_event.h"
 #include "base/auto_reset.h"
+#include "base/containers/adapters.h"
+#include "base/containers/fixed_flat_map.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "chromeos/ui/base/window_properties.h"
@@ -65,6 +67,28 @@
 using ::chromeos::kWindowManagerManagesOpacityKey;
 using ::chromeos::WindowStateType;
 
+// This defines the map from different window states to their restore layers.
+// The assumption is that a window state with higher restore layer number can
+// restore back to a window state with lower restore layer number, but not the
+// other way around. For example, a window whose window state is kMinimized can
+// restore to kMaximized window state, but kMaximized window state can not
+// restore back to kMinimized window state. Please see
+// go/window-state-restore-history for details.
+// Note the map does not contain all WindowStateTypes, for the ones that's not
+// in the map, they can't be put into the window state restore history stack,
+// and restore from those state will simply go back to kNormal window state.
+constexpr auto kWindowStateRestoreHistoryLayerMap =
+    base::MakeFixedFlatMap<WindowStateType, int>({
+        {WindowStateType::kNormal, 0},
+        {WindowStateType::kDefault, 0},
+        {WindowStateType::kPrimarySnapped, 1},
+        {WindowStateType::kSecondarySnapped, 1},
+        {WindowStateType::kMaximized, 2},
+        {WindowStateType::kFullscreen, 3},
+        {WindowStateType::kPip, 4},
+        {WindowStateType::kMinimized, 4},
+    });
+
 bool IsTabletModeEnabled() {
   return Shell::Get()->tablet_mode_controller()->InTabletMode();
 }
@@ -138,6 +162,36 @@
   return WM_EVENT_NORMAL;
 }
 
+WMEventType WMEventTypeFromWindowStateType(WindowStateType window_state_type) {
+  switch (window_state_type) {
+    case WindowStateType::kDefault:
+    case WindowStateType::kNormal:
+      return WM_EVENT_NORMAL;
+    case WindowStateType::kMinimized:
+      return WM_EVENT_MINIMIZE;
+    case WindowStateType::kMaximized:
+      return WM_EVENT_MAXIMIZE;
+    case WindowStateType::kInactive:
+      return WM_EVENT_SHOW_INACTIVE;
+    case WindowStateType::kFullscreen:
+      return WM_EVENT_FULLSCREEN;
+    case WindowStateType::kPrimarySnapped:
+      return WM_EVENT_SNAP_PRIMARY;
+    case WindowStateType::kSecondarySnapped:
+      return WM_EVENT_SNAP_SECONDARY;
+    case WindowStateType::kPinned:
+      return WM_EVENT_PIN;
+    case WindowStateType::kTrustedPinned:
+      return WM_EVENT_TRUSTED_PIN;
+    case WindowStateType::kPip:
+      return WM_EVENT_PIP;
+    case WindowStateType::kAutoPositioned:
+      NOTREACHED() << "No WMEvent defined for the window state type: "
+                   << window_state_type;
+  }
+  return WM_EVENT_NORMAL;
+}
+
 float GetCurrentSnapRatio(aura::Window* window) {
   gfx::Rect maximized_bounds =
       screen_util::GetMaximizedWindowBoundsInParent(window);
@@ -360,10 +414,8 @@
 }
 
 void WindowState::Restore() {
-  if (!IsNormalStateType()) {
-    const WMEvent event(WM_EVENT_NORMAL);
-    OnWMEvent(&event);
-  }
+  const WMEvent event(WMEventTypeFromWindowStateType(GetRestoreWindowState()));
+  OnWMEvent(&event);
 }
 
 void WindowState::DisableZOrdering(aura::Window* window_on_top) {
@@ -614,8 +666,16 @@
   }
 }
 
-display::Display WindowState::GetDisplay() {
-  return display::Screen::GetScreen()->GetDisplayNearestWindow(window());
+display::Display WindowState::GetDisplay() const {
+  return display::Screen::GetScreen()->GetDisplayNearestWindow(window_);
+}
+
+WindowStateType WindowState::GetRestoreWindowState() const {
+  return window_state_restore_history_.empty() ||
+                 window_state_restore_history_.back() ==
+                     WindowStateType::kDefault
+             ? WindowStateType::kNormal
+             : window_state_restore_history_.back();
 }
 
 void WindowState::CreateDragDetails(const gfx::PointF& point_in_parent,
@@ -751,6 +811,7 @@
   for (auto& observer : observer_list_)
     observer.OnPostWindowStateTypeChange(this, old_window_state_type);
   OnPostPipStateChange(old_window_state_type);
+  UpdateWindowStateRestoreHistoryStack(old_window_state_type);
   SaveWindowForWindowRestore(this);
 }
 
@@ -931,6 +992,41 @@
   }
 }
 
+void WindowState::UpdateWindowStateRestoreHistoryStack(
+    chromeos::WindowStateType previous_state_type) {
+  WindowStateType current_state_type = GetStateType();
+
+  const bool is_state_type_supported =
+      kWindowStateRestoreHistoryLayerMap.find(current_state_type) !=
+      kWindowStateRestoreHistoryLayerMap.end();
+  if (!is_state_type_supported) {
+    window_state_restore_history_.clear();
+    return;
+  }
+
+  // We'll need to pop out any window state that the `current_state_type` can
+  // not restore back to (i.e., whose restore order is equal or higher than
+  // `current_state_type`).
+  for (auto state : base::Reversed(window_state_restore_history_)) {
+    if (kWindowStateRestoreHistoryLayerMap.at(state) <
+        kWindowStateRestoreHistoryLayerMap.at(current_state_type)) {
+      break;
+    }
+    window_state_restore_history_.pop_back();
+  }
+
+  // If `current_state_type` can restore to `previous_state_type`, push
+  // `previous_state_type` into the stack.
+  const bool is_previous_state_type_supported =
+      kWindowStateRestoreHistoryLayerMap.find(previous_state_type) !=
+      kWindowStateRestoreHistoryLayerMap.end();
+  if (is_previous_state_type_supported &&
+      (kWindowStateRestoreHistoryLayerMap.at(current_state_type) >
+       kWindowStateRestoreHistoryLayerMap.at(previous_state_type))) {
+    window_state_restore_history_.push_back(previous_state_type);
+  }
+}
+
 // static
 WindowState* WindowState::Get(aura::Window* window) {
   if (!window)
@@ -1050,7 +1146,6 @@
   delegate_.reset();
 }
 
-
 void WindowState::OnWindowBoundsChanged(aura::Window* window,
                                         const gfx::Rect& old_bounds,
                                         const gfx::Rect& new_bounds,
diff --git a/ash/wm/window_state.h b/ash/wm/window_state.h
index 06f3ad4..bca3a14 100644
--- a/ash/wm/window_state.h
+++ b/ash/wm/window_state.h
@@ -6,6 +6,7 @@
 #define ASH_WM_WINDOW_STATE_H_
 
 #include <memory>
+#include <vector>
 
 #include "ash/ash_export.h"
 #include "ash/display/persistent_window_info.h"
@@ -13,6 +14,7 @@
 #include "base/gtest_prod_util.h"
 #include "base/observer_list.h"
 #include "base/time/time.h"
+#include "chromeos/ui/base/window_state_type.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "ui/aura/window_observer.h"
 #include "ui/base/ui_base_types.h"
@@ -23,7 +25,7 @@
 namespace chromeos {
 enum class WindowPinType;
 enum class WindowStateType;
-}
+}  // namespace chromeos
 
 namespace gfx {
 class Rect;
@@ -349,12 +351,20 @@
   // Notifies that the window lost the activation.
   void OnActivationLost();
 
+  // Returns the Display that this WindowState is on.
+  display::Display GetDisplay() const;
+
+  // Returns the window state to restore to from the current window state.
+  chromeos::WindowStateType GetRestoreWindowState() const;
+
   // Returns a pointer to DragDetails during drag operations.
   const DragDetails* drag_details() const { return drag_details_.get(); }
   DragDetails* drag_details() { return drag_details_.get(); }
 
-  // Returns the Display that this WindowState is on.
-  display::Display GetDisplay();
+  const std::vector<chromeos::WindowStateType>&
+  window_state_restore_history_for_testing() const {
+    return window_state_restore_history_;
+  }
 
   class TestApi {
    public:
@@ -469,6 +479,11 @@
   // Collects PIP enter and exit metrics:
   void CollectPipEnterExitMetrics(bool enter);
 
+  // Called after the window state change to update the window state restore
+  // history stack.
+  void UpdateWindowStateRestoreHistoryStack(
+      chromeos::WindowStateType previous_state_type);
+
   // aura::WindowObserver:
   void OnWindowPropertyChanged(aura::Window* window,
                                const void* key,
@@ -539,6 +554,11 @@
 
   // When the current (or last) PIP session started.
   base::TimeTicks pip_start_time_;
+
+  // Maintains the window state restore history that the current window state
+  // can restore back to. See kWindowStateRestoreHistoryLayerMap in the cc file
+  // for what window state types that can be put in the restore history stack.
+  std::vector<chromeos::WindowStateType> window_state_restore_history_;
 };
 
 }  // namespace ash
diff --git a/ash/wm/window_state_unittest.cc b/ash/wm/window_state_unittest.cc
index f00fe32..761ed87 100644
--- a/ash/wm/window_state_unittest.cc
+++ b/ash/wm/window_state_unittest.cc
@@ -18,6 +18,7 @@
 #include "ash/wm/wm_event.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "chromeos/ui/base/window_state_type.h"
 #include "chromeos/ui/wm/features.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/test/test_window_delegate.h"
@@ -886,6 +887,313 @@
   EXPECT_FALSE(window->GetTransparent());
 }
 
+// Tests the basic functionalties related to window state restore history stack.
+TEST_F(WindowStateTest, WindowStateRestoreHistoryBasicFunctionalites) {
+  // Start with kDefault window state.
+  std::unique_ptr<aura::Window> window = CreateAppWindow();
+  WindowState* window_state = WindowState::Get(window.get());
+  EXPECT_TRUE(window_state->IsNormalStateType());
+
+  const std::vector<chromeos::WindowStateType>& restore_stack =
+      window_state->window_state_restore_history_for_testing();
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Transition to kPrimarySnapped window state.
+  const WMEvent snap_left(WM_EVENT_SNAP_PRIMARY);
+  window_state->OnWMEvent(&snap_left);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Then transition to kMaximized window state.
+  const WMEvent maximize_event(WM_EVENT_MAXIMIZE);
+  window_state->OnWMEvent(&maximize_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(window_state->GetRestoreWindowState(),
+            WindowStateType::kPrimarySnapped);
+
+  // Then transition to kFullscreen window state.
+  const WMEvent fullscreen_event(WM_EVENT_FULLSCREEN);
+  window_state->OnWMEvent(&fullscreen_event);
+  EXPECT_EQ(restore_stack.size(), 3u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(restore_stack[2], WindowStateType::kMaximized);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kMaximized);
+
+  // Then transition to kMinimized window state.
+  const WMEvent minimized_event(WM_EVENT_MINIMIZE);
+  window_state->OnWMEvent(&minimized_event);
+  EXPECT_EQ(restore_stack.size(), 4u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(restore_stack[2], WindowStateType::kMaximized);
+  EXPECT_EQ(restore_stack[3], WindowStateType::kFullscreen);
+  EXPECT_EQ(window_state->GetRestoreWindowState(),
+            WindowStateType::kFullscreen);
+
+  // Then start restore from here. It should restore back to kFullscreen window
+  // state.
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kFullscreen);
+  EXPECT_EQ(restore_stack.size(), 3u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(restore_stack[2], WindowStateType::kMaximized);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kMaximized);
+
+  // Then restore back to kMaximized window state.
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kMaximized);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(window_state->GetRestoreWindowState(),
+            WindowStateType::kPrimarySnapped);
+
+  // Then restore back to kPrimarySnapped window state.
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Then restore back to kNormal window state.
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kNormal);
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Restore a kNormal window state window will keep the window's kNormal window
+  // state.
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kNormal);
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+}
+
+// Tests that window state transitioning from higher to lower layer will erase
+// the window state restore history in between.
+TEST_F(WindowStateTest, TransitionFromHighToLowerLayerEraseRestoreHistory) {
+  // Start with kDefault window state.
+  std::unique_ptr<aura::Window> window = CreateAppWindow();
+  WindowState* window_state = WindowState::Get(window.get());
+  EXPECT_TRUE(window_state->IsNormalStateType());
+
+  const std::vector<chromeos::WindowStateType>& restore_stack =
+      window_state->window_state_restore_history_for_testing();
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Transition to kPrimarySnapped window state.
+  const WMEvent snap_left(WM_EVENT_SNAP_PRIMARY);
+  window_state->OnWMEvent(&snap_left);
+
+  // Then transition to kMaximized window state.
+  const WMEvent maximize_event(WM_EVENT_MAXIMIZE);
+  window_state->OnWMEvent(&maximize_event);
+
+  // Then transition to kFullscreen window state.
+  const WMEvent fullscreen_event(WM_EVENT_FULLSCREEN);
+  window_state->OnWMEvent(&fullscreen_event);
+  EXPECT_EQ(restore_stack.size(), 3u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(restore_stack[2], WindowStateType::kMaximized);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kMaximized);
+
+  // Now transition back to kPrimarySnapped window state. It should have erased
+  // any restore history after kPrimarySnapped.
+  window_state->OnWMEvent(&snap_left);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+}
+
+// Tests the restore behaviors when window state transitions in the same layer.
+// There are 3 cases: {kNormal & kDefault}, {kPrimarySnapped &
+// kSecondarySnapped}, and {kMinimized & kPip}.
+TEST_F(WindowStateTest, TransitionInTheSameLayerKeepSameRestoreHistory) {
+  // First we test kNormal & kDefault.
+  // Start with kDefault window state.
+  std::unique_ptr<aura::Window> window = CreateAppWindow();
+  WindowState* window_state = WindowState::Get(window.get());
+  EXPECT_TRUE(window_state->IsNormalStateType());
+
+  const std::vector<chromeos::WindowStateType>& restore_stack =
+      window_state->window_state_restore_history_for_testing();
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Transition to kNormal window state. Since it's on the same layer as
+  // kDefault, kDefault won't be pushed into the restore history stack.
+  const WMEvent normal_event(WM_EVENT_NORMAL);
+  window_state->OnWMEvent(&normal_event);
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Test kPrimarySnapped & kSecondarySnapped.
+  // Transition to kPrimarySnapped window state.
+  const WMEvent snap_left(WM_EVENT_SNAP_PRIMARY);
+  window_state->OnWMEvent(&snap_left);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kNormal);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Transition to kSecondarySnapped window state. Since it's on the same layer
+  // as kPrimarySnapped, kPrimarySnapped won't be pushed into the restore
+  // history stack.
+  const WMEvent snap_right(WM_EVENT_SNAP_SECONDARY);
+  window_state->OnWMEvent(&snap_right);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kNormal);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Test kMinimized & kPip.
+  // Transition to kMinimized window state.
+  const WMEvent minimized_event(WM_EVENT_MINIMIZE);
+  window_state->OnWMEvent(&minimized_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kNormal);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kSecondarySnapped);
+  EXPECT_EQ(window_state->GetRestoreWindowState(),
+            WindowStateType::kSecondarySnapped);
+
+  // Transition to kPip Window state. Since it's on the same layer as
+  // kMinimized, kMinimized won't be pushed into the restore history stack.
+  const WMEvent pip_event(WM_EVENT_PIP);
+  window_state->OnWMEvent(&pip_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kNormal);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kSecondarySnapped);
+  EXPECT_EQ(window_state->GetRestoreWindowState(),
+            WindowStateType::kSecondarySnapped);
+}
+
+// Test the restore behaviors of kPinned and kTrustedPinned window state. They
+// are different with kFullscreen restore behaviors.
+TEST_F(WindowStateTest, PinnedRestoreTest) {
+  // Start with kDefault window state.
+  std::unique_ptr<aura::Window> window = CreateAppWindow();
+  WindowState* window_state = WindowState::Get(window.get());
+  EXPECT_TRUE(window_state->IsNormalStateType());
+
+  const std::vector<chromeos::WindowStateType>& restore_stack =
+      window_state->window_state_restore_history_for_testing();
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Transition to kPrimarySnapped window state.
+  const WMEvent snap_left(WM_EVENT_SNAP_PRIMARY);
+  window_state->OnWMEvent(&snap_left);
+
+  // Then transition to kMaximized window state.
+  const WMEvent maximize_event(WM_EVENT_MAXIMIZE);
+  window_state->OnWMEvent(&maximize_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kPrimarySnapped);
+  EXPECT_EQ(window_state->GetRestoreWindowState(),
+            WindowStateType::kPrimarySnapped);
+
+  // Then transition to kPinned window state. Since kPinned window state is not
+  // supported in the window state restore history layer, the restore history
+  // stack will be cleared. It can only restore back to kNormal window state.
+  const WMEvent pinned_event(WM_EVENT_PIN);
+  window_state->OnWMEvent(&pinned_event);
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kNormal);
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Same should happen for kTrustedPinned as well.
+  window_state->OnWMEvent(&snap_left);
+  window_state->OnWMEvent(&maximize_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(window_state->GetRestoreWindowState(),
+            WindowStateType::kPrimarySnapped);
+
+  const WMEvent trusted_pinned_event(WM_EVENT_TRUSTED_PIN);
+  window_state->OnWMEvent(&trusted_pinned_event);
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kNormal);
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+}
+
+// Test the restore behaviors of kMinimized and kPip window state. They are both
+// viewed as the final state in the restore layer.
+TEST_F(WindowStateTest, MinimizedAndPipRestoreTest) {
+  // Start with kDefault window state.
+  std::unique_ptr<aura::Window> window = CreateAppWindow();
+  WindowState* window_state = WindowState::Get(window.get());
+  EXPECT_TRUE(window_state->IsNormalStateType());
+
+  const std::vector<chromeos::WindowStateType>& restore_stack =
+      window_state->window_state_restore_history_for_testing();
+  EXPECT_TRUE(restore_stack.empty());
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Maximize the window.
+  const WMEvent maximize_event(WM_EVENT_MAXIMIZE);
+  window_state->OnWMEvent(&maximize_event);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+
+  // kPip window can be minimized to kMinimized window state, but restoring from
+  // kMinimized window state can't restore back to kPip window state.
+  const WMEvent pip_event(WM_EVENT_PIP);
+  window_state->OnWMEvent(&pip_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kMaximized);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kMaximized);
+
+  const WMEvent minimized_event(WM_EVENT_MINIMIZE);
+  window_state->OnWMEvent(&minimized_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kMaximized);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kMaximized);
+
+  // Restore the minimized window. It should go back to pre-pip window state.
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kMaximized);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+
+  // Similarly, if the pre-pip window state is kMinimized, restoring from kPip
+  // should go back to the pre-minimized window state.
+  window_state->OnWMEvent(&minimized_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kMaximized);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kMaximized);
+
+  window_state->OnWMEvent(&pip_event);
+  EXPECT_EQ(restore_stack.size(), 2u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(restore_stack[1], WindowStateType::kMaximized);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kMaximized);
+
+  // Restore the Pip window. It should go back to pre-minimized window state.
+  window_state->Restore();
+  EXPECT_EQ(window_state->GetStateType(), WindowStateType::kMaximized);
+  EXPECT_EQ(restore_stack.size(), 1u);
+  EXPECT_EQ(restore_stack[0], WindowStateType::kDefault);
+  EXPECT_EQ(window_state->GetRestoreWindowState(), WindowStateType::kNormal);
+}
+
 // Test WindowStateTest functionalities with portrait display. This test is
 // parameterized to enable vertical layout or horizontal layout snap in
 // portrait display.
diff --git a/ash/wm/workspace/workspace_event_handler_unittest.cc b/ash/wm/workspace/workspace_event_handler_unittest.cc
index 2a67f31..843a0f6 100644
--- a/ash/wm/workspace/workspace_event_handler_unittest.cc
+++ b/ash/wm/workspace/workspace_event_handler_unittest.cc
@@ -377,9 +377,10 @@
   generator.DoubleClickLeftButton();
   EXPECT_TRUE(window_state->IsMaximized());
 
+  // Double click on the maximized window should restore back to snapped window
+  // state.
   generator.DoubleClickLeftButton();
-  EXPECT_TRUE(window_state->IsNormalStateType());
-  EXPECT_EQ(restore_bounds.ToString(), window->bounds().ToString());
+  EXPECT_TRUE(window_state->IsSnapped());
 }
 
 // Test that double clicking on window side edge horizontally and vertically
diff --git a/base/allocator/partition_allocator/partition_alloc_unittest.cc b/base/allocator/partition_allocator/partition_alloc_unittest.cc
index a72133c..476f860 100644
--- a/base/allocator/partition_allocator/partition_alloc_unittest.cc
+++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc
@@ -943,9 +943,6 @@
 // Test that we can fetch the real allocated size after an allocation.
 TEST_F(PartitionAllocTest, AllocGetSizeAndStart) {
   void* ptr;
-#if BUILDFLAG(USE_BACKUP_REF_PTR)
-  void* slot_start;
-#endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
   size_t requested_size, actual_capacity, predicted_capacity;
 
   // Allocate something small.
@@ -954,9 +951,6 @@
       allocator.root()->AllocationCapacityFromRequestedSize(requested_size);
   ptr = allocator.root()->Alloc(requested_size, type_name);
   EXPECT_TRUE(ptr);
-#if BUILDFLAG(USE_BACKUP_REF_PTR)
-  slot_start = reinterpret_cast<char*>(ptr) - allocator.root()->extras_offset;
-#endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
   actual_capacity = allocator.root()->AllocationCapacityFromPtr(ptr);
   EXPECT_EQ(predicted_capacity, actual_capacity);
   EXPECT_LT(requested_size, actual_capacity);
@@ -964,7 +958,7 @@
   for (size_t offset = 0; offset < requested_size; ++offset) {
     EXPECT_PEQ(PartitionAllocGetSlotStartInBRPPool(
                    reinterpret_cast<uintptr_t>(ptr) + offset),
-               slot_start);
+               allocator.root()->AdjustPointerForExtrasSubtract(ptr));
   }
 #endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
   allocator.root()->Free(ptr);
@@ -976,9 +970,6 @@
       allocator.root()->AllocationCapacityFromRequestedSize(requested_size);
   ptr = allocator.root()->Alloc(requested_size, type_name);
   EXPECT_TRUE(ptr);
-#if BUILDFLAG(USE_BACKUP_REF_PTR)
-  slot_start = reinterpret_cast<char*>(ptr) - allocator.root()->extras_offset;
-#endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
   actual_capacity = allocator.root()->AllocationCapacityFromPtr(ptr);
   EXPECT_EQ(predicted_capacity, actual_capacity);
   EXPECT_EQ(requested_size, actual_capacity);
@@ -986,7 +977,7 @@
   for (size_t offset = 0; offset < requested_size; offset += 877) {
     EXPECT_PEQ(PartitionAllocGetSlotStartInBRPPool(
                    reinterpret_cast<uintptr_t>(ptr) + offset),
-               slot_start);
+               allocator.root()->AdjustPointerForExtrasSubtract(ptr));
   }
 #endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
   allocator.root()->Free(ptr);
@@ -1003,9 +994,6 @@
       allocator.root()->AllocationCapacityFromRequestedSize(requested_size);
   ptr = allocator.root()->Alloc(requested_size, type_name);
   EXPECT_TRUE(ptr);
-#if BUILDFLAG(USE_BACKUP_REF_PTR)
-  slot_start = reinterpret_cast<char*>(ptr) - allocator.root()->extras_offset;
-#endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
   actual_capacity = allocator.root()->AllocationCapacityFromPtr(ptr);
   EXPECT_EQ(predicted_capacity, actual_capacity);
   EXPECT_EQ(requested_size + SystemPageSize(), actual_capacity);
@@ -1013,7 +1001,7 @@
   for (size_t offset = 0; offset < requested_size; offset += 4999) {
     EXPECT_PEQ(PartitionAllocGetSlotStartInBRPPool(
                    reinterpret_cast<uintptr_t>(ptr) + offset),
-               slot_start);
+               allocator.root()->AdjustPointerForExtrasSubtract(ptr));
   }
 #endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
 
@@ -1023,9 +1011,6 @@
       allocator.root()->AllocationCapacityFromRequestedSize(requested_size);
   ptr = allocator.root()->Alloc(requested_size, type_name);
   EXPECT_TRUE(ptr);
-#if BUILDFLAG(USE_BACKUP_REF_PTR)
-  slot_start = reinterpret_cast<char*>(ptr) - allocator.root()->extras_offset;
-#endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
   actual_capacity = allocator.root()->AllocationCapacityFromPtr(ptr);
   EXPECT_EQ(predicted_capacity, actual_capacity);
   EXPECT_EQ(requested_size, actual_capacity);
@@ -1033,7 +1018,7 @@
   for (size_t offset = 0; offset < requested_size; offset += 4999) {
     EXPECT_PEQ(PartitionAllocGetSlotStartInBRPPool(
                    reinterpret_cast<uintptr_t>(ptr) + offset),
-               slot_start);
+               allocator.root()->AdjustPointerForExtrasSubtract(ptr));
   }
 #endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
 
@@ -1049,9 +1034,6 @@
         allocator.root()->AllocationCapacityFromRequestedSize(requested_size);
     ptr = allocator.root()->Alloc(requested_size, type_name);
     EXPECT_TRUE(ptr);
-#if BUILDFLAG(USE_BACKUP_REF_PTR)
-    slot_start = reinterpret_cast<char*>(ptr) - allocator.root()->extras_offset;
-#endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
     actual_capacity = allocator.root()->AllocationCapacityFromPtr(ptr);
     EXPECT_EQ(predicted_capacity, actual_capacity);
     EXPECT_LT(requested_size, actual_capacity);
@@ -1059,7 +1041,7 @@
     for (size_t offset = 0; offset < requested_size; offset += 16111) {
       EXPECT_PEQ(PartitionAllocGetSlotStartInBRPPool(
                      reinterpret_cast<uintptr_t>(ptr) + offset),
-                 slot_start);
+                 allocator.root()->AdjustPointerForExtrasSubtract(ptr));
     }
 #endif  // BUILDFLAG(USE_BACKUP_REF_PTR)
     allocator.root()->Free(ptr);
@@ -1172,12 +1154,10 @@
   for (size_t i = 0; i < num_slots; ++i) {
     char* ptr = static_cast<char*>(ptrs[i]);
     EXPECT_EQ(allocator.root()->AllocationCapacityFromPtr(ptr), requested_size);
-    char* slot_start =
-        reinterpret_cast<char*>(ptr) - allocator.root()->extras_offset;
     for (size_t offset = 0; offset < requested_size; offset += 13) {
       EXPECT_PEQ(PartitionAllocGetSlotStartInBRPPool(
                      reinterpret_cast<uintptr_t>(ptr) + offset),
-                 slot_start);
+                 allocator.root()->AdjustPointerForExtrasSubtract(ptr));
     }
     allocator.root()->Free(ptr);
   }
diff --git a/base/android/linker/modern_linker_jni.cc b/base/android/linker/modern_linker_jni.cc
index 03925c59..4917fd22 100644
--- a/base/android/linker/modern_linker_jni.cc
+++ b/base/android/linker/modern_linker_jni.cc
@@ -9,6 +9,7 @@
 #include "base/android/linker/modern_linker_jni.h"
 
 #include <dlfcn.h>
+#include <elf.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <inttypes.h>
@@ -38,10 +39,6 @@
 void* android_dlopen_ext(const char*, int, const android_dlextinfo*)
     __attribute__((weak_import));
 
-// This function is exported by the dynamic linker but never declared in any
-// official header for some architecture/version combinations.
-int dl_iterate_phdr(int (*cb)(dl_phdr_info* info, size_t size, void* data),
-                    void* data) __attribute__((weak_import));
 }  // extern "C"
 
 namespace chromium_android_linker {
@@ -238,35 +235,54 @@
   relro_fd_ = kInvalidFd;
 }
 
-// static
-int NativeLibInfo::VisitLibraryPhdrs(dl_phdr_info* info,
-                                     size_t size UNUSED,
-                                     void* lib_info) {
-  auto* out_lib_info = reinterpret_cast<NativeLibInfo*>(lib_info);
-  ElfW(Addr) lookup_address =
-      static_cast<ElfW(Addr)>(out_lib_info->load_address());
+bool NativeLibInfo::FindRelroAndLibraryRangesInElf() {
+  LOG_INFO("Called for 0x%" PRIxPTR, load_address_);
 
-  // Use max and min vaddr to compute the library's load size.
+  // Check that an ELF library starts at the |load_address_|.
+  if (memcmp(reinterpret_cast<void*>(load_address_), ELFMAG, SELFMAG) != 0) {
+    LOG_ERROR("Wrong magic number");
+    return false;
+  }
+  auto class_type = *reinterpret_cast<uint8_t*>(load_address_ + EI_CLASS);
+  if (class_type == ELFCLASS32) {
+    LOG_INFO("ELFCLASS32");
+  } else if (class_type == ELFCLASS64) {
+    LOG_INFO("ELFCLASS64");
+  } else {
+    LOG_ERROR("Could not determine ELF class");
+    return false;
+  }
+
+  // Sanitycheck PAGE_SIZE before use.
+  int page_size = sysconf(_SC_PAGESIZE);
+  if (page_size != PAGE_SIZE)
+    abort();
+
+  // Compute the ranges of PT_LOAD segments and the PT_GNU_RELRO. It is possible
+  // to reach for the same information by iterating over all loaded libraries
+  // and their program headers using dl_iterate_phdr(3). Instead here the
+  // iteration goes through the array |e_phoff[e_phnum]| to avoid acquisition of
+  // the global lock in Bionic (dlfcn.cpp).
+  //
+  // The code relies on (1) having RELRO in the PT_GNU_RELRO segment, and (2)
+  // the fact that the address *range* occupied by the library is the minimal
+  // address range containing all of the PT_LOAD and PT_GNU_RELRO segments.
+  // This is a contract between the static linker and the dynamic linker which
+  // seems unlikely to get broken. It might break though as a result of
+  // post-processing the DSO, which has historically happened for a few
+  // occasions (eliminating the unwind tables and splitting the library into
+  // DFMs).
   auto min_vaddr = std::numeric_limits<ElfW(Addr)>::max();
+  auto min_relro_vaddr = min_vaddr;
   ElfW(Addr) max_vaddr = 0;
-  ElfW(Addr) min_relro_vaddr = ~0;
   ElfW(Addr) max_relro_vaddr = 0;
-
-  bool is_matching = false;
-  for (int i = 0; i < info->dlpi_phnum; ++i) {
-    const ElfW(Phdr)* phdr = &info->dlpi_phdr[i];
+  const auto* ehdr = reinterpret_cast<const ElfW(Ehdr)*>(load_address_);
+  const auto* phdrs =
+      reinterpret_cast<const ElfW(Phdr)*>(load_address_ + ehdr->e_phoff);
+  for (int i = 0; i < ehdr->e_phnum; i++) {
+    const ElfW(Phdr)* phdr = &phdrs[i];
     switch (phdr->p_type) {
       case PT_LOAD:
-        // See if this segment's load address matches the value passed to
-        // android_dlopen_ext as |extinfo.reserved_addr|.
-        //
-        // Here and below, the virtual address in memory is computed by
-        //     address == info->dlpi_addr + program_header->p_vaddr
-        // that is, the p_vaddr fields is relative to the object base address.
-        // See dl_iterate_phdr(3) for details.
-        if (lookup_address == info->dlpi_addr + phdr->p_vaddr)
-          is_matching = true;
-
         if (phdr->p_vaddr < min_vaddr)
           min_vaddr = phdr->p_vaddr;
         if (phdr->p_vaddr + phdr->p_memsz > max_vaddr)
@@ -291,34 +307,10 @@
     }
   }
 
-  // Fill out size and relro information if there was a match.
-  if (is_matching) {
-    int page_size = sysconf(_SC_PAGESIZE);
-    if (page_size != PAGE_SIZE)
-      abort();
-
-    out_lib_info->load_size_ = PAGE_END(max_vaddr) - PAGE_START(min_vaddr);
-    out_lib_info->relro_size_ =
-        PAGE_END(max_relro_vaddr) - PAGE_START(min_relro_vaddr);
-    out_lib_info->relro_start_ = info->dlpi_addr + PAGE_START(min_relro_vaddr);
-
-    return true;
-  }
-
-  return false;
-}
-
-bool NativeLibInfo::FindRelroAndLibraryRangesInElf() {
-  LOG_INFO("Called for 0x%" PRIxPTR, load_address_);
-  if (!dl_iterate_phdr) {
-    LOG_ERROR("No dl_iterate_phdr() found");
-    return false;
-  }
-  int status = dl_iterate_phdr(&VisitLibraryPhdrs, this);
-  if (!status) {
-    LOG_ERROR("Failed to find library at address 0x%" PRIxPTR, load_address_);
-    return false;
-  }
+  // Fill out size and RELRO information.
+  load_size_ = PAGE_END(max_vaddr) - PAGE_START(min_vaddr);
+  relro_size_ = PAGE_END(max_relro_vaddr) - PAGE_START(min_relro_vaddr);
+  relro_start_ = load_address_ + PAGE_START(min_relro_vaddr);
   return true;
 }
 
diff --git a/base/android/linker/modern_linker_jni.h b/base/android/linker/modern_linker_jni.h
index 42299e0..e8a2d08 100644
--- a/base/android/linker/modern_linker_jni.h
+++ b/base/android/linker/modern_linker_jni.h
@@ -118,10 +118,16 @@
   // unittest LoadLibrary() directly.
   bool CreateSharedRelroFdForTesting();
 
-  int get_relro_fd_for_testing() { return relro_fd_; }
+  int get_relro_fd_for_testing() const { return relro_fd_; }
+  size_t get_relro_start_for_testing() const { return relro_start_; }
+  size_t get_load_size_for_testing() const { return load_size_; }
 
   static bool SharedMemoryFunctionsSupportedForTesting();
 
+  bool FindRelroAndLibraryRangesInElfForTesting() {
+    return FindRelroAndLibraryRangesInElf();
+  }
+
  private:
   NativeLibInfo() = delete;
 
@@ -139,14 +145,9 @@
 
   void CloseRelroFd();
 
-  // Callback for dl_iterate_phdr(). From program headers (phdr(s)) of a loaded
-  // library determines its load address, and in case it is equal to
-  // |lib_info.load_address()|, extracts the RELRO and size information from
-  // corresponding phdr(s).
-  static int VisitLibraryPhdrs(dl_phdr_info* info, size_t size, void* lib_info);
-
-  // Invokes dl_iterate_phdr() for the current load address, with
-  // VisitLibraryPhdrs() as a callback.
+  // Determines the minimal address ranges for the union of all the loadable
+  // (and RELRO) segments by parsing ELF starting at |load_address()|. May fail
+  // or return incorrect results for some creative ELF libraries.
   bool FindRelroAndLibraryRangesInElf();
 
   // Loads and initializes the load address ranges: |load_address_|,
diff --git a/base/android/linker/modern_linker_unittest.cc b/base/android/linker/modern_linker_unittest.cc
index fe2242e..07bbd321 100644
--- a/base/android/linker/modern_linker_unittest.cc
+++ b/base/android/linker/modern_linker_unittest.cc
@@ -13,8 +13,121 @@
 #include "base/system/sys_info.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+extern char __executable_start;
+
+extern "C" {
+
+// This function is exported by the dynamic linker but never declared in any
+// official header for some architecture/version combinations.
+int dl_iterate_phdr(int (*cb)(dl_phdr_info* info, size_t size, void* data),
+                    void* data) __attribute__((weak_import));
+
+}  // extern "C"
+
 namespace chromium_android_linker {
 
+namespace {
+
+// Implements the old method of finding library and RELRO ranges by providing a
+// callback for use with dl_iterate_phdr(3). Data from the field has shown that
+// this method makes library loading significantly slower than
+// android_dlopen_ext(), it was replaced by the exuivalent one:
+// NativeLibInfo::FindRelroAndLibraryRangesInElf().
+class LibraryRangeFinder {
+ public:
+  explicit LibraryRangeFinder(uintptr_t address) : load_address_(address) {}
+
+  uintptr_t load_address() const { return load_address_; }
+  size_t load_size() const { return load_size_; }
+  uintptr_t relro_start() const { return relro_start_; }
+  size_t relro_size() const { return relro_size_; }
+
+  static int VisitLibraryPhdrs(dl_phdr_info* info,
+                               size_t size UNUSED,
+                               void* data);
+
+ private:
+  uintptr_t load_address_;
+  size_t load_size_ = 0;
+  uintptr_t relro_start_ = 0;
+  size_t relro_size_ = 0;
+};
+
+// Callback for dl_iterate_phdr(). From program headers (phdr(s)) of a loaded
+// library determines its load address, and in case it is equal to
+// |load_address()|, extracts the RELRO and size information from
+// corresponding phdr(s).
+// static
+int LibraryRangeFinder::VisitLibraryPhdrs(dl_phdr_info* info,
+                                          size_t size UNUSED,
+                                          void* data) {
+  auto* finder = reinterpret_cast<LibraryRangeFinder*>(data);
+  ElfW(Addr) lookup_address = static_cast<ElfW(Addr)>(finder->load_address());
+
+  // Use max and min vaddr to compute the library's load size.
+  auto min_vaddr = std::numeric_limits<ElfW(Addr)>::max();
+  ElfW(Addr) max_vaddr = 0;
+  ElfW(Addr) min_relro_vaddr = ~0;
+  ElfW(Addr) max_relro_vaddr = 0;
+
+  bool is_matching = false;
+  for (int i = 0; i < info->dlpi_phnum; ++i) {
+    const ElfW(Phdr)* phdr = &info->dlpi_phdr[i];
+    switch (phdr->p_type) {
+      case PT_LOAD:
+        // See if this segment's load address matches the value passed to
+        // android_dlopen_ext as |extinfo.reserved_addr|.
+        //
+        // Here and below, the virtual address in memory is computed by
+        //     address == info->dlpi_addr + program_header->p_vaddr
+        // that is, the p_vaddr fields is relative to the object base address.
+        // See dl_iterate_phdr(3) for details.
+        if (lookup_address == info->dlpi_addr + phdr->p_vaddr)
+          is_matching = true;
+
+        if (phdr->p_vaddr < min_vaddr)
+          min_vaddr = phdr->p_vaddr;
+        if (phdr->p_vaddr + phdr->p_memsz > max_vaddr)
+          max_vaddr = phdr->p_vaddr + phdr->p_memsz;
+        break;
+      case PT_GNU_RELRO:
+        min_relro_vaddr = PAGE_START(phdr->p_vaddr);
+        max_relro_vaddr = phdr->p_vaddr + phdr->p_memsz;
+
+        // As of 2020-11 in libmonochrome.so RELRO is covered by a LOAD segment.
+        // It is not clear whether this property is going to be guaranteed in
+        // the future. Include the RELRO segment as part of the 'load size'.
+        // This way a potential future change in layout of LOAD segments would
+        // not open address space for racy mmap(MAP_FIXED).
+        if (min_relro_vaddr < min_vaddr)
+          min_vaddr = min_relro_vaddr;
+        if (max_vaddr < max_relro_vaddr)
+          max_vaddr = max_relro_vaddr;
+        break;
+      default:
+        break;
+    }
+  }
+
+  // Fill out size and relro information if there was a match.
+  if (is_matching) {
+    int page_size = sysconf(_SC_PAGESIZE);
+    if (page_size != PAGE_SIZE)
+      abort();
+
+    finder->load_size_ = PAGE_END(max_vaddr) - PAGE_START(min_vaddr);
+    finder->relro_size_ =
+        PAGE_END(max_relro_vaddr) - PAGE_START(min_relro_vaddr);
+    finder->relro_start_ = info->dlpi_addr + PAGE_START(min_relro_vaddr);
+
+    return 1;
+  }
+
+  return 0;
+}
+
+}  // namespace
+
 // These tests get linked with base_unittests and leave JNI uninitialized. The
 // tests must not execute any parts relying on initialization with JNI_Onload().
 
@@ -106,4 +219,50 @@
   munmap(synthetic_region_start, kSize);
 }
 
+TEST_F(ModernLinkerTest, FindLibraryRanges) {
+  static int var_inside = 3;
+
+  NativeLibInfo lib_info = {0, 0};
+  uintptr_t executable_start = reinterpret_cast<uintptr_t>(&__executable_start);
+  lib_info.set_load_address(executable_start);
+
+  EXPECT_TRUE(lib_info.FindRelroAndLibraryRangesInElfForTesting());
+  EXPECT_EQ(executable_start, lib_info.load_address());
+
+  uintptr_t inside_library = reinterpret_cast<uintptr_t>(&var_inside);
+  EXPECT_LE(executable_start, inside_library);
+  EXPECT_LE(inside_library,
+            lib_info.load_address() + lib_info.get_load_size_for_testing());
+
+  EXPECT_LE(lib_info.load_address(), lib_info.get_relro_start_for_testing());
+  EXPECT_LE(lib_info.get_relro_start_for_testing(),
+            lib_info.load_address() + lib_info.get_load_size_for_testing());
+}
+
+// Check that discovering RELRO segment address ranges and the DSO ranges agrees
+// with the method based on dl_iterate_phdr(3). The check is performed on the
+// test library, not on libmonochrome.
+TEST_F(ModernLinkerTest, LibraryRangesViaIteratePhdr) {
+  // Find the ranges using dl_iterate_phdr().
+  if (!dl_iterate_phdr) {
+    ASSERT_TRUE(false) << "dl_iterate_phdr() not found";
+  }
+  uintptr_t executable_start = reinterpret_cast<uintptr_t>(&__executable_start);
+  LibraryRangeFinder finder(executable_start);
+  ASSERT_EQ(1, dl_iterate_phdr(&LibraryRangeFinder::VisitLibraryPhdrs,
+                               reinterpret_cast<void*>(&finder)));
+  ASSERT_LE(finder.relro_start() + finder.relro_size(),
+            finder.load_address() + finder.load_size());
+
+  // Find the ranges by parsing ELF.
+  NativeLibInfo lib_info2 = {0, 0};
+  lib_info2.set_load_address(executable_start);
+  EXPECT_TRUE(lib_info2.FindRelroAndLibraryRangesInElfForTesting());
+
+  // Compare results.
+  EXPECT_EQ(finder.load_address(), lib_info2.load_address());
+  EXPECT_EQ(finder.load_size(), lib_info2.get_load_size_for_testing());
+  EXPECT_EQ(finder.relro_start(), lib_info2.get_relro_start_for_testing());
+}
+
 }  // namespace chromium_android_linker
diff --git a/base/task/sequence_manager/task_queue_impl.cc b/base/task/sequence_manager/task_queue_impl.cc
index aa9f704fa..cec117f 100644
--- a/base/task/sequence_manager/task_queue_impl.cc
+++ b/base/task/sequence_manager/task_queue_impl.cc
@@ -117,7 +117,12 @@
     const Location& location,
     OnceClosure callback,
     TimeDelta delay) {
-  if (!FeatureList::IsEnabled(kRemoveCanceledTasksInTaskQueue)) {
+  if (!remove_canceled_tasks_in_task_queue_.has_value()) {
+    remove_canceled_tasks_in_task_queue_ =
+        FeatureList::IsEnabled(kRemoveCanceledTasksInTaskQueue);
+  }
+
+  if (!remove_canceled_tasks_in_task_queue_.value()) {
     return SequencedTaskRunner::PostCancelableDelayedTask(
         location, std::move(callback), delay);
   }
diff --git a/base/task/sequence_manager/task_queue_impl.h b/base/task/sequence_manager/task_queue_impl.h
index 550e7f4..d1d3b675 100644
--- a/base/task/sequence_manager/task_queue_impl.h
+++ b/base/task/sequence_manager/task_queue_impl.h
@@ -336,6 +336,12 @@
     const scoped_refptr<GuardedTaskPoster> task_poster_;
     const scoped_refptr<AssociatedThreadId> associated_thread_;
     const TaskType task_type_;
+    // Caches whether kRemoveCanceledTasksInTaskQueue is enabled. FeatureList
+    // access is too expensive to be done for each task, costing >1% of total
+    // CPU on the main renderer thread, from field data.
+    // Using an optional since *this can be constructed before the feature
+    // system is initialized.
+    absl::optional<bool> remove_canceled_tasks_in_task_queue_;
   };
 
   // A queue for holding delayed tasks before their delay has expired.
diff --git a/build/android/docs/java_toolchain.md b/build/android/docs/java_toolchain.md
index 4a39175..007eccd 100644
--- a/build/android/docs/java_toolchain.md
+++ b/build/android/docs/java_toolchain.md
@@ -253,6 +253,8 @@
   * In other words: Enforces that targets do not rely on indirect dependencies
     to populate their classpath.
 * Checks run on the entire codebase, not only on changed lines.
+* This is the only static analysis that runs on prebuilt .jar files.
+* The same tool is also used for [bytecode rewriting](/docs/ui/android/bytecode_rewriting.md).
 
 ### [PRESUBMIT.py](/PRESUBMIT.py):
 * Checks for banned patterns via `_BANNED_JAVA_FUNCTIONS`.
diff --git a/chrome/VERSION b/chrome/VERSION
index 2e61bb858..5168e1d 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=99
 MINOR=0
-BUILD=4770
+BUILD=4771
 PATCH=0
diff --git a/chrome/android/features/autofill_assistant/BUILD.gn b/chrome/android/features/autofill_assistant/BUILD.gn
index 714d5d65..01a7883 100644
--- a/chrome/android/features/autofill_assistant/BUILD.gn
+++ b/chrome/android/features/autofill_assistant/BUILD.gn
@@ -81,6 +81,7 @@
     "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependenciesChrome.java",
     "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependenciesFactoryChrome.java",
     "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDialogButton.java",
+    "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtilChrome.java",
     "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPopup.java",
     "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantKeyboardCoordinator.java",
     "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantModel.java",
@@ -231,7 +232,9 @@
 
 generate_jni("jni_headers_public") {
   sources = [
+    "public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependencies.java",
     "public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantFeatures.java",
+    "public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependencies.java",
     "public/java/src/org/chromium/chrome/browser/autofill_assistant/Starter.java",
   ]
 }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java
index 3ccc891d..c15ceb9 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java
@@ -105,7 +105,7 @@
             ApplicationViewportInsetSupplier applicationViewportInsetSupplier,
             @Nullable AssistantTabObscuringUtil tabObscuringUtil,
             @NonNull BrowserControlsStateProvider browserControlsStateProvider,
-            AccessibilityUtil accessibilityUtil) {
+            AccessibilityUtil accessibilityUtil, AssistantInfoPageUtil infoPageUtil) {
         mAccessibilityUtil = accessibilityUtil;
         mModel = model;
         mOverlayCoordinator = overlayCoordinator;
@@ -145,9 +145,10 @@
         mHeaderCoordinator =
                 new AssistantHeaderCoordinator(activity, model.getHeaderModel(), accessibilityUtil);
         mInfoBoxCoordinator = new AssistantInfoBoxCoordinator(activity, model.getInfoBoxModel());
-        mDetailsCoordinator = new AssistantDetailsCoordinator(activity, model.getDetailsModel(),
-                ImageFetcherFactory.createImageFetcher(ImageFetcherConfig.DISK_CACHE_ONLY,
-                        AutofillAssistantUiController.getProfile().getProfileKey()));
+        mDetailsCoordinator =
+                new AssistantDetailsCoordinator(activity, infoPageUtil, model.getDetailsModel(),
+                        ImageFetcherFactory.createImageFetcher(ImageFetcherConfig.DISK_CACHE_ONLY,
+                                AutofillAssistantUiController.getProfile().getProfileKey()));
         mPaymentRequestCoordinator =
                 new AssistantCollectUserDataCoordinator(activity, model.getCollectUserDataModel());
         mFormCoordinator = new AssistantFormCoordinator(activity, model.getFormModel());
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java
index b3d102d2..cf8939c 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java
@@ -47,7 +47,7 @@
             @NonNull Supplier<Tab> currentTabSupplier,
             @NonNull BrowserControlsManager browserControlsManager,
             @NonNull ApplicationViewportInsetSupplier applicationBottomInsetProvider,
-            AccessibilityUtil accessibilityUtil) {
+            AccessibilityUtil accessibilityUtil, AssistantInfoPageUtil infoPageUtil) {
         mActivity = activity;
         mCurrentTabSupplier = currentTabSupplier;
 
@@ -63,7 +63,7 @@
 
         mBottomBarCoordinator = new AssistantBottomBarCoordinator(activity, mModel,
                 mOverlayCoordinator, controller, applicationBottomInsetProvider, tabObscuringUtil,
-                browserControlsManager, accessibilityUtil);
+                browserControlsManager, accessibilityUtil, infoPageUtil);
         mKeyboardCoordinator = new AssistantKeyboardCoordinator(activity, keyboardDelegate,
                 rootView, mModel, keyboardCoordinatorDelegate, controller);
     }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDialogButton.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDialogButton.java
index c3a6f59..84728fa 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDialogButton.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDialogButton.java
@@ -10,26 +10,28 @@
 
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
-import org.chromium.chrome.browser.customtabs.CustomTabActivity;
 
 /**
  * Represents a button.
  */
 @JNINamespace("autofill_assistant")
 public class AssistantDialogButton {
-    private String mLabel;
+    private final AssistantInfoPageUtil mInfoPageUtil;
+    private final String mLabel;
     @Nullable
-    private String mUrl;
+    private final String mUrl;
 
     @CalledByNative
-    public AssistantDialogButton(String label, @Nullable String url) {
+    public AssistantDialogButton(
+            AssistantInfoPageUtil infoPageUtil, String label, @Nullable String url) {
+        mInfoPageUtil = infoPageUtil;
         mLabel = label;
         mUrl = url;
     }
 
     public void onClick(Context context) {
         if (mUrl != null) {
-            CustomTabActivity.showInfoPage(context, mUrl);
+            mInfoPageUtil.showInfoPage(context, mUrl);
         }
     }
 
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtilChrome.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtilChrome.java
new file mode 100644
index 0000000..ef037c0
--- /dev/null
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtilChrome.java
@@ -0,0 +1,19 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.autofill_assistant;
+
+import android.content.Context;
+
+import org.chromium.chrome.browser.customtabs.CustomTabActivity;
+
+/**
+ * Implementation of {@link AssistantInfoPageUtil} for Chrome.
+ */
+public class AssistantInfoPageUtilChrome implements AssistantInfoPageUtil {
+    @Override
+    public void showInfoPage(Context context, String url) {
+        CustomTabActivity.showInfoPage(context, url);
+    }
+}
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingHelperImpl.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingHelperImpl.java
index 9ba2ed0..0e6af29 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingHelperImpl.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingHelperImpl.java
@@ -37,7 +37,8 @@
     AssistantOnboardingHelperImpl(WebContents webContents, AssistantDependencies dependencies) {
         mOnboardingCoordinatorFactory = new OnboardingCoordinatorFactory(dependencies.getActivity(),
                 dependencies.getBottomSheetController(), dependencies.getBrowserControls(),
-                dependencies.getRootView(), dependencies.getAccessibilityUtil());
+                dependencies.getRootView(), dependencies.getAccessibilityUtil(),
+                dependencies.getInfoPageUtil());
         mTriggerScriptBridge = new AssistantTriggerScriptBridge(webContents, dependencies);
     }
 
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependenciesChrome.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependenciesChrome.java
index 3dd4afc6..4c9b181 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependenciesChrome.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependenciesChrome.java
@@ -33,4 +33,9 @@
 
         return new AssistantTabObscuringUtilChrome(tabObscuringHandler);
     }
+
+    @Override
+    default AssistantInfoPageUtil getInfoPageUtil() {
+        return new AssistantInfoPageUtilChrome();
+    }
 }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntryImpl.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntryImpl.java
index edfbad5c..66b09f3f 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntryImpl.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntryImpl.java
@@ -37,10 +37,12 @@
             BrowserControlsStateProvider browserControls, View rootView,
             ActivityTabProvider activityTabProvider,
             AssistantDependenciesFactory dependenciesFactory) {
+        AssistantStaticDependencies staticDependencies =
+                dependenciesFactory.createStaticDependencies();
         return new AutofillAssistantActionHandlerImpl(
                 new OnboardingCoordinatorFactory(context, bottomSheetController, browserControls,
-                        rootView,
-                        dependenciesFactory.createStaticDependencies().getAccessibilityUtil()),
+                        rootView, staticDependencies.getAccessibilityUtil(),
+                        staticDependencies.getInfoPageUtil()),
                 activityTabProvider, dependenciesFactory);
     }
 }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
index 43931e7..3eea6504 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
@@ -149,7 +149,7 @@
                 activity.getWindowAndroid().getKeyboardDelegate(), rootView.get(),
                 activity.getActivityTabProvider(), activity.getBrowserControlsManager(),
                 activity.getWindowAndroid().getApplicationBottomInsetProvider(),
-                dependencies.getAccessibilityUtil());
+                dependencies.getAccessibilityUtil(), dependencies.getInfoPageUtil());
         mActivityTabObserver = new ActivityTabProvider.ActivityTabTabObserver(
                 activity.getActivityTabProvider(), /* shouldTrigger = */ true) {
             @Override
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsAdapter.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsAdapter.java
index c5e373bd..8d43cb1 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsAdapter.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsAdapter.java
@@ -35,9 +35,9 @@
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.Callback;
 import org.chromium.chrome.autofill_assistant.R;
+import org.chromium.chrome.browser.autofill_assistant.AssistantInfoPageUtil;
 import org.chromium.chrome.browser.autofill_assistant.AssistantTextUtils;
 import org.chromium.chrome.browser.autofill_assistant.LayoutUtils;
-import org.chromium.chrome.browser.customtabs.CustomTabActivity;
 import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
 import org.chromium.components.browser_ui.widget.animation.Interpolators;
 import org.chromium.components.image_fetcher.ImageFetcher;
@@ -92,6 +92,7 @@
     }
 
     private final Context mContext;
+    private final AssistantInfoPageUtil mInfoPageUtil;
 
     private final int mImageWidth;
     private final int mImageHeight;
@@ -104,8 +105,10 @@
     private List<Callback<Integer>> mPlaceholdersColorCallbacks = new ArrayList<>();
     private ImageFetcher mImageFetcher;
 
-    AssistantDetailsAdapter(Context context, ImageFetcher imageFetcher) {
+    AssistantDetailsAdapter(
+            Context context, AssistantInfoPageUtil infoPageUtil, ImageFetcher imageFetcher) {
         mContext = context;
+        mInfoPageUtil = infoPageUtil;
         mImageWidth = context.getResources().getDimensionPixelSize(
                 R.dimen.autofill_assistant_details_image_size);
         mImageHeight = context.getResources().getDimensionPixelSize(
@@ -441,7 +444,7 @@
                     String presentUrl = clickthroughData.getClickthroughUrl().isEmpty()
                             ? imageUrl
                             : clickthroughData.getClickthroughUrl();
-                    CustomTabActivity.showInfoPage(context.getApplicationContext(), presentUrl);
+                    mInfoPageUtil.showInfoPage(context.getApplicationContext(), presentUrl);
                 }
             }
 
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsCoordinator.java
index 053b4bd..3312bea 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsCoordinator.java
@@ -17,6 +17,7 @@
 import androidx.recyclerview.widget.RecyclerView;
 
 import org.chromium.chrome.autofill_assistant.R;
+import org.chromium.chrome.browser.autofill_assistant.AssistantInfoPageUtil;
 import org.chromium.components.image_fetcher.ImageFetcher;
 
 /**
@@ -26,8 +27,8 @@
     private final RecyclerView mView;
     private final AssistantDetailsAdapter mAdapter;
 
-    public AssistantDetailsCoordinator(
-            Context context, AssistantDetailsModel model, ImageFetcher imageFetcher) {
+    public AssistantDetailsCoordinator(Context context, AssistantInfoPageUtil infoPageUtil,
+            AssistantDetailsModel model, ImageFetcher imageFetcher) {
         mView = new RecyclerView(context);
         mView.setLayoutParams(new ViewGroup.LayoutParams(
                 ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
@@ -35,7 +36,7 @@
                 context, LinearLayoutManager.VERTICAL, /* reverseLayout= */ false));
         mView.setBackgroundResource(R.drawable.autofill_assistant_details_bg);
         mView.addItemDecoration(new DetailsItemDecoration(context));
-        mAdapter = new AssistantDetailsAdapter(context, imageFetcher);
+        mAdapter = new AssistantDetailsAdapter(context, infoPageUtil, imageFetcher);
         mView.setAdapter(mAdapter);
 
         // Listen to the model and set the details on the adapter when they change.
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BaseOnboardingCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BaseOnboardingCoordinator.java
index b8838ff6..9f503e6 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BaseOnboardingCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BaseOnboardingCoordinator.java
@@ -20,9 +20,9 @@
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.autofill_assistant.R;
+import org.chromium.chrome.browser.autofill_assistant.AssistantInfoPageUtil;
 import org.chromium.chrome.browser.autofill_assistant.AutofillAssistantPreferencesUtil;
 import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayCoordinator;
-import org.chromium.chrome.browser.customtabs.CustomTabActivity;
 import org.chromium.components.embedder_support.util.UrlUtilitiesJni;
 import org.chromium.ui.text.NoUnderlineClickableSpan;
 import org.chromium.ui.text.SpanApplier;
@@ -51,6 +51,7 @@
     private static final String SHOPPING_ASSISTED_CHECKOUT_INTENT = "SHOPPING_ASSISTED_CHECKOUT";
     private static final String BUY_MOVIE_TICKETS_EXPERIMENT_ID = "4363482";
 
+    private final AssistantInfoPageUtil mInfoPageUtil;
     private final String mExperimentIds;
     private final Map<String, String> mParameters;
     private final Map<String, String> mStringMap = new HashMap<>();
@@ -62,8 +63,9 @@
     @Nullable
     ScrollView mView;
 
-    public BaseOnboardingCoordinator(
-            String experimentIds, Map<String, String> parameters, Context context) {
+    public BaseOnboardingCoordinator(AssistantInfoPageUtil infoPageUtil, String experimentIds,
+            Map<String, String> parameters, Context context) {
+        mInfoPageUtil = infoPageUtil;
         mExperimentIds = experimentIds;
         mParameters = parameters;
         mContext = context;
@@ -209,7 +211,7 @@
 
         NoUnderlineClickableSpan termsSpan = new NoUnderlineClickableSpan(mContext.getResources(),
                 (widget)
-                        -> CustomTabActivity.showInfoPage(mContext.getApplicationContext(),
+                        -> mInfoPageUtil.showInfoPage(mContext.getApplicationContext(),
                                 TextUtils.isEmpty(termsAndConditionsUrl)
                                                 || !UrlUtilitiesJni.get().isGoogleSubDomainUrl(
                                                         termsAndConditionsUrl)
@@ -291,4 +293,4 @@
         void fetchOnboardingDefinition(
                 BaseOnboardingCoordinator coordinator, String intent, String locale, int timeoutMs);
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java
index 2972d23..190d19f2 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java
@@ -19,6 +19,7 @@
 import org.chromium.chrome.autofill_assistant.R;
 import org.chromium.chrome.browser.autofill_assistant.AssistantBottomBarDelegate;
 import org.chromium.chrome.browser.autofill_assistant.AssistantBottomSheetContent;
+import org.chromium.chrome.browser.autofill_assistant.AssistantInfoPageUtil;
 import org.chromium.chrome.browser.autofill_assistant.BottomSheetUtils;
 import org.chromium.chrome.browser.autofill_assistant.LayoutUtils;
 import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayCoordinator;
@@ -52,11 +53,11 @@
     @Nullable
     AssistantOverlayCoordinator mOverlayCoordinator;
 
-    BottomSheetOnboardingCoordinator(String experimentIds, Map<String, String> parameters,
-            Context context, BottomSheetController controller,
+    BottomSheetOnboardingCoordinator(AssistantInfoPageUtil infoPageUtil, String experimentIds,
+            Map<String, String> parameters, Context context, BottomSheetController controller,
             BrowserControlsStateProvider browserControls, View rootView, ScrimCoordinator scrim,
             AccessibilityUtil accessibilityUtil) {
-        super(experimentIds, parameters, context);
+        super(infoPageUtil, experimentIds, parameters, context);
         mController = controller;
         mBrowserControls = browserControls;
         mRootView = rootView;
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/DialogOnboardingCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/DialogOnboardingCoordinator.java
index a1e9169..8235ccac 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/DialogOnboardingCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/DialogOnboardingCoordinator.java
@@ -17,6 +17,7 @@
 
 import org.chromium.base.Callback;
 import org.chromium.chrome.autofill_assistant.R;
+import org.chromium.chrome.browser.autofill_assistant.AssistantInfoPageUtil;
 import org.chromium.chrome.browser.autofill_assistant.LayoutUtils;
 
 import java.util.Map;
@@ -29,9 +30,9 @@
     @Nullable
     AlertDialog mDialog;
 
-    DialogOnboardingCoordinator(
-            String experimentIds, Map<String, String> parameters, Context context) {
-        super(experimentIds, parameters, context);
+    DialogOnboardingCoordinator(AssistantInfoPageUtil infoPageUtil, String experimentIds,
+            Map<String, String> parameters, Context context) {
+        super(infoPageUtil, experimentIds, parameters, context);
     }
 
     @Override
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/OnboardingCoordinatorFactory.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/OnboardingCoordinatorFactory.java
index 64ec2395..d2b97d9 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/OnboardingCoordinatorFactory.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/OnboardingCoordinatorFactory.java
@@ -7,6 +7,7 @@
 import android.content.Context;
 import android.view.View;
 
+import org.chromium.chrome.browser.autofill_assistant.AssistantInfoPageUtil;
 import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.ui.util.AccessibilityUtil;
@@ -22,16 +23,18 @@
     private final BrowserControlsStateProvider mBrowserControls;
     private final View mRootView;
     private final AccessibilityUtil mAccessibilityUtil;
+    private final AssistantInfoPageUtil mInfoPageUtil;
 
     public OnboardingCoordinatorFactory(Context context,
             BottomSheetController bottomSheetController,
             BrowserControlsStateProvider browserControls, View rootView,
-            AccessibilityUtil accessibilityUtil) {
+            AccessibilityUtil accessibilityUtil, AssistantInfoPageUtil infoPageUtil) {
         mContext = context;
         mBottomSheetController = bottomSheetController;
         mBrowserControls = browserControls;
         mRootView = rootView;
         mAccessibilityUtil = accessibilityUtil;
+        mInfoPageUtil = infoPageUtil;
     }
 
     /**
@@ -39,8 +42,8 @@
      */
     public BaseOnboardingCoordinator createBottomSheetOnboardingCoordinator(
             String experimentIds, Map<String, String> parameters) {
-        return new BottomSheetOnboardingCoordinator(experimentIds, parameters, mContext,
-                mBottomSheetController, mBrowserControls, mRootView,
+        return new BottomSheetOnboardingCoordinator(mInfoPageUtil, experimentIds, parameters,
+                mContext, mBottomSheetController, mBrowserControls, mRootView,
                 mBottomSheetController.getScrimCoordinator(), mAccessibilityUtil);
     }
 
@@ -49,6 +52,6 @@
      */
     public BaseOnboardingCoordinator createDialogOnboardingCoordinator(
             String experimentIds, Map<String, String> parameters) {
-        return new DialogOnboardingCoordinator(experimentIds, parameters, mContext);
+        return new DialogOnboardingCoordinator(mInfoPageUtil, experimentIds, parameters, mContext);
     }
 }
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java
index 02ce669..531d935 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java
@@ -1380,7 +1380,7 @@
                 new AutofillAssistantCollectUserDataTestHelper.MockDelegate();
 
         AssistantInfoPopup infoPopup = new AssistantInfoPopup("Guest checkout", "Text explanation.",
-                new AssistantDialogButton("Close", null), null, null);
+                new AssistantDialogButton(null, "Close", null), null, null);
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             model.set(AssistantCollectUserDataModel.DELEGATE, delegate);
             model.set(AssistantCollectUserDataModel.VISIBLE, true);
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDetailsUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDetailsUiTest.java
index 4431bcc..3da6ae03 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDetailsUiTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDetailsUiTest.java
@@ -116,8 +116,12 @@
             Bitmap testImage = BitmapFactory.decodeResource(
                     mTestRule.getActivity().getResources(), R.drawable.btn_close);
 
+            AssistantStaticDependencies staticDependencies =
+                    new AssistantDependenciesFactoryChrome().createStaticDependencies();
+
             return new AssistantDetailsCoordinator(InstrumentationRegistry.getTargetContext(),
-                    model, new AutofillAssistantUiTestUtil.MockImageFetcher(testImage, null));
+                    staticDependencies.getInfoPageUtil(), model,
+                    new AutofillAssistantUiTestUtil.MockImageFetcher(testImage, null));
         });
 
         runOnUiThreadBlocking(()
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java
index f80d580..5e7c266 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java
@@ -104,6 +104,9 @@
     }
 
     private AssistantCoordinator createAndShowAssistantCoordinator() {
+        AssistantStaticDependencies staticDependencies =
+                new AssistantDependenciesFactoryChrome().createStaticDependencies();
+
         return TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
             AssistantCoordinator coordinator = new AssistantCoordinator(getActivity(),
                     initializeBottomSheet(),
@@ -115,9 +118,8 @@
                     getActivity().getActivityTabProvider(),
                     getActivity().getBrowserControlsManager(),
                     getActivity().getWindowAndroid().getApplicationBottomInsetProvider(),
-                    new AssistantDependenciesFactoryChrome()
-                            .createStaticDependencies()
-                            .getAccessibilityUtil());
+                    staticDependencies.getAccessibilityUtil(),
+                    staticDependencies.getInfoPageUtil());
             coordinator.show();
             return coordinator;
         });
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java
index 0c1fc40..cb74346 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java
@@ -104,12 +104,13 @@
         mScrimCoordinator = mCustomTabActivityTestRule.getActivity()
                                     .getRootUiCoordinatorForTesting()
                                     .getScrimCoordinator();
+
+        AssistantStaticDependencies staticDependencies =
+                new AssistantDependenciesFactoryChrome().createStaticDependencies();
         mOnboardingCoordinatorFactory = new OnboardingCoordinatorFactory(mActivity,
                 mBottomSheetController, mActivity.getBrowserControlsManager(),
                 mActivity.getCompositorViewHolderForTesting(),
-                new AssistantDependenciesFactoryChrome()
-                        .createStaticDependencies()
-                        .getAccessibilityUtil());
+                staticDependencies.getAccessibilityUtil(), staticDependencies.getInfoPageUtil());
     }
 
     private BaseOnboardingCoordinator createCoordinator() {
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/TestingAutofillAssistantModuleEntryProvider.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/TestingAutofillAssistantModuleEntryProvider.java
index 09d2f58..10fb91ce 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/TestingAutofillAssistantModuleEntryProvider.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/TestingAutofillAssistantModuleEntryProvider.java
@@ -41,7 +41,8 @@
                 AssistantDependenciesFactory dependenciesFactory) {
             super(new OnboardingCoordinatorFactory(context, bottomSheetController, browserControls,
                           rootView,
-                          dependenciesFactory.createStaticDependencies().getAccessibilityUtil()),
+                          dependenciesFactory.createStaticDependencies().getAccessibilityUtil(),
+                          dependenciesFactory.createStaticDependencies().getInfoPageUtil()),
                     activityTabProvider, dependenciesFactory);
         }
 
diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependencies.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependencies.java
index 0331d9c..303ac0a 100644
--- a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependencies.java
+++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependencies.java
@@ -7,6 +7,8 @@
 import android.app.Activity;
 import android.view.View;
 
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.chrome.browser.ActivityTabProvider;
 import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
@@ -20,6 +22,7 @@
  * WebContents should not be returned in this interface as objects should stay valid when
  * WebContents change.
  */
+@JNINamespace("autofill_assistant")
 public interface AssistantDependencies extends AssistantStaticDependencies {
     Activity getActivity();
 
@@ -36,4 +39,10 @@
     View getRootView();
 
     AssistantSnackbarFactory getSnackbarFactory();
+
+    // Only called by native to guarantee future type safety.
+    @CalledByNative
+    default AssistantStaticDependencies getStaticDependencies() {
+        return this;
+    }
 }
diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtil.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtil.java
new file mode 100644
index 0000000..e5b026f
--- /dev/null
+++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtil.java
@@ -0,0 +1,18 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.autofill_assistant;
+
+import android.content.Context;
+
+/**
+ * Utility class for showing info pages to the user. Implementations might differ depending on where
+ * Autofill Assistant is running (e.g. WebLayer, Chrome).
+ */
+public interface AssistantInfoPageUtil {
+    /**
+     * Shows a web page to the user. Might have limited functionality.
+     */
+    void showInfoPage(Context context, String url);
+}
diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependencies.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependencies.java
index 787d4b9..d55a75b8 100644
--- a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependencies.java
+++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantStaticDependencies.java
@@ -6,6 +6,8 @@
 
 import androidx.annotation.Nullable;
 
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.ui.base.WindowAndroid;
 import org.chromium.ui.util.AccessibilityUtil;
 
@@ -13,6 +15,7 @@
  * Generic static dependencies interface. The concrete implementation will depend on the browser
  * framework, i.e., WebLayer vs. Chrome.
  */
+@JNINamespace("autofill_assistant")
 public interface AssistantStaticDependencies {
     AccessibilityUtil getAccessibilityUtil();
 
@@ -22,4 +25,7 @@
      */
     @Nullable
     AssistantTabObscuringUtil getTabObscuringUtilOrNull(WindowAndroid windowAndroid);
+
+    @CalledByNative
+    AssistantInfoPageUtil getInfoPageUtil();
 }
diff --git a/chrome/android/features/autofill_assistant/public/java_sources.gni b/chrome/android/features/autofill_assistant/public/java_sources.gni
index 0b5f53cc..4e99ba9d 100644
--- a/chrome/android/features/autofill_assistant/public/java_sources.gni
+++ b/chrome/android/features/autofill_assistant/public/java_sources.gni
@@ -7,6 +7,7 @@
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependenciesFactory.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDependencyUtilsChrome.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantFeatures.java",
+  "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPageUtil.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantIsGsaFunction.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingHelper.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantSnackbar.java",
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartFeedTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartFeedTest.java
new file mode 100644
index 0000000..0da8b4d
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartFeedTest.java
@@ -0,0 +1,228 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withText;
+
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.Matchers.instanceOf;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.INSTANT_START_TEST_BASE_PARAMS;
+
+import android.view.View;
+
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.espresso.contrib.RecyclerViewActions;
+import androidx.test.espresso.matcher.BoundedMatcher;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.SmallTest;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.core.AllOf;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.library_loader.LibraryLoader;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.DisabledTest;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.preferences.Pref;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.ActivityTestUtils;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.components.user_prefs.UserPrefs;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.UiRestriction;
+import org.chromium.ui.test.util.ViewUtils;
+
+/**
+ * Integration tests of Feed placeholder on Instant Start which requires 2-stage initialization for
+ * Clank startup.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+// clang-format off
+@CommandLineFlags.
+    Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+@EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+    ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
+    ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.INSTANT_START})
+@Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
+    UiRestriction.RESTRICTION_TYPE_PHONE})
+public class InstantStartFeedTest {
+    // clang-format on
+    private static final int ARTICLE_SECTION_HEADER_POSITION = 0;
+
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    @After
+    public void tearDown() {
+        if (mActivityTestRule.getActivity() != null) {
+            ActivityTestUtils.clearActivityOrientation(mActivityTestRule.getActivity());
+        }
+    }
+
+    @Test
+    @SmallTest
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    @DisabledTest(message = "https://crbug.com/1263928")
+    public void testFeedPlaceholderFromColdStart() {
+        // clang-format on
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        Assert.assertFalse(mActivityTestRule.getActivity().isTablet());
+        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        // Feed placeholder should be shown from cold start with Instant Start on.
+        onView(withId(org.chromium.chrome.test.R.id.placeholders_layout))
+                .check(matches(isDisplayed()));
+        Assert.assertFalse(LibraryLoader.getInstance().isInitialized());
+
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        // Feed background should be non-transparent finally.
+        ViewUtils.onViewWaiting(
+                AllOf.allOf(withId(org.chromium.chrome.test.R.id.feed_stream_recycler_view),
+                        matchesBackgroundAlpha(255)));
+
+        StartSurfaceCoordinator startSurfaceCoordinator =
+                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertFalse(((StartSurfaceMediator) startSurfaceCoordinator.getController())
+                                       .shouldShowFeedPlaceholder());
+        });
+
+        // TODO(spdonghao): Add a test for Feed placeholder from warm start. It's tested in
+        // StartSurfaceMediatorUnitTest#feedPlaceholderFromWarmStart currently because warm start is
+        // hard to simulate here.
+    }
+
+    @Test
+    @LargeTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    @DisabledTest(message = "https://crbug.com/1263928")
+    public void testCachedFeedVisibility() {
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        mActivityTestRule.waitForActivityNativeInitializationComplete();
+        // FEED_ARTICLES_LIST_VISIBLE should equal to ARTICLES_LIST_VISIBLE.
+        CriteriaHelper.pollUiThread(()
+                                            -> UserPrefs.get(Profile.getLastUsedRegularProfile())
+                                                       .getBoolean(Pref.ARTICLES_LIST_VISIBLE)
+                        == StartSurfaceConfiguration.getFeedArticlesVisibility());
+
+        // Hide articles and verify that FEED_ARTICLES_LIST_VISIBLE and ARTICLES_LIST_VISIBLE are
+        // both false.
+        toggleHeader(false);
+        CriteriaHelper.pollUiThread(() -> !StartSurfaceConfiguration.getFeedArticlesVisibility());
+        TestThreadUtils.runOnUiThreadBlocking(
+                ()
+                        -> Assert.assertEquals(UserPrefs.get(Profile.getLastUsedRegularProfile())
+                                                       .getBoolean(Pref.ARTICLES_LIST_VISIBLE),
+                                StartSurfaceConfiguration.getFeedArticlesVisibility()));
+
+        // Show articles and verify that FEED_ARTICLES_LIST_VISIBLE and ARTICLES_LIST_VISIBLE are
+        // both true.
+        toggleHeader(true);
+        CriteriaHelper.pollUiThread(StartSurfaceConfiguration::getFeedArticlesVisibility);
+        TestThreadUtils.runOnUiThreadBlocking(
+                ()
+                        -> Assert.assertEquals(UserPrefs.get(Profile.getLastUsedRegularProfile())
+                                                       .getBoolean(Pref.ARTICLES_LIST_VISIBLE),
+                                StartSurfaceConfiguration.getFeedArticlesVisibility()));
+    }
+
+    @Test
+    @SmallTest
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    public void testHideFeedPlaceholder() {
+        // clang-format on
+        StartSurfaceConfiguration.setFeedVisibilityForTesting(false);
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+
+        // When cached Feed articles' visibility is invisible, placeholder should be invisible too.
+        onView(withId(org.chromium.chrome.test.R.id.placeholders_layout)).check(doesNotExist());
+    }
+
+    @Test
+    @SmallTest
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    @DisabledTest(message = "https://crbug.com/1263928")
+    public void testShowFeedPlaceholder() {
+        // clang-format on
+        StartSurfaceConfiguration.setFeedVisibilityForTesting(true);
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+
+        // When cached Feed articles' visibility is visible, placeholder should be visible too.
+        onView(withId(org.chromium.chrome.test.R.id.placeholders_layout))
+                .check(matches(isDisplayed()));
+    }
+
+    /**
+     * Toggles the header and checks whether the header has the right status.
+     *
+     * @param expanded Whether the header should be expanded.
+     */
+    private void toggleHeader(boolean expanded) {
+        onView(allOf(instanceOf(RecyclerView.class),
+                       withId(org.chromium.chrome.test.R.id.feed_stream_recycler_view)))
+                .perform(RecyclerViewActions.scrollToPosition(ARTICLE_SECTION_HEADER_POSITION));
+        onView(withId(org.chromium.chrome.test.R.id.header_menu)).perform(click());
+
+        onView(withText(expanded ? org.chromium.chrome.test.R.string.ntp_turn_on_feed
+                                 : org.chromium.chrome.test.R.string.ntp_turn_off_feed))
+                .perform(click());
+
+        onView(withText(expanded ? org.chromium.chrome.test.R.string.ntp_discover_on
+                                 : org.chromium.chrome.test.R.string.ntp_discover_off))
+                .check(matches(isDisplayed()));
+    }
+
+    private static Matcher<View> matchesBackgroundAlpha(final int expectedAlpha) {
+        return new BoundedMatcher<View, View>(View.class) {
+            String mMessage;
+            int mActualAlpha;
+
+            @Override
+            protected boolean matchesSafely(View item) {
+                if (item.getBackground() == null) {
+                    mMessage = item.getId() + " does not have a background";
+                    return false;
+                }
+                mActualAlpha = item.getBackground().getAlpha();
+                return mActualAlpha == expectedAlpha;
+            }
+            @Override
+            public void describeTo(final Description description) {
+                if (expectedAlpha != mActualAlpha) {
+                    mMessage = "Background alpha did not match: Expected " + expectedAlpha + " was "
+                            + mActualAlpha;
+                }
+                description.appendText(mMessage);
+            }
+        };
+    }
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartNewTabFromLauncherTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartNewTabFromLauncherTest.java
new file mode 100644
index 0000000..68ae091
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartNewTabFromLauncherTest.java
@@ -0,0 +1,219 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.INSTANT_START_TEST_BASE_PARAMS;
+import static org.chromium.ui.test.util.ViewUtils.waitForView;
+
+import android.content.Intent;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.test.filters.MediumTest;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.DisabledTest;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.IntentHandler;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.homepage.HomepageManager;
+import org.chromium.chrome.browser.tasks.pseudotab.TabAttributeCache;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
+import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.ActivityTestUtils;
+import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.components.embedder_support.util.UrlConstants;
+import org.chromium.components.embedder_support.util.UrlUtilities;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.UiRestriction;
+
+import java.io.IOException;
+
+/**
+ * Integration tests of new tab from launcher with Instant Start which requires 2-stage
+ * initialization for Clank startup.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+// clang-format off
+@CommandLineFlags.
+    Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+@EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+    ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
+    ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.INSTANT_START})
+@Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
+    UiRestriction.RESTRICTION_TYPE_PHONE})
+public class InstantStartNewTabFromLauncherTest {
+    // clang-format on
+    private static final long MAX_TIMEOUT_MS = 30000L;
+
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    @After
+    public void tearDown() {
+        if (mActivityTestRule.getActivity() != null) {
+            ActivityTestUtils.clearActivityOrientation(mActivityTestRule.getActivity());
+        }
+    }
+
+    @Test
+    @MediumTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    @DisabledTest(message = "https://crbug.com/1192559")
+    public void testNewTabFromLauncher() throws IOException {
+        testNewTabFromLauncherImpl();
+    }
+
+    @Test
+    @MediumTest
+    @DisableFeatures(ChromeFeatureList.INSTANT_START)
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testNewTabFromLauncherWithInstantStartDisabled() throws IOException {
+        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        testNewTabFromLauncherImpl();
+    }
+
+    @Test
+    @MediumTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void testNewTabFromLauncherWithHomepageDisabled_NoFinale() throws IOException {
+        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        testNewTabFromLauncherWithHomepageDisabledImpl();
+    }
+
+    @Test
+    @MediumTest
+    @DisableFeatures(ChromeFeatureList.INSTANT_START)
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void testNewTabFromLauncherWithHomepageDisabled_NoFinale_NoInstant() throws IOException {
+        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        testNewTabFromLauncherWithHomepageDisabledImpl();
+    }
+
+    @Test
+    @MediumTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testNewTabFromLauncherWithHomepageDisabled_Finale() throws IOException {
+        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        testNewTabFromLauncherWithHomepageDisabledImpl();
+    }
+
+    @Test
+    @MediumTest
+    @DisableFeatures(ChromeFeatureList.INSTANT_START)
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testNewTabFromLauncherWithHomepageDisabled_Finale_NoInstant() throws IOException {
+        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        testNewTabFromLauncherWithHomepageDisabledImpl();
+    }
+
+    @Test
+    @MediumTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void testNewIncognitoTabFromLauncher() throws IOException {
+        testNewIncognitoTabFromLauncherImpl();
+    }
+
+    @Test
+    @MediumTest
+    @DisableFeatures(ChromeFeatureList.INSTANT_START)
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void testNewIncognitoTabFromLauncher_NoInstant() throws IOException {
+        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        testNewIncognitoTabFromLauncherImpl();
+    }
+
+    private void testNewTabFromLauncherImpl() throws IOException {
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        TabAttributeCache.setTitleForTesting(0, "Google");
+
+        startNewTabFromLauncherIcon(false);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        TextView urlBar = cta.findViewById(org.chromium.chrome.start_surface.R.id.url_bar);
+        CriteriaHelper.pollUiThread(
+                ()
+                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
+                        && urlBar.isFocused(),
+                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.voice_search_button));
+        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
+        assertEquals(cta.findViewById(org.chromium.chrome.start_surface.R.id.toolbar_buttons)
+                             .getVisibility(),
+                View.INVISIBLE);
+        ToolbarDataProvider toolbarDataProvider =
+                cta.getToolbarManager().getLocationBarModelForTesting();
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
+        });
+    }
+
+    private void testNewIncognitoTabFromLauncherImpl() throws IOException {
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        TabAttributeCache.setTitleForTesting(0, "Google");
+
+        startNewTabFromLauncherIcon(true);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 1);
+
+        Assert.assertFalse(cta.getLayoutManager().overviewVisible());
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertTrue(UrlUtilities.isNTPUrl(cta.getActivityTab().getUrl())); });
+    }
+
+    private void testNewTabFromLauncherWithHomepageDisabledImpl() throws IOException {
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        TabAttributeCache.setTitleForTesting(0, "Google");
+
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> HomepageManager.getInstance().setPrefHomepageEnabled(false));
+        Assert.assertFalse(HomepageManager.isHomepageEnabled());
+
+        // Launches new Tab from the launcher icon and verifies that a NTP is created and showing.
+        startNewTabFromLauncherIcon(false);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+
+        Assert.assertFalse(cta.getLayoutManager().overviewVisible());
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertTrue(UrlUtilities.isNTPUrl(cta.getActivityTab().getUrl())); });
+    }
+
+    private void startNewTabFromLauncherIcon(boolean incognito) {
+        Intent intent = IntentHandler.createTrustedOpenNewTabIntent(
+                ContextUtils.getApplicationContext(), incognito);
+        intent.putExtra(IntentHandler.EXTRA_INVOKED_FROM_SHORTCUT, true);
+        mActivityTestRule.prepareUrlIntent(intent, null);
+        mActivityTestRule.launchActivity(intent);
+    }
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
new file mode 100644
index 0000000..7d61a10
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
@@ -0,0 +1,474 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.swipeUp;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withParent;
+import static androidx.test.espresso.matcher.ViewMatchers.withTagValue;
+
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertEquals;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.INSTANT_START_TEST_BASE_PARAMS;
+import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
+
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Build;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.MathUtils;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Criteria;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.DisableIf;
+import org.chromium.base.test.util.DisabledTest;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.feed.FeedPlaceholderLayout;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.homepage.HomepageManager;
+import org.chromium.chrome.browser.tabmodel.TabModelFilter;
+import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
+import org.chromium.chrome.browser.tasks.pseudotab.PseudoTab;
+import org.chromium.chrome.browser.tasks.pseudotab.TabAttributeCache;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.ActivityTestUtils;
+import org.chromium.chrome.test.util.ChromeRenderTestRule;
+import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.UiRestriction;
+import org.chromium.ui.test.util.ViewUtils;
+
+import java.io.IOException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Integration tests of tab switcher with Instant Start which requires 2-stage initialization for
+ * Clank startup.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+// clang-format off
+@CommandLineFlags.
+    Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+@EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+    ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
+    ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.INSTANT_START})
+@Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
+    UiRestriction.RESTRICTION_TYPE_PHONE})
+public class InstantStartTabSwitcherTest {
+    // clang-format on
+    private static final String SHADOW_VIEW_TAG = "TabListViewShadow";
+
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    @Rule
+    public ChromeRenderTestRule mRenderTestRule =
+            ChromeRenderTestRule.Builder.withPublicCorpus().setRevision(1).build();
+
+    @After
+    public void tearDown() {
+        if (mActivityTestRule.getActivity() != null) {
+            ActivityTestUtils.clearActivityOrientation(mActivityTestRule.getActivity());
+        }
+    }
+
+    /**
+     * Tests that clicking the "more_tabs" button won't make Omnibox get focused when single tab is
+     * shown on the StartSurface.
+     */
+    @Test
+    @MediumTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS + "/show_last_active_tab_only/true"})
+    public void startSurfaceMoreTabsButtonTest() throws IOException {
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        TabAttributeCache.setTitleForTesting(0, "Google");
+
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        Assert.assertFalse(cta.isTablet());
+        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        Assert.assertEquals("single", StartSurfaceConfiguration.START_SURFACE_VARIATION.getValue());
+        Assert.assertTrue(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
+        Assert.assertTrue(StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue());
+
+        mActivityTestRule.waitForActivityNativeInitializationComplete();
+
+        StartSurfaceTestUtils.clickMoreTabs(cta);
+
+        onViewWaiting(allOf(withParent(withId(org.chromium.chrome.test.R.id.tasks_surface_body)),
+                withId(org.chromium.chrome.test.R.id.tab_list_view)));
+        Assert.assertFalse(cta.findViewById(org.chromium.chrome.test.R.id.url_bar).isFocused());
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    @DisabledTest(message = "Test doesn't work with FeedV2. FeedV1 is removed crbug.com/1165828.")
+    public void renderTabSwitcher() throws IOException, InterruptedException {
+        // clang-format on
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2);
+        TabAttributeCache.setTitleForTesting(0, "title");
+        TabAttributeCache.setTitleForTesting(1, "漢字");
+        TabAttributeCache.setTitleForTesting(2, "اَلْعَرَبِيَّةُ");
+
+        // Must be after StartSurfaceTestUtils.createTabStateFile() to read these files.
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        RecyclerView recyclerView = cta.findViewById(org.chromium.chrome.test.R.id.tab_list_view);
+        CriteriaHelper.pollUiThread(() -> allCardsHaveThumbnail(recyclerView));
+        mRenderTestRule.render(recyclerView, "tabSwitcher_3tabs");
+
+        // Resume native initialization and make sure the GTS looks the same.
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+
+        Assert.assertEquals(3, cta.getTabModelSelector().getCurrentModel().getCount());
+        // TODO(crbug.com/1065314): find a better way to wait for a stable rendering.
+        Thread.sleep(2000);
+        // The titles on the tab cards changes to "Google" because we use M26_GOOGLE_COM.
+        mRenderTestRule.render(recyclerView, "tabSwitcher_3tabs_postNative");
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    // clang-format off
+    @EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID})
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    @DisableIf.Build(message = "Flaky. See https://crbug.com/1091311",
+        sdk_is_greater_than = Build.VERSION_CODES.O)
+    public void renderTabGroups() throws IOException {
+        // clang-format on
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(3);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(4);
+        TabAttributeCache.setRootIdForTesting(0, 0);
+        TabAttributeCache.setRootIdForTesting(1, 0);
+        TabAttributeCache.setRootIdForTesting(2, 0);
+        TabAttributeCache.setRootIdForTesting(3, 3);
+        TabAttributeCache.setRootIdForTesting(4, 3);
+        // StartSurfaceTestUtils.createTabStateFile() has to be after setRootIdForTesting() to get
+        // root IDs.
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2, 3, 4});
+
+        // Must be after StartSurfaceTestUtils.createTabStateFile() to read these files.
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        RecyclerView recyclerView = cta.findViewById(org.chromium.chrome.test.R.id.tab_list_view);
+        CriteriaHelper.pollUiThread(() -> allCardsHaveThumbnail(recyclerView));
+        // TODO(crbug.com/1065314): Tab group cards should not have favicons.
+        mRenderTestRule.render(cta.findViewById(org.chromium.chrome.test.R.id.tab_list_view),
+                "tabSwitcher_tabGroups_aspect_ratio_point85");
+
+        // Resume native initialization and make sure the GTS looks the same.
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+
+        Assert.assertEquals(5, cta.getTabModelSelector().getCurrentModel().getCount());
+        Assert.assertEquals(2,
+                cta.getTabModelSelector()
+                        .getTabModelFilterProvider()
+                        .getCurrentTabModelFilter()
+                        .getCount());
+        Assert.assertEquals(3,
+                getRelatedTabListSizeOnUiThread(cta.getTabModelSelector()
+                                                        .getTabModelFilterProvider()
+                                                        .getCurrentTabModelFilter()));
+        // TODO(crbug.com/1065314): fix thumbnail changing in post-native rendering and make sure
+        //  post-native GTS looks the same.
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    // clang-format off
+    @EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID})
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    @DisableIf.Build(message = "Flaky. See https://crbug.com/1091311",
+        sdk_is_greater_than = Build.VERSION_CODES.O)
+    public void renderTabGroups_ThemeRefactor() throws IOException {
+        // clang-format on
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(3);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(4);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(5);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(6);
+        TabAttributeCache.setRootIdForTesting(0, 0);
+        TabAttributeCache.setRootIdForTesting(1, 0);
+        TabAttributeCache.setRootIdForTesting(2, 0);
+        TabAttributeCache.setRootIdForTesting(3, 0);
+        TabAttributeCache.setRootIdForTesting(4, 0);
+        TabAttributeCache.setRootIdForTesting(5, 5);
+        TabAttributeCache.setRootIdForTesting(6, 5);
+
+        // StartSurfaceTestUtils.createTabStateFile() has to be after setRootIdForTesting() to get
+        // root IDs.
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2, 3, 4, 5, 6});
+
+        // Must be after StartSurfaceTestUtils.createTabStateFile() to read these files.
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+
+        RecyclerView recyclerView = cta.findViewById(org.chromium.chrome.test.R.id.tab_list_view);
+        CriteriaHelper.pollUiThread(() -> allCardsHaveThumbnail(recyclerView));
+        mRenderTestRule.render(cta.findViewById(org.chromium.chrome.test.R.id.tab_list_view),
+                "tabSwitcher_tabGroups_theme_enforcement");
+    }
+
+    @Test
+    @MediumTest
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    public void testSingleAsHomepage_CloseTabInCarouselTabSwitcher()
+            throws IOException, ExecutionException {
+        // clang-format on
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        TabAttributeCache.setTitleForTesting(0, "Google");
+
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+
+        // Initializes native.
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+        onView(allOf(withParent(
+                             withId(org.chromium.chrome.test.R.id.carousel_tab_switcher_container)),
+                       withId(org.chromium.chrome.test.R.id.tab_list_view)))
+                .check(matches(isDisplayed()));
+        RecyclerView tabListView = cta.findViewById(org.chromium.chrome.test.R.id.tab_list_view);
+        TestThreadUtils.runOnUiThreadBlocking(
+                ()
+                        -> tabListView.getChildAt(0)
+                                   .findViewById(org.chromium.chrome.test.R.id.action_button)
+                                   .performClick());
+
+        TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
+        assertEquals(
+                cta.findViewById(org.chromium.chrome.test.R.id.tab_switcher_title).getVisibility(),
+                View.GONE);
+    }
+
+    @Test
+    @LargeTest
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS,
+        FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH})
+    public void testScrollToSelectedTab() throws IOException {
+        // clang-format on
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, null, 5);
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+
+        StartSurfaceTestUtils.clickMoreTabs(cta);
+        onViewWaiting(withId(org.chromium.chrome.test.R.id.secondary_tasks_surface_view));
+
+        // Make sure the grid tab switcher is scrolled down to show the selected tab.
+        onView(allOf(withId(org.chromium.chrome.test.R.id.tab_list_view),
+                       withParent(withId(org.chromium.chrome.test.R.id.tasks_surface_body))))
+                .check((v, noMatchException) -> {
+                    if (noMatchException != null) throw noMatchException;
+                    Assert.assertTrue(v instanceof RecyclerView);
+                    LinearLayoutManager layoutManager =
+                            (LinearLayoutManager) ((RecyclerView) v).getLayoutManager();
+                    assertEquals(7, layoutManager.findLastVisibleItemPosition());
+                });
+
+        // On tab switcher page, shadow is handled by TabListRecyclerView itself, so toolbar shadow
+        // shouldn't show.
+        onView(withId(org.chromium.chrome.test.R.id.toolbar_shadow))
+                .check(matches(not(isDisplayed())));
+
+        // Scroll the tab list a little bit and shadow should show.
+        onView(allOf(withId(org.chromium.chrome.test.R.id.tab_list_view),
+                       withParent(withId(org.chromium.chrome.test.R.id.tasks_surface_body))))
+                .perform(swipeUp());
+        onView(allOf(withTagValue(is(SHADOW_VIEW_TAG)),
+                       isDescendantOfA(withId(org.chromium.chrome.test.R.id.tasks_surface_body))))
+                .check(matches(isDisplayed()));
+    }
+
+    @Test
+    @MediumTest
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    public void doNotRestoreEmptyTabs() throws IOException {
+        // clang-format on
+        StartSurfaceTestUtils.createTabStateFile(
+                new int[] {0, 1}, new String[] {"", "about:blank"});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
+        TabAttributeCache.setTitleForTesting(0, "");
+        TabAttributeCache.setTitleForTesting(0, "Google");
+
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        StartSurfaceTestUtils.waitForOverviewVisible(mActivityTestRule.getActivity());
+        ViewUtils.onViewWaiting(withId(org.chromium.chrome.test.R.id.tab_list_view));
+        Assert.assertEquals(
+                1, PseudoTab.getAllPseudoTabsFromStateFile(mActivityTestRule.getActivity()).size());
+    }
+
+    @Test
+    @MediumTest
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
+        INSTANT_START_TEST_BASE_PARAMS})
+    public void testSingleAsHomepage_Landscape_TabSize() {
+        // clang-format on
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+
+        // Initializes native.
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        onViewWaiting(
+                allOf(withId(org.chromium.chrome.start_surface.R.id.feed_stream_recycler_view),
+                        isDisplayed()));
+
+        // Rotate to landscape mode.
+        ActivityTestUtils.rotateActivityToOrientation(cta, ORIENTATION_LANDSCAPE);
+        CriteriaHelper.pollUiThread(() -> {
+            Criteria.checkThat(
+                    cta.getResources().getConfiguration().orientation, is(ORIENTATION_LANDSCAPE));
+        });
+
+        // Launch the first MV tile to open a tab.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 0);
+        StartSurfaceTestUtils.pressHomePageButton(cta);
+
+        // Wait for thumbnail to show.
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        onViewWaiting(allOf(withId(org.chromium.chrome.test.R.id.tab_thumbnail), isDisplayed()));
+
+        View tabThumbnail = cta.findViewById(org.chromium.chrome.test.R.id.tab_thumbnail);
+        float defaultRatio = (float) TabUiFeatureUtilities.THUMBNAIL_ASPECT_RATIO.getValue();
+        defaultRatio = MathUtils.clamp(defaultRatio, 0.5f, 2.0f);
+        assertEquals(tabThumbnail.getMeasuredHeight(),
+                (int) (tabThumbnail.getMeasuredWidth() * 1.0 / defaultRatio), 2);
+    }
+
+    @Test
+    @MediumTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void testShowTabSwitcherWhenHomepageDisabled() throws IOException {
+        // clang-format on
+        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        Assert.assertEquals(0, ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS.getValue());
+        testShowTabSwitcherWhenHomepageDisabledWithImmediateReturnImpl();
+    }
+
+    @Test
+    @MediumTest
+    @DisableFeatures(ChromeFeatureList.INSTANT_START)
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void testShowTabSwitcherWhenHomepageDisabled_NoInstant() throws IOException {
+        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        Assert.assertEquals(0, ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS.getValue());
+        testShowTabSwitcherWhenHomepageDisabledWithImmediateReturnImpl();
+    }
+
+    private void testShowTabSwitcherWhenHomepageDisabledWithImmediateReturnImpl()
+            throws IOException {
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        TabAttributeCache.setTitleForTesting(0, "Google");
+
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> HomepageManager.getInstance().setPrefHomepageEnabled(false));
+        Assert.assertFalse(HomepageManager.isHomepageEnabled());
+
+        // Launches Chrome and verifies that the Tab switcher is showing.
+        mActivityTestRule.startMainActivityFromLauncher();
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        Assert.assertTrue(cta.getLayoutManager().overviewVisible());
+        StartSurfaceCoordinator startSurfaceCoordinator =
+                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertEquals(startSurfaceCoordinator.getController().getStartSurfaceState(),
+                    StartSurfaceState.NOT_SHOWN);
+        });
+    }
+
+    private boolean allCardsHaveThumbnail(RecyclerView recyclerView) {
+        RecyclerView.Adapter adapter = recyclerView.getAdapter();
+        assert adapter != null;
+        for (int i = 0; i < adapter.getItemCount(); i++) {
+            RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(i);
+            if (viewHolder != null) {
+                ImageView thumbnail = viewHolder.itemView.findViewById(
+                        org.chromium.chrome.test.R.id.tab_thumbnail);
+                if (!(thumbnail.getDrawable() instanceof BitmapDrawable)) return false;
+                BitmapDrawable drawable = (BitmapDrawable) thumbnail.getDrawable();
+                Bitmap bitmap = drawable.getBitmap();
+                if (bitmap == null) return false;
+            }
+        }
+        return true;
+    }
+
+    private int getRelatedTabListSizeOnUiThread(TabModelFilter tabModelFilter) {
+        AtomicInteger res = new AtomicInteger();
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { res.set(tabModelFilter.getRelatedTabList(2).size()); });
+        return res.get();
+    }
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
index 11f4f06..cb3134b68 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
@@ -6,55 +6,28 @@
 
 import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
 
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.action.ViewActions.swipeUp;
-import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
 import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
 import static androidx.test.espresso.matcher.ViewMatchers.withId;
-import static androidx.test.espresso.matcher.ViewMatchers.withParent;
-import static androidx.test.espresso.matcher.ViewMatchers.withTagValue;
 import static androidx.test.espresso.matcher.ViewMatchers.withText;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.hamcrest.CoreMatchers.allOf;
 import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.Matchers.greaterThan;
-import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.INSTANT_START_TEST_BASE_PARAMS;
 import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
-import static org.chromium.ui.test.util.ViewUtils.waitForView;
 
-import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.Build;
 import android.text.TextUtils;
 import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
 
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.test.espresso.contrib.RecyclerViewActions;
-import androidx.test.espresso.matcher.BoundedMatcher;
-import androidx.test.espresso.matcher.ViewMatchers;
-import androidx.test.espresso.matcher.ViewMatchers.Visibility;
-import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 import androidx.test.filters.SmallTest;
 
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
 import org.hamcrest.core.AllOf;
 import org.junit.After;
 import org.junit.Assert;
@@ -65,22 +38,17 @@
 
 import org.chromium.base.BaseSwitches;
 import org.chromium.base.Callback;
-import org.chromium.base.CommandLine;
-import org.chromium.base.ContextUtils;
-import org.chromium.base.MathUtils;
 import org.chromium.base.NativeLibraryLoadedStatus;
 import org.chromium.base.SysUtils;
 import org.chromium.base.library_loader.LibraryLoader;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Criteria;
 import org.chromium.base.test.util.CriteriaHelper;
-import org.chromium.base.test.util.DisableIf;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.build.BuildConfig;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
-import org.chromium.chrome.browser.IntentHandler;
 import org.chromium.chrome.browser.compositor.layouts.Layout;
 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromeTablet;
@@ -92,35 +60,24 @@
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.homepage.HomepageManager;
-import org.chromium.chrome.browser.omnibox.UrlBar;
-import org.chromium.chrome.browser.preferences.Pref;
-import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.suggestions.SiteSuggestion;
 import org.chromium.chrome.browser.suggestions.mostvisited.MostVisitedSitesMetadataUtils;
 import org.chromium.chrome.browser.suggestions.tile.Tile;
-import org.chromium.chrome.browser.tabmodel.TabModelFilter;
 import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
 import org.chromium.chrome.browser.tasks.pseudotab.PseudoTab;
 import org.chromium.chrome.browser.tasks.pseudotab.TabAttributeCache;
 import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
 import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
-import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
-import org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarCoordinator;
-import org.chromium.chrome.browser.toolbar.top.TopToolbarCoordinator;
 import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.R;
 import org.chromium.chrome.test.util.ActivityTestUtils;
 import org.chromium.chrome.test.util.ChromeRenderTestRule;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.chrome.test.util.browser.suggestions.SuggestionsDependenciesRule;
 import org.chromium.chrome.test.util.browser.suggestions.mostvisited.FakeMostVisitedSites;
-import org.chromium.components.embedder_support.util.UrlConstants;
-import org.chromium.components.embedder_support.util.UrlUtilities;
-import org.chromium.components.user_prefs.UserPrefs;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.ui.test.util.UiRestriction;
 import org.chromium.ui.test.util.ViewUtils;
@@ -130,25 +87,26 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
- * Integration tests of Instant Start which requires 2-stage initialization for Clank startup.
+ * Integration tests of Instant Start which requires 2-stage initialization for Clank startup. See
+ * {@link InstantStartToolbarTest}, {@link InstantStartFeedTest}, {@link
+ * InstantStartTabSwitcherTest}, {@link InstantStartNewTabFromLauncherTest} for more tests.
  */
 @RunWith(ChromeJUnit4ClassRunner.class)
 // clang-format off
-@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+@CommandLineFlags.
+    Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
 @EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
         ChromeFeatureList.START_SURFACE_ANDROID, ChromeFeatureList.INSTANT_START})
-@Restriction(Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE)
+@Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
+    UiRestriction.RESTRICTION_TYPE_PHONE})
 public class InstantStartTest {
     // clang-format on
     private static final String IMMEDIATE_RETURN_PARAMS = "force-fieldtrial-params=Study.Group:"
             + ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS_PARAM + "/0";
-    private static final int ARTICLE_SECTION_HEADER_POSITION = 0;
-    private static final long MAX_TIMEOUT_MS = 30000L;
-    private static final String SHADOW_VIEW_TAG = "TabListViewShadow";
+    private static final String START_PARAMS =
+            "force-fieldtrial-params=Study.Group:start_surface_variation/single";
     private Bitmap mBitmap;
     private int mThumbnailFetchCount;
 
@@ -179,8 +137,9 @@
     @SmallTest
     @EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID + "<Study"})
     // clang-format off
+    @Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
+        UiRestriction.RESTRICTION_TYPE_PHONE, UiRestriction.RESTRICTION_TYPE_TABLET})
     @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
             "force-fieldtrial-params=Study.Group:allow_to_refetch/true/thumbnail_aspect_ratio/2.0"})
     public void fetchThumbnailsPreNativeTest() {
         // clang-format on
@@ -218,11 +177,9 @@
 
     @Test
     @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     // clang-format off
     @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS})
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION, IMMEDIATE_RETURN_PARAMS})
     public void layoutManagerChromePhonePreNativeTest() {
         // clang-format on
         StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
@@ -241,7 +198,6 @@
 
     @Test
     @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     // clang-format off
     @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
             ChromeFeatureList.START_SURFACE_ANDROID + "<Study",
@@ -249,8 +205,7 @@
             ChromeFeatureList.TAB_GROUPS_ANDROID,
             ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID + "<Study"})
     @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single/enable_launch_polish/true"})
+        INSTANT_START_TEST_BASE_PARAMS + "/enable_launch_polish/true"})
     public void startSurfaceSinglePanePreNativeAndWithNativeTest() {
         // clang-format on
         StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
@@ -280,93 +235,12 @@
         CriteriaHelper.pollUiThread(startSurfaceCoordinator::isSecondaryTaskInitPendingForTesting);
 
         // Initializes native.
-        startAndWaitNativeInitialization();
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
         Assert.assertFalse(startSurfaceCoordinator.isInitPendingForTesting());
         Assert.assertFalse(startSurfaceCoordinator.isSecondaryTaskInitPendingForTesting());
         Assert.assertTrue(startSurfaceCoordinator.isInitializedWithNativeForTesting());
     }
 
-    /**
-     * Tests that the IncognitoSwitchCoordinator isn't create in inflate() if the native library
-     * isn't ready. It will be lazily created after native initialization.
-     */
-    @Test
-    @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    public void startSurfaceToolbarInflatedPreAndWithNativeTest() {
-        // clang-format on
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        Assert.assertFalse(cta.isTablet());
-        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        Assert.assertEquals("single", StartSurfaceConfiguration.START_SURFACE_VARIATION.getValue());
-        Assert.assertTrue(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
-
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        Assert.assertFalse(LibraryLoader.getInstance().isInitialized());
-        TopToolbarCoordinator topToolbarCoordinator =
-                (TopToolbarCoordinator) cta.getToolbarManager().getToolbar();
-
-        onViewWaiting(allOf(withId(R.id.tab_switcher_toolbar), isDisplayed()));
-
-        StartSurfaceToolbarCoordinator startSurfaceToolbarCoordinator =
-                topToolbarCoordinator.getStartSurfaceToolbarForTesting();
-        // Verifies that the TabCountProvider for incognito toggle tab layout hasn't been set when
-        // the {@link StartSurfaceToolbarCoordinator#inflate()} is called.
-        Assert.assertNull(
-                startSurfaceToolbarCoordinator.getIncognitoToggleTabCountProviderForTesting());
-
-        // Initializes native.
-        startAndWaitNativeInitialization();
-        CriteriaHelper.pollInstrumentationThread(
-                ()
-                        -> startSurfaceToolbarCoordinator
-                                   .getIncognitoToggleTabCountProviderForTesting()
-                        != null);
-    }
-
-    /**
-     * Tests that clicking the "more_tabs" button won't make Omnibox get focused when single tab is
-     * shown on the StartSurface.
-     */
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-            "/start_surface_variation/single/show_last_active_tab_only/true"})
-    public void startSurfaceMoreTabsButtonTest() throws IOException {
-        // clang-format on
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        Assert.assertFalse(cta.isTablet());
-        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        Assert.assertEquals("single", StartSurfaceConfiguration.START_SURFACE_VARIATION.getValue());
-        Assert.assertTrue(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
-        Assert.assertTrue(StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue());
-
-        mActivityTestRule.waitForActivityNativeInitializationComplete();
-
-        StartSurfaceTestUtils.clickMoreTabs(cta);
-
-        onViewWaiting(
-                allOf(withParent(withId(R.id.tasks_surface_body)), withId(R.id.tab_list_view)));
-        Assert.assertFalse(cta.findViewById(R.id.url_bar).isFocused());
-    }
-
     @Test
     @SmallTest
     @Restriction({UiRestriction.RESTRICTION_TYPE_TABLET})
@@ -385,12 +259,9 @@
 
     @Test
     @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     @EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
     // clang-format off
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            "force-fieldtrial-params=Study.Group:start_surface_variation/single"})
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION, START_PARAMS})
     public void testShouldShowStartSurfaceAsTheHomePagePreNative() {
         // clang-format on
         StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
@@ -406,147 +277,6 @@
     @Test
     @SmallTest
     @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisabledTest(message = "Test doesn't work with FeedV2. FeedV1 is removed crbug.com/1165828.")
-    public void renderTabSwitcher() throws IOException, InterruptedException {
-        // clang-format on
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2);
-        TabAttributeCache.setTitleForTesting(0, "title");
-        TabAttributeCache.setTitleForTesting(1, "漢字");
-        TabAttributeCache.setTitleForTesting(2, "اَلْعَرَبِيَّةُ");
-
-        // Must be after StartSurfaceTestUtils.createTabStateFile() to read these files.
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        RecyclerView recyclerView = cta.findViewById(R.id.tab_list_view);
-        CriteriaHelper.pollUiThread(() -> allCardsHaveThumbnail(recyclerView));
-        mRenderTestRule.render(recyclerView, "tabSwitcher_3tabs");
-
-        // Resume native initialization and make sure the GTS looks the same.
-        startAndWaitNativeInitialization();
-
-        Assert.assertEquals(3, cta.getTabModelSelector().getCurrentModel().getCount());
-        // TODO(crbug.com/1065314): find a better way to wait for a stable rendering.
-        Thread.sleep(2000);
-        // The titles on the tab cards changes to "Google" because we use M26_GOOGLE_COM.
-        mRenderTestRule.render(recyclerView, "tabSwitcher_3tabs_postNative");
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
-            ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisableIf.Build(message = "Flaky. See https://crbug.com/1091311",
-            sdk_is_greater_than = Build.VERSION_CODES.O)
-    public void renderTabGroups() throws IOException {
-        // clang-format on
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(3);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(4);
-        TabAttributeCache.setRootIdForTesting(0, 0);
-        TabAttributeCache.setRootIdForTesting(1, 0);
-        TabAttributeCache.setRootIdForTesting(2, 0);
-        TabAttributeCache.setRootIdForTesting(3, 3);
-        TabAttributeCache.setRootIdForTesting(4, 3);
-        // StartSurfaceTestUtils.createTabStateFile() has to be after setRootIdForTesting() to get
-        // root IDs.
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2, 3, 4});
-
-        // Must be after StartSurfaceTestUtils.createTabStateFile() to read these files.
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        RecyclerView recyclerView = cta.findViewById(R.id.tab_list_view);
-        CriteriaHelper.pollUiThread(() -> allCardsHaveThumbnail(recyclerView));
-        // TODO(crbug.com/1065314): Tab group cards should not have favicons.
-        mRenderTestRule.render(
-                cta.findViewById(R.id.tab_list_view), "tabSwitcher_tabGroups_aspect_ratio_point85");
-
-        // Resume native initialization and make sure the GTS looks the same.
-        startAndWaitNativeInitialization();
-
-        Assert.assertEquals(5, cta.getTabModelSelector().getCurrentModel().getCount());
-        Assert.assertEquals(2,
-                cta.getTabModelSelector()
-                        .getTabModelFilterProvider()
-                        .getCurrentTabModelFilter()
-                        .getCount());
-        Assert.assertEquals(3,
-                getRelatedTabListSizeOnUiThread(cta.getTabModelSelector()
-                                                        .getTabModelFilterProvider()
-                                                        .getCurrentTabModelFilter()));
-        // TODO(crbug.com/1065314): fix thumbnail changing in post-native rendering and make sure
-        //  post-native GTS looks the same.
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
-            ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisableIf.Build(message = "Flaky. See https://crbug.com/1091311",
-            sdk_is_greater_than = Build.VERSION_CODES.O)
-    public void renderTabGroups_ThemeRefactor() throws IOException {
-        // clang-format on
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(2);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(3);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(4);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(5);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(6);
-        TabAttributeCache.setRootIdForTesting(0, 0);
-        TabAttributeCache.setRootIdForTesting(1, 0);
-        TabAttributeCache.setRootIdForTesting(2, 0);
-        TabAttributeCache.setRootIdForTesting(3, 0);
-        TabAttributeCache.setRootIdForTesting(4, 0);
-        TabAttributeCache.setRootIdForTesting(5, 5);
-        TabAttributeCache.setRootIdForTesting(6, 5);
-
-        // StartSurfaceTestUtils.createTabStateFile() has to be after setRootIdForTesting() to get
-        // root IDs.
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2, 3, 4, 5, 6});
-
-        // Must be after StartSurfaceTestUtils.createTabStateFile() to read these files.
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        RecyclerView recyclerView = cta.findViewById(R.id.tab_list_view);
-        CriteriaHelper.pollUiThread(() -> allCardsHaveThumbnail(recyclerView));
-        mRenderTestRule.render(
-                cta.findViewById(R.id.tab_list_view), "tabSwitcher_tabGroups_theme_enforcement");
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     // clang-format off
     @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
         ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
@@ -554,9 +284,7 @@
         // Disable feed placeholder animation because we can't render it in exactly the same way
         // for each run.
         FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH,
-        "force-fieldtrials=Study/Group",
-        IMMEDIATE_RETURN_PARAMS +
-            "/start_surface_variation/single" +
+            INSTANT_START_TEST_BASE_PARAMS +
             "/exclude_mv_tiles/true" +
             "/hide_switch_when_no_incognito_tabs/true" +
             "/show_last_active_tab_only/true"})
@@ -580,7 +308,7 @@
         mRenderTestRule.render(surface, "singlePane_singleTab_noMV4_FeedV2");
 
         // Initializes native.
-        startAndWaitNativeInitialization();
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
 
         // TODO(crbug.com/1065314): fix login button animation in post-native rendering and
         //  make sure post-native single-tab card looks the same.
@@ -588,123 +316,7 @@
 
     @Test
     @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    // clang-format off
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisabledTest(message = "https://crbug.com/1263928")
-    public void testFeedPlaceholderFromColdStart() {
-        // clang-format on
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        Assert.assertFalse(mActivityTestRule.getActivity().isTablet());
-        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        // Feed placeholder should be shown from cold start with Instant Start on.
-        onView(withId(R.id.placeholders_layout)).check(matches(isDisplayed()));
-        Assert.assertFalse(LibraryLoader.getInstance().isInitialized());
-
-        startAndWaitNativeInitialization();
-        // Feed background should be non-transparent finally.
-        ViewUtils.onViewWaiting(
-                AllOf.allOf(withId(R.id.feed_stream_recycler_view), matchesBackgroundAlpha(255)));
-
-        StartSurfaceCoordinator startSurfaceCoordinator =
-                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertFalse(((StartSurfaceMediator) startSurfaceCoordinator.getController())
-                                       .shouldShowFeedPlaceholder());
-        });
-
-        // TODO(spdonghao): Add a test for Feed placeholder from warm start. It's tested in
-        // StartSurfaceMediatorUnitTest#feedPlaceholderFromWarmStart currently because warm start is
-        // hard to simulate here.
-    }
-
-    @Test
-    @LargeTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    // clang-format off
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisabledTest(message = "https://crbug.com/1263928")
-    public void testCachedFeedVisibility() {
-        // clang-format on
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        mActivityTestRule.waitForActivityNativeInitializationComplete();
-        // FEED_ARTICLES_LIST_VISIBLE should equal to ARTICLES_LIST_VISIBLE.
-        CriteriaHelper.pollUiThread(()
-                                            -> UserPrefs.get(Profile.getLastUsedRegularProfile())
-                                                       .getBoolean(Pref.ARTICLES_LIST_VISIBLE)
-                        == StartSurfaceConfiguration.getFeedArticlesVisibility());
-
-        // Hide articles and verify that FEED_ARTICLES_LIST_VISIBLE and ARTICLES_LIST_VISIBLE are
-        // both false.
-        toggleHeader(false);
-        CriteriaHelper.pollUiThread(() -> !StartSurfaceConfiguration.getFeedArticlesVisibility());
-        TestThreadUtils.runOnUiThreadBlocking(
-                ()
-                        -> Assert.assertEquals(UserPrefs.get(Profile.getLastUsedRegularProfile())
-                                                       .getBoolean(Pref.ARTICLES_LIST_VISIBLE),
-                                StartSurfaceConfiguration.getFeedArticlesVisibility()));
-
-        // Show articles and verify that FEED_ARTICLES_LIST_VISIBLE and ARTICLES_LIST_VISIBLE are
-        // both true.
-        toggleHeader(true);
-        CriteriaHelper.pollUiThread(StartSurfaceConfiguration::getFeedArticlesVisibility);
-        TestThreadUtils.runOnUiThreadBlocking(
-                ()
-                        -> Assert.assertEquals(UserPrefs.get(Profile.getLastUsedRegularProfile())
-                                                       .getBoolean(Pref.ARTICLES_LIST_VISIBLE),
-                                StartSurfaceConfiguration.getFeedArticlesVisibility()));
-    }
-
-    @Test
-    @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    // clang-format off
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    public void testHideFeedPlaceholder() {
-        // clang-format on
-        StartSurfaceConfiguration.setFeedVisibilityForTesting(false);
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-
-        // When cached Feed articles' visibility is invisible, placeholder should be invisible too.
-        onView(withId(R.id.placeholders_layout)).check(doesNotExist());
-    }
-
-    @Test
-    @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    // clang-format off
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisabledTest(message = "https://crbug.com/1263928")
-    public void testShowFeedPlaceholder() {
-        // clang-format on
-        StartSurfaceConfiguration.setFeedVisibilityForTesting(true);
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-
-        // When cached Feed articles' visibility is visible, placeholder should be visible too.
-        onView(withId(R.id.placeholders_layout)).check(matches(isDisplayed()));
-    }
-
-    @Test
-    @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    @Features.DisableFeatures(ChromeFeatureList.START_SURFACE_ANDROID)
+    @DisableFeatures(ChromeFeatureList.START_SURFACE_ANDROID)
     public void testInstantStartWithoutStartSurface() throws IOException {
         StartSurfaceTestUtils.createTabStateFile(new int[] {123});
         mActivityTestRule.startMainActivityFromLauncher();
@@ -724,12 +336,10 @@
 
     @Test
     @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     @EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.
-    Add({ChromeSwitches.ENABLE_ACCESSIBILITY_TAB_SWITCHER, "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
     // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.ENABLE_ACCESSIBILITY_TAB_SWITCHER,
+        INSTANT_START_TEST_BASE_PARAMS})
     public void testInstantStartNotCrashWhenAccessibilityLayoutEnabled() throws IOException {
         // clang-format on
         TestThreadUtils.runOnUiThreadBlocking(
@@ -755,10 +365,10 @@
     @Test
     @SmallTest
     @CommandLineFlags.Add(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)
-    @Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
+    // clang-format off
+    @EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
             ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
     @DisabledTest(message = "Failing at least on M, O and P: https://crbug.com/1254327")
-    // clang-format off
     public void testInstantStartDisabledOnLowEndDevice() throws IOException {
         // clang-format on
         StartSurfaceTestUtils.createTabStateFile(new int[] {123});
@@ -775,12 +385,9 @@
 
     @Test
     @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     @EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
     // clang-format off
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        "force-fieldtrials=Study/Group",
-        "force-fieldtrial-params=Study.Group:start_surface_variation/single"})
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION, START_PARAMS})
     public void testNoGURLPreNative() {
         // clang-format on
         if (!BuildConfig.ENABLE_ASSERTS) return;
@@ -799,119 +406,13 @@
     }
 
     @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisabledTest(message = "https://crbug.com/1263928")
-    public void renderSingleAsHomepage_NoTab_scrollToolbarToTop() throws IOException {
-        // clang-format on
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        // Initializes native.
-        startAndWaitNativeInitialization();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
-
-        StartSurfaceTestUtils.scrollToolbar(cta);
-
-        View surface = cta.findViewById(R.id.control_container);
-        ChromeRenderTestRule.sanitize(surface);
-        mRenderTestRule.render(surface, "singlePane_floatingTopToolbar");
-
-        // Focus the omnibox.
-        UrlBar urlBar = cta.findViewById(org.chromium.chrome.R.id.url_bar);
-        TestThreadUtils.runOnUiThreadBlocking((Runnable) urlBar::requestFocus);
-        // Clear the focus.
-        TestThreadUtils.runOnUiThreadBlocking(urlBar::clearFocus);
-        // Default search engine logo should still show.
-        surface = cta.findViewById(R.id.control_container);
-        ChromeRenderTestRule.sanitize(surface);
-        mRenderTestRule.render(surface, "singlePane_floatingTopToolbar");
-    }
-
-    @Test
-    @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    @DisabledTest(message = "https://crbug.com/1263928")
-    public void testToolbarLayoutAndShadowVisibilityWithInstant() {
-        // clang-format on
-        testToolbarLayoutAndShadowVisibility();
-    }
-
-    @Test
-    @SmallTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @DisableFeatures(ChromeFeatureList.INSTANT_START)
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    public void testToolbarLayoutAndShadowVisibilityWithoutInstant() {
-        // clang-format on
-        testToolbarLayoutAndShadowVisibility();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    public void testSingleAsHomepage_CloseTabInCarouselTabSwitcher()
-            throws IOException, ExecutionException {
-        // clang-format on
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        // Initializes native.
-        startAndWaitNativeInitialization();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        onView(allOf(withParent(withId(R.id.carousel_tab_switcher_container)),
-                       withId(R.id.tab_list_view)))
-                .check(matches(isDisplayed()));
-        RecyclerView tabListView = cta.findViewById(R.id.tab_list_view);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> tabListView.getChildAt(0).findViewById(R.id.action_button).performClick());
-
-        TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
-        assertEquals(cta.findViewById(R.id.tab_switcher_title).getVisibility(), View.GONE);
-    }
-
-    @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     // clang-format off
     @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
             ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
     @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
+        INSTANT_START_TEST_BASE_PARAMS})
     public void renderSingleAsHomepage_Landscape() throws IOException {
         // clang-format on
         StartSurfaceTestUtils.setMVTiles(mSuggestionsDeps);
@@ -921,7 +422,7 @@
         StartSurfaceTestUtils.waitForOverviewVisible(cta);
 
         // Initializes native.
-        startAndWaitNativeInitialization();
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
         onViewWaiting(
                 allOf(withId(org.chromium.chrome.start_surface.R.id.feed_stream_recycler_view),
                         isDisplayed()));
@@ -937,51 +438,7 @@
 
     @Test
     @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    public void testSingleAsHomepage_Landscape_TabSize() {
-        // clang-format on
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        // Initializes native.
-        startAndWaitNativeInitialization();
-        onViewWaiting(
-                allOf(withId(org.chromium.chrome.start_surface.R.id.feed_stream_recycler_view),
-                        isDisplayed()));
-
-        // Rotate to landscape mode.
-        ActivityTestUtils.rotateActivityToOrientation(cta, ORIENTATION_LANDSCAPE);
-        CriteriaHelper.pollUiThread(() -> {
-            Criteria.checkThat(
-                    cta.getResources().getConfiguration().orientation, is(ORIENTATION_LANDSCAPE));
-        });
-
-        // Launch the first MV tile to open a tab.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 0);
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-
-        // Wait for thumbnail to show.
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        onViewWaiting(allOf(withId(R.id.tab_thumbnail), isDisplayed()));
-
-        View tabThumbnail = cta.findViewById(R.id.tab_thumbnail);
-        float defaultRatio = (float) TabUiFeatureUtilities.THUMBNAIL_ASPECT_RATIO.getValue();
-        defaultRatio = MathUtils.clamp(defaultRatio, 0.5f, 2.0f);
-        assertEquals(tabThumbnail.getMeasuredHeight(),
-                (int) (tabThumbnail.getMeasuredWidth() * 1.0 / defaultRatio), 2);
-    }
-
-    @Test
-    @MediumTest
     @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     // clang-format off
     @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
             ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.EXPLORE_SITES})
@@ -989,9 +446,7 @@
             // Disable feed placeholder animation because we can't render it in exactly the same
             // way for each run.
             FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS +
-                    "/start_surface_variation/single/exclude_mv_tiles/false"})
+            INSTANT_START_TEST_BASE_PARAMS + "/exclude_mv_tiles/false"})
     public void testMVTilesWithExploreSitesView() throws InterruptedException, IOException {
         // clang-format on
         FakeMostVisitedSites mostVisitedSites = StartSurfaceTestUtils.setMVTiles(mSuggestionsDeps);
@@ -1010,7 +465,7 @@
         mRenderTestRule.render(surface, "singlePane_MV_withExploreSitesViewV2");
 
         // Initializes native.
-        startAndWaitNativeInitialization();
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
 
         StartSurfaceTestUtils.waitForTabModel(cta);
 
@@ -1021,228 +476,11 @@
     }
 
     @Test
-    @LargeTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single",
-            FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH})
-    public void testScrollToSelectedTab() throws IOException {
-        // clang-format on
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, null, 5);
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        startAndWaitNativeInitialization();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        StartSurfaceTestUtils.clickMoreTabs(cta);
-        onViewWaiting(withId(R.id.secondary_tasks_surface_view));
-
-        // Make sure the grid tab switcher is scrolled down to show the selected tab.
-        onView(allOf(withId(R.id.tab_list_view), withParent(withId(R.id.tasks_surface_body))))
-                .check((v, noMatchException) -> {
-                    if (noMatchException != null) throw noMatchException;
-                    Assert.assertTrue(v instanceof RecyclerView);
-                    LinearLayoutManager layoutManager =
-                            (LinearLayoutManager) ((RecyclerView) v).getLayoutManager();
-                    assertEquals(7, layoutManager.findLastVisibleItemPosition());
-                });
-
-        // On tab switcher page, shadow is handled by TabListRecyclerView itself, so toolbar shadow
-        // shouldn't show.
-        onView(withId(R.id.toolbar_shadow)).check(matches(not(isDisplayed())));
-
-        // Scroll the tab list a little bit and shadow should show.
-        onView(allOf(withId(R.id.tab_list_view), withParent(withId(R.id.tasks_surface_body))))
-                .perform(swipeUp());
-        onView(allOf(withTagValue(is(SHADOW_VIEW_TAG)),
-                       isDescendantOfA(withId(R.id.tasks_surface_body))))
-                .check(matches(isDisplayed()));
-    }
-
-    @Test
     @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-            ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-            "force-fieldtrials=Study/Group",
-            IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single"})
-    public void doNotRestoreEmptyTabs() throws IOException {
-        // clang-format on
-        StartSurfaceTestUtils.createTabStateFile(
-                new int[] {0, 1}, new String[] {"", "about:blank"});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
-        TabAttributeCache.setTitleForTesting(0, "");
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        StartSurfaceTestUtils.waitForOverviewVisible(mActivityTestRule.getActivity());
-        ViewUtils.onViewWaiting(withId(R.id.tab_list_view));
-        Assert.assertEquals(
-                1, PseudoTab.getAllPseudoTabsFromStateFile(mActivityTestRule.getActivity()).size());
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     // clang-format off
     @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
         ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single/omnibox_focused_on_new_tab/true"})
-    @DisabledTest(message = "https://crbug.com/1192559")
-    public void testNewTabFromLauncher() throws IOException {
-        // clang-format on
-        testNewTabFromLauncherImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @DisableFeatures(ChromeFeatureList.INSTANT_START)
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single/omnibox_focused_on_new_tab/true"})
-    public void testNewTabFromLauncherWithInstantStartDisabled() throws IOException {
-        // clang-format on
-        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        testNewTabFromLauncherImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single"})
-    public void testNewTabFromLauncherWithHomepageDisabled_NoFinale() throws IOException {
-        // clang-format on
-        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        testNewTabFromLauncherWithHomepageDisabledImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @DisableFeatures(ChromeFeatureList.INSTANT_START)
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single"})
-    public void testNewTabFromLauncherWithHomepageDisabled_NoFinale_NoInstant() throws IOException {
-        // clang-format on
-        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        testNewTabFromLauncherWithHomepageDisabledImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single/omnibox_focused_on_new_tab/true"})
-    public void testNewTabFromLauncherWithHomepageDisabled_Finale() throws IOException {
-        // clang-format on
-        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        testNewTabFromLauncherWithHomepageDisabledImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @DisableFeatures(ChromeFeatureList.INSTANT_START)
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single/omnibox_focused_on_new_tab/true"})
-    public void testNewTabFromLauncherWithHomepageDisabled_Finale_NoInstant() throws IOException {
-        // clang-format on
-        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        testNewTabFromLauncherWithHomepageDisabledImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single"})
-    public void testNewIncognitoTabFromLauncher() throws IOException {
-        // clang-format on
-        testNewIncognitoTabFromLauncherImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @DisableFeatures(ChromeFeatureList.INSTANT_START)
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single"})
-    public void testNewIncognitoTabFromLauncher_NoInstant() throws IOException {
-        // clang-format on
-        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        testNewIncognitoTabFromLauncherImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single"})
-    public void testShowTabSwitcherWhenHomepageDisabled() throws IOException {
-        // clang-format on
-        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        Assert.assertEquals(0, ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS.getValue());
-        testShowTabSwitcherWhenHomepageDisabledWithImmediateReturnImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @DisableFeatures(ChromeFeatureList.INSTANT_START)
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", IMMEDIATE_RETURN_PARAMS +
-        "/start_surface_variation/single"})
-    public void testShowTabSwitcherWhenHomepageDisabled_NoInstant() throws IOException {
-        // clang-format on
-        Assert.assertFalse(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
-        Assert.assertEquals(0, ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS.getValue());
-        testShowTabSwitcherWhenHomepageDisabledWithImmediateReturnImpl();
-    }
-
-    @Test
-    @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", "force-fieldtrial-params=Study.Group:" +
-        "start_surface_variation/single"})
+    @CommandLineFlags.Add({START_PARAMS})
     public void testShowLastTabWhenHomepageDisabledNoImmediateReturn() throws IOException {
         // clang-format on
         Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
@@ -1252,13 +490,11 @@
 
     @Test
     @MediumTest
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
     // clang-format off
     @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
         ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
     @DisableFeatures(ChromeFeatureList.INSTANT_START)
-    @CommandLineFlags.Add({"force-fieldtrials=Study/Group", "force-fieldtrial-params=Study.Group:" +
-        "start_surface_variation/single"})
+    @CommandLineFlags.Add({START_PARAMS})
     public void testShowLastTabWhenHomepageDisabledNoImmediateReturn_NoInstant()
           throws IOException {
         // clang-format on
@@ -1267,143 +503,6 @@
         testShowLastTabWhenHomepageDisabledNoImmediateReturnImpl();
     }
 
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        "force-fieldtrials=Study/Group",
-        IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single",
-        ChromeSwitches.FORCE_UPDATE_MENU_UPDATE_TYPE + "=update_available"})
-    public void testMenuUpdateBadgeWithUpdateAvailable() throws IOException {
-        // clang-format on
-        testMenuUpdateBadge(/*shouldShowUpdateBadgeOnStartAndTabs=*/true);
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        "force-fieldtrials=Study/Group",
-        IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single",
-        ChromeSwitches.FORCE_UPDATE_MENU_UPDATE_TYPE + "=unsupported_os_version"})
-    public void testMenuUpdateBadgeWithUnsupportedOsVersion() throws IOException {
-        // clang-format on
-        testMenuUpdateBadge(/*shouldShowUpdateBadgeOnStartAndTabs=*/true);
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
-    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        "force-fieldtrials=Study/Group",
-        IMMEDIATE_RETURN_PARAMS + "/start_surface_variation/single",
-        ChromeSwitches.FORCE_UPDATE_MENU_UPDATE_TYPE + "=none"})
-    public void testMenuUpdateBadgeWithoutUpdate() throws IOException {
-        // clang-format on
-        testMenuUpdateBadge(/*shouldShowUpdateBadgeOnStartAndTabs=*/false);
-    }
-
-    private void testNewTabFromLauncherImpl() throws IOException {
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        startNewTabFromLauncherIcon(false);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-
-        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
-        TextView urlBar = cta.findViewById(org.chromium.chrome.start_surface.R.id.url_bar);
-        CriteriaHelper.pollUiThread(
-                ()
-                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
-                        && urlBar.isFocused(),
-                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        waitForView(withId(org.chromium.chrome.start_surface.R.id.voice_search_button));
-        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
-        assertEquals(cta.findViewById(org.chromium.chrome.start_surface.R.id.toolbar_buttons)
-                             .getVisibility(),
-                View.INVISIBLE);
-        ToolbarDataProvider toolbarDataProvider =
-                cta.getToolbarManager().getLocationBarModelForTesting();
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
-        });
-    }
-
-    private void testNewIncognitoTabFromLauncherImpl() throws IOException {
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        startNewTabFromLauncherIcon(true);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 1);
-
-        Assert.assertFalse(cta.getLayoutManager().overviewVisible());
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> { Assert.assertTrue(UrlUtilities.isNTPUrl(cta.getActivityTab().getUrl())); });
-    }
-
-    private void testNewTabFromLauncherWithHomepageDisabledImpl() throws IOException {
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> HomepageManager.getInstance().setPrefHomepageEnabled(false));
-        Assert.assertFalse(HomepageManager.isHomepageEnabled());
-
-        // Launches new Tab from the launcher icon and verifies that a NTP is created and showing.
-        startNewTabFromLauncherIcon(false);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-
-        Assert.assertFalse(cta.getLayoutManager().overviewVisible());
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> { Assert.assertTrue(UrlUtilities.isNTPUrl(cta.getActivityTab().getUrl())); });
-    }
-
-    private void testShowTabSwitcherWhenHomepageDisabledWithImmediateReturnImpl()
-            throws IOException {
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> HomepageManager.getInstance().setPrefHomepageEnabled(false));
-        Assert.assertFalse(HomepageManager.isHomepageEnabled());
-
-        // Launches Chrome and verifies that the Tab switcher is showing.
-        mActivityTestRule.startMainActivityFromLauncher();
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        Assert.assertTrue(cta.getLayoutManager().overviewVisible());
-        StartSurfaceCoordinator startSurfaceCoordinator =
-                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertEquals(startSurfaceCoordinator.getController().getStartSurfaceState(),
-                    StartSurfaceState.NOT_SHOWN);
-        });
-    }
-
     private void testShowLastTabWhenHomepageDisabledNoImmediateReturnImpl() throws IOException {
         StartSurfaceTestUtils.createTabStateFile(new int[] {0});
         StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
@@ -1428,166 +527,6 @@
         });
     }
 
-    private void testMenuUpdateBadge(boolean shouldShowUpdateBadgeOnStartAndTabs)
-            throws IOException {
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2});
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        startAndWaitNativeInitialization();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-
-        // Check whether the update badge shows on start surface toolbar.
-        if (shouldShowUpdateBadgeOnStartAndTabs) {
-            onViewWaiting(allOf(withId(R.id.menu_badge),
-                                  isDescendantOfA(withId(R.id.tab_switcher_toolbar))))
-                    .check(matches(isDisplayed()));
-        } else {
-            onView(allOf(withId(R.id.menu_badge),
-                           isDescendantOfA(withId(R.id.tab_switcher_toolbar))))
-                    .check(matches(withEffectiveVisibility(Visibility.INVISIBLE)));
-        }
-
-        // Navigate to any tab to check whether the update badge shows on toolbar layout.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 3);
-        if (shouldShowUpdateBadgeOnStartAndTabs) {
-            onViewWaiting(allOf(withId(R.id.menu_badge), isDescendantOfA(withId(R.id.toolbar))))
-                    .check(matches(isDisplayed()));
-        } else {
-            onView(allOf(withId(R.id.menu_badge), isDescendantOfA(withId(R.id.toolbar))))
-                    .check(matches(withEffectiveVisibility(Visibility.INVISIBLE)));
-        }
-
-        // Update badge shouldn't show on tab switcher surface toolbar.
-        TabUiTestHelper.enterTabSwitcher(cta);
-        waitForView(withId(R.id.secondary_tasks_surface_view));
-        onViewWaiting(
-                allOf(withId(R.id.menu_button), isDescendantOfA(withId(R.id.tab_switcher_toolbar))))
-                .check(matches(isDisplayed()));
-        if (shouldShowUpdateBadgeOnStartAndTabs) {
-            // If the update badge should show on homepage and tabs, it's suppressed in
-            // StartSurfaceToolbarMediator#onStartSurfaceStateChanged when tab switcher surface is
-            // shown. So its visibility should be Gone instead of Invisible (as initialized).
-            onView(allOf(withId(R.id.menu_badge),
-                           isDescendantOfA(withId(R.id.tab_switcher_toolbar))))
-                    .check(matches(withEffectiveVisibility(Visibility.GONE)));
-        } else {
-            onView(allOf(withId(R.id.menu_badge),
-                           isDescendantOfA(withId(R.id.tab_switcher_toolbar))))
-                    .check(matches(withEffectiveVisibility(Visibility.INVISIBLE)));
-        }
-    }
-
-    private void testToolbarLayoutAndShadowVisibility() {
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-
-        onView(withId(R.id.toolbar))
-                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
-        onView(withId(R.id.toolbar_shadow))
-                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.INVISIBLE)));
-
-        startAndWaitNativeInitialization();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        onView(withId(R.id.toolbar))
-                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
-        onView(withId(R.id.toolbar_shadow))
-                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.INVISIBLE)));
-
-        StartSurfaceTestUtils.scrollToolbar(cta);
-        onView(withId(R.id.toolbar_shadow))
-                .check(matches(withEffectiveVisibility(Visibility.VISIBLE)));
-    }
-
-    private void startNewTabFromLauncherIcon(boolean incognito) {
-        Intent intent = IntentHandler.createTrustedOpenNewTabIntent(
-                ContextUtils.getApplicationContext(), incognito);
-        intent.putExtra(IntentHandler.EXTRA_INVOKED_FROM_SHORTCUT, true);
-        mActivityTestRule.prepareUrlIntent(intent, null);
-        mActivityTestRule.launchActivity(intent);
-    }
-
-    private void startAndWaitNativeInitialization() {
-        Assert.assertTrue(NativeLibraryLoadedStatus.getProviderForTesting() == null ||
-            !NativeLibraryLoadedStatus.getProviderForTesting().areMainDexNativeMethodsReady());
-
-        CommandLine.getInstance().removeSwitch(ChromeSwitches.DISABLE_NATIVE_INITIALIZATION);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> mActivityTestRule.getActivity().startDelayedNativeInitializationForTests());
-        CriteriaHelper.pollUiThread(
-                mActivityTestRule.getActivity().getTabModelSelector()::isTabStateInitialized,
-                10000L, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        Assert.assertTrue(LibraryLoader.getInstance().isInitialized());
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-    }
-
-    private boolean allCardsHaveThumbnail(RecyclerView recyclerView) {
-        RecyclerView.Adapter adapter = recyclerView.getAdapter();
-        assert adapter != null;
-        for (int i = 0; i < adapter.getItemCount(); i++) {
-            RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(i);
-            if (viewHolder != null) {
-                ImageView thumbnail = viewHolder.itemView.findViewById(R.id.tab_thumbnail);
-                if (!(thumbnail.getDrawable() instanceof BitmapDrawable)) return false;
-                BitmapDrawable drawable = (BitmapDrawable) thumbnail.getDrawable();
-                Bitmap bitmap = drawable.getBitmap();
-                if (bitmap == null) return false;
-            }
-        }
-        return true;
-    }
-
-    private int getRelatedTabListSizeOnUiThread(TabModelFilter tabModelFilter) {
-        AtomicInteger res = new AtomicInteger();
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> { res.set(tabModelFilter.getRelatedTabList(2).size()); });
-        return res.get();
-    }
-
-    /**
-     * Toggles the header and checks whether the header has the right status.
-     *
-     * @param expanded Whether the header should be expanded.
-     */
-    private void toggleHeader(boolean expanded) {
-        onView(allOf(instanceOf(RecyclerView.class), withId(R.id.feed_stream_recycler_view)))
-                .perform(RecyclerViewActions.scrollToPosition(ARTICLE_SECTION_HEADER_POSITION));
-        onView(withId(R.id.header_menu)).perform(click());
-
-        onView(withText(expanded ? R.string.ntp_turn_on_feed : R.string.ntp_turn_off_feed))
-                .perform(click());
-
-        onView(withText(expanded ? R.string.ntp_discover_on : R.string.ntp_discover_off))
-                .check(matches(isDisplayed()));
-    }
-
-    private static Matcher<View> matchesBackgroundAlpha(final int expectedAlpha) {
-        return new BoundedMatcher<View, View>(View.class) {
-            String mMessage;
-            int mActualAlpha;
-
-            @Override
-            protected boolean matchesSafely(View item) {
-                if (item.getBackground() == null) {
-                    mMessage = item.getId() + " does not have a background";
-                    return false;
-                }
-                mActualAlpha = item.getBackground().getAlpha();
-                return mActualAlpha == expectedAlpha;
-            }
-            @Override
-            public void describeTo(final Description description) {
-                if (expectedAlpha != mActualAlpha) {
-                    mMessage = "Background alpha did not match: Expected " + expectedAlpha + " was "
-                            + mActualAlpha;
-                }
-                description.appendText(mMessage);
-            }
-        };
-    }
-
     private static List<Tile> createFakeSiteSuggestionTiles(List<SiteSuggestion> siteSuggestions) {
         List<Tile> suggestionTiles = new ArrayList<>();
         for (int i = 0; i < siteSuggestions.size(); i++) {
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartToolbarTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartToolbarTest.java
new file mode 100644
index 0000000..5d90033
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartToolbarTest.java
@@ -0,0 +1,283 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+
+import static org.hamcrest.CoreMatchers.allOf;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.INSTANT_START_TEST_BASE_PARAMS;
+import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
+import static org.chromium.ui.test.util.ViewUtils.waitForView;
+
+import android.view.View;
+
+import androidx.test.espresso.matcher.ViewMatchers;
+import androidx.test.espresso.matcher.ViewMatchers.Visibility;
+import androidx.test.filters.SmallTest;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.library_loader.LibraryLoader;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.DisabledTest;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.omnibox.UrlBar;
+import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
+import org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarCoordinator;
+import org.chromium.chrome.browser.toolbar.top.TopToolbarCoordinator;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.ActivityTestUtils;
+import org.chromium.chrome.test.util.ChromeRenderTestRule;
+import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.UiRestriction;
+
+import java.io.IOException;
+
+/**
+ * Integration tests of toolbar with Instant Start which requires 2-stage initialization for Clank
+ * startup.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+// clang-format off
+@CommandLineFlags.
+    Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION, ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
+    "force-fieldtrials=Study/Group"})
+@EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+    ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
+    ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.INSTANT_START})
+@Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
+    UiRestriction.RESTRICTION_TYPE_PHONE})
+public class InstantStartToolbarTest {
+    // clang-format on
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    @Rule
+    public ChromeRenderTestRule mRenderTestRule =
+            ChromeRenderTestRule.Builder.withPublicCorpus().setRevision(1).build();
+
+    @After
+    public void tearDown() {
+        if (mActivityTestRule.getActivity() != null) {
+            ActivityTestUtils.clearActivityOrientation(mActivityTestRule.getActivity());
+        }
+    }
+
+    /**
+     * Tests that the IncognitoSwitchCoordinator isn't create in inflate() if the native library
+     * isn't ready. It will be lazily created after native initialization.
+     */
+    @Test
+    @SmallTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void startSurfaceToolbarInflatedPreAndWithNativeTest() {
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        Assert.assertFalse(cta.isTablet());
+        Assert.assertTrue(CachedFeatureFlags.isEnabled(ChromeFeatureList.INSTANT_START));
+        Assert.assertEquals("single", StartSurfaceConfiguration.START_SURFACE_VARIATION.getValue());
+        Assert.assertTrue(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
+
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+
+        Assert.assertFalse(LibraryLoader.getInstance().isInitialized());
+        TopToolbarCoordinator topToolbarCoordinator =
+                (TopToolbarCoordinator) cta.getToolbarManager().getToolbar();
+
+        onViewWaiting(
+                allOf(withId(org.chromium.chrome.test.R.id.tab_switcher_toolbar), isDisplayed()));
+
+        StartSurfaceToolbarCoordinator startSurfaceToolbarCoordinator =
+                topToolbarCoordinator.getStartSurfaceToolbarForTesting();
+        // Verifies that the TabCountProvider for incognito toggle tab layout hasn't been set when
+        // the {@link StartSurfaceToolbarCoordinator#inflate()} is called.
+        Assert.assertNull(
+                startSurfaceToolbarCoordinator.getIncognitoToggleTabCountProviderForTesting());
+
+        // Initializes native.
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        CriteriaHelper.pollInstrumentationThread(
+                ()
+                        -> startSurfaceToolbarCoordinator
+                                   .getIncognitoToggleTabCountProviderForTesting()
+                        != null);
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    @DisabledTest(message = "https://crbug.com/1263928")
+    public void renderSingleAsHomepage_NoTab_scrollToolbarToTop() throws IOException {
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+
+        // Initializes native.
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
+
+        StartSurfaceTestUtils.scrollToolbar(cta);
+
+        View surface = cta.findViewById(org.chromium.chrome.test.R.id.control_container);
+        ChromeRenderTestRule.sanitize(surface);
+        mRenderTestRule.render(surface, "singlePane_floatingTopToolbar");
+
+        // Focus the omnibox.
+        UrlBar urlBar = cta.findViewById(org.chromium.chrome.R.id.url_bar);
+        TestThreadUtils.runOnUiThreadBlocking((Runnable) urlBar::requestFocus);
+        // Clear the focus.
+        TestThreadUtils.runOnUiThreadBlocking(urlBar::clearFocus);
+        // Default search engine logo should still show.
+        surface = cta.findViewById(org.chromium.chrome.test.R.id.control_container);
+        ChromeRenderTestRule.sanitize(surface);
+        mRenderTestRule.render(surface, "singlePane_floatingTopToolbar");
+    }
+
+    @Test
+    @SmallTest
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    @DisabledTest(message = "https://crbug.com/1263928")
+    public void testToolbarLayoutAndShadowVisibilityWithInstant() {
+        testToolbarLayoutAndShadowVisibility();
+    }
+
+    @Test
+    @SmallTest
+    @DisableFeatures(ChromeFeatureList.INSTANT_START)
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS})
+    public void testToolbarLayoutAndShadowVisibilityWithoutInstant() {
+        testToolbarLayoutAndShadowVisibility();
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS,
+            ChromeSwitches.FORCE_UPDATE_MENU_UPDATE_TYPE + "=update_available"})
+    public void
+    testMenuUpdateBadgeWithUpdateAvailable() throws IOException {
+        testMenuUpdateBadge(/*shouldShowUpdateBadgeOnStartAndTabs=*/true);
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    @CommandLineFlags.Add({INSTANT_START_TEST_BASE_PARAMS,
+            ChromeSwitches.FORCE_UPDATE_MENU_UPDATE_TYPE + "=unsupported_os_version"})
+    public void
+    testMenuUpdateBadgeWithUnsupportedOsVersion() throws IOException {
+        testMenuUpdateBadge(/*shouldShowUpdateBadgeOnStartAndTabs=*/true);
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    @CommandLineFlags.
+    Add({INSTANT_START_TEST_BASE_PARAMS, ChromeSwitches.FORCE_UPDATE_MENU_UPDATE_TYPE + "=none"})
+    public void testMenuUpdateBadgeWithoutUpdate() throws IOException {
+        testMenuUpdateBadge(/*shouldShowUpdateBadgeOnStartAndTabs=*/false);
+    }
+
+    private void testToolbarLayoutAndShadowVisibility() {
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+
+        onView(withId(org.chromium.chrome.test.R.id.toolbar))
+                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
+        onView(withId(org.chromium.chrome.test.R.id.toolbar_shadow))
+                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.INVISIBLE)));
+
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+
+        onView(withId(org.chromium.chrome.test.R.id.toolbar))
+                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
+        onView(withId(org.chromium.chrome.test.R.id.toolbar_shadow))
+                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.INVISIBLE)));
+
+        StartSurfaceTestUtils.scrollToolbar(cta);
+        onView(withId(org.chromium.chrome.test.R.id.toolbar_shadow))
+                .check(matches(withEffectiveVisibility(Visibility.VISIBLE)));
+    }
+
+    private void testMenuUpdateBadge(boolean shouldShowUpdateBadgeOnStartAndTabs)
+            throws IOException {
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1, 2});
+        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+
+        // Check whether the update badge shows on start surface toolbar.
+        if (shouldShowUpdateBadgeOnStartAndTabs) {
+            onViewWaiting(allOf(withId(org.chromium.chrome.test.R.id.menu_badge),
+                                  isDescendantOfA(withId(
+                                          org.chromium.chrome.test.R.id.tab_switcher_toolbar))))
+                    .check(matches(isDisplayed()));
+        } else {
+            onView(allOf(withId(org.chromium.chrome.test.R.id.menu_badge),
+                           isDescendantOfA(
+                                   withId(org.chromium.chrome.test.R.id.tab_switcher_toolbar))))
+                    .check(matches(withEffectiveVisibility(Visibility.INVISIBLE)));
+        }
+
+        // Navigate to any tab to check whether the update badge shows on toolbar layout.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 3);
+        if (shouldShowUpdateBadgeOnStartAndTabs) {
+            onViewWaiting(allOf(withId(org.chromium.chrome.test.R.id.menu_badge),
+                                  isDescendantOfA(withId(org.chromium.chrome.test.R.id.toolbar))))
+                    .check(matches(isDisplayed()));
+        } else {
+            onView(allOf(withId(org.chromium.chrome.test.R.id.menu_badge),
+                           isDescendantOfA(withId(org.chromium.chrome.test.R.id.toolbar))))
+                    .check(matches(withEffectiveVisibility(Visibility.INVISIBLE)));
+        }
+
+        // Update badge shouldn't show on tab switcher surface toolbar.
+        TabUiTestHelper.enterTabSwitcher(cta);
+        waitForView(withId(org.chromium.chrome.test.R.id.secondary_tasks_surface_view));
+        onViewWaiting(allOf(withId(org.chromium.chrome.test.R.id.menu_button),
+                              isDescendantOfA(
+                                      withId(org.chromium.chrome.test.R.id.tab_switcher_toolbar))))
+                .check(matches(isDisplayed()));
+        if (shouldShowUpdateBadgeOnStartAndTabs) {
+            // If the update badge should show on homepage and tabs, it's suppressed in
+            // StartSurfaceToolbarMediator#onStartSurfaceStateChanged when tab switcher surface is
+            // shown. So its visibility should be Gone instead of Invisible (as initialized).
+            onView(allOf(withId(org.chromium.chrome.test.R.id.menu_badge),
+                           isDescendantOfA(
+                                   withId(org.chromium.chrome.test.R.id.tab_switcher_toolbar))))
+                    .check(matches(withEffectiveVisibility(Visibility.GONE)));
+        } else {
+            onView(allOf(withId(org.chromium.chrome.test.R.id.menu_badge),
+                           isDescendantOfA(
+                                   withId(org.chromium.chrome.test.R.id.tab_switcher_toolbar))))
+                    .check(matches(withEffectiveVisibility(Visibility.INVISIBLE)));
+        }
+    }
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
new file mode 100644
index 0000000..85fdfbb
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
@@ -0,0 +1,573 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.action.ViewActions.pressKey;
+import static androidx.test.espresso.action.ViewActions.replaceText;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withParent;
+
+import static org.hamcrest.CoreMatchers.allOf;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.START_SURFACE_TEST_BASE_PARAMS;
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.sClassParamsForStartSurfaceTest;
+import static org.chromium.ui.test.util.ViewUtils.VIEW_GONE;
+import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
+import static org.chromium.ui.test.util.ViewUtils.waitForView;
+
+import android.os.Build;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
+import android.support.test.runner.lifecycle.Stage;
+import android.view.KeyEvent;
+import android.view.View;
+
+import androidx.test.espresso.contrib.RecyclerViewActions;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
+import org.hamcrest.Matchers;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.test.params.ParameterAnnotations;
+import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
+import org.chromium.base.test.params.ParameterSet;
+import org.chromium.base.test.params.ParameterizedRunner;
+import org.chromium.base.test.util.CallbackHelper;
+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.Feature;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.layouts.LayoutStateProvider;
+import org.chromium.chrome.browser.layouts.LayoutType;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tab.TabLaunchType;
+import org.chromium.chrome.browser.tabmodel.TabModel;
+import org.chromium.chrome.browser.tasks.tab_management.TabSelectionEditorTestingRobot;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
+import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.ChromeApplicationTestUtils;
+import org.chromium.chrome.test.util.MenuUtils;
+import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.UiRestriction;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+/**
+ * Integration tests of the back action when {@link StartSurface} is enabled.
+ */
+@RunWith(ParameterizedRunner.class)
+@UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
+@Restriction(
+        {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
+@CommandLineFlags.
+Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+public class StartSurfaceBackButtonTest {
+    @ParameterAnnotations.ClassParameter
+    private static List<ParameterSet> sClassParams = sClassParamsForStartSurfaceTest;
+
+    private static final long MAX_TIMEOUT_MS = 40000L;
+
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    /**
+     * Whether feature {@link ChromeFeatureList#INSTANT_START} is enabled.
+     */
+    private final boolean mUseInstantStart;
+
+    /**
+     * Whether feature {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} is enabled as "immediately".
+     * When immediate return is enabled, the Start surface is showing when Chrome is launched.
+     */
+    private final boolean mImmediateReturn;
+
+    private CallbackHelper mLayoutChangedCallbackHelper;
+    private LayoutStateProvider.LayoutStateObserver mLayoutObserver;
+    @LayoutType
+    private int mCurrentlyActiveLayout;
+    public StartSurfaceBackButtonTest(boolean useInstantStart, boolean immediateReturn) {
+        CachedFeatureFlags.setForTesting(ChromeFeatureList.INSTANT_START, useInstantStart);
+
+        mUseInstantStart = useInstantStart;
+        mImmediateReturn = immediateReturn;
+    }
+
+    @Before
+    public void setUp() throws IOException {
+        StartSurfaceTestUtils.setUpStartSurfaceTests(mImmediateReturn, mActivityTestRule);
+
+        mLayoutChangedCallbackHelper = new CallbackHelper();
+
+        if (isInstantReturn()) {
+            // Assume start surface is shown immediately, and the LayoutStateObserver may miss the
+            // first onFinishedShowing event.
+            mCurrentlyActiveLayout = LayoutType.TAB_SWITCHER;
+        }
+
+        mLayoutObserver = new LayoutStateProvider.LayoutStateObserver() {
+            @Override
+            public void onFinishedShowing(@LayoutType int layoutType) {
+                mCurrentlyActiveLayout = layoutType;
+                mLayoutChangedCallbackHelper.notifyCalled();
+            }
+        };
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mActivityTestRule.getActivity().getLayoutManagerSupplier().addObserver((manager) -> {
+                if (manager.getActiveLayout() != null) {
+                    mCurrentlyActiveLayout = manager.getActiveLayout().getLayoutType();
+                    mLayoutChangedCallbackHelper.notifyCalled();
+                }
+                manager.addObserver(mLayoutObserver);
+            });
+        });
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testShow_SingleAsHomepage_BackButton() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+
+        // Case 1:
+        // Launches the first site in mv tiles, and press back button.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+
+        CriteriaHelper.pollUiThread(() -> cta.getLayoutManager().overviewVisible());
+        // Verifies the new Tab is deleted.
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        // Case 2:
+        // Launches the first site in mv tiles, and press home button to return to the Start
+        // surface.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        StartSurfaceTestUtils.pressHomePageButton(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view));
+        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view), isDisplayed()));
+
+        // Launches the new tab from the carousel tab switcher, and press back button.
+        StartSurfaceTestUtils.clickTabInCarousel(/* position = */ 1);
+        Assert.assertEquals(TabLaunchType.FROM_START_SURFACE,
+                cta.getTabModelSelector().getCurrentTab().getLaunchType());
+        CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view));
+        // Verifies the tab isn't auto deleted from the TabModel.
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    @DisableIf.
+        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
+    public void testShow_SingleAsHomepage_BackButtonWithTabSwitcher() {
+        // clang-format on
+        singleAsHomepage_BackButtonWithTabSwitcher();
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/show_last_active_tab_only/true"})
+    @DisableIf.
+        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
+    public void testShow_SingleAsHomepageV2_BackButtonWithTabSwitcher() {
+        // clang-format on
+        singleAsHomepage_BackButtonWithTabSwitcher();
+    }
+
+    private void singleAsHomepage_BackButtonWithTabSwitcher() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        onViewWaiting(
+                allOf(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_container), isDisplayed()));
+
+        // Launches the first site in mv tiles.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+
+        if (isInstantReturn()
+                && (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
+                        && Build.VERSION.SDK_INT < Build.VERSION_CODES.O)) {
+            // Fix the issue that failed to perform a single click on the tab switcher button.
+            // See code below.
+            return;
+        }
+
+        // Enters the tab switcher, and choose the new tab. After the tab is opening, press back.
+        waitForView(withId(org.chromium.chrome.tab_ui.R.id.tab_switcher_button));
+        TabUiTestHelper.enterTabSwitcher(cta);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view));
+        waitForView(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view));
+        onView(allOf(withParent(withId(org.chromium.chrome.tab_ui.R.id.tasks_surface_body)),
+                       withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)))
+                .perform(RecyclerViewActions.actionOnItemAtPosition(1, click()));
+        CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
+        Assert.assertEquals(TabLaunchType.FROM_START_SURFACE,
+                cta.getTabModelSelector().getCurrentTab().getLaunchType());
+        TestThreadUtils.runOnUiThreadBlocking(
+                ()
+                        -> Assert.assertTrue(StartSurfaceUserData.getKeepTab(
+                                cta.getTabModelSelector().getCurrentTab())));
+
+        OverviewModeBehaviorWatcher overviewModeWatcher =
+                new OverviewModeBehaviorWatcher(cta.getLayoutManager(), true, false);
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        // Verifies the new Tab isn't deleted, and Start surface is shown.
+        overviewModeWatcher.waitForBehavior();
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+
+        // Verifies Chrome is closed.
+        try {
+            StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        } catch (Exception e) {
+        } finally {
+            CriteriaHelper.pollUiThread(
+                    ()
+                            -> {
+                        return ActivityLifecycleMonitorRegistry.getInstance().getLifecycleStageOf(
+                                       cta)
+                                == Stage.STOPPED;
+                    },
+                    "Tapping back button should close Chrome.", MAX_TIMEOUT_MS,
+                    CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        }
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    @DisableIf.
+        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
+    public void testShow_SingleAsHomepage_BackButtonOnCarouselTabSwitcher() {
+        // clang-format on
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.search_box_text))
+                .perform(replaceText("about:blank"));
+        onView(withId(org.chromium.chrome.start_surface.R.id.url_bar))
+                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
+        hideWatcher.waitForBehavior();
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+
+        TabUiTestHelper.mergeAllNormalTabsToAGroup(cta);
+        StartSurfaceTestUtils.pressHomePageButton(cta);
+        CriteriaHelper.pollUiThread(() -> cta.getLayoutManager().overviewVisible());
+
+        StartSurfaceTestUtils.clickFirstTabInCarousel();
+        onViewWaiting(allOf(
+                withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view), isDisplayed()));
+
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        waitForView(withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view), VIEW_GONE);
+        onView(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view))
+                .check(matches(isDisplayed()));
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testShow_SingleAsHomepage_BackButtonOnTabSwitcherWithDialogShowing() {
+        backButtonOnTabSwitcherWithDialogShowingImpl();
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/show_last_active_tab_only/true"})
+    public void testShow_SingleAsHomepageV2_BackButtonOnTabSwitcherWithDialogShowing() {
+        backButtonOnTabSwitcherWithDialogShowingImpl();
+    }
+
+    private void backButtonOnTabSwitcherWithDialogShowingImpl() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.logo));
+
+        // Launches the first site in mv tiles.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+
+        List<Tab> tabs = getTabsInCurrentTabModel(cta.getCurrentTabModel());
+        TabSelectionEditorTestingRobot robot = new TabSelectionEditorTestingRobot();
+
+        if (isInstantReturn()) {
+            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
+            // omnibox.
+            return;
+        }
+        onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.tab_switcher_button));
+        TabUiTestHelper.enterTabSwitcher(cta);
+
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view));
+        StartSurfaceCoordinator startSurfaceCoordinator =
+                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> startSurfaceCoordinator.showTabSelectionEditorForTesting(tabs));
+        robot.resultRobot.verifyTabSelectionEditorIsVisible()
+                .verifyToolbarActionButtonDisabled()
+                .verifyToolbarActionButtonWithResourceId(
+                        org.chromium.chrome.tab_ui.R.string.tab_selection_editor_group)
+                .verifyToolbarSelectionTextWithResourceId(
+                        org.chromium.chrome.tab_ui.R.string
+                                .tab_selection_editor_toolbar_select_tabs)
+                .verifyAdapterHasItemCount(tabs.size())
+                .verifyHasAtLeastNItemVisible(2);
+
+        // Verifies that tapping the back button will close the TabSelectionEditor.
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        robot.resultRobot.verifyTabSelectionEditorIsHidden();
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view));
+
+        // Groups the two tabs.
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> startSurfaceCoordinator.showTabSelectionEditorForTesting(tabs));
+        robot.resultRobot.verifyToolbarActionButtonWithResourceId(
+                org.chromium.chrome.tab_ui.R.string.tab_selection_editor_group);
+        robot.actionRobot.clickItemAtAdapterPosition(0)
+                .clickItemAtAdapterPosition(1)
+                .clickToolbarActionButton();
+        robot.resultRobot.verifyTabSelectionEditorIsHidden();
+
+        // Opens the TabGridDialog by clicking the first group card.
+        onViewWaiting(Matchers.allOf(withParent(withId(
+                                             org.chromium.chrome.tab_ui.R.id.tasks_surface_body)),
+                              withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)))
+                .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
+        CriteriaHelper.pollUiThread(() -> isTabGridDialogShown(cta));
+
+        // Verifies that the TabGridDialog is closed by tapping back button.
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        CriteriaHelper.pollUiThread(() -> isTabGridDialogHidden(cta));
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view));
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testShow_SingleAsHomepage_BackButtonOnHomepageWithGroupTabsDialog() {
+        backButtonOnHomepageWithGroupTabsDialogImpl();
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/show_last_active_tab_only/true"})
+    public void testShow_SingleAsHomepageV2_BackButtonOnHomepageWithGroupTabsDialog() {
+        backButtonOnHomepageWithGroupTabsDialogImpl();
+    }
+
+    private void backButtonOnHomepageWithGroupTabsDialogImpl() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.logo));
+
+        // Launches the first site in MV tiles to create the second tab for grouping.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+
+        // When show_last_active_tab_only is enabled, we need to enter the tab switcher first to
+        // initialize the secondary task surface which shows the TabSelectionEditor dialog.
+        onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.tab_switcher_button));
+        if (isInstantReturn()) {
+            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
+            // omnibox.
+            return;
+        }
+        TabUiTestHelper.enterTabSwitcher(cta);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view));
+        List<Tab> tabs = getTabsInCurrentTabModel(cta.getCurrentTabModel());
+        TabSelectionEditorTestingRobot robot = new TabSelectionEditorTestingRobot();
+
+        // Enters the homepage, and shows the TabSelectionEditor dialog.
+        StartSurfaceTestUtils.pressHomePageButton(cta);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view));
+
+        StartSurfaceCoordinator startSurfaceCoordinator =
+                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> startSurfaceCoordinator.showTabSelectionEditorForTesting(tabs));
+        robot.resultRobot.verifyTabSelectionEditorIsVisible()
+                .verifyToolbarActionButtonDisabled()
+                .verifyToolbarActionButtonWithResourceId(
+                        org.chromium.chrome.tab_ui.R.string.tab_selection_editor_group)
+                .verifyToolbarSelectionTextWithResourceId(
+                        org.chromium.chrome.tab_ui.R.string
+                                .tab_selection_editor_toolbar_select_tabs)
+                .verifyAdapterHasItemCount(tabs.size())
+                .verifyHasAtLeastNItemVisible(2);
+
+        // Verifies that tapping the back button will close the TabSelectionEditor.
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        robot.resultRobot.verifyTabSelectionEditorIsHidden();
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view));
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testOpenRecentTabOnStartAndTapBackButtonReturnToStartSurface()
+            throws ExecutionException {
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        // Taps on the "Recent tabs" menu item.
+        MenuUtils.invokeCustomMenuActionSync(InstrumentationRegistry.getInstrumentation(), cta,
+                org.chromium.chrome.R.id.recent_tabs_menu_id);
+        Assert.assertEquals("The launched tab should have the launch type FROM_START_SURFACE",
+                TabLaunchType.FROM_START_SURFACE,
+                cta.getActivityTabProvider().get().getLaunchType());
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+
+        // Tap the back on the "Recent tabs" should take us back to the start surface homepage, and
+        // the Tab should be deleted.
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    @DisableIf.
+        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
+    public void testSwipeBackOnStartSurfaceHomePage() throws ExecutionException {
+        // clang-format on
+        // TODO(https://crbug.com/1093632): Requires 2 back press/gesture events now. Make this
+        // work with a single event.
+        Assume.assumeFalse(mImmediateReturn);
+        StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+
+        StartSurfaceTestUtils.gestureNavigateBack(mActivityTestRule);
+
+        // Back gesture on the start surface puts Chrome background.
+        ChromeApplicationTestUtils.waitUntilChromeInBackground();
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testSwipeBackOnTabOfLaunchTypeStartSurface() throws ExecutionException {
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        Assert.assertEquals("The launched tab should have the launch type FROM_START_SURFACE",
+                TabLaunchType.FROM_START_SURFACE,
+                cta.getActivityTabProvider().get().getLaunchType());
+
+        StartSurfaceTestUtils.gestureNavigateBack(mActivityTestRule);
+
+        // Back gesture on the tab should take us back to the start surface homepage.
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+    }
+
+    /**
+     * @return Whether both features {@link ChromeFeatureList#INSTANT_START} and
+     * {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} are enabled.
+     */
+    private boolean isInstantReturn() {
+        return mUseInstantStart && mImmediateReturn;
+    }
+
+    private List<Tab> getTabsInCurrentTabModel(TabModel currentTabModel) {
+        List<Tab> tabs = new ArrayList<>();
+        for (int i = 0; i < currentTabModel.getCount(); i++) {
+            tabs.add(currentTabModel.getTabAt(i));
+        }
+        return tabs;
+    }
+
+    private boolean isTabGridDialogShown(ChromeTabbedActivity cta) {
+        View dialogView = cta.findViewById(org.chromium.chrome.tab_ui.R.id.dialog_parent_view);
+        return dialogView.getVisibility() == View.VISIBLE && dialogView.getAlpha() == 1f;
+    }
+
+    private boolean isTabGridDialogHidden(ChromeTabbedActivity cta) {
+        View dialogView = cta.findViewById(org.chromium.chrome.tab_ui.R.id.dialog_parent_view);
+        return dialogView.getVisibility() == View.GONE;
+    }
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java
new file mode 100644
index 0000000..26bd8c7
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java
@@ -0,0 +1,452 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.pressKey;
+import static androidx.test.espresso.action.ViewActions.replaceText;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.Visibility.GONE;
+import static androidx.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.START_SURFACE_TEST_BASE_PARAMS;
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.sClassParamsForStartSurfaceTest;
+import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
+import static org.chromium.ui.test.util.ViewUtils.waitForView;
+
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.test.params.ParameterAnnotations;
+import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
+import org.chromium.base.test.params.ParameterSet;
+import org.chromium.base.test.params.ParameterizedRunner;
+import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.layouts.LayoutStateProvider;
+import org.chromium.chrome.browser.layouts.LayoutType;
+import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin;
+import org.chromium.chrome.browser.ntp.NewTabPageUtils;
+import org.chromium.chrome.browser.tab.TabLaunchType;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
+import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
+import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.components.embedder_support.util.UrlConstants;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.UiRestriction;
+import org.chromium.ui.test.util.ViewUtils;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+/**
+ * Integration tests of Finale variation of the {@link StartSurface}.
+ */
+@RunWith(ParameterizedRunner.class)
+@UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
+@Restriction(
+        {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
+@CommandLineFlags.
+Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+public class StartSurfaceFinaleTest {
+    @ParameterAnnotations.ClassParameter
+    private static List<ParameterSet> sClassParams = sClassParamsForStartSurfaceTest;
+    private static final long MAX_TIMEOUT_MS = 40000L;
+
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    /**
+     * Whether feature {@link ChromeFeatureList#INSTANT_START} is enabled.
+     */
+    private final boolean mUseInstantStart;
+
+    /**
+     * Whether feature {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} is enabled as "immediately".
+     * When immediate return is enabled, the Start surface is showing when Chrome is launched.
+     */
+    private final boolean mImmediateReturn;
+
+    private CallbackHelper mLayoutChangedCallbackHelper;
+    private LayoutStateProvider.LayoutStateObserver mLayoutObserver;
+    @LayoutType
+    private int mCurrentlyActiveLayout;
+    public StartSurfaceFinaleTest(boolean useInstantStart, boolean immediateReturn) {
+        CachedFeatureFlags.setForTesting(ChromeFeatureList.INSTANT_START, useInstantStart);
+
+        mUseInstantStart = useInstantStart;
+        mImmediateReturn = immediateReturn;
+    }
+
+    @Before
+    public void setUp() throws IOException {
+        StartSurfaceTestUtils.setUpStartSurfaceTests(mImmediateReturn, mActivityTestRule);
+
+        mLayoutChangedCallbackHelper = new CallbackHelper();
+
+        if (isInstantReturn()) {
+            // Assume start surface is shown immediately, and the LayoutStateObserver may miss the
+            // first onFinishedShowing event.
+            mCurrentlyActiveLayout = LayoutType.TAB_SWITCHER;
+        }
+
+        mLayoutObserver = new LayoutStateProvider.LayoutStateObserver() {
+            @Override
+            public void onFinishedShowing(@LayoutType int layoutType) {
+                mCurrentlyActiveLayout = layoutType;
+                mLayoutChangedCallbackHelper.notifyCalled();
+            }
+        };
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mActivityTestRule.getActivity().getLayoutManagerSupplier().addObserver((manager) -> {
+                if (manager.getActiveLayout() != null) {
+                    mCurrentlyActiveLayout = manager.getActiveLayout().getLayoutType();
+                    mLayoutChangedCallbackHelper.notifyCalled();
+                }
+                manager.addObserver(mLayoutObserver);
+            });
+        });
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testOmnibox_FocusedOnNewTabInSingleSurface() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        // Launches a new Tab from the Start surface, and verifies the omnibox is focused.
+        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        TextView urlBar = cta.findViewById(org.chromium.chrome.start_surface.R.id.url_bar);
+        CriteriaHelper.pollUiThread(
+                ()
+                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
+                        && urlBar.isFocused(),
+                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.voice_search_button));
+        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
+        assertEquals(cta.findViewById(org.chromium.chrome.start_surface.R.id.toolbar_buttons)
+                             .getVisibility(),
+                View.INVISIBLE);
+        ToolbarDataProvider toolbarDataProvider =
+                cta.getToolbarManager().getLocationBarModelForTesting();
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
+        });
+
+        // Navigates the new created Tab.
+        TestThreadUtils.runOnUiThreadBlocking(() -> urlBar.setText("about:blank"));
+        onView(withId(org.chromium.chrome.start_surface.R.id.url_bar))
+                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
+
+        // Launches a new Tab from the newly navigated tab, and verifies the omnibox is focused.
+        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
+        TabUiTestHelper.verifyTabModelTabCount(cta, 3, 0);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        CriteriaHelper.pollUiThread(
+                ()
+                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
+                        && urlBar.isFocused(),
+                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.voice_search_button));
+        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
+        });
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/show_last_active_tab_only/true" +
+        "/exclude_mv_tiles/true/omnibox_focused_on_new_tab/true"})
+    public void testOmnibox_FocusedOnNewTabInSingleSurfaceV2() {
+        // clang-format on
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        // Launches a new Tab from the Start surface, and verifies the omnibox is focused.
+        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        TextView urlBar = cta.findViewById(org.chromium.chrome.start_surface.R.id.url_bar);
+        CriteriaHelper.pollUiThread(
+                ()
+                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
+                        && urlBar.isFocused(),
+                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.voice_search_button));
+        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
+        assertEquals(cta.findViewById(org.chromium.chrome.start_surface.R.id.toolbar_buttons)
+                             .getVisibility(),
+                View.INVISIBLE);
+        ToolbarDataProvider toolbarDataProvider =
+                cta.getToolbarManager().getLocationBarModelForTesting();
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
+        });
+
+        // Navigates the new created Tab.
+        TestThreadUtils.runOnUiThreadBlocking(() -> urlBar.setText("about:blank"));
+        onView(withId(org.chromium.chrome.start_surface.R.id.url_bar))
+                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
+
+        // Launches a new Tab from the newly navigated tab, and verifies the omnibox is focused.
+        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
+        TabUiTestHelper.verifyTabModelTabCount(cta, 3, 0);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        CriteriaHelper.pollUiThread(
+                ()
+                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
+                        && urlBar.isFocused(),
+                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.voice_search_button));
+        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
+        });
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testOmnibox_TabOpenedFromOmniboxShouldNotGetFocused() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        onViewWaiting(allOf(withId(org.chromium.chrome.start_surface.R.id.search_box_text),
+                              isDisplayed()))
+                .perform(replaceText("about:blank"));
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.url_bar))
+                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view),
+                ViewUtils.VIEW_INVISIBLE);
+
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.toolbar_buttons));
+        TextView urlBar = cta.findViewById(org.chromium.chrome.start_surface.R.id.url_bar);
+        Assert.assertFalse(urlBar.isFocused());
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testOmnibox_FocusedOnNewTabInSingleSurface_BackButtonDeleteBlankTab() {
+        backActionDeleteBlankTabForOmniboxFocusedOnNewTabSingleSurface(
+                () -> StartSurfaceTestUtils.pressBack(mActivityTestRule));
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testOmnibox_FocusedOnNewTabInSingleSurface_BackGestureDeleteBlankTab() {
+        backActionDeleteBlankTabForOmniboxFocusedOnNewTabSingleSurface(
+                () -> StartSurfaceTestUtils.gestureNavigateBack(mActivityTestRule));
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/exclude_mv_tiles/false"
+        + "/new_home_surface_from_home_button/hide_mv_tiles_and_tab_switcher"
+        + "/tab_count_button_on_start_surface/true"})
+    public void testNewSurfaceFromHomeButton(){
+        // clang-format on
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        if (mImmediateReturn) {
+            StartSurfaceTestUtils.waitForOverviewVisible(
+                    mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+
+            onViewWaiting(
+                    allOf(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout), isDisplayed()));
+            onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container));
+            onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.start_tab_switcher_button));
+
+            // Launch a tab. The home button should show on the normal tab.
+            StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        }
+
+        // Go back to the home surface, MV tiles and carousel tab switcher should not show anymore.
+        StartSurfaceTestUtils.pressHomePageButton(cta);
+
+        // MV tiles and carousel tab switcher should not show anymore.
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.start_tab_switcher_button));
+        onView(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_container))
+                .check(matches(withEffectiveVisibility(GONE)));
+        onView(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container))
+                .check(matches(withEffectiveVisibility(GONE)));
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/exclude_mv_tiles/false"
+        + "/new_home_surface_from_home_button/hide_tab_switcher_only"
+        + "/tab_count_button_on_start_surface/true"})
+    public void testNewSurfaceHideTabOnlyFromHomeButton() {
+        // clang-format on
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        if (mImmediateReturn) {
+            StartSurfaceTestUtils.waitForOverviewVisible(
+                    mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+
+            onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout));
+            onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container));
+            onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.start_tab_switcher_button));
+
+            // Launch a tab. The home button should show on the normal tab.
+            StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+            onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.home_button))
+                    .check(matches(isDisplayed()));
+        }
+
+        // Go back to the home surface, MV tiles and carousel tab switcher should not show anymore.
+        StartSurfaceTestUtils.pressHomePageButton(cta);
+
+        // MV tiles should shown and carousel tab switcher should not show anymore.
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.start_tab_switcher_button));
+        onView(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout))
+                .check(matches(withEffectiveVisibility(VISIBLE)));
+        onView(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container))
+                .check(matches(withEffectiveVisibility(GONE)));
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/true"})
+    public void testFinale_webFeedLaunchOrigin_notFocusedOnOmnibox() throws ExecutionException {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+        // Launches a new Tab, and verifies the omnibox is not focused.
+        TestThreadUtils.runOnUiThreadBlocking(
+                ()
+                        -> cta.getTabCreator(false).launchUrl(
+                                NewTabPageUtils.encodeNtpUrl(NewTabPageLaunchOrigin.WEB_FEED),
+                                TabLaunchType.FROM_CHROME_UI));
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        TextView urlBar = cta.findViewById(org.chromium.chrome.start_surface.R.id.url_bar);
+        CriteriaHelper.pollUiThread(
+                ()
+                        -> !StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
+                        && !urlBar.isFocused(),
+                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+    }
+
+    /**
+     * @return Whether both features {@link ChromeFeatureList#INSTANT_START} and
+     * {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} are enabled.
+     */
+    private boolean isInstantReturn() {
+        return mUseInstantStart && mImmediateReturn;
+    }
+
+    private void backActionDeleteBlankTabForOmniboxFocusedOnNewTabSingleSurface(
+            Runnable backAction) {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        assertThat(cta.getTabModelSelector().getCurrentModel().getCount(), equalTo(1));
+
+        // Launches a new Tab from the Start surface, and verifies the omnibox is focused.
+        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.search_box_text));
+        TextView urlBar = cta.findViewById(org.chromium.chrome.start_surface.R.id.url_bar);
+        CriteriaHelper.pollUiThread(
+                ()
+                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
+                        && urlBar.isFocused(),
+                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.voice_search_button));
+        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
+        assertEquals(cta.findViewById(org.chromium.chrome.start_surface.R.id.toolbar_buttons)
+                             .getVisibility(),
+                View.INVISIBLE);
+        ToolbarDataProvider toolbarDataProvider =
+                cta.getToolbarManager().getLocationBarModelForTesting();
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
+        });
+
+        backAction.run();
+
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view));
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+    }
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java
new file mode 100644
index 0000000..bca4a63
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java
@@ -0,0 +1,390 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.START_SURFACE_TEST_BASE_PARAMS;
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.sClassParamsForStartSurfaceTest;
+import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
+
+import android.support.test.InstrumentationRegistry;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.test.filters.MediumTest;
+
+import org.hamcrest.Matchers;
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.test.params.ParameterAnnotations;
+import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
+import org.chromium.base.test.params.ParameterSet;
+import org.chromium.base.test.params.ParameterizedRunner;
+import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Criteria;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.feed.FeedPlaceholderLayout;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.layouts.LayoutStateProvider;
+import org.chromium.chrome.browser.layouts.LayoutType;
+import org.chromium.chrome.browser.native_page.ContextMenuManager;
+import org.chromium.chrome.browser.suggestions.SiteSuggestion;
+import org.chromium.chrome.browser.suggestions.tile.SuggestionsTileView;
+import org.chromium.chrome.browser.tab.TabLaunchType;
+import org.chromium.chrome.browser.tasks.MvTilesLayout;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.chrome.test.util.browser.suggestions.SuggestionsDependenciesRule;
+import org.chromium.chrome.test.util.browser.suggestions.mostvisited.FakeMostVisitedSites;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.content_public.browser.test.util.TestTouchUtils;
+import org.chromium.ui.test.util.UiRestriction;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Integration tests of MV tiles on the {@link StartSurface}.
+ */
+@RunWith(ParameterizedRunner.class)
+@UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
+@Restriction(
+        {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
+@CommandLineFlags.
+Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+public class StartSurfaceMVTilesTest {
+    @ParameterAnnotations.ClassParameter
+    private static List<ParameterSet> sClassParams = sClassParamsForStartSurfaceTest;
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    @Rule
+    public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule();
+
+    /**
+     * Whether feature {@link ChromeFeatureList#INSTANT_START} is enabled.
+     */
+    private final boolean mUseInstantStart;
+
+    /**
+     * Whether feature {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} is enabled as "immediately".
+     * When immediate return is enabled, the Start surface is showing when Chrome is launched.
+     */
+    private final boolean mImmediateReturn;
+
+    private CallbackHelper mLayoutChangedCallbackHelper;
+    private LayoutStateProvider.LayoutStateObserver mLayoutObserver;
+    @LayoutType
+    private int mCurrentlyActiveLayout;
+    private FakeMostVisitedSites mMostVisitedSites;
+
+    public StartSurfaceMVTilesTest(boolean useInstantStart, boolean immediateReturn) {
+        CachedFeatureFlags.setForTesting(ChromeFeatureList.INSTANT_START, useInstantStart);
+
+        mUseInstantStart = useInstantStart;
+        mImmediateReturn = immediateReturn;
+    }
+
+    @Before
+    public void setUp() throws IOException {
+        mMostVisitedSites = StartSurfaceTestUtils.setMVTiles(mSuggestionsDeps);
+
+        StartSurfaceTestUtils.setUpStartSurfaceTests(mImmediateReturn, mActivityTestRule);
+
+        mLayoutChangedCallbackHelper = new CallbackHelper();
+
+        if (isInstantReturn()) {
+            // Assume start surface is shown immediately, and the LayoutStateObserver may miss the
+            // first onFinishedShowing event.
+            mCurrentlyActiveLayout = LayoutType.TAB_SWITCHER;
+        }
+
+        mLayoutObserver = new LayoutStateProvider.LayoutStateObserver() {
+            @Override
+            public void onFinishedShowing(@LayoutType int layoutType) {
+                mCurrentlyActiveLayout = layoutType;
+                mLayoutChangedCallbackHelper.notifyCalled();
+            }
+        };
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mActivityTestRule.getActivity().getLayoutManagerSupplier().addObserver((manager) -> {
+                if (manager.getActiveLayout() != null) {
+                    mCurrentlyActiveLayout = manager.getActiveLayout().getLayoutType();
+                    mLayoutChangedCallbackHelper.notifyCalled();
+                }
+                manager.addObserver(mLayoutObserver);
+            });
+        });
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testTapMVTilesInSingleSurface() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        if (isInstantReturn()) {
+            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
+            // omnibox.
+            return;
+        }
+        // Press back button should close the tab opened from the Start surface.
+        OverviewModeBehaviorWatcher showWatcher = TabUiTestHelper.createOverviewShowWatcher(cta);
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
+        showWatcher.waitForBehavior();
+        assertThat(cta.getTabModelSelector().getCurrentModel().getCount(), equalTo(1));
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testCleanUpMVTilesAfterHiding() {
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        StartSurfaceCoordinator startSurfaceCoordinator =
+                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertFalse(startSurfaceCoordinator.isMVTilesCleanedUpForTesting());
+        });
+
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        Assert.assertEquals("The launched tab should have the launch type FROM_START_SURFACE",
+                TabLaunchType.FROM_START_SURFACE,
+                cta.getActivityTabProvider().get().getLaunchType());
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertTrue(startSurfaceCoordinator.isMVTilesCleanedUpForTesting());
+        });
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testMVTilesInitialized() {
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        StartSurfaceCoordinator startSurfaceCoordinator =
+                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
+
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertFalse(startSurfaceCoordinator.isMVTilesInitializedForTesting());
+        });
+
+        TabUiTestHelper.enterTabSwitcher(cta);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertTrue(startSurfaceCoordinator.isMVTilesInitializedForTesting());
+        });
+    }
+
+    /* MV tiles context menu tests starts. */
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    // Disable feed placeholder animation because it causes waitForSnackbar() to time out.
+    @CommandLineFlags.
+    Add({START_SURFACE_TEST_BASE_PARAMS, FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH})
+    public void testDismissTileWithContextMenuAndUndo() throws Exception {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(mActivityTestRule.getActivity());
+
+        SiteSuggestion siteToDismiss = mMostVisitedSites.getCurrentSites().get(1);
+        final View tileView = getTileViewFor(siteToDismiss);
+
+        // Dismiss the tile using the context menu.
+        invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.REMOVE);
+        Assert.assertTrue(mMostVisitedSites.isUrlBlocklisted(siteToDismiss.url));
+
+        // Ensure that the removal is reflected in the ui.
+        Assert.assertEquals(8, getMvTilesLayout().getChildCount());
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> mMostVisitedSites.setTileSuggestions(getNewSitesAfterDismiss(siteToDismiss)));
+        waitForTileRemoved(siteToDismiss);
+        Assert.assertEquals(7, getMvTilesLayout().getChildCount());
+
+        // Undo the dismiss through snack bar.
+        final View snackbarButton = waitForSnackbar();
+        Assert.assertTrue(mMostVisitedSites.isUrlBlocklisted(siteToDismiss.url));
+        TestThreadUtils.runOnUiThreadBlocking((Runnable) snackbarButton::callOnClick);
+        Assert.assertFalse(mMostVisitedSites.isUrlBlocklisted(siteToDismiss.url));
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testOpenTileInNewTabWithContextMenu() throws ExecutionException {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+
+        SiteSuggestion siteToOpen = mMostVisitedSites.getCurrentSites().get(1);
+        final View tileView = getTileViewFor(siteToOpen);
+
+        // Open the tile using the context menu.
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+        invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.OPEN_IN_NEW_TAB);
+        // This tab should be opened in the background.
+        Assert.assertTrue(cta.getLayoutManager().overviewVisible());
+        // Verifies a new tab is created.
+        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testOpenTileInIncognitoTabWithContextMenu() throws ExecutionException {
+        Assume.assumeFalse("https://crbug.com/1210554", mUseInstantStart && mImmediateReturn);
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+
+        SiteSuggestion siteToOpen = mMostVisitedSites.getCurrentSites().get(1);
+        final View tileView = getTileViewFor(siteToOpen);
+
+        // Open the incognito tile using the context menu.
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+        OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
+        invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.OPEN_IN_INCOGNITO_TAB);
+        hideWatcher.waitForBehavior();
+        CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
+        // Verifies a new incognito tab is created.
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 1);
+    }
+    /* MV tiles context menu tests ends. */
+
+    /**
+     * @return Whether both features {@link ChromeFeatureList#INSTANT_START} and
+     * {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} are enabled.
+     */
+    private boolean isInstantReturn() {
+        return mUseInstantStart && mImmediateReturn;
+    }
+
+    private View getTileViewFor(SiteSuggestion suggestion) {
+        onViewWaiting(
+                allOf(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout), isDisplayed()));
+        View tileView = getMvTilesLayout().getTileViewForTesting(suggestion);
+        Assert.assertNotNull("Tile not found for suggestion " + suggestion.url, tileView);
+
+        return tileView;
+    }
+
+    private MvTilesLayout getMvTilesLayout() {
+        onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout));
+        MvTilesLayout mvTilesLayout = mActivityTestRule.getActivity().findViewById(
+                org.chromium.chrome.tab_ui.R.id.mv_tiles_layout);
+        Assert.assertNotNull("Unable to retrieve the MvTilesLayout.", mvTilesLayout);
+        return mvTilesLayout;
+    }
+
+    private void waitForTileRemoved(final SiteSuggestion suggestion) throws TimeoutException {
+        MvTilesLayout mvTilesLayout = getMvTilesLayout();
+        final SuggestionsTileView removedTile = mvTilesLayout.getTileViewForTesting(suggestion);
+        if (removedTile == null) return;
+
+        final CallbackHelper callback = new CallbackHelper();
+        mvTilesLayout.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
+            @Override
+            public void onChildViewAdded(View parent, View child) {}
+
+            @Override
+            public void onChildViewRemoved(View parent, View child) {
+                if (child == removedTile) callback.notifyCalled();
+            }
+        });
+        callback.waitForCallback("The expected tile was not removed.", 0);
+        mvTilesLayout.setOnHierarchyChangeListener(null);
+    }
+
+    private void invokeContextMenu(View view, int contextMenuItemId) throws ExecutionException {
+        TestTouchUtils.performLongClickOnMainSync(
+                InstrumentationRegistry.getInstrumentation(), view);
+        Assert.assertTrue(InstrumentationRegistry.getInstrumentation().invokeContextMenuAction(
+                mActivityTestRule.getActivity(), contextMenuItemId, 0));
+    }
+
+    private List<SiteSuggestion> getNewSitesAfterDismiss(SiteSuggestion siteToDismiss) {
+        List<SiteSuggestion> newSites = new ArrayList<>();
+        for (SiteSuggestion site : mMostVisitedSites.getCurrentSites()) {
+            if (!site.url.equals(siteToDismiss.url)) {
+                newSites.add(site);
+            }
+        }
+        return newSites;
+    }
+
+    /** Wait for the snackbar associated to a tile dismissal to be shown and returns its button. */
+    private View waitForSnackbar() {
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        final String expectedSnackbarMessage = cta.getResources().getString(
+                org.chromium.chrome.start_surface.R.string.most_visited_item_removed);
+        CriteriaHelper.pollUiThread(() -> {
+            SnackbarManager snackbarManager = cta.getSnackbarManager();
+            Criteria.checkThat(snackbarManager.isShowing(), Matchers.is(true));
+            TextView snackbarMessage =
+                    cta.findViewById(org.chromium.chrome.start_surface.R.id.snackbar_message);
+            Criteria.checkThat(snackbarMessage, Matchers.notNullValue());
+            Criteria.checkThat(
+                    snackbarMessage.getText().toString(), Matchers.is(expectedSnackbarMessage));
+        });
+
+        return cta.findViewById(org.chromium.chrome.start_surface.R.id.snackbar_button);
+    }
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
new file mode 100644
index 0000000..f724394
--- /dev/null
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
@@ -0,0 +1,463 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.features.start_surface;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.action.ViewActions.pressKey;
+import static androidx.test.espresso.action.ViewActions.replaceText;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withParent;
+
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.START_SURFACE_TEST_BASE_PARAMS;
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.sClassParamsForStartSurfaceTest;
+import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
+import static org.chromium.ui.test.util.ViewUtils.waitForView;
+
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.espresso.contrib.RecyclerViewActions;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.MediumTest;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.test.params.ParameterAnnotations;
+import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
+import org.chromium.base.test.params.ParameterSet;
+import org.chromium.base.test.params.ParameterizedRunner;
+import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.FlakyTest;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeTabbedActivity;
+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.layouts.LayoutStateProvider;
+import org.chromium.chrome.browser.layouts.LayoutType;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tasks.pseudotab.TabAttributeCache;
+import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter;
+import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
+import org.chromium.chrome.browser.toolbar.HomeButton;
+import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.UiRestriction;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Integration tests of the tab switcher when {@link StartSurface} is enabled.
+ */
+@RunWith(ParameterizedRunner.class)
+@UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
+@Restriction(
+        {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
+@CommandLineFlags.
+Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
+public class StartSurfaceTabSwitcherTest {
+    @ParameterAnnotations.ClassParameter
+    private static List<ParameterSet> sClassParams = sClassParamsForStartSurfaceTest;
+
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    /**
+     * Whether feature {@link ChromeFeatureList#INSTANT_START} is enabled.
+     */
+    private final boolean mUseInstantStart;
+
+    /**
+     * Whether feature {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} is enabled as "immediately".
+     * When immediate return is enabled, the Start surface is showing when Chrome is launched.
+     */
+    private final boolean mImmediateReturn;
+
+    private CallbackHelper mLayoutChangedCallbackHelper;
+    private LayoutStateProvider.LayoutStateObserver mLayoutObserver;
+    @LayoutType
+    private int mCurrentlyActiveLayout;
+    public StartSurfaceTabSwitcherTest(boolean useInstantStart, boolean immediateReturn) {
+        CachedFeatureFlags.setForTesting(ChromeFeatureList.INSTANT_START, useInstantStart);
+
+        mUseInstantStart = useInstantStart;
+        mImmediateReturn = immediateReturn;
+    }
+
+    @Before
+    public void setUp() throws IOException {
+        StartSurfaceTestUtils.setUpStartSurfaceTests(mImmediateReturn, mActivityTestRule);
+
+        mLayoutChangedCallbackHelper = new CallbackHelper();
+
+        if (isInstantReturn()) {
+            // Assume start surface is shown immediately, and the LayoutStateObserver may miss the
+            // first onFinishedShowing event.
+            mCurrentlyActiveLayout = LayoutType.TAB_SWITCHER;
+        }
+
+        mLayoutObserver = new LayoutStateProvider.LayoutStateObserver() {
+            @Override
+            public void onFinishedShowing(@LayoutType int layoutType) {
+                mCurrentlyActiveLayout = layoutType;
+                mLayoutChangedCallbackHelper.notifyCalled();
+            }
+        };
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mActivityTestRule.getActivity().getLayoutManagerSupplier().addObserver((manager) -> {
+                if (manager.getActiveLayout() != null) {
+                    mCurrentlyActiveLayout = manager.getActiveLayout().getLayoutType();
+                    mLayoutChangedCallbackHelper.notifyCalled();
+                }
+                manager.addObserver(mLayoutObserver);
+            });
+        });
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testShow_SingleAsTabSwitcher() {
+        if (mImmediateReturn) {
+            StartSurfaceTestUtils.waitForOverviewVisible(
+                    mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+            StartSurfaceTestUtils.waitForTabModel(mActivityTestRule.getActivity());
+            if (isInstantReturn()) {
+                // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
+                // omnibox.
+                return;
+            }
+            // Single surface is shown as homepage. Clicks "more_tabs" button to get into tab
+            // switcher.
+            StartSurfaceTestUtils.clickMoreTabs(mActivityTestRule.getActivity());
+        } else {
+            TabUiTestHelper.enterTabSwitcher(mActivityTestRule.getActivity());
+        }
+
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view));
+
+        OverviewModeBehaviorWatcher hideWatcher =
+                TabUiTestHelper.createOverviewHideWatcher(mActivityTestRule.getActivity());
+        onViewWaiting(allOf(withParent(withId(org.chromium.chrome.tab_ui.R.id.tasks_surface_body)),
+                              withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)))
+                .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
+        hideWatcher.waitForBehavior();
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testShow_SingleAsHomepage_CloseAllTabsShouldHideTabSwitcher() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+        assertEquals(cta.findViewById(org.chromium.chrome.tab_ui.R.id.tab_switcher_title)
+                             .getVisibility(),
+                View.VISIBLE);
+
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { cta.getTabModelSelector().getModel(false).closeAllTabs(); });
+        TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
+        assertEquals(cta.findViewById(org.chromium.chrome.tab_ui.R.id.tab_switcher_title)
+                             .getVisibility(),
+                View.GONE);
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface", "TabGroup"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    @EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID})
+    @FlakyTest(message = "https://crbug.com/1232695")
+    public void testCreateTabWithinTabGroup() throws Exception {
+        // Create tab state files for a group with two tabs.
+        TabUiTestHelper.finishActivity(mActivityTestRule.getActivity());
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
+        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
+        TabAttributeCache.setRootIdForTesting(0, 0);
+        TabAttributeCache.setRootIdForTesting(1, 0);
+        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1});
+
+        // Restart and open tab grid dialog.
+        mActivityTestRule.startMainActivityFromLauncher();
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        assertTrue(cta.getTabModelSelector().getTabModelFilterProvider().getCurrentTabModelFilter()
+                           instanceof TabGroupModelFilter);
+        TabGroupModelFilter filter = (TabGroupModelFilter) cta.getTabModelSelector()
+                                             .getTabModelFilterProvider()
+                                             .getTabModelFilter(false);
+        if (mImmediateReturn) {
+            StartSurfaceTestUtils.clickFirstTabInCarousel();
+        } else {
+            onViewWaiting(allOf(withId(org.chromium.chrome.tab_ui.R.id.toolbar_left_button),
+                                  isDescendantOfA(withId(
+                                          org.chromium.chrome.start_surface.R.id.bottom_controls))))
+                    .perform(click());
+        }
+        onViewWaiting(
+                allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
+                        withParent(withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view))))
+                .check(TabUiTestHelper.ChildrenCountAssertion.havingTabCount(2));
+
+        // Show start surface through tab grid dialog toolbar plus button and create a new tab by
+        // clicking on MV tiles.
+        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.toolbar_right_button),
+                       isDescendantOfA(
+                               withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view))))
+                .perform(click());
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 2);
+
+        // Verify a tab is created within the group by checking the tab strip and tab model.
+        onView(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))
+                .check(waitForView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
+                        isCompletelyDisplayed())));
+        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
+                       withParent(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))))
+                .check(TabUiTestHelper.ChildrenCountAssertion.havingTabCount(3));
+        assertEquals(1, filter.getTabGroupCount());
+
+        // Show start surface through tab strip plus button and create a new tab by perform a query
+        // search in fake box.
+        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.toolbar_right_button),
+                       isDescendantOfA(withId(org.chromium.chrome.tab_ui.R.id.bottom_controls))))
+                .perform(click());
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.search_box_text))
+                .check(matches(isCompletelyDisplayed()))
+                .perform(replaceText("wfh tips"));
+        onView(withId(org.chromium.chrome.start_surface.R.id.url_bar))
+                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
+
+        // Verify a tab is created within the group by checking the tab strip and tab model.
+        onView(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))
+                .check(waitForView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
+                        isCompletelyDisplayed())));
+        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
+                       withParent(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))))
+                .check(TabUiTestHelper.ChildrenCountAssertion.havingTabCount(4));
+        assertEquals(4, cta.getTabModelSelector().getCurrentModel().getCount());
+        assertEquals(1, filter.getTabGroupCount());
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS +
+        "/home_button_on_grid_tab_switcher/true"})
+    public void testHomeButtonOnTabSwitcher() {
+        // clang-format on
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
+
+        StartSurfaceTestUtils.clickMoreTabs(cta);
+        waitForView(withId(org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view));
+        onView(withId(org.chromium.chrome.tab_ui.R.id.home_button_on_tab_switcher))
+                .check(matches(isDisplayed()));
+        HomeButton homeButton =
+                cta.findViewById(org.chromium.chrome.tab_ui.R.id.home_button_on_tab_switcher);
+        Assert.assertFalse(homeButton.isLongClickable());
+        onView(withId(org.chromium.chrome.start_surface.R.id.home_button_on_tab_switcher))
+                .perform(click());
+
+        onView(withId(org.chromium.chrome.start_surface.R.id.primary_tasks_surface_view))
+                .check(matches(isDisplayed()));
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/show_tabs_in_mru_order/true"})
+    public void test_CarouselTabSwitcherShowTabsInMRUOrder() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        CriteriaHelper.pollUiThread(
+                () -> cta.getLayoutManager() != null && cta.getLayoutManager().overviewVisible());
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.logo));
+        Tab tab1 = cta.getCurrentTabModel().getTabAt(0);
+
+        // Launches the first site in MV tiles.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        Tab tab2 = cta.getActivityTab();
+        // Verifies that the titles of the two Tabs are different.
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertNotEquals(tab1.getTitle(), tab2.getTitle()); });
+
+        // Returns to the Start surface.
+        OverviewModeBehaviorWatcher overviewModeWatcher =
+                new OverviewModeBehaviorWatcher(cta.getLayoutManager(), true, false);
+        StartSurfaceTestUtils.pressHomePageButton(cta);
+        overviewModeWatcher.waitForBehavior();
+        waitForView(allOf(
+                withParent(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container)),
+                withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)));
+
+        RecyclerView recyclerView = cta.findViewById(org.chromium.chrome.tab_ui.R.id.tab_list_view);
+        assertEquals(2, recyclerView.getChildCount());
+        // Verifies that the tabs are shown in MRU order: the first card in the carousel Tab
+        // switcher is the last created Tab by tapping the MV tile; the second card is the Tab
+        // created or restored in setup().
+        RecyclerView.ViewHolder firstViewHolder = recyclerView.findViewHolderForAdapterPosition(0);
+        TextView title1 =
+                firstViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> Assert.assertEquals(tab2.getTitle(), title1.getText()));
+
+        RecyclerView.ViewHolder secondViewHolder = recyclerView.findViewHolderForAdapterPosition(1);
+        TextView title2 =
+                secondViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> Assert.assertEquals(tab1.getTitle(), title2.getText()));
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/show_tabs_in_mru_order/true"})
+    public void testShow_GridTabSwitcher_AlwaysShowTabsInCreationOrder() {
+        tabSwitcher_AlwaysShowTabsInGridTabSwitcherInCreationOrderImpl();
+    }
+
+    @Test
+    @LargeTest
+    @Feature({"StartSurface"})
+    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS +
+        "/show_tabs_in_mru_order/true/show_last_active_tab_only/true"})
+    public void testShowV2_GridTabSwitcher_AlwaysShowTabsInCreationOrder() {
+        // clang-format on
+        tabSwitcher_AlwaysShowTabsInGridTabSwitcherInCreationOrderImpl();
+    }
+
+    private void tabSwitcher_AlwaysShowTabsInGridTabSwitcherInCreationOrderImpl() {
+        if (!mImmediateReturn) {
+            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
+        }
+
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        CriteriaHelper.pollUiThread(
+                () -> cta.getLayoutManager() != null && cta.getLayoutManager().overviewVisible());
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.logo));
+        Tab tab1 = cta.getCurrentTabModel().getTabAt(0);
+
+        // Launches the first site in MV tiles.
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        Tab tab2 = cta.getActivityTab();
+
+        // Verifies that the titles of the two Tabs are different.
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertNotEquals(tab1.getTitle(), tab2.getTitle()); });
+
+        if (isInstantReturn()) {
+            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
+            // omnibox.
+            return;
+        }
+        // Enter the Tab switcher.
+        TabUiTestHelper.enterTabSwitcher(cta);
+        waitForView(
+                allOf(withParent(withId(
+                              org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view)),
+                        withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)));
+
+        ViewGroup secondaryTaskSurface = cta.findViewById(
+                org.chromium.chrome.start_surface.R.id.secondary_tasks_surface_view);
+        RecyclerView recyclerView =
+                secondaryTaskSurface.findViewById(org.chromium.chrome.tab_ui.R.id.tab_list_view);
+        assertEquals(2, recyclerView.getChildCount());
+        // Verifies that the tabs are shown in MRU order: the first card in the Tab switcher is the
+        // last created Tab by tapping the MV tile; the second card is the Tab created or restored
+        // in setup().
+        RecyclerView.ViewHolder firstViewHolder = recyclerView.findViewHolderForAdapterPosition(0);
+        TextView title1 =
+                firstViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> Assert.assertEquals(tab1.getTitle(), title1.getText()));
+
+        RecyclerView.ViewHolder secondViewHolder = recyclerView.findViewHolderForAdapterPosition(1);
+        TextView title2 =
+                secondViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> Assert.assertEquals(tab2.getTitle(), title2.getText()));
+    }
+
+    @Test
+    @MediumTest
+    @Feature({"StartSurface"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
+    public void testDoNotInitializeSecondaryTasksSurfaceWithoutOpenGridTabSwitcher() {
+        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
+        StartSurfaceTestUtils.waitForOverviewVisible(
+                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
+        StartSurfaceTestUtils.waitForTabModel(cta);
+        StartSurfaceCoordinator startSurfaceCoordinator =
+                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertTrue(startSurfaceCoordinator.isSecondaryTasksSurfaceEmptyForTesting());
+        });
+        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertTrue(startSurfaceCoordinator.isSecondaryTasksSurfaceEmptyForTesting());
+        });
+
+        TabUiTestHelper.enterTabSwitcher(cta);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertFalse(startSurfaceCoordinator.isSecondaryTasksSurfaceEmptyForTesting());
+        });
+    }
+
+    /**
+     * @return Whether both features {@link ChromeFeatureList#INSTANT_START} and
+     * {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} are enabled.
+     */
+    private boolean isInstantReturn() {
+        return mUseInstantStart && mImmediateReturn;
+    }
+}
\ No newline at end of file
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
index 6aba2c9..800c4d5 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -11,8 +11,6 @@
 import static androidx.test.espresso.assertion.ViewAssertions.matches;
 import static androidx.test.espresso.matcher.ViewMatchers.Visibility.GONE;
 import static androidx.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
-import static androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
 import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
 import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
 import static androidx.test.espresso.matcher.ViewMatchers.withId;
@@ -32,9 +30,9 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeTrue;
 
-import static org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS;
 import static org.chromium.chrome.features.start_surface.StartSurfaceMediator.FEED_VISIBILITY_CONSISTENCY;
-import static org.chromium.ui.test.util.ViewUtils.VIEW_GONE;
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.START_SURFACE_TEST_BASE_PARAMS;
+import static org.chromium.chrome.features.start_surface.StartSurfaceTestUtils.sClassParamsForStartSurfaceTest;
 import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
 import static org.chromium.ui.test.util.ViewUtils.waitForStableView;
 import static org.chromium.ui.test.util.ViewUtils.waitForView;
@@ -43,17 +41,12 @@
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
-import android.support.test.runner.lifecycle.Stage;
 import android.support.test.uiautomator.UiDevice;
 import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.View;
-import android.view.ViewGroup;
 import android.widget.TextView;
 
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.test.espresso.contrib.RecyclerViewActions;
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 
@@ -75,7 +68,6 @@
 import org.chromium.base.test.params.ParameterizedRunner;
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.Criteria;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.DisableIf;
 import org.chromium.base.test.util.DisabledTest;
@@ -87,61 +79,41 @@
 import org.chromium.chrome.browser.flags.CachedFeatureFlags;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
-import org.chromium.chrome.browser.gesturenav.GestureNavigationUtils;
 import org.chromium.chrome.browser.init.AsyncInitializationActivity;
 import org.chromium.chrome.browser.layouts.LayoutStateProvider;
 import org.chromium.chrome.browser.layouts.LayoutType;
-import org.chromium.chrome.browser.native_page.ContextMenuManager;
-import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin;
-import org.chromium.chrome.browser.ntp.NewTabPageUtils;
 import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
-import org.chromium.chrome.browser.suggestions.SiteSuggestion;
-import org.chromium.chrome.browser.suggestions.tile.SuggestionsTileView;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabLaunchType;
-import org.chromium.chrome.browser.tabmodel.TabModel;
-import org.chromium.chrome.browser.tasks.MvTilesLayout;
 import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
 import org.chromium.chrome.browser.tasks.SingleTabSwitcherMediator;
-import org.chromium.chrome.browser.tasks.pseudotab.TabAttributeCache;
-import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter;
-import org.chromium.chrome.browser.tasks.tab_management.TabSelectionEditorTestingRobot;
 import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
 import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
-import org.chromium.chrome.browser.toolbar.HomeButton;
-import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuTestSupport;
-import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.start_surface.R;
 import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.ChromeApplicationTestUtils;
 import org.chromium.chrome.test.util.ChromeTabUtils;
-import org.chromium.chrome.test.util.MenuUtils;
 import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.chrome.test.util.browser.suggestions.SuggestionsDependenciesRule;
-import org.chromium.chrome.test.util.browser.suggestions.mostvisited.FakeMostVisitedSites;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetTestSupport;
-import org.chromium.components.embedder_support.util.UrlConstants;
 import org.chromium.components.embedder_support.util.UrlUtilities;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
-import org.chromium.content_public.browser.test.util.TestTouchUtils;
 import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
 import org.chromium.ui.test.util.UiRestriction;
-import org.chromium.ui.test.util.ViewUtils;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
 
 /**
  * Integration tests of the {@link StartSurface} for cases with tabs. See {@link
- * StartSurfaceNoTabsTest} for test that have no tabs.
+ * StartSurfaceNoTabsTest} for test that have no tabs. See {@link StartSurfaceTabSwitcherTest},
+ * {@link StartSurfaceMVTilesTest}, {@link StartSurfaceBackButtonTest}, {@link
+ * StartSurfaceFinaleTest} for more tests.
  */
 @RunWith(ParameterizedRunner.class)
 @UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
@@ -152,14 +124,7 @@
 Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
 public class StartSurfaceTest {
     @ParameterAnnotations.ClassParameter
-    private static List<ParameterSet> sClassParams =
-            Arrays.asList(new ParameterSet().value(false, false).name("NoInstant_NoReturn"),
-                    new ParameterSet().value(true, false).name("Instant_NoReturn"),
-                    new ParameterSet().value(false, true).name("NoInstant_Return"),
-                    new ParameterSet().value(true, true).name("Instant_Return"));
-
-    private static final String BASE_PARAMS =
-            "force-fieldtrial-params=Study.Group:start_surface_variation";
+    private static List<ParameterSet> sClassParams = sClassParamsForStartSurfaceTest;
 
     private static final long MAX_TIMEOUT_MS = 40000L;
     private static final long MILLISECONDS_PER_MINUTE = TimeUtils.SECONDS_PER_MINUTE * 1000;
@@ -171,12 +136,12 @@
     public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule();
 
     /**
-     * Whether feature {@link ChromeFeatureList.INSTANT_START} is enabled.
+     * Whether feature {@link ChromeFeatureList#INSTANT_START} is enabled.
      */
     private final boolean mUseInstantStart;
 
     /**
-     * Whether feature {@link ChromeFeatureList.TAB_SWITCHER_ON_RETURN} is enabled as "immediately".
+     * Whether feature {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} is enabled as "immediately".
      * When immediate return is enabled, the Start surface is showing when Chrome is launched.
      */
     private final boolean mImmediateReturn;
@@ -185,7 +150,6 @@
     private LayoutStateProvider.LayoutStateObserver mLayoutObserver;
     @LayoutType
     private int mCurrentlyActiveLayout;
-    private FakeMostVisitedSites mMostVisitedSites;
 
     public StartSurfaceTest(boolean useInstantStart, boolean immediateReturn) {
         CachedFeatureFlags.setForTesting(ChromeFeatureList.INSTANT_START, useInstantStart);
@@ -196,39 +160,9 @@
 
     @Before
     public void setUp() throws IOException {
+        StartSurfaceTestUtils.setUpStartSurfaceTests(mImmediateReturn, mActivityTestRule);
+
         mLayoutChangedCallbackHelper = new CallbackHelper();
-        mMostVisitedSites = StartSurfaceTestUtils.setMVTiles(mSuggestionsDeps);
-
-        int expectedTabs = 1;
-        int additionalTabs = expectedTabs - (mImmediateReturn ? 0 : 1);
-        if (additionalTabs > 0) {
-            int[] tabIDs = new int[additionalTabs];
-            for (int i = 0; i < additionalTabs; i++) {
-                tabIDs[i] = i;
-                StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(i);
-            }
-            StartSurfaceTestUtils.createTabStateFile(tabIDs);
-        }
-        if (mImmediateReturn) {
-            TAB_SWITCHER_ON_RETURN_MS.setForTesting(0);
-            assertEquals(0, ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS.getValue());
-            assertTrue(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
-
-            // Need to start main activity from launcher for immediate return to be effective.
-            // However, need at least one tab for carousel to show, which starting main activity
-            // from launcher doesn't provide.
-            // Creating tabs and restart the activity would do the trick, but we cannot do that for
-            // Instant start because we cannot unload native library.
-            // Create fake TabState files to emulate having one tab in previous session.
-            TabAttributeCache.setTitleForTesting(0, "tab title");
-            StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        } else {
-            assertFalse(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
-            // Cannot use StartSurfaceTestUtils.startMainActivityFromLauncher().
-            // Otherwise tab switcher could be shown immediately if single-pane is enabled.
-            mActivityTestRule.startMainActivityOnBlankPage();
-            onViewWaiting(withId(R.id.home_button));
-        }
 
         if (isInstantReturn()) {
             // Assume start surface is shown immediately, and the LayoutStateObserver may miss the
@@ -257,8 +191,11 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/home_button_on_grid_tab_switcher/false"})
+    // clang-format off
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS +
+        "/home_button_on_grid_tab_switcher/false"})
     public void testShow_SingleAsHomepage() {
+        // clang-format on
         if (!mImmediateReturn) {
             StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
         }
@@ -283,7 +220,7 @@
                 withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)));
         assertEquals(cta.findViewById(R.id.home_button_on_tab_switcher).getVisibility(), View.GONE);
 
-        pressBack();
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
         onViewWaiting(allOf(withId(R.id.primary_tasks_surface_view), isDisplayed()));
 
         OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
@@ -294,7 +231,7 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     public void testShow_SingleAsHomepage_NoIncognitoSwitch() {
         if (!mImmediateReturn) {
             StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
@@ -324,7 +261,7 @@
         onView(withId(org.chromium.chrome.tab_ui.R.id.incognito_toggle_tabs))
                 .check(matches(withEffectiveVisibility(VISIBLE)));
 
-        pressBack();
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
         onViewWaiting(withId(R.id.primary_tasks_surface_view));
 
         if (isInstantReturn()
@@ -349,7 +286,7 @@
     @LargeTest
     @Feature({"StartSurface"})
     // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single" +
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS +
         "/exclude_mv_tiles/true/hide_switch_when_no_incognito_tabs/true"})
     public void testShow_SingleAsHomepage_NoMVTiles() {
         // clang-format on
@@ -380,7 +317,7 @@
         StartSurfaceTestUtils.clickMoreTabs(cta);
         onViewWaiting(withId(R.id.secondary_tasks_surface_view));
 
-        pressBack();
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
         onViewWaiting(withId(R.id.primary_tasks_surface_view));
 
         if (isInstantReturn()
@@ -400,7 +337,7 @@
     @LargeTest
     @Feature({"StartSurface"})
     // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/exclude_mv_tiles/true" +
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/exclude_mv_tiles/true" +
         "/hide_switch_when_no_incognito_tabs/true/show_last_active_tab_only/true"})
     public void testShow_SingleAsHomepage_SingleTabNoMVTiles() {
         // clang-format on
@@ -442,7 +379,7 @@
             // omnibox.
             return;
         }
-        pressBack();
+        StartSurfaceTestUtils.pressBack(mActivityTestRule);
         onViewWaiting(withId(R.id.primary_tasks_surface_view));
 
         OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
@@ -453,39 +390,8 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testShow_SingleAsTabSwitcher() {
-        if (mImmediateReturn) {
-            StartSurfaceTestUtils.waitForOverviewVisible(
-                    mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-            StartSurfaceTestUtils.waitForTabModel(mActivityTestRule.getActivity());
-            if (isInstantReturn()) {
-                // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
-                // omnibox.
-                return;
-            }
-            // Single surface is shown as homepage. Clicks "more_tabs" button to get into tab
-            // switcher.
-            StartSurfaceTestUtils.clickMoreTabs(mActivityTestRule.getActivity());
-        } else {
-            TabUiTestHelper.enterTabSwitcher(mActivityTestRule.getActivity());
-        }
-
-        onViewWaiting(withId(R.id.secondary_tasks_surface_view));
-
-        OverviewModeBehaviorWatcher hideWatcher =
-                TabUiTestHelper.createOverviewHideWatcher(mActivityTestRule.getActivity());
-        onViewWaiting(allOf(withParent(withId(org.chromium.chrome.tab_ui.R.id.tasks_surface_body)),
-                              withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)))
-                .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
-        hideWatcher.waitForBehavior();
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
     // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     @DisableIf.
         Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
     public void testShow_SingleAsHomepage_FromResumeShowStart() throws Exception {
@@ -526,7 +432,7 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/omnibox_focused_on_new_tab/false"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/omnibox_focused_on_new_tab/false"})
     @DisableIf.
     Build(sdk_is_less_than = Build.VERSION_CODES.O, message = "Flaky, see crbug.com/1170673")
     public void testSearchInSingleSurface() {
@@ -558,7 +464,7 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     @DisabledTest(message = "http://crbug/1120698 - NoInstant_Return version is flaky on bots.")
     public void testSearchInIncognitoSingleSurface() {
         if (!mImmediateReturn) {
@@ -591,66 +497,9 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testTapMVTilesInSingleSurface() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        if (isInstantReturn()) {
-            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
-            // omnibox.
-            return;
-        }
-        // Press back button should close the tab opened from the Start surface.
-        OverviewModeBehaviorWatcher showWatcher = TabUiTestHelper.createOverviewShowWatcher(cta);
-        pressBack();
-        showWatcher.waitForBehavior();
-        assertThat(cta.getTabModelSelector().getCurrentModel().getCount(), equalTo(1));
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/omnibox_focused_on_new_tab/true"})
-    public void testFinale_webFeedLaunchOrigin_notFocusedOnOmnibox() throws ExecutionException {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        // Launches a new Tab, and verifies the omnibox is not focused.
-        TestThreadUtils.runOnUiThreadBlocking(
-                ()
-                        -> cta.getTabCreator(false).launchUrl(
-                                NewTabPageUtils.encodeNtpUrl(NewTabPageLaunchOrigin.WEB_FEED),
-                                TabLaunchType.FROM_CHROME_UI));
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        waitForView(withId(R.id.search_box_text));
-        TextView urlBar = cta.findViewById(R.id.url_bar);
-        CriteriaHelper.pollUiThread(
-                ()
-                        -> !StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
-                        && !urlBar.isFocused(),
-                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/open_ntp_instead_of_start/true"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/open_ntp_instead_of_start/true"})
     @FlakyTest(message = "https://crbug.com/1201548")
     public void testCreateNewTab_OpenNTPInsteadOfStart() {
-        // clang-format on
         ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         StartSurfaceTestUtils.waitForTabModel(cta);
         TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
@@ -677,11 +526,9 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    // clang-format off
     @DisabledTest(message = "https://crbug.com/1119322")
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/open_ntp_instead_of_start/true"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/open_ntp_instead_of_start/true"})
     public void testHomeButton_OpenNTPInsteadOfStart() {
-        // clang-format on
         ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         StartSurfaceTestUtils.waitForTabModel(cta);
         TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
@@ -720,7 +567,7 @@
             ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
             ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
     @CommandLineFlags.Add({
-            BASE_PARAMS + "/single/show_last_active_tab_only/true",
+            START_SURFACE_TEST_BASE_PARAMS + "/show_last_active_tab_only/true",
             // Disable feed placeholder animation because it causes waitForDeferredStartup() to time
             // out.
             FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH})
@@ -795,108 +642,7 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testShow_SingleAsHomepage_CloseAllTabsShouldHideTabSwitcher() {
-        // clang-format on
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        assertEquals(cta.findViewById(org.chromium.chrome.tab_ui.R.id.tab_switcher_title)
-                             .getVisibility(),
-                View.VISIBLE);
-
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> { cta.getTabModelSelector().getModel(false).closeAllTabs(); });
-        TabUiTestHelper.verifyTabModelTabCount(cta, 0, 0);
-        assertEquals(cta.findViewById(org.chromium.chrome.tab_ui.R.id.tab_switcher_title)
-                             .getVisibility(),
-                View.GONE);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface", "TabGroup"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    @EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID})
-    @FlakyTest(message = "https://crbug.com/1232695")
-    public void testCreateTabWithinTabGroup() throws Exception {
-        // Create tab state files for a group with two tabs.
-        TabUiTestHelper.finishActivity(mActivityTestRule.getActivity());
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(1);
-        TabAttributeCache.setRootIdForTesting(0, 0);
-        TabAttributeCache.setRootIdForTesting(1, 0);
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0, 1});
-
-        // Restart and open tab grid dialog.
-        mActivityTestRule.startMainActivityFromLauncher();
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        assertTrue(cta.getTabModelSelector().getTabModelFilterProvider().getCurrentTabModelFilter()
-                           instanceof TabGroupModelFilter);
-        TabGroupModelFilter filter = (TabGroupModelFilter) cta.getTabModelSelector()
-                                             .getTabModelFilterProvider()
-                                             .getTabModelFilter(false);
-        if (mImmediateReturn) {
-            StartSurfaceTestUtils.clickFirstTabInCarousel();
-        } else {
-            onViewWaiting(allOf(withId(org.chromium.chrome.tab_ui.R.id.toolbar_left_button),
-                                  isDescendantOfA(withId(R.id.bottom_controls))))
-                    .perform(click());
-        }
-        onViewWaiting(
-                allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
-                        withParent(withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view))))
-                .check(TabUiTestHelper.ChildrenCountAssertion.havingTabCount(2));
-
-        // Show start surface through tab grid dialog toolbar plus button and create a new tab by
-        // clicking on MV tiles.
-        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.toolbar_right_button),
-                       isDescendantOfA(
-                               withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view))))
-                .perform(click());
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 2);
-
-        // Verify a tab is created within the group by checking the tab strip and tab model.
-        onView(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))
-                .check(waitForView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
-                        isCompletelyDisplayed())));
-        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
-                       withParent(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))))
-                .check(TabUiTestHelper.ChildrenCountAssertion.havingTabCount(3));
-        assertEquals(1, filter.getTabGroupCount());
-
-        // Show start surface through tab strip plus button and create a new tab by perform a query
-        // search in fake box.
-        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.toolbar_right_button),
-                       isDescendantOfA(withId(org.chromium.chrome.tab_ui.R.id.bottom_controls))))
-                .perform(click());
-        onViewWaiting(withId(R.id.search_box_text))
-                .check(matches(isCompletelyDisplayed()))
-                .perform(replaceText("wfh tips"));
-        onView(withId(R.id.url_bar)).perform(pressKey(KeyEvent.KEYCODE_ENTER));
-
-        // Verify a tab is created within the group by checking the tab strip and tab model.
-        onView(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))
-                .check(waitForView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
-                        isCompletelyDisplayed())));
-        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view),
-                       withParent(withId(org.chromium.chrome.tab_ui.R.id.toolbar_container_view))))
-                .check(TabUiTestHelper.ChildrenCountAssertion.havingTabCount(4));
-        assertEquals(4, cta.getTabModelSelector().getCurrentModel().getCount());
-        assertEquals(1, filter.getTabGroupCount());
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     public void testShow_SingleAsHomepage_VoiceSearchButtonShown() {
         if (!mImmediateReturn) {
             StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
@@ -914,10 +660,8 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     public void testShow_SingleAsHomepage_BottomSheet() {
-        // clang-format on
         if (!mImmediateReturn) {
             StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
         }
@@ -964,10 +708,8 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     public void testShow_SingleAsHomepage_ResetScrollPosition() {
-        // clang-format on
         if (!mImmediateReturn) {
             StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
         }
@@ -1000,137 +742,7 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testShow_SingleAsHomepage_BackButton() {
-        // clang-format on
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-
-        // Case 1:
-        // Launches the first site in mv tiles, and press back button.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        pressBack();
-
-        CriteriaHelper.pollUiThread(() -> cta.getLayoutManager().overviewVisible());
-        // Verifies the new Tab is deleted.
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        // Case 2:
-        // Launches the first site in mv tiles, and press home button to return to the Start
-        // surface.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-        onViewWaiting(withId(R.id.primary_tasks_surface_view));
-        onView(allOf(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view), isDisplayed()));
-
-        // Launches the new tab from the carousel tab switcher, and press back button.
-        StartSurfaceTestUtils.clickTabInCarousel(/* position = */ 1);
-        Assert.assertEquals(TabLaunchType.FROM_START_SURFACE,
-                cta.getTabModelSelector().getCurrentTab().getLaunchType());
-        CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
-        pressBack();
-        onViewWaiting(withId(R.id.primary_tasks_surface_view));
-        // Verifies the tab isn't auto deleted from the TabModel.
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    @DisableIf.
-        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
-    public void testShow_SingleAsHomepage_BackButtonWithTabSwitcher() {
-        // clang-format on
-        singleAsHomepage_BackButtonWithTabSwitcher();
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/show_last_active_tab_only/true"})
-    @DisableIf.
-        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
-    public void testShow_SingleAsHomepageV2_BackButtonWithTabSwitcher() {
-        // clang-format on
-        singleAsHomepage_BackButtonWithTabSwitcher();
-    }
-
-    private void singleAsHomepage_BackButtonWithTabSwitcher() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        onViewWaiting(
-                allOf(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_container), isDisplayed()));
-
-        // Launches the first site in mv tiles.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-
-        if (isInstantReturn()
-                && (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
-                        && Build.VERSION.SDK_INT < Build.VERSION_CODES.O)) {
-            // Fix the issue that failed to perform a single click on the tab switcher button.
-            // See code below.
-            return;
-        }
-
-        // Enters the tab switcher, and choose the new tab. After the tab is opening, press back.
-        waitForView(withId(org.chromium.chrome.tab_ui.R.id.tab_switcher_button));
-        TabUiTestHelper.enterTabSwitcher(cta);
-        waitForView(withId(R.id.secondary_tasks_surface_view));
-        waitForView(withId(org.chromium.chrome.tab_ui.R.id.tab_list_view));
-        onView(allOf(withParent(withId(org.chromium.chrome.tab_ui.R.id.tasks_surface_body)),
-                       withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)))
-                .perform(RecyclerViewActions.actionOnItemAtPosition(1, click()));
-        CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
-        Assert.assertEquals(TabLaunchType.FROM_START_SURFACE,
-                cta.getTabModelSelector().getCurrentTab().getLaunchType());
-        TestThreadUtils.runOnUiThreadBlocking(
-                ()
-                        -> Assert.assertTrue(StartSurfaceUserData.getKeepTab(
-                                cta.getTabModelSelector().getCurrentTab())));
-
-        OverviewModeBehaviorWatcher overviewModeWatcher =
-                new OverviewModeBehaviorWatcher(cta.getLayoutManager(), true, false);
-        pressBack();
-        // Verifies the new Tab isn't deleted, and Start surface is shown.
-        overviewModeWatcher.waitForBehavior();
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-
-        // Verifies Chrome is closed.
-        try {
-            pressBack();
-        } catch (Exception e) {
-        } finally {
-            CriteriaHelper.pollUiThread(
-                    ()
-                            -> {
-                        return ActivityLifecycleMonitorRegistry.getInstance().getLifecycleStageOf(
-                                       cta)
-                                == Stage.STOPPED;
-                    },
-                    "Tapping back button should close Chrome.", MAX_TIMEOUT_MS,
-                    CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        }
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     public void singleAsHomepage_PressHomeButtonWillKeepTab() {
         if (!mImmediateReturn) {
             StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
@@ -1166,795 +778,9 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
     // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    @DisableIf.
-        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
-    public void testShow_SingleAsHomepage_BackButtonOnCarouselTabSwitcher() {
-        // clang-format on
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
-        onViewWaiting(withId(org.chromium.chrome.start_surface.R.id.search_box_text))
-                .perform(replaceText("about:blank"));
-        onView(withId(org.chromium.chrome.start_surface.R.id.url_bar))
-                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
-        hideWatcher.waitForBehavior();
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-
-        TabUiTestHelper.mergeAllNormalTabsToAGroup(cta);
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-        CriteriaHelper.pollUiThread(() -> cta.getLayoutManager().overviewVisible());
-
-        StartSurfaceTestUtils.clickFirstTabInCarousel();
-        onViewWaiting(allOf(
-                withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view), isDisplayed()));
-
-        pressBack();
-        waitForView(withId(org.chromium.chrome.tab_ui.R.id.dialog_container_view), VIEW_GONE);
-        onView(withId(R.id.primary_tasks_surface_view)).check(matches(isDisplayed()));
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testShow_SingleAsHomepage_BackButtonOnTabSwitcherWithDialogShowing() {
-        backButtonOnTabSwitcherWithDialogShowingImpl();
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/show_last_active_tab_only/true"})
-    public void testShow_SingleAsHomepageV2_BackButtonOnTabSwitcherWithDialogShowing() {
-        // clang-format on
-        backButtonOnTabSwitcherWithDialogShowingImpl();
-    }
-
-    private void backButtonOnTabSwitcherWithDialogShowingImpl() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        onViewWaiting(withId(R.id.logo));
-
-        // Launches the first site in mv tiles.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-
-        List<Tab> tabs = getTabsInCurrentTabModel(cta.getCurrentTabModel());
-        TabSelectionEditorTestingRobot robot = new TabSelectionEditorTestingRobot();
-
-        if (isInstantReturn()) {
-            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
-            // omnibox.
-            return;
-        }
-        onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.tab_switcher_button));
-        TabUiTestHelper.enterTabSwitcher(cta);
-
-        waitForView(withId(R.id.secondary_tasks_surface_view));
-        StartSurfaceCoordinator startSurfaceCoordinator =
-                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> startSurfaceCoordinator.showTabSelectionEditorForTesting(tabs));
-        robot.resultRobot.verifyTabSelectionEditorIsVisible()
-                .verifyToolbarActionButtonDisabled()
-                .verifyToolbarActionButtonWithResourceId(
-                        org.chromium.chrome.tab_ui.R.string.tab_selection_editor_group)
-                .verifyToolbarSelectionTextWithResourceId(
-                        org.chromium.chrome.tab_ui.R.string
-                                .tab_selection_editor_toolbar_select_tabs)
-                .verifyAdapterHasItemCount(tabs.size())
-                .verifyHasAtLeastNItemVisible(2);
-
-        // Verifies that tapping the back button will close the TabSelectionEditor.
-        pressBack();
-        robot.resultRobot.verifyTabSelectionEditorIsHidden();
-        onViewWaiting(withId(R.id.secondary_tasks_surface_view));
-
-        // Groups the two tabs.
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> startSurfaceCoordinator.showTabSelectionEditorForTesting(tabs));
-        robot.resultRobot.verifyToolbarActionButtonWithResourceId(
-                org.chromium.chrome.tab_ui.R.string.tab_selection_editor_group);
-        robot.actionRobot.clickItemAtAdapterPosition(0)
-                .clickItemAtAdapterPosition(1)
-                .clickToolbarActionButton();
-        robot.resultRobot.verifyTabSelectionEditorIsHidden();
-
-        // Opens the TabGridDialog by clicking the first group card.
-        onViewWaiting(Matchers.allOf(withParent(withId(
-                                             org.chromium.chrome.tab_ui.R.id.tasks_surface_body)),
-                              withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)))
-                .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
-        CriteriaHelper.pollUiThread(() -> isTabGridDialogShown(cta));
-
-        // Verifies that the TabGridDialog is closed by tapping back button.
-        pressBack();
-        CriteriaHelper.pollUiThread(() -> isTabGridDialogHidden(cta));
-        onViewWaiting(withId(R.id.secondary_tasks_surface_view));
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testShow_SingleAsHomepage_BackButtonOnHomepageWithGroupTabsDialog() {
-        backButtonOnHomepageWithGroupTabsDialogImpl();
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/show_last_active_tab_only/true"})
-    public void testShow_SingleAsHomepageV2_BackButtonOnHomepageWithGroupTabsDialog() {
-        // clang-format on
-        backButtonOnHomepageWithGroupTabsDialogImpl();
-    }
-
-    private void backButtonOnHomepageWithGroupTabsDialogImpl() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        onViewWaiting(withId(R.id.logo));
-
-        // Launches the first site in MV tiles to create the second tab for grouping.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-
-        // When show_last_active_tab_only is enabled, we need to enter the tab switcher first to
-        // initialize the secondary task surface which shows the TabSelectionEditor dialog.
-        onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.tab_switcher_button));
-        if (isInstantReturn()) {
-            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
-            // omnibox.
-            return;
-        }
-        TabUiTestHelper.enterTabSwitcher(cta);
-        waitForView(withId(R.id.secondary_tasks_surface_view));
-        List<Tab> tabs = getTabsInCurrentTabModel(cta.getCurrentTabModel());
-        TabSelectionEditorTestingRobot robot = new TabSelectionEditorTestingRobot();
-
-        // Enters the homepage, and shows the TabSelectionEditor dialog.
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-        waitForView(withId(R.id.primary_tasks_surface_view));
-
-        StartSurfaceCoordinator startSurfaceCoordinator =
-                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> startSurfaceCoordinator.showTabSelectionEditorForTesting(tabs));
-        robot.resultRobot.verifyTabSelectionEditorIsVisible()
-                .verifyToolbarActionButtonDisabled()
-                .verifyToolbarActionButtonWithResourceId(
-                        org.chromium.chrome.tab_ui.R.string.tab_selection_editor_group)
-                .verifyToolbarSelectionTextWithResourceId(
-                        org.chromium.chrome.tab_ui.R.string
-                                .tab_selection_editor_toolbar_select_tabs)
-                .verifyAdapterHasItemCount(tabs.size())
-                .verifyHasAtLeastNItemVisible(2);
-
-        // Verifies that tapping the back button will close the TabSelectionEditor.
-        pressBack();
-        robot.resultRobot.verifyTabSelectionEditorIsHidden();
-        onViewWaiting(withId(R.id.primary_tasks_surface_view));
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/omnibox_focused_on_new_tab/true"})
-    public void testOmnibox_FocusedOnNewTabInSingleSurface() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        // Launches a new Tab from the Start surface, and verifies the omnibox is focused.
-        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-        waitForView(withId(R.id.search_box_text));
-        TextView urlBar = cta.findViewById(R.id.url_bar);
-        CriteriaHelper.pollUiThread(
-                ()
-                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
-                        && urlBar.isFocused(),
-                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        waitForView(withId(R.id.voice_search_button));
-        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
-        assertEquals(cta.findViewById(R.id.toolbar_buttons).getVisibility(), View.INVISIBLE);
-        ToolbarDataProvider toolbarDataProvider =
-                cta.getToolbarManager().getLocationBarModelForTesting();
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
-        });
-
-        // Navigates the new created Tab.
-        TestThreadUtils.runOnUiThreadBlocking(() -> urlBar.setText("about:blank"));
-        onView(withId(R.id.url_bar)).perform(pressKey(KeyEvent.KEYCODE_ENTER));
-
-        // Launches a new Tab from the newly navigated tab, and verifies the omnibox is focused.
-        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
-        TabUiTestHelper.verifyTabModelTabCount(cta, 3, 0);
-        waitForView(withId(R.id.search_box_text));
-        CriteriaHelper.pollUiThread(
-                ()
-                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
-                        && urlBar.isFocused(),
-                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        waitForView(withId(R.id.voice_search_button));
-        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
-        });
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/show_last_active_tab_only/true" +
-            "/exclude_mv_tiles/true/omnibox_focused_on_new_tab/true"})
-    public void testOmnibox_FocusedOnNewTabInSingleSurfaceV2() {
-        // clang-format on
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        // Launches a new Tab from the Start surface, and verifies the omnibox is focused.
-        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-        waitForView(withId(R.id.search_box_text));
-        TextView urlBar = cta.findViewById(R.id.url_bar);
-        CriteriaHelper.pollUiThread(
-                ()
-                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
-                        && urlBar.isFocused(),
-                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        waitForView(withId(R.id.voice_search_button));
-        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
-        assertEquals(cta.findViewById(R.id.toolbar_buttons).getVisibility(), View.INVISIBLE);
-        ToolbarDataProvider toolbarDataProvider =
-                cta.getToolbarManager().getLocationBarModelForTesting();
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
-        });
-
-        // Navigates the new created Tab.
-        TestThreadUtils.runOnUiThreadBlocking(() -> urlBar.setText("about:blank"));
-        onView(withId(R.id.url_bar)).perform(pressKey(KeyEvent.KEYCODE_ENTER));
-
-        // Launches a new Tab from the newly navigated tab, and verifies the omnibox is focused.
-        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
-        TabUiTestHelper.verifyTabModelTabCount(cta, 3, 0);
-        waitForView(withId(R.id.search_box_text));
-        CriteriaHelper.pollUiThread(
-                ()
-                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
-                        && urlBar.isFocused(),
-                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        waitForView(withId(R.id.voice_search_button));
-        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
-        });
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/omnibox_focused_on_new_tab/true"})
-    public void testOmnibox_TabOpenedFromOmniboxShouldNotGetFocused() {
-        // clang-format on
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        onViewWaiting(allOf(withId(R.id.search_box_text), isDisplayed()))
-                .perform(replaceText("about:blank"));
-        onViewWaiting(withId(R.id.url_bar)).perform(pressKey(KeyEvent.KEYCODE_ENTER));
-        waitForView(withId(R.id.primary_tasks_surface_view), ViewUtils.VIEW_INVISIBLE);
-
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-        waitForView(withId(R.id.search_box_text));
-        waitForView(withId(R.id.toolbar_buttons));
-        TextView urlBar = cta.findViewById(R.id.url_bar);
-        Assert.assertFalse(urlBar.isFocused());
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/omnibox_focused_on_new_tab/true"})
-    public void testOmnibox_FocusedOnNewTabInSingleSurface_BackButtonDeleteBlankTab() {
-        // clang-format on
-        backActionDeleteBlankTabForOmniboxFocusedOnNewTabSingleSurface(this::pressBack);
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/omnibox_focused_on_new_tab/true"})
-    public void testOmnibox_FocusedOnNewTabInSingleSurface_BackGestureDeleteBlankTab() {
-        // clang-format on
-        backActionDeleteBlankTabForOmniboxFocusedOnNewTabSingleSurface(this::gestureNavigateBack);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/home_button_on_grid_tab_switcher/true"})
-    public void testHomeButtonOnTabSwitcher() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        StartSurfaceTestUtils.clickMoreTabs(cta);
-        waitForView(withId(R.id.secondary_tasks_surface_view));
-        onView(withId(org.chromium.chrome.tab_ui.R.id.home_button_on_tab_switcher))
-                .check(matches(isDisplayed()));
-        HomeButton homeButton =
-                cta.findViewById(org.chromium.chrome.tab_ui.R.id.home_button_on_tab_switcher);
-        Assert.assertFalse(homeButton.isLongClickable());
-        onView(withId(R.id.home_button_on_tab_switcher)).perform(click());
-
-        onView(withId(R.id.primary_tasks_surface_view)).check(matches(isDisplayed()));
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/exclude_mv_tiles/false"
-            + "/new_home_surface_from_home_button/hide_mv_tiles_and_tab_switcher"
-            + "/tab_count_button_on_start_surface/true"})
-    public void testNewSurfaceFromHomeButton(){
-        // clang-format on
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        if (mImmediateReturn) {
-            StartSurfaceTestUtils.waitForOverviewVisible(
-                    mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-
-            onViewWaiting(
-                    allOf(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout), isDisplayed()));
-            onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container));
-            onViewWaiting(withId(R.id.start_tab_switcher_button));
-
-            // Launch a tab. The home button should show on the normal tab.
-            StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        }
-
-        // Go back to the home surface, MV tiles and carousel tab switcher should not show anymore.
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-
-        // MV tiles and carousel tab switcher should not show anymore.
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        onViewWaiting(withId(R.id.start_tab_switcher_button));
-        onView(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_container))
-                .check(matches(withEffectiveVisibility(GONE)));
-        onView(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container))
-                .check(matches(withEffectiveVisibility(GONE)));
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/exclude_mv_tiles/false"
-            + "/new_home_surface_from_home_button/hide_tab_switcher_only"
-            + "/tab_count_button_on_start_surface/true"})
-    public void testNewSurfaceHideTabOnlyFromHomeButton() {
-        // clang-format on
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        if (mImmediateReturn) {
-            StartSurfaceTestUtils.waitForOverviewVisible(
-                    mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-
-            onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout));
-            onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container));
-            onViewWaiting(withId(R.id.start_tab_switcher_button));
-
-            // Launch a tab. The home button should show on the normal tab.
-            StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-            onViewWaiting(withId(R.id.home_button)).check(matches(isDisplayed()));
-        }
-
-        // Go back to the home surface, MV tiles and carousel tab switcher should not show anymore.
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-
-        // MV tiles should shown and carousel tab switcher should not show anymore.
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-        onViewWaiting(withId(R.id.start_tab_switcher_button));
-        onView(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout))
-                .check(matches(withEffectiveVisibility(VISIBLE)));
-        onView(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container))
-                .check(matches(withEffectiveVisibility(GONE)));
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/show_tabs_in_mru_order/true"})
-    public void test_CarouselTabSwitcherShowTabsInMRUOrder() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        CriteriaHelper.pollUiThread(
-                () -> cta.getLayoutManager() != null && cta.getLayoutManager().overviewVisible());
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        onViewWaiting(withId(R.id.logo));
-        Tab tab1 = cta.getCurrentTabModel().getTabAt(0);
-
-        // Launches the first site in MV tiles.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        Tab tab2 = cta.getActivityTab();
-        // Verifies that the titles of the two Tabs are different.
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> { Assert.assertNotEquals(tab1.getTitle(), tab2.getTitle()); });
-
-        // Returns to the Start surface.
-        OverviewModeBehaviorWatcher overviewModeWatcher =
-                new OverviewModeBehaviorWatcher(cta.getLayoutManager(), true, false);
-        StartSurfaceTestUtils.pressHomePageButton(cta);
-        overviewModeWatcher.waitForBehavior();
-        waitForView(allOf(
-                withParent(withId(org.chromium.chrome.tab_ui.R.id.carousel_tab_switcher_container)),
-                withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)));
-
-        RecyclerView recyclerView = cta.findViewById(org.chromium.chrome.tab_ui.R.id.tab_list_view);
-        assertEquals(2, recyclerView.getChildCount());
-        // Verifies that the tabs are shown in MRU order: the first card in the carousel Tab
-        // switcher is the last created Tab by tapping the MV tile; the second card is the Tab
-        // created or restored in setup().
-        RecyclerView.ViewHolder firstViewHolder = recyclerView.findViewHolderForAdapterPosition(0);
-        TextView title1 =
-                firstViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> Assert.assertEquals(tab2.getTitle(), title1.getText()));
-
-        RecyclerView.ViewHolder secondViewHolder = recyclerView.findViewHolderForAdapterPosition(1);
-        TextView title2 =
-                secondViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> Assert.assertEquals(tab1.getTitle(), title2.getText()));
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/show_tabs_in_mru_order/true"})
-    public void testShow_GridTabSwitcher_AlwaysShowTabsInCreationOrder() {
-        tabSwitcher_AlwaysShowTabsInGridTabSwitcherInCreationOrderImpl();
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
-    @EnableFeatures(ChromeFeatureList.TAB_GROUPS_ANDROID)
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS +
-        "/single/show_tabs_in_mru_order/true/show_last_active_tab_only/true"})
-    public void testShowV2_GridTabSwitcher_AlwaysShowTabsInCreationOrder() {
-        // clang-format on
-        tabSwitcher_AlwaysShowTabsInGridTabSwitcherInCreationOrderImpl();
-    }
-
-    private void tabSwitcher_AlwaysShowTabsInGridTabSwitcherInCreationOrderImpl() {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        CriteriaHelper.pollUiThread(
-                () -> cta.getLayoutManager() != null && cta.getLayoutManager().overviewVisible());
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        onViewWaiting(withId(R.id.logo));
-        Tab tab1 = cta.getCurrentTabModel().getTabAt(0);
-
-        // Launches the first site in MV tiles.
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        Tab tab2 = cta.getActivityTab();
-
-        // Verifies that the titles of the two Tabs are different.
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> { Assert.assertNotEquals(tab1.getTitle(), tab2.getTitle()); });
-
-        if (isInstantReturn()) {
-            // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar
-            // omnibox.
-            return;
-        }
-        // Enter the Tab switcher.
-        TabUiTestHelper.enterTabSwitcher(cta);
-        waitForView(allOf(withParent(withId(R.id.secondary_tasks_surface_view)),
-                withId(org.chromium.chrome.tab_ui.R.id.tab_list_view)));
-
-        ViewGroup secondaryTaskSurface = cta.findViewById(R.id.secondary_tasks_surface_view);
-        RecyclerView recyclerView =
-                secondaryTaskSurface.findViewById(org.chromium.chrome.tab_ui.R.id.tab_list_view);
-        assertEquals(2, recyclerView.getChildCount());
-        // Verifies that the tabs are shown in MRU order: the first card in the Tab switcher is the
-        // last created Tab by tapping the MV tile; the second card is the Tab created or restored
-        // in setup().
-        RecyclerView.ViewHolder firstViewHolder = recyclerView.findViewHolderForAdapterPosition(0);
-        TextView title1 =
-                firstViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> Assert.assertEquals(tab1.getTitle(), title1.getText()));
-
-        RecyclerView.ViewHolder secondViewHolder = recyclerView.findViewHolderForAdapterPosition(1);
-        TextView title2 =
-                secondViewHolder.itemView.findViewById(org.chromium.chrome.tab_ui.R.id.tab_title);
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> Assert.assertEquals(tab2.getTitle(), title2.getText()));
-    }
-
-    /* MV tiles context menu tests starts. */
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // Disable feed placeholder animation because it causes waitForSnackbar() to time out.
-    @CommandLineFlags.Add({BASE_PARAMS + "/single", FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH})
-    public void testDismissTileWithContextMenuAndUndo() throws Exception {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(mActivityTestRule.getActivity());
-
-        SiteSuggestion siteToDismiss = mMostVisitedSites.getCurrentSites().get(1);
-        final View tileView = getTileViewFor(siteToDismiss);
-
-        // Dismiss the tile using the context menu.
-        invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.REMOVE);
-        Assert.assertTrue(mMostVisitedSites.isUrlBlocklisted(siteToDismiss.url));
-
-        // Ensure that the removal is reflected in the ui.
-        Assert.assertEquals(8, getMvTilesLayout().getChildCount());
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> mMostVisitedSites.setTileSuggestions(getNewSitesAfterDismiss(siteToDismiss)));
-        waitForTileRemoved(siteToDismiss);
-        Assert.assertEquals(7, getMvTilesLayout().getChildCount());
-
-        // Undo the dismiss through snack bar.
-        final View snackbarButton = waitForSnackbar();
-        Assert.assertTrue(mMostVisitedSites.isUrlBlocklisted(siteToDismiss.url));
-        TestThreadUtils.runOnUiThreadBlocking((Runnable) snackbarButton::callOnClick);
-        Assert.assertFalse(mMostVisitedSites.isUrlBlocklisted(siteToDismiss.url));
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testOpenTileInNewTabWithContextMenu() throws ExecutionException {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-
-        SiteSuggestion siteToOpen = mMostVisitedSites.getCurrentSites().get(1);
-        final View tileView = getTileViewFor(siteToOpen);
-
-        // Open the tile using the context menu.
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.OPEN_IN_NEW_TAB);
-        // This tab should be opened in the background.
-        Assert.assertTrue(cta.getLayoutManager().overviewVisible());
-        // Verifies a new tab is created.
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testOpenTileInIncognitoTabWithContextMenu() throws ExecutionException {
-        Assume.assumeFalse("https://crbug.com/1210554", mUseInstantStart && mImmediateReturn);
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-
-        SiteSuggestion siteToOpen = mMostVisitedSites.getCurrentSites().get(1);
-        final View tileView = getTileViewFor(siteToOpen);
-
-        // Open the incognito tile using the context menu.
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-        OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(cta);
-        invokeContextMenu(tileView, ContextMenuManager.ContextMenuItemId.OPEN_IN_INCOGNITO_TAB);
-        hideWatcher.waitForBehavior();
-        CriteriaHelper.pollUiThread(() -> !cta.getLayoutManager().overviewVisible());
-        // Verifies a new incognito tab is created.
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 1);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    @DisableIf.
-        Build(sdk_is_less_than = Build.VERSION_CODES.N, message = "Flaky, see crbug.com/1246457")
-    public void testSwipeBackOnStartSurfaceHomePage() throws ExecutionException {
-        // clang-format on
-        // TODO(https://crbug.com/1093632): Requires 2 back press/gesture events now. Make this
-        // work with a single event.
-        Assume.assumeFalse(mImmediateReturn);
-        StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-
-        gestureNavigateBack();
-
-        // Back gesture on the start surface puts Chrome background.
-        ChromeApplicationTestUtils.waitUntilChromeInBackground();
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testSwipeBackOnTabOfLaunchTypeStartSurface() throws ExecutionException {
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        Assert.assertEquals("The launched tab should have the launch type FROM_START_SURFACE",
-                TabLaunchType.FROM_START_SURFACE,
-                cta.getActivityTabProvider().get().getLaunchType());
-
-        gestureNavigateBack();
-
-        // Back gesture on the tab should take us back to the start surface homepage.
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testCleanUpMVTilesAfterHiding() {
-        // clang-format on
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        StartSurfaceCoordinator startSurfaceCoordinator =
-                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertFalse(startSurfaceCoordinator.isMVTilesCleanedUpForTesting());
-        });
-
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        Assert.assertEquals("The launched tab should have the launch type FROM_START_SURFACE",
-                TabLaunchType.FROM_START_SURFACE,
-                cta.getActivityTabProvider().get().getLaunchType());
-
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertTrue(startSurfaceCoordinator.isMVTilesCleanedUpForTesting());
-        });
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testMVTilesInitialized() {
-        // clang-format on
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        StartSurfaceCoordinator startSurfaceCoordinator =
-                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
-
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertFalse(startSurfaceCoordinator.isMVTilesInitializedForTesting());
-        });
-
-        TabUiTestHelper.enterTabSwitcher(cta);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertTrue(startSurfaceCoordinator.isMVTilesInitializedForTesting());
-        });
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testDoNotInitializeSecondaryTasksSurfaceWithoutOpenGridTabSwitcher() {
-        // clang-format on
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        StartSurfaceCoordinator startSurfaceCoordinator =
-                StartSurfaceTestUtils.getStartSurfaceFromUIThread(cta);
-
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertTrue(startSurfaceCoordinator.isSecondaryTasksSurfaceEmptyForTesting());
-        });
-        StartSurfaceTestUtils.launchFirstMVTile(cta, /* currentTabCount = */ 1);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertTrue(startSurfaceCoordinator.isSecondaryTasksSurfaceEmptyForTesting());
-        });
-
-        TabUiTestHelper.enterTabSwitcher(cta);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertFalse(startSurfaceCoordinator.isSecondaryTasksSurfaceEmptyForTesting());
-        });
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/check_sync_before_show_start_at_startup/true"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS +
+        "/check_sync_before_show_start_at_startup/true"})
     public void testShowStartWithSyncCheck() throws Exception {
         // clang-format on
         ChromeTabbedActivity cta = mActivityTestRule.getActivity();
@@ -1978,7 +804,7 @@
     @MediumTest
     @Feature({"StartSurface"})
     // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     @DisableIf.Build(sdk_is_greater_than = VERSION_CODES.O_MR1, supported_abis_includes = "x86",
             message = "Flaky, see crbug.com/1258154")
     public void testNotShowIncognitoHomepage() {
@@ -2010,39 +836,7 @@
     @MediumTest
     @Feature({"StartSurface"})
     // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
-    public void testOpenRecentTabOnStartAndTapBackButtonReturnToStartSurface()
-        throws ExecutionException {
-        // clang-format on
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-
-        // Taps on the "Recent tabs" menu item.
-        MenuUtils.invokeCustomMenuActionSync(InstrumentationRegistry.getInstrumentation(), cta,
-                org.chromium.chrome.R.id.recent_tabs_menu_id);
-        Assert.assertEquals("The launched tab should have the launch type FROM_START_SURFACE",
-                TabLaunchType.FROM_START_SURFACE,
-                cta.getActivityTabProvider().get().getLaunchType());
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-
-        pressBack();
-
-        // Tap the back on the "Recent tabs" should take us back to the start surface homepage, and
-        // the Tab should be deleted.
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-    }
-
-    @Test
-    @MediumTest
-    @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/behavioural_targeting/model_mv_tiles"
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/behavioural_targeting/model_mv_tiles"
         + "/user_clicks_threshold/1/num_days_user_click_below_threshold/2"})
     public void testStartWithBehaviouralTargeting() throws Exception {
         // clang-format on
@@ -2167,10 +961,8 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single/behavioural_targeting/model"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS + "/behavioural_targeting/model"})
     public void testStartSegmentationUsage() throws Exception {
-        // clang-format on
         Assume.assumeTrue(mImmediateReturn);
         ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         StartSurfaceTestUtils.waitForTabModel(cta);
@@ -2234,10 +1026,8 @@
     @Test
     @MediumTest
     @Feature({"StartSurface"})
-    // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "/single"})
+    @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS})
     public void testStartSurfaceMenu() throws ExecutionException {
-        // clang-format on
         ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         if (!mImmediateReturn) StartSurfaceTestUtils.pressHomePageButton(cta);
         StartSurfaceTestUtils.waitForOverviewVisible(
@@ -2329,116 +1119,9 @@
         manager.writeBoolean(ChromePreferenceKeys.START_SHOW_ON_STARTUP, false);
     }
 
-    private void backActionDeleteBlankTabForOmniboxFocusedOnNewTabSingleSurface(
-            Runnable backAction) {
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForTabModel(cta);
-        assertThat(cta.getTabModelSelector().getCurrentModel().getCount(), equalTo(1));
-
-        // Launches a new Tab from the Start surface, and verifies the omnibox is focused.
-        TestThreadUtils.runOnUiThreadBlocking(() -> cta.getTabCreator(false).launchNTP());
-        TabUiTestHelper.verifyTabModelTabCount(cta, 2, 0);
-        waitForView(withId(R.id.search_box_text));
-        TextView urlBar = cta.findViewById(R.id.url_bar);
-        CriteriaHelper.pollUiThread(
-                ()
-                        -> StartSurfaceTestUtils.isKeyboardShown(mActivityTestRule)
-                        && urlBar.isFocused(),
-                MAX_TIMEOUT_MS, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
-        waitForView(withId(R.id.voice_search_button));
-        Assert.assertTrue(TextUtils.isEmpty(urlBar.getText()));
-        assertEquals(cta.findViewById(R.id.toolbar_buttons).getVisibility(), View.INVISIBLE);
-        ToolbarDataProvider toolbarDataProvider =
-                cta.getToolbarManager().getLocationBarModelForTesting();
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            assertTrue(TextUtils.equals(toolbarDataProvider.getCurrentUrl(), UrlConstants.NTP_URL));
-        });
-
-        backAction.run();
-
-        waitForView(withId(R.id.primary_tasks_surface_view));
-        TabUiTestHelper.verifyTabModelTabCount(cta, 1, 0);
-    }
-
-    private MvTilesLayout getMvTilesLayout() {
-        onViewWaiting(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout));
-        MvTilesLayout mvTilesLayout = mActivityTestRule.getActivity().findViewById(
-                org.chromium.chrome.tab_ui.R.id.mv_tiles_layout);
-        Assert.assertNotNull("Unable to retrieve the MvTilesLayout.", mvTilesLayout);
-        return mvTilesLayout;
-    }
-
-    private View getTileViewFor(SiteSuggestion suggestion) {
-        onViewWaiting(
-                allOf(withId(org.chromium.chrome.tab_ui.R.id.mv_tiles_layout), isDisplayed()));
-        View tileView = getMvTilesLayout().getTileViewForTesting(suggestion);
-        Assert.assertNotNull("Tile not found for suggestion " + suggestion.url, tileView);
-
-        return tileView;
-    }
-
-    private List<SiteSuggestion> getNewSitesAfterDismiss(SiteSuggestion siteToDismiss) {
-        List<SiteSuggestion> newSites = new ArrayList<>();
-        for (SiteSuggestion site : mMostVisitedSites.getCurrentSites()) {
-            if (!site.url.equals(siteToDismiss.url)) {
-                newSites.add(site);
-            }
-        }
-        return newSites;
-    }
-
-    private void invokeContextMenu(View view, int contextMenuItemId) throws ExecutionException {
-        TestTouchUtils.performLongClickOnMainSync(
-                InstrumentationRegistry.getInstrumentation(), view);
-        Assert.assertTrue(InstrumentationRegistry.getInstrumentation().invokeContextMenuAction(
-                mActivityTestRule.getActivity(), contextMenuItemId, 0));
-    }
-
-    private void waitForTileRemoved(final SiteSuggestion suggestion) throws TimeoutException {
-        MvTilesLayout mvTilesLayout = getMvTilesLayout();
-        final SuggestionsTileView removedTile = mvTilesLayout.getTileViewForTesting(suggestion);
-        if (removedTile == null) return;
-
-        final CallbackHelper callback = new CallbackHelper();
-        mvTilesLayout.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
-            @Override
-            public void onChildViewAdded(View parent, View child) {}
-
-            @Override
-            public void onChildViewRemoved(View parent, View child) {
-                if (child == removedTile) callback.notifyCalled();
-            }
-        });
-        callback.waitForCallback("The expected tile was not removed.", 0);
-        mvTilesLayout.setOnHierarchyChangeListener(null);
-    }
-
-    /** Wait for the snackbar associated to a tile dismissal to be shown and returns its button. */
-    private View waitForSnackbar() {
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        final String expectedSnackbarMessage =
-                cta.getResources().getString(R.string.most_visited_item_removed);
-        CriteriaHelper.pollUiThread(() -> {
-            SnackbarManager snackbarManager = cta.getSnackbarManager();
-            Criteria.checkThat(snackbarManager.isShowing(), Matchers.is(true));
-            TextView snackbarMessage = cta.findViewById(R.id.snackbar_message);
-            Criteria.checkThat(snackbarMessage, Matchers.notNullValue());
-            Criteria.checkThat(
-                    snackbarMessage.getText().toString(), Matchers.is(expectedSnackbarMessage));
-        });
-
-        return cta.findViewById(R.id.snackbar_button);
-    }
-    /* MV tiles context menu tests ends. */
-
     /**
-     * @return Whether both features {@link ChromeFeatureList.InstantStart} and
-     * {@link ChromeFeatureList.TAB_SWITCHER_ON_RETURN} are enabled.
+     * @return Whether both features {@link ChromeFeatureList#INSTANT_START} and
+     * {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} are enabled.
      */
     private boolean isInstantReturn() {
         return mUseInstantStart && mImmediateReturn;
@@ -2449,34 +1132,4 @@
         device.pressHome();
         ChromeApplicationTestUtils.waitUntilChromeInBackground();
     }
-
-    private void pressBack() {
-        // ChromeTabbedActivity expects the native libraries to be loaded when back is pressed.
-        mActivityTestRule.waitForActivityNativeInitializationComplete();
-        TestThreadUtils.runOnUiThreadBlocking(
-                () -> mActivityTestRule.getActivity().onBackPressed());
-    }
-
-    private void gestureNavigateBack() {
-        GestureNavigationUtils navUtils = new GestureNavigationUtils(mActivityTestRule);
-        navUtils.swipeFromLeftEdge();
-    }
-
-    private List<Tab> getTabsInCurrentTabModel(TabModel currentTabModel) {
-        List<Tab> tabs = new ArrayList<>();
-        for (int i = 0; i < currentTabModel.getCount(); i++) {
-            tabs.add(currentTabModel.getTabAt(i));
-        }
-        return tabs;
-    }
-
-    private boolean isTabGridDialogShown(ChromeTabbedActivity cta) {
-        View dialogView = cta.findViewById(org.chromium.chrome.tab_ui.R.id.dialog_parent_view);
-        return dialogView.getVisibility() == View.VISIBLE && dialogView.getAlpha() == 1f;
-    }
-
-    private boolean isTabGridDialogHidden(ChromeTabbedActivity cta) {
-        View dialogView = cta.findViewById(org.chromium.chrome.tab_ui.R.id.dialog_parent_view);
-        return dialogView.getVisibility() == View.GONE;
-    }
 }
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java
index 80f2f39e..7adcf7f6 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java
@@ -14,9 +14,13 @@
 
 import static org.hamcrest.CoreMatchers.allOf;
 import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import static org.chromium.chrome.browser.tabmodel.TestTabModelDirectory.M26_GOOGLE_COM;
+import static org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS;
 import static org.chromium.ui.test.util.ViewUtils.onViewWaiting;
 
 import android.app.Activity;
@@ -36,11 +40,18 @@
 import org.hamcrest.Matcher;
 import org.junit.Assert;
 
+import org.chromium.base.CommandLine;
+import org.chromium.base.NativeLibraryLoadedStatus;
 import org.chromium.base.StreamUtil;
+import org.chromium.base.library_loader.LibraryLoader;
+import org.chromium.base.test.params.ParameterSet;
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.gesturenav.GestureNavigationUtils;
 import org.chromium.chrome.browser.layouts.LayoutType;
 import org.chromium.chrome.browser.suggestions.SiteSuggestion;
 import org.chromium.chrome.browser.suggestions.tile.TileSectionType;
@@ -51,11 +62,14 @@
 import org.chromium.chrome.browser.tabmodel.TabbedModeTabPersistencePolicy;
 import org.chromium.chrome.browser.tabpersistence.TabStateDirectory;
 import org.chromium.chrome.browser.tabpersistence.TabStateFileManager;
+import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
 import org.chromium.chrome.browser.tasks.pseudotab.PseudoTab;
+import org.chromium.chrome.browser.tasks.pseudotab.TabAttributeCache;
 import org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper;
 import org.chromium.chrome.browser.toolbar.top.ToolbarPhone;
 import org.chromium.chrome.start_surface.R;
 import org.chromium.chrome.test.ChromeActivityTestRule;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher;
 import org.chromium.chrome.test.util.browser.suggestions.SuggestionsDependenciesRule;
 import org.chromium.chrome.test.util.browser.suggestions.mostvisited.FakeMostVisitedSites;
@@ -68,6 +82,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
@@ -78,12 +93,66 @@
  * Utility methods and classes for testing Start Surface.
  */
 public class StartSurfaceTestUtils {
+    public static final String INSTANT_START_TEST_BASE_PARAMS =
+            "force-fieldtrial-params=Study.Group:"
+            + ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS_PARAM + "/0"
+            + "/start_surface_variation/single";
+    public static final String START_SURFACE_TEST_BASE_PARAMS =
+            "force-fieldtrial-params=Study.Group:start_surface_variation/single";
+    public static List<ParameterSet> sClassParamsForStartSurfaceTest =
+            Arrays.asList(new ParameterSet().value(false, false).name("NoInstant_NoReturn"),
+                    new ParameterSet().value(true, false).name("Instant_NoReturn"),
+                    new ParameterSet().value(false, true).name("NoInstant_Return"),
+                    new ParameterSet().value(true, true).name("Instant_Return"));
+
     private static final long MAX_TIMEOUT_MS = 30000L;
 
     /**
+     * Set up StartSurfaceTest* based on whether it's immediateReturn or not.
+     * @param immediateReturn Whether feature {@link ChromeFeatureList#TAB_SWITCHER_ON_RETURN} is
+     *                        enabled as "immediately". When immediate return is enabled, the Start
+     *                        surface is showing when Chrome is launched.
+     * @param activityTestRule The test rule of activity under test.
+     */
+    public static void setUpStartSurfaceTests(boolean immediateReturn,
+            ChromeTabbedActivityTestRule activityTestRule) throws IOException {
+        int expectedTabs = 1;
+        int additionalTabs = expectedTabs - (immediateReturn ? 0 : 1);
+        if (additionalTabs > 0) {
+            int[] tabIDs = new int[additionalTabs];
+            for (int i = 0; i < additionalTabs; i++) {
+                tabIDs[i] = i;
+                createThumbnailBitmapAndWriteToFile(i);
+            }
+            createTabStateFile(tabIDs);
+        }
+        if (immediateReturn) {
+            TAB_SWITCHER_ON_RETURN_MS.setForTesting(0);
+            assertEquals(0, ReturnToChromeExperimentsUtil.TAB_SWITCHER_ON_RETURN_MS.getValue());
+            assertTrue(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
+
+            // Need to start main activity from launcher for immediate return to be effective.
+            // However, need at least one tab for carousel to show, which starting main activity
+            // from launcher doesn't provide.
+            // Creating tabs and restart the activity would do the trick, but we cannot do that for
+            // Instant start because we cannot unload native library.
+            // Create fake TabState files to emulate having one tab in previous session.
+            TabAttributeCache.setTitleForTesting(0, "tab title");
+            startMainActivityFromLauncher(activityTestRule);
+        } else {
+            assertFalse(ReturnToChromeExperimentsUtil.shouldShowTabSwitcher(-1));
+            // Cannot use StartSurfaceTestUtils.startMainActivityFromLauncher().
+            // Otherwise tab switcher could be shown immediately if single-pane is enabled.
+            activityTestRule.startMainActivityOnBlankPage();
+            onViewWaiting(withId(R.id.home_button));
+        }
+    }
+
+    /**
      * Only launch Chrome without waiting for a current tab.
-     * This method could not use {@link ChromeActivityTestRule#startMainActivityFromLauncher()}
-     * because of its {@link org.chromium.chrome.browser.tab.Tab} dependency.
+     * This method could not use {@link
+     * ChromeTabbedActivityTestRule#startMainActivityFromLauncher()} because of its {@link
+     * org.chromium.chrome.browser.tab.Tab} dependency.
      */
     public static void startMainActivityFromLauncher(ChromeActivityTestRule activityTestRule) {
         Intent intent = new Intent(Intent.ACTION_MAIN);
@@ -92,6 +161,23 @@
         activityTestRule.launchActivity(intent);
     }
 
+    public static void startAndWaitNativeInitialization(
+            ChromeTabbedActivityTestRule activityTestRule) {
+        Assert.assertTrue(NativeLibraryLoadedStatus.getProviderForTesting() == null
+                || !NativeLibraryLoadedStatus.getProviderForTesting()
+                            .areMainDexNativeMethodsReady());
+
+        CommandLine.getInstance().removeSwitch(ChromeSwitches.DISABLE_NATIVE_INITIALIZATION);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> activityTestRule.getActivity().startDelayedNativeInitializationForTests());
+        CriteriaHelper.pollUiThread(
+                activityTestRule.getActivity().getTabModelSelector()::isTabStateInitialized, 10000L,
+                CriteriaHelper.DEFAULT_POLLING_INTERVAL);
+        Assert.assertTrue(LibraryLoader.getInstance().isInitialized());
+        ChromeTabbedActivity cta = activityTestRule.getActivity();
+        StartSurfaceTestUtils.waitForOverviewVisible(cta);
+    }
+
     /**
      * Wait for the start surface homepage or tab switcher page visible.
      * @param cta The ChromeTabbedActivity under test.
@@ -274,6 +360,25 @@
     }
 
     /**
+     * Simulate pressing the back button.
+     * @param activityTestRule The ChromeTabbedActivityTestRule under test.
+     */
+    public static void pressBack(ChromeTabbedActivityTestRule activityTestRule) {
+        // ChromeTabbedActivity expects the native libraries to be loaded when back is pressed.
+        activityTestRule.waitForActivityNativeInitializationComplete();
+        TestThreadUtils.runOnUiThreadBlocking(() -> activityTestRule.getActivity().onBackPressed());
+    }
+
+    /**
+     * Perform gesture navigate back action.
+     * @param activityTestRule The ChromeTabbedActivityTestRule under test.
+     */
+    public static void gestureNavigateBack(ChromeTabbedActivityTestRule activityTestRule) {
+        GestureNavigationUtils navUtils = new GestureNavigationUtils(activityTestRule);
+        navUtils.swipeFromLeftEdge();
+    }
+
+    /**
      * Click the first MV tile (Explore tile) in mv_tiles_layout.
      * @param cta The ChromeTabbedActivity under test.
      * @param currentTabCount The correct number of normal tabs.
diff --git a/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni b/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni
index a37f753..c8326b0 100644
--- a/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni
+++ b/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni
@@ -5,11 +5,19 @@
 start_surface_test_java_sources = [
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/BottomBarViewBinderTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/ExploreSurfaceViewBinderTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartFeedTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartNewTabFromLauncherTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartToolbarTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinderTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutPerfTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/TasksSurfaceViewBinderTest.java",
diff --git a/chrome/android/java/res/values-night/drawables.xml b/chrome/android/java/res/values-night/drawables.xml
index 25bfe05..fdc0eb2 100644
--- a/chrome/android/java/res/values-night/drawables.xml
+++ b/chrome/android/java/res/values-night/drawables.xml
@@ -3,7 +3,5 @@
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 <resources>
-    <drawable name="badge_update">@drawable/badge_update_light</drawable>
-    <drawable name="ic_error_24dp_filled">@drawable/ic_error_white_24dp_filled</drawable>
     <drawable name="shared_clipboard_zero_state">@drawable/shared_clipboard_zero_state_dark</drawable>
 </resources>
diff --git a/chrome/android/java/res/values/drawables.xml b/chrome/android/java/res/values/drawables.xml
index 8569b73..1eb1c4a 100644
--- a/chrome/android/java/res/values/drawables.xml
+++ b/chrome/android/java/res/values/drawables.xml
@@ -6,7 +6,5 @@
 <resources>
     <drawable name="account_picker_background">@drawable/rounded_rectangle_surface_1</drawable>
     <drawable name="ntp_search_box">@drawable/modern_toolbar_text_box_background</drawable>
-    <drawable name="badge_update">@drawable/badge_update_dark</drawable>
-    <drawable name="ic_error_24dp_filled">@drawable/ic_error_grey800_24dp_filled</drawable>
     <drawable name="shared_clipboard_zero_state">@drawable/shared_clipboard_zero_state_light</drawable>
 </resources>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java
index 956348aa..7e18265 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java
@@ -11,8 +11,6 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
 import android.text.TextUtils;
 
 import androidx.annotation.Nullable;
@@ -20,7 +18,6 @@
 import androidx.browser.trusted.TrustedWebActivityDisplayMode.ImmersiveMode;
 
 import org.chromium.base.ContextUtils;
-import org.chromium.base.PackageManagerUtils;
 import org.chromium.base.supplier.Supplier;
 import org.chromium.blink.mojom.DisplayMode;
 import org.chromium.cc.input.BrowserControlsState;
@@ -120,23 +117,6 @@
                 Intent intent, boolean proxy) {
             // Note: This method will not be called if shouldDisableExternalIntentRequestsForUrl()
             // returns false.
-
-            // TODO(https://crbug.com/1194706): This should probably be using intent#getData
-            // instead.
-            boolean isExternalProtocol = !UrlUtilities.isAcceptedScheme(intent.toUri(0));
-            boolean hasDefaultHandler = hasDefaultHandler(intent);
-            // For a URL chrome can handle and there is no default set, handle it ourselves.
-            if (!hasDefaultHandler) {
-                if (!TextUtils.isEmpty(mClientPackageName)
-                        && isPackageSpecializedHandler(mClientPackageName, intent)) {
-                    // Package and Selector cannot be set at the same time.
-                    intent.setSelector(null);
-                    intent.setPackage(mClientPackageName);
-                } else if (!isExternalProtocol) {
-                    return StartActivityIfNeededResult.HANDLED_WITHOUT_ACTIVITY_START;
-                }
-            }
-
             if (proxy) {
                 dispatchAuthenticatedIntent(intent);
                 mHasActivityStarted = true;
@@ -147,19 +127,22 @@
             }
         }
 
-        /**
-         * Resolve the default external handler of an intent.
-         * @return Whether the default external handler is found: if chrome turns out to be the
-         *         default handler, this method will return false.
-         */
-        private boolean hasDefaultHandler(Intent intent) {
-            ResolveInfo info =
-                    PackageManagerUtils.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
-            if (info == null) return false;
+        @Override
+        public boolean maybeSetTargetPackage(Intent intent) {
+            // If the client app can handle the intent, set it as the receiver.
+            if (!TextUtils.isEmpty(mClientPackageName)
+                    && isPackageSpecializedHandler(mClientPackageName, intent)) {
+                intent.setSelector(null);
+                intent.setPackage(mClientPackageName);
+                return true;
+            }
+            return false;
+        }
 
-            final String chromePackage = mApplicationContext.getPackageName();
-            // If a default handler is found and it is not chrome itself, fire the intent.
-            return info.match != 0 && !chromePackage.equals(info.activityInfo.packageName);
+        @Override
+        public boolean shouldAvoidDisambiguationDialog(Intent intent) {
+            // Don't show the disambiguation dialog if Chrome could handle the intent.
+            return UrlUtilities.isAcceptedScheme(intent.toUri(0));
         }
 
         @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
index fd1228b0..545c9e2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
@@ -38,7 +38,6 @@
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.tabmodel.TabModelSelectorSupplier;
 import org.chromium.components.external_intents.ExternalNavigationDelegate;
-import org.chromium.components.external_intents.ExternalNavigationDelegate.StartActivityIfNeededResult;
 import org.chromium.components.external_intents.ExternalNavigationHandler;
 import org.chromium.components.external_intents.ExternalNavigationParams;
 import org.chromium.components.external_intents.RedirectHandler;
@@ -350,4 +349,14 @@
                 && CachedFeatureFlags.isEnabled(
                         ChromeFeatureList.WEB_APK_TRAMPOLINE_ON_INITIAL_INTENT);
     }
+
+    @Override
+    public boolean maybeSetTargetPackage(Intent intent) {
+        return false;
+    }
+
+    @Override
+    public boolean shouldAvoidDisambiguationDialog(Intent intent) {
+        return false;
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
index 3f4fb8a6..0a3da97 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
@@ -229,6 +229,7 @@
                             R.string.accessibility_toolbar_btn_menu_update;
                     mMenuUiState.buttonState.darkBadgeIcon = R.drawable.badge_update_dark;
                     mMenuUiState.buttonState.lightBadgeIcon = R.drawable.badge_update_light;
+                    mMenuUiState.buttonState.adaptiveBadgeIcon = R.drawable.badge_update;
                 }
 
                 mMenuUiState.itemState = new MenuItemState();
@@ -258,6 +259,7 @@
                     mMenuUiState.buttonState.darkBadgeIcon =
                             R.drawable.ic_error_grey800_24dp_filled;
                     mMenuUiState.buttonState.lightBadgeIcon = R.drawable.ic_error_white_24dp_filled;
+                    mMenuUiState.buttonState.adaptiveBadgeIcon = R.drawable.ic_error_24dp_filled;
                 }
 
                 mMenuUiState.itemState = new MenuItemState();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java
index 6fd4d81..f807dc75 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java
@@ -123,14 +123,14 @@
     }
 
     @Override
-    public boolean isMetricsReportingManaged() {
-        return PrivacyPreferencesManagerImplJni.get().isMetricsReportingManaged();
+    public boolean isMetricsReportingDisabledByPolicy() {
+        return PrivacyPreferencesManagerImplJni.get().isMetricsReportingDisabledByPolicy();
     }
 
     @NativeMethods
     public interface Natives {
         boolean isMetricsReportingEnabled();
         void setMetricsReportingEnabled(boolean enabled);
-        boolean isMetricsReportingManaged();
+        boolean isMetricsReportingDisabledByPolicy();
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java
index 40f8e75..af92cb9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java
@@ -222,7 +222,9 @@
         mSearchSuggestions.setChecked(mPrefService.getBoolean(Pref.SEARCH_SUGGEST_ENABLED));
 
         mUsageAndCrashReporting.setChecked(
-                mPrivacyPrefManager.isUsageAndCrashReportingPermittedByUser());
+                mPrivacyPrefManager.isUsageAndCrashReportingPermittedByUser()
+                && !mPrivacyPrefManager.isMetricsReportingDisabledByPolicy());
+
         mUrlKeyedAnonymizedData.setChecked(
                 UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionEnabled(
                         Profile.getLastUsedRegularProfile()));
@@ -248,7 +250,8 @@
                 return mPrefService.isManagedPreference(Pref.SEARCH_SUGGEST_ENABLED);
             }
             if (PREF_USAGE_AND_CRASH_REPORTING.equals(key)) {
-                return PrivacyPreferencesManagerImpl.getInstance().isMetricsReportingManaged();
+                return PrivacyPreferencesManagerImpl.getInstance()
+                        .isMetricsReportingDisabledByPolicy();
             }
             if (PREF_URL_KEYED_ANONYMIZED_DATA.equals(key)) {
                 return UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionManaged(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/AppThemeColorProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/AppThemeColorProvider.java
index 56f14422..f0d145cd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/AppThemeColorProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/AppThemeColorProvider.java
@@ -5,12 +5,15 @@
 package org.chromium.chrome.browser.toolbar;
 
 import android.content.Context;
+import android.content.res.ColorStateList;
 
 import org.chromium.chrome.browser.layouts.LayoutStateProvider;
 import org.chromium.chrome.browser.layouts.LayoutType;
 import org.chromium.chrome.browser.tabmodel.IncognitoStateProvider;
 import org.chromium.chrome.browser.tabmodel.IncognitoStateProvider.IncognitoStateObserver;
 import org.chromium.chrome.browser.theme.ThemeColorProvider;
+import org.chromium.chrome.browser.theme.ThemeUtils;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.components.browser_ui.styles.ChromeColors;
 
 /** A ThemeColorProvider for the app theme (incognito or standard theming). */
@@ -91,6 +94,12 @@
         updatePrimaryColor(
                 shouldUseIncognitoBackground ? mIncognitoPrimaryColor : mStandardPrimaryColor,
                 false);
+        final @BrandedColorScheme int brandedColorScheme = shouldUseIncognitoBackground
+                ? BrandedColorScheme.INCOGNITO
+                : BrandedColorScheme.APP_DEFAULT;
+        final ColorStateList iconTint =
+                ThemeUtils.getThemedToolbarIconTint(mActivityContext, brandedColorScheme);
+        updateTint(iconTint, brandedColorScheme);
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
index 1be1aae..544e29e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -138,6 +138,7 @@
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.ui.system.StatusBarColorController;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.chrome.browser.user_education.UserEducationHelper;
 import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
 import org.chromium.chrome.browser.vr.VrModuleProvider;
@@ -1656,8 +1657,9 @@
     }
 
     @Override
-    public void onTintChanged(ColorStateList tint, boolean useLight) {
+    public void onTintChanged(ColorStateList tint, @BrandedColorScheme int brandedColorScheme) {
         updateBookmarkButtonStatus();
+        mCustomTabThemeColorProvider.setTint(tint, brandedColorScheme);
     }
 
     /**
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
index 655f1d5..3bd461e 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
@@ -116,6 +116,7 @@
 import org.chromium.chrome.browser.toolbar.menu_button.MenuButton;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinator;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.chrome.test.ChromeActivityTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.util.ChromeTabUtils;
@@ -418,8 +419,10 @@
         }
 
         MenuButton menuButtonView = toolbarView.findViewById(R.id.menu_button_wrapper);
-        assertEquals(menuButtonView.getUseLightDrawablesForTesting(),
-                ColorUtils.shouldUseLightForegroundOnBackground(expectedColor));
+        assertEquals(ColorUtils.shouldUseLightForegroundOnBackground(expectedColor)
+                        ? BrandedColorScheme.DARK_BRANDED_THEME
+                        : BrandedColorScheme.LIGHT_BRANDED_THEME,
+                menuButtonView.getBrandedColorSchemeForTesting());
     }
 
     /**
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java
index 26f5336..f157a28d 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java
@@ -15,7 +15,7 @@
 import static org.hamcrest.CoreMatchers.allOf;
 import static org.hamcrest.Matchers.not;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doReturn;
 
@@ -205,7 +205,7 @@
             };
             doAnswer(logoAnswer)
                     .when(mSearchEngineLogoUtils)
-                    .getSearchEngineLogo(any(), anyBoolean(), any(), any(), any());
+                    .getSearchEngineLogo(any(), anyInt(), any(), any(), any());
         });
     }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java
index 6052c7d..36aafff6 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java
@@ -48,6 +48,7 @@
 import org.chromium.chrome.browser.omnibox.status.StatusProperties.StatusIconResource;
 import org.chromium.chrome.browser.omnibox.status.StatusView.IconTransitionType;
 import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.components.embedder_support.util.UrlConstants;
@@ -130,7 +131,7 @@
         doAnswer(logoAnswer)
                 .when(mSearchEngineLogoUtils)
                 .getSearchEngineLogo(
-                        eq(mResources), /* inNightMode= */ eq(false), any(), any(), any());
+                        eq(mResources), eq(BrandedColorScheme.APP_DEFAULT), any(), any(), any());
 
         mBitmap = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888);
         setupStatusMediator(/* isTablet= */ false);
@@ -434,21 +435,21 @@
         Assert.assertEquals("Incorrect color for paint preview status text",
                 R.color.locationbar_status_preview_color_light,
                 mModel.get(StatusProperties.VERBOSE_STATUS_TEXT_COLOR_RES));
-        mMediator.setUseDarkColors(true);
+        mMediator.setBrandedColorScheme(BrandedColorScheme.LIGHT_BRANDED_THEME);
         Assert.assertEquals("Incorrect color for paint preview status text",
                 R.color.locationbar_status_preview_color,
                 mModel.get(StatusProperties.VERBOSE_STATUS_TEXT_COLOR_RES));
 
         // When only offline is enabled, it should be shown.
         mMediator.setPageIsPaintPreview(false);
-        mMediator.setUseDarkColors(false);
+        mMediator.setBrandedColorScheme(BrandedColorScheme.DARK_BRANDED_THEME);
         Assert.assertEquals("Incorrect text for offline page status text",
                 R.string.location_bar_verbose_status_offline,
                 mModel.get(StatusProperties.VERBOSE_STATUS_TEXT_STRING_RES));
         Assert.assertEquals("Incorrect color for offline page status text",
                 R.color.locationbar_status_offline_color_light,
                 mModel.get(StatusProperties.VERBOSE_STATUS_TEXT_COLOR_RES));
-        mMediator.setUseDarkColors(true);
+        mMediator.setBrandedColorScheme(BrandedColorScheme.LIGHT_BRANDED_THEME);
         Assert.assertEquals("Incorrect color for offline page status text",
                 R.color.locationbar_status_offline_color,
                 mModel.get(StatusProperties.VERBOSE_STATUS_TEXT_COLOR_RES));
@@ -467,7 +468,7 @@
         mMediator.onTemplateURLServiceChanged();
         verify(mSearchEngineLogoUtils, times(3))
                 .getSearchEngineLogo(
-                        eq(mResources), /* inNightMode= */ eq(false), any(), any(), any());
+                        eq(mResources), eq(BrandedColorScheme.APP_DEFAULT), any(), any(), any());
     }
 
     @Test
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java
index adf71d2..f5806765 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.customtabs;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -28,6 +29,7 @@
 import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.toolbar.menu_button.MenuButton;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.ui.display.DisplayAndroidManager;
 
 /**
@@ -70,7 +72,8 @@
             assertTrue(activity.getNightModeStateProviderForTesting().isInNightMode());
 
             MenuButton menuButtonView = activity.findViewById(R.id.menu_button_wrapper);
-            assertTrue(menuButtonView.getUseLightDrawablesForTesting());
+            assertEquals(BrandedColorScheme.APP_DEFAULT,
+                    menuButtonView.getBrandedColorSchemeForTesting());
         });
     }
 
@@ -85,7 +88,8 @@
             assertFalse(activity.getNightModeStateProviderForTesting().isInNightMode());
 
             MenuButton menuButtonView = activity.findViewById(R.id.menu_button_wrapper);
-            assertFalse(menuButtonView.getUseLightDrawablesForTesting());
+            assertEquals(BrandedColorScheme.APP_DEFAULT,
+                    menuButtonView.getBrandedColorSchemeForTesting());
         });
     }
 
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index e56e458..748a5b1 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -10553,6 +10553,15 @@
         <message name="IDS_APP_LIST_CONTEXT_MENU_PIN_ENFORCED_BY_POLICY" desc="Short text for the pin/unpin context menu to tell user the setting is enforced by policy of an app list item">
           Pinned by administrator
         </message>
+        <message name="IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE" desc="Text for an option shown in a context menu for app items in the Chrome OS app list that allows users to reorder items in the app list. Clicking the option opens a submenu in which the user can choose how the items in the app list should be ordered (e.g. by name or the icon color).">
+          Reorder by
+        </message>
+        <message name="IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_NAME" desc="Text for an option shown in a context menu for app items in the Chrome OS app list that allows users to reorder items by their names in the app list. This option is under the 'Reorder by' submenu">
+          Name
+        </message>
+        <message name="IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_COLOR" desc="Text for an option shown in a context menu for app items in the Chrome OS app list that allows users to reorder items by their icon colors in the app list. This option is under the 'Reorder by' submenu">
+          Color
+        </message>
         <message name="IDS_APP_LIST_UNINSTALL_ITEM"
                   desc="Title text for the 'uninstall' context menu item of an app list item.">
           Uninstall
diff --git a/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_COLOR.png.sha1 b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_COLOR.png.sha1
new file mode 100644
index 0000000..6743ad0
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_COLOR.png.sha1
@@ -0,0 +1 @@
+2af9c1815e8974ca2ff5d39eca496937363d0a5d
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_NAME.png.sha1 b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_NAME.png.sha1
new file mode 100644
index 0000000..6743ad0
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_NAME.png.sha1
@@ -0,0 +1 @@
+2af9c1815e8974ca2ff5d39eca496937363d0a5d
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE.png.sha1
new file mode 100644
index 0000000..6743ad0
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE.png.sha1
@@ -0,0 +1 @@
+2af9c1815e8974ca2ff5d39eca496937363d0a5d
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp
index 8d92a31..d2bc4006 100644
--- a/chrome/app/os_settings_strings.grdp
+++ b/chrome/app/os_settings_strings.grdp
@@ -1577,15 +1577,6 @@
   <message name="IDS_SETTINGS_ACCOUNT_MANAGER_LIST_CHILD_DESCRIPTION" desc="List description for additional account List in Account Manager Settings page for Child users.">
     <ph name="USER_EMAIL">$1<ex>user@example.com</ex></ph> is supervised by Family Link. You can add school accounts to access school resources with parental supervision.
   </message>
-  <message name="IDS_SETTINGS_ACCOUNT_MANAGER_PRIMARY_ACCOUNT_TOOLTIP" desc="Tooltip for the primary account in accounts list in Settings describing how to sign out.">
-    To sign out of the primary account on this device, click the time on your screen. In the menu that appears, click "Sign out".
-  </message>
-  <message name="IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_ONE_PARENT_TOOLTIP" desc="Tooltip for the primary account in accounts list in Settings showing that this user is managed by parent's account.">
-    Account managed by <ph name="PARENT_EMAIL">$1<ex>user@example.com</ex></ph>. To sign out of the primary account on this device, click the time on your screen. In the menu that appears, click "Sign out".
-  </message>
-  <message name="IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_TWO_PARENTS_TOOLTIP" desc="Tooltip for the primary account in accounts list in Settings showing that this user is managed by two parents' accounts.">
-    Account managed by <ph name="FIRST_PARENT_EMAIL">$1<ex>first@example.com</ex></ph> and <ph name="SECOND_PARENT_EMAIL">$2<ex>second@example.com</ex></ph>. To sign out of the primary account on this device, click the time on your screen. In the menu that appears, click "Sign out".
-  </message>
   <message name="IDS_SETTINGS_ACCOUNT_MANAGER_REMOVE_ACCOUNT_LABEL" desc="Label of the Remove account button in Account Manager.">
     Remove this account
   </message>
@@ -1625,9 +1616,6 @@
   <message name="IDS_SETTINGS_ACCOUNT_MANAGER_MORE_ACTIONS_TOOLTIP" desc="Tooltip text (shows on hover or for screenreaders) for a button that shows a menu with more actions when clicked or tapped.">
     More actions, <ph name="EMAIL">$1<ex>abcd@google.com</ex></ph>
   </message>
-  <message name="IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_MANAGED_ACCOUNT" desc="Management status label for managed accounts. This will be e.g. 'Managed by google.com' for Enterprise accounts and 'Managed by Family Link' for child accounts.">
-    Managed by <ph name="DOMAIN">$1<ex>google.com</ex></ph>
-  </message>
   <message name="IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS" desc="Management status label for managed accounts.">
     This account is managed by <ph name="BEGIN_LINK">&lt;a target="_blank"&gt;</ph><ph name="DOMAIN">$1<ex>google.com</ex></ph><ph name="END_LINK">&lt;/a&gt;</ph>
   </message>
@@ -1640,9 +1628,6 @@
   <message name="IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_SCHOOL_ACCOUNT" desc="Indicates this account is the school account, when the primary account is a child account.">
     School Account
   </message>
-  <message name="IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_UNMANAGED_ACCOUNT" desc="Management status label for unmanaged accounts.">
-    Primary account
-  </message>
   <message name="IDS_SETTINGS_ACCOUNT_MANAGER_REMOVE_LACROS_ACCOUNT_DIALOG_TITLE" desc="When a user attempts to remove a secondary account, a dialog pops up asking them for confirmation. This is the title of that dialog.">
     Remove this account?
   </message>
@@ -3130,6 +3115,9 @@
   <message name="IDS_SETTINGS_MULTIDEVICE_PHONE_HUB_CAMERA_ROLL_SUMMARY" desc="Description of for the 'Phone Hub Camera Roll' setting. This feature populates most recent photos from a connected Android phone to Chrome OS devices.">
     View photos from your phone's camera roll on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph>
   </message>
+  <message name="IDS_SETTINGS_MULTIDEVICE_PHONE_HUB_CAMERA_ROLL_DISABLED_SUMMARY" desc="Description of for the 'Phone Hub Camera Roll' setting when the feature is disabled due to missing file access permissions.">
+    View photos from your phone's camera roll on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph>. <ph name="LINK_BEGIN">&lt;a target="_blank" href="$2<ex>https://google.com/</ex>"&gt;</ph>Learn more<ph name="LINK_END">&lt;/a&gt;</ph>
+  </message>
   <message name="IDS_SETTINGS_MULTIDEVICE_PHONE_HUB_NOTIFICATIONS_SUMMARY" desc="Description of for the 'Phone Hub Notifications' setting. This feature mirrors notifications from a connected Android phone to Chrome OS devices.">
     View notifications from your chat apps on your <ph name="DEVICE_TYPE">$1<ex>Chromebook</ex></ph>
   </message>
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_ONE_PARENT_TOOLTIP.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_ONE_PARENT_TOOLTIP.png.sha1
deleted file mode 100644
index 0d16bfc..0000000
--- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_ONE_PARENT_TOOLTIP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-76769a5956dd51706eaf82d94488d97ca5027069
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_TWO_PARENTS_TOOLTIP.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_TWO_PARENTS_TOOLTIP.png.sha1
deleted file mode 100644
index d3afd7a..0000000
--- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_TWO_PARENTS_TOOLTIP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e76198024821d9455a882a7d93b20a15e9014af3
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_MANAGED_ACCOUNT.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_MANAGED_ACCOUNT.png.sha1
deleted file mode 100644
index 40733490..0000000
--- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_MANAGED_ACCOUNT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-405ae38539f535622d3f63180e5356cae2418762
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_UNMANAGED_ACCOUNT.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_UNMANAGED_ACCOUNT.png.sha1
deleted file mode 100644
index 694007d..0000000
--- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_UNMANAGED_ACCOUNT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-23596a407dd85bfbc9ecb0dc2b8e9ab31079fc43
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_PRIMARY_ACCOUNT_TOOLTIP.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_PRIMARY_ACCOUNT_TOOLTIP.png.sha1
deleted file mode 100644
index b3869094..0000000
--- a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_ACCOUNT_MANAGER_PRIMARY_ACCOUNT_TOOLTIP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4af25a499ae755e183eab9e08b1d4854f347d4a3
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_MULTIDEVICE_PHONE_HUB_CAMERA_ROLL_DISABLED_SUMMARY.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_MULTIDEVICE_PHONE_HUB_CAMERA_ROLL_DISABLED_SUMMARY.png.sha1
new file mode 100644
index 0000000..718f617
--- /dev/null
+++ b/chrome/app/os_settings_strings_grdp/IDS_SETTINGS_MULTIDEVICE_PHONE_HUB_CAMERA_ROLL_DISABLED_SUMMARY.png.sha1
@@ -0,0 +1 @@
+b697d45921e72f9dc74411735336a84531f7147d
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_af.xtb b/chrome/app/resources/chromium_strings_af.xtb
index 17014e32..66adbfd 100644
--- a/chrome/app/resources/chromium_strings_af.xtb
+++ b/chrome/app/resources/chromium_strings_af.xtb
@@ -229,7 +229,6 @@
 <translation id="7339898014177206373">Nuwe venster</translation>
 <translation id="734373864078049451">Jou web, boekmerke en ander Chromium-goed woon hier.</translation>
 <translation id="7349591376906416160">Jou stelseladministrateur het Chromium opgestel om <ph name="ALTERNATIVE_BROWSER_NAME" /> oop te maak om by <ph name="TARGET_URL_HOSTNAME" /> in te gaan.</translation>
-<translation id="7366100504948874379">Skakel ook in Chromium aan?</translation>
 <translation id="7398989605938454041">Met Chromium-profiele kan jy al jou Chromium-goed skei. Dit maak dit makliker om tussen werk en pret te verdeel.</translation>
 <translation id="7448255348454382571">Herbegin Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_am.xtb b/chrome/app/resources/chromium_strings_am.xtb
index 50201835..6c4f6979 100644
--- a/chrome/app/resources/chromium_strings_am.xtb
+++ b/chrome/app/resources/chromium_strings_am.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Chromium ላይ እገዛ ያግኙ</translation>
 <translation id="4285930937574705105">ተለይቶ ባልታወቀ ስህተት ምክንያት ጭነት ከሽፏል። Chromium አሁን እያሄደ ከሆነ እባክዎ ይዝጉትና እንደገና ይሞክሩ።</translation>
 <translation id="4407044323746248786">የሆነው ሆኖ ከChromium ይወጣ?</translation>
+<translation id="4414390922528416758">Chromium በጣም አስፈላጊ እንደሆኑ የሚያስባቸውን የግላዊነት ምርጫዎች ያብጁ። ይህ መመሪያ ሁሉንም ቅንብር እና አማራጭ አይደለም የሚያካትተው።</translation>
 <translation id="4415566066719264597">Chromium በበስተጀርባ ላይ ያሂድ</translation>
 <translation id="4423735387467980091">Chromiumን ያብጁ እና ይቆጣጠሩ</translation>
 <translation id="4427306783828095590">የተሻሻለ ጥበቃ ማስገር እና ተንኮል-አዘል ዌር ለማገድ የበለጠ ይሠራል</translation>
@@ -228,7 +229,6 @@
 <translation id="7339898014177206373">አዲሰ መስኮት</translation>
 <translation id="734373864078049451">የእርስዎ ድር፣ ዕልባቶች እና ሌሎች የChromium ነገሮች እዚህ ይኖራሉ።</translation>
 <translation id="7349591376906416160">የእርስዎ ስርዓት አስተዳዳሪ Chromium <ph name="TARGET_URL_HOSTNAME" />ን ለመድረስ <ph name="ALTERNATIVE_BROWSER_NAME" />ን እንዲከፍት አዋቅሮታል።</translation>
-<translation id="7366100504948874379">እንዲሁም በChromium ውስጥ ይብራ?</translation>
 <translation id="7398989605938454041">በChromium መገለጫዎች ሁሉንም የChromium ነገሮችዎን መለየት ይችላሉ። ይህ በስራ እና በመዝናኛ መካከል መከፋፈልን ቀላል ያደርገዋል።</translation>
 <translation id="7448255348454382571">Chromium OSን ዳግም አስጀምር</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium ግንባታ</translation>
@@ -298,5 +298,6 @@
 <translation id="9214764063801632699">የChromium OS ሥርዓት</translation>
 <translation id="93478295209880648">Chromium በWindows XP ወይም Windows Vista ላይ ከእንግዲህ ስለማይደገፍ በአግባቡ ላይሰራ ይችላል</translation>
 <translation id="965162752251293939">ማነው Chromiumን የሚጠቀመው?</translation>
+<translation id="967427899662692980">የChromiumን ጠንካራ ደህንነት ያግኙ</translation>
 <translation id="985602178874221306">የChromium ደራሲዎች</translation>
 </translationbundle>
\ 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 6bd22198..b1adbc12 100644
--- a/chrome/app/resources/chromium_strings_ar.xtb
+++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -227,7 +227,6 @@
 <translation id="7339898014177206373">نافذة جديدة</translation>
 <translation id="734373864078049451">‏الويب والإشارات المرجعية وغيرها من عناصر Chromium توجد هنا.</translation>
 <translation id="7349591376906416160">‏ضَبَط مشرف النظام Chromium لفتح <ph name="ALTERNATIVE_BROWSER_NAME" /> للوصول إلى <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">‏هل تريد أيضًا تفعيل ميزة "الحماية المُحسّنة للتصفّح الآمن" في Chromium؟</translation>
 <translation id="7398989605938454041">‏باستخدام الملفات الشخصية على Chromium، يمكنك الفصل بين جميع بياناتك على Chromium، ما يسهِّل عليك الفصل بين العمل والترفيه.</translation>
 <translation id="7448255348454382571">‏إعادة تشغيل نظام التشغيل Chromium</translation>
 <translation id="7449453770951226939">‏<ph name="PAGE_TITLE" /> - إصدار قناة مطوري البرامج من Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb
index 8878e35..26e626e 100644
--- a/chrome/app/resources/chromium_strings_as.xtb
+++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Chromiumৰ ক্ষেত্ৰত সহায় লাভ কৰক</translation>
 <translation id="4285930937574705105">অনির্দিষ্ট আসোঁৱাহৰ বাবে ইনষ্টল কৰিব পৰা নগ’ল। যদি Chromium এতিয়া চলি আছে তেন্তে সেইটো বন্ধ কৰি আকৌ চেষ্টা কৰক।</translation>
 <translation id="4407044323746248786">যিকোনো প্ৰকাৰে Chromiumৰ পৰা বাহিৰ হ’বনে?</translation>
+<translation id="4414390922528416758">Chromiumএ আটাইতকৈ গুৰুত্বপূৰ্ণ বুলি বিবেচনা কৰা গোপনীয়তা সম্পৰ্কীয় বাছনি কাষ্টমাইজ কৰক। এই নিৰ্দেশাৱলীয়ে প্ৰতিটো ছেটিং আৰু বিকল্প অন্তৰ্ভুক্ত নকৰে।</translation>
 <translation id="4415566066719264597">Chromiumক নেপথ্যত চলিবলৈ দিয়ক</translation>
 <translation id="4423735387467980091">Chromium কাষ্টমাইজ আৰু নিয়ন্ত্ৰণ কৰক</translation>
 <translation id="4427306783828095590">বৰ্ধিত সুৰক্ষাৰ সুবিধাটোৱে ফিশ্বিং আৰু মালৱেৰ অৱৰোধ কৰিবলৈ অধিক কাৰ্য কৰে</translation>
@@ -298,5 +299,6 @@
 <translation id="9214764063801632699">Chromium OS ছিষ্টেম</translation>
 <translation id="93478295209880648">Chromiumএ সঠিকভাৱে কাম নকৰিবও পাৰে কাৰণ এই সংস্কৰণটো Windows XP বা Windows Vistaত আৰু নচলে</translation>
 <translation id="965162752251293939">Chromium কোনে ব্যৱহাৰ কৰি আছে?</translation>
+<translation id="967427899662692980">Chromiumৰ আটাইতকৈ বৰ্ধিত সুৰক্ষাৰ সুবিধা লাভ কৰক</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb
index ea9f94e3..bcad936 100644
--- a/chrome/app/resources/chromium_strings_az.xtb
+++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -225,7 +225,6 @@
 <translation id="7339898014177206373">Yeni pəncərə</translation>
 <translation id="734373864078049451">Veb, əlfəcinlər və Chromium'a aid hər şeyiniz buradadır.</translation>
 <translation id="7349591376906416160">Sistem administratorunun konfiqurasiyasına əsasən Chromium <ph name="TARGET_URL_HOSTNAME" /> ünvanına daxil olmaq üçün <ph name="ALTERNATIVE_BROWSER_NAME" /> tətbiqini aça bilər.</translation>
-<translation id="7366100504948874379">Chromium'da da aktiv edilsin?</translation>
 <translation id="7398989605938454041">Chromium profilləri ilə bütün Chromium elementlərinizi ayıra bilərsiniz. Bu, iş və əyləncə arasında ayırım etməyi asanlaşdırır.</translation>
 <translation id="7448255348454382571">Chromium ƏS-ni yenidən başladın</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb
index 96db43f9..8bbaa84 100644
--- a/chrome/app/resources/chromium_strings_bn.xtb
+++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">Chromium বিষয়ে সাহায্য পান</translation>
 <translation id="4285930937574705105">অনির্দিষ্ট ত্রুটির কারণে ইনস্টলেশন ব্যর্থ৷ বর্তমানে Chromium চালু থাকলেও, দয়া করে এটি বন্ধ করুন এবং আবার চেষ্টা করুন৷</translation>
 <translation id="4407044323746248786">তা স্বত্তেও Chromium ছেড়ে যাবেন?</translation>
+<translation id="4414390922528416758">গোপনীয়তার পছন্দগুলি কাস্টমাইজ করুন যা Chromium সবচেয়ে গুরুত্বপূর্ণ বলে মনে করে। এই গাইড প্রতিটি সেটিং এবং বিকল্প অন্তর্ভুক্ত করে না।</translation>
 <translation id="4415566066719264597">Chromium-কে ব্যাকগ্রাউন্ডে চলতে দিন</translation>
 <translation id="4423735387467980091">Chromium কাস্টমাইজ ও নিয়ন্ত্রণ করুন</translation>
 <translation id="4427306783828095590">ফিশিং ও ম্যালওয়্যার ব্লক করার ব্যাপারে উন্নত সুরক্ষা আরও সাহায্য করে</translation>
@@ -225,7 +226,6 @@
 <translation id="7339898014177206373">নতুন উইন্ডো</translation>
 <translation id="734373864078049451">আপনার ওয়েব, বুকমার্ক এবং Chromium-এর অন্যান্য জিনিস এখানে রয়েছে৷</translation>
 <translation id="7349591376906416160"><ph name="TARGET_URL_HOSTNAME" /> অ্যাক্সেস করতে <ph name="ALTERNATIVE_BROWSER_NAME" /> ব্যবহার করার জন্য আপনার সিস্টেম অ্যাডমিনিস্ট্রেটর Chromium কনফিগার করেছে।</translation>
-<translation id="7366100504948874379">এছাড়া, Chromium-এ চালু করতে চান?</translation>
 <translation id="7398989605938454041">Chromium প্রোফাইল থেকে আপনার সব Chromium-এ থাকা ডেটা আলাদা করতে পারবেন। এর ফলে সহজেই অফিস এবং বিনোদনের প্রোফাইল আলাদা করা যায়।</translation>
 <translation id="7448255348454382571">Chromium OS রিস্টার্ট করুন</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
@@ -295,5 +295,6 @@
 <translation id="9214764063801632699">Chromium OS সিস্টেম</translation>
 <translation id="93478295209880648">Chromium সঠিকভাবে কাজ নাও করতে পারে কারণ এটি এখন আর Windows XP বা Windows Vista আর সমর্থিত নয়</translation>
 <translation id="965162752251293939">Chromium কে ব্যবহার করছেন?</translation>
+<translation id="967427899662692980">Chromium-এ সবচেয়ে বেশি সুরক্ষা পান</translation>
 <translation id="985602178874221306">Chromium রচয়িতা</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb
index 5e395c3..fa92196 100644
--- a/chrome/app/resources/chromium_strings_bs.xtb
+++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Potražite pomoć s Chromiumom</translation>
 <translation id="4285930937574705105">Instalacija nije uspjela zbog neodređene greške. Ako je Chromium trenutno pokrenut, zatvorite ga i pokušajte ponovo.</translation>
 <translation id="4407044323746248786">Želite li ipak zatvoriti Chromium?</translation>
+<translation id="4414390922528416758">Prilagodite odabire privatnosti koje Chromium smatra najvažnijim. Ovaj vodič ne obuhvata svaku postavku i opciju.</translation>
 <translation id="4415566066719264597">Neka Chromium radi u pozadini</translation>
 <translation id="4423735387467980091">Prilagodite Chromium i upravljajte njime</translation>
 <translation id="4427306783828095590">Poboljšana zaštita vas još bolje čuva od krađe identiteta i zlonamjernog softvera</translation>
@@ -229,7 +230,6 @@
 <translation id="7339898014177206373">Novi prozor</translation>
 <translation id="734373864078049451">Vaš web, oznake i ostali sadržaji s Chromiuma se nalaze ovdje.</translation>
 <translation id="7349591376906416160">Administrator sistema je konfigurirao Chromium da otvori preglednik <ph name="ALTERNATIVE_BROWSER_NAME" /> radi pristupa web lokaciji <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Uključiti i u Chromiumu?</translation>
 <translation id="7398989605938454041">S Chromium profilima možete odvojiti sve svoje Chromium stvari. Tako ćete lakše razdvojiti posao i zabavu.</translation>
 <translation id="7448255348454382571">Ponovo pokrenite Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Dev</translation>
@@ -299,5 +299,6 @@
 <translation id="9214764063801632699">Sistem Chromium OS</translation>
 <translation id="93478295209880648">Chromium možda neće ispravno raditi jer više nije podržan na sistemima Windows XP ili Windows Vista</translation>
 <translation id="965162752251293939">Ko koristi Chromium?</translation>
+<translation id="967427899662692980">Odaberite maksimalnu sigurnost koju nudi Chromium</translation>
 <translation id="985602178874221306">Autori Chromiuma</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb
index 071f105..b436390 100644
--- a/chrome/app/resources/chromium_strings_ca.xtb
+++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">Obtén ajuda per a Chromium</translation>
 <translation id="4285930937574705105">S'ha produït un error no especificat durant la instal·lació. Si Chromium s'està executant en aquests moments, tanqueu-lo i torneu-ho a provar.</translation>
 <translation id="4407044323746248786">Vols sortir de Chromium igualment?</translation>
+<translation id="4414390922528416758">Personalitza les opcions de privadesa que Chromium considera més importants. Aquesta guia no inclou totes les opcions de configuració.</translation>
 <translation id="4415566066719264597">Permet que Chromium s'executi en segon pla</translation>
 <translation id="4423735387467980091">Personalitza i controla Chromium</translation>
 <translation id="4427306783828095590">La protecció millorada és més efiçaç a l'hora de bloquejar la pesca de credencials i el programari maliciós</translation>
@@ -295,5 +296,6 @@
 <translation id="9214764063801632699">Sistema Chromium OS</translation>
 <translation id="93478295209880648">Pot ser que Chromium no funcioni correctament perquè ja no és compatible amb Windows XP ni Windows Vista</translation>
 <translation id="965162752251293939">Qui està utilitzant Chromium?</translation>
+<translation id="967427899662692980">Obtén la seguretat més efectiva de Chromium</translation>
 <translation id="985602178874221306">Els autors de Chromium</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb
index 260f01ea..24ac6f3 100644
--- a/chrome/app/resources/chromium_strings_el.xtb
+++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -228,7 +228,6 @@
 <translation id="7339898014177206373">Νέο παράθυρο</translation>
 <translation id="734373864078049451">Εδώ μπορείτε να βρείτε τις ιστοσελίδες, τους σελιδοδείκτες σας και άλλα δεδομένα του Chromium.</translation>
 <translation id="7349591376906416160">Ο διαχειριστής συστήματος έχει διαμορφώσει το Chromium ώστε να ανοίγει το <ph name="ALTERNATIVE_BROWSER_NAME" /> για την πρόσβαση σε <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Ενεργοποίηση και στο Chromium;</translation>
 <translation id="7398989605938454041">Με τα προφίλ του Chromium μπορείτε να διαχωρίσετε όλο το περιεχόμενό σας στο Chromium. Αυτό σας βοηθά να διαχωρίζετε την εργασία από την ψυχαγωγία.</translation>
 <translation id="7448255348454382571">Επανεκκίνηση Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb
index 5a6daf2..0686c206 100644
--- a/chrome/app/resources/chromium_strings_en-GB.xtb
+++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -229,7 +229,6 @@
 <translation id="7339898014177206373">New window</translation>
 <translation id="734373864078049451">Your web, bookmarks and other Chromium stuff live here.</translation>
 <translation id="7349591376906416160">Your system administrator has configured Chromium to open <ph name="ALTERNATIVE_BROWSER_NAME" /> to access <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Also turn on in Chromium?</translation>
 <translation id="7398989605938454041">With Chromium profiles, you can separate all of your Chromium things. This makes it easier to split between work and fun.</translation>
 <translation id="7448255348454382571">Restart Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb
index 080642a1..2f4f01a0 100644
--- a/chrome/app/resources/chromium_strings_eu.xtb
+++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -228,7 +228,6 @@
 <translation id="7339898014177206373">Leiho berria</translation>
 <translation id="734373864078049451">Webguneak, laster-markak eta Chromium-eko beste gauzak hemen daude.</translation>
 <translation id="7349591376906416160">Sistemaren administratzailearen konfigurazioaren arabera, Chromium-ek <ph name="ALTERNATIVE_BROWSER_NAME" /> arakatzailea ireki behar du <ph name="TARGET_URL_HOSTNAME" /> helbidera joateko.</translation>
-<translation id="7366100504948874379">Chromium-en ere aktibatu nahi duzu?</translation>
 <translation id="7398989605938454041">Chromium-eko profilekin, Chromium-en dituzun gauza guztiak bereiz ditzakezu. Hala, errazago edukiko dituzu bananduta gauza pertsonalak eta lanekoak.</translation>
 <translation id="7448255348454382571">Berrabiarazi Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb
index c5f4572..c178d5a8 100644
--- a/chrome/app/resources/chromium_strings_fa.xtb
+++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -108,6 +108,7 @@
 <translation id="4271805377592243930">‏دریافت کمک برای Chromium</translation>
 <translation id="4285930937574705105">‏به دلیل خطای نامشخص نصب ناموفق بود. اگر Chromium در حال اجرا است، لطفاً آن را ببندید و دوباره سعی کنید.</translation>
 <translation id="4407044323746248786">‏درهرصورت از Chromium خارج می‌شوید؟</translation>
+<translation id="4414390922528416758">‏انتخاب‌های حریم‌خصوصی را که ازنظر Chromium مهم‌ترین هستند سفارشی کنید. این راهنما حاوی همه تنظیمات و گزینه‌ها نیست.</translation>
 <translation id="4415566066719264597">‏اجازه به Chromium برای اجرا در پس‌زمینه</translation>
 <translation id="4423735387467980091">‏سفارشی کردن و کنترل Chromium</translation>
 <translation id="4427306783828095590">«محافظت بهبودیافته» کارهای بیشتری برای مسدود کردن رمزگیری و بدافزار انجام می‌دهد</translation>
@@ -225,7 +226,6 @@
 <translation id="7339898014177206373">پنجرهٔ جدید</translation>
 <translation id="734373864078049451">‏وب، نشانک‌ها و موارد دیگر Chromium شما در اینجا هستند.</translation>
 <translation id="7349591376906416160">‏سرپرست سیستم برای باز شدن <ph name="ALTERNATIVE_BROWSER_NAME" /> جهت دسترسی به <ph name="TARGET_URL_HOSTNAME" />، Chromium را پیکربندی کرده است.</translation>
-<translation id="7366100504948874379">‏در Chromium نیز روشن شود؟</translation>
 <translation id="7398989605938454041">‏با نمایه‌های Chromium می‌توانید همه‌چیزتان را در Chromium جدا کنید. با این کار، راحت‌تر می‌توان کار و سرگرمی را ازهم جدا کرد.</translation>
 <translation id="7448255348454382571">‏بازراه‌اندازی سیستم‌عامل Chromium</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
@@ -295,5 +295,6 @@
 <translation id="9214764063801632699">‏سیستم Chromium OS</translation>
 <translation id="93478295209880648">‏Chromium ممکن است درست کار نکند زیرا دیگر در Windows XP یا Windows Vista پشتیبانی نمی‌شود</translation>
 <translation id="965162752251293939">‏چه‌کسی از Chromium استفاده می‌کند؟</translation>
+<translation id="967427899662692980">‏دریافت قوی‌ترین امنیت Chromium</translation>
 <translation id="985602178874221306">Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb
index b3a86da..189af72 100644
--- a/chrome/app/resources/chromium_strings_fil.xtb
+++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Humingi ng tulong sa Chromium</translation>
 <translation id="4285930937574705105">Nabigo ang pag-install dahil sa hindi natukoy na error. Kung kasalukuyang tumatakbo ang Chromium, pakisara ito at subukang muli.</translation>
 <translation id="4407044323746248786">Lumabas pa rin sa Chromium?</translation>
+<translation id="4414390922528416758">I-customize ang mga opsyon sa privacy na itinuturing na pinakamahalaga ng Chromium. Hindi kasama sa gabay na ito ang bawat setting at opsyon.</translation>
 <translation id="4415566066719264597">Hayaang Tumakbo ang Chromium sa Background</translation>
 <translation id="4423735387467980091">I-customize at kontrolin ang Chromium</translation>
 <translation id="4427306783828095590">Mas maraming magagawa ang pinahusay na proteksyon para mag-block ng phishing and malware</translation>
@@ -298,5 +299,6 @@
 <translation id="9214764063801632699">Chromium OS system</translation>
 <translation id="93478295209880648">Maaaring hindi gumana nang maayos ang Chromium dahil hindi na ito sinusuportahan sa Windows XP o Windows Vista</translation>
 <translation id="965162752251293939">Sino ang gumagamit ng Chromium?</translation>
+<translation id="967427899662692980">Kunin ang pinakamahusay na seguridad ng Chromium</translation>
 <translation id="985602178874221306">Ang Mga May-akda ng Chromium</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb
index f5eca70..2540b49f 100644
--- a/chrome/app/resources/chromium_strings_fr.xtb
+++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -228,7 +228,6 @@
 <translation id="7339898014177206373">Nouvelle fenêtre</translation>
 <translation id="734373864078049451">Votre contenu Web, vos favoris et toutes vos données Chromium sont conservés ici.</translation>
 <translation id="7349591376906416160">Votre administrateur système a configuré Chromium de sorte que <ph name="ALTERNATIVE_BROWSER_NAME" /> s'ouvre pour accéder à <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Activer aussi dans Chromium ?</translation>
 <translation id="7398989605938454041">Utilisez les profils Chromium pour dissocier toutes vos données Chromium. Vous pouvez ainsi faire plus facilement la distinction entre vos contenus personnels et professionnels.</translation>
 <translation id="7448255348454382571">Redémarrer Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium pour les développeurs</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb
index a392197..8ef51b0f 100644
--- a/chrome/app/resources/chromium_strings_gu.xtb
+++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Chromium સાથે સહાય મેળવો</translation>
 <translation id="4285930937574705105">અમઉલ્લેખિત ભૂલને કારણે ઇન્સ્ટોલેશન નિષ્ફળ થયું. જો Chromium હાલમાં ચાલી રહ્યું હોય, તો તેને બંધ કરો અને ફરી પ્રયાસ કરો.</translation>
 <translation id="4407044323746248786">છતાં પણ Chromiumમાંથી બહાર નિકળવું છે?</translation>
+<translation id="4414390922528416758">પ્રાઇવસીની એ પસંદગીઓને કસ્ટમાઇઝ કરો કે જેને Chromium સૌથી મહત્ત્વપૂર્ણ માને છે. આ માર્ગદર્શિકામાં દરેક સેટિંગ અને વિકલ્પ શામેલ નથી.</translation>
 <translation id="4415566066719264597">Chromiumને બૅકગ્રાઉન્ડમાં ચાલવા દો</translation>
 <translation id="4423735387467980091">Chromium ને કસ્ટમાઇઝ અને નિયંત્રિત કરો</translation>
 <translation id="4427306783828095590">વધારેલી સુરક્ષા ફિશિંગ અને માલવેરને બ્લૉક કરવામાં વધુ સહાયરૂપ થાય છે</translation>
@@ -229,7 +230,6 @@
 <translation id="7339898014177206373">નવી વિંડો</translation>
 <translation id="734373864078049451">તમારું વેબ, બુકમાર્ક અને અન્ય Chromium સામગ્રી અહીં હોય છે.</translation>
 <translation id="7349591376906416160">તમારા સિસ્ટમ વ્યવસ્થાપકે <ph name="TARGET_URL_HOSTNAME" />ને ઍક્સેસ કરવા Chromiumને <ph name="ALTERNATIVE_BROWSER_NAME" /> ખોલવા માટે ગોઠવેલું છે.</translation>
-<translation id="7366100504948874379">Chromiumમાં પણ ચાલુ કરીએ?</translation>
 <translation id="7398989605938454041">Chromium પ્રોફાઇલ વડે તમે તમારી બધી વસ્તુઓ Chromium પર અલગ-અલગ રાખી શકો છો. આનાથી ઑફિસ અને મનોરંજન વચ્ચે વિભાજન કરવાનું સરળ બને છે.</translation>
 <translation id="7448255348454382571">Chromium OS ફરી શરૂ કરો</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
@@ -299,5 +299,6 @@
 <translation id="9214764063801632699">Chromium OS સિસ્ટમ</translation>
 <translation id="93478295209880648">Chromium યોગ્ય રીતે કાર્ય ન કરે તેવું બની શકે કારણ કે તે હવેથી Windows XP અથવા Windows Vista પર સમર્થિત નથી</translation>
 <translation id="965162752251293939">કોણ Chromiumનો ઉપયોગ કરે છે?</translation>
+<translation id="967427899662692980">Chromiumની સૌથી વધુ મજબૂત સુરક્ષા મેળવો</translation>
 <translation id="985602178874221306">Chromium લેખકો</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb
index 1c9b8a3d..50ec1343 100644
--- a/chrome/app/resources/chromium_strings_hi.xtb
+++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">क्रोमियम के लिए सहायता पाएं</translation>
 <translation id="4285930937574705105">अनिर्दिष्ट कारण से इंस्‍टॉलेशन विफल हुआ. अगर Google Chrome अभी खुला हुआ है, तो कृपया उसे बंद करें और फिर से प्रयास करें.</translation>
 <translation id="4407044323746248786">फिर भी क्रोमियम से बाहर निकलें?</translation>
+<translation id="4414390922528416758">निजता से जुड़े उन विकल्पों को अपनी पसंद के मुताबिक बनाएं जो Chromium के हिसाब से सबसे अहम हैं. इस गाइड में सभी सेटिंग और विकल्प के बारे में नहीं बताया गया है.</translation>
 <translation id="4415566066719264597">क्रोमियम को बैकग्राउंड में चलने दें</translation>
 <translation id="4423735387467980091">क्रोमियम को पसंद के मुताबिक बनाएं और नियंत्रित करें</translation>
 <translation id="4427306783828095590">बेहतर सुरक्षा की मदद से फ़िशिंग और मैलवेयर को बेहतर तरीके से ब्लॉक किया जाता है</translation>
@@ -296,5 +297,6 @@
 <translation id="9214764063801632699">Chromium OS सिस्टम</translation>
 <translation id="93478295209880648">हो सकता है क्रोमियम सही तरीके से काम ना करें क्‍योंकि अब वह Windows XP या Windows Vista पर काम नहीं करता है</translation>
 <translation id="965162752251293939">क्रोमियम को कौन इस्तेमाल कर रहा है?</translation>
+<translation id="967427899662692980">Chromium की सबसे मज़बूत सुरक्षा पाएं</translation>
 <translation id="985602178874221306">क्रोमियम लेखक</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb
index 23351af..6aa2d4b 100644
--- a/chrome/app/resources/chromium_strings_hr.xtb
+++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -227,7 +227,6 @@
 <translation id="7339898014177206373">Novi prozor</translation>
 <translation id="734373864078049451">Ovdje se nalaze vaš web, oznake i ostali sadržaji u Chromiumu.</translation>
 <translation id="7349591376906416160">Vaš administrator sustava konfigurirao je Chromium da otvara <ph name="ALTERNATIVE_BROWSER_NAME" /> za pristup URL-u <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Želite li uključiti i u Chromiumu?</translation>
 <translation id="7398989605938454041">Pomoću Chromiumovih profila možete razdvojiti sve svoje sadržaje u Chromiumu. To olakšava odvajanje posla i zabave.</translation>
 <translation id="7448255348454382571">Ponovo pokrenite OS Chromium</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb
index f6796c1a..42dccb1 100644
--- a/chrome/app/resources/chromium_strings_hu.xtb
+++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">Segítség a Chromium használatával kapcsolatban</translation>
 <translation id="4285930937574705105">A telepítés váratlan hiba miatt nem sikerült. Ha a Chromium jelenleg fut, zárja be, majd próbálkozzon újra.</translation>
 <translation id="4407044323746248786">Biztosan kilép a Chromiumból?</translation>
+<translation id="4414390922528416758">Személyre szabhatja azokat az adatvédelmi lehetőségeket, amelyek a Chromium szerint a legfontosabbak. Ebben az útmutatóban nem szerepel az összes beállítási lehetőség.</translation>
 <translation id="4415566066719264597">A Chromium futhat a háttérben</translation>
 <translation id="4423735387467980091">A Chromium személyre szabása és beállításai</translation>
 <translation id="4427306783828095590">A Speciális védelem még többet tesz annak érdekében, hogy letiltsa az adathalászatot és a rosszindulatú programokat</translation>
@@ -293,5 +294,6 @@
 <translation id="9214764063801632699">Chromium OS rendszer</translation>
 <translation id="93478295209880648">Előfordulhat, hogy a Chromium nem működik majd megfelelően, mert a továbbiakban már nem támogatja a következő rendszereket: Windows XP és Windows Vista</translation>
 <translation id="965162752251293939">Ki használja a Chromiumot?</translation>
+<translation id="967427899662692980">Állítsa be a Chromium legerősebb védelmét</translation>
 <translation id="985602178874221306">A Chromium szerzői</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb
index 62c5b3d..f715963f 100644
--- a/chrome/app/resources/chromium_strings_hy.xtb
+++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -228,7 +228,6 @@
 <translation id="7339898014177206373">Նոր պատուհան</translation>
 <translation id="734373864078049451">Բոլոր վեբէջերը, էջանիշները և Chromium-ի այլ տվյալները պահվում են այստեղ:</translation>
 <translation id="7349591376906416160">Ձեր համակարգի ադմինիստրատորն այնպես է կարգավորել Chromium-ը, որ <ph name="TARGET_URL_HOSTNAME" /> կայքը բացվի <ph name="ALTERNATIVE_BROWSER_NAME" /> դիտարկիչով։</translation>
-<translation id="7366100504948874379">Միացնե՞լ նաև Chromium-ում</translation>
 <translation id="7398989605938454041">Chromium պրոֆիլների միջոցով դուք կարող եք օգտագործել դիտարկիչն առանձին այլ օգտատերերից։Այդպես ավելի հեշտ է տարանջատել գործնական և անձնական նպատակներով օգտագործումը։</translation>
 <translation id="7448255348454382571">Վերագործարկեք Chromium OS-ը</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb
index 847762b..df14c63 100644
--- a/chrome/app/resources/chromium_strings_it.xtb
+++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -226,7 +226,6 @@
 <translation id="7339898014177206373">Nuova finestra</translation>
 <translation id="734373864078049451">I tuoi siti web, i tuoi segnalibri e gli altri contenuti Chromium sempre disponibili e aggiornati qui.</translation>
 <translation id="7349591376906416160">L'amministratore di sistema ha configurato Chromium per l'apertura di <ph name="ALTERNATIVE_BROWSER_NAME" /> per accedere a <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Vuoi attivare la funzionalità anche su Chromium?</translation>
 <translation id="7398989605938454041">Con i profili Chromium puoi separare tutti i tuoi contenuti di Chromium. In questo modo potrai alternare lavoro e divertimento con più facilità.</translation>
 <translation id="7448255348454382571">Riavvia Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium per gli sviluppatori</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb
index 2bdcf17..a4ea926 100644
--- a/chrome/app/resources/chromium_strings_ja.xtb
+++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">Chromium のヘルプを見る</translation>
 <translation id="4285930937574705105">原因不明のエラーによりインストールが失敗しました。実行中の Chromium を終了してからもう一度お試しください。</translation>
 <translation id="4407044323746248786">今すぐ Chromium を終了しますか?</translation>
+<translation id="4414390922528416758">Chromium の最も重要なプライバシー設定をカスタマイズできます。このガイドにすべての設定とオプションが含まれているわけではありません。</translation>
 <translation id="4415566066719264597">Chromium をバックグラウンドで実行する</translation>
 <translation id="4423735387467980091">Chromium の設定</translation>
 <translation id="4427306783828095590">保護強化機能により、フィッシングを防ぎ、不正なソフトウェアをより強力にブロックします</translation>
@@ -295,5 +296,6 @@
 <translation id="9214764063801632699">Chromium OS システム</translation>
 <translation id="93478295209880648">Windows XP と Windows Vista はサポートされなくなったため、Chromium は正常に機能しない可能性があります</translation>
 <translation id="965162752251293939">Chromium はどなたが使用しますか?</translation>
+<translation id="967427899662692980">Chromium の最高のセキュリティ強度で保護</translation>
 <translation id="985602178874221306">Chromium 開発者</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb
index d3e5dde..06187ec 100644
--- a/chrome/app/resources/chromium_strings_ka.xtb
+++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Chromium-თან დაკავშირებული დახმარების მიღება</translation>
 <translation id="4285930937574705105">ინსტალაცია ვერ განხორციელდა განუსაზღვრელი შეცდომის გამო. თუ Chromium ამჟამად გაშვებულია, დახურეთ იგი და ხელახლა სცადეთ.</translation>
 <translation id="4407044323746248786">მაინც გსურთ Chromium-იდან გასვლა?</translation>
+<translation id="4414390922528416758">დააფიქსირეთ კონფიდენციალურობასთან დაკავშირებული არჩევანი, რომელსაც Chromium უმნიშვნელოვანესად მიიჩნევს. აღნიშნული სახელმძღვანელო არ მოიცავს ყველა პარამეტრსა და ვარიანტს.</translation>
 <translation id="4415566066719264597">Chromium-ისთვის ფონურ რეჟიმში მუშაობის დაშვება</translation>
 <translation id="4423735387467980091">Chromium-ის მორგება და კონტროლი</translation>
 <translation id="4427306783828095590">გაძლიერებული დაცვა გთავაზობთ ფიშინგისა და მავნე პროგრამებისგან დაცვის მეტ საშუალებას</translation>
@@ -228,7 +229,6 @@
 <translation id="7339898014177206373">ახალი ფანჯარა</translation>
 <translation id="734373864078049451">თქვენი ვები, სანიშნეები და Chromium-ის სხვა მასალა არის აქ.</translation>
 <translation id="7349591376906416160">თქვენი სისტემის ადმინისტრატორმა მოახდინა Chromium-ის კონფიგურაცია იმგვარად, რომ <ph name="TARGET_URL_HOSTNAME" />-ზე წვდომისთვის საჭიროა <ph name="ALTERNATIVE_BROWSER_NAME" />-ის გახსნა.</translation>
-<translation id="7366100504948874379">გსურთ, Chromium-შიც ჩართოთ?</translation>
 <translation id="7398989605938454041">Chromium პროფილები Chromium-ში არსებული თქვენი კონტენტის განცალკევების საშუალებას გაძლევთ. მაგალითად, სამსახურებრივი და პირადი მონაცემების.</translation>
 <translation id="7448255348454382571">გადატვირთეთ Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> — Chromium Dev</translation>
@@ -297,5 +297,6 @@
 <translation id="9214764063801632699">Chromium OS სისტემა</translation>
 <translation id="93478295209880648">Chromium-მა შეიძლება არასწორად იმუშაოს, რადგან ის აღარ არის მხარდაჭერილი Windows XP-სა და Windows Vista-ზე</translation>
 <translation id="965162752251293939">ვინ იყენებს Chromium-ს?</translation>
+<translation id="967427899662692980">ისარგებლეთ Chromium-ის უსაფრთხოების ყველაზე ძლიერი ფუნქციებით</translation>
 <translation id="985602178874221306">Chromium-ის ავტორები</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb
index 57fa74b1..c55f058 100644
--- a/chrome/app/resources/chromium_strings_kk.xtb
+++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -228,7 +228,6 @@
 <translation id="7339898014177206373">Жаңа терезе</translation>
 <translation id="734373864078049451">Мұнда веб-беттер, бетбелгілер және басқа Chromium материалдары тұрады.</translation>
 <translation id="7349591376906416160">Жүйе әкімшісі Chromium браузерін <ph name="TARGET_URL_HOSTNAME" /> бетіне кіргенде <ph name="ALTERNATIVE_BROWSER_NAME" /> браузері ашылатын етіп конфигурациялады.</translation>
-<translation id="7366100504948874379">Chromium браузерінде де қосылсын ба?</translation>
 <translation id="7398989605938454041">Chromium профильдері арқылы Chromium-дегі барлық материалыңызды бөле аласыз. Осылайша оларды жұмыс немесе көңіл көтеру топтарына оңай іріктеуге болады.</translation>
 <translation id="7448255348454382571">Chromium OS жүйесін қайта қосу</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium әзірлеуші нұсқасы</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb
index 570b8efc..0073bf2 100644
--- a/chrome/app/resources/chromium_strings_km.xtb
+++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -241,6 +241,7 @@
 <translation id="7561906087460245826">សម្អាតទិន្នន័យពី Chromium (<ph name="URL" />) ផងដែរ</translation>
 <translation id="7585853947355360626">ប្រសិនបើ​ការកំណត់​មិនបង្ហាញនៅលើទំព័រនេះទេ សូមមើលនៅក្នុងការកំណត់កម្មវិធីរុករកតាមអ៊ីនធឺណិត <ph name="LINK_BEGIN" />
       Chromium OS របស់អ្នក<ph name="LINK_END" /></translation>
+<translation id="7597596667193879455">អ្នកបានបើក​ការរុករកដោយ​សុវត្ថិភាពបន្ថែមនៅក្នុង​គណនីរបស់អ្នក។ ឥឡូវនេះ យកវាសម្រាប់ Chromium។</translation>
 <translation id="761356813943268536">Chromium កំពុងប្រើកាមេរ៉ា និងម៉ៃក្រូហ្វូនរបស់អ្នក។</translation>
 <translation id="7617377681829253106">Chromium កាន់តែប្រសើរឡើង</translation>
 <translation id="7686590090926151193">Chromium មិនមែន​ជា​កម្មវិធីរុករក​តាមអ៊ីនធឺណិត​លំនាំដើម​របស់អ្នក​ទេ</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb
index 173e76e..5ddebcd 100644
--- a/chrome/app/resources/chromium_strings_kn.xtb
+++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -107,6 +107,7 @@
 <translation id="4271805377592243930">Chromium ಜೊತೆಗೆ ಸಹಾಯ ಪಡೆಯಿರಿ</translation>
 <translation id="4285930937574705105">ಅನಿರ್ದಿಷ್ಟ ದೋಷದಿಂದಾಗಿ ಸ್ಥಾಪನೆಯು ವಿಫಲಗೊಂಡಿದೆ. Chromium ಪ್ರಸ್ತುತ ಚಾಲನೆಯಲ್ಲಿದ್ದರೆ, ದಯವಿಟ್ಟು ಅದನ್ನು ಮುಚ್ಚಿರಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="4407044323746248786">ಹೇಗಿದ್ದರೂ Chromium ನಿಂದ ನಿರ್ಗಮಿಸುವುದೇ?</translation>
+<translation id="4414390922528416758">Chromium ಪ್ರಮುಖವಾಗಿ ಪರಿಗಣಿಸುವ ಗೌಪ್ಯತೆ ಆಯ್ಕೆಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ. ಈ ಮಾರ್ಗದರ್ಶಿಯು ಪ್ರತಿಯೊಂದು ಸೆಟ್ಟಿಂಗ್ ಮತ್ತು ಆಯ್ಕೆಯನ್ನು ಒಳಗೊಂಡಿಲ್ಲ.</translation>
 <translation id="4415566066719264597">Chromium ಹಿನ್ನೆಲೆಯಲ್ಲಿ ರನ್ ಆಗಲು ಅನುಮತಿಸಿ</translation>
 <translation id="4423735387467980091">Chromium ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ</translation>
 <translation id="4427306783828095590">ಫಿಶಿಂಗ್ ಮತ್ತು ಮಾಲ್‌ವೇರ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲು ವರ್ಧಿತ ಸುರಕ್ಷತೆ ಹೆಚ್ಚಿನ ಸಹಾಯ ಮಾಡುತ್ತದೆ</translation>
@@ -288,5 +289,6 @@
 <translation id="9214764063801632699">Chromium OS ಸಿಸ್ಟಂ</translation>
 <translation id="93478295209880648">Windows XP ಅಥವಾ Windows Vista ದಲ್ಲಿ Chromium ಗೆ ಈಗ ಬೆಂಬಲವಿಲ್ಲದೇ ಇರುವುದರಿಂದ ಅದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು</translation>
 <translation id="965162752251293939">Chromium ಅನ್ನು ಯಾರು ಬಳಸುತ್ತಿದ್ದಾರೆ?</translation>
+<translation id="967427899662692980">Chromium ನ ಪ್ರಬಲ ಭದ್ರತೆಯನ್ನು ಪಡೆಯಿರಿ</translation>
 <translation id="985602178874221306">Chromium ಲೇಖಕರು</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb
index 3c16785..c308429 100644
--- a/chrome/app/resources/chromium_strings_ky.xtb
+++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -230,7 +230,6 @@
 <translation id="7339898014177206373">Жаңы терезе</translation>
 <translation id="734373864078049451">Веб, кыстармаларыңыз жана Chromium'дагы жеке дайын-даректериңиз бул жерде жайгашкан.</translation>
 <translation id="7349591376906416160">Тутумуңуздун администратору Chromium'ду <ph name="TARGET_URL_HOSTNAME" /> доменин <ph name="ALTERNATIVE_BROWSER_NAME" /> аркылуу ачууга конфигуациялады.</translation>
-<translation id="7366100504948874379">Chromium'да да күйгүзүлсүнбү?</translation>
 <translation id="7398989605938454041">Chromium профилдери менен Chromium'дагы маалыматты өзүнчө сактай аласыз. Бул жумуш менен эс алууну бири-бири менен аралаштырбоого жардам берет.</translation>
 <translation id="7448255348454382571">Chromium OS'ту өчүрүп-күйгүзүңүз</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Иштеп чыгуучулар үчүн</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb
index 6fc81b0..60894e3 100644
--- a/chrome/app/resources/chromium_strings_lo.xtb
+++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -229,7 +229,6 @@
 <translation id="7339898014177206373">ໜ້າ​ຕ່າງໃໝ່</translation>
 <translation id="734373864078049451">ເວັບຂອງທ່ານ, ບຸກມາກສ໌, ແລະ Chromium ອື່ນສົດຢູ່ທີ່ນີ້.</translation>
 <translation id="7349591376906416160">ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານໄດ້ກຳນົດຄ່າໃຫ້ Chromium ເປີດ <ph name="ALTERNATIVE_BROWSER_NAME" /> ເພື່ອເຂົ້າເຖິງ <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">ເປີດໃຊ້ໃນ Chromium ນຳບໍ?</translation>
 <translation id="7398989605938454041">ດ້ວຍໂປຣໄຟລ໌ Chromium ທ່ານສາມາດແຍກຂໍ້ມູນ Chromium ຂອງທ່ານທັງໝົດໄດ້. ນີ້ຈະເຮັດໃຫ້ແຍກລະຫວ່າງວຽກ ແລະ ຄວາມມ່ວນໄດ້ງ່າຍຂຶ້ນ.</translation>
 <translation id="7448255348454382571">ປິດເປີດ Chromium OS ຄືນໃໝ່</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb
index 69fb971b..e72df7d9 100644
--- a/chrome/app/resources/chromium_strings_lt.xtb
+++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Gaukite pagalbos dėl „Chromium“</translation>
 <translation id="4285930937574705105">Diegimas nepavyko dėl nežinomos klaidos. Jei šiuo metu veikia „Chromium“, uždarykite ir pabandykite iš naujo.</translation>
 <translation id="4407044323746248786">Vis tiek išeiti iš „Chromium“?</translation>
+<translation id="4414390922528416758">Tinkinkite privatumo pasirinkimus, kurie „Chromium“ laikomi svarbiausiais. Į šį vadovą įtraukiami ne visi nustatymai ir parinktys.</translation>
 <translation id="4415566066719264597">„Chromium“ leidimas fone</translation>
 <translation id="4423735387467980091">Tinkinkite ir valdykite „Chromium“</translation>
 <translation id="4427306783828095590">Naudojant sustiprintą apsaugą pasitelkiama papildomų priemonių sukčiavimui ir kenkėjiškoms programoms užblokuoti</translation>
@@ -298,5 +299,6 @@
 <translation id="9214764063801632699">„Chromium“ OS sistema</translation>
 <translation id="93478295209880648">„Chromium“ gali tinkamai neveikti, nes ji nebepalaikoma naudojant „Windows XP“ arba „Windows Vista“</translation>
 <translation id="965162752251293939">Kas naudoja „Chromium“?</translation>
+<translation id="967427899662692980">Patikimiausios „Chromium“ saugos užtikrinimas</translation>
 <translation id="985602178874221306">„Chromium“ autoriai</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_mk.xtb b/chrome/app/resources/chromium_strings_mk.xtb
index 4d8056d..85ea656 100644
--- a/chrome/app/resources/chromium_strings_mk.xtb
+++ b/chrome/app/resources/chromium_strings_mk.xtb
@@ -229,7 +229,6 @@
 <translation id="7339898014177206373">Нов прозорец</translation>
 <translation id="734373864078049451">Вашите веб, обележувачи и други работи на Chromium живеат тука.</translation>
 <translation id="7349591376906416160">Системскиот администратор го конфигурирал Chromium да отвора <ph name="ALTERNATIVE_BROWSER_NAME" /> за пристап до <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Да се вклучи и во Chromium?</translation>
 <translation id="7398989605938454041">Со профилите на Chromium може да ги одделите сите ваши работи на Chromium. Со ова е полесно да се одделат работата и забавата.</translation>
 <translation id="7448255348454382571">Рестартирајте го Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb
index 2867228d33..fc05b05 100644
--- a/chrome/app/resources/chromium_strings_ml.xtb
+++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -230,7 +230,6 @@
 <translation id="7339898014177206373">പുതിയ വിന്‍ഡോ</translation>
 <translation id="734373864078049451">നിങ്ങളുടെ വെബ്, ബുക്ക്മാർക്കുകൾ,മറ്റ് Chromium ഫയൽ എന്നിവ ഇവിടെ തത്സമയമാണ്.</translation>
 <translation id="7349591376906416160"><ph name="TARGET_URL_HOSTNAME" /> ആക്‌സസ് ചെയ്യാൻ <ph name="ALTERNATIVE_BROWSER_NAME" /> തുറക്കുന്നതിനായി നിങ്ങളുടെ സിസ്‌റ്റം അഡ്‌മിൻ Chromium കോൺഫിഗർ ചെയ്‌തു.</translation>
-<translation id="7366100504948874379">Chromium-ലും ഓണാക്കണോ?</translation>
 <translation id="7398989605938454041">Chromium പ്രൊഫൈലുകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ എല്ലാ Chromium ഉള്ളടക്കവും വേർതിരിക്കാം. ജോലികാര്യങ്ങളും വിനോദവും പ്രത്യേകമായി തരംതിരിക്കുന്നത് ഇത് കൂടുതൽ എളുപ്പമാക്കുന്നു.</translation>
 <translation id="7448255348454382571">Chromium OS പുനഃരാരംഭിക്കുക</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb
index a5f5f2be..0ea770d4 100644
--- a/chrome/app/resources/chromium_strings_mn.xtb
+++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -226,7 +226,6 @@
 <translation id="7339898014177206373">Шинэ цонх</translation>
 <translation id="734373864078049451">Таны веб хуудас, хавчуурга, болон бусад Chromium-ийн зүйлс энд байдаг.</translation>
 <translation id="7349591376906416160">Таны системийн админ Chromium-г<ph name="TARGET_URL_HOSTNAME" />-д хандахын тулд <ph name="ALTERNATIVE_BROWSER_NAME" />-г нээхээр тохируулсан байна.</translation>
-<translation id="7366100504948874379">Мөн Chromium-д асаах уу?</translation>
 <translation id="7398989605938454041">Та Chromium-н профайлуудаар Chromium-н бүх зүйлээ тусгаарлах боломжтой. Энэ нь ажил болон зугаацдаг зүйлсээ тусад нь байлгахад илүү хялбар болгоно.</translation>
 <translation id="7448255348454382571">Chromium OS-г дахин эхлүүлэх</translation>
 <translation id="7449453770951226939"><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 6f0fe7f5..1258035 100644
--- a/chrome/app/resources/chromium_strings_mr.xtb
+++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -110,6 +110,7 @@
 <translation id="4271805377592243930">Chromium सह मदत मिळवा</translation>
 <translation id="4285930937574705105">नमूद न केलेल्या एररमुळे स्थापना अयशस्वी झाली. सध्‍या Chromium चालत असल्‍यास, कृपया त्‍यास बंद करा आणि पुन्‍हा प्रयत्‍न करा.</translation>
 <translation id="4407044323746248786">तरीही Chromium बंद करायचे?</translation>
+<translation id="4414390922528416758">Chromium ला गोपनीयतेसंबंधित सर्वात महत्त्वाच्या वाटणाऱ्या निवडी कस्टमाइझ करा. या मार्गदर्शकामध्ये प्रत्येक सेटिंग आणि पर्यायाचा समावेश नाही.</translation>
 <translation id="4415566066719264597">Chromium बॅकग्राउंडमध्ये सुरू द्या</translation>
 <translation id="4423735387467980091">Chromium कस्टमाइझ करा आणि नियंत्रित करा</translation>
 <translation id="4427306783828095590">वर्धित सुरक्षितता फिशिंग आणि मालवेअर अधिक चांगल्यारितीने ब्लॉक करते</translation>
@@ -297,5 +298,6 @@
 <translation id="9214764063801632699">Chromium OS सिस्टम</translation>
 <translation id="93478295209880648">Chromium ला आता Windows XP किंवा Windows Vista चा सपोर्ट नसल्यामुळे ते आता कदाचित अचूकपणे काम करणार नाही</translation>
 <translation id="965162752251293939">Chromium कोण वापरत आहे?</translation>
+<translation id="967427899662692980">Chrome ची सर्वात मजबूत सुरक्षा मिळवा</translation>
 <translation id="985602178874221306">Chromium लेखक</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb
index a084b8d..f1f65da 100644
--- a/chrome/app/resources/chromium_strings_my.xtb
+++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -231,7 +231,6 @@
 <translation id="7339898014177206373">ဝင်ဒိုး အသစ်</translation>
 <translation id="734373864078049451">သင်၏ ဝဘ်၊ စာညှပ်များ၊ နှင့်အခြား Chromium အကြောင်းရာများ ဤနေရာတွင်ရှိသည်။</translation>
 <translation id="7349591376906416160">သင့်စနစ်စီမံခန့်ခွဲသူသည် <ph name="TARGET_URL_HOSTNAME" /> သို့ ဝင်ကြည့်ရန်အတွက် <ph name="ALTERNATIVE_BROWSER_NAME" /> ဖွင့်ရန် Chromium ကို စီစဉ်သတ်မှတ်ထားသည်။</translation>
-<translation id="7366100504948874379">Chromium တွင်ပါ ဖွင့်မလား။</translation>
 <translation id="7398989605938454041">သင်၏ Chromium လုပ်ဆောင်ချက်အားလုံးကို Chromium ပရိုဖိုင်များဖြင့် သီးသန့်ခွဲခြားနိုင်သည်။ အလုပ်နှင့် ပျော်ရွှင်မှုကြား ခွဲခြားနိုင်ရန် ပိုမိုလွယ်ကူစေသည်။</translation>
 <translation id="7448255348454382571">Chromium OS ကို ပြန်လည်စတင်ပါ</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_ne.xtb b/chrome/app/resources/chromium_strings_ne.xtb
index e5b38e35..1ecd53ad 100644
--- a/chrome/app/resources/chromium_strings_ne.xtb
+++ b/chrome/app/resources/chromium_strings_ne.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">Chromium को सम्बन्धमा मद्दत प्राप्त गर्नुहोस्</translation>
 <translation id="4285930937574705105">अनिश्चित त्रुटिको कारणले गर्दा स्थापना असफल भयो। यदि Chromium हालै चालू छ भने, कृपया त्यसलाई बन्द गर्नुहोस् र पुन: प्रयास गर्नुहोस्।</translation>
 <translation id="4407044323746248786">जे भए पनि Chromium बाट बाहिरिने हो?</translation>
+<translation id="4414390922528416758">Chromium ले अत्यन्तै महत्त्वपूर्ण ठान्ने गोपनीयतासम्बन्धी विकल्पहरू कस्टमाइज गर्नुहोस्। यो निर्देशिकामा सबै सेटिङ र विकल्पहरू समावेश गरिएको छैन।</translation>
 <translation id="4415566066719264597">Chromium लाई पृष्ठभूमिमा चल्न दिनुहोस्</translation>
 <translation id="4423735387467980091">Chromium आफू अनुकूल र नियन्त्रण गर्नुहोस्</translation>
 <translation id="4427306783828095590">परिष्कृत सुरक्षा प्रयोग गरी फिसिङ तथा मालवेयरमाथि अझ राम्रोसँग रोक लगाउन सकिन्छ</translation>
@@ -296,5 +297,6 @@
 <translation id="9214764063801632699">Chromium OS सिस्टम</translation>
 <translation id="93478295209880648">Chromium अब उप्रान्त Windows XP वा Windows Vista मा समर्थित नभएका कारण यसले सही ढङ्गले काम नगर्न सक्छ</translation>
 <translation id="965162752251293939">Chromium कसले चलाउँदै हुनुहुन्छ?</translation>
+<translation id="967427899662692980">Chromium को सबैभन्दा भरपर्दो सुरक्षा प्राप्त गर्नुहोस्</translation>
 <translation id="985602178874221306">Chromium लेखकहरू</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb
index 8674355..e721b13 100644
--- a/chrome/app/resources/chromium_strings_nl.xtb
+++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -228,7 +228,6 @@
 <translation id="7339898014177206373">Nieuw venster</translation>
 <translation id="734373864078049451">Hier vind je internet, bookmarks en andere Chromium-instellingen.</translation>
 <translation id="7349591376906416160">Je systeembeheerder heeft Chromium geconfigureerd om <ph name="ALTERNATIVE_BROWSER_NAME" /> te openen voor toegang tot <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Ook aanzetten in Chromium?</translation>
 <translation id="7398989605938454041">Met Chromium-profielen kun je alle Chromium-gegevens gescheiden houden. Zo kun je makkelijker onderscheid maken tussen werk en privé.</translation>
 <translation id="7448255348454382571">Chromium OS opnieuw opstarten</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium voor ontwikkelaars</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb
index 8a2f2f0b..239ad30 100644
--- a/chrome/app/resources/chromium_strings_no.xtb
+++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">Få hjelp med Chromium</translation>
 <translation id="4285930937574705105">Installeringen mislyktes på grunn av en uspesifisert feil. Lukk Chromium hvis nettleseren kjører, og prøv på nytt.</translation>
 <translation id="4407044323746248786">Vil du avslutte Chromium likevel?</translation>
+<translation id="4414390922528416758">Tilpass personvernvalgene som anses for å være de viktigste i Chromium. Denne veiledningen omfatter ikke alle innstillinger og alternativer.</translation>
 <translation id="4415566066719264597">La Chromium kjøre i bakgrunnen</translation>
 <translation id="4423735387467980091">Tilpass og kontrollér Chromium</translation>
 <translation id="4427306783828095590">Økt beskyttelse gjør mer for å blokkere nettfisking og skadelig programvare</translation>
@@ -226,7 +227,6 @@
 <translation id="7339898014177206373">Nytt vindu</translation>
 <translation id="734373864078049451">Her finner du nettinnholdet, bokmerkene og de andre Chromium-tingene dine.</translation>
 <translation id="7349591376906416160">Systemadministratoren din har konfigurert Chromium til å åpne <ph name="ALTERNATIVE_BROWSER_NAME" /> for å få tilgang til <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Vil du slå det på i Chromium også?</translation>
 <translation id="7398989605938454041">Med Chromium-profiler kan du holde alle Chromium-tingene dine atskilt. Dette gjør det lettere å skille mellom arbeid og fritid.</translation>
 <translation id="7448255348454382571">Start Chromium OS på nytt</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium for utviklere</translation>
@@ -296,5 +296,6 @@
 <translation id="9214764063801632699">Chromium OS-systemet</translation>
 <translation id="93478295209880648">Chromium fungerer kanskje ikke riktig fordi den ikke lenger støttes på Windows XP eller Windows Vista</translation>
 <translation id="965162752251293939">Hvem bruker Chromium?</translation>
+<translation id="967427899662692980">Få den sterkeste sikkerheten i Chromium</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb
index 0d23dfb4..55fc69c 100644
--- a/chrome/app/resources/chromium_strings_pl.xtb
+++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -224,7 +224,6 @@
 <translation id="7339898014177206373">Nowe okno</translation>
 <translation id="734373864078049451">Tu są Twoje strony, zakładki i inne dane z Chromium.</translation>
 <translation id="7349591376906416160">Administrator systemu skonfigurował Chromium tak, by strona <ph name="TARGET_URL_HOSTNAME" /> otwierała się w przeglądarce <ph name="ALTERNATIVE_BROWSER_NAME" />.</translation>
-<translation id="7366100504948874379">Włączyć też w Chromium?</translation>
 <translation id="7398989605938454041">Dzięki profilom Chromium wszystkie swoje rzeczy z tej przeglądarki możesz przechowywać osobno. To pozwala łatwo oddzielić pracę od rozrywki.</translation>
 <translation id="7448255348454382571">Ponowne uruchomienie Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-BR.xtb b/chrome/app/resources/chromium_strings_pt-BR.xtb
index 682d15a..1367e34 100644
--- a/chrome/app/resources/chromium_strings_pt-BR.xtb
+++ b/chrome/app/resources/chromium_strings_pt-BR.xtb
@@ -222,7 +222,6 @@
 <translation id="7339898014177206373">Nova janela</translation>
 <translation id="734373864078049451">Sua Web, seus favoritos e demais conteúdo do Chromium estão aqui.</translation>
 <translation id="7349591376906416160">O administrador do seu sistema configurou o Chromium para abrir o <ph name="ALTERNATIVE_BROWSER_NAME" /> ao acessar <ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Ativar também no Chromium?</translation>
 <translation id="7398989605938454041">Você pode usar os perfis do Chromium para separar todos os seus dados nele. Assim, fica mais fácil dividir suas atividades entre trabalho e diversão.</translation>
 <translation id="7448255348454382571">Reiniciar o Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" />: Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb
index 51978f3..2608dd5 100644
--- a/chrome/app/resources/chromium_strings_ro.xtb
+++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">Obține ajutor privind Chromium</translation>
 <translation id="4285930937574705105">Instalarea a eșuat din cauza unei erori necunoscute. Dacă Chromium rulează în acest moment, închideți-l și încercați din nou.</translation>
 <translation id="4407044323746248786">Ieși din Chromium oricum?</translation>
+<translation id="4414390922528416758">Personalizează opțiunile de confidențialitate pe care Chromium le consideră cele mai importante. Acest ghid nu conține toate setările și opțiunile.</translation>
 <translation id="4415566066719264597">Permite Chromium să ruleze în fundal</translation>
 <translation id="4423735387467980091">Personalizați și controlați Chromium</translation>
 <translation id="4427306783828095590">Protecția îmbunătățită face mai multe pentru blocarea phishingului și a programelor malware</translation>
@@ -295,5 +296,6 @@
 <translation id="9214764063801632699">Sistemul de operare Chromium</translation>
 <translation id="93478295209880648">Este posibil ca Chromium să nu funcționeze corespunzător, deoarece nu mai este acceptat pe Windows XP sau Windows Vista</translation>
 <translation id="965162752251293939">Cine folosește Chromium?</translation>
+<translation id="967427899662692980">Beneficiază de cel mai înalt nivel de securitate de la Chromium</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb
index c1b1048..9bb701d8 100644
--- a/chrome/app/resources/chromium_strings_si.xtb
+++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Chromium සමගින් උදවු ලබා ගන්න</translation>
 <translation id="4285930937574705105">අනපේකෂිත දෝෂයක් හේතුවෙන් ස්ථාපනය අසාර්ථක විය. Chromium දැනටමත් ධාවනය වෙමින් පවතී නම්, එය වසා නැවත උත්සාහ කරන්න.</translation>
 <translation id="4407044323746248786">කෙසේ වුවත් Chromium වෙතින් ඉවත් වන්න ද?</translation>
+<translation id="4414390922528416758">Chromium වඩාත්ම වැදගත් ලෙස සලකන පෞද්ගලිකත්ව තේරීම් අභිරුචිකරණය කරන්න. මෙම මාර්ගෝපදේශයට සෑම සැකසුමක්ම සහ විකල්පයක්ම ඇතුළත් නොවේ.</translation>
 <translation id="4415566066719264597">Chromium හට පසුබිම ධාවනය වීමට ඉඩ දෙන්න</translation>
 <translation id="4423735387467980091">Chromium පාලනය හා රුචිකරණය</translation>
 <translation id="4427306783828095590">තතුබෑම් සහ අනිෂ්ට මෘදුකාංග අවහිර කිරීමට වැඩි දියුණු කළ ආරක්ෂාව වැඩි දෙයක් කරයි</translation>
@@ -229,7 +230,6 @@
 <translation id="7339898014177206373">නව කවුළුව</translation>
 <translation id="734373864078049451">ඔබේ වෙබ් අඩවි, පිටු සලකුණු සහ වෙනත්Chromium උපකරණ මෙහි ඇත.</translation>
 <translation id="7349591376906416160">ඔබේ පද්ධති පරිපාලකයා <ph name="TARGET_URL_HOSTNAME" /> වෙත ප්‍රවේශ වීමට <ph name="ALTERNATIVE_BROWSER_NAME" /> විවෘත කිරීමට Chromium වින්‍යාස කර ඇත.</translation>
-<translation id="7366100504948874379">Chromium තුළද ක්‍රියාත්මක කරන්නද?</translation>
 <translation id="7398989605938454041">Chromium පැතිකඩවල් සමඟ ඔබට ඔබගේ සියලු Chromium දේවල් වෙන් කළ හැකිය. මෙය වැඩ සහ විනෝදය වෙන් කිරීම පහසු කරයි.</translation>
 <translation id="7448255348454382571">Chromium OS යළි අරඹන්න</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
@@ -299,5 +299,6 @@
 <translation id="9214764063801632699">Chromium OS පද්ධතිය</translation>
 <translation id="93478295209880648">Chromium තවදුරටත් Windows XP හෝ Windows Vista මත සහාය නොදක්වන නිසා නිවැරදිව ක්‍රියා නොකරනු ඇත</translation>
 <translation id="965162752251293939">Chromium භාවිත කරමින් සිටින්නේ කවුද?</translation>
+<translation id="967427899662692980">Chromium හි ප්‍රබලම ආරක්ෂාව ලබා ගන්න</translation>
 <translation id="985602178874221306">Chromium කර්තෘවරුන්</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb
index 9f675c6..8a2470bc 100644
--- a/chrome/app/resources/chromium_strings_sk.xtb
+++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -230,7 +230,6 @@
 <translation id="7339898014177206373">Nové okno</translation>
 <translation id="734373864078049451">Tu nájdete svoj obsah na webe, záložky a ďalšie položky prehliadača Chromium.</translation>
 <translation id="7349591376906416160">Správca systému nakonfiguroval Chromium, aby <ph name="TARGET_URL_HOSTNAME" /> otváral v prehliadači <ph name="ALTERNATIVE_BROWSER_NAME" />.</translation>
-<translation id="7366100504948874379">Chcete ho zapnúť aj v prehliadači Chromium?</translation>
 <translation id="7398989605938454041">Profilmi prehliadača Chromium môžete oddeliť všetok svoj obsah v prehliadači Chromium. Jednoduchšie tak rozdelíte prácu a zábavu.</translation>
 <translation id="7448255348454382571">Reštartovanie systému Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb
index dd2ff935..2b9aacd 100644
--- a/chrome/app/resources/chromium_strings_sl.xtb
+++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -229,7 +229,6 @@
 <translation id="7339898014177206373">Novo okno</translation>
 <translation id="734373864078049451">Tu so shranjeni vaš splet, zaznamki in druge stvari v Chromiumu.</translation>
 <translation id="7349591376906416160">Skrbnik sistema je Chromium nastavil tako, da za dostop do <ph name="TARGET_URL_HOSTNAME" /> odpre brskalnik <ph name="ALTERNATIVE_BROWSER_NAME" />.</translation>
-<translation id="7366100504948874379">Želite vklopiti tudi v Chromiumu?</translation>
 <translation id="7398989605938454041">S profili v Chromiumu lahko ločite vse stvari v Chromiumu. Tako laže ločite delo in zabavo.</translation>
 <translation id="7448255348454382571">Vnovičen zagon OS-a Chromium</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – različica Chromiuma za razvijalce</translation>
diff --git a/chrome/app/resources/chromium_strings_sr-Latn.xtb b/chrome/app/resources/chromium_strings_sr-Latn.xtb
index f430ec6b..d56d2fe 100644
--- a/chrome/app/resources/chromium_strings_sr-Latn.xtb
+++ b/chrome/app/resources/chromium_strings_sr-Latn.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Pronađite pomoć za Chromium</translation>
 <translation id="4285930937574705105">Instalacija nije uspela zbog neodređene greške. Ako je Chromium trenutno otvoren, zatvorite ga i pokušajte ponovo.</translation>
 <translation id="4407044323746248786">Želite li ipak da zatvorite Chromium?</translation>
+<translation id="4414390922528416758">Prilagodite podešavanja privatnosti koja Chromium smatra najvažnijim. Ovaj vodič ne obuhvata svako podešavanje i opciju.</translation>
 <translation id="4415566066719264597">Neka Chromium radi u pozadini</translation>
 <translation id="4423735387467980091">Prilagodite i kontrolišite Chromium</translation>
 <translation id="4427306783828095590">Poboljšana zaštita nudi više mogućnosti za blokiranje „pecanja“ i malvera</translation>
@@ -298,5 +299,6 @@
 <translation id="9214764063801632699">Sistem Chromium OS</translation>
 <translation id="93478295209880648">Chromium možda neće ispravno funkcionisati zato što više nije podržan na Windows XP-u ili Windows Vista-i</translation>
 <translation id="965162752251293939">Ko koristi Chromium?</translation>
+<translation id="967427899662692980">Nabavite najjaču Chromium zaštitu</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb
index 7216dc5..8ce0f76f 100644
--- a/chrome/app/resources/chromium_strings_sr.xtb
+++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Пронађите помоћ за Chromium</translation>
 <translation id="4285930937574705105">Инсталација није успела због неодређене грешке. Ако је Chromium тренутно отворен, затворите га и покушајте поново.</translation>
 <translation id="4407044323746248786">Желите ли ипак да затворите Chromium?</translation>
+<translation id="4414390922528416758">Прилагодите подешавања приватности која Chromium сматра најважнијим. Овај водич не обухвата свако подешавање и опцију.</translation>
 <translation id="4415566066719264597">Нека Chromium ради у позадини</translation>
 <translation id="4423735387467980091">Прилагодите и контролишите Chromium</translation>
 <translation id="4427306783828095590">Побољшана заштита нуди више могућности за блокирање „пецања“ и малвера</translation>
@@ -298,5 +299,6 @@
 <translation id="9214764063801632699">Систем Chromium ОС</translation>
 <translation id="93478295209880648">Chromium можда неће исправно функционисати зато што више није подржан на Windows XP-у или Windows Vista-и</translation>
 <translation id="965162752251293939">Ко користи Chromium?</translation>
+<translation id="967427899662692980">Набавите најјачу Chromium заштиту</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb
index 60e8c7c..9f8f285 100644
--- a/chrome/app/resources/chromium_strings_sw.xtb
+++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">Pata usaidizi wa kutumia Chromium</translation>
 <translation id="4285930937574705105">Usanidi umeshindwa kwa sababu ya hitilafu isiyojulikana. Ikiwa Chromium inaendesha sasa, tafadhali ifunge na ujaribu tena.</translation>
 <translation id="4407044323746248786">Ungependa kufunga Chromium?</translation>
+<translation id="4414390922528416758">Weka mapendeleo kwenye chaguo za faragha ambazo Chromium inachukulia kuwa ni muhimu zaidi. Mwongozo huu haujumuishi mipangilio na chaguo zote.</translation>
 <translation id="4415566066719264597">Ruhusu Chromium itumike Chinichini</translation>
 <translation id="4423735387467980091">Dhibiti na ugeuze Chromium ikufae</translation>
 <translation id="4427306783828095590">Kipengele cha ulinzi wa hali ya juu hufanya mengi zaidi ili kuzuia programu hasidi na wizi wa data binafsi</translation>
@@ -298,5 +299,6 @@
 <translation id="9214764063801632699">Mfumo wa Uendeshaji wa Chromium</translation>
 <translation id="93478295209880648">Huenda Chromium isifanye kazi vizuri kwa sababu haitumiki tena kwenye Windows XP au Windows Vista</translation>
 <translation id="965162752251293939">Ni nani anayetumia Chromium?</translation>
+<translation id="967427899662692980">Pata usalama thabiti zaidi kutoka Chromium</translation>
 <translation id="985602178874221306">Waandishi wa Chromium</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb
index b22e8b1..dbd5446 100644
--- a/chrome/app/resources/chromium_strings_te.xtb
+++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -107,6 +107,7 @@
 <translation id="4271805377592243930">Chromium గురించి సహాయాన్ని పొందండి</translation>
 <translation id="4285930937574705105">పేర్కొనబడని ఎర్రర్ కారణంగా ఇన్‌స్టాలేషన్ విఫలమైంది. ప్రస్తుతం Chromium అమలు చేయబడుతుంటే, దయచేసి దీనిని మూసివేసి, మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="4407044323746248786">ఏదేమైనా Chromium నుండి నిష్క్రమించాలా?</translation>
+<translation id="4414390922528416758">Chromium అత్యంత ముఖ్యమైనవిగా పరిగణించే గోప్యతా ఎంపికలను అనుకూలంగా మార్చండి. ఈ గైడ్‌ ప్రతి సెట్టింగ్, ఆప్షన్‌ను కలిగి ఉండదు.</translation>
 <translation id="4415566066719264597">నేపథ్యంలో అమలయ్యేందుకు Chromiumని అనుమతించండి</translation>
 <translation id="4423735387467980091">Chromiumను అనుకూలీకరించండి మరియు నియంత్రించండి</translation>
 <translation id="4427306783828095590">ఫిషింగ్, అలాగే మాల్‌వేర్‌ను బ్లాక్ చేయడానికి మెరుగుపరచిన రక్షణ మరింత చేయగలదు</translation>
@@ -223,7 +224,6 @@
 <translation id="7339898014177206373">కొత్త విండో</translation>
 <translation id="734373864078049451">మీ వెబ్, బుక్‌మార్క్‌లు మరియు ఇతర Chromium అంశాలు ఇక్కడ చూపబడతాయి.</translation>
 <translation id="7349591376906416160"><ph name="TARGET_URL_HOSTNAME" />ను యాక్సెస్ చేయడం కోసం <ph name="ALTERNATIVE_BROWSER_NAME" />ను తెరిచే విధంగా Chromiumను మీ సిస్టమ్ నిర్వాహకుడు కాన్ఫిగర్ చేశారు.</translation>
-<translation id="7366100504948874379">Chromiumలో కూడా ఆన్ చేయాలా?</translation>
 <translation id="7398989605938454041">మీ మొత్తం Chromium అంశాలను, మీరు Chromium ప్రొఫైల్‌లతో వేరు చేయండి. ఇలా చేయడం వలన ఆఫీస్, వినోదాన్ని వేర్వేరుగా ఉంచవచ్చు.</translation>
 <translation id="7448255348454382571">Chromium OSని మళ్లీ ప్రారంభించండి</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
@@ -293,5 +293,6 @@
 <translation id="9214764063801632699">Chromium OS సిస్టమ్</translation>
 <translation id="93478295209880648">Chromiumకి ఇప్పుడు Windows XP లేదా Windows Vistaలో మద్దతు లేనందున ఇది సరిగ్గా పని చేయకపోవచ్చు</translation>
 <translation id="965162752251293939">Chromiumను ఎవరు ఉపయోగిస్తున్నారు?</translation>
+<translation id="967427899662692980">Chromium అత్యంత సురక్షితమైన సెక్యూరిటీని పొందండి</translation>
 <translation id="985602178874221306">Chromium రచయితలు</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb
index 6af4f1c..5d11e3f6 100644
--- a/chrome/app/resources/chromium_strings_th.xtb
+++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">รับความช่วยเหลือเกี่ยวกับ Chromium</translation>
 <translation id="4285930937574705105">การติดตั้งล้มเหลวเนื่องจากมีข้อผิดพลาดที่ไม่ได้ระบุ หาก Chromium ทำงานอยู่ในขณะนี้ โปรดปิดและลองอีกครั้ง</translation>
 <translation id="4407044323746248786">ออกจาก Chromium ใช่ไหม</translation>
+<translation id="4414390922528416758">ปรับแต่งตัวเลือกด้านความเป็นส่วนตัวที่ Chromium จัดว่าสำคัญที่สุด คำแนะนำนี้อาจมีการตั้งค่าและตัวเลือกไม่ครบทั้งหมด</translation>
 <translation id="4415566066719264597">ให้ Chromium ทำงานในพื้นหลัง</translation>
 <translation id="4423735387467980091">กำหนดค่าและควบคุม Chromium</translation>
 <translation id="4427306783828095590">การปกป้องที่ปรับปรุงแล้วทำได้มากกว่าบล็อกฟิชชิงและมัลแวร์</translation>
@@ -226,7 +227,6 @@
 <translation id="7339898014177206373">หน้าต่างใหม่</translation>
 <translation id="734373864078049451">เว็บของคุณ บุ๊กมาร์ก และข้อมูลอื่นๆ ใน Chromium พร้อมใช้แล้วที่นี่</translation>
 <translation id="7349591376906416160">ผู้ดูแลระบบได้กำหนดค่าให้ Chromium เปิด <ph name="ALTERNATIVE_BROWSER_NAME" /> เพื่อเข้าถึง <ph name="TARGET_URL_HOSTNAME" /></translation>
-<translation id="7366100504948874379">เปิดใน Chromium ด้วยไหม</translation>
 <translation id="7398989605938454041">โปรไฟล์ Chromium ช่วยให้คุณแยกข้อมูลต่างๆ ใน Chromium ได้ ซึ่งทำให้แยกการทำงานออกจากความบันเทิงได้ง่ายขึ้น</translation>
 <translation id="7448255348454382571">รีสตาร์ท Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
@@ -295,5 +295,6 @@
 <translation id="9214764063801632699">ระบบ Chromium OS</translation>
 <translation id="93478295209880648">Chromium อาจทำงานไม่ถูกต้องเพราะไม่รองรับ Windows XP หรือ Windows Vista อีกต่อไป</translation>
 <translation id="965162752251293939">ใครกำลังใช้ Chromium อยู่</translation>
+<translation id="967427899662692980">รับการรักษาความปลอดภัยที่เข้มงวดที่สุดของ Chromium</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb
index f0594c7..8584e17 100644
--- a/chrome/app/resources/chromium_strings_tr.xtb
+++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -107,6 +107,7 @@
 <translation id="4271805377592243930">Chromium'la ilgili yardım alın</translation>
 <translation id="4285930937574705105">Belirlenemeyen bir hata nedeniyle yükleme başarısız oldu. Chromium şu anda çalışır durumdaysa kapatıp yeniden deneyin.</translation>
 <translation id="4407044323746248786">Yine de Chromium'dan çıkılsın mı?</translation>
+<translation id="4414390922528416758">Chromium'un en önemli olduğunu düşündüğü gizlilik seçeneklerini özelleştirin. Bu kılavuzda her ayar ve seçenek yer almaz.</translation>
 <translation id="4415566066719264597">Chromium'un Arka Planda Çalışmasına İzin Ver</translation>
 <translation id="4423735387467980091">Chromium'u özelleştirin ve kontrol edin</translation>
 <translation id="4427306783828095590">Gelişmiş koruma, kimlik avını ve kötü amaçlı yazılımları engellemek için daha fazla özellik sunar</translation>
@@ -293,5 +294,6 @@
 <translation id="9214764063801632699">Chromium OS sistemi</translation>
 <translation id="93478295209880648">Chromium artık Windows XP veya Windows Vista üzerinde desteklenmediği için doğru şekilde çalışmayabilir</translation>
 <translation id="965162752251293939">Chromium'u kim kullanıyor?</translation>
+<translation id="967427899662692980">Chromium'un en güçlü güvenlik özelliğinden faydalanın</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb
index a77e3fdb..e24ef34 100644
--- a/chrome/app/resources/chromium_strings_uk.xtb
+++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -227,7 +227,6 @@
 <translation id="7339898014177206373">Нове вікно</translation>
 <translation id="734373864078049451">Тут містяться ваші веб-сторінки, закладки та інші дані Chromium.</translation>
 <translation id="7349591376906416160">Ваш системний адміністратор налаштував Chromium відкривати сторінку <ph name="TARGET_URL_HOSTNAME" /> в <ph name="ALTERNATIVE_BROWSER_NAME" />.</translation>
-<translation id="7366100504948874379">Також увімкнути в Chromium?</translation>
 <translation id="7398989605938454041">Створюйте профілі Chromium для різних цілей (наприклад, робочий і особистий), щоб розмежовувати роботу й дозвілля.</translation>
 <translation id="7448255348454382571">Перезапустіть ОС Chromium</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> – Версія Chromium для розробників</translation>
diff --git a/chrome/app/resources/chromium_strings_ur.xtb b/chrome/app/resources/chromium_strings_ur.xtb
index 46c5118..d0549c7 100644
--- a/chrome/app/resources/chromium_strings_ur.xtb
+++ b/chrome/app/resources/chromium_strings_ur.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">‏Chromium کے بارے میں مدد حاصل کریں</translation>
 <translation id="4285930937574705105">‏غیر متعینہ خرابی کی وجہ سے انسٹالیشن ناکام ہو گیا۔ اگر فی الحال Chromium چل رہا ہے تو براہ کرم اسے بند کر دیں اور دوبارہ کوشش کریں۔</translation>
 <translation id="4407044323746248786">‏بہر حال Chromium کو بند کریں؟</translation>
+<translation id="4414390922528416758">‏رازداری کے ان اختیارات کو حسب ضرورت بنائیں جنہیں Chromium انتہائی اہم سمجھتا ہے۔ اس گائیڈ میں ہر ترتیب اور اختیار شامل نہیں ہے۔</translation>
 <translation id="4415566066719264597">‏Chromium کو پس منظر میں چلنے دیں</translation>
 <translation id="4423735387467980091">‏Chromium کو حسب ضرورت بنائیں اور کنٹرول کریں</translation>
 <translation id="4427306783828095590">فریب دہی اور میلوئیر کو مسدود کرنے کیلئے بہتر کردہ حفاظت مزید کام کرتی ہے</translation>
@@ -228,7 +229,6 @@
 <translation id="7339898014177206373">نئی ونڈو</translation>
 <translation id="734373864078049451">‏آپ کی ویب، بُک مارکس اور دیگر Chromium مواد یہاں پر لائیو ہے۔</translation>
 <translation id="7349591376906416160">‏آپ کے سسٹم کے منتظم نے <ph name="TARGET_URL_HOSTNAME" /> تک رسائی حاصل کرنے کیلئے Chromium کو <ph name="ALTERNATIVE_BROWSER_NAME" /> کھولنے کیلئے کنفیگر کیا ہے۔</translation>
-<translation id="7366100504948874379">‏Chromium میں بھی آن کرنا چاہتے ہیں؟</translation>
 <translation id="7398989605938454041">‏Chromium کی پروفائلز کے ساتھ آپ اپنی تمام Chromium چیزوں کو الگ کر سکتے ہیں۔ یہ کام اور تفریح کے درمیان تقسیم کرنا زیادہ آسان بناتا ہے۔</translation>
 <translation id="7448255348454382571">‏Chromium OS کو ری سٹارٹ کریں</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
@@ -298,5 +298,6 @@
 <translation id="9214764063801632699">‏Chromium OS سسٹم</translation>
 <translation id="93478295209880648">‏ممکن ہے کہ Chromium ٹھیک طریقے سے کام نہ کرے کیونکہ یہ اب Windows XP یا Windows Vista پر تعاون یافتہ نہیں ہے</translation>
 <translation id="965162752251293939">‏Chromium کون استعمال کر رہا ہے؟</translation>
+<translation id="967427899662692980">‏Chromium کی مضبوط ترین سیکیورٹی حاصل کریں</translation>
 <translation id="985602178874221306">‏Chromium مصنّفین</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb
index 99f5079..e816266 100644
--- a/chrome/app/resources/chromium_strings_uz.xtb
+++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -226,7 +226,6 @@
 <translation id="7339898014177206373">Yangi oyna</translation>
 <translation id="734373864078049451">Chromium’dagi barcha veb-sahifalar, xatcho‘plar va boshqa ma’lumotlarni bu yerdan topish mumkin.</translation>
 <translation id="7349591376906416160">Tizim administratori tomonidan Chromium brauzeri <ph name="TARGET_URL_HOSTNAME" /> sahifasini <ph name="ALTERNATIVE_BROWSER_NAME" /> orqali ochiladigan qilib sozlangan.</translation>
-<translation id="7366100504948874379">Chromiumda ham yoqilsinmi?</translation>
 <translation id="7398989605938454041">Chromium profillari brauzerdan alohida foydalanish uchun kerak. Bunda ish va hordiqni ajratish osonlashadi.</translation>
 <translation id="7448255348454382571">Chromium OS tizimini ishga tushirish</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb
index 30720985..e3f2728 100644
--- a/chrome/app/resources/chromium_strings_zh-HK.xtb
+++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -111,6 +111,7 @@
 <translation id="4271805377592243930">取得 Chromium 相關說明</translation>
 <translation id="4285930937574705105">不明錯誤導致安裝失敗。如果目前 Chromium 正在執行,請關閉 Chromium,然後再試一次。</translation>
 <translation id="4407044323746248786">仍要結束 Chromium 嗎?</translation>
+<translation id="4414390922528416758">自訂 Chromium 最重視的隱私權選項。這份指南並未涵蓋所有設定和選項。</translation>
 <translation id="4415566066719264597">讓 Chromium 在背景執行</translation>
 <translation id="4423735387467980091">自訂及控制 Chromium</translation>
 <translation id="4427306783828095590">強化保護功能可進一步封鎖仿冒詐騙和惡意軟件</translation>
@@ -228,7 +229,6 @@
 <translation id="7339898014177206373">新視窗</translation>
 <translation id="734373864078049451">您瀏覽的網頁、書籤和其他 Chromium 內容都在這裡。</translation>
 <translation id="7349591376906416160">系統管理員已設定由 Chromium 開啟 <ph name="ALTERNATIVE_BROWSER_NAME" /> 以存取 <ph name="TARGET_URL_HOSTNAME" />。</translation>
-<translation id="7366100504948874379">要一併在 Chromium 中開啟這項功能嗎?</translation>
 <translation id="7398989605938454041">透過 Chromium 設定檔,您可將所有 Chromium 內容分門別類,從而更輕易劃分工作和娛樂內容。</translation>
 <translation id="7448255348454382571">重新啟動 Chromium 作業系統</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium 開發人員版</translation>
@@ -297,5 +297,6 @@
 <translation id="9214764063801632699">Chromium 作業系統</translation>
 <translation id="93478295209880648">由於 Chromium 將不再支援 Windows XP 或 Windows Vista,因此可能無法正常運作</translation>
 <translation id="965162752251293939">誰在使用 Chromium?</translation>
+<translation id="967427899662692980">獲得 Chromium 最強大的安全防護</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb
index a6981fd..6f3b640f 100644
--- a/chrome/app/resources/chromium_strings_zh-TW.xtb
+++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -109,6 +109,7 @@
 <translation id="4271805377592243930">前往 Chromium 說明頁面</translation>
 <translation id="4285930937574705105">不明錯誤導致安裝失敗。如果目前 Chromium 正在執行,請關閉 Chromium,然後再試一次。</translation>
 <translation id="4407044323746248786">確定要結束 Chromium 嗎?</translation>
+<translation id="4414390922528416758">自訂 Chromium 最重視的隱私權選項。這份指南並未涵蓋所有設定和選項。</translation>
 <translation id="4415566066719264597">讓 Chromium 在背景執行</translation>
 <translation id="4423735387467980091">自訂及控制 Chromium</translation>
 <translation id="4427306783828095590">強化防護功能可進一步封鎖網路詐騙和惡意軟體</translation>
@@ -226,7 +227,6 @@
 <translation id="7339898014177206373">新視窗</translation>
 <translation id="734373864078049451">你瀏覽的網頁、書籤和其他 Chromium 設定都在這裡。</translation>
 <translation id="7349591376906416160">你的系統管理員已設定由 Chromium 開啟 <ph name="ALTERNATIVE_BROWSER_NAME" /> 以存取 <ph name="TARGET_URL_HOSTNAME" />。</translation>
-<translation id="7366100504948874379">要一併在 Chromium 中開啟這項功能嗎?</translation>
 <translation id="7398989605938454041">你可以運用 Chromium 設定檔區隔各種 Chromium 資料,更輕鬆區分工作和娛樂。</translation>
 <translation id="7448255348454382571">重新啟動 Chromium 作業系統</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium 開發人員版</translation>
@@ -296,5 +296,6 @@
 <translation id="9214764063801632699">Chromium 作業系統</translation>
 <translation id="93478295209880648">Chromium 已不適用於 Windows XP 或 Windows Vista,因此可能無法正常運作</translation>
 <translation id="965162752251293939">誰在使用 Chromium?</translation>
+<translation id="967427899662692980">獲得 Chromium 最強大的安全防護</translation>
 <translation id="985602178874221306">The Chromium Authors</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb
index ded1f32..b4c4ee6 100644
--- a/chrome/app/resources/chromium_strings_zu.xtb
+++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -229,7 +229,6 @@
 <translation id="7339898014177206373">Iwindi elisha</translation>
 <translation id="734373864078049451">Iwebhu yakho, amabhukhimakhi, nezinye izinto ze-Chromium zihlala lapha.</translation>
 <translation id="7349591376906416160">Umlawuli wakho wesistimu ulungiselele i-Chromium ukuthi ivule i-<ph name="ALTERNATIVE_BROWSER_NAME" /> ukuze ifinyelele ku-<ph name="TARGET_URL_HOSTNAME" />.</translation>
-<translation id="7366100504948874379">Vula futhi ku-Chromium?</translation>
 <translation id="7398989605938454041">Ngamaphrofayela we-Chromium ungahlukanisa zonke izinto zakho ze-Chromium. Lokhu kwenza kube lula ukuhlukanisa phakathi komsebenzi nokuzijabulisa.</translation>
 <translation id="7448255348454382571">Qalisa kabusha i-Chromium OS</translation>
 <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium Dev</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index 1271334..51d9381 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Linux-terugstelling vind tans plaas</translation>
 <translation id="1244303850296295656">Uitbreidingfout</translation>
 <translation id="1246863218384630739">Kon nie <ph name="VM_NAME" /> installeer nie: Prent-URL het 'n <ph name="HTTP_ERROR" />-foutkode gewys. Kontak jou administrateur.</translation>
-<translation id="1247071602516579380">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, tablet genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Verwag beginkrulhakie: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Dit sal <ph name="TOTAL_USAGE" /> se data uitvee wat deur werwe en geïnstalleerde programme geberg is</translation>
 <translation id="1251578593170406502">Soek tans mobieledatanetwerke …</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> gekies</translation>
 <translation id="1442851588227551435">Stel aktiewe Kerberos-kaartjie</translation>
 <translation id="1444628761356461360">Hierdie instelling word deur die toesteleienaar, <ph name="OWNER_EMAIL" />, bestuur.</translation>
-<translation id="1445005312224723356">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, foon genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Kon nie "<ph name="IMAGE_PATH" />" vir tema laai nie.</translation>
 <translation id="1449191289887455076">Druk “<ph name="CURRENTKEY" />” weer om toewysing te bevestig en <ph name="RESPONSE" />.</translation>
 <translation id="1451375123200651445">Webbladsy, enkellêer</translation>
@@ -872,7 +870,6 @@
 <translation id="1855079636134697549">Kamera is aangeskakel</translation>
 <translation id="1856715684130786728">Voeg ligging by …</translation>
 <translation id="1858585891038687145">Vertrou hierdie sertifikaat om sagtewaremakers te identifiseer</translation>
-<translation id="1859787252990099899">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, onbekende toestel genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Hierdie vouer is leeg</translation>
 <translation id="1862311223300693744">Het jy enige geïnstalleerde spesiale VPN-, instaanbediener-, brandmuur- of
     NAS-sagteware?</translation>
@@ -1248,7 +1245,6 @@
 <translation id="2242687258748107519">Lêerinligting</translation>
 <translation id="2246549592927364792">Kry prentbeskrywings van Google af?</translation>
 <translation id="2247738527273549923">Jou organisasie bestuur jou toestel</translation>
-<translation id="2249061317998743208">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, speletjiebeheerder genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Maak as oortjievenster oop</translation>
 <translation id="2249605167705922988">bv. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Maak met stelselbekyker oop</translation>
@@ -2010,7 +2006,6 @@
 <translation id="3007771295016901659">Dupliseer oortjie</translation>
 <translation id="3008232374986381779">Gebruik Linux-nutsgoed, -redigeerders en -IDE's op jou <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Stel toestemmings terug</translation>
-<translation id="3008396025115884998">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, oudiotoestel genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> vereis dat jy vandag aan wi-fi koppel om 'n opdatering af te laai. Of laai oor 'n beperkte verbinding af (heffings kan geld).}other{<ph name="MANAGER" /> vereis dat jy voor die sperdatum aan wi-fi koppel en 'n opdatering aflaai. Of laai oor 'n beperkte verbinding af (heffings kan geld).}}</translation>
 <translation id="3009300415590184725">Is jy seker jy wil die mobieledatadiens se opstelproses kanselleer?</translation>
 <translation id="3009779501245596802">Geïndekseerde databasisse</translation>
@@ -2316,7 +2311,6 @@
 <translation id="3348038390189153836">Verwyderbare toestel bespeur</translation>
 <translation id="3348131053948466246">Emosiekoon voorgestel. Druk op of af om te navigeer en Enter om in te voeg.</translation>
 <translation id="3349933790966648062">Berginggebruik</translation>
-<translation id="3354972872297836698">Kon nie met toestel <ph name="DEVICE_NAME" /> saambind nie; kies toestel om weer te probeer</translation>
 <translation id="3355936511340229503">Verbindingfout</translation>
 <translation id="3356580349448036450">Voltooi</translation>
 <translation id="3359256513598016054">Sertifikaatbeleidbeperkings</translation>
@@ -2748,6 +2742,7 @@
 <translation id="3788331399335602504">hierdie lêers</translation>
 <translation id="3788401245189148511">Dit kan:</translation>
 <translation id="3789841737615482174">Installeer</translation>
+<translation id="3790417903123637354">Iets is fout. Probeer later weer</translation>
 <translation id="379082410132524484">Jou kaart het verval</translation>
 <translation id="3792890930871100565">Ontkoppel drukkers</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome het nie enige skadelike sagteware op jou rekenaar gekry nie • 1 dag gelede nagegaan}other{Chrome het nie enige skadelike sagteware op jou rekenaar gekry nie • {NUM_DAYS} dae gelede nagegaan}}</translation>
@@ -3147,7 +3142,6 @@
 <translation id="4200689466366162458">Gepasmaakte woorde</translation>
 <translation id="4200983522494130825">Nuwe oortjie</translation>
 <translation id="4201546031411513170">Jy kan altyd in instellings kies wat om te sinkroniseer.</translation>
-<translation id="4202417625268941299">Jy sal die beste sekuriteit in Chrome met Verbeterde Veiligblaai kry</translation>
 <translation id="420283545744377356">Skakel sluimerskerm af</translation>
 <translation id="4206144641569145248">Ruimtewese</translation>
 <translation id="4206323443866416204">Terugvoerverslag</translation>
@@ -3654,7 +3648,6 @@
 <translation id="4759238208242260848">Aflaaie</translation>
 <translation id="4761104368405085019">Gebruik jou mikrofoon</translation>
 <translation id="4762718786438001384">Toestel se skyfspasie is gevaarlik laag</translation>
-<translation id="4762898026821161650">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, rekenaar genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Die volgende webkoekies is gestel toe jy hierdie bladsy bekyk het</translation>
 <translation id="4765582662863429759">Laat Android Boodskappe toe om SMS'e van jou foon af na jou Chromebook toe oor te dra</translation>
 <translation id="4768332406694066911">Jy het sertifikate van hierdie organisasies af wat jou identifiseer</translation>
@@ -5835,7 +5828,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Veiligheidskontrole het 1 minuut gelede plaasgevind}other{Veiligheidskontrole het {NUM_MINS} minute gelede plaasgevind}}</translation>
 <translation id="7057767408836081338">Kon nie programdata verkry nie; probeer steeds om die program te laat loop …</translation>
 <translation id="7058024590501568315">Versteekte netwerk</translation>
-<translation id="70582545822664495">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, muis genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Stel na outo-begin</translation>
 <translation id="7062222374113411376">Laat werwe wat onlangs toegemaak is toe om data klaar te stuur en te ontvang (aanbeveel)</translation>
 <translation id="7063129466199351735">Verwerk tans kortpaaie …</translation>
@@ -5999,7 +5991,6 @@
 <translation id="7257173066616499747">Wi-Fi-netwerke</translation>
 <translation id="725758059478686223">Drukdiens</translation>
 <translation id="7257666756905341374">Lees data wat jy kopieer en plak</translation>
-<translation id="7258006747130724016">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, videokamera genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformasies</translation>
 <translation id="7258225044283673131">Die progam reageer nie. Kies "Forseer toemaak" om die program toe te maak.</translation>
 <translation id="7262004276116528033">Hierdie aanmelddiens word deur <ph name="SAML_DOMAIN" /> gehou</translation>
@@ -6795,7 +6786,6 @@
 <translation id="8037117027592400564">Lees alle teks uitgespreek met gesintetiseerde spraak</translation>
 <translation id="8037357227543935929">Vra (verstek)</translation>
 <translation id="803771048473350947">Lêer</translation>
-<translation id="8038399858950372766">Toestel <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, sleutelbord genaamd <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Stuur terugvoer</translation>
 <translation id="8042142357103597104">Teksondeursigtigheid</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> reageer nie.</translation>
@@ -6871,6 +6861,7 @@
 <translation id="81020759409809034">Plaaslike ligging</translation>
 <translation id="8102139037507939978">Verwyder persoonlik identifiseerbare inligting uit system_logs.txt.</translation>
 <translation id="8104088837833760645">Laai e-SIM-profiel af</translation>
+<translation id="8105368624971345109">Skakel af</translation>
 <translation id="8107015733319732394">Installeer tans die Google Play Winkel op jou <ph name="DEVICE_TYPE" />. Dit kan 'n paar minute neem.</translation>
 <translation id="810728361871746125">Skermresolusie</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Geen derdeparty-webkoekies nie}=1{1 derdeparty-webkoekie is geblokkeer}other{# derdeparty-webkoekies is geblokkeer}}</translation>
@@ -6935,7 +6926,6 @@
 <translation id="8168071266284693455">Jou boekmerke, wagwoorde, geskiedenis en meer word op al jou toestelle gesinkroniseer</translation>
 <translation id="8168435359814927499">Inhoud</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Voeg oortjie by leeslys}other{Voeg oortjies by leeslys}}</translation>
-<translation id="8169849063724750395">Skakel weer aan</translation>
 <translation id="8171334254070436367">Versteek alle kaarte</translation>
 <translation id="8174047975335711832">Toestelinligting</translation>
 <translation id="8174876712881364124">Rugsteun in Google Drive. Stel data maklik terug of wissel enige tyd tussen toestelle. Hierdie rugsteun sluit programdata in. Rugsteune word in Google opgelaai en met jou kind se Google-rekeningwagwoord geënkripteer. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation>
@@ -7009,7 +6999,6 @@
 <translation id="8249615410597138718">Stuur na jou toestelle toe</translation>
 <translation id="8249672078237421304">Bied aan om bladsye wat nie in die taal is wat jy lees nie, te vertaal</translation>
 <translation id="8251441930213048644">Herlaai nou</translation>
-<translation id="8251509999076836464">Bind tans saam met <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Miniprent verwyder.</translation>
 <translation id="825238165904109940">Wys altyd volle URL'e</translation>
 <translation id="8252569384384439529">Laai tans op …</translation>
@@ -7251,7 +7240,6 @@
 <translation id="8534656636775144800">Oeps! Kon nie by die domein aansluit nie. Probeer weer.</translation>
 <translation id="8535005006684281994">Netscape-sertifikaathernuwing se URL</translation>
 <translation id="8536956381488731905">Klank met sleuteldruk</translation>
-<translation id="8538718737588735385">Skakel weer aan</translation>
 <translation id="8539727552378197395">Nee (NetHttp)</translation>
 <translation id="8539766201049804895">Gradeer op</translation>
 <translation id="8540136935098276800">Voer 'n URL in wat reg geformateer is</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 85e3a4b..8639857 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -251,7 +251,6 @@
 <translation id="1244265436519979884">Linux ወደነበረበት መመለስ አሁን በሂደት ላይ ነው</translation>
 <translation id="1244303850296295656">የቅጥያ ስህተት</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" />ን መጫን አልተቻለም፦ የምስል ዩአርኤል የ<ph name="HTTP_ERROR" /> የስህተት ኮድን መልሷል። እባክዎ አስተዳዳሪዎን ያነጋግሩ።</translation>
-<translation id="1247071602516579380">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ ጡባዊ</translation>
 <translation id="1251366534849411931">የሚገመት ጠምዛዛ መያዣን መክፈቻ፦ <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">ይህ በጣቢያዎች እና በተጫኑ መተግበሪያዎቹ የተከማቸ <ph name="TOTAL_USAGE" /> ውሂብ ያጠፋል</translation>
 <translation id="1251578593170406502">የውሂብ ውሂብ አውታረ መረቦችን በመቃኘት ላይ...</translation>
@@ -438,7 +437,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> ተመርጠዋል</translation>
 <translation id="1442851588227551435">ገቢር የKerberos ቲኬት ያቀናብሩ</translation>
 <translation id="1444628761356461360">ይህ ቅንብር በመሣሪያው ባለቤት በ <ph name="OWNER_EMAIL" /> ነው የሚቀናበረው።</translation>
-<translation id="1445005312224723356">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ ስልክ</translation>
 <translation id="144518587530125858">«<ph name="IMAGE_PATH" />»ን ለገጽታ መጫን አልተቻለም።</translation>
 <translation id="1449191289887455076">ምደባን እና <ph name="RESPONSE" />ን ለማረጋገጥ «<ph name="CURRENTKEY" />»ን በድጋሜ ይጫኑ።</translation>
 <translation id="1451375123200651445">ድረ-ገጽ፣ ነጠላ ፋይል</translation>
@@ -869,7 +867,6 @@
 <translation id="1855079636134697549">ካሜራ በርቷል</translation>
 <translation id="1856715684130786728">አካባቢ አክል...</translation>
 <translation id="1858585891038687145">የሶፍትዌር ሠሪዎችን ለመለየት ይህን የዕውቅና ማረጋገጫ እመን</translation>
-<translation id="1859787252990099899">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ ያልታወቀ መሣሪያ</translation>
 <translation id="1861262398884155592">ይህ አቃፊ ባዶ ነው</translation>
 <translation id="1862311223300693744">ማንኛውም ልዩ VPN፣ ተኪ፣ ኬላ ወይም የNAS ሶፍትዌር ጭነዋል?</translation>
 <translation id="1863182668524159459">ምንም ተከታታይ ወደቦች አልተገኙም</translation>
@@ -1244,7 +1241,6 @@
 <translation id="2242687258748107519">የፋይል መረጃ</translation>
 <translation id="2246549592927364792">የምስል ዝርዝሮችን ከGoogle ይገኝ?</translation>
 <translation id="2247738527273549923">የእርስዎ መሣሳያ በእርስዎ ድርጅት የሚተዳደር ነው</translation>
-<translation id="2249061317998743208">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ የጨዋታ መቆጣጠሪያ</translation>
 <translation id="2249111429176737533">እንደ በትር የተከፈተ መስኮት ተከፍቷል</translation>
 <translation id="2249605167705922988">ለምሳሌ፦ 1-5፣ 8፣ 11-13</translation>
 <translation id="2251218783371366160">በስርዓት መመልከቻ ክፈት</translation>
@@ -2004,7 +2000,6 @@
 <translation id="3007771295016901659">የተባዛ ትር</translation>
 <translation id="3008232374986381779">በእርስዎ <ph name="DEVICE_TYPE" /> ላይ የLinux መሣሪያዎችን፣ ጽሑፍ አቀናባሪዎችን እና አይዲኢዎች ያሂዱ። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">ፈቃዶችን ዳግም ያቀናብሩ</translation>
-<translation id="3008396025115884998">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ የኦዲዮ መሣሪያ</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> ዝማኔን ለማውረድ ዛሬ ከWi-Fi ጋር እንዲገናኙ ይፈልግብዎታል። ወይም ደግሞ ከሚለካ ግንኙነት ያውርዱ (ክፍያዎች ሊከፈልባቸው ይችላል)።}one{<ph name="MANAGER" /> ከቀነ ገደቡ በፊት ከWi-Fi ጋር እንዲገናኙ እና ዝማኔን እንዲያወርዱ ይፈልግብዎታል። ወይም ደግሞ ከሚለካ ግንኙነት ያውርዱ (ክፍያዎች ሊከፈልባቸው ይችላል)።}other{<ph name="MANAGER" /> ከቀነ ገደቡ በፊት ከWi-Fi ጋር እንዲገናኙ እና ዝማኔን እንዲያወርዱ ይፈልግብዎታል። ወይም ደግሞ ከሚለካ ግንኙነት ያውርዱ (ክፍያዎች ሊከፈልባቸው ይችላል)።}}</translation>
 <translation id="3009300415590184725">እርግጠኛ ነዎት የተንቀሳቃሽ ስልክ ውሂብ አገልግሎት የማዋቀር ሂደቱን ይቅር ማለት ይፈልጋሉ?</translation>
 <translation id="3009779501245596802">በመረጃ ጠቋሚ የተሰናዱ የውሂብ ጎታዎች</translation>
@@ -2310,7 +2305,6 @@
 <translation id="3348038390189153836">ተነቃይ መሣሪያ ተገኝቷል</translation>
 <translation id="3348131053948466246">ስሜት ገላጭ ምስል ተጠቁሟል። ለመዳሰስ ወደ ላይ እና ወደ ታች ይጫኑና ለማስገባት አስገባን ይጫኑ።</translation>
 <translation id="3349933790966648062">የማህደረ ትውስታ</translation>
-<translation id="3354972872297836698">ከ<ph name="DEVICE_NAME" /> መሣሪያ ጋር መጣመር አልቻለም፤ እንደገና ለመሞከር መሣሪያ ይምረጡ</translation>
 <translation id="3355936511340229503">የግንኙነት ስህተት</translation>
 <translation id="3356580349448036450">ተጠናቅቋል</translation>
 <translation id="3359256513598016054">የሰርቲፊኬት መመሪያ እገዳዎች</translation>
@@ -2518,6 +2512,7 @@
 <translation id="3557101512409028104">የድር ጣቢያ ገደቦችን እና የማያ ገጽ ጊዜ ገደቦችን በFamily Link ያቀናብሩ</translation>
 <translation id="3559262020195162408">በመሣሪያው ላይ መመሪያን መጫን አልተሳካም።</translation>
 <translation id="3559533181353831840"><ph name="TIME_LEFT" /> ገደማ ይቀራል</translation>
+<translation id="3559697822483154494">እንደ የተከፈለ ማያ ገጽ እና ዴስኮችን መቀየር ላሉ እርምጃዎች የንዝረት ማረጋገጫን ይቀበሉ።</translation>
 <translation id="3560034655160545939">&amp;የሥርዓተ ሆሄያት ፍተሻ</translation>
 <translation id="3562423906127931518">ይህ ሂደት ጥቂት ደቂቃዎችን ሊወስድ ይችላል። የLinux መያዣውን በማዋቀር ላይ።</translation>
 <translation id="3562655211539199254">ከእርስዎ ስልክ ላይ የቅርብ ጊዜዎቹን የChrome ትሮች ይመልከቱ</translation>
@@ -2742,6 +2737,7 @@
 <translation id="3788331399335602504">እነዚህ ፋይሎች</translation>
 <translation id="3788401245189148511">ይህንን ሊያደርግ ይችላል፦</translation>
 <translation id="3789841737615482174">ጫን  </translation>
+<translation id="3790417903123637354">የሆነ ችግር ተፈጥሯል። ቆይተው እንደገና ይሞክሩ</translation>
 <translation id="379082410132524484">የእርስዎ ካርድ የአገልግሎት ጊዜው አብቅቷል</translation>
 <translation id="3792890930871100565">አታሚዎችን ግንኙነት አቋርጥ</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome በኮምፒውተርዎ ላይ ጎጂ ሶፍትዌር አላገኘም • ከ1 ቀን በፊት ተፈትሿል}one{Chrome በኮምፒውተርዎ ላይ ጎጂ ሶፍትዌር አላገኘም • ከ‎{NUM_DAYS} ቀናት በፊት ተፈትሿል}other{Chrome በኮምፒውተርዎ ላይ ጎጂ ሶፍትዌር አላገኘም • ከ‎{NUM_DAYS} ቀናት በፊት ተፈትሿል}}</translation>
@@ -3139,7 +3135,6 @@
 <translation id="4200689466366162458">ብጁ ቃላት</translation>
 <translation id="4200983522494130825">አዲስ &amp;ትር</translation>
 <translation id="4201546031411513170">በማንኛውም ጊዜ በቅንብሮች ውስጥ ምን ለማስመር መምረጥ ይችላሉ።</translation>
-<translation id="4202417625268941299">በየተሻሻለ የደህንነት አሰሳ አማካኝነት፣ የChromeን ከሁሉም በላይ ጠንካራ የሆነ ደህንነት ያገኛሉ</translation>
 <translation id="420283545744377356">የማያ ገጽ ማቆያን አጥፋ</translation>
 <translation id="4206144641569145248">በዓድ ፍጥረት</translation>
 <translation id="4206323443866416204">የግብረመልስ ሪፖርት</translation>
@@ -3645,7 +3640,6 @@
 <translation id="4759238208242260848">የወረዱ</translation>
 <translation id="4761104368405085019">ማይክፎሮንዎን ይጠቀማል</translation>
 <translation id="4762718786438001384">የመሣሪያ የዲስክ ቦታ እጅግ በጣም ዝቅተኛ ነው</translation>
-<translation id="4762898026821161650">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ ኮምፒውተር</translation>
 <translation id="4763408175235639573">ይህን ገጽ ሲመለከቱት የሚከተሉት ኩኪዎች ተቀናብረዋል</translation>
 <translation id="4765582662863429759">የAndroid መልዕክቶች ከስልክዎ የሚመጡ ጽሑፎችን ወደ የእርስዎ Chromebook እንዲያስተላልፉ ያስችለዋል</translation>
 <translation id="4768332406694066911">እርስዎን የሚለዩ ከእነዚህ ድርጅቶች የመጡ የዕውቅና ማረጋገጫዎች አለዎት</translation>
@@ -4916,6 +4910,7 @@
 <translation id="6112931163620622315">ስልክዎን ይፈትሹ</translation>
 <translation id="6113434369102685411">ለChrome አሳሽ እና ለ<ph name="DEVICE_TYPE" /> አስጀማሪ የእርስዎን ነባሪ የፍለጋ ፕሮግራም ያቀናብሩ</translation>
 <translation id="6113942107547980621">Smart Lockን ለመጠቀም፣ በእርስው ስልክ ላይ ወደ ተቀዳሚ የተጠቃሚ መገለጫ ይቀይሩ</translation>
+<translation id="611684075852771314">እነዚህ ምዝግብ ማስታወሻዎች በእኔ ፋይሎች ውስጥ እንደሚከተለው ተቀምጠዋል</translation>
 <translation id="6116921718742659598">የቋንቋ እና ግቤት ቅንብሮችን ይቀይሩ</translation>
 <translation id="6119927814891883061">መሳሪያን ወደ <ph name="DEVICE_NAME" /> ይሰይሙ</translation>
 <translation id="6120205520491252677">ይህን ገጽ የመነሻ ገጹ ላይ ይሰኩት...</translation>
@@ -5692,6 +5687,7 @@
 <translation id="6930036377490597025">ውጫዊ የደህንነት ቁልፍ ወይም አብሮገነብ ዳሳሽ</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{አንድ ቅጥያ ተቀባይነት አላገኘም}one{# ቅጥያዎች ተቀባይነት አላገኙም}other{# ቅጥያዎች ተቀባይነት አላገኙም}}</translation>
 <translation id="6930321203306643451">ማላቅ ተጠናቅቋል</translation>
+<translation id="6931690462168617033">የጠቅታ ጥንካሬ</translation>
 <translation id="6935286146439255109">የወረቀት ትሪ ይጎድላል</translation>
 <translation id="693807610556624488">የመጻፍ ክወናው ከየሚከተለው መገለጫ ባሕሪ ከሚፈቀደው ከፍተኛ ርዝመት ይበልጣል፦ «<ph name="DEVICE_NAME" />»።</translation>
 <translation id="6938386202199793006">እርስዎ 1 የተቀመጠ አታሚ አልዎት።</translation>
@@ -5825,7 +5821,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{የደህንነት ፍተሻ ከ1 ደቂቃ በፊት ተካሂዷል}one{የደህንነት ፍተሻ ከ{NUM_MINS} ደቂቃዎች በፊት ተካሂዷል}other{የደህንነት ፍተሻ ከ{NUM_MINS} ደቂቃዎች በፊት ተካሂዷል}}</translation>
 <translation id="7057767408836081338">የመተግበሪያ ውሂብን ማግኘት አልተቻለም፣ ለማንኛውም መተግበሪያውን ለማሄድ ይሞክሩ...</translation>
 <translation id="7058024590501568315">የተደበቀ አውታረ መረብ</translation>
-<translation id="70582545822664495">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ መዳፊት</translation>
 <translation id="7059858479264779982">ወደ ራስ-አስጀምር አዋቅር</translation>
 <translation id="7062222374113411376">በቅርቡ የተዘጉ ጣቢያዎች ውሂብን መላክ እና መቀበል እንዲጨርሱ ፍቀድ (የሚመከር)</translation>
 <translation id="7063129466199351735">አቋራጮች በመስራት ላይ...</translation>
@@ -5989,7 +5984,6 @@
 <translation id="7257173066616499747">የWi-Fi አውታረ መረቦች</translation>
 <translation id="725758059478686223">የሕትመት አገልግሎት</translation>
 <translation id="7257666756905341374">የሚቀዱትን እና የሚለጥፉትን ውሂብ ያነብባል</translation>
-<translation id="7258006747130724016">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ የቪድዮ ካሜራ</translation>
 <translation id="7258192266780953209">ዐብይ ለውጦች</translation>
 <translation id="7258225044283673131">መተግበሪያው ምላሽ እየሰጠ አይደለም። መተግበሪያውን ለመዝጋት «በግዳጅ ዝጋ»ን ይምረጡ።</translation>
 <translation id="7262004276116528033">ይህ የመለያ መግቢያ አገልግሎት በ<ph name="SAML_DOMAIN" /> የሚስተናገድ ነው</translation>
@@ -6791,7 +6785,6 @@
 <translation id="8037117027592400564">ተሰብስቦ በተሰራ ንግግር አማካኝነት ሁሉንም የተነገሩ ጽሑፎች ያነብባል</translation>
 <translation id="8037357227543935929">ጠይቅ (ነባሪ)</translation>
 <translation id="803771048473350947">ፋይል</translation>
-<translation id="8038399858950372766">መሣሪያ <ph name="DEVICE_INDEX" /> ከ<ph name="DEVICE_COUNT" />፣ <ph name="DEVICE_NAME" /> የተሰኘ የቁልፍ ሰሌዳ</translation>
 <translation id="8041089156583427627">ግብረ መልስ ላክ</translation>
 <translation id="8042142357103597104">የጽሑፍ በርሃን-ከልነት</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> ምላሽ እየሰጠ አይደለም</translation>
@@ -6830,6 +6823,7 @@
 <translation id="8064279191081105977">ቡድን <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">የግንኙነት መገናኛ</translation>
 <translation id="8069615408251337349">Google ዳመና ህትመት</translation>
+<translation id="8070662218171013510">በመንካት የሚገለጽ ግብረmels</translation>
 <translation id="8071432093239591881">እንደ ምስል አስቀምጥ</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />የመተግበሪያ ውሂብ እንደ እውቂያዎች፣ መልዕክቶች፣ እና ፎቶዎች ያለ ውሂብንም ጨምሮ አንድ መተግበሪያ የሚያስቀምጠው ማንኛውም ውሂብ ሊሆን ይችላል (በገንቢው ቅንብሮች ላይ የሚወሰን)።<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />የምትኬ ውሂብ በእርስዎ ልጅ የDrive ማከማቻ ኮታ ላይ አይቆጠርም።<ph name="END_PARAGRAPH2" />
@@ -6867,6 +6861,7 @@
 <translation id="81020759409809034">አካባቢያዊ አካባቢ</translation>
 <translation id="8102139037507939978">በግል ሊለይ የሚችል መረጃን ከ system_logs.txt ያውጡ።</translation>
 <translation id="8104088837833760645">የኢሲም መገለጫ አውርድ</translation>
+<translation id="8105368624971345109">አጥፋ</translation>
 <translation id="8107015733319732394">የGoogle Play መደብርን በእርስዎ <ph name="DEVICE_TYPE" /> ላይ በመጫን ላይ። ይሄ ጥቂት ደቂቃዎችን ሊወስድ ይችላል።</translation>
 <translation id="810728361871746125">የማሳያ ጥራት</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{የሶስተኛ ወገን ኩኪዎች የሉም}=1{1 የሶስተኛ ወገን ኩኪ ታግዷል}one{# የሶስተኛ ወገን ኩኪዎች ታግደዋል}other{# የሶስተኛ ወገን ኩኪዎች ታግደዋል}}</translation>
@@ -6931,7 +6926,6 @@
 <translation id="8168071266284693455">የእርስዎ ዕልባቶች፣ የይለፍ ቃላት፣ ታሪክ እና ተጨማሪ ነገሮች በሁሉም መሣሪያዎችዎ ላይ ሰምረዋል</translation>
 <translation id="8168435359814927499">ይዘት</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ትርን ወደ ንባብ ዝርዝር ያክሉ}one{ትሮችን ወደ ንባብ ዝርዝር ያክሉ}other{ትሮችን ወደ ንባብ ዝርዝር ያክሉ}}</translation>
-<translation id="8169849063724750395">መልሰህ አብራ</translation>
 <translation id="8171334254070436367">ሁሉንም ካርዶች ይደብቁ</translation>
 <translation id="8174047975335711832">የመሣሪያ መረጃ</translation>
 <translation id="8174876712881364124">ምትኬ በGoogle Drive ላይ ያስቀምጡ። በማንኛውም ጊዜ በቀላሉ ውሂብዎን ወደነበረበት ይመልሱ ወይም መሣሪያን ይቀይሩ። ምትኬዎ የመተግበሪያ ውሂብን ያካትታል። የእርስዎ ልጅ ምትኬዎች ወደ Google ይሰቀላሉ እና የእርስዎን የGoogle መለያ የይለፍ ቃል በመጠቀም ተመሣጥረዋል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation>
@@ -7005,7 +6999,6 @@
 <translation id="8249615410597138718">ወደ መሣሪያዎችዎ ይላኩ</translation>
 <translation id="8249672078237421304">በሚያነብቡት ቋንቋ ያልሆኑ ገፆችን እንዲተረጎሙ ሐሳብ ያቅርብ</translation>
 <translation id="8251441930213048644">አሁንኑ አድስ</translation>
-<translation id="8251509999076836464">ከ<ph name="DEVICE_NAME" /> ጋር በመጣመር ላይ</translation>
 <translation id="8251578425305135684">ድንክዬ ተወግዷል።</translation>
 <translation id="825238165904109940">ሁልጊዜ ሙሉ ዩአርኤሎችን አሳይ</translation>
 <translation id="8252569384384439529">በመስቀል ላይ…</translation>
@@ -7247,7 +7240,6 @@
 <translation id="8534656636775144800">ውይ! ጎራውን ለመቀላቀል በመሞከር ላይ ሳለ የሆነ ችግር ተፈጥሯል። እባክዎ እንደገና ይሞክሩ።</translation>
 <translation id="8535005006684281994">የNetscape ሰርቲፊኬት የእድሳት ጊዜ URL</translation>
 <translation id="8536956381488731905">በቁልፍ መጫን ላይ የሚወጣ ድምፅ</translation>
-<translation id="8538718737588735385">መልሰህ አብራ</translation>
 <translation id="8539727552378197395">አይ (ኤችቲቲፒ ብቻ)</translation>
 <translation id="8539766201049804895">አልቅ</translation>
 <translation id="8540136935098276800">በትክክል የተቀረጸ ዩአርኤል ያስገቡ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index fcb23d3..1d574a7 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -254,7 +254,6 @@
 <translation id="1244265436519979884">‏استعادة Linux قيد التقدم حاليًا</translation>
 <translation id="1244303850296295656">خطأ في الإضافة</translation>
 <translation id="1246863218384630739">‏تعذّر تثبيت <ph name="VM_NAME" />: عنوان URL للصورة عرضَ رمز الخطأ <ph name="HTTP_ERROR" />. يُرجى التواصل مع المشرف.</translation>
-<translation id="1247071602516579380">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، جهاز لوحي يُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">قوس متعرج مفتوح بشكلٍ متوقع: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">سيؤدي هذا الإجراء إلى محو <ph name="TOTAL_USAGE" /> من البيانات المُخزّنة من خلال المواقع الإلكترونية والتطبيقات المثبّتة.</translation>
 <translation id="1251578593170406502">جارٍ البحث عن شبكات بيانات الجوّال...</translation>
@@ -441,7 +440,6 @@
 <translation id="144283815522798837">عدد العناصر المحدَّدة: <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">‏ضبط تذكرة Kerberos النشِطة</translation>
 <translation id="1444628761356461360">يتولى إدارة هذا الإعداد مالك الجهاز، <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، هاتف يُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">تعذر تحميل '<ph name="IMAGE_PATH" />' للمظهر.</translation>
 <translation id="1449191289887455076">يمكنك الضغط على مفتاح "<ph name="CURRENTKEY" />" مرة أخرى لتأكيد التخصيص، واختيار <ph name="RESPONSE" /> بعد ذلك.</translation>
 <translation id="1451375123200651445">صفحة ويب، ملف واحد</translation>
@@ -865,7 +863,6 @@
 <translation id="1855079636134697549">تم تشغيل الكاميرا.</translation>
 <translation id="1856715684130786728">إضافة موقع...</translation>
 <translation id="1858585891038687145">الوثوق بهذه الشهادة لتحديد هوية مصممي البرامج</translation>
-<translation id="1859787252990099899">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، جهاز غير معروف يُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">هذا المجلد فارغ</translation>
 <translation id="1862311223300693744">‏هل لديك شبكة افتراضية خاصة (VPN) أو خادم وكيل أو جدار ناري أو برنامج NAS مثبت؟</translation>
 <translation id="1863182668524159459">لم يتم العثور على منافذ تسلسلية</translation>
@@ -1240,7 +1237,6 @@
 <translation id="2242687258748107519">معلومات الملف</translation>
 <translation id="2246549592927364792">‏هل تريد الحصول على أوصاف الصور من Google؟</translation>
 <translation id="2247738527273549923">تتولّى مؤسستك إدارة جهازك.</translation>
-<translation id="2249061317998743208">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، ذراع تحكّم في الألعاب تُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">فتح كنافذة ذات علامة تبويب</translation>
 <translation id="2249605167705922988">مثال: 1-5، 8، 11-13</translation>
 <translation id="2251218783371366160">فتح باستخدام عارض النظام</translation>
@@ -2000,7 +1996,6 @@
 <translation id="3007771295016901659">تكرار علامة التبويب</translation>
 <translation id="3008232374986381779">‏يمكنك تشغيل أدوات Linux وأدوات التعديل وبرامج IDE على <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">إعادة ضبط الأذونات</translation>
-<translation id="3008396025115884998">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، جهاز سماعي يُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{‏يطلُب <ph name="MANAGER" /> منك الاتصال بشبكة Wi-Fi لتنزيل تحديث الجهاز اليوم، أو تنزيله من خلال الاتصال بشبكة تفرض تكلفة استخدام (قد يتم فرض رسوم).}zero{‏يطلُب <ph name="MANAGER" /> منك الاتصال بشبكة Wi-Fi لتنزيل تحديث الجهاز قبل الموعد النهائي، أو تنزيله من خلال الاتصال بشبكة تفرض تكلفة استخدام (قد يتم فرض رسوم).}two{‏يطلُب <ph name="MANAGER" /> منك الاتصال بشبكة Wi-Fi لتنزيل تحديث الجهاز قبل الموعد النهائي، أو تنزيله من خلال الاتصال بشبكة تفرض تكلفة استخدام (قد يتم فرض رسوم).}few{‏يطلُب <ph name="MANAGER" /> منك الاتصال بشبكة Wi-Fi لتنزيل تحديث الجهاز قبل الموعد النهائي، أو تنزيله من خلال الاتصال بشبكة تفرض تكلفة استخدام (قد يتم فرض رسوم).}many{‏يطلُب <ph name="MANAGER" /> منك الاتصال بشبكة Wi-Fi لتنزيل تحديث الجهاز قبل الموعد النهائي، أو تنزيله من خلال الاتصال بشبكة تفرض تكلفة استخدام (قد يتم فرض رسوم).}other{‏يطلُب <ph name="MANAGER" /> منك الاتصال بشبكة Wi-Fi لتنزيل تحديث الجهاز قبل الموعد النهائي، أو تنزيله من خلال الاتصال بشبكة تفرض تكلفة استخدام (قد يتم فرض رسوم).}}</translation>
 <translation id="3009300415590184725">هل تريد فعلًا إلغاء عملية إعداد خدمة بيانات الجوال؟</translation>
 <translation id="3009779501245596802">قواعد بيانات مفهرسة</translation>
@@ -2307,7 +2302,6 @@
 <translation id="3348038390189153836">تم اكتشاف جهاز قابل للإزالة</translation>
 <translation id="3348131053948466246">‏الرموز التعبيرية المُقترَحة. اضغط على السهم المتّجه للأعلى أو للأسفل للتنقُّل ثم اضغط على Enter للإدخال.</translation>
 <translation id="3349933790966648062">الذاكرة المستخدَمة</translation>
-<translation id="3354972872297836698">تعذّر الإقران بالجهاز <ph name="DEVICE_NAME" />، يرجى اختيار جهاز لإعادة المحاولة</translation>
 <translation id="3355936511340229503">خطأ الاتصال</translation>
 <translation id="3356580349448036450">مكتمل</translation>
 <translation id="3359256513598016054">القيود على سياسة الشهادة</translation>
@@ -2739,6 +2733,7 @@
 <translation id="3788331399335602504">هذه الملفات</translation>
 <translation id="3788401245189148511">يمكنه:</translation>
 <translation id="3789841737615482174">تثبيت</translation>
+<translation id="3790417903123637354">حدث خطأ. يُرجى إعادة المحاولة لاحقًا.</translation>
 <translation id="379082410132524484">انتهت صلاحية بطاقتك</translation>
 <translation id="3792890930871100565">فصل الطابعات</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{‏لم يعثر متصفِّح Chrome على برامج ضارّة في جهاز الكمبيوتر • تم إجراء عملية التحقُّق قبل يوم واحد.}zero{‏لم يعثر متصفِّح Chrome على برامج ضارّة في جهاز الكمبيوتر • تم إجراء عملية التحقُّق قبل {NUM_DAYS} يوم.}two{‏لم يعثر متصفِّح Chrome على برامج ضارّة في جهاز الكمبيوتر • تم إجراء عملية التحقُّق قبل يومَين ({NUM_DAYS}).}few{‏لم يعثر متصفِّح Chrome على برامج ضارّة في جهاز الكمبيوتر • تم إجراء عملية التحقُّق قبل {NUM_DAYS} أيام.}many{‏لم يعثر متصفِّح Chrome على برامج ضارّة في جهاز الكمبيوتر • تم إجراء عملية التحقُّق قبل {NUM_DAYS} يومًا.}other{‏لم يعثر متصفِّح Chrome على برامج ضارّة في جهاز الكمبيوتر • تم إجراء عملية التحقُّق قبل {NUM_DAYS} يوم.}}</translation>
@@ -3135,7 +3130,6 @@
 <translation id="4200689466366162458">كلمات مخصصة</translation>
 <translation id="4200983522494130825">علا&amp;مة تبويب جديدة</translation>
 <translation id="4201546031411513170">يمكنك دائمًا اختيار ما تريد مزامنته في الإعدادات.</translation>
-<translation id="4202417625268941299">‏ستوفّر لك ميزة "الحماية المُحسّنة للتصفّح الآمن" أعلى مستويات الحماية من Chrome.</translation>
 <translation id="420283545744377356">إيقاف شاشة التوقف</translation>
 <translation id="4206144641569145248">كائن غريب</translation>
 <translation id="4206323443866416204">تقرير التعليقات</translation>
@@ -3641,7 +3635,6 @@
 <translation id="4759238208242260848">الملفات التي تم تنزيلها</translation>
 <translation id="4761104368405085019">استخدام الميكروفون</translation>
 <translation id="4762718786438001384">مساحة القرص على الجهاز منخفضة للغاية</translation>
-<translation id="4762898026821161650">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، جهاز كمبيوتر يُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">تم ضبط ملفات تعريف الارتباط التالية عند عرض هذه الصفحة</translation>
 <translation id="4765582662863429759">‏للسماح لتطبيق "رسائل Android" بترحيل الرسائل النصية من هاتفك إلى جهاز Chromebook</translation>
 <translation id="4768332406694066911">لديك شهادات تحدد هويتك من هذه المؤسسات</translation>
@@ -5821,7 +5814,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{تم تفعيل ميزة "تأكيد السلامة" قبل دقيقة واحدة.}zero{تم تفعيل ميزة "تأكيد السلامة" قبل {NUM_MINS} دقيقة.}two{تم تفعيل ميزة "تأكيد السلامة" قبل دقيقتَين ({NUM_MINS}).}few{تم تفعيل ميزة "تأكيد السلامة" قبل {NUM_MINS} دقائق.}many{تم تفعيل ميزة "تأكيد السلامة" قبل {NUM_MINS} دقيقة.}other{تم تفعيل ميزة "تأكيد السلامة" قبل {NUM_MINS} دقيقة.}}</translation>
 <translation id="7057767408836081338">تعذَّر علينا الحصول على بيانات التطبيق، ولكن ما نزال نحاول تشغيل التطبيق.</translation>
 <translation id="7058024590501568315">شبكة مخفية</translation>
-<translation id="70582545822664495">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، جهاز ماوس يُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">ضبط على تشغيل تلقائي</translation>
 <translation id="7062222374113411376">السماح للمواقع الإلكترونية التي تم إغلاقها مؤخرًا بإنهاء إرسال البيانات واستلامها (موصى به)</translation>
 <translation id="7063129466199351735">معالجة الاختصارات...</translation>
@@ -5887,7 +5879,8 @@
 <translation id="713122686776214250">إضافة &amp;صفحة...</translation>
 <translation id="7134098520442464001">لتصغير النص</translation>
 <translation id="7135729336746831607">هل تريد تفعيل البلوتوث؟</translation>
-<translation id="7136694880210472378">جعل الخيار تلقائيًا</translation>
+<translation id="7136694880210472378">الضبط كمحرك البحث التلقائي
+</translation>
 <translation id="7136993520339022828">حدث خطأ. يُرجى إعادة المحاولة عن طريق اختيار صور أخرى.</translation>
 <translation id="7138515695467025690">غير مفعّل / سيتم التفعيل تلقائيًا عند غروب الشمس</translation>
 <translation id="7138678301420049075">أخرى</translation>
@@ -5985,7 +5978,6 @@
 <translation id="7257173066616499747">‏شبكات Wi-Fi</translation>
 <translation id="725758059478686223">خدمة الطباعة</translation>
 <translation id="7257666756905341374">قراءة البيانات التي نسختها ولصقتها</translation>
-<translation id="7258006747130724016">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، كاميرا فيديو تُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">تحويل حالات الأحرف</translation>
 <translation id="7258225044283673131">التطبيق لا يستجيب. اختَر "فرض الإغلاق" لإغلاق التطبيق.</translation>
 <translation id="7262004276116528033">يستضيف <ph name="SAML_DOMAIN" /> خدمة تسجيل الدخول هذه.</translation>
@@ -6782,7 +6774,6 @@
 <translation id="8037117027592400564">قراءة جميع النصوص المنطوقة باستخدام الكلام المركب</translation>
 <translation id="8037357227543935929">الطلب (تلقائي)</translation>
 <translation id="803771048473350947">ملف</translation>
-<translation id="8038399858950372766">الجهاز <ph name="DEVICE_INDEX" /> من إجمالي <ph name="DEVICE_COUNT" />، لوحة مفاتيح تُسمَّى <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">إرسال تعليقات</translation>
 <translation id="8042142357103597104">درجة تعتيم النص</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> لا يستجيب.</translation>
@@ -6806,6 +6797,7 @@
 <translation id="8054563304616131773">يُرجى إدخال عنوان بريد إلكتروني صالح</translation>
 <translation id="8054883179223321715">متاح لمشاهدة الفيديو عبر مواقع إلكترونية محدَّدة</translation>
 <translation id="8054921503121346576">‏لوحة مفاتيح USB متصلة</translation>
+<translation id="8057414620575339583">البحث الجانبي</translation>
 <translation id="8058655154417507695">سنة انتهاء الصلاحية</translation>
 <translation id="8058986560951482265">يتقطّع</translation>
 <translation id="8059417245945632445">&amp;فحص الأجهزة</translation>
@@ -6857,6 +6849,7 @@
 <translation id="81020759409809034">مكان تنزيل الملفات على الجهاز</translation>
 <translation id="8102139037507939978">‏إزالة معلومات تحديد الهوية الشخصية من system_logs.txt</translation>
 <translation id="8104088837833760645">‏تنزيل الملف الشخصي لشريحة eSIM</translation>
+<translation id="8105368624971345109">إيقاف</translation>
 <translation id="8107015733319732394">‏تثبيت متجر Google Play على <ph name="DEVICE_TYPE" />. قد يستغرق ذلك بضع دقائق.</translation>
 <translation id="810728361871746125">درجة دقة شاشة العرض</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ليس هناك ملفات تعريف ارتباط تابعة لجهات خارجية}=1{تم حظر ملف تعريف ارتباط واحد تابع لجهات خارجية}two{تم حظر ملفَي تعريف ارتباط تابعَين لجهات خارجية}few{تم حظر # ملفات تعريف ارتباط تابعة لجهات خارجية}many{تم حظر # ملف تعريف ارتباط تابع لجهات خارجية}other{تم حظر # ملف تعريف ارتباط تابع لجهات خارجية}}</translation>
@@ -6921,7 +6914,6 @@
 <translation id="8168071266284693455">تمت مزامنة الإشارات المرجعية وكلمات المرور والسجلّ وغير ذلك على جميع أجهزتك.</translation>
 <translation id="8168435359814927499">المحتوى</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{إضافة علامة التبويب إلى قائمة القراءة}zero{إضافة علامات التبويب إلى قائمة القراءة}two{إضافة علامتَي التبويب إلى قائمة القراءة}few{إضافة علامات التبويب إلى قائمة القراءة}many{إضافة علامات التبويب إلى قائمة القراءة}other{إضافة علامات التبويب إلى قائمة القراءة}}</translation>
-<translation id="8169849063724750395">إعادة تفعيل الميزة</translation>
 <translation id="8171334254070436367">إخفاء جميع البطاقات</translation>
 <translation id="8174047975335711832">معلومات عن الجهاز</translation>
 <translation id="8174876712881364124">‏يمكنك الاحتفاظ بنسخة احتياطية في Google Drive. وبإمكانك استعادة بياناتك أو تبديل جهازك بسهولة في أي وقت، علمًا بأن هذه النسخة الاحتياطية تتضمن بيانات التطبيق. ويتم تحميل النُسخ الاحتياطية إلى Google وتشفيرها باستخدام كلمة مرور حساب طفلك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation>
@@ -6996,7 +6988,6 @@
 <translation id="8249615410597138718">إرسال إلى أجهزتك</translation>
 <translation id="8249672078237421304">عرض ترجمة الصفحات المكتوبة بلغة غير لغتك</translation>
 <translation id="8251441930213048644">إعادة التحميل الآن</translation>
-<translation id="8251509999076836464">جارٍ الإقران بالجهاز <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">تمت إزالة الصورة المصغّرة.</translation>
 <translation id="825238165904109940">‏عرض عناوين URL الكاملة دائمًا</translation>
 <translation id="8252569384384439529">جارٍ التحميل...</translation>
@@ -7238,7 +7229,6 @@
 <translation id="8534656636775144800">عفوًا،  حدث خطأ ما أثناء محاولة الانضمام إلى النطاق. يُرجى إعادة المحاولة.</translation>
 <translation id="8535005006684281994">‏عنوان URL لتجديد شهادة Netscape</translation>
 <translation id="8536956381488731905">إصدار صوت عند الضغط على مفتاح</translation>
-<translation id="8538718737588735385">إعادة تفعيل الميزة</translation>
 <translation id="8539727552378197395">‏لا (HttpOnly)</translation>
 <translation id="8539766201049804895">ترقية</translation>
 <translation id="8540136935098276800">‏يُرجى إدخال عنوان URL بتنسيق صحيح.</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index 6406aa0..65d868b9 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -2515,6 +2515,7 @@
 <translation id="3557101512409028104">Family Linkৰ জৰিয়তে ৱেবছাইট সম্পর্কীয় প্ৰতিবন্ধকতা আৰু স্ক্ৰীণ সক্ৰিয় হৈ থকাৰ সময় সীমা ছেট কৰক</translation>
 <translation id="3559262020195162408">ডিভাইচটোত নীতি ইনষ্টল কৰিব পৰা নগ'ল।</translation>
 <translation id="3559533181353831840">প্ৰায় <ph name="TIME_LEFT" /> বাকী আছে</translation>
+<translation id="3559697822483154494">বিভাজিত স্ক্ৰীন আৰু ডেস্ক সলনি কৰাৰ দৰে কাৰ্যৰ বাবে কম্পনৰ জৰিয়তে নিশ্চিতকৰণ পাওক।</translation>
 <translation id="3560034655160545939">&amp;বানান পৰীক্ষণ</translation>
 <translation id="3562423906127931518">এই প্ৰক্ৰিয়াৰ বাবে কিছু সময়ৰ প্ৰয়োজন হ’ব। Linux কণ্টেনাৰ ছেট আপ কৰি থকা হৈছে।</translation>
 <translation id="3562655211539199254">আপোনাৰ ফ’নৰ পৰা Chromeৰ শেহতীয়া টেবসমূহ চাওক</translation>
@@ -2739,6 +2740,7 @@
 <translation id="3788331399335602504">এইবোৰ ফাইল</translation>
 <translation id="3788401245189148511">ই তলত দিয়াখিনি কৰিব পাৰে:</translation>
 <translation id="3789841737615482174">ইনষ্টল কৰক</translation>
+<translation id="3790417903123637354">কিবা ভুল হ’ল। পাছত পুনৰ চেষ্টা কৰক</translation>
 <translation id="379082410132524484">আপোনাৰ কার্ডৰ ম্যাদ উকলিছে</translation>
 <translation id="3792890930871100565">প্ৰিণ্টাৰৰ সংযোগ বিচ্ছিন্ন কৰক</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে • ১ দিনৰ পূৰ্বে পৰীক্ষা কৰিছে}one{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে • {NUM_DAYS} দিনৰ পূৰ্বে পৰীক্ষা কৰিছে}other{Chromeএ আপোনাৰ কম্পিউটাৰত কোনো ক্ষতিকাৰক ছফ্টৱেৰ বিচাৰি নাপালে • {NUM_DAYS} দিনৰ পূৰ্বে পৰীক্ষা কৰিছে}}</translation>
@@ -3824,6 +3826,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />"এ এটা ছিৰিয়েল প’ৰ্টৰ সৈতে সংযোগ কৰিব বিচাৰে</translation>
 <translation id="4944310289250773232">এই বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ সেৱা <ph name="SAML_DOMAIN" />এ হ'ষ্ট কৰে</translation>
 <translation id="4945439665401275950">ফিংগাৰপ্ৰিণ্ট ছেট আপ কৰিবলৈ আপোনাৰ শিশুক পাৱাৰ বুটামটো স্পৰ্শ কৰিবলৈ দিয়ক। আপোনাৰ শিশুৰ ফিংগাৰপ্ৰিণ্টৰ ডেটা সুৰক্ষিতভাৱে ষ্ট’ৰ কৰা হয় আৰু সেইখিনি সদায় এই <ph name="DEVICE_TYPE" />ত থাকে।</translation>
+<translation id="4946459324029651239">আপুনি উন্নত সুৰক্ষা পাই আছে</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{এটা ফাইল}one{# টা ফাইল}other{# টা ফাইল}}</translation>
 <translation id="495170559598752135">কাৰ্যসমূহ</translation>
 <translation id="4953808748584563296">ডিফ’ল্ট কমলা অৱতাৰ</translation>
@@ -4407,6 +4410,7 @@
 <translation id="5575528586625653441">ডেম’ পঞ্জীয়নৰ অনুৰোধৰ ক্ষেত্ৰত এটা সমস্যা হৈছে।</translation>
 <translation id="557722062034137776">আপোনাৰ ডিভাইচ ৰিছেট কৰিলে আপোনাৰ Google একাউণ্ট বা এই একাউণ্টসমূহৰ লগত ছিংক কৰা যিকোনো ডেটা প্ৰভাৱিত নহ’ব৷ তথাপিও, আপোনাৰ ডিভাইচত স্থানীয়ভাৱে ছেভ কৰা সকলো ফাইল মচি পেলোৱা হ’ব৷</translation>
 <translation id="5578059481725149024">স্বয়ংক্ৰিয়ভাৱে ছাইন ইন কৰক</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> ভাষালৈ অনুবাদ সম্পূৰ্ণ হৈছে</translation>
 <translation id="558170650521898289">Microsoft Windows হাৰ্ডৱেৰ ড্ৰাইভাৰৰ সত্যাপন</translation>
 <translation id="5581972110672966454">ডিভাইচটো ড’মেইনত যোগ দিব নোৱাৰি। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক অথবা আপোনাৰ ডিভাইচৰ গৰাকী অথবা প্ৰশাসকৰ সৈতে যোগাযোগ কৰক। আসোঁৱাহ ক’ড: <ph name="ERROR_CODE" />।</translation>
 <translation id="5582839680698949063">মুখ্য মেনু</translation>
@@ -4911,6 +4915,7 @@
 <translation id="6112931163620622315">আপোনাৰ ফ’নটো চাওক</translation>
 <translation id="6113434369102685411">Chrome ব্ৰাউজাৰ আৰু <ph name="DEVICE_TYPE" /> লঞ্চাৰৰ বাবে আপোনাৰ ডিফ’ল্ট সন্ধান ইঞ্জিন ছেট কৰক</translation>
 <translation id="6113942107547980621">স্মার্ট লক ব্যৱহাৰ কৰিবলৈ, আপোনাৰ ফ'নত প্ৰাথমিক ব্যৱহাৰকাৰীৰ প্ৰ'ফাইল ব্যৱহাৰ কৰক</translation>
+<translation id="611684075852771314">এই লগসমূহ মোৰ ফাইলত এই বুলি ছেভ কৰা হ’ল</translation>
 <translation id="6116921718742659598">ভাষা আৰু ইনপুট ছেটিংসমূহ সলনি কৰক</translation>
 <translation id="6119927814891883061">ডিভাইচৰ নাম <ph name="DEVICE_NAME" /> কৰক</translation>
 <translation id="6120205520491252677">আৰম্ভণিতে দেখা পোৱা স্ক্ৰীণত এই পৃষ্ঠাটো পিন কৰক...</translation>
@@ -5687,6 +5692,7 @@
 <translation id="6930036377490597025">বাহ্যিক সুৰক্ষা চাবি বা বিল্ট-ইন ছেন্সৰ</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{এটা এক্সটেনশ্বন প্ৰত্যাখ্যান কৰা হৈছে}one{# টা এক্সটেনশ্বন প্ৰত্যাখ্যান কৰা হৈছে}other{# টা এক্সটেনশ্বন প্ৰত্যাখ্যান কৰা হৈছে}}</translation>
 <translation id="6930321203306643451">আপগ্ৰে’ড সম্পূৰ্ণ হ’ল</translation>
+<translation id="6931690462168617033">ক্লিকৰ ক্ষমতা</translation>
 <translation id="6935286146439255109">এখন পেপাৰ ট্ৰে’ নাই</translation>
 <translation id="693807610556624488">লিখা কাৰ্য এই ডিভাইচৰ এট্ৰিবিউটৰ সৰ্বোচ্চ দৈৰ্ঘ্য অতিক্ৰম কৰিছে: "<ph name="DEVICE_NAME" />"।</translation>
 <translation id="6938386202199793006">আপোনাৰ ১ টা ছেভ কৰি থোৱা প্ৰিণ্টাৰ আছে।</translation>
@@ -6815,6 +6821,7 @@
 <translation id="8064279191081105977">গোট <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">ডায়লগৰ সৈতে সংযোগ কৰি থকা হৈছে</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">হেপটিক ফীডবেক</translation>
 <translation id="8071432093239591881">প্ৰতিচ্ছবি হিচাপে প্ৰিণ্ট কৰক</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />এপে ছেভ কৰা যিকোনো ডেটা (বিকাশকৰ্তাৰ ছেটিঙৰ ওপৰত ভিত্তি কৰি) এপ্ ডেটা হ’ব পাৰে, সম্পৰ্ক, বাৰ্তা আৰু ফট’ ইয়াৰ অন্তৰ্ভুক্ত হয়।<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />আপোনাৰ সন্তানৰ Drive ষ্ট’ৰেজৰ কোটাত বেক আপ ডেটা গণনা কৰা নহ’ব।<ph name="END_PARAGRAPH2" />
@@ -6852,6 +6859,7 @@
 <translation id="81020759409809034">স্থানীয় অৱস্থান</translation>
 <translation id="8102139037507939978">system_logs.txtৰ পৰা ব্যক্তিগতভাৱে চিনাক্ত কৰিব পৰা তথ্য আঁতৰাওক।</translation>
 <translation id="8104088837833760645">ই-ছিমৰ প্ৰ’ফাইল ডাউনল’ড কৰক</translation>
+<translation id="8105368624971345109">অফ কৰক</translation>
 <translation id="8107015733319732394">আপোনাৰ <ph name="DEVICE_TYPE" />ত Google Play Store ইনষ্টল কৰি থকা হৈছে। ইয়াৰ বাবে কিছু সময়ৰ প্ৰয়োজন হ'ব পাৰে।</translation>
 <translation id="810728361871746125">ডিছপ্লে’ৰ ৰিজ’লিউশ্বন</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{তৃতীয় পক্ষৰ কুকিসমূহ নাই}=1{১টা তৃতীয় পক্ষৰ কুকি অৱৰোধ কৰা হৈছে}one{#টা তৃতীয় পক্ষৰ কুকীসমূহ অৱৰোধ কৰা হৈছে}other{#টা তৃতীয় পক্ষৰ কুকীসমূহ অৱৰোধ কৰা হৈছে}}</translation>
@@ -7226,6 +7234,7 @@
 <translation id="8528074251912154910">ভাষা যোগ দিয়ক</translation>
 <translation id="8528962588711550376">ছাইন ইন কৰি থকা হৈছে।</translation>
 <translation id="8529925957403338845">তাৎক্ষণিক টেডাৰিং সংযোগ কৰিব পৰা নগ’ল</translation>
+<translation id="8531701051932785007">বৰ্ধিত সুৰক্ষিত ব্ৰাউজিং সুবিধাটো অফ আছে</translation>
 <translation id="8534656636775144800">ওঁহো!  ড'মেইনটোত যোগদান কৰিবলৈ চেষ্টা কৰাৰ সময়ত কিবা ভুল হ'ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক।</translation>
 <translation id="8535005006684281994">নেটস্কেপৰ প্ৰমাণপত্ৰ নৱীকৰণ কৰাৰ বাবে থকা URL</translation>
 <translation id="8536956381488731905">কী টিপিলে হোৱা শব্দ</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 3732d16a..d5c9e6d 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -248,7 +248,6 @@
 <translation id="1244265436519979884">Linux hazırda bərpa edilir</translation>
 <translation id="1244303850296295656">Artırma xətası</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> quraşdırılmadı: Şəkil keçidi <ph name="HTTP_ERROR" /> xəta kodu ilə nəticələndi. Administratorunuz ilə əlaqə saxlayın.</translation>
-<translation id="1247071602516579380">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı planşet</translation>
 <translation id="1251366534849411931">Sol fiqurlu mötərizə gözlənilir: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Bununla saytlar və quraşdırılmış tətbiqlər tərəfindən saxlanılan <ph name="TOTAL_USAGE" /> data silinəcək</translation>
 <translation id="1251578593170406502">Mobil data şəbəkələri üçün skan edilir...</translation>
@@ -435,7 +434,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> seçildi</translation>
 <translation id="1442851588227551435">Aktiv Kerberos biletini ayarlayın</translation>
 <translation id="1444628761356461360">Bu ayar cihaz sahibi tərəfindən idarə olunur, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı telefon</translation>
 <translation id="144518587530125858">Tema üçün '<ph name="IMAGE_PATH" />' yüklənə bilmədi.</translation>
 <translation id="1449191289887455076">Təyinatı təsdiq etmək və <ph name="RESPONSE" /> üçün yenidən "<ph name="CURRENTKEY" />" düyməsinə basın</translation>
 <translation id="1451375123200651445">Veb səhifə, Tək Fayl</translation>
@@ -857,7 +855,6 @@
 <translation id="1855079636134697549">Kamera aktivdir</translation>
 <translation id="1856715684130786728">Məkan əlavə edin...</translation>
 <translation id="1858585891038687145">Proqram yaradıcılarının aşkarlanması üçün bu sertifikata güvənin.</translation>
-<translation id="1859787252990099899">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı naməlum cihaz</translation>
 <translation id="1861262398884155592">Qovluq boşdur</translation>
 <translation id="1862311223300693744">Quraşdırılmış istənilən xüsusi VPN, proksi, qoruyucu divar və ya NAS proqram təminatınız var?</translation>
 <translation id="1863182668524159459">Seriya portu tapılmadı</translation>
@@ -1232,7 +1229,6 @@
 <translation id="2242687258748107519">Fayl məlumatı</translation>
 <translation id="2246549592927364792">Google'dan şəkil təsvirləri əldə etmək istəyirsiniz?</translation>
 <translation id="2247738527273549923">Cihazınız təşkilatınız tərəfindən idarə olunur</translation>
-<translation id="2249061317998743208">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı oyun idarəedicisi</translation>
 <translation id="2249111429176737533">Tab şəklində pəncərə olaraq açın</translation>
 <translation id="2249605167705922988">məsələn, 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Sistem izləyici ilə açın</translation>
@@ -1993,7 +1989,6 @@
 <translation id="3007771295016901659">Tabın dublikatını çıxarın</translation>
 <translation id="3008232374986381779"><ph name="DEVICE_TYPE" /> cihazınızda Linux alətləri, redaktorları və IDE-ləri işə salın. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">İcazələri sıfırlayın</translation>
-<translation id="3008396025115884998">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı audio cihaz</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> sizdən bugün Wi-Fi'a qoşulmanızı və güncəlləməni endirmənizi tələb edir. Ya da limitli bağlantı vasitəsilə endirin (ödəniş tutula bilər).}other{<ph name="MANAGER" /> son tarixdən öncə Wi-Fi'a qoşulmanızı və güncəlləməni endirmənizi tələb edir. Ya da limitli bağlantı vasitəsilə endirin (ödəniş tutula bilər).}}</translation>
 <translation id="3009300415590184725">Mobil data xidmətinin quraşdırma prosesini ləğv etmək istəyirsiniz?</translation>
 <translation id="3009779501245596802">İndeksli verilənlər bazası</translation>
@@ -2299,7 +2294,6 @@
 <translation id="3348038390189153836">Çıxarıla bilən cihaz aşkarlandı</translation>
 <translation id="3348131053948466246">Emoji təklif edilib. Hərəkət etmək üçün yuxarı və ya aşağı, daxil etmək üçün isə enter düyməsinə basın.</translation>
 <translation id="3349933790966648062">Yaddaş Sahəsi</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> cihazı ilə birləşdirmək mümkün olmadı; yenidən cəhd etmək üçün cihaz seçin</translation>
 <translation id="3355936511340229503">Bağlantı xətası</translation>
 <translation id="3356580349448036450">Tamamlandı</translation>
 <translation id="3359256513598016054">Sertifikat Qaydaları Limitləri</translation>
@@ -2732,6 +2726,7 @@
 <translation id="3788331399335602504">bu fayllar</translation>
 <translation id="3788401245189148511">Edə bilərdi:</translation>
 <translation id="3789841737615482174">Quraşdırın</translation>
+<translation id="3790417903123637354">Xəta baş verdi. Sonra cəhd edin</translation>
 <translation id="379082410132524484">Kartın vaxtı bitib</translation>
 <translation id="3792890930871100565">Printer bağlantısını kəsin</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome kompüterinizdə zərərli proqram təminatı tapmadı • 1 gün əvvəl yoxlandı}other{Chrome kompüterinizdə zərərli proqram təminatı tapmadı •{NUM_DAYS} gün əvvəl yoxlandı}}</translation>
@@ -3129,7 +3124,6 @@
 <translation id="4200689466366162458">Fərdi sözlər</translation>
 <translation id="4200983522494130825">Yeni panel</translation>
 <translation id="4201546031411513170">Sinxronizasiya seçimlərini ayarlarda edə bilərsiniz.</translation>
-<translation id="4202417625268941299">Qabaqcıl Güvənli Baxış ilə Chrome'un ən güclü təhlükəsizliyini əldə edəcəksiniz</translation>
 <translation id="420283545744377356">Ekran qoruyucusunu deaktiv edin</translation>
 <translation id="4206144641569145248">Yadplanetli</translation>
 <translation id="4206323443866416204">Əks Əlaqə</translation>
@@ -3635,7 +3629,6 @@
 <translation id="4759238208242260848">Endirmələr</translation>
 <translation id="4761104368405085019">Mikrofon işlədin</translation>
 <translation id="4762718786438001384">Cihaz disk yaddaşı çox azdır</translation>
-<translation id="4762898026821161650">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı kompüter</translation>
 <translation id="4763408175235639573">Bu səhifəyə baxdığınız zaman aşağıdakı kukilər ayarlandı</translation>
 <translation id="4765582662863429759">Android Mesajın telefonunuzdan Chromebook'a mesaj ötürməsinə icazə verir</translation>
 <translation id="4768332406694066911">Bu təşkilatlardan Sizi tanıdacaq sertifikatlarınız var</translation>
@@ -5815,7 +5808,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Təhlükəsizlik yoxlanışı 1 dəqiqə əvvəl icra olunub}other{Təhlükəsizlik yoxlanışı {NUM_MINS} dəqiqə əvvəl icra olunub}}</translation>
 <translation id="7057767408836081338">Tətbiq datasını əldə etmək alınmadı, yenə də tətbiqi icra etməyə çalışırıq...</translation>
 <translation id="7058024590501568315">Gizli şəbəkə</translation>
-<translation id="70582545822664495">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı maus</translation>
 <translation id="7059858479264779982">Avtomatik başlatmanı ayarlayın</translation>
 <translation id="7062222374113411376">Son qapadılan saytlara icazə verin ki, data göndərilməsini və qəbulunu tamamlasın (tövsiyə olunur)</translation>
 <translation id="7063129466199351735">Qısayollar icra olunur...</translation>
@@ -5979,7 +5971,6 @@
 <translation id="7257173066616499747">Wi-Fi şəbəkələri</translation>
 <translation id="725758059478686223">Çap Xidməti</translation>
 <translation id="7257666756905341374">Kopyaladığınız və yerləşdirdiyiniz datanı oxuyun</translation>
-<translation id="7258006747130724016">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı video kamera</translation>
 <translation id="7258192266780953209">Transformasiya</translation>
 <translation id="7258225044283673131">Bu tətbiq cavab vermir. Tətbiqi bağlamaq üçün "Məcbur bağlayın" seçin.</translation>
 <translation id="7262004276116528033">Bu giriş xidməti <ph name="SAML_DOMAIN" /> tərəfindən dəstəklənir</translation>
@@ -6774,7 +6765,6 @@
 <translation id="8037117027592400564">Sintetik nitq işlədərək bütün mətni oxuyun</translation>
 <translation id="8037357227543935929">Soruşun (defolt)</translation>
 <translation id="803771048473350947">Fayl</translation>
-<translation id="8038399858950372766">Cihaz <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> adlı klaviatura</translation>
 <translation id="8041089156583427627">Geri Əlaqə Göndərin</translation>
 <translation id="8042142357103597104">Mətnin qeyri-şəffaflığı</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> cavab vermir.</translation>
@@ -6851,6 +6841,7 @@
 <translation id="81020759409809034">Yerli Məkan</translation>
 <translation id="8102139037507939978">Şəxsi Eyniləşdirici Məlumatları system_logs.txt faylından çıxarın.</translation>
 <translation id="8104088837833760645">eSIM profilini endirin</translation>
+<translation id="8105368624971345109">Deaktiv Edin</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> cihazında Google Play Mağazası quraşdırılır. Bu proses bir neçə dəqiqə vaxt ala bilər.</translation>
 <translation id="810728361871746125">Displeyin ayırdetmə dəqiqliyi</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Üçüncü tərəf kuki yoxdur}=1{1 üçüncü tərəf kuki bloklanıb}other{# üçüncü tərəf kuki bloklanıb}}</translation>
@@ -6915,7 +6906,6 @@
 <translation id="8168071266284693455">Əlfəcinləriniz, parollarınız, tarixçəniz və s. bütün cihazlarınızda sinxronizasiya edilib</translation>
 <translation id="8168435359814927499">Kontent</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Oxuma Siyahısına Tab əlavə edin}other{Oxuma Siyahısına Tablar əlavə edin}}</translation>
-<translation id="8169849063724750395">Yenidən aktiv edin</translation>
 <translation id="8171334254070436367">Bütün kartları gizlədin</translation>
 <translation id="8174047975335711832">Cihaz haqqında məlumat</translation>
 <translation id="8174876712881364124">Google Diskə yedəkləyin. İstənilən vaxt asanlıqla datanı bərpa edin və ya cihazı dəyişin. Bu yedəkləməyə tətbiq datası daxildir. Yedəkləmələr Google'a yüklənir və Google Hesab parolu ilə şifrələnir. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation>
@@ -6989,7 +6979,6 @@
 <translation id="8249615410597138718">Cihazlara göndərin</translation>
 <translation id="8249672078237421304">Anladığınız dildə olmayan səhifələrin tərcüməsini təklif edin</translation>
 <translation id="8251441930213048644">İndi yeniləyin</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> ilə birləşdirilir</translation>
 <translation id="8251578425305135684">Eskiz silindi.</translation>
 <translation id="825238165904109940">Həmişə Tam URL'ləri Göstərin</translation>
 <translation id="8252569384384439529">Yüklənir...</translation>
@@ -7231,7 +7220,6 @@
 <translation id="8534656636775144800">Ups! Domenə qoşularkən xəta baş verdi. Yenidən cəhd edin.</translation>
 <translation id="8535005006684281994">Netscape Sertifikat Yeniləmə URL</translation>
 <translation id="8536956381488731905">Düyməyə basma səsi</translation>
-<translation id="8538718737588735385">Yenidən aktiv edin</translation>
 <translation id="8539727552378197395">Yoxdur (HttpOnly)</translation>
 <translation id="8539766201049804895">Təkmilləşdirin</translation>
 <translation id="8540136935098276800">Düzgün formatlanmış URL daxil edin</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index 13e4198..24fba35 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -2729,6 +2729,7 @@
 <translation id="3788331399335602504">гэтыя файлы</translation>
 <translation id="3788401245189148511">Гэта пашырэнне або ўбудова можа:</translation>
 <translation id="3789841737615482174">Усталяваць</translation>
+<translation id="3790417903123637354">Нешта пайшло не так. Паўтарыце спробу пазней</translation>
 <translation id="379082410132524484">Тэрмін дзеяння карткі скончыўся</translation>
 <translation id="3792890930871100565">Адключыць прынтары</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары • Праверка праводзілася дзень таму}one{Chrome не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары • Праверка праводзілася {NUM_DAYS} дзень таму}few{Chrome не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары • Праверка праводзілася {NUM_DAYS} дні таму}many{Chrome не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары • Праверка праводзілася {NUM_DAYS} дзён таму}other{Chrome не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары • Праверка праводзілася {NUM_DAYS} дня таму}}</translation>
@@ -3812,6 +3813,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" запытвае дазвол на падключэнне да серыйнага порта</translation>
 <translation id="4944310289250773232">Гэты сэрвіс аўтэнтыфікацыі размешчаны на дамене <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Каб наладзіць выкарыстанне адбітка пальца, папрасіце дзіця дакрануцца да кнопкі сілкавання. Адбіткі пальцаў дзіцяці надзейна захоўваюцца на прыладзе <ph name="DEVICE_TYPE" /> і нікуды не перадаюцца.</translation>
+<translation id="4946459324029651239">Вы абаронены стандартнымі сродкамі</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{файл}one{# файл}few{# файлы}many{# файлаў}other{# файла}}</translation>
 <translation id="495170559598752135">Дзеянні</translation>
 <translation id="4953808748584563296">Стандартны аранжавы аватар</translation>
@@ -4395,6 +4397,7 @@
 <translation id="5575528586625653441">Узнікла праблема з запытам рэгістрацыі ў дэманстрацыйным рэжыме.</translation>
 <translation id="557722062034137776">Скід прылады не закране ўліковыя запісы Google і даныя, сінхранізаваныя з імі. Аднак усе файлы, захаваныя на прыладзе, будуць выдалены.</translation>
 <translation id="5578059481725149024">Аўтаматычны ўваход</translation>
+<translation id="5581134892342029705">Пераклад завершаны (мова перакладу: <ph name="LANGUAGE" />)</translation>
 <translation id="558170650521898289">Спраўджанне драйвера абсталявання Microsoft Windows</translation>
 <translation id="5581972110672966454">Не ўдалося далучыць прыладу да дамена. Паўтарыце спробу або звярніцеся да адміністратара ці ўладальніка прылады. Код памылкі: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Галоўнае меню</translation>
@@ -6788,6 +6791,7 @@
 <translation id="8054563304616131773">Увядзіце сапраўдны адрас электроннай пошты</translation>
 <translation id="8054883179223321715">Даступна для канкрэтных сайтаў з відэа</translation>
 <translation id="8054921503121346576">Падключана USB-клавіятура</translation>
+<translation id="8057414620575339583">Бакавая панэль пошуку</translation>
 <translation id="8058655154417507695">Год заканчэння тэрміну дзеяння</translation>
 <translation id="8058986560951482265">Адрывістая</translation>
 <translation id="8059417245945632445">&amp;Праверыць прылады</translation>
@@ -6839,6 +6843,7 @@
 <translation id="81020759409809034">Лакальнае месцазнаходжанне</translation>
 <translation id="8102139037507939978">Выдаліць інфармацыю, якая дазваляе ідэнтыфікаваць асобу, з файла system_logs.txt.</translation>
 <translation id="8104088837833760645">Спампаваць профіль eSIM-карты</translation>
+<translation id="8105368624971345109">Выключыць</translation>
 <translation id="8107015733319732394">Ідзе ўсталяванне Крамы Google Play на <ph name="DEVICE_TYPE" />. Гэта можа заняць некалькі хвілін.</translation>
 <translation id="810728361871746125">Раздзяляльнасць дысплэя</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Няма старонніх файлаў cookie}=1{1 старонні файл cookie заблакіраваны}one{# старонні файл cookie заблакіраваны}few{# староннія файлы cookie заблакіраваны}many{# старонніх файлаў cookie заблакіраваны}other{# старонняга файла cookie заблакіраваны}}</translation>
@@ -7213,6 +7218,7 @@
 <translation id="8528074251912154910">Дадаць мовы</translation>
 <translation id="8528962588711550376">Выконваецца ўваход.</translation>
 <translation id="8529925957403338845">Збой злучэння Імгненнага рэжыму мадэма</translation>
+<translation id="8531701051932785007">Палепшаны Бяспечны прагляд выключаны</translation>
 <translation id="8534656636775144800">Памылка!  Нешта пайшло не так падчас спробы далучыцца да дамена. Паўтарыце спробу.</translation>
 <translation id="8535005006684281994">URL-адрас абнаўлення сертыфіката Netscape</translation>
 <translation id="8536956381488731905">Прайграваць гук пры націсканні клавішы</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index aa5a229e..ad1c2d8 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -2738,6 +2738,7 @@
 <translation id="3788331399335602504">тези файлове</translation>
 <translation id="3788401245189148511">То би имало възможност за:</translation>
 <translation id="3789841737615482174">Инсталиране</translation>
+<translation id="3790417903123637354">Нещо се обърка. Опитайте отново по-късно</translation>
 <translation id="379082410132524484">Картата ви е изтекла</translation>
 <translation id="3792890930871100565">Прекъсване на връзката с принтерите</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome не откри опасен софтуер на компютъра ви • Последна проверка: преди 1 ден}other{Chrome не откри опасен софтуер на компютъра ви • Последна проверка: преди {NUM_DAYS} дни}}</translation>
@@ -3825,6 +3826,7 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ иска да се свърже със сериен порт</translation>
 <translation id="4944310289250773232">Тази услуга за удостоверяване се хоства от <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">За да настрои отпечатък, детето ви трябва да докосне бутона за включване/изключване. Данните за отпечатъка му се съхраняват надеждно и никога не напускат устройството <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Получавате стандартното ниво на защита</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{файл}other{# файла}}</translation>
 <translation id="495170559598752135">Действия</translation>
 <translation id="4953808748584563296">Стандартен оранжев аватар</translation>
@@ -4408,6 +4410,7 @@
 <translation id="5575528586625653441">Възникна проблем със заявката за регистрация за демонстрационен режим.</translation>
 <translation id="557722062034137776">Нулирането на устройството ви няма да засегне профилите ви в Google или данните, синхронизирани с тях. Всички файлове, запазени локално на устройството ви, обаче ще бъдат изтрити.</translation>
 <translation id="5578059481725149024">Автоматичен вход</translation>
+<translation id="5581134892342029705">Преводът на <ph name="LANGUAGE" /> е завършен</translation>
 <translation id="558170650521898289">Проверка на драйвери за хардуер под Microsoft Windows</translation>
 <translation id="5581972110672966454">Устройството не може да се присъедини към домейна. Моля, опитайте отново или се обърнете към собственика или администратора на устройството си. Код на грешката: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Главно меню</translation>
@@ -6804,6 +6807,7 @@
 <translation id="8054563304616131773">Моля, въведете валиден имейл адрес</translation>
 <translation id="8054883179223321715">Налице за конкретни сайтове за видеосъдържание</translation>
 <translation id="8054921503121346576">Клавиатурата с USB е свързана</translation>
+<translation id="8057414620575339583">Страничен панел за търсене</translation>
 <translation id="8058655154417507695">Година на валидност</translation>
 <translation id="8058986560951482265">Накъсано</translation>
 <translation id="8059417245945632445">&amp;Инспектиране на устройствата</translation>
@@ -6855,6 +6859,7 @@
 <translation id="81020759409809034">Локално местоположение</translation>
 <translation id="8102139037507939978">Премахване на информацията, позволяваща лично идентифициране, от system_logs.txt.</translation>
 <translation id="8104088837833760645">Изтегляне на потребителския профил на електронната SIM карта</translation>
+<translation id="8105368624971345109">Изключване</translation>
 <translation id="8107015733319732394">Google Play Магазин се инсталира на устройството ви <ph name="DEVICE_TYPE" />. Това може да отнеме няколко минути.</translation>
 <translation id="810728361871746125">Разделителна способност на дисплея</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Няма „бисквитки“ на трети страни}=1{Блокирана е 1 „бисквитка“ на трета страна}other{Блокирани са # „бисквитки“ на трети страни}}</translation>
@@ -7229,6 +7234,7 @@
 <translation id="8528074251912154910">Добавяне на езици</translation>
 <translation id="8528962588711550376">Влиза се.</translation>
 <translation id="8529925957403338845">Връзката чрез незабавен тетъринг не бе успешна</translation>
+<translation id="8531701051932785007">Функцията за подобрена защита от Безопасно сърфиране е изключена</translation>
 <translation id="8534656636775144800">Ами сега! Нещо се обърка при опита за присъединяване към домейна. Моля, опитайте отново.</translation>
 <translation id="8535005006684281994">URL адрес за подновяване на сертификат на Netscape</translation>
 <translation id="8536956381488731905">Звук при натискане на клавишите</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 919e1cc9..4a4864d 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -253,7 +253,6 @@
 <translation id="1244265436519979884">বর্তমানে Linux ফিরিয়ে আনার কাজ চলছে</translation>
 <translation id="1244303850296295656">এক্সটেনশন সমস্যা</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> ইনস্টল করা যায়নি: <ph name="HTTP_ERROR" /> সমস্যার কোড সহ একটি ছবির URL দেখাচ্ছে। অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, ট্যাবলেটের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">প্রত্যাশিত শুরুর সেকেন্ড ব্র্যাকেট: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">এর ফলে সাইট ও ইনস্টল করা অ্যাপগুলির স্টোর করা <ph name="TOTAL_USAGE" /> ডেটা মুছে যাবে</translation>
 <translation id="1251578593170406502">মোবাইল ডেটা নেটওয়ার্কের জন্য স্ক্যান করা হচ্ছে...</translation>
@@ -440,7 +439,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" />টি নির্বাচিত হয়েছে</translation>
 <translation id="1442851588227551435">অ্যাক্টিভ Kerberos টিকিট সেট করুন</translation>
 <translation id="1444628761356461360">এই সেটিংটি ডিভাইসের মালিকের দ্বারা <ph name="OWNER_EMAIL" /> পরিচালিত হয়৷</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, ফোনের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">থিমের জন্য '<ph name="IMAGE_PATH" />' লোড করা যায়নি৷</translation>
 <translation id="1449191289887455076">অ্যাসাইনমেন্ট কনফার্ম করতে, "<ph name="CURRENTKEY" />" আবার প্রেস করুন এবং <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Webpage, Single File</translation>
@@ -873,7 +871,6 @@
 <translation id="1855079636134697549">ক্যামেরা চালু রয়েছে</translation>
 <translation id="1856715684130786728">লোকেশন যোগ করুন...</translation>
 <translation id="1858585891038687145">সফ্টওয়্যার প্রস্তুতকারকদের শনাক্তকরণের জন্য এই সার্টিফিকেটটিকে বিশ্বাস করুন</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, অজানা ডিভাইসের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">ফোল্ডারটি খালি</translation>
 <translation id="1862311223300693744">আপনি কি কোনও বিশেষ ভিপিএন, প্রক্সি, ফায়ারওয়াল বা NAS সফ্টওয়্যার
     ইনস্টল করে রেখেছেন?</translation>
@@ -1249,7 +1246,6 @@
 <translation id="2242687258748107519">ফাইল তথ্য</translation>
 <translation id="2246549592927364792">Google থেকে ছবির বিবরণ পেতে চান?</translation>
 <translation id="2247738527273549923">আপনার সংস্থা এই ডিভাইস ম্যানেজ করে</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, গেম কন্ট্রোলারের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">ট্যাবযুক্ত উইন্ডো হিসেবে খুলুন</translation>
 <translation id="2249605167705922988">উদাঃ ১-৫, ৮, ১১-১৩</translation>
 <translation id="2251218783371366160">সিস্টেম প্রদর্শকের মাধ্যমে খুলুন</translation>
@@ -2010,7 +2006,6 @@
 <translation id="3007771295016901659">ট্যাব ডুপ্লিকেট করুন</translation>
 <translation id="3008232374986381779">আপনার <ph name="DEVICE_TYPE" />-এ Linux টুল, এডিটর ও IDE চালান। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">অনুমতি রিসেট করুন</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, অডিও ডিভাইসের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> আপনাকে আজই ওয়াই-ফাই নেটওয়ার্কে কানেক্ট করে আপডেট ডাউনলোড করতে বলছে। অথবা, মিটারযুক্ত ইন্টারনেট কানেকশন ব্যবহার করেও ডাউনলোড করতে পারবেন (এর জন্য চার্জ দিতে হতে পারে)।}one{<ph name="MANAGER" /> আপনাকে নির্ধারিত সময়সীমা শেষ হওয়ার আগেই ওয়াই-ফাই নেটওয়ার্কে কানেক্ট করে আপডেট ডাউনলোড করতে বলছে। অথবা, মিটারযুক্ত ইন্টারনেট কানেকশন ব্যবহার করেও ডাউনলোড করতে পারবেন (এর জন্য চার্জ দিতে হতে পারে)।}other{<ph name="MANAGER" /> আপনাকে নির্ধারিত সময়সীমা শেষ হওয়ার আগেই ওয়াই-ফাই নেটওয়ার্কে কানেক্ট করে আপডেট ডাউনলোড করতে বলছে। অথবা, মিটারযুক্ত ইন্টারনেট কানেকশন ব্যবহার করেও ডাউনলোড করতে পারবেন (এর জন্য চার্জ দিতে হতে পারে)।}}</translation>
 <translation id="3009300415590184725">আপনি কি মোবাইল ডেটা পরিষেবা সেট-আপ প্রক্রিয়া বাতিল করার ব্যাপারে নিশ্চিত?</translation>
 <translation id="3009779501245596802">সূচিবদ্ধ ডেটাবেস</translation>
@@ -2316,7 +2311,6 @@
 <translation id="3348038390189153836">সরানোযোগ্য ডিভাইস শনাক্ত করা হয়েছে</translation>
 <translation id="3348131053948466246">ইমোজি সাজেস্ট করা হয়েছে। নেভিগেট করতে ঊর্ধ্বমুখী বা নিম্নমুখী তীরচিহ্ন আঁকা বোতাম প্রেস করুন। ইমোজি যোগ করতে Enter প্রেস করুন।</translation>
 <translation id="3349933790966648062">মেমরি ফুটপ্রিন্ট</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> ডিভাইসের সাথে পেয়ার করা যায়নি; আবার চেষ্টা করতে ডিভাইস বেছে নিন</translation>
 <translation id="3355936511340229503">সংযোগ ত্রুটি</translation>
 <translation id="3356580349448036450">সম্পূর্ণ</translation>
 <translation id="3359256513598016054">সার্টিফিকেট নীতি বাধ্যবাধকতা</translation>
@@ -2524,6 +2518,7 @@
 <translation id="3557101512409028104">Family Link-এর সাহায্যে ওয়েবসাইট অ্যাক্সেস করার ব্যাপারে সীমাবদ্ধতা ও স্ক্রিন টাইমের সীমা সেট করুন</translation>
 <translation id="3559262020195162408">ডিভাইসে নীতি ইনস্টল করা যায়নি।</translation>
 <translation id="3559533181353831840">প্রায় <ph name="TIME_LEFT" /> লাগবে</translation>
+<translation id="3559697822483154494">স্প্লিট স্ক্রিন এবং ডেস্ক পাল্টানোর মতো অ্যাকশনের জন্য ভাইব্রেশন কনফার্মেশন পান।</translation>
 <translation id="3560034655160545939">বানান পরীক্ষা</translation>
 <translation id="3562423906127931518">এর জন্য কয়েক মিনিট সময় লাগতে পারে। Linux কন্টেনার ইনস্টল করা হচ্ছে।</translation>
 <translation id="3562655211539199254">আপনার ফোন থেকে Chrome-এ সম্প্রতি খোলা ট্যাবগুলি দেখুন</translation>
@@ -2748,6 +2743,7 @@
 <translation id="3788331399335602504">এই ফাইলগুলি</translation>
 <translation id="3788401245189148511">এটা হতে পারে:</translation>
 <translation id="3789841737615482174">ইনস্টল করুন</translation>
+<translation id="3790417903123637354">কোনও সমস্যা হয়েছে। পরে আবার চেষ্টা করুন</translation>
 <translation id="379082410132524484">আপনার কার্ডের মেয়াদ শেষ হয়ে গেছে</translation>
 <translation id="3792890930871100565">প্রিন্টার সংযোগ বিচ্ছিন্ন করুন</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome আপনার কম্পিউটারে কোনও ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি • ১ দিন আগে চেক করা হয়েছে}one{Chrome আপনার কম্পিউটারে কোনও ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি • {NUM_DAYS} দিন আগে চেক করা হয়েছে}other{Chrome আপনার কম্পিউটারে কোনও ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি • {NUM_DAYS} দিন আগে চেক করা হয়েছে}}</translation>
@@ -3146,7 +3142,6 @@
 <translation id="4200689466366162458">কাস্টম শব্দগুলি</translation>
 <translation id="4200983522494130825">নতুন &amp;ট্যাব</translation>
 <translation id="4201546031411513170">সেটিংসে কী সিঙ্ক করা হবে তা আপনি সবসময় বেছে নিতে পারেন।</translation>
-<translation id="4202417625268941299">'উন্নত নিরাপদ ব্রাউজিং' ফিচার ব্যবহার করে, Chrome-এর সবচেয়ে ভাল নিরাপত্তা পান</translation>
 <translation id="420283545744377356">স্ক্রিন সেভার বন্ধ করুন</translation>
 <translation id="4206144641569145248">ভিনগ্রহবাসী</translation>
 <translation id="4206323443866416204">প্রতিক্রিয়ার প্রতিবেদন</translation>
@@ -3653,7 +3648,6 @@
 <translation id="4759238208242260848">ডাউনলোড</translation>
 <translation id="4761104368405085019">আপনার মাইক্রোফোন ব্যবহার করুন</translation>
 <translation id="4762718786438001384">ডিভাইসের ডিস্কের স্থান আশংকাজনকভাবে কম</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, কম্পিউটারের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">আপনি যখন এই পৃষ্ঠাটি দেখেছিলেন তখন নিম্নোক্ত কুকিগুলি সেট হয়েছিল</translation>
 <translation id="4765582662863429759">Android Messages-কে আপনার ফোন থেকে Chromebook-এ টেক্সট রিলে করতে অনুমতি দেয়</translation>
 <translation id="4768332406694066911">আপনার পরিচয় শনাক্ত করে এমন সংস্থাগুলি থেকে শংসাপত্র আপনার কাছে আছে</translation>
@@ -4925,6 +4919,7 @@
 <translation id="6112931163620622315">আপনার ফোনে দেখুন</translation>
 <translation id="6113434369102685411">Chrome ব্রাউজার এবং <ph name="DEVICE_TYPE" /> লঞ্চারের জন্য আপনার ডিফল্ট সার্চ ইঞ্জিন সেট করুন</translation>
 <translation id="6113942107547980621">Smart Lock ব্যবহার করতে, আপনার ফোনের প্রাথমিক ব্যবহারকারীর প্রোফাইলে পাল্টান</translation>
+<translation id="611684075852771314">এই লগগুলি আমার ফাইল হিসেবে সেভ করা হয়েছে</translation>
 <translation id="6116921718742659598">ভাষা এবং ইনপুট সেটিংস পরিবর্তন করুন</translation>
 <translation id="6119927814891883061">ডিভাইসের নাম <ph name="DEVICE_NAME" /> দিন</translation>
 <translation id="6120205520491252677">স্টার্ট স্ক্রীনে এই পৃষ্ঠাটিকে পিন করুন...</translation>
@@ -5701,6 +5696,7 @@
 <translation id="6930036377490597025">এক্সটার্নাল নিরাপত্তা কী অথবা বিল্ট-ইন সেন্সর</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{একটি এক্সটেনশন বাতিল করা হয়েছে}one{#টি এক্সটেনশন বাতিল করা হয়েছে}other{#টি এক্সটেনশন বাতিল করা হয়েছে}}</translation>
 <translation id="6930321203306643451">আপগ্রেড সম্পূর্ণ হয়েছে।</translation>
+<translation id="6931690462168617033">স্ট্রেংথ বিকল্পে ক্লিক করুন</translation>
 <translation id="6935286146439255109">একটি কাগজের ট্রে পাওয়া যাচ্ছে না</translation>
 <translation id="693807610556624488">"<ph name="DEVICE_NAME" />" এ লেখার ক্রিয়াকলাপ অ্যাট্রিবিউটের সর্বাধিক দৈর্ঘ্য অতিক্রম করেছে।</translation>
 <translation id="6938386202199793006">আপনার কাছে আগে থেকেই ১টি প্রিন্টার সেভ করা আছে।</translation>
@@ -5834,7 +5830,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{১ মিনিট আগে নিরাপত্তা সংক্রান্ত পরীক্ষা চালানো হয়েছে}one{{NUM_MINS} মিনিট আগে নিরাপত্তা সংক্রান্ত পরীক্ষা চালানো হয়েছে}other{{NUM_MINS} মিনিট আগে নিরাপত্তা সংক্রান্ত পরীক্ষা চালানো হয়েছে}}</translation>
 <translation id="7057767408836081338">অ্যাপ ডেটা পাওয়া যায়নি। যাইহোক, অ্যাপ রান করানোর চেষ্টা করা হচ্ছে...</translation>
 <translation id="7058024590501568315">লুকানো নেটওয়ার্ক</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, মাউসের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">স্বয়ংক্রিয় লঞ্চ সেট করুন</translation>
 <translation id="7062222374113411376">সম্প্রতি বন্ধ করা সাইটগুলিকে ডেটা পাঠানো ও গ্রহণ শেষ করতে অনুমতি দিন (প্রস্তাবিত)</translation>
 <translation id="7063129466199351735">শর্টকাটগুলি প্রক্রিয়া করা হচ্ছে...</translation>
@@ -5998,7 +5993,6 @@
 <translation id="7257173066616499747">ওয়াই-ফাই নেটওয়ার্কগুলি</translation>
 <translation id="725758059478686223">প্রিন্টিং পরিষেবা</translation>
 <translation id="7257666756905341374">আপনি যে ডেটা কপি ও পেস্ট করেন তা পড়ুন</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, ভিডিও ক্যামেরার নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">পরিবর্তন</translation>
 <translation id="7258225044283673131">অ্যাপ্লিকেশনটি কাজ করছে না। অ্যাপটি বন্ধ করতে "জোর করে বন্ধ করুন" বিকল্পটি বেছে নিন।</translation>
 <translation id="7262004276116528033">এই সাইন-ইন করা পরিষেবাটি <ph name="SAML_DOMAIN" /> দ্বারা হোস্ট করা হয়</translation>
@@ -6794,7 +6788,6 @@
 <translation id="8037117027592400564">সিন্থেসাইজড স্পিচ ব্যবহার করে কথিত সব পাঠ্য পড়ুন</translation>
 <translation id="8037357227543935929">জিজ্ঞাসা করুন (ডিফল্ট)</translation>
 <translation id="803771048473350947">ফাইল</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" />টির মধ্যে <ph name="DEVICE_INDEX" /> নম্বর ডিভাইস, কীবোর্ডের নাম <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">প্রতিক্রিয়া পাঠান</translation>
 <translation id="8042142357103597104">টেক্সটের অস্বচ্ছতা</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> উত্তর দিচ্ছে না।</translation>
@@ -6833,6 +6826,7 @@
 <translation id="8064279191081105977">গ্রুপ <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">কানেকশন ডায়ালগ</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">হ্যাপটিক প্রতিক্রিয়া</translation>
 <translation id="8071432093239591881">ছবি হিসেবে প্রিন্ট করুন</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />অ্যাপ ডেটা এমন যেকোনও ডেটা যা কোনও অ্যাপ (ডেভেলপারের সেটিংসের উপর ভিত্তি করে) সেভ করে রাখে যেমন - পরিচিতি, মেসেজ এবং ফটোর মতো ডেটা।<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />ব্যাক-আপ ডেটা আপনার সন্তানের ড্রাইভ স্টোরেজের কোটার মধ্যে ধরা হবে না।<ph name="END_PARAGRAPH2" />
@@ -6870,6 +6864,7 @@
 <translation id="81020759409809034">লোকাল লোকেশন</translation>
 <translation id="8102139037507939978">System_logs.txt থেকে ব্যক্তিগতভাবে শনাক্তকরণযোগ্য তথ্য সরিয়ে দিন</translation>
 <translation id="8104088837833760645">ই-সিম প্রোফাইল ডাউনলোড করুন</translation>
+<translation id="8105368624971345109">বন্ধ করুন</translation>
 <translation id="8107015733319732394">আপনার <ph name="DEVICE_TYPE" /> এ Google Play Store ইনস্টল করা হচ্ছে। এতে কয়েক মিনিট সময় লাগতে পারে।</translation>
 <translation id="810728361871746125">ডিসপ্লের রেজোলিউশন</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{কোনও থার্ড-পার্টি কুকি নেই}=1{১টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}one{#টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}other{#টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}}</translation>
@@ -6934,7 +6929,6 @@
 <translation id="8168071266284693455">আপনার সব ডিভাইসে বুকমার্ক, পাসওয়ার্ড, ইতিহাস এবং আরও অনেক কিছু সিঙ্ক করা আছে</translation>
 <translation id="8168435359814927499">কন্টেন্ট</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{রিডিং তালিকাতে ট্যাব যোগ করুন}one{রিডিং তালিকাতে ট্যাব যোগ করুন}other{রিডিং তালিকাতে ট্যাব যোগ করুন}}</translation>
-<translation id="8169849063724750395">আবার চালু করুন</translation>
 <translation id="8171334254070436367">সব কার্ড লুকান</translation>
 <translation id="8174047975335711832">ডিভাইস সংক্রান্ত তথ্য</translation>
 <translation id="8174876712881364124">Google ড্রাইভে ব্যাক-আপ নিন। যেকোনও সহজেই আপনার ডেটা ফিরিয়ে আনুন বা ডিভাইস পাল্টান। আপনার ব্যাক-আপে অ্যাপ ডেটা থাকে। আপনার ব্যাক-আপ ডেটা Google-এ আপলোড করা হবে এবং আপনার সন্তানের Google অ্যাকাউন্টের পাসওয়ার্ড ব্যবহার করে সেগুলিকে এনক্রিপ্ট করা হবে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation>
@@ -7008,7 +7002,6 @@
 <translation id="8249615410597138718">আপনার ডিভাইসে পাঠান</translation>
 <translation id="8249672078237421304">আপনি যে ভাষাতে পড়েন সেই ভাষাতে না থাকা পৃষ্ঠাগুলি অনুবাদ করার প্রস্তাব দিন</translation>
 <translation id="8251441930213048644">এখনই রিফ্রেশ করুন</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" />-এর সাথে পেয়ার করা হচ্ছে</translation>
 <translation id="8251578425305135684">থাম্বনেল সরানো হয়েছে৷</translation>
 <translation id="825238165904109940">সবসময় সম্পূর্ণ ইউআরএল দেখুন</translation>
 <translation id="8252569384384439529">আপলোড হচ্ছে…</translation>
@@ -7250,7 +7243,6 @@
 <translation id="8534656636775144800">ওহো! ডোমেনটি যোগ করার সময় কোনও সমস্যা হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।</translation>
 <translation id="8535005006684281994">Netscape সার্টিফিকেট পুনর্নবীকরণ ইউআরএল</translation>
 <translation id="8536956381488731905">কী প্রেস করার সময় যে শব্দ হয়</translation>
-<translation id="8538718737588735385">আবার চালু করুন</translation>
 <translation id="8539727552378197395">না (কেবলমাত্র Http)</translation>
 <translation id="8539766201049804895">আপগ্রেড করুন</translation>
 <translation id="8540136935098276800">সঠিকভাবে ফর্ম্যাট করা একটি ইউআরএল লিখুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index fad7a03c..3fc0f5c 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -254,7 +254,6 @@
 <translation id="1244265436519979884">Vraćanje Linuxa je trenutno u toku</translation>
 <translation id="1244303850296295656">Greška ekstenzije</translation>
 <translation id="1246863218384630739">Instaliranje virtualnog računara <ph name="VM_NAME" /> nije uspjelo: URL slike je rezultirao kodom greške <ph name="HTTP_ERROR" />. Kontaktirajte administratora.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, tablet pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Očekivana početna vitičasta zagrada: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Ovim će se obrisati <ph name="TOTAL_USAGE" /> podataka koje su pohranile web lokacije i instalirane aplikacije</translation>
 <translation id="1251578593170406502">Skeniranje mreža za prijenos podataka...</translation>
@@ -441,7 +440,6 @@
 <translation id="144283815522798837">Odabrano <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Postavi aktivni tiket za Kerberos</translation>
 <translation id="1444628761356461360">Ovom postavkom upravlja vlasnik uređaja, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, telefon pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Slika "<ph name="IMAGE_PATH" />" nije učitana kao tema.</translation>
 <translation id="1449191289887455076">Ponovo pritisnite tipku "<ph name="CURRENTKEY" />" da potvrdite dodjeljivanje i da <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Web stranica, jedan fajl</translation>
@@ -871,7 +869,6 @@
 <translation id="1855079636134697549">Kamera je uključena</translation>
 <translation id="1856715684130786728">Dodaj lokaciju...</translation>
 <translation id="1858585891038687145">Vjeruj ovoj potvrdi za identifikaciju proizvođača softvera</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, nepoznat uređaj pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Ovaj folder je prazan</translation>
 <translation id="1862311223300693744">Imate li instaliran neki poseban softver za VPN, proksi server, zaštitni zid
     ili NAS?</translation>
@@ -1247,7 +1244,6 @@
 <translation id="2242687258748107519">Podaci o fajlu</translation>
 <translation id="2246549592927364792">Preuzeti opis slike s Googlea?</translation>
 <translation id="2247738527273549923">Ovim uređajem upravlja vaša organizacija</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, kontroler za igre pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Otvori kao prozor s karticama</translation>
 <translation id="2249605167705922988">npr. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Otvori u pregledniku sistema</translation>
@@ -2008,7 +2004,6 @@
 <translation id="3007771295016901659">Dupliciraj karticu</translation>
 <translation id="3008232374986381779">Pokrenite Linux alate, uređivače i IDE-ove na uređaju <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Poništi dopuštenja</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, audio uređaj pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Domena <ph name="MANAGER" /> zahtijeva da se danas povežete s WiFi mrežom radi preuzimanja ažuriranja. Možete ga preuzeti i putem veze s naplatom (mogu nastati troškovi).}one{Domena <ph name="MANAGER" /> zahtijeva da se povežete s WiFi mrežom i preuzmete ažuriranje prije isteka roka. Možete ga preuzeti i putem veze s naplatom (mogu nastati troškovi).}few{Domena <ph name="MANAGER" /> zahtijeva da se povežete s WiFi mrežom i preuzmete ažuriranje prije isteka roka. Možete ga preuzeti i putem veze s naplatom (mogu nastati troškovi).}other{Domena <ph name="MANAGER" /> zahtijeva da se povežete s WiFi mrežom i preuzmete ažuriranje prije isteka roka. Možete ga preuzeti i putem veze s naplatom (mogu nastati troškovi).}}</translation>
 <translation id="3009300415590184725">Jeste li sigurni da želite otkazati uslugu postavljanja prijenosa podataka na mobilnoj mreži?</translation>
 <translation id="3009779501245596802">Baza indeksa</translation>
@@ -2314,7 +2309,6 @@
 <translation id="3348038390189153836">Otkriven je uklonjivi uređaj</translation>
 <translation id="3348131053948466246">Predložena je emoji sličica. Pritisnite strelicu nadolje ili nagore za kretanje i tipku enter za umetanje.</translation>
 <translation id="3349933790966648062">Otisak iz memorije</translation>
-<translation id="3354972872297836698">Uparivanje s uređajem <ph name="DEVICE_NAME" /> nije uspjelo. Odaberite uređaj da pokušate ponovo</translation>
 <translation id="3355936511340229503">Greška prilikom povezivanja</translation>
 <translation id="3356580349448036450">Završi</translation>
 <translation id="3359256513598016054">Ograničenja pravila za potvrdu</translation>
@@ -2522,6 +2516,7 @@
 <translation id="3557101512409028104">Postavite ograničenja pristupa web lokacijama i ograničenja vremena korištenja uređaja s Family Linkom.</translation>
 <translation id="3559262020195162408">Instaliranje pravila na ovaj uređaj nije uspjelo.</translation>
 <translation id="3559533181353831840">Preostalo je oko <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">Primajte potvrdu vibracijom za radnje kao što su podijeljeni ekran i prebacivanje između radnih površina.</translation>
 <translation id="3560034655160545939">&amp;Provjera pravopisa</translation>
 <translation id="3562423906127931518">Ovo može potrajati nekoliko minuta. Postavljanje spremnika za Linux.</translation>
 <translation id="3562655211539199254">Pogledajte nedavne kartice Chromea s telefona</translation>
@@ -2746,6 +2741,7 @@
 <translation id="3788331399335602504">ove fajlove</translation>
 <translation id="3788401245189148511">Ekstenzija ili aplikacija bi mogla:</translation>
 <translation id="3789841737615482174">Instaliraj</translation>
+<translation id="3790417903123637354">Nešto nije uredu. Pokušajte ponovo kasnije</translation>
 <translation id="379082410132524484">Vaša kartica je istekla</translation>
 <translation id="3792890930871100565">Prekini vezu s štampačima</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome nije pronašao štetni softver na vašem računaru • Provjereno prije 1 dan}one{Chrome nije pronašao štetni softver na vašem računaru • Provjereno prije {NUM_DAYS} dan}few{Chrome nije pronašao štetni softver na vašem računaru • Provjereno prije {NUM_DAYS} dana}other{Chrome nije pronašao štetni softver na vašem računaru • Provjereno prije {NUM_DAYS} dana}}</translation>
@@ -3145,7 +3141,6 @@
 <translation id="4200689466366162458">Prilagođene riječi</translation>
 <translation id="4200983522494130825">Nova &amp;kartica</translation>
 <translation id="4201546031411513170">Uvijek možete odabrati šta želite sinhronizirati u postavkama.</translation>
-<translation id="4202417625268941299">Uz poboljšano Sigurnosno pregledanje ćete dobiti najjaču sigurnost Chromea</translation>
 <translation id="420283545744377356">Isključite čuvara ekrana</translation>
 <translation id="4206144641569145248">Vanzemaljac</translation>
 <translation id="4206323443866416204">Izvještaj o povratnim informacijama</translation>
@@ -3652,7 +3647,6 @@
 <translation id="4759238208242260848">Preuzimanja</translation>
 <translation id="4761104368405085019">Korištenje vašeg mikrofona</translation>
 <translation id="4762718786438001384">Količina prostora na disku uređaja je kritično mala</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, računar pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Sljedeći kolačići su postavljeni kada ste pregledali ovu stranicu</translation>
 <translation id="4765582662863429759">Omogućava aplikaciji Android Messages da šalje SMS-ove s vašeg telefona na vaš Chromebook</translation>
 <translation id="4768332406694066911">Imate potvrde ovih organizacija koje vas identificiraju</translation>
@@ -4923,6 +4917,7 @@
 <translation id="6112931163620622315">Provjerite telefon</translation>
 <translation id="6113434369102685411">Postavite zadani pretraživač za preglednik Chrome i pokretač uređaja <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">Za korištenje Pametnog zaključavanja, na telefonu prebacite na profil primarnog korisnika</translation>
+<translation id="611684075852771314">Ovi zapisnici su sačuvani u Mojim fajlovima kao</translation>
 <translation id="6116921718742659598">Promijenite postavke jezika i unosa</translation>
 <translation id="6119927814891883061">Imenovanje uređaja u <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Zakači ovu stranicu za Početni ekran…</translation>
@@ -5699,6 +5694,7 @@
 <translation id="6930036377490597025">Vanjski sigurnosni ključ ili ugrađeni senzor</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Ekstenzija je odbijena}one{# ekstenzija je odbijena}few{# ekstenzije su odbijene}other{# ekstenzija je odbijeno}}</translation>
 <translation id="6930321203306643451">Nadogradnja je završena</translation>
+<translation id="6931690462168617033">Snaga klika</translation>
 <translation id="6935286146439255109">Nedostaje ladica za papir</translation>
 <translation id="693807610556624488">Operacija zapisivanja premašuje maksimalnu duljinu atributa za uređaj: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">Imate 1 sačuvani štampač.</translation>
@@ -5832,7 +5828,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Sigurnosna provjera je izvršena prije 1 minutu}one{Sigurnosna provjera je izvršena prije {NUM_MINS} minutu}few{Sigurnosna provjera je izvršena prije {NUM_MINS} minute}other{Sigurnosna provjera je izvršena prije {NUM_MINS} minuta}}</translation>
 <translation id="7057767408836081338">Preuzimanje podataka aplikacije nije uspjelo. Svejedno pokušavamo pokrenuti aplikaciju…</translation>
 <translation id="7058024590501568315">Skrivena mreža</translation>
-<translation id="70582545822664495"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, miš pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Postavi na automatsko pokretanje</translation>
 <translation id="7062222374113411376">Dozvoli nedavno zatvorenim web lokacijama da završe slanje i primanje podataka (preporučeno)</translation>
 <translation id="7063129466199351735">Obrađivanje prečica...</translation>
@@ -5996,7 +5991,6 @@
 <translation id="7257173066616499747">Wi-Fi mreže</translation>
 <translation id="725758059478686223">Usluga štampanja</translation>
 <translation id="7257666756905341374">Čitati podatke koje kopirate i zalijepite</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, video kamera pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformacije</translation>
 <translation id="7258225044283673131">Aplikacija ne reagira. Odaberite "Prisilno zatvori" da zatvorite aplikaciju.</translation>
 <translation id="7262004276116528033">Ovu uslugu prijavljivanja hostira <ph name="SAML_DOMAIN" /></translation>
@@ -6793,7 +6787,6 @@
 <translation id="8037117027592400564">Čitaj naglas sav tekst koristeći sintetizirani glas</translation>
 <translation id="8037357227543935929">Pitaj (zadano)</translation>
 <translation id="803771048473350947">Fajl</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_INDEX" />. uređaj od <ph name="DEVICE_COUNT" />, tastatura pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Slanje povratnih informacija</translation>
 <translation id="8042142357103597104">Neprozirnost teksta</translation>
 <translation id="8044262338717486897">Aplikacija <ph name="LINUX_APP_NAME" /> ne reagira.</translation>
@@ -6832,6 +6825,7 @@
 <translation id="8064279191081105977">Grupa <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Dijaloški okvir veze</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Haptičke povratne informacije</translation>
 <translation id="8071432093239591881">Ispiši kao sliku</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Podaci aplikacije mogu biti bilo koji podaci koje je aplikacija spremila (na temelju postavki razvojnog programera), uključujući potencijalno osjetljive podatke kao što su kontakti, poruke i fotografije.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Podaci sigurnosne kopije ne ulaze u kvotu pohrane na Disku vašeg podređenog računa.<ph name="END_PARAGRAPH2" />
@@ -6869,6 +6863,7 @@
 <translation id="81020759409809034">Lokalna lokacija</translation>
 <translation id="8102139037507939978">Uklonite informacije koje mogu poslužiti za ličnu identifikaciju iz fajla system_logs.txt.</translation>
 <translation id="8104088837833760645">Preuzmi eSIM profil</translation>
+<translation id="8105368624971345109">Isključi</translation>
 <translation id="8107015733319732394">Instaliranje Google Play trgovine na vašem uređaju <ph name="DEVICE_TYPE" />. To može potrajati nekoliko minuta.</translation>
 <translation id="810728361871746125">Rezolucija ekrana</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nema kolačića treće strane}=1{Blokiran je 1 kolačić treće strane}one{Blokiran je # kolačić treće strane}few{Blokirana su # kolačića treće strane}other{Blokirano je # kolačića treće strane}}</translation>
@@ -6933,7 +6928,6 @@
 <translation id="8168071266284693455">Vaše oznake, lozinke, historija i drugo je sinhronizirano na svim vašim uređajima</translation>
 <translation id="8168435359814927499">Sadržaj</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj karticu na listu za čitanje}one{Dodaj kartice na listu za čitanje}few{Dodaj kartice na listu za čitanje}other{Dodaj kartice na listu za čitanje}}</translation>
-<translation id="8169849063724750395">Ponovo uključi</translation>
 <translation id="8171334254070436367">Sakrij sve kartice</translation>
 <translation id="8174047975335711832">Informacije s uređaja</translation>
 <translation id="8174876712881364124">Izradite sigurnosnu kopiju na Google disku. Jednostavno vratite podatke ili prijeđite na drugi uređaj u bilo kojem trenutku. Sigurnosna kopija uključuje podatke aplikacija. Sigurnosna kopija prenosi se na Google i kriptira pomoću zaporke Google računa vašeg djeteta.<ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation>
@@ -7007,7 +7001,6 @@
 <translation id="8249615410597138718">Pošaljite na svoje uređaje</translation>
 <translation id="8249672078237421304">Nudi prijevod stranica koje nisu na jeziku kojeg razumijete</translation>
 <translation id="8251441930213048644">Osvježi sada</translation>
-<translation id="8251509999076836464">Uparivanje s uređajem <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Sličica je uklonjena.</translation>
 <translation id="825238165904109940">Uvijek prikaži pune URL-ove</translation>
 <translation id="8252569384384439529">Otpremanje...</translation>
@@ -7249,7 +7242,6 @@
 <translation id="8534656636775144800">Ups! Došlo je do pogreške pri pokušaju pridruživanja domeni. Pokušajte ponovo.</translation>
 <translation id="8535005006684281994">URL za obnovu Netscape potvrde</translation>
 <translation id="8536956381488731905">Zvuk pri pritisku tipke</translation>
-<translation id="8538718737588735385">Ponovo uključi</translation>
 <translation id="8539727552378197395">Ne (HttpOnly)</translation>
 <translation id="8539766201049804895">Nadogradi</translation>
 <translation id="8540136935098276800">Unesite URL s ispravnim formatom</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index e4695251..c51227f 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2502,6 +2502,7 @@
 <translation id="3557101512409028104">Estableix restriccions de llocs web i límits de temps de connexió amb Family Link</translation>
 <translation id="3559262020195162408">No s'ha pogut instal·lar la política al dispositiu.</translation>
 <translation id="3559533181353831840">Temps restant aproximat: <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">Rep una vibració de confirmació per a accions com ara dividir la pantalla i canviar d'escriptori.</translation>
 <translation id="3560034655160545939">Corrector ortogràfic(&amp;S)</translation>
 <translation id="3562423906127931518">Aquest procés pot tardar uns quants minuts. S'està configurant el contenidor de Linux.</translation>
 <translation id="3562655211539199254">Consulta les pestanyes de Chrome recents des del teu telèfon</translation>
@@ -2726,6 +2727,7 @@
 <translation id="3788331399335602504">aquests fitxers</translation>
 <translation id="3788401245189148511">Podria:</translation>
 <translation id="3789841737615482174">Instal·la</translation>
+<translation id="3790417903123637354">S'ha produït un error. Torna-ho a provar més tard.</translation>
 <translation id="379082410132524484">La targeta ha caducat</translation>
 <translation id="3792890930871100565">Desconnecta impressores</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome no ha trobat programari nociu a l'ordinador • Es va comprovar fa 1 dia}other{Chrome no ha trobat programari nociu a l'ordinador • Es va comprovar fa {NUM_DAYS} dies}}</translation>
@@ -3810,6 +3812,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" vol connectar-se a un port en sèrie</translation>
 <translation id="4944310289250773232">Aquest servei d'autenticació s'allotja a <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Per configurar una impremta digital, fes que el teu fill toqui el botó d'engegada. Les dades de l'empremta digital del teu fill s'emmagatzemen de manera segura i no surten mai del dispositiu <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Tens una protecció estàndard</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{1 fitxer}other{# fitxers}}</translation>
 <translation id="495170559598752135">Accions</translation>
 <translation id="4953808748584563296">Avatar taronja predeterminat</translation>
@@ -4394,6 +4397,7 @@
 <translation id="5575528586625653441">S'ha produït un problema amb la sol·licitud per registrar la demostració.</translation>
 <translation id="557722062034137776">Si restabliu el dispositiu, no es produirà cap canvi als vostres comptes de Google ni a les dades sincronitzades en aquests comptes. No obstant això, se suprimiran tots els fitxers desats localment al dispositiu.</translation>
 <translation id="5578059481725149024">Inici de sessió automàtic</translation>
+<translation id="5581134892342029705">Traducció a <ph name="LANGUAGE" /> completa</translation>
 <translation id="558170650521898289">Verificació de programes de control de maquinari de Microsoft Windows</translation>
 <translation id="5581972110672966454">No es pot connectar el dispositiu al domini. Torna-ho a provar o contacta amb el propietari o l'administrador del dispositiu. Codi d'error: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menú principal</translation>
@@ -4899,6 +4903,7 @@
 <translation id="6112931163620622315">Comprova el telèfon</translation>
 <translation id="6113434369102685411">Defineix el motor de cerca predeterminat per al navegador Chrome i el menú d'aplicacions de <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">Per fer servir Smart Lock, ves al perfil d'usuari principal del telèfon</translation>
+<translation id="611684075852771314">Aquests registres s'han desat a Els meus fitxers com a</translation>
 <translation id="6116921718742659598">Canvia la configuració d'idioma i d'introducció de text</translation>
 <translation id="6119927814891883061">Anomena el dispositiu a <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Fixa aquesta pàgina a la pantalla d'inici...</translation>
@@ -5675,6 +5680,7 @@
 <translation id="6930036377490597025">Clau externa de seguretat o sensor integrat</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{S'ha rebutjat una extensió}other{S'han rebutjat # extensions}}</translation>
 <translation id="6930321203306643451">Actualització completada</translation>
+<translation id="6931690462168617033">Intensitat de clic</translation>
 <translation id="6935286146439255109">Falta una safata de paper</translation>
 <translation id="693807610556624488">L'operació d'escriptura supera la longitud màxima de l'atribut a <ph name="DEVICE_NAME" />.</translation>
 <translation id="6938386202199793006">Tens 1 impressora desada.</translation>
@@ -6790,6 +6796,7 @@
 <translation id="8054563304616131773">Introduïu una adreça electrònica vàlida</translation>
 <translation id="8054883179223321715">Disponible per a llocs web de vídeo concrets</translation>
 <translation id="8054921503121346576">Teclat USB connectat</translation>
+<translation id="8057414620575339583">Cerca lateral</translation>
 <translation id="8058655154417507695">Any de caducitat</translation>
 <translation id="8058986560951482265">S'entretalla</translation>
 <translation id="8059417245945632445">&amp;Inspecciona els dispositius</translation>
@@ -6804,6 +6811,7 @@
 <translation id="8064279191081105977">Grup <ph name="GROUP_NAME" />; <ph name="GROUP_CONTENTS" />; <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Quadre de diàleg de connexió</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Resposta hàptica</translation>
 <translation id="8071432093239591881">Imprimeix com a imatge</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Les dades de les aplicacions poden ser qualsevol mena de dada que hagi desat una aplicació (en funció de la configuració del desenvolupador), com ara els contactes, els missatges i les fotos.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Les dades de les còpies de seguretat no ocupen espai de la quota d'emmagatzematge de Drive del teu fill.<ph name="END_PARAGRAPH2" />
@@ -6841,6 +6849,7 @@
 <translation id="81020759409809034">Ubicació local</translation>
 <translation id="8102139037507939978">Elimina la informació d'identificació personal del fitxer system_logs.txt.</translation>
 <translation id="8104088837833760645">Baixa el perfil de l'eSIM</translation>
+<translation id="8105368624971345109">Desactiva</translation>
 <translation id="8107015733319732394">S'està instal·lant Google Play Store al teu dispositiu <ph name="DEVICE_TYPE" />. Aquest procés pot tardar uns quants minuts.</translation>
 <translation id="810728361871746125">Resolució de pantalla</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No hi ha cap galeta de tercers}=1{Hi ha 1 galeta de tercers bloquejada}other{Hi ha # galetes de tercers bloquejades}}</translation>
@@ -7216,6 +7225,7 @@
 <translation id="8528074251912154910">Afegeix idiomes</translation>
 <translation id="8528962588711550376">S'està iniciant la sessió.</translation>
 <translation id="8529925957403338845">S'ha produït un error de connexió en compartir la xarxa de manera instantània</translation>
+<translation id="8531701051932785007">La Navegació segura millorada està desactivada</translation>
 <translation id="8534656636775144800">S'ha produït un problema en connectar-te al domini. Torna-ho a provar.</translation>
 <translation id="8535005006684281994">URL de renovació de certificat de Netscape</translation>
 <translation id="8536956381488731905">So en prémer tecles</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index efa2df7d..323f2ce 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -2728,6 +2728,7 @@
 <translation id="3788331399335602504">tyto soubory</translation>
 <translation id="3788401245189148511">Mohlo by:</translation>
 <translation id="3789841737615482174">Instalovat</translation>
+<translation id="3790417903123637354">Něco se pokazilo. Zkuste to znovu později</translation>
 <translation id="379082410132524484">Platnost vaší karty vypršela.</translation>
 <translation id="3792890930871100565">Odpojit tiskárny</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome v počítači nenašel žádný škodlivý software • Zkontrolováno včera}few{Chrome v počítači nenašel žádný známý škodlivý software • Zkontrolováno před {NUM_DAYS} dny}many{Chrome v počítači nenašel žádný známý škodlivý software • Zkontrolováno před {NUM_DAYS} dne}other{Chrome v počítači nenašel žádný známý škodlivý software • Zkontrolováno před {NUM_DAYS} dny}}</translation>
@@ -3812,6 +3813,7 @@
 <translation id="4943691134276646401">Rozšíření <ph name="CHROME_EXTENSION_NAME" /> se chce připojit k sériovému portu</translation>
 <translation id="4944310289250773232">Tato ověřovací služba je hostována v doméně <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Pokud chcete nastavit otisk prstu, nechte dítě dotknout se vypínače. Otisk prstu dítěte je bezpečně uložen a nikdy neopouští <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Používáte standardní ochranu</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{soubor}few{# soubory}many{# souboru}other{# souborů}}</translation>
 <translation id="495170559598752135">Akce</translation>
 <translation id="4953808748584563296">Výchozí oranžový avatar</translation>
@@ -4395,6 +4397,7 @@
 <translation id="5575528586625653441">Došlo k problému s ukázkovou žádostí o registraci.</translation>
 <translation id="557722062034137776">Resetování zařízení nebude mít vliv na vaše účty Google ani na data synchronizovaná s těmito účty. Všechny soubory uložené místně v zařízení však budou smazány.</translation>
 <translation id="5578059481725149024">Automatické přihlášení</translation>
+<translation id="5581134892342029705">Překlad do jazyka <ph name="LANGUAGE" /> byl dokončen</translation>
 <translation id="558170650521898289">Ověření ovladače hardwaru systému Microsoft Windows</translation>
 <translation id="5581972110672966454">Zařízení nelze do domény přidat. Zkuste to znovu nebo kontaktujte vlastníka nebo administrátora zařízení. Kód chyby: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Hlavní nabídka</translation>
@@ -6789,6 +6792,7 @@
 <translation id="8054563304616131773">Zadejte prosím platnou e-mailovou adresu.</translation>
 <translation id="8054883179223321715">Dostupné u konkrétních webů ke sledování videí</translation>
 <translation id="8054921503121346576">Klávesnice s konektorem USB byla připojena</translation>
+<translation id="8057414620575339583">Postranní vyhledávání</translation>
 <translation id="8058655154417507695">Rok vypršení platnosti</translation>
 <translation id="8058986560951482265">Trhané přehrávání</translation>
 <translation id="8059417245945632445">&amp;Zkontrolovat zařízení</translation>
@@ -6840,6 +6844,7 @@
 <translation id="81020759409809034">Místní umístění</translation>
 <translation id="8102139037507939978">Odstranit ze souboru system_logs.txt informace umožňující zjištění totožnosti.</translation>
 <translation id="8104088837833760645">Stáhnout profil eSIM</translation>
+<translation id="8105368624971345109">Vypnout</translation>
 <translation id="8107015733319732394">Instalace Obchodu Google Play do zařízení <ph name="DEVICE_TYPE" />. Tato operace může několik minut trvat.</translation>
 <translation id="810728361871746125">Rozlišení displeje</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Žádné soubory cookie třetích stran}=1{1 soubor cookie třetí strany je blokován}few{# soubory cookie třetích stran jsou blokovány}many{# souboru cookie třetích stran je blokováno}other{# souborů cookie třetích stran je blokováno}}</translation>
@@ -7214,6 +7219,7 @@
 <translation id="8528074251912154910">Přidat jazyky</translation>
 <translation id="8528962588711550376">Přihlašování.</translation>
 <translation id="8529925957403338845">Připojení pomocí dynamického tetheringu se nezdařilo</translation>
+<translation id="8531701051932785007">Vylepšené Bezpečné prohlížení je vypnuté</translation>
 <translation id="8534656636775144800">Jejda! Při pokusu o přidání do domény došlo k chybě. Zkuste to prosím znovu.</translation>
 <translation id="8535005006684281994">Adresa URL pro obnovu certifikátu Netscape</translation>
 <translation id="8536956381488731905">Zvuk při stisku klávesy</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index d806c7ed..2f9f9e25 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -2743,6 +2743,7 @@
 <translation id="3788331399335602504">disse filer</translation>
 <translation id="3788401245189148511">Den vil kunne:</translation>
 <translation id="3789841737615482174">Installer</translation>
+<translation id="3790417903123637354">Noget gik galt. Prøv igen</translation>
 <translation id="379082410132524484">Dit kort er udløbet</translation>
 <translation id="3792890930871100565">Afbryd printere</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome registrerede ingen skadelig software på din computer • Tjekket for 1 dag siden}one{Chrome registrerede ingen skadelig software på din computer • Tjekket for {NUM_DAYS} dag siden}other{Chrome registrerede ingen skadelig software på din computer • Tjekket for {NUM_DAYS} dage siden}}</translation>
@@ -3829,6 +3830,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" anmoder om at oprette forbindelse til en seriel port</translation>
 <translation id="4944310289250773232">Denne godkendelsestjeneste hostes af <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Du kan konfigurere et fingeraftryk ved at få dit barn til at røre afbryderknappen. Dit barns fingeraftryksdata gemmes sikkert og forlader aldrig denne <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Du får standardbeskyttelse</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{en fil}one{# fil}other{# filer}}</translation>
 <translation id="495170559598752135">Handlinger</translation>
 <translation id="4953808748584563296">Orange standardavatar</translation>
@@ -4412,6 +4414,7 @@
 <translation id="5575528586625653441">Der opstod et problem med anmodningen om demoregistrering.</translation>
 <translation id="557722062034137776">Nulstilling af din enhed påvirker ikke dine Google-konti eller de data, der er synkroniseret til disse konti. Men alle filer, der er gemt lokalt på din enhed, slettes.</translation>
 <translation id="5578059481725149024">Automatisk login</translation>
+<translation id="5581134892342029705">Oversættelsen til <ph name="LANGUAGE" /> er udført</translation>
 <translation id="558170650521898289">Verificering af Microsoft Windows-hardwaredriver</translation>
 <translation id="5581972110672966454">Enheden kunne ikke knyttes til domænet. Prøv igen, eller kontakt enhedens ejer eller administrator. Fejlkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Hovedmenu</translation>
@@ -6806,6 +6809,7 @@
 <translation id="8054563304616131773">Angiv en gyldig mailadresse</translation>
 <translation id="8054883179223321715">Tilgængelig for bestemte videowebsites</translation>
 <translation id="8054921503121346576">USB-tastatur er tilsluttet</translation>
+<translation id="8057414620575339583">Sidesøgning</translation>
 <translation id="8058655154417507695">Udløbsår</translation>
 <translation id="8058986560951482265">Ryster</translation>
 <translation id="8059417245945632445">&amp;Inspicer enheder</translation>
@@ -6857,6 +6861,7 @@
 <translation id="81020759409809034">Lokal placering</translation>
 <translation id="8102139037507939978">Fjern personhenførbare oplysninger fra system_logs.txt.</translation>
 <translation id="8104088837833760645">Download eSIM-profilen</translation>
+<translation id="8105368624971345109">Deaktiver</translation>
 <translation id="8107015733319732394">Google Play Butik installeres på din <ph name="DEVICE_TYPE" />. Det kan tage nogle minutter.</translation>
 <translation id="810728361871746125">Skærmopløsning</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ingen tredjepartscookies}=1{1 tredjepartscookie er blokeret}one{# tredjepartscookie er blokeret}other{# tredjepartscookies er blokeret}}</translation>
@@ -7231,6 +7236,7 @@
 <translation id="8528074251912154910">Tilføj sprog</translation>
 <translation id="8528962588711550376">Logger ind...</translation>
 <translation id="8529925957403338845">Øjeblikkelig netdeling mislykkedes</translation>
+<translation id="8531701051932785007">Udvidet beskyttet browsing er deaktiveret</translation>
 <translation id="8534656636775144800">Ups! Noget gik galt ved forsøget på at tilmelde dig domænet. Prøv igen.</translation>
 <translation id="8535005006684281994">Webadresse for fornyelse af Netscape-certifikat</translation>
 <translation id="8536956381488731905">Lyd ved tastetryk</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index 3563085..d526769 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -2724,6 +2724,7 @@
 <translation id="3788331399335602504">diese Dateien</translation>
 <translation id="3788401245189148511">Sie könnte:</translation>
 <translation id="3789841737615482174">Installieren</translation>
+<translation id="3790417903123637354">Ein Fehler ist aufgetreten. Versuchen Sie es später noch einmal.</translation>
 <translation id="379082410132524484">Ihre Karte ist abgelaufen.</translation>
 <translation id="3792890930871100565">Druckerverbindungen trennen</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome hat auf Ihrem Computer keine schädliche Software gefunden • Vor 1 Tag geprüft}other{Chrome hat auf Ihrem Computer keine schädliche Software gefunden • Vor {NUM_DAYS} Tagen geprüft}}</translation>
@@ -3807,6 +3808,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" möchte eine Verbindung mit einem seriellen Port herstellen</translation>
 <translation id="4944310289250773232">Dieser Authentifizierungsdienst wird von <ph name="SAML_DOMAIN" /> gehostet</translation>
 <translation id="4945439665401275950">Bitten Sie Ihr Kind, die Ein-/Aus-Taste zu berühren, um den Fingerabdruck einzurichten. Der Fingerabdruck Ihres Kindes wird möglichst sicher und niemals außerhalb dieses Geräts (<ph name="DEVICE_TYPE" />) gespeichert.</translation>
+<translation id="4946459324029651239">Sie erhalten den Standardschutz</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{eine Datei}other{# Dateien}}</translation>
 <translation id="495170559598752135">Aktionen</translation>
 <translation id="4953808748584563296">Orangefarbener Standardavatar</translation>
@@ -4390,6 +4392,7 @@
 <translation id="5575528586625653441">Ein Problem mit der Demoregistrierungsanforderung ist aufgetreten.</translation>
 <translation id="557722062034137776">Beim Zurücksetzen Ihres Geräts bleiben Ihre Google-Konten sowie alle mit diesen Konten synchronisierten Daten unberührt. Es werden jedoch alle Dateien gelöscht, die Sie lokal auf dem Gerät gespeichert haben.</translation>
 <translation id="5578059481725149024">Automatisch anmelden</translation>
+<translation id="5581134892342029705">Übersetzung in die Sprache <ph name="LANGUAGE" /> abgeschlossen</translation>
 <translation id="558170650521898289">Verifizierung von Microsoft Windows-Hardwaretreibern</translation>
 <translation id="5581972110672966454">Das Gerät konnte der Domain nicht beitreten. Bitte noch einmal versuchen oder an den Eigentümer des Geräts oder an den Administrator wenden. Fehlercode: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Hauptmenü</translation>
@@ -6836,6 +6839,7 @@
 <translation id="81020759409809034">Lokaler Speicherort</translation>
 <translation id="8102139037507939978">Personenidentifizierbare Informationen aus system_logs.txt entfernen.</translation>
 <translation id="8104088837833760645">eSIM-Profil herunterladen</translation>
+<translation id="8105368624971345109">Deaktivieren</translation>
 <translation id="8107015733319732394">Google Play Store wird auf Ihrem <ph name="DEVICE_TYPE" /> installiert. Dies kann ein paar Minuten dauern.</translation>
 <translation id="810728361871746125">Displayauflösung</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Keine Drittanbieter-Cookies}=1{1 Cookie von Drittanbietern blockiert}other{# Cookies von Drittanbietern blockiert}}</translation>
@@ -7210,6 +7214,7 @@
 <translation id="8528074251912154910">Sprachen hinzufügen</translation>
 <translation id="8528962588711550376">Anmeldung läuft...</translation>
 <translation id="8529925957403338845">Fehler bei Instant Tethering-Verbindung</translation>
+<translation id="8531701051932785007">Erweitertes Safe Browsing ist deaktiviert</translation>
 <translation id="8534656636775144800">Hoppla! Beim Beitritt zur Domain ist ein Fehler aufgetreten. Bitte versuchen Sie es noch einmal.</translation>
 <translation id="8535005006684281994">Verlängerungs-URL für Netscape-Zertifikate</translation>
 <translation id="8536956381488731905">Ton bei Tastendruck</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 06194c9..a779296d 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Η επαναφορά Linux βρίσκεται σε εξέλιξη.</translation>
 <translation id="1244303850296295656">Σφάλμα επέκτασης</translation>
 <translation id="1246863218384630739">Δεν ήταν δυνατή η εγκατάσταση του <ph name="VM_NAME" />: Το URL εικόνας εμφάνισε κωδικό σφάλματος <ph name="HTTP_ERROR" />. Επικοινωνήστε με τον διαχειριστή.</translation>
-<translation id="1247071602516579380">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Tablet με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Αναμενόμενο άγκιστρο ανοίγματος: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Με αυτήν την ενέργεια θα διαγραφούν <ph name="TOTAL_USAGE" /> των δεδομένων που έχουν αποθηκευτεί από ιστοτόπους και τις εγκατεστημένες εφαρμογές τους.</translation>
 <translation id="1251578593170406502">Σάρωση για δίκτυα δεδομένων κινητής τηλεφωνίας...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837">Επιλέχθηκαν <ph name="NUMBER_OF_ITEMS_SELECTED" /> στοιχεία</translation>
 <translation id="1442851588227551435">Ορισμός ενεργού εισιτηρίου Kerberos</translation>
 <translation id="1444628761356461360">Η διαχείριση αυτής της ρύθμισης πραγματοποιείται από τον ιδιοκτήτη της συσκευής, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Τηλέφωνο με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Δεν ήταν δυνατή η φόρτωση του "<ph name="IMAGE_PATH" />" για το θέμα.</translation>
 <translation id="1449191289887455076">Πατήστε ξανά το πλήκτρο <ph name="CURRENTKEY" /> για επιβεβαίωση της ανάθεσης και <ph name="RESPONSE" />.</translation>
 <translation id="1451375123200651445">Ιστοσελίδα, μεμονωμένο αρχείο</translation>
@@ -872,7 +870,6 @@
 <translation id="1855079636134697549">Η κάμερα είναι ενεργοποιημένη</translation>
 <translation id="1856715684130786728">Προσθήκη τοποθεσίας…</translation>
 <translation id="1858585891038687145">Να θεωρείται αξιόπιστο αυτό το πιστοποιητικό για τον προσδιορισμό κατασκευαστών λογισμικού</translation>
-<translation id="1859787252990099899">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Άγνωστη συσκευή με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Αυτός ο φάκελος είναι άδειος</translation>
 <translation id="1862311223300693744">Έχετε εγκαταστήσει κάποιο ιδιαίτερο λογισμικό VPN, διακομιστή μεσολάβησης, τείχους προστασίας ή
     NAS;</translation>
@@ -1248,7 +1245,6 @@
 <translation id="2242687258748107519">Πληροφορίες αρχείου</translation>
 <translation id="2246549592927364792">Να λαμβάνονται περιγραφές εικόνων από το Google;</translation>
 <translation id="2247738527273549923">Η διαχείριση της συσκευής σας γίνεται από τον οργανισμό σας</translation>
-<translation id="2249061317998743208">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Χειριστήριο παιχνιδιού με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Άνοιγμα ως παραθύρου με καρτέλες</translation>
 <translation id="2249605167705922988">π.χ. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Άνοιγμα με πρόγραμμα προβολής συστήματος</translation>
@@ -2010,7 +2006,6 @@
 <translation id="3007771295016901659">Δημιουργία διπλότυπης καρτέλας</translation>
 <translation id="3008232374986381779">Εκτελέστε εργαλεία, προγράμματα επεξεργασίας και IDE Linux στη συσκευή <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Επαναφορά αδειών</translation>
-<translation id="3008396025115884998">Συσκευή <ph name="DEVICE_INDEX" />από <ph name="DEVICE_COUNT" />, Συσκευή ήχου με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Ο τομέας <ph name="MANAGER" /> απαιτεί να συνδεθείτε σήμερα στο δίκτυο Wi-Fi και να κατεβάσετε μια ενημέρωση. Εναλλακτικά, μπορείτε να την κατεβάσετε από μια σύνδεση με ογκοχρέωση (ενδέχεται να ισχύουν χρεώσεις).}other{Ο τομέας <ph name="MANAGER" /> απαιτεί να συνδεθείτε στο δίκτυο Wi-Fi πριν από τη λήξη της προθεσμίας και να κατεβάσετε μια ενημέρωση. Εναλλακτικά, μπορείτε να την κατεβάσετε από μια σύνδεση με ογκοχρέωση (ενδέχεται να ισχύουν χρεώσεις).}}</translation>
 <translation id="3009300415590184725">Είστε βέβαιοι ότι θέλετε να ακυρώσετε τη διαδικασία ρύθμισης της υπηρεσίας δεδομένων κινητής τηλεφωνίας;</translation>
 <translation id="3009779501245596802">Ευρετηριασμένες βάσεις δεδομένων</translation>
@@ -2316,7 +2311,6 @@
 <translation id="3348038390189153836">Ανιχνεύτηκε αφαιρούμενη συσκευή</translation>
 <translation id="3348131053948466246">Προτεινόμενα emoji. Πατήστε τα πλήκτρα επάνω και κάτω για πλοήγηση και Enter για εισαγωγή.</translation>
 <translation id="3349933790966648062">Αποτύπωμα μνήμης</translation>
-<translation id="3354972872297836698">Δεν ήταν δυνατή η σύζευξη με τη συσκευή <ph name="DEVICE_NAME" />, επιλέξτε συσκευή για να δοκιμάσετε ξανά</translation>
 <translation id="3355936511340229503">Σφάλμα σύνδεσης</translation>
 <translation id="3356580349448036450">Ολοκληρώθηκε</translation>
 <translation id="3359256513598016054">Περιορισμοί πολιτικής πιστοποιητικού</translation>
@@ -2749,6 +2743,7 @@
 <translation id="3788331399335602504">αυτών των αρχείων</translation>
 <translation id="3788401245189148511">Θα μπορούσε να εκτελέσει τις εξής ενέργειες:</translation>
 <translation id="3789841737615482174">Εγκατάσταση</translation>
+<translation id="3790417903123637354">Παρουσιάστηκε κάποιο πρόβλημα. Δοκιμάστε ξανά αργότερα.</translation>
 <translation id="379082410132524484">Η κάρτα σας έληξε</translation>
 <translation id="3792890930871100565">Αποσύνδεση εκτυπωτών</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Το Chrome δεν εντόπισε επιβλαβές λογισμικό στον υπολογιστή σας • Ο έλεγχος έγινε πριν από 1 ημέρα}other{Το Chrome δεν εντόπισε επιβλαβές λογισμικό στον υπολογιστή σας • Ο έλεγχος έγινε πριν από {NUM_DAYS} ημέρες}}</translation>
@@ -3148,7 +3143,6 @@
 <translation id="4200689466366162458">Προσαρμοσμένες λέξεις</translation>
 <translation id="4200983522494130825">Νέα &amp;καρτέλα</translation>
 <translation id="4201546031411513170">Μπορείτε πάντα να επιλέξετε τα στοιχεία που θέλετε να συγχρονίσετε στις ρυθμίσεις.</translation>
-<translation id="4202417625268941299">Με τη Βελτιωμένη Ασφαλή περιήγηση, θα λάβετε την πιο ισχυρή ασφάλεια του Chrome.</translation>
 <translation id="420283545744377356">Απενεργοποίηση προφύλαξης οθόνης</translation>
 <translation id="4206144641569145248">Εξωγήινος</translation>
 <translation id="4206323443866416204">Αναφορά σχολίων</translation>
@@ -3655,7 +3649,6 @@
 <translation id="4759238208242260848">Λήψεις</translation>
 <translation id="4761104368405085019">Χρήση του μικροφώνου σας</translation>
 <translation id="4762718786438001384">Ο ελεύθερος χώρος στον δίσκο της συσκευής είναι οριακός</translation>
-<translation id="4762898026821161650">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Υπολογιστής με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Όταν είδατε αυτήν τη σελίδα, ορίστηκαν τα ακόλουθα cookie</translation>
 <translation id="4765582662863429759">Επιτρέπει στο Android Messages τη μετάδοση μηνυμάτων κειμένου από το τηλέφωνό σας στο Chromebook</translation>
 <translation id="4768332406694066911">Διαθέτετε πιστοποιητικά από αυτούς τους οργανισμούς που σας προσδιορίζουν</translation>
@@ -5838,7 +5831,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Ο έλεγχος ασφαλείας εκτελέστηκε πριν από 1 λεπτό.}other{Ο έλεγχος ασφαλείας εκτελέστηκε πριν από {NUM_MINS} λεπτά.}}</translation>
 <translation id="7057767408836081338">Η απόκτηση των δεδομένων της εφαρμογής απέτυχε. Παρόλα αυτά, γίνεται προσπάθεια εκτέλεσης της εφαρμογής…</translation>
 <translation id="7058024590501568315">Κρυφό δίκτυο</translation>
-<translation id="70582545822664495">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Ποντίκι με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Ορισμός σε αυτόματη εκκίνηση</translation>
 <translation id="7062222374113411376">Να επιτρέπεται στους ιστότοπους που έκλεισαν πρόσφατα να ολοκληρώνουν την αποστολή και τη λήψη δεδομένων (συνιστάται)</translation>
 <translation id="7063129466199351735">Γίνεται επεξεργασία συντομεύσεων…</translation>
@@ -6002,7 +5994,6 @@
 <translation id="7257173066616499747">Δίκτυα Wi-Fi</translation>
 <translation id="725758059478686223">Υπηρεσία εκτύπωσης</translation>
 <translation id="7257666756905341374">Ανάγνωση δεδομένων που αντιγράφετε και επικολλάτε</translation>
-<translation id="7258006747130724016">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Βιντεοκάμερα με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Μετασχηματισμοί</translation>
 <translation id="7258225044283673131">Αυτή η εφαρμογή δεν αποκρίνεται. Για να κλείσετε την εφαρμογή, επιλέξτε Αναγκαστικό κλείσιμο.</translation>
 <translation id="7262004276116528033">Η υπηρεσία σύνδεσης φιλοξενείται από τον τομέα <ph name="SAML_DOMAIN" /></translation>
@@ -6799,7 +6790,6 @@
 <translation id="8037117027592400564">Ανάγνωση όλου του κειμένου που εκφωνείται με χρήση ομιλίας σύνθεσης</translation>
 <translation id="8037357227543935929">Να γίνεται ερώτηση (προεπιλογή)</translation>
 <translation id="803771048473350947">Αρχείο</translation>
-<translation id="8038399858950372766">Συσκευή <ph name="DEVICE_INDEX" /> από <ph name="DEVICE_COUNT" />, Πληκτρολόγιο με όνομα <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Αποστολή σχολίων</translation>
 <translation id="8042142357103597104">Αδιαφάνεια κειμένου</translation>
 <translation id="8044262338717486897">Η εφαρμογή <ph name="LINUX_APP_NAME" /> δεν αποκρίνεται.</translation>
@@ -6876,6 +6866,7 @@
 <translation id="81020759409809034">Τοπική τοποθεσία</translation>
 <translation id="8102139037507939978">Αφαίρεση στοιχείων προσωπικής ταυτοποίησης από το system_logs.txt.</translation>
 <translation id="8104088837833760645">Λήψη προφίλ eSIM</translation>
+<translation id="8105368624971345109">Απενεργοποίηση</translation>
 <translation id="8107015733319732394">Εγκατάσταση του Google Play Store στη συσκευή σας <ph name="DEVICE_TYPE" />. Αυτό μπορεί να διαρκέσει μερικά λεπτά.</translation>
 <translation id="810728361871746125">Ανάλυση οθόνης</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Δεν υπάρχουν cookie τρίτου μέρους}=1{Αποκλείστηκε 1 cookie τρίτου μέρους}other{Αποκλείστηκαν # cookie τρίτου μέρους}}</translation>
@@ -6940,7 +6931,6 @@
 <translation id="8168071266284693455">Οι σελιδοδείκτες, οι κωδικοί πρόσβασης, το ιστορικό σας και άλλα δεδομένα συγχρονίζονται σε όλες τις συσκευές σας.</translation>
 <translation id="8168435359814927499">Περιεχόμενο</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Προσθήκη καρτέλας στη λίστα ανάγνωσης}other{Προσθήκη καρτελών στη λίστα ανάγνωσης}}</translation>
-<translation id="8169849063724750395">Επανενεργοποίηση</translation>
 <translation id="8171334254070436367">Απόκρυψη όλων των καρτών</translation>
 <translation id="8174047975335711832">Στοιχεία συσκευής</translation>
 <translation id="8174876712881364124">Δημιουργία αντιγράφων ασφαλείας στο Google Drive. Επαναφέρετε με ευκολία δεδομένα ή αλλάξτε συσκευή ανά πάσα στιγμή. Αυτό το αντίγραφο ασφαλείας περιλαμβάνει δεδομένα εφαρμογών. Τα δεδομένα μεταφορτώνονται στην Google και κρυπτογραφούνται χρησιμοποιώντας τον κωδικό πρόσβασης του Λογαριασμού Google του παιδιού σας. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation>
@@ -7014,7 +7004,6 @@
 <translation id="8249615410597138718">Αποστολή στις συσκευές σας</translation>
 <translation id="8249672078237421304">Να προτείνεται να μεταφράζονται οι σελίδες που δεν εμφανίζονται στη γλώσσα ανάγνωσής σας</translation>
 <translation id="8251441930213048644">Ανανέωση τώρα</translation>
-<translation id="8251509999076836464">Σύζευξη με τη συσκευή <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Η μικρογραφία καταργήθηκε.</translation>
 <translation id="825238165904109940">Να εμφανίζονται πάντα ολόκληρα URL</translation>
 <translation id="8252569384384439529">Μεταφόρτωση…</translation>
@@ -7256,7 +7245,6 @@
 <translation id="8534656636775144800">Δυστυχώς, παρουσιάστηκε σφάλμα κατά την προσπάθεια σύνδεσης στον τομέα. Δοκιμάστε ξανά.</translation>
 <translation id="8535005006684281994">URL ανανέωσης πιστοποιητικού Netscape</translation>
 <translation id="8536956381488731905">Ήχος κατά το πάτημα πλήκτρων</translation>
-<translation id="8538718737588735385">Επανενεργοποίηση</translation>
 <translation id="8539727552378197395">Όχι (HttpOnly)</translation>
 <translation id="8539766201049804895">Αναβάθμιση</translation>
 <translation id="8540136935098276800">Εισαγάγετε ένα URL με σωστή μορφοποίηση.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index dc5a82e..8e16d8fd 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Linux restore currently in progress</translation>
 <translation id="1244303850296295656">Extension error</translation>
 <translation id="1246863218384630739">Couldn't install <ph name="VM_NAME" />: Image URL returned a <ph name="HTTP_ERROR" /> error code. Please contact your administrator.</translation>
-<translation id="1247071602516579380">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; tablet named <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Expected opening curly bracket: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">This will clear <ph name="TOTAL_USAGE" /> of data stored by sites and installed apps</translation>
 <translation id="1251578593170406502">Scanning for mobile data networks…</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> selected</translation>
 <translation id="1442851588227551435">Set active Kerberos ticket</translation>
 <translation id="1444628761356461360">This setting is managed by the device owner, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; phone named <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Could not load '<ph name="IMAGE_PATH" />' for theme.</translation>
 <translation id="1449191289887455076">Press '<ph name="CURRENTKEY" />' again to confirm assignment and <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Web page, Single File</translation>
@@ -872,7 +870,6 @@
 <translation id="1855079636134697549">Camera is turned on</translation>
 <translation id="1856715684130786728">Add location...</translation>
 <translation id="1858585891038687145">Trust this certificate for identifying software makers</translation>
-<translation id="1859787252990099899">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; unknown device named <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">This folder is empty</translation>
 <translation id="1862311223300693744">Do you have any special VPN, proxy, firewall or NAS software
     installed?</translation>
@@ -1248,7 +1245,6 @@
 <translation id="2242687258748107519">File Info</translation>
 <translation id="2246549592927364792">Get image descriptions from Google?</translation>
 <translation id="2247738527273549923">Your device is managed by your organisation</translation>
-<translation id="2249061317998743208">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; game controller named <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Open as tabbed window</translation>
 <translation id="2249605167705922988">e.g. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Open with system viewer</translation>
@@ -2010,7 +2006,6 @@
 <translation id="3007771295016901659">Duplicate tab</translation>
 <translation id="3008232374986381779">Run Linux tools, editors and IDEs on your <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Reset permissions</translation>
-<translation id="3008396025115884998">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; audio device named <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> requires you to connect to Wi-Fi today to download an update. Or, download from a metered connection (charges may apply).}other{<ph name="MANAGER" /> requires you to connect to Wi-Fi and download an update before the deadline. Or, download from a metered connection (charges may apply).}}</translation>
 <translation id="3009300415590184725">Are you sure you want to cancel the mobile data service set-up process?</translation>
 <translation id="3009779501245596802">Indexed Databases</translation>
@@ -2316,7 +2311,6 @@
 <translation id="3348038390189153836">Removable device detected</translation>
 <translation id="3348131053948466246">Emoji suggested. Press up or down to navigate, and enter to insert.</translation>
 <translation id="3349933790966648062">Memory footprint</translation>
-<translation id="3354972872297836698">Couldn't pair to device <ph name="DEVICE_NAME" />; select device to try again</translation>
 <translation id="3355936511340229503">Connection error</translation>
 <translation id="3356580349448036450">Complete</translation>
 <translation id="3359256513598016054">Certificate Policy Constraints</translation>
@@ -2749,6 +2743,7 @@
 <translation id="3788331399335602504">these files</translation>
 <translation id="3788401245189148511">It could:</translation>
 <translation id="3789841737615482174">Install</translation>
+<translation id="3790417903123637354">Something went wrong. Try again later</translation>
 <translation id="379082410132524484">Your card has expired</translation>
 <translation id="3792890930871100565">Disconnect printers</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome didn't find harmful software on your computer • Checked 1 day ago}other{Chrome didn't find harmful software on your computer • Checked {NUM_DAYS} days ago}}</translation>
@@ -3148,7 +3143,6 @@
 <translation id="4200689466366162458">Customised words</translation>
 <translation id="4200983522494130825">New &amp;tab</translation>
 <translation id="4201546031411513170">You can always choose what to sync in settings.</translation>
-<translation id="4202417625268941299">With Enhanced Safe Browsing, you’ll get Chrome’s strongest security</translation>
 <translation id="420283545744377356">Turn off screensaver</translation>
 <translation id="4206144641569145248">Alien</translation>
 <translation id="4206323443866416204">Feedback Report</translation>
@@ -3655,7 +3649,6 @@
 <translation id="4759238208242260848">Downloads</translation>
 <translation id="4761104368405085019">Use your microphone</translation>
 <translation id="4762718786438001384">Device disk space critically low</translation>
-<translation id="4762898026821161650">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; computer named <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">The following cookies were set when you viewed this page</translation>
 <translation id="4765582662863429759">Allows Android Messages to relay texts from your phone to your Chromebook</translation>
 <translation id="4768332406694066911">You have certificates from these organisations that identify you</translation>
@@ -5837,7 +5830,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Safety check ran 1 minute ago}other{Safety check ran {NUM_MINS} minutes ago}}</translation>
 <translation id="7057767408836081338">Failed to obtain app data. Trying to run the app anyway…</translation>
 <translation id="7058024590501568315">Hidden network</translation>
-<translation id="70582545822664495">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; mouse named <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Set to auto-launch</translation>
 <translation id="7062222374113411376">Allow recently closed sites to finish sending and receiving data (recommended)</translation>
 <translation id="7063129466199351735">Processing shortcuts...</translation>
@@ -6001,7 +5993,6 @@
 <translation id="7257173066616499747">Wi-Fi networks</translation>
 <translation id="725758059478686223">Printing Service</translation>
 <translation id="7257666756905341374">Read data that you copy and paste</translation>
-<translation id="7258006747130724016">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; video camera named <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformations</translation>
 <translation id="7258225044283673131">The application is not responding. Select 'Force close' to close the app.</translation>
 <translation id="7262004276116528033">This sign-in service is hosted by <ph name="SAML_DOMAIN" /></translation>
@@ -6798,7 +6789,6 @@
 <translation id="8037117027592400564">Read all text spoken using synthesised speech</translation>
 <translation id="8037357227543935929">Ask (default)</translation>
 <translation id="803771048473350947">File</translation>
-<translation id="8038399858950372766">Device <ph name="DEVICE_INDEX" /> of <ph name="DEVICE_COUNT" />; keyboard named <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Send Feedback</translation>
 <translation id="8042142357103597104">Text opacity</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> not responding.</translation>
@@ -6875,6 +6865,7 @@
 <translation id="81020759409809034">Local location</translation>
 <translation id="8102139037507939978">Strip personally identifiable information from system_logs.txt.</translation>
 <translation id="8104088837833760645">Download eSIM profile</translation>
+<translation id="8105368624971345109">Turn Off</translation>
 <translation id="8107015733319732394">Installing the Google Play Store on your <ph name="DEVICE_TYPE" />. This could take a few minutes.</translation>
 <translation id="810728361871746125">Display resolution</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No third-party cookies}=1{1 third-party cookie is blocked}other{# third-party cookies are blocked}}</translation>
@@ -6939,7 +6930,6 @@
 <translation id="8168071266284693455">Your bookmarks, passwords, history and more are synced on all your devices</translation>
 <translation id="8168435359814927499">Content</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Add tab to reading list}other{Add tabs to reading list}}</translation>
-<translation id="8169849063724750395">Turn back on</translation>
 <translation id="8171334254070436367">Hide all cards</translation>
 <translation id="8174047975335711832">Device information</translation>
 <translation id="8174876712881364124">Back up to Google Drive. Easily restore data or switch device at any time. This backup includes app data. Backups are uploaded to Google and encrypted using your child's Google Account password. <ph name="BEGIN_LINK1" />Learn More<ph name="END_LINK1" /></translation>
@@ -7013,7 +7003,6 @@
 <translation id="8249615410597138718">Send to your devices</translation>
 <translation id="8249672078237421304">Offer to translate pages that aren't in a language you read</translation>
 <translation id="8251441930213048644">Refresh now</translation>
-<translation id="8251509999076836464">Pairing to <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Thumbnail removed.</translation>
 <translation id="825238165904109940">Always Show Full URLs</translation>
 <translation id="8252569384384439529">Uploading…</translation>
@@ -7255,7 +7244,6 @@
 <translation id="8534656636775144800">Oops!  Something went wrong when trying to join the domain. Please try again.</translation>
 <translation id="8535005006684281994">Netscape Certificate Renewal URL</translation>
 <translation id="8536956381488731905">Sound on key-press</translation>
-<translation id="8538718737588735385">Turn back on</translation>
 <translation id="8539727552378197395">No (HttpOnly)</translation>
 <translation id="8539766201049804895">Upgrade</translation>
 <translation id="8540136935098276800">Enter a correctly formatted URL</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 00b950f..ffbe16f0 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -2724,6 +2724,7 @@
 <translation id="3788331399335602504">estos archivos</translation>
 <translation id="3788401245189148511">Podría:</translation>
 <translation id="3789841737615482174">Instalar</translation>
+<translation id="3790417903123637354">Se produjo un error; vuelve a intentarlo más tarde</translation>
 <translation id="379082410132524484">La tarjeta está vencida</translation>
 <translation id="3792890930871100565">Desconectar impresoras</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome no encontró software dañino en la computadora • Se verificó hace 1 día}other{Chrome no encontró software dañino en la computadora • Se verificó hace {NUM_DAYS} días}}</translation>
@@ -3809,6 +3810,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quiere conectarse a un puerto en serie</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> aloja este servicio de autenticación</translation>
 <translation id="4945439665401275950">Para configurar una huella dactilar, haz que tu hijo toque el botón de encendido. Los datos de la huella dactilar de tu hijo se almacenan de forma segura y no salen nunca de este dispositivo <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Recibes protección estándar</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{un archivo}other{# archivos}}</translation>
 <translation id="495170559598752135">Acciones</translation>
 <translation id="4953808748584563296">Avatar naranja predeterminado</translation>
@@ -4392,6 +4394,7 @@
 <translation id="5575528586625653441">Hubo un problema con la solicitud de registro de demostración.</translation>
 <translation id="557722062034137776">Restablecer el dispositivo no afectará las cuentas de Google ni los datos sincronizados con esas cuentas. Sin embargo, se eliminarán todos los archivos guardados localmente en el dispositivo.</translation>
 <translation id="5578059481725149024">Acceso automático</translation>
+<translation id="5581134892342029705">Se completó la traducción al <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Verificación de controladores de hardware de Windows, Microsoft</translation>
 <translation id="5581972110672966454">No se puede unir el dispositivo con el dominio. Vuelve a intentarlo o comunícate con el administrador o propietario de tu dispositivo. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menú principal</translation>
@@ -6787,6 +6790,7 @@
 <translation id="8054563304616131773">Ingresa una dirección de correo electrónico válida.</translation>
 <translation id="8054883179223321715">Disponible para sitios de video específicos</translation>
 <translation id="8054921503121346576">Teclado USB conectado</translation>
+<translation id="8057414620575339583">Búsqueda lateral</translation>
 <translation id="8058655154417507695">Año de vencimiento</translation>
 <translation id="8058986560951482265">Temblorosa</translation>
 <translation id="8059417245945632445">&amp;Inspeccionar dispositivos</translation>
@@ -6838,6 +6842,7 @@
 <translation id="81020759409809034">Ubicación local</translation>
 <translation id="8102139037507939978">Quita la información de identificación personal del archivo system_logs.txt.</translation>
 <translation id="8104088837833760645">Descargar el perfil de eSIM</translation>
+<translation id="8105368624971345109">Desactivar</translation>
 <translation id="8107015733319732394">Se está instalando Google Play Store en tu <ph name="DEVICE_TYPE" />. Esta acción puede tardar unos minutos.</translation>
 <translation id="810728361871746125">Resolución de la pantalla</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No hay cookies de terceros}=1{Se bloqueó 1 cookie de terceros}other{Se bloquearon # cookies de terceros}}</translation>
@@ -7212,6 +7217,7 @@
 <translation id="8528074251912154910">Agregar idiomas</translation>
 <translation id="8528962588711550376">Accediendo.</translation>
 <translation id="8529925957403338845">Se produjo un error en la conexión instantánea mediante dispositivo móvil</translation>
+<translation id="8531701051932785007">Se desactivó la Navegación segura mejorada</translation>
 <translation id="8534656636775144800">Se produjo un error al intentar unirse al dominio. Vuelve a intentarlo.</translation>
 <translation id="8535005006684281994">URL de renovación del certificado Netscape</translation>
 <translation id="8536956381488731905">Sonar al presionar teclas</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 7fc8847a..02409e0 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -205,7 +205,7 @@
 <translation id="1197088940767939838">Naranja</translation>
 <translation id="1197935538609051549">Desactivar</translation>
 <translation id="1197979282329025000">Se ha producido un error al recuperar las funciones de la impresora <ph name="PRINTER_NAME" />. Esta impresora no se ha podido registrar en <ph name="CLOUD_PRINT_NAME" />.</translation>
-<translation id="119944043368869598">Eliminar todo</translation>
+<translation id="119944043368869598">Borrar todo</translation>
 <translation id="1199814941632954229">Se están aprovisionando certificados para estos perfiles de certificado</translation>
 <translation id="120069043972472860">Pésima</translation>
 <translation id="1201402288615127009">Siguiente</translation>
@@ -2727,6 +2727,7 @@
 <translation id="3788331399335602504">estos archivos</translation>
 <translation id="3788401245189148511">Podría:</translation>
 <translation id="3789841737615482174">Instalar</translation>
+<translation id="3790417903123637354">Se ha producido un error. Vuelve a intentarlo más tarde.</translation>
 <translation id="379082410132524484">Tu tarjeta ha caducado</translation>
 <translation id="3792890930871100565">Desconectar impresoras</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome no ha detectado software dañino en tu ordenador • Comprobado hace 1 día}other{Chrome no ha detectado software dañino en tu ordenador • Comprobado hace {NUM_DAYS} días}}</translation>
@@ -3811,6 +3812,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" solicita conectarse a un puerto serie</translation>
 <translation id="4944310289250773232">Este servicio de autenticación está alojado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Para configurar la huella digital, pídele a tu hijo/a que toque el botón de encendido. Los datos de la huella digital de tu hijo/a se almacenarán de forma segura y nunca saldrán de este <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Estás usando la protección estándar</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{un archivo}other{# archivos}}</translation>
 <translation id="495170559598752135">Acciones</translation>
 <translation id="4953808748584563296">Avatar naranja predeterminado</translation>
@@ -4394,6 +4396,7 @@
 <translation id="5575528586625653441">No se ha podido solicitar el registro de la demostración.</translation>
 <translation id="557722062034137776">El restablecimiento de tu dispositivo no afectará a tus cuentas de Google ni a los datos sincronizados con esas cuentas, pero se eliminarán todos los archivos guardados localmente en tu dispositivo.</translation>
 <translation id="5578059481725149024">Iniciar sesión automáticamente</translation>
+<translation id="5581134892342029705">Traducción a <ph name="LANGUAGE" /> finalizada</translation>
 <translation id="558170650521898289">Comprobación de los controladores de hardware de Windows de Microsoft</translation>
 <translation id="5581972110672966454">No se puede vincular el dispositivo al dominio. Vuelve a intentarlo o ponte en contacto con el propietario o el administrador del dispositivo. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menú principal</translation>
@@ -6789,6 +6792,7 @@
 <translation id="8054563304616131773">Escribe una dirección de correo electrónico válida</translation>
 <translation id="8054883179223321715">Disponible para algunos sitios de vídeo</translation>
 <translation id="8054921503121346576">Teclado USB conectado</translation>
+<translation id="8057414620575339583">Búsqueda lateral</translation>
 <translation id="8058655154417507695">Año de caducidad</translation>
 <translation id="8058986560951482265">Entrecortada</translation>
 <translation id="8059417245945632445">&amp;Inspeccionar dispositivos</translation>
@@ -6840,6 +6844,7 @@
 <translation id="81020759409809034">Ubicación local</translation>
 <translation id="8102139037507939978">Quita la información personal identificable del archivo system_logs.txt.</translation>
 <translation id="8104088837833760645">Descargar perfil de eSIM</translation>
+<translation id="8105368624971345109">Desactivar</translation>
 <translation id="8107015733319732394">Se está instalando Google Play Store en tu <ph name="DEVICE_TYPE" />. Esto puede tardar unos minutos.</translation>
 <translation id="810728361871746125">Resolución de pantalla</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{No hay cookies de terceros}=1{Se ha bloqueado 1 cookie de terceros}other{Se han bloqueado # cookies de terceros}}</translation>
@@ -7214,6 +7219,7 @@
 <translation id="8528074251912154910">Añadir idiomas</translation>
 <translation id="8528962588711550376">Accediendo</translation>
 <translation id="8529925957403338845">No se ha podido establecer la conexión compartida instantánea</translation>
+<translation id="8531701051932785007">Navegación segura mejorada está desactivada</translation>
 <translation id="8534656636775144800">¡Vaya! No se ha podido vincular el dominio. Inténtalo de nuevo.</translation>
 <translation id="8535005006684281994">URL de renovación de certificado de Netscape</translation>
 <translation id="8536956381488731905">Sonido al pulsar tecla</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index c8b9ae3..c9fb5f46 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -2733,6 +2733,7 @@
 <translation id="3788331399335602504">need failid</translation>
 <translation id="3788401245189148511">See võiks:</translation>
 <translation id="3789841737615482174">Installi</translation>
+<translation id="3790417903123637354">Midagi läks valesti. Proovige hiljem uuesti</translation>
 <translation id="379082410132524484">Teie kaart on aegunud</translation>
 <translation id="3792890930871100565">Eemalda printereid</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ei leidnud teie arvutist kahjulikku tarkvara • Kontrolliti 1 päev tagasi}other{Chrome ei leidnud teie arvutist kahjulikku tarkvara • Kontrolliti {NUM_DAYS} päeva tagasi}}</translation>
@@ -3818,6 +3819,7 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” soovib järjestikpordiga ühendust luua</translation>
 <translation id="4944310289250773232">Autentimisteenust hostib <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Sõrmejälje seadistamiseks paluge lapsel puudutada toitenuppu. Teie lapse sõrmejäljeandmed talletatakse turvaliselt ja neid ei edastata seadmest <ph name="DEVICE_TYPE" /> kunagi väljapoole.</translation>
+<translation id="4946459324029651239">Teil on standardtasemel kaitse</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{fail}other{# faili}}</translation>
 <translation id="495170559598752135">Toimingud</translation>
 <translation id="4953808748584563296">Oranž vaikeavatar</translation>
@@ -4401,6 +4403,7 @@
 <translation id="5575528586625653441">Ilmnes demo registreerimistaotlusega seotud probleem.</translation>
 <translation id="557722062034137776">Seadme lähtestamine ei mõjuta teie Google'i kontosid ega nende kontodega sünkroonitud andmeid. Kõik seadmesse lokaalselt salvestatud failid siiski kustutatakse.</translation>
 <translation id="5578059481725149024">Automaatne sisselogimine</translation>
+<translation id="5581134892342029705">Tõlge <ph name="LANGUAGE" /> keelde on valmis</translation>
 <translation id="558170650521898289">Microsoft Windowsi riistvara draiverite kontrollimine</translation>
 <translation id="5581972110672966454">Ei õnnestunud seadet domeeniga ühendada. Proovige uuesti või võtke ühendust seadme omaniku või administraatoriga. Veakood: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Peamenüü</translation>
@@ -6796,6 +6799,7 @@
 <translation id="8054563304616131773">Sisestage kehtiv e-posti aadress</translation>
 <translation id="8054883179223321715">Saadaval teatud videosaitide jaoks</translation>
 <translation id="8054921503121346576">USB-klaviatuur on ühendatud</translation>
+<translation id="8057414620575339583">Kõrvalotsing</translation>
 <translation id="8058655154417507695">Aegumisaasta</translation>
 <translation id="8058986560951482265">Katkendlik</translation>
 <translation id="8059417245945632445">&amp;Seadmete kontrollimine</translation>
@@ -6847,6 +6851,7 @@
 <translation id="81020759409809034">Kohalik asukoht</translation>
 <translation id="8102139037507939978">Eemaldage failist system_logs.txt isikut tuvastav teave.</translation>
 <translation id="8104088837833760645">eSIM-i profiili allalaadimine</translation>
+<translation id="8105368624971345109">Lülita välja</translation>
 <translation id="8107015733319732394">Google Play pood installitakse teie seadmesse <ph name="DEVICE_TYPE" />. See võib võtta mõne minuti.</translation>
 <translation id="810728361871746125">Ekraani eraldusvõime</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Kolmanda osapoole küpsisefailid puuduvad}=1{1 kolmanda osapoole küpsisefail blokeeriti}other{# kolmanda osapoole küpsisefaili blokeeriti}}</translation>
@@ -7221,6 +7226,7 @@
 <translation id="8528074251912154910">Keelte lisamine</translation>
 <translation id="8528962588711550376">Sisselogimine.</translation>
 <translation id="8529925957403338845">Automaatse jagamise ühendamine ebaõnnestus</translation>
+<translation id="8531701051932785007">Täiustatud ohutu sirvimine on välja lülitatud</translation>
 <translation id="8534656636775144800">Vabandust! Midagi läks domeeniga ühenduse loomisel valesti. Proovige uuesti.</translation>
 <translation id="8535005006684281994">Netscape'i sertifikaadi uuendus-URL</translation>
 <translation id="8536956381488731905">Heli klahvivajutusel</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 9b2ba2c..b63f383 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">Linux-en edukiontzia leheneratzen</translation>
 <translation id="1244303850296295656">Luzapenaren errorea</translation>
 <translation id="1246863218384630739">Ezin izan da instalatu <ph name="VM_NAME" />: irudiaren URLak <ph name="HTTP_ERROR" /> errore-kodea itzuli du. Jarri administratzailearekin harremanetan.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko tableta</translation>
 <translation id="1251366534849411931">Ezkerreko giltza behar da: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Webguneek eta instalatutako aplikazioek gordetako datuen <ph name="TOTAL_USAGE" /> garbituko dira</translation>
 <translation id="1251578593170406502">Datu-konexio bidezko sareak bilatzen…</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> hautatu dira</translation>
 <translation id="1442851588227551435">Ezarri Kerberos-eko zerbitzu-eskaera aktibo bat</translation>
 <translation id="1444628761356461360">Ezarpen hau gailuaren jabeak (<ph name="OWNER_EMAIL" />) kudeatzen du.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko telefonoa</translation>
 <translation id="144518587530125858">Ezin izan da "<ph name="IMAGE_PATH" />" kargatu itxura gisa.</translation>
 <translation id="1449191289887455076">Esleipena berresteko eta <ph name="RESPONSE" />, sakatu "<ph name="CURRENTKEY" />" berriro</translation>
 <translation id="1451375123200651445">Webgunea, fitxategi bakarra</translation>
@@ -861,7 +859,6 @@
 <translation id="1855079636134697549">Aktibatu da kamera</translation>
 <translation id="1856715684130786728">Gehitu kokapena…</translation>
 <translation id="1858585891038687145">Jo fidagarritzat software-egileak identifikatzeko ziurtagiri hau</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, identifikatu ezin den <ph name="DEVICE_NAME" /> izeneko gailua</translation>
 <translation id="1861262398884155592">Hutsik dago karpeta</translation>
 <translation id="1862311223300693744">Ba al duzu VPN, proxy, suebaki edo NAS software berezirik instalatuta?</translation>
 <translation id="1863182668524159459">Ez da aurkitu serieko atakarik</translation>
@@ -1236,7 +1233,6 @@
 <translation id="2242687258748107519">Fitxategiari buruzko informazioa</translation>
 <translation id="2246549592927364792">Google-k irudien azalpenak ematea nahi duzu?</translation>
 <translation id="2247738527273549923">Zure erakundeak kudeatzen du gailua</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko bideo-jokoen kontrolagailua</translation>
 <translation id="2249111429176737533">Ireki leiho fitxadun gisa</translation>
 <translation id="2249605167705922988">adibidez: 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Ireki sistema-ikustailearen bidez</translation>
@@ -1994,7 +1990,6 @@
 <translation id="3007771295016901659">Bikoiztu fitxa</translation>
 <translation id="3008232374986381779">Abiarazi Linux-erako tresnak, editoreak eta IDEak <ph name="DEVICE_TYPE" /> gailuan. <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Berrezarri baimenak</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko audio-gailua</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Gaur wifi-sare batera konektatzeko eta eguneratze bat deskargatzeko eskatzen du <ph name="MANAGER" /> domeinuak. Bestela, deskarga ezazu neurtutako konexio batetik (baliteke zerbait ordaindu behar izatea).}other{Epemuga baino lehen wifi-sare batera konektatzeko eta eguneratze bat deskargatzeko eskatzen du <ph name="MANAGER" /> domeinuak. Bestela, deskargatu eguneratzea neurtutako konexio batetik (baliteke zerbait ordaindu behar izatea).}}</translation>
 <translation id="3009300415590184725">Ziur mugikorreko datuen zerbitzua konfiguratzeko prozesua bertan behera utzi nahi duzula?</translation>
 <translation id="3009779501245596802">Datu-base indexatuak</translation>
@@ -2300,7 +2295,6 @@
 <translation id="3348038390189153836">Gailu aldagarria hauteman da</translation>
 <translation id="3348131053948466246">Emojiak iradoki dira. Nabigatzeko, sakatu Gora edo Behera gezia; txertatzeko, sakatu Sartu tekla.</translation>
 <translation id="3349933790966648062">Memoriaren erabilera</translation>
-<translation id="3354972872297836698">Ezin izan da parekatu <ph name="DEVICE_NAME" /> gailuarekin; berriro saiatzeko, hautatu gailua</translation>
 <translation id="3355936511340229503">Konexio-errorea</translation>
 <translation id="3356580349448036450">Osatuta</translation>
 <translation id="3359256513598016054">Ziurtagiri-gidalerroaren murriztapenak</translation>
@@ -2732,6 +2726,7 @@
 <translation id="3788331399335602504">fitxategiak</translation>
 <translation id="3788401245189148511">Hau egin dezake:</translation>
 <translation id="3789841737615482174">Instalatu</translation>
+<translation id="3790417903123637354">Arazoren bat izan da. Saiatu berriro geroago</translation>
 <translation id="379082410132524484">Iraungita dago txartela</translation>
 <translation id="3792890930871100565">Deskonektatu inprimagailuak</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome-k ez du aurkitu software kaltegarririk ordenagailuan • Atzo egiaztatu zuen}other{Chrome-k ez du aurkitu software kaltegarririk ordenagailuan • Duela {NUM_DAYS} egun egiaztatu zuen}}</translation>
@@ -3131,7 +3126,6 @@
 <translation id="4200689466366162458">Hitz pertsonalizatuak</translation>
 <translation id="4200983522494130825">Fi&amp;txa berria</translation>
 <translation id="4201546031411513170">Zer sinkronizatu nahi duzun aukeratzeko, joan Ezarpenak atalera.</translation>
-<translation id="4202417625268941299">Arakatze seguru hobetua aktibatuz gero, Chrome-ren segurtasun-aukerarik sendoena lortuko duzu</translation>
 <translation id="420283545744377356">Desaktibatu pantaila-babeslea</translation>
 <translation id="4206144641569145248">Estralurtarra</translation>
 <translation id="4206323443866416204">Iritzi-txostena</translation>
@@ -3637,7 +3631,6 @@
 <translation id="4759238208242260848">Deskargak</translation>
 <translation id="4761104368405085019">Erabili mikrofonoa</translation>
 <translation id="4762718786438001384">Oso toki gutxi dago gailuaren diskoan</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko ordenagailua</translation>
 <translation id="4763408175235639573">Cookie hauek ezarri dira orria ikusi duzunean:</translation>
 <translation id="4765582662863429759">Testu-mezuak telefonotik Chromebook gailura bidaltzea baimentzen dio Android Mezuak aplikazioari</translation>
 <translation id="4768332406694066911">Identifikatzen zaituzten erakunde hauen ziurtagiriak dituzu</translation>
@@ -5817,7 +5810,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Duela minutu bat egin da segurtasun-egiaztapena}other{Duela {NUM_MINS} minutu egin da segurtasun-egiaztapena}}</translation>
 <translation id="7057767408836081338">Ezin izan dira eskuratu aplikazioko datuak. Hala ere aplikazioa abiarazten saiatzen ari gara…</translation>
 <translation id="7058024590501568315">Sare ezkutua</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko sagua</translation>
 <translation id="7059858479264779982">Ezarri abiarazte automatikoa</translation>
 <translation id="7062222374113411376">Baimendu berriki itxitako webguneei datuak bidaltzen eta jasotzen amaitzea (gomendatua)</translation>
 <translation id="7063129466199351735">Lasterbideak prozesatzen…</translation>
@@ -5981,7 +5973,6 @@
 <translation id="7257173066616499747">Wi-Fi sareak</translation>
 <translation id="725758059478686223">Inprimaketa-zerbitzua</translation>
 <translation id="7257666756905341374">Irakurri kopiatzen eta itsasten dituzun datuak</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko bideo-kamera</translation>
 <translation id="7258192266780953209">Eraldaketak</translation>
 <translation id="7258225044283673131">Aplikazioak ez du erantzuten. Ixteko, hautatu "Behartu ixtera".</translation>
 <translation id="7262004276116528033">Saioa hasteko zerbitzuaren ostalaria <ph name="SAML_DOMAIN" /> da</translation>
@@ -6776,7 +6767,6 @@
 <translation id="8037117027592400564">Irakurri testu idatzi guztiak ahots sintetizatua erabilita</translation>
 <translation id="8037357227543935929">Galdetu (lehenetsia)</translation>
 <translation id="803771048473350947">Fitxategia</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" /> gailutatik <ph name="DEVICE_INDEX" />garrena, <ph name="DEVICE_NAME" /> izeneko teklatua</translation>
 <translation id="8041089156583427627">Bidali oharrak</translation>
 <translation id="8042142357103597104">Testuaren opakutasuna</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> aplikazioak ez du erantzuten.</translation>
@@ -6852,6 +6842,7 @@
 <translation id="81020759409809034">Gailuko kokapena</translation>
 <translation id="8102139037507939978">Kendu jendea pertsonalki identifikatzeko balio duen informazioa system_logs.txt dokumentutik.</translation>
 <translation id="8104088837833760645">Deskargatu eSIMaren profila</translation>
+<translation id="8105368624971345109">Desaktibatu</translation>
 <translation id="8107015733319732394">Google Play Store <ph name="DEVICE_TYPE" /> gailuan instalatzen ari gara. Minutu batzuk beharko ditugu.</translation>
 <translation id="810728361871746125">Pantailaren bereizmena</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ez dago hirugarrenen cookierik}=1{Hirugarrenen 1 cookie blokeatu da}other{Hirugarrenen # cookie blokeatu dira}}</translation>
@@ -6916,7 +6907,6 @@
 <translation id="8168071266284693455">Laster-markak, pasahitzak, historia eta abar gailu guztietan sinkronizatu dira</translation>
 <translation id="8168435359814927499">Edukia</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Gehitu fitxa irakurketa-zerrendan}other{Gehitu fitxak irakurketa-zerrendan}}</translation>
-<translation id="8169849063724750395">Aktiba ezazu berriro</translation>
 <translation id="8171334254070436367">Ezkutatu txartel guztiak</translation>
 <translation id="8174047975335711832">Gailuaren informazioa</translation>
 <translation id="8174876712881364124">Egin babeskopiak Google Drive-n; horrela, errazagoa izango da datuak leheneratzea edo beste gailu batera eramatea. Aplikazioetako datuak ere sartzen dira babeskopietan. Babeskopiak Google-ra kargatzen dira eta enkriptatu egiten dira haurraren Google-ko kontuko pasahitza erabilita. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation>
@@ -6990,7 +6980,6 @@
 <translation id="8249615410597138718">Bidali zure gailuetara</translation>
 <translation id="8249672078237421304">Eskaini zeure burua beste hizkuntzetan idatzitako orriak itzultzeko</translation>
 <translation id="8251441930213048644">Freskatu</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> gailuarekin parekatzen</translation>
 <translation id="8251578425305135684">Irudi txikia kendu egin da.</translation>
 <translation id="825238165904109940">Erakutsi beti URL osoak</translation>
 <translation id="8252569384384439529">Kargatzen…</translation>
@@ -7232,7 +7221,6 @@
 <translation id="8534656636775144800">Arazoren bat izan da domeinuan sartzen saiatzean. Saiatu berriro.</translation>
 <translation id="8535005006684281994">Netscape ziurtagiria berritzeko URLa</translation>
 <translation id="8536956381488731905">Aktibatu soinua teklak sakatzean</translation>
-<translation id="8538718737588735385">Aktiba ezazu berriro</translation>
 <translation id="8539727552378197395">Ez (Http soilik)</translation>
 <translation id="8539766201049804895">Bertsio-berritu</translation>
 <translation id="8540136935098276800">Idatzi formatu egokia duen URL bat</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 298269e2..6e23a85 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -253,7 +253,6 @@
 <translation id="1244265436519979884">‏درحال‌حاضر بازیابی Linux درحال انجام است</translation>
 <translation id="1244303850296295656">خطای افزونه</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> نصب نشد: نشانی وب تصویر کد خطای <ph name="HTTP_ERROR" /> را برگرداند. لطفاً با سرپرست تماس بگیرید.</translation>
-<translation id="1247071602516579380">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، رایانه لوحی <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="1251366534849411931">اینجا باید آکولاد باز باشد: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">با این کار <ph name="TOTAL_USAGE" /> از داده‌هایی که سایت‌ها و برنامه‌های نصب‌شده ذخیره کرده‌اند پاک می‌شود</translation>
 <translation id="1251578593170406502">درحال اسکن کردن شبکه‌های داده تلفن همراه…</translation>
@@ -440,7 +439,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> انتخاب شد</translation>
 <translation id="1442851588227551435">‏تنظیم کردن بلیت فعال Kerberos</translation>
 <translation id="1444628761356461360">این تنظیم توسط مالک دستگاه مدیریت می‌شود، <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، تلفن <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="144518587530125858">بارگیری "<ph name="IMAGE_PATH" />" برای طرح زمینه ممکن نیست.</translation>
 <translation id="1449191289887455076">برای تأیید تخصیص و <ph name="RESPONSE" />، «<ph name="CURRENTKEY" />» را دوباره فشار دهید.</translation>
 <translation id="1451375123200651445">صفحه وب، فایل واحد</translation>
@@ -870,7 +868,6 @@
 <translation id="1855079636134697549">دوربین روشن شد</translation>
 <translation id="1856715684130786728">افزودن موقعیت مکانی...</translation>
 <translation id="1858585891038687145">برای شناسایی سازندگان نرم‌افزار، به این گواهی اطمینان شود</translation>
-<translation id="1859787252990099899">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، دستگاه نامشخص <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="1861262398884155592">این پوشه خالی است</translation>
 <translation id="1862311223300693744">‏آیا نرم‌افزار VPN، پراکسی، دیوار آتش، یا NAS خاصی نصب کرده‌اید؟</translation>
 <translation id="1863182668524159459">درگاه سریالی یافت نشد</translation>
@@ -1245,7 +1242,6 @@
 <translation id="2242687258748107519">اطلاعات فایل</translation>
 <translation id="2246549592927364792">‏توضیحات تصویر از Google دریافت شود؟</translation>
 <translation id="2247738527273549923">دستگاهتان را سازمانتان مدیریت می‌کند.</translation>
-<translation id="2249061317998743208">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، کنترل بازی <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="2249111429176737533">باز کردن به‌عنوان پنجره برگه‌دار</translation>
 <translation id="2249605167705922988">برای مثال 5-1، 8، 13-11</translation>
 <translation id="2251218783371366160">بازکردن با نظاره‌گر سیستم</translation>
@@ -2007,7 +2003,6 @@
 <translation id="3007771295016901659">کپی کردن برگه</translation>
 <translation id="3008232374986381779">‏ابزارها، ویرایشگرها و محیط‌های یکپارچه توسعه نرم‌افزار (IDEs) ‏Linux را در <ph name="DEVICE_TYPE" /> اجرا کنید. <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">بازنشانی مجوزها</translation>
-<translation id="3008396025115884998">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، دستگاه صوتی <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{‏<ph name="MANAGER" /> از شما می‌خواهد امروز به Wi-Fi متصل شوید و به‌روزرسانی را بارگیری کنید. یا آن را ازطریق اتصال محدود بارگیری کنید (ممکن است هزینه اعمال شود).}one{‏<ph name="MANAGER" /> از شما می‌خواهد به Wi-Fi متصل شوید و به‌روزرسانی را پیش‌از مهلت تعیین‌شده بارگیری کنید. یا آن را ازطریق اتصال محدود بارگیری کنید (ممکن است هزینه اعمال شود).}other{‏<ph name="MANAGER" /> از شما می‌خواهد به Wi-Fi متصل شوید و به‌روزرسانی را پیش‌از مهلت تعیین‌شده بارگیری کنید. یا آن را ازطریق اتصال محدود بارگیری کنید (ممکن است هزینه اعمال شود).}}</translation>
 <translation id="3009300415590184725">آیا مطمئن هستید که می‌خواهید مرحله تنظیم سرویس داده تلفن همراه را لغو کنید؟</translation>
 <translation id="3009779501245596802">پایگاه‌های داده فهرست‌بندی شده</translation>
@@ -2313,7 +2308,6 @@
 <translation id="3348038390189153836">دستگاه قابل حذف ردیابی شد</translation>
 <translation id="3348131053948466246">‏اموجی پیشنهاد شد. برای پیمایش کردن، کلید بالا یا پایین را فشار دهید و برای درج کردن، کلید Enter (ورود) را فشار دهید.</translation>
 <translation id="3349933790966648062">مصرف حافظه</translation>
-<translation id="3354972872297836698">با دستگاه <ph name="DEVICE_NAME" /> مرتبط نشد، دستگاه را برای امتحان مجدد انتخاب کنید</translation>
 <translation id="3355936511340229503">خطای اتصال</translation>
 <translation id="3356580349448036450">کامل</translation>
 <translation id="3359256513598016054">محدودیت‌های سیاست گواهی</translation>
@@ -2521,6 +2515,7 @@
 <translation id="3557101512409028104">‏محدودیت‌های وب‌سایت و محدودیت‌های مدت تماشای صفحه با Family Link تنظیم شود</translation>
 <translation id="3559262020195162408">خط‌مشی روی دستگاه نصب نشد.</translation>
 <translation id="3559533181353831840">تقریباً <ph name="TIME_LEFT" /> باقی مانده است</translation>
+<translation id="3559697822483154494">دریافت تأیید لرزشی برای کنش‌هایی مثل تقسیم صفحه و عوض کردن میزکار.</translation>
 <translation id="3560034655160545939">&amp;غلط‌گیر املا</translation>
 <translation id="3562423906127931518">‏ممکن است این فرایند چند دقیقه طول بکشد. درحال راه‌اندازی محتوی Linux.</translation>
 <translation id="3562655211539199254">‏مشاهده برگه‌های اخیر Chrome از تلفن</translation>
@@ -2745,6 +2740,7 @@
 <translation id="3788331399335602504">این فایل‌ها</translation>
 <translation id="3788401245189148511">این می‌توانست:</translation>
 <translation id="3789841737615482174">نصب</translation>
+<translation id="3790417903123637354">مشکلی پیش آمد. بعداً دوباره امتحان کنید</translation>
 <translation id="379082410132524484">کارتتان منقضی شده است</translation>
 <translation id="3792890930871100565">قطع ارتباط چاپگرها</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{‏Chrome نرم‌افزار مضری در رایانه‌تان پیدا نکرد • ۱ روز قبل بررسی شد}one{‏Chrome نرم‌افزار مضری در رایانه‌تان پیدا نکرد • {NUM_DAYS} روز قبل بررسی شد}other{‏Chrome نرم‌افزار مضری در رایانه‌تان پیدا نکرد • {NUM_DAYS} روز قبل بررسی شد}}</translation>
@@ -3144,7 +3140,6 @@
 <translation id="4200689466366162458">واژه‌های سفارشی</translation>
 <translation id="4200983522494130825">&amp;برگه جدید</translation>
 <translation id="4201546031411513170">هرزمان خواستید می‌توانید مواردی را که می‌خواهید همگام‌سازی شود در تنظیمات انتخاب کنید.</translation>
-<translation id="4202417625268941299">‏با «مرور ایمن پیشرفته»، از بالاترین سطح امنیت در Chrome برخوردار خواهید شد</translation>
 <translation id="420283545744377356">خاموش کردن محافظ صفحه</translation>
 <translation id="4206144641569145248">آدم فضایی</translation>
 <translation id="4206323443866416204">گزارش بازخورد</translation>
@@ -3651,7 +3646,6 @@
 <translation id="4759238208242260848">بارگیری‌ها</translation>
 <translation id="4761104368405085019">استفاده از میکروفون شما</translation>
 <translation id="4762718786438001384">فضای دیسک دستگاه بسیار کم است</translation>
-<translation id="4762898026821161650">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، رایانه <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="4763408175235639573">وقتی این صفحه را مشاهده کردید، کوکی‌های زیر تنظیم شدند</translation>
 <translation id="4765582662863429759">‏به «پیام‌های Android» اجازه دهید پیام‌های متنی را از تلفن در Chromebook بازپخش کند</translation>
 <translation id="4768332406694066911">گواهی‌هایی از این سازمان‌ها دارید که هویت شما را شناسایی می‌کنند</translation>
@@ -4922,6 +4916,7 @@
 <translation id="6112931163620622315">تلفن را بررسی کنید</translation>
 <translation id="6113434369102685411">‏تنظیم موتور جستجوی پیش‌فرض برای مرورگر Chrome و «راه‌انداز <ph name="DEVICE_TYPE" />»</translation>
 <translation id="6113942107547980621">‏برای استفاده از Smart Lock، به نمایه کاربر اصلی در تلفن جابه‌جا شوید</translation>
+<translation id="611684075852771314">این گزارش‌ها با این عنوان در «فایل‌های من» ذخیره شده است:</translation>
 <translation id="6116921718742659598">تغییر تنظیمات زبان و ورودی</translation>
 <translation id="6119927814891883061">تغییر نام دستگاه به <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">سنجاق کردن این صفحه به صفحه شروع…</translation>
@@ -5698,6 +5693,7 @@
 <translation id="6930036377490597025">کلید امنیتی خارجی یا حسگر داخلی</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{یک افزونه رد شد}one{# افزونه رد شد}other{# افزونه رد شد}}</translation>
 <translation id="6930321203306643451">ارتقا انجام شد</translation>
+<translation id="6931690462168617033">قدرت کلیک</translation>
 <translation id="6935286146439255109">سینی کاغذ موجود نیست</translation>
 <translation id="693807610556624488">عملیات نوشتن از حداکثر طول مجاز ویژگی برای این دستگاه بیشتر می‌شود: «<ph name="DEVICE_NAME" />».</translation>
 <translation id="6938386202199793006">۱ چاپگر ذخیره‌نشده دارید.</translation>
@@ -5831,7 +5827,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{بررسی ایمنی ۱ دقیقه پیش اجرا شده است}one{بررسی ایمنی {NUM_MINS} دقیقه پیش اجرا شده است}other{بررسی ایمنی {NUM_MINS} دقیقه پیش اجرا شده است}}</translation>
 <translation id="7057767408836081338">داده‌های برنامه دریافت نشد، درحال تلاش برای اجرای برنامه…</translation>
 <translation id="7058024590501568315">شبکه مخفی</translation>
-<translation id="70582545822664495">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، موشواره <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="7059858479264779982">تنظیم روی اجرای خودکار</translation>
 <translation id="7062222374113411376">به سایت‌های اخیراً بسته‌شده امکان داده شود ارسال و دریافت داده را تکمیل کند (توصیه می‌شود)</translation>
 <translation id="7063129466199351735">در حال پردازش میان‌برها...</translation>
@@ -5995,7 +5990,6 @@
 <translation id="7257173066616499747">‏شبکه‌های Wi-Fi</translation>
 <translation id="725758059478686223">سرویس چاپ</translation>
 <translation id="7257666756905341374">خواندن داده‌هایی که کپی و جای‌گذاری می‌کنید</translation>
-<translation id="7258006747130724016">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، دوربین ویدیو <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="7258192266780953209">تبدیل‌ها</translation>
 <translation id="7258225044283673131">برنامه پاسخ نمی‌دهد. برای بستن برنامه، «بستن اجباری» را انتخاب کنید.</translation>
 <translation id="7262004276116528033">این خدمات ورود به سیستم توسط <ph name="SAML_DOMAIN" /> میزبانی شده است</translation>
@@ -6792,7 +6786,6 @@
 <translation id="8037117027592400564">خواندن همه نوشتار با استفاده از گفتار تجزیه و تحلیل شده</translation>
 <translation id="8037357227543935929">درخواست (پیش‌فرض)</translation>
 <translation id="803771048473350947">فایل</translation>
-<translation id="8038399858950372766">دستگاه <ph name="DEVICE_INDEX" /> از <ph name="DEVICE_COUNT" />، صفحه‌کلید <ph name="DEVICE_NAME" /> نام‌گذاری شد</translation>
 <translation id="8041089156583427627">ارسال بازخورد</translation>
 <translation id="8042142357103597104">ماتی نوشتار</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> پاسخ نمی‌دهد</translation>
@@ -6831,6 +6824,7 @@
 <translation id="8064279191081105977">گروه <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">کادر گفتگوی اتصال</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">بازخورد لمسی</translation>
 <translation id="8071432093239591881">چاپ کردن به‌‌عنوان تصویر</translation>
 <translation id="8073499153683482226">‏<ph name="BEGIN_PARAGRAPH1" />داده‌های برنامه می‌توانند هر داده‌ای باشند که برنامه (براساس تنظیمات برنامه‌نویس) ذخیره کرده است، ازجمله داده‌هایی مانند مخاطبین، پیام‌ها و عکس‌ها.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />داده‌های پشتیبان‌گیری‌شده جزو سهمیه فضای ذخیره‌سازی Drive فرزندتان حساب نمی‌شوند.<ph name="END_PARAGRAPH2" />
@@ -6868,6 +6862,7 @@
 <translation id="81020759409809034">مکان محلی</translation>
 <translation id="8102139037507939978">‏«اطلاعات قابل‌شناسایی شخصی» از system_logs.txt حذف شود.</translation>
 <translation id="8104088837833760645">بارگیری نمایه سیم‌کارت داخلی</translation>
+<translation id="8105368624971345109">خاموش کردن</translation>
 <translation id="8107015733319732394">‏«فروشگاه Google Play» در <ph name="DEVICE_TYPE" /> شما درحال نصب شدن است. ممکن است این کار چند دقیقه طول بکشد.</translation>
 <translation id="810728361871746125">وضوح نمایشگر</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{فاقد کوکی شخص ثالث}=1{۱ کوکی شخص ثالث مسدود شده است}one{# کوکی شخص ثالث مسدود شده است}other{# کوکی شخص ثالث مسدود شده است}}</translation>
@@ -6932,7 +6927,6 @@
 <translation id="8168071266284693455">نشانک‌ها، گذرواژه‌ها، سابقه، و دیگر اطلاعات شما در همه دستگاه‌هایتان همگام‌سازی شده است</translation>
 <translation id="8168435359814927499">محتوا</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{افزودن برگه به فهرست خواندن}one{افزودن برگه به فهرست خواندن}other{افزودن برگه‌ها به فهرست خواندن}}</translation>
-<translation id="8169849063724750395">روشن کردن مجدد</translation>
 <translation id="8171334254070436367">پنهان کردن همه کارت‌ها</translation>
 <translation id="8174047975335711832">اطلاعات دستگاه</translation>
 <translation id="8174876712881364124">‏پشتیبان‌گیری در Google Drive. هرزمان خواستید داده‌هایتان را به‌آسانی بازیابی کنید یا دستگاهتان را عوض کنید. این پشتیبان‌گیری داده‌های برنامه را شامل می‌شود. داده‌های پشتیبان در Google بارگذاری می‌شود و با استفاده از گذرواژه حساب Google فرزندتان رمزگذاری می‌شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation>
@@ -7006,7 +7000,6 @@
 <translation id="8249615410597138718">ارسال به دستگاه‌هایتان</translation>
 <translation id="8249672078237421304">پیشنهاد ترجمه برای صفحه‌هایی که زبان آن‌ها را نمی‌دانم</translation>
 <translation id="8251441930213048644">بازخوانی در همین لحظه</translation>
-<translation id="8251509999076836464">درحال مرتبط‌سازی <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">تصویر کوچک حذف شد.</translation>
 <translation id="825238165904109940">همیشه نشانی‌های وب کامل نشان داده شود</translation>
 <translation id="8252569384384439529">درحال بارگذاری…</translation>
@@ -7248,7 +7241,6 @@
 <translation id="8534656636775144800">وای!  هنگام اتصال به دامنه مشکلی پیش آمد. لطفاً دوباره امتحان کنید.</translation>
 <translation id="8535005006684281994">‏نشانی وب تجدید گواهی Netscape</translation>
 <translation id="8536956381488731905">صدای فشار کلید</translation>
-<translation id="8538718737588735385">روشن کردن مجدد</translation>
 <translation id="8539727552378197395">‏نه (فقط Http)</translation>
 <translation id="8539766201049804895">ارتقا</translation>
 <translation id="8540136935098276800">نشانی وبی وارد کنید که به‌درستی قالب‌بندی شده باشد</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 23c36f3..8ebb1a7 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -2741,6 +2741,7 @@
 <translation id="3788331399335602504">nämä tiedostot</translation>
 <translation id="3788401245189148511">Se voisi:</translation>
 <translation id="3789841737615482174">Asenna</translation>
+<translation id="3790417903123637354">Jotain meni pieleen. Yritä myöhemmin uudelleen.</translation>
 <translation id="379082410132524484">Korttisi on vanhentunut.</translation>
 <translation id="3792890930871100565">Irrota tulostimet</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ei löytänyt tietokoneeltasi haittaohjelmia • Tarkistettu 1 päivä sitten}other{Chrome ei löytänyt tietokoneeltasi haittaohjelmia • Tarkistettu {NUM_DAYS} päivää sitten}}</translation>
@@ -3824,6 +3825,7 @@
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> haluaa yhdistää sarjaporttiin</translation>
 <translation id="4944310289250773232">Todennuspalvelun tarjoaa <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Ota sormenjälki käyttöön pyytämällä lasta koskettamaan virtapainiketta. Lapsen sormenjälkidata tallennetaan turvallisesti vain tälle laitteelle (<ph name="DEVICE_TYPE" />).</translation>
+<translation id="4946459324029651239">Suojauksesi on perustasolla</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{tiedosto}other{# tiedostoa}}</translation>
 <translation id="495170559598752135">Toiminnot</translation>
 <translation id="4953808748584563296">Oranssi oletusavatar</translation>
@@ -4407,6 +4409,7 @@
 <translation id="5575528586625653441">Esittelyn rekisteröintipyynnön kanssa tapahtui ongelma.</translation>
 <translation id="557722062034137776">Laitteen nollaus ei vaikuta Google-tileihisi tai mihinkään näihin tileihin synkronoituihin tietoihin. Kaikki paikallisesti laitteellesi tallennetut tiedostot kuitenkin poistetaan.</translation>
 <translation id="5578059481725149024">Automaattinen kirjautuminen</translation>
+<translation id="5581134892342029705">Käännös kieleen <ph name="LANGUAGE" /> valmistui</translation>
 <translation id="558170650521898289">Microsoft Windowsin laitteistoajurin varmenne</translation>
 <translation id="5581972110672966454">Laitetta ei voi liittää verkkotunnukseen. Yritä uudelleen tai ota yhteyttä laitteen omistajaan tai ylläpitäjään. Virhekoodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Päävalikko</translation>
@@ -6801,6 +6804,7 @@
 <translation id="8054563304616131773">Anna voimassa oleva sähköpostiosoite.</translation>
 <translation id="8054883179223321715">Saatavilla tietyille videosivustoille</translation>
 <translation id="8054921503121346576">USB-näppäimistö yhdistetty</translation>
+<translation id="8057414620575339583">Reunan hakuikkuna</translation>
 <translation id="8058655154417507695">Viimeinen voimassaolovuosi</translation>
 <translation id="8058986560951482265">Nykivä</translation>
 <translation id="8059417245945632445">Tark&amp;ista laitteet</translation>
@@ -6852,6 +6856,7 @@
 <translation id="81020759409809034">Paikallinen sijainti</translation>
 <translation id="8102139037507939978">Poista henkilökohtaiset tunnistetiedot system_logs.txt-tiedostosta.</translation>
 <translation id="8104088837833760645">Lataa eSIM-profiili</translation>
+<translation id="8105368624971345109">Poista käytöstä</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> asentaa Google Play Kauppaa. Tämä voi kestää pari minuuttia.</translation>
 <translation id="810728361871746125">Näytön resoluutio</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ei kolmannen osapuolen evästeitä}=1{1 kolmannen osapuolen eväste on estetty}other{# kolmannen osapuolen evästettä on estetty}}</translation>
@@ -7226,6 +7231,7 @@
 <translation id="8528074251912154910">Lisää kieliä</translation>
 <translation id="8528962588711550376">Kirjaudutaan.</translation>
 <translation id="8529925957403338845">Yhteyden pikajakaminen epäonnistui</translation>
+<translation id="8531701051932785007">Parannettu selaussuoja on pois päältä</translation>
 <translation id="8534656636775144800">Hups! Jotain meni vikaan verkkotunnukseen liittymisen aikana. Yritä uudelleen.</translation>
 <translation id="8535005006684281994">Netscape-varmenteen uusimis-URL</translation>
 <translation id="8536956381488731905">Ääni painettaessa</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 7ee72d6..b3f4665 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -2519,6 +2519,7 @@
 <translation id="3557101512409028104">Magtakda ng mga paghihigpit sa website at limitasyon sa tagal ng paggamit gamit ang Family Link</translation>
 <translation id="3559262020195162408">Hindi na-install ang patakaran sa device.</translation>
 <translation id="3559533181353831840">Humigit-kumulang <ph name="TIME_LEFT" /> pa ang natitira</translation>
+<translation id="3559697822483154494">Makatanggap ng kumpirmasyon sa pamamagitan ng pag-vibrate para sa mga pagkilos gaya ng split screen at pagpapalipat-lipat sa mga desk.</translation>
 <translation id="3560034655160545939">&amp;Spell check</translation>
 <translation id="3562423906127931518">Maaaring abutin nang ilang minuto ang prosesong ito. Sine-set up ang Linux container.</translation>
 <translation id="3562655211539199254">Tingnan ang mga kamakailang tab ng Chrome mula sa iyong telepono</translation>
@@ -2743,6 +2744,7 @@
 <translation id="3788331399335602504">ang mga file na ito</translation>
 <translation id="3788401245189148511">Maaari itong:</translation>
 <translation id="3789841737615482174">Mag-install</translation>
+<translation id="3790417903123637354">Nagkaproblema. Subukan ulit sa ibang pagkakataon</translation>
 <translation id="379082410132524484">Nag-expire na ang iyong card</translation>
 <translation id="3792890930871100565">Idiskonekta ang mga printer</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Walang nakitang mapaminsalang software ang Chrome sa iyong computer • Tiningnan 1 araw ang nakalipas}one{Walang nakitang mapaminsalang software ang Chrome sa iyong computer • Tiningnan {NUM_DAYS} na araw ang nakalipas}other{Walang nakitang mapaminsalang software ang Chrome sa iyong computer • Tiningnan {NUM_DAYS} araw ang nakalipas}}</translation>
@@ -3829,6 +3831,7 @@
 <translation id="4943691134276646401">Gustong kumonekta ng "<ph name="CHROME_EXTENSION_NAME" />" sa isang serial port</translation>
 <translation id="4944310289250773232">Hino-host ng <ph name="SAML_DOMAIN" /> ang serbisyo sa pag-authenticate na ito</translation>
 <translation id="4945439665401275950">Para mag-set up ng fingerprint, ipapindot sa iyong anak ang power button. Secure na sino-store ang data ng fingerprint ng iyong anak at hindi ito kailanman lalabas sa <ph name="DEVICE_TYPE" /> na ito.</translation>
+<translation id="4946459324029651239">Nakakakuha ka ng karaniwang proteksyon</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{isang file}one{# file}other{# na file}}</translation>
 <translation id="495170559598752135">Mga Pagkilos</translation>
 <translation id="4953808748584563296">Default na orange na avatar</translation>
@@ -4412,6 +4415,7 @@
 <translation id="5575528586625653441">Nagkaproblema sa kahilingan sa pagpaparehistro ng demo.</translation>
 <translation id="557722062034137776">Hindi maaapektuhan ng pag-reset sa iyong device ang iyong mga Google account o anumang data na naka-sync sa mga account na ito. Gayunpaman, matatanggal ang lahat ng file na lokal na naka-save sa iyong device.</translation>
 <translation id="5578059481725149024">Awtomatikong pag-sign in</translation>
+<translation id="5581134892342029705">Tapos na ang pagsasalin sa <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Microsoft Windows Hardware Driver Verification</translation>
 <translation id="5581972110672966454">Hindi maisama ang device sa domain. Pakisubukan ulit o makipag-ugnayan sa may-ari o administrator ng iyong device. Code ng error: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Pangunahing menu</translation>
@@ -4916,6 +4920,7 @@
 <translation id="6112931163620622315">Tingnan ang iyong telepono</translation>
 <translation id="6113434369102685411">Itakda ang iyong default na search engine para sa Chrome browser at <ph name="DEVICE_TYPE" /> Launcher</translation>
 <translation id="6113942107547980621">Para gamitin ang Smart Lock, lumipat sa profile ng pangunahing user sa iyong telepono</translation>
+<translation id="611684075852771314">Na-save ang mga log na ito sa Aking Mga File bilang</translation>
 <translation id="6116921718742659598">Baguhin ang mga setting ng wika at input</translation>
 <translation id="6119927814891883061">Pangalanan ang device na <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">I-pin ang pahinang ito screen ng Simula...</translation>
@@ -5692,6 +5697,7 @@
 <translation id="6930036377490597025">External na security key o built-in na sensor</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{May tinanggihang extension}one{# extension ang tinanggihan}other{# na extension ang tinanggihan}}</translation>
 <translation id="6930321203306643451">Tapos na ang pag-upgrade</translation>
+<translation id="6931690462168617033">Tindi ng pag-click</translation>
 <translation id="6935286146439255109">Walang tray para sa papel</translation>
 <translation id="693807610556624488">Ang write na operation ay lampas sa maximum na haba ng attribute sa: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">Mayroon kang 1 naka-save na printer.</translation>
@@ -6807,6 +6813,7 @@
 <translation id="8054563304616131773">Mangyaring maglagay ng isang wastong email address</translation>
 <translation id="8054883179223321715">Available para sa mga partikular na site ng video</translation>
 <translation id="8054921503121346576">Nakakonekta ang USB keyboard</translation>
+<translation id="8057414620575339583">Side Search</translation>
 <translation id="8058655154417507695">Taon ng pag-expire</translation>
 <translation id="8058986560951482265">Magalaw</translation>
 <translation id="8059417245945632445">&amp;Inspeksyunin ang mga device</translation>
@@ -6821,6 +6828,7 @@
 <translation id="8064279191081105977">Grupong <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Dialog ng Koneksyon</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Haptic na feedback</translation>
 <translation id="8071432093239591881">I-print bilang larawan</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Ang data ng app ay maaaring anumang data na na-save ng app (batay sa mga setting ng developer), kabilang ang data gaya ng mga contact, mensahe, at larawan.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Hindi mabibilang sa quota sa storage ng Drive ng iyong anak ang data ng backup.<ph name="END_PARAGRAPH2" />
@@ -6858,6 +6866,7 @@
 <translation id="81020759409809034">Lokal na Lokasyon</translation>
 <translation id="8102139037507939978">Alisin ang Impormasyong Nagbibigay ng Personal na Pagkakakilanlan sa system_logs.txt.</translation>
 <translation id="8104088837833760645">I-download ang profile ng eSIM</translation>
+<translation id="8105368624971345109">I-off</translation>
 <translation id="8107015733319732394">Ini-install ang Google Play Store sa iyong <ph name="DEVICE_TYPE" />. Maaaring abutin ito nang ilang minuto.</translation>
 <translation id="810728361871746125">Resolution ng display</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Walang third-party na cookies}=1{1 third-party na cookie ang na-block}one{# third-party na cookies ang na-block}other{# na third-party na cookies ang na-block}}</translation>
@@ -7233,6 +7242,7 @@
 <translation id="8528074251912154910">Magdagdag ng mga wika</translation>
 <translation id="8528962588711550376">Nagsa-sign in.</translation>
 <translation id="8529925957403338845">Hindi nakakonekta ang Instant na Pag-tether</translation>
+<translation id="8531701051932785007">Naka-off ang Pinahusay na Ligtas na Pag-browse</translation>
 <translation id="8534656636775144800">Oops!  Nagkaproblema noong sinusubukang sumali sa domain. Pakisubukang muli.</translation>
 <translation id="8535005006684281994">URL ng Pag-renew ng Netscape Certificate</translation>
 <translation id="8536956381488731905">Tunog sa keypress</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index 69ddd658..1db483b 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -1685,6 +1685,7 @@
 <translation id="2707024448553392710">Téléchargement de composants en cours…</translation>
 <translation id="270921614578699633">Moyenne de</translation>
 <translation id="2709516037105925701">Remplissage automatique</translation>
+<translation id="2710014902399506864">Ajouter un téléphone</translation>
 <translation id="2710101514844343743">Données d'utilisation et de diagnostics</translation>
 <translation id="271033894570825754">Nouveau</translation>
 <translation id="2712173769900027643">Demander l’autorisation</translation>
@@ -2043,6 +2044,7 @@
 <translation id="3055590424724986000">Avec le fournisseur de votre choix</translation>
 <translation id="3058498974290601450">Vous pouvez activer la synchronisation à tout moment dans les paramètres</translation>
 <translation id="3058517085907878899">Nom de l'appareil</translation>
+<translation id="3059195548603439580">Vous recherchez les composants du système? Consultez</translation>
 <translation id="3060379269883947824">Activer la fonction Sélectionner pour énoncer</translation>
 <translation id="3060952009917586498">Modifier la langue de l'appareil. La langue actuelle est : <ph name="LANGUAGE" />.</translation>
 <translation id="3060987956645097882">Nous n'avons pas pu établir une connexion avec votre téléphone. Assurez-vous que votre téléphone est à proximité, qu'il est déverrouillé et que le Bluetooth et le Wi-Fi sont activés.</translation>
@@ -2699,6 +2701,7 @@
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Communique avec un appareil USB}one{Communique avec # appareil USB}other{Communique avec # appareils USB}}</translation>
 <translation id="3764974059056958214">{COUNT,plural, =1{Envoi de <ph name="ATTACHMENTS" /> à l'appareil <ph name="DEVICE_NAME" /> en cours…}one{Envoi de <ph name="ATTACHMENTS" /> à l'appareil <ph name="DEVICE_NAME" /> en cours…}other{Envoi de <ph name="ATTACHMENTS" /> à l'appareil <ph name="DEVICE_NAME" /> en cours…}}</translation>
 <translation id="3765246971671567135">Impossible de lire la politique du mode démo hors ligne.</translation>
+<translation id="3766115177661377251">Diffuser vers un nouvel écran</translation>
 <translation id="3766811143887729231"><ph name="REFRESH_RATE" /> Hz</translation>
 <translation id="377050016711188788">Crème glacée</translation>
 <translation id="3771290962915251154">Ce paramètre est désactivé parce que les contrôles parentaux sont activés</translation>
@@ -2726,6 +2729,7 @@
 <translation id="3788331399335602504">ces fichiers</translation>
 <translation id="3788401245189148511">Elle pourrait :</translation>
 <translation id="3789841737615482174">Installer</translation>
+<translation id="3790417903123637354">Une erreur s'est produite. Réessayez plus tard</translation>
 <translation id="379082410132524484">Votre carte est expirée</translation>
 <translation id="3792890930871100565">Déconnecter les imprimantes</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome n'a détecté aucun logiciel malveillant sur votre ordinateur • Vérification effectuée il y a 1 jour}one{Chrome n'a détecté aucun logiciel malveillant sur votre ordinateur • Vérification effectuée il y a {NUM_DAYS} jour}other{Chrome n'a détecté aucun logiciel malveillant sur votre ordinateur • Vérification effectuée il y a {NUM_DAYS} jours}}</translation>
@@ -3486,6 +3490,7 @@
 <translation id="4590324241397107707">Stockage de base de données</translation>
 <translation id="4592891116925567110">Application de dessin avec stylet</translation>
 <translation id="4593021220803146968">&amp;Accéder à <ph name="URL" /></translation>
+<translation id="4594577641390224176">Vous recherchez la page à propos du système? Consultez</translation>
 <translation id="4595560905247879544">Les applications et les extensions ne peuvent être modifiées que par le gestionnaire (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4596295440756783523">Vous disposez de certificats qui identifient ces serveurs</translation>
 <translation id="4598556348158889687">Gestion du stockage</translation>
@@ -4869,6 +4874,7 @@
 <translation id="6085886413119427067">Détermine la manière de communiquer avec des sites Web par connexion sécurisée</translation>
 <translation id="6086004606538989567">Le compte que vous avez vérifié n'est pas autorisé à accéder à cet appareil.</translation>
 <translation id="6086846494333236931">Élément installé par votre administrateur</translation>
+<translation id="6087746524533454243">Vous recherchez la page à propos du navigateur? Consultez</translation>
 <translation id="6087960857463881712">Superbe visage</translation>
 <translation id="608912389580139775">Pour ajouter cette page à votre liste de lecture, cliquez sur l'icône de favori</translation>
 <translation id="6091761513005122595">Partage correctement configuré.</translation>
@@ -4967,6 +4973,7 @@
 <translation id="6198102561359457428">Déconnectez-vous, puis connectez-vous de nouveau...</translation>
 <translation id="6198252989419008588">Modifier le NIP</translation>
 <translation id="6200047250927636406">Supprimer le fichier</translation>
+<translation id="6200151268994853226">Gérer l'extension</translation>
 <translation id="6201608810045805374">Retirer ce compte?</translation>
 <translation id="6202304368170870640">Vous pouvez utiliser votre NIP pour vous connecter à votre appareil ou pour le déverrouiller.</translation>
 <translation id="6206311232642889873">Cop&amp;ier l'image</translation>
@@ -5253,6 +5260,7 @@
 <translation id="6497789971060331894">Défilement inversé de la souris</translation>
 <translation id="6498249116389603658">&amp;Toutes vos langues</translation>
 <translation id="6499143127267478107">Résolution de l'hôte dans le script de mandataire en cours...</translation>
+<translation id="6499764981457476645">Aucun appareil trouvé à proximité</translation>
 <translation id="6501086852992132091"><ph name="APP_ORIGIN" /> souhaite ouvrir ce fichier :</translation>
 <translation id="6501957628055559556">Tous les conteneurs</translation>
 <translation id="650266656685499220">Pour créer des albums, servez-vous de Google Photos</translation>
@@ -5718,6 +5726,7 @@
 <translation id="6979440798594660689">Désactiver le son (par défaut)</translation>
 <translation id="6979737339423435258">Toutes les périodes</translation>
 <translation id="6981553172137913845">Pour naviguer de manière anonyme, cliquez sur l'icône de menu à points pour ouvrir une fenêtre de navigation privée</translation>
+<translation id="6981761993313539853">Assurez-vous que votre appareil Bluetooth est en mode d'association et à proximité. Associez votre appareil uniquement à des appareils de confiance. <ph name="BEGIN_LINK_LEARN_MORE" />En savoir plus<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="6981982820502123353">Accessibilité</translation>
 <translation id="6983507711977005608">Se déconnecter du réseau de partage de connexion instantané</translation>
 <translation id="6983783921975806247">OID enregistré</translation>
@@ -6624,6 +6633,7 @@
 <translation id="7898725031477653577">Toujours traduire</translation>
 <translation id="7901405293566323524">Phone Hub</translation>
 <translation id="7901914889562552258">Amélioration de Chrome au moyen des mesures de pages</translation>
+<translation id="7903290522161827520">Vous recherchez les composants du navigateur? Consultez</translation>
 <translation id="7903345046358933331">Cette page ne répond plus. Vous pouvez attendre qu'elle réponde ou la fermer.</translation>
 <translation id="7903742244674067440">Vous disposez de certificats qui identifient ces autorités de certification</translation>
 <translation id="7903925330883316394">Utilitaire : <ph name="UTILITY_TYPE" /></translation>
@@ -6782,6 +6792,7 @@
 <translation id="8054563304616131773">Veuillez entrer une adresse de courriel valide</translation>
 <translation id="8054883179223321715">Compatible avec certains sites de vidéos</translation>
 <translation id="8054921503121346576">Clavier USB connecté</translation>
+<translation id="8057414620575339583">Recherche latérale</translation>
 <translation id="8058655154417507695">Année d'expiration</translation>
 <translation id="8058986560951482265">Saccadée</translation>
 <translation id="8059417245945632445">&amp;Inspecter les appareils</translation>
@@ -6833,6 +6844,7 @@
 <translation id="81020759409809034">Emplacement local</translation>
 <translation id="8102139037507939978">Supprimer les renseignements personnels du fichier system_logs.txt.</translation>
 <translation id="8104088837833760645">Télécharger un profil eSIM</translation>
+<translation id="8105368624971345109">Désactiver</translation>
 <translation id="8107015733319732394">Installation du Google Play Store sur votre <ph name="DEVICE_TYPE" /> en cours… Cela peut prendre quelques minutes.</translation>
 <translation id="810728361871746125">Résolution de l'écran</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Aucun témoin tiers}=1{1 témoin tiers est bloqué}one{# témoin tiers est bloqué}other{# témoins tiers sont bloqués}}</translation>
@@ -6996,6 +7008,7 @@
 <translation id="8271268254812352141">Obtenez des définitions, des traductions ou des conversions d'unités lorsque vous faites un clic droit ou que vous maintenez le doigt sur le texte. Personnalisez les langues de traduction dans la section <ph name="LINK_BEGIN" />Langues du site Web<ph name="LINK_END" />.</translation>
 <translation id="8271379370373330993">Parents, les prochaines étapes sont pour vous. Vous pourrez redonner l'appareil <ph name="DEVICE_TYPE" /> à l'enfant une fois que son compte aura été configuré.</translation>
 <translation id="8272443605911821513">Pour gérer les extensions, cliquer sur « Extensions » dans le menu « Autres outils ».</translation>
+<translation id="8272677921396592934">Utiliser l'appareil photo pour numériser le code QR</translation>
 <translation id="8274332263553132018">Diffuser un fichier</translation>
 <translation id="8274921654076766238">La loupe suit les actions au clavier</translation>
 <translation id="8274924778568117936">N'éteignez pas votre <ph name="DEVICE_TYPE" /> et ne le fermez pas tant que la mise à jour n'est pas terminée. Votre <ph name="DEVICE_TYPE" /> redémarrera une fois l'installation terminée.</translation>
@@ -7674,6 +7687,7 @@
 <translation id="9004754973617721124">Effacer les données et les autorisations relatives aux sites pour le site <ph name="SITE_NAME" />, tous les sites qui y sont subordonnés ainsi que l'application qui y est installée?</translation>
 <translation id="9004952710076978168">Réception d'une notification pour une imprimante inconnue.</translation>
 <translation id="9008201768610948239">OK</translation>
+<translation id="9008201858626224558">Bouton retour vers la page de détails de <ph name="SUBPAGE_TITLE" /></translation>
 <translation id="9009369504041480176">Téléversement en cours (<ph name="PROGRESS_PERCENT" /> %)...</translation>
 <translation id="9009708085379296446">Vouliez-vous modifier cette page?</translation>
 <translation id="9011163749350026987">Toujours afficher l'icône</translation>
@@ -7856,6 +7870,7 @@
 <translation id="917510707618656279">Demander une autorisation lorsqu'un site veut accéder à des appareils Bluetooth</translation>
 <translation id="9176476835295860688">Envoyer les données d'utilisation et de diagnostic. Actuellement, cet appareil envoie automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. Cela nous permettra d'assurer la stabilité du système et des applications, et d'apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Ce <ph name="BEGIN_LINK1" />paramètre<ph name="END_LINK1" /> est appliqué par le propriétaire du compte. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK2" />En savoir plus<ph name="END_LINK2" /></translation>
 <translation id="9176611096776448349"><ph name="WINDOW_TITLE" /> - Appareil Bluetooth connecté</translation>
+<translation id="9178061802301856367">Supprimer les données de connexion</translation>
 <translation id="9179524979050048593">Noms d'utilisateurs à l'écran de connexion</translation>
 <translation id="9180281769944411366">Ce processus peut prendre quelques minutes. Démarrage du conteneur Linux en cours…</translation>
 <translation id="9180380851667544951">Le site peut partager votre écran</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 598c8651..e73d892 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -251,7 +251,6 @@
 <translation id="1244265436519979884">Restauration Linux…</translation>
 <translation id="1244303850296295656">Erreur au niveau des extensions.</translation>
 <translation id="1246863218384630739">Impossible d'installer <ph name="VM_NAME" />, car l'URL de l'image a renvoyé une erreur <ph name="HTTP_ERROR" />. Veuillez contacter votre administrateur.</translation>
-<translation id="1247071602516579380">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, tablette nommée "<ph name="DEVICE_NAME" />"</translation>
 <translation id="1251366534849411931">Accolade ouvrante attendue : <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Cette action effacera <ph name="TOTAL_USAGE" /> des données stockées par les sites et les applications installées</translation>
 <translation id="1251578593170406502">Recherche de réseaux de données mobiles…</translation>
@@ -438,7 +437,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> sélectionnés</translation>
 <translation id="1442851588227551435">Définir un ticket Kerberos actif</translation>
 <translation id="1444628761356461360">Ce paramètre est géré par le propriétaire de l'appareil : <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, téléphone nommé "<ph name="DEVICE_NAME" />"</translation>
 <translation id="144518587530125858">Impossible de charger "<ph name="IMAGE_PATH" />" pour le thème.</translation>
 <translation id="1449191289887455076">Appuyez de nouveau sur <ph name="CURRENTKEY" /> pour confirmer cette association et <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Page Web, un seul fichier</translation>
@@ -862,7 +860,6 @@
 <translation id="1855079636134697549">La caméra est allumée</translation>
 <translation id="1856715684130786728">Ajouter un emplacement…</translation>
 <translation id="1858585891038687145">Considérer ce certificat comme fiable pour identifier les développeurs de logiciels</translation>
-<translation id="1859787252990099899">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, appareil inconnu nommé "<ph name="DEVICE_NAME" />"</translation>
 <translation id="1861262398884155592">Ce dossier est vide</translation>
 <translation id="1862311223300693744">Avez-vous installé un VPN, un proxy, un pare-feu ou un serveur NAS spécifique ?</translation>
 <translation id="1863182668524159459">Ports série introuvables</translation>
@@ -1237,7 +1234,6 @@
 <translation id="2242687258748107519">Informations sur le fichier</translation>
 <translation id="2246549592927364792">Obtenir des descriptions d'images de Google ?</translation>
 <translation id="2247738527273549923">Cet appareil est géré par votre organisation</translation>
-<translation id="2249061317998743208">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, manette de jeu nommée "<ph name="DEVICE_NAME" />"</translation>
 <translation id="2249111429176737533">Ouvrir dans une fenêtre à onglets</translation>
 <translation id="2249605167705922988">par exemple : 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Ouvrir avec le lecteur système</translation>
@@ -1996,7 +1992,6 @@
 <translation id="3007771295016901659">Dupliquer l'onglet</translation>
 <translation id="3008232374986381779">Exécutez les outils, les éditeurs et les IDE Linux sur votre <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Réinitialiser les autorisations</translation>
-<translation id="3008396025115884998">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, appareil audio nommé "<ph name="DEVICE_NAME" />"</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> vous demande de vous connecter au Wi-Fi aujourd'hui afin de télécharger une mise à jour. Vous pouvez aussi la télécharger via une connexion facturée à l'usage (susceptible d'entraîner des frais).}one{<ph name="MANAGER" /> vous demande de vous connecter au Wi-Fi pour télécharger une mise à jour avant la date limite. Vous pouvez aussi la télécharger via une connexion facturée à l'usage (susceptible d'entraîner des frais).}other{<ph name="MANAGER" /> vous demande de vous connecter au Wi-Fi pour télécharger une mise à jour avant la date limite. Vous pouvez aussi la télécharger via une connexion facturée à l'usage (susceptible d'entraîner des frais).}}</translation>
 <translation id="3009300415590184725">Voulez-vous vraiment annuler la configuration du service Internet mobile ?</translation>
 <translation id="3009779501245596802">Bases de données indexées</translation>
@@ -2302,7 +2297,6 @@
 <translation id="3348038390189153836">Nouveau matériel détecté</translation>
 <translation id="3348131053948466246">Emoji suggérés. Appuyez sur la flèche vers le haut ou vers le bas pour sélectionner un emoji, puis sur Entrée pour l'insérer.</translation>
 <translation id="3349933790966648062">Espace mémoire utilisé</translation>
-<translation id="3354972872297836698">Impossible d'associer à l'appareil <ph name="DEVICE_NAME" /> ; sélectionnez l'appareil pour réessayer</translation>
 <translation id="3355936511340229503">Erreur de connexion</translation>
 <translation id="3356580349448036450">Terminé</translation>
 <translation id="3359256513598016054">Contraintes des stratégies de certificat</translation>
@@ -2734,6 +2728,7 @@
 <translation id="3788331399335602504">ces fichiers</translation>
 <translation id="3788401245189148511">Elle pourrait :</translation>
 <translation id="3789841737615482174">Installer</translation>
+<translation id="3790417903123637354">Un problème est survenu. Réessayez plus tard</translation>
 <translation id="379082410132524484">Votre carte est arrivée à expiration</translation>
 <translation id="3792890930871100565">Déconnecter des imprimantes</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome n'a détecté aucun logiciel malveillant sur votre ordinateur • Vérification effectuée il y a 1 jour}one{Chrome n'a détecté aucun logiciel malveillant sur votre ordinateur • Vérification effectuée il y a {NUM_DAYS} jour}other{Chrome n'a détecté aucun logiciel malveillant sur votre ordinateur • Vérification effectuée il y a {NUM_DAYS} jours}}</translation>
@@ -3133,7 +3128,6 @@
 <translation id="4200689466366162458">Mots personnalisés</translation>
 <translation id="4200983522494130825">Nouvel ongle&amp;t</translation>
 <translation id="4201546031411513170">Vous avez toujours la possibilité de sélectionner les éléments à synchroniser dans les paramètres.</translation>
-<translation id="4202417625268941299">La navigation sécurisée avec protection renforcée vous offre la sécurité la plus avancée sur Chrome</translation>
 <translation id="420283545744377356">Désactiver l'économiseur d'écran</translation>
 <translation id="4206144641569145248">Extraterrestre</translation>
 <translation id="4206323443866416204">Rapport de commentaires</translation>
@@ -3639,7 +3633,6 @@
 <translation id="4759238208242260848">Téléchargements</translation>
 <translation id="4761104368405085019">Utiliser votre micro</translation>
 <translation id="4762718786438001384">Très peu d'espace disque disponible sur l'appareil</translation>
-<translation id="4762898026821161650">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, ordinateur nommé "<ph name="DEVICE_NAME" />"</translation>
 <translation id="4763408175235639573">Les cookies suivants étaient autorisés lorsque vous avez consulté cette page</translation>
 <translation id="4765582662863429759">Autorise Android Messages à transmettre les SMS de votre téléphone à votre Chromebook</translation>
 <translation id="4768332406694066911">Certains certificats provenant de ces organisations vous identifient.</translation>
@@ -5820,7 +5813,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Contrôle de sécurité effectué il y a 1 minute}one{Contrôle de sécurité effectué il y a {NUM_MINS} minute}other{Contrôle de sécurité effectué il y a {NUM_MINS} minutes}}</translation>
 <translation id="7057767408836081338">Impossible d'obtenir les données de l'application. Nous essayons malgré tout de lancer l'application…</translation>
 <translation id="7058024590501568315">Réseau masqué</translation>
-<translation id="70582545822664495">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, tablette nommée "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7059858479264779982">Lancement automatique</translation>
 <translation id="7062222374113411376">Autoriser les sites fermés récemment à terminer l'envoi et la réception de données (recommandé)</translation>
 <translation id="7063129466199351735">Traitement des raccourcis en cours…</translation>
@@ -5984,7 +5976,6 @@
 <translation id="7257173066616499747">Réseaux Wi-Fi</translation>
 <translation id="725758059478686223">Service d'impression</translation>
 <translation id="7257666756905341374">Accéder aux données que vous copiez et collez</translation>
-<translation id="7258006747130724016">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, caméra nommée "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7258192266780953209">Transformations</translation>
 <translation id="7258225044283673131">L'application ne répond pas. Sélectionnez "Forcer la fermeture" pour la fermer.</translation>
 <translation id="7262004276116528033">Ce service de connexion est hébergé par <ph name="SAML_DOMAIN" />.</translation>
@@ -6781,7 +6772,6 @@
 <translation id="8037117027592400564">Accéder à l'ensemble du texte énoncé à l'aide de la synthèse vocale</translation>
 <translation id="8037357227543935929">Demander (par défaut)</translation>
 <translation id="803771048473350947">Fichier</translation>
-<translation id="8038399858950372766">Appareil <ph name="DEVICE_INDEX" /> sur <ph name="DEVICE_COUNT" />, clavier nommé "<ph name="DEVICE_NAME" />"</translation>
 <translation id="8041089156583427627">Envoyer</translation>
 <translation id="8042142357103597104">Opacité du texte</translation>
 <translation id="8044262338717486897">L'application <ph name="LINUX_APP_NAME" /> ne répond pas.</translation>
@@ -6805,6 +6795,7 @@
 <translation id="8054563304616131773">Veuillez indiquer une adresse e-mail valide.</translation>
 <translation id="8054883179223321715">Compatible avec certains sites de vidéos</translation>
 <translation id="8054921503121346576">Clavier USB connecté.</translation>
+<translation id="8057414620575339583">Recherche latérale</translation>
 <translation id="8058655154417507695">Année d'expiration</translation>
 <translation id="8058986560951482265">Saccadée</translation>
 <translation id="8059417245945632445">&amp;Inspecter les appareils</translation>
@@ -6856,6 +6847,7 @@
 <translation id="81020759409809034">Emplacement local</translation>
 <translation id="8102139037507939978">Retirez les informations personnelles du fichier system_logs.txt.</translation>
 <translation id="8104088837833760645">Télécharger le profil eSIM</translation>
+<translation id="8105368624971345109">Désactiver</translation>
 <translation id="8107015733319732394">Installation du Google Play Store sur votre <ph name="DEVICE_TYPE" />. Cette opération peut prendre quelques minutes.</translation>
 <translation id="810728361871746125">Résolution d'affichage</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Aucun cookie tiers}=1{1 cookie tiers bloqué}one{# cookie tiers bloqué}other{# cookies tiers bloqués}}</translation>
@@ -6920,7 +6912,6 @@
 <translation id="8168071266284693455">Vos favoris, mots de passe, données d'historique et plus sont synchronisés sur tous vos appareils</translation>
 <translation id="8168435359814927499">Contenu</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Ajouter l'onglet à la liste de lecture}one{Ajouter l'onglet à la liste de lecture}other{Ajouter les onglets à la liste de lecture}}</translation>
-<translation id="8169849063724750395">Réactiver</translation>
 <translation id="8171334254070436367">Masquer toutes les fiches</translation>
 <translation id="8174047975335711832">Informations sur l'appareil</translation>
 <translation id="8174876712881364124">Sauvegarder dans Google Drive. Restaurez des données ou changez d'appareil facilement et à tout moment. La sauvegarde inclut les données d'applications. Les sauvegardes sont importées dans Google et chiffrées à l'aide du mot de passe du compte Google de votre enfant. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation>
@@ -6994,7 +6985,6 @@
 <translation id="8249615410597138718">Envoyer à vos appareils</translation>
 <translation id="8249672078237421304">Me proposer de traduire les pages qui sont écrites dans une langue que je ne connais pas</translation>
 <translation id="8251441930213048644">Actualiser</translation>
-<translation id="8251509999076836464">Association à <ph name="DEVICE_NAME" />…</translation>
 <translation id="8251578425305135684">Miniature supprimée</translation>
 <translation id="825238165904109940">Toujours afficher les URL en entier</translation>
 <translation id="8252569384384439529">Importation…</translation>
@@ -7236,7 +7226,6 @@
 <translation id="8534656636775144800">Petit problème… Une erreur s'est produite lors de la tentative d'association au domaine. Veuillez réessayer.</translation>
 <translation id="8535005006684281994">URL de renouvellement du certificat Netscape</translation>
 <translation id="8536956381488731905">Son à chaque touche</translation>
-<translation id="8538718737588735385">Réactiver</translation>
 <translation id="8539727552378197395">Non (HttpOnly)</translation>
 <translation id="8539766201049804895">Mettre à niveau</translation>
 <translation id="8540136935098276800">Saisissez une URL dont le format est correct</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index acc27e9..750b988 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -2725,6 +2725,7 @@
 <translation id="3788331399335602504">estes ficheiros</translation>
 <translation id="3788401245189148511">Podería:</translation>
 <translation id="3789841737615482174">Instalar</translation>
+<translation id="3790417903123637354">Produciuse un erro. Téntao de novo máis tarde</translation>
 <translation id="379082410132524484">A tarxeta caducou</translation>
 <translation id="3792890930871100565">Desconectar impresoras</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome non atopou software daniño no teu ordenador • Última comprobación: hai 1 día}other{Chrome non atopou software daniño no teu ordenador • Última comprobación: hai {NUM_DAYS} días}}</translation>
@@ -3810,6 +3811,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quere conectarse a un porto en serie</translation>
 <translation id="4944310289250773232">Este servizo de autenticación está aloxado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Para configurar a impresión dixital, pídelle ao teu fillo ou filla que toque o botón de acendido. Os datos da súa impresión dixital almacenaranse de maneira segura neste dispositivo (<ph name="DEVICE_TYPE" />) e nunca sairán del.</translation>
+<translation id="4946459324029651239">Estás usando a protección estándar</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{1 ficheiro}other{# ficheiros}}</translation>
 <translation id="495170559598752135">Accións</translation>
 <translation id="4953808748584563296">Avatar laranxa predeterminado</translation>
@@ -4393,6 +4395,7 @@
 <translation id="5575528586625653441">Produciuse un problema coa solicitude de rexistro de demostración.</translation>
 <translation id="557722062034137776">Restablecer o dispositivo non afectará ás túas contas de Google nin a ningún dos datos sincronizados con esas contas. Non obstante, eliminaranse todos os ficheiros gardados localmente no teu dispositivo.</translation>
 <translation id="5578059481725149024">Inicio de sesión automático</translation>
+<translation id="5581134892342029705">Finalizou a tradución ao <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Verificación do controlador de hardware de Microsoft Windows</translation>
 <translation id="5581972110672966454">O dispositivo non se puido vincular ao dominio. Téntao de novo ou ponte en contacto co propietario ou co administrador do dispositivo. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menú principal</translation>
@@ -6786,6 +6789,7 @@
 <translation id="8054563304616131773">Insire un enderezo de correo electrónico válido</translation>
 <translation id="8054883179223321715">Dispoñible para determinados sitios de vídeos</translation>
 <translation id="8054921503121346576">Teclado USB conectado</translation>
+<translation id="8057414620575339583">Busca lateral</translation>
 <translation id="8058655154417507695">Ano de caducidade</translation>
 <translation id="8058986560951482265">Entrecortado</translation>
 <translation id="8059417245945632445">&amp;Inspeccionar dispositivos</translation>
@@ -6837,6 +6841,7 @@
 <translation id="81020759409809034">Localización local</translation>
 <translation id="8102139037507939978">Obter información que permita a identificación persoal do ficheiro system_logs.txt.</translation>
 <translation id="8104088837833760645">Descargar perfil de eSIM</translation>
+<translation id="8105368624971345109">Desactivar</translation>
 <translation id="8107015733319732394">Estase instalando Google Play Store no dispositivo <ph name="DEVICE_TYPE" />. Esta operación pode tardar uns minutos.</translation>
 <translation id="810728361871746125">Resolución da pantalla</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Non hai ningunha cookie de terceiros}=1{Bloqueouse 1 cookie de terceiros}other{Bloqueáronse # cookies de terceiros}}</translation>
@@ -7211,6 +7216,7 @@
 <translation id="8528074251912154910">Engadir idiomas</translation>
 <translation id="8528962588711550376">Iniciando sesión.</translation>
 <translation id="8529925957403338845">Produciuse un erro na conexión compartida instantánea</translation>
+<translation id="8531701051932785007">A función Navegación segura mellorada está desactivada</translation>
 <translation id="8534656636775144800">Produciuse un erro ao tentar conectar co dominio. Volve tentalo.</translation>
 <translation id="8535005006684281994">URL de renovación do certificado de Netscape</translation>
 <translation id="8536956381488731905">Reproducir son ao premer as teclas</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index e2a89ae0..0d2ac067 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -251,7 +251,6 @@
 <translation id="1244265436519979884">હાલમાં Linuxને પહેલાંના જેવું કરવાની પ્રક્રિયા ચાલુ છે</translation>
 <translation id="1244303850296295656">એક્સટેંશન ભૂલ</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> ઇન્સ્ટૉલ કરી શક્યાં નહીં: છબીના URL દ્વારા ભૂલનો કોડ <ph name="HTTP_ERROR" /> પરત આપવામાં આવ્યો છે. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનું ટૅબ્લેટ</translation>
 <translation id="1251366534849411931">અપેક્ષિત ખુલતો વાંકળિયો કૌંસ: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">આમ કરવાથી સાઇટ અને ઇન્સ્ટૉલ કરેલી ઍપ દ્વારા સ્ટોર કરવામાં આવેલો <ph name="TOTAL_USAGE" /> ડેટા સાફ કરવામાં આવશે</translation>
 <translation id="1251578593170406502">મોબાઇલ ડેટા નેટવર્ક માટે સ્કૅન કરી રહ્યાં છીએ…</translation>
@@ -438,7 +437,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> પસંદ કરી</translation>
 <translation id="1442851588227551435">સક્રિય Kerberos ટિકિટ સેટ કરો</translation>
 <translation id="1444628761356461360">આ સેટિંગ ડિવાઇસના માલિક <ph name="OWNER_EMAIL" /> દ્વારા મેનેજ થાય છે.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનો ફોન</translation>
 <translation id="144518587530125858">થીમ માટે '<ph name="IMAGE_PATH" />' લોડ કરી શકાયું નથી.</translation>
 <translation id="1449191289887455076">સોંપણી કન્ફર્મ કરવા માટે, ફરી “<ph name="CURRENTKEY" />” દબાવો અને <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">વેબપેજ, એકલ ફાઇલ</translation>
@@ -858,7 +856,6 @@
 <translation id="1855079636134697549">કૅમેરા ચાલુ કર્યો છે</translation>
 <translation id="1856715684130786728">સ્થાન ઉમેરો...</translation>
 <translation id="1858585891038687145">સૉફ્ટવેર માર્કર્સને ઓળખવા માટે આ પ્રમાણપત્ર પર વિશ્વાસ કરો</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનું અજાણ્યું ડિવાઇસ</translation>
 <translation id="1861262398884155592">આ ફોલ્ડર ખાલી છે</translation>
 <translation id="1862311223300693744">શું તમે કોઈ વિશિષ્ટ VPN, પ્રૉક્સી, ફાયરવૉલ અથવા NAS સૉફ્ટવેર ઇન્સ્ટૉલ કરેલું છે?</translation>
 <translation id="1863182668524159459">કોઈ સીરિયલ પોર્ટ મળ્યાં નથી</translation>
@@ -1233,7 +1230,6 @@
 <translation id="2242687258748107519">ફાઇલ માહિતી</translation>
 <translation id="2246549592927364792">Google તરફથી છબીનાં વર્ણનો મેળવીએ?</translation>
 <translation id="2247738527273549923">તમારું ડિવાઇસ તમારી સંસ્થા દ્વારા મેનેજ કરવામાં આવે છે</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનું ગેમ કન્ટ્રોલર</translation>
 <translation id="2249111429176737533">ટૅબવાળી વિંડો તરીકે ખોલો</translation>
 <translation id="2249605167705922988">ઉદા. ત. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">સિસ્ટમ દર્શક સાથે ખોલો</translation>
@@ -1993,7 +1989,6 @@
 <translation id="3007771295016901659">ડુપ્લિકેટ ટૅબ</translation>
 <translation id="3008232374986381779">તમારા <ph name="DEVICE_TYPE" /> પર Linux સાધનો, એડિટર અને IDEs ચલાવો. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">પરવાનગીઓ રીસેટ કરો</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનું ઑડિયો ડિવાઇસ</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> માટે જરૂરી છે કે તમે અપડેટ ડાઉનલોડ કરવા માટે આજે વાઇ-ફાઇ સાથે કનેક્ટ કરો. અથવા મીટર્ડ (ડેટા નિયંત્રણ) કનેક્શન પરથી ડાઉનલોડ કરો (શુલ્ક લાગુ થઈ શકે છે).}one{<ph name="MANAGER" /> માટે જરૂરી છે કે તમે સમયસીમા સમાપ્ત થાય તે પહેલાં વાઇ-ફાઇ સાથે કનેક્ટ કરો અને અપડેટ ડાઉનલોડ કરો. અથવા મીટર્ડ (ડેટા નિયંત્રણ) કનેક્શન પરથી ડાઉનલોડ કરો (શુલ્ક લાગુ થઈ શકે છે).}other{<ph name="MANAGER" /> માટે જરૂરી છે કે તમે સમયસીમા સમાપ્ત થાય તે પહેલાં વાઇ-ફાઇ સાથે કનેક્ટ કરો અને અપડેટ ડાઉનલોડ કરો. અથવા મીટર્ડ (ડેટા નિયંત્રણ) કનેક્શન પરથી ડાઉનલોડ કરો (શુલ્ક લાગુ થઈ શકે છે).}}</translation>
 <translation id="3009300415590184725">શું તમે ખરેખર મોબાઇલ ડેટા સેવા સેટઅપ પ્રક્રિયાને રદ કરવા માંગો છો?</translation>
 <translation id="3009779501245596802">અનુક્રમિત ડેટાબેસેસ</translation>
@@ -2299,7 +2294,6 @@
 <translation id="3348038390189153836">કાઢી નાખવા યોગ્ય ઉપકરણ મળ્યું</translation>
 <translation id="3348131053948466246">સૂચવેલા ઇમોજી. નૅવિગેટ કરવા માટે ઉપર અથવા નીચેની ઍરો કી દબાવો અને મનપસંદ ઇમોજીને શામેલ કરવા enter કી દબાવો.</translation>
 <translation id="3349933790966648062">મેમરી ફૂટપ્રિન્ટ</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> ડિવાઇસ સાથે જોડાણ કરી શક્યા નથી; ફરી પ્રયાસ કરવા માટે ડિવાઇસ પસંદ કરો</translation>
 <translation id="3355936511340229503">કનેક્શન ભૂલ</translation>
 <translation id="3356580349448036450">પૂર્ણ</translation>
 <translation id="3359256513598016054">પ્રમાણપત્ર નીતિની મર્યાદાઓ</translation>
@@ -2507,6 +2501,7 @@
 <translation id="3557101512409028104">Family Link વડે વેબસાઇટ પ્રતિબંધો અને સ્ર્કીન સમય મર્યાદાઓ સેટ કરો</translation>
 <translation id="3559262020195162408">ડિવાઇસ પર પૉલિસી ઇન્સ્ટૉલ કરવામાં નિષ્ફળ.</translation>
 <translation id="3559533181353831840">લગભગ <ph name="TIME_LEFT" /> બાકી</translation>
+<translation id="3559697822483154494">સ્ક્રીનને વિભાજિત અને ડેસ્કને સ્વિચ કરવા જેવી ક્રિયાઓ માટે વાઇબ્રેશન દ્વારા કન્ફર્મેશન મેળવો.</translation>
 <translation id="3560034655160545939">&amp;જોડણીની તપાસ</translation>
 <translation id="3562423906127931518">આ પ્રક્રિયામાં થોડો સમય લાગી શકે છે. Linux કન્ટેનર સેટઅપ કરી રહ્યાં છીએ.</translation>
 <translation id="3562655211539199254">તમારા ફોનમાંની તાજેતરની Chrome ટૅબ જુઓ</translation>
@@ -2731,6 +2726,7 @@
 <translation id="3788331399335602504">આ ફાઇલો</translation>
 <translation id="3788401245189148511">તે આ કરી શકે છે:</translation>
 <translation id="3789841737615482174">ઇન્સ્ટોલ કરો</translation>
+<translation id="3790417903123637354">કંઈક ખોટું થયું હતું. થોડા સમય પછી ફરી પ્રયાસ કરો</translation>
 <translation id="379082410132524484">તમારા કાર્ડની સમયસીમા સમાપ્ત થઈ ગઈ છે</translation>
 <translation id="3792890930871100565">પ્રિંટર્સ ડિસ્કનેક્ટ કરો</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chromeને તમારા કમ્પ્યુટરમાં હાનિકારક સૉફ્ટવેર મળ્યું નથી • 1 દિવસ પહેલાં ચેક કર્યું}one{Chromeને તમારા કમ્પ્યુટરમાં હાનિકારક સૉફ્ટવેર મળ્યું નથી • {NUM_DAYS} દિવસ પહેલાં ચેક કર્યું}other{Chromeને તમારા કમ્પ્યુટરમાં હાનિકારક સૉફ્ટવેર મળ્યું નથી • {NUM_DAYS} દિવસ પહેલાં ચેક કર્યું}}</translation>
@@ -3130,7 +3126,6 @@
 <translation id="4200689466366162458">કસ્ટમ શબ્દો</translation>
 <translation id="4200983522494130825">નવું &amp;ટૅબ</translation>
 <translation id="4201546031411513170">શું સિંક કરવું તે હંમેશાં તમે સેટિંગમાં પસંદ કરી શકો છો.</translation>
-<translation id="4202417625268941299">Safe Browsingમાં વધારેલી સુરક્ષા વડે તમે Chromeની સૌથી સશક્ત સુરક્ષા મેળવશો</translation>
 <translation id="420283545744377356">સ્ક્રીન સેવર બંધ કરો</translation>
 <translation id="4206144641569145248">એલિયન</translation>
 <translation id="4206323443866416204">પ્રતિસાદ રિપોર્ટ</translation>
@@ -3636,7 +3631,6 @@
 <translation id="4759238208242260848">ડાઉનલોડ્સ</translation>
 <translation id="4761104368405085019">તમારા માઇક્રોફોનનો ઉપયોગ કરો</translation>
 <translation id="4762718786438001384">ઉપકરણ ડિસ્ક સ્થાન અત્યંત ઓછું છે</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનું કમ્પ્યુટર</translation>
 <translation id="4763408175235639573">જ્યારે તમે આ પેજ જોયું, ત્યારે નીચેની કુકી સેટ થઈ હતી</translation>
 <translation id="4765582662863429759">Android Messagesને તમારા ફોન પરથી તમારી Chromebook પર ટેક્સ્ટને પ્રસારિત કરવાની મંજૂરી આપે છે</translation>
 <translation id="4768332406694066911">તમારી પાસે આ સંસ્થાઓના પ્રમાણપત્ર છે કે જે તમને ઓળખે છે</translation>
@@ -4909,6 +4903,7 @@
 <translation id="6112931163620622315">તમારો ફોન તપાસો</translation>
 <translation id="6113434369102685411">Chrome બ્રાઉઝર અને <ph name="DEVICE_TYPE" /> લૉન્ચર માટે તમારું ડિફૉલ્ટ શોધ એન્જિન સેટ કરો</translation>
 <translation id="6113942107547980621">Smart Lockનો ઉપયોગ કરવા માટે, તમારા ફોન પર પ્રાથમિક વપરાશકર્તા પ્રોફાઇલ પર સ્વિચ કરો</translation>
+<translation id="611684075852771314">આ લૉગ 'મારી ફાઇલો'માં આ નામથી સાચવવામાં આવ્યા છે</translation>
 <translation id="6116921718742659598">ભાષા અને ઇનપુટ સેટિંગ બદલો</translation>
 <translation id="6119927814891883061">ડિવાઇસને <ph name="DEVICE_NAME" /> નામ આપો</translation>
 <translation id="6120205520491252677">શરૂઆતની સ્ક્રીન પર આ પેજ પિન કરો...</translation>
@@ -5685,6 +5680,7 @@
 <translation id="6930036377490597025">બાહ્ય સુરક્ષા કોડ અને બિલ્ટ-ઇન સેન્સર</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{એક્સ્ટેંશન નકારવામાં આવ્યું છે}one{# એક્સ્ટેંશન નકારવામાં આવ્યું છે}other{# એક્સ્ટેંશન નકારવામાં આવ્યા છે}}</translation>
 <translation id="6930321203306643451">અપગ્રેડ કરવાનું પૂર્ણ થયું</translation>
+<translation id="6931690462168617033">ક્લિકની ક્ષમતા</translation>
 <translation id="6935286146439255109">પેપર ટ્રે ખૂટે છે</translation>
 <translation id="693807610556624488">લેખન ઓપરેશને એટ્રિબ્યુટની મહત્તમ લંબાઈને વટાવી દીધી છે: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">તમારી પાસે 1 સાચવેલું પ્રિન્ટર છે.</translation>
@@ -5818,7 +5814,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{સલામતી માટે તપાસ 1 મિનિટ અગાઉ કરવામાં આવી હતી}one{સલામતી માટે તપાસ {NUM_MINS} મિનિટ અગાઉ કરવામાં આવી હતી}other{સલામતી માટે તપાસ {NUM_MINS} મિનિટ અગાઉ કરવામાં આવી હતી}}</translation>
 <translation id="7057767408836081338">ઍપનો ડેટા મેળવવામાં નિષ્ફળ રહ્યાં, તેમ છતાં હજી પણ ઍપ ચલાવવાનો પ્રયાસ કરી રહ્યાં છીએ...</translation>
 <translation id="7058024590501568315">છુપાવવામાં આવેલું નેટવર્ક</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનું માઉસ</translation>
 <translation id="7059858479264779982">સ્વતઃ-લોંચ સેટ કરો</translation>
 <translation id="7062222374113411376">ડેટા મોકલવાનું અને મેળવવાનું સમાપ્ત કરવા માટે તાજેતરમાં બંધ કરેલી સાઇટને મંજૂરી આપો (સુઝાવ આપીએ છીએ)</translation>
 <translation id="7063129466199351735">શોર્ટકટ્સની પ્રક્રિયા કરી રહ્યું છે...</translation>
@@ -5982,7 +5977,6 @@
 <translation id="7257173066616499747">Wi-Fi નેટવર્ક્સ</translation>
 <translation id="725758059478686223">પ્રિન્ટિંગ સેવા</translation>
 <translation id="7257666756905341374">તમે કૉપિ અને પેસ્ટ કરો એ ડેટાને વાંચો</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનો વીડિયો કૅમેરા</translation>
 <translation id="7258192266780953209">રૂપાંતરણો</translation>
 <translation id="7258225044283673131">ઍપ્લિકેશન ચાલી રહી નથી. ઍપ બંધ કરવા માટે "ફરજિયાત બંધ" પસંદ કરો.</translation>
 <translation id="7262004276116528033">આ સાઇન-ઇન સેવા <ph name="SAML_DOMAIN" /> દ્વારા હોસ્ટ થયેલી છે.</translation>
@@ -6773,7 +6767,6 @@
 <translation id="8037117027592400564">સિન્થેસાઇઝ કરેલ વાણીનો ઉપયોગ કરીને બધી બોલાયેલ ટેક્સ્ટને વાંચો</translation>
 <translation id="8037357227543935929">પૂછો (ડિફૉલ્ટ)</translation>
 <translation id="803771048473350947">ફાઇલ</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" />માંથી <ph name="DEVICE_INDEX" /> ડિવાઇસ, <ph name="DEVICE_NAME" /> નામનું કીબોર્ડ</translation>
 <translation id="8041089156583427627">પ્રતિસાદ મોકલો</translation>
 <translation id="8042142357103597104">ટેક્સ્ટની અસ્પષ્ટતા</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> ચાલી રહી નથી.</translation>
@@ -6797,6 +6790,7 @@
 <translation id="8054563304616131773">કૃપા કરીને માન્ય ઇમેઇલ ઍડ્રેસ દાખલ કરો</translation>
 <translation id="8054883179223321715">કોઈ ચોક્કસ વીડિયો સાઇટ માટે ઉપલબ્ધ</translation>
 <translation id="8054921503121346576">USB કીબોર્ડ કનેક્ટ કર્યું</translation>
+<translation id="8057414620575339583">બાજુની શોધ</translation>
 <translation id="8058655154417507695">સમાપ્તિ વર્ષ</translation>
 <translation id="8058986560951482265">આંચકા મારતો</translation>
 <translation id="8059417245945632445">&amp;ઉપકરણોની તપાસ કરો</translation>
@@ -6811,6 +6805,7 @@
 <translation id="8064279191081105977">ગ્રૂપ <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">કનેક્શન સંવાદ</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">સ્પર્શ દ્વારા આપેલો અભિપ્રાય</translation>
 <translation id="8071432093239591881">ફોટો તરીકે પ્રિન્ટ</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />ઍપ ડેટા એ સંપર્કો, મેસેજ અને ફોટા જેવા ડેટા સહિત, ઍપ દ્વારા (ડેવલપર સેટિંગના આધારે) સાચવવામાં આવેલો કોઈપણ ડેટા હોય શકે છે.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />બૅકઅપ ડેટાની ગણતરી તમારા બાળકના ડ્રાઇવ સ્ટોરેજના ક્વોટામાં નહીં થાય.<ph name="END_PARAGRAPH2" />
@@ -6848,6 +6843,7 @@
 <translation id="81020759409809034">સ્થાનિક જગ્યા</translation>
 <translation id="8102139037507939978">system_logs.txtમાંથી વ્યક્તિગત રૂપે ઓળખી શકાય તેવી માહિતી જુદી પાડો.</translation>
 <translation id="8104088837833760645">ઇ-સિમ પ્રોફાઇલ ડાઉનલોડ કરો</translation>
+<translation id="8105368624971345109">બંધ કરો</translation>
 <translation id="8107015733319732394">તમારા <ph name="DEVICE_TYPE" /> પર Google Play Store ઇન્સ્ટૉલ કરી રહ્યાં છીએ. આમાં થોડી મિનિટ લાગી શકે છે.</translation>
 <translation id="810728361871746125">ડિસ્પ્લેનું રિઝોલ્યુશન</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ત્રીજા પક્ષની કોઈ કુકી નથી}=1{ત્રીજા પક્ષની 1 કુકી બ્લૉક કરવામાં આવી છે}one{ત્રીજા પક્ષની # કુકી બ્લૉક કરવામાં આવી છે}other{ત્રીજા પક્ષની # કુકી બ્લૉક કરવામાં આવી છે}}</translation>
@@ -6912,7 +6908,6 @@
 <translation id="8168071266284693455">તમારા બુકમાર્ક, પાસવર્ડ, ઇતિહાસ જેવું બીજું ઘણું તમારા બધા ડિવાઇસ પર સિંક કરવામાં આવે છે</translation>
 <translation id="8168435359814927499">કન્ટેન્ટ</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{વાંચન સૂચિમાં ટૅબ ઉમેરો}one{વાંચન સૂચિમાં ટૅબ ઉમેરો}other{વાંચન સૂચિમાં ટૅબ ઉમેરો}}</translation>
-<translation id="8169849063724750395">ફરી ચાલુ કરો</translation>
 <translation id="8171334254070436367">બધા કાર્ડ છુપાવો</translation>
 <translation id="8174047975335711832">ઉપકરણ માહિતી</translation>
 <translation id="8174876712881364124">Google ડ્રાઇવમાં બૅકઅપ લો. કોઈપણ સમયે ડેટા સરળતાથી પાછો મેળવો અથવા ડિવાઇસ સ્વિચ કરો. આ બૅકઅપમાં ઍપનો ડેટા શામેલ હોય છે. બૅકઅપને Google પર અપલોડ કરવામાં આવે છે અને તમારા બાળકના Google એકાઉન્ટ પાસવર્ડનો ઉપયોગ કરીને એન્ક્રિપ્ટ કરવામાં આવે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation>
@@ -6986,7 +6981,6 @@
 <translation id="8249615410597138718">તમારા ડિવાઇસ પર મોકલો</translation>
 <translation id="8249672078237421304">તમે વાંચો છો તે ભાષામાં ન હોય તેવા પેજનો અનુવાદ કરવાનું ઑફર કરો</translation>
 <translation id="8251441930213048644">હવે રિફ્રેશ કરો</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" />સાથે જોડાણ કરી રહ્યાં છીએ</translation>
 <translation id="8251578425305135684">થંબનેલ દૂર કર્યું.</translation>
 <translation id="825238165904109940">હંમેશાં પૂર્ણ URLs બતાવો</translation>
 <translation id="8252569384384439529">અપલોડ કરી રહ્યાં છીએ...</translation>
@@ -7228,7 +7222,6 @@
 <translation id="8534656636775144800">અરેરે! ડોમેન સાથે જોડાવાનો પ્રયાસ કરતી વખતે કંઈક ખોટું થયું હતું. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="8535005006684281994">નેટસ્કેપ પ્રમાણપત્ર નવીકરણ URL</translation>
 <translation id="8536956381488731905">કી દબાવવા પર સાઉન્ડ</translation>
-<translation id="8538718737588735385">ફરી ચાલુ કરો</translation>
 <translation id="8539727552378197395">ના (ફક્ત Http)</translation>
 <translation id="8539766201049804895">અપગ્રેડ કરો</translation>
 <translation id="8540136935098276800">સાચી રીતે ફોર્મેટ કરેલું URL દાખલ કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 6c2e309..e837f32d 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -2518,6 +2518,7 @@
 <translation id="3557101512409028104">Family Link की मदद से वेबसाइट पाबंदियां और किसी डिवाइस के इस्तेमाल की समय सीमा सेट करें</translation>
 <translation id="3559262020195162408">डिवाइस पर नीति इंस्टॉल नहीं की जा सकी.</translation>
 <translation id="3559533181353831840">करीब <ph name="TIME_LEFT" /> बचे हैं</translation>
+<translation id="3559697822483154494">स्प्लिट स्क्रीन या एक से ज़्यादा डेस्क के बीच स्विच करने जैसी गतिविधियों के लिए, वाइब्रेशन से पुष्टि करने की सुविधा चालू करें.</translation>
 <translation id="3560034655160545939">&amp;वर्तनी जाँच</translation>
 <translation id="3562423906127931518">इस प्रक्रिया में कुछ मिनट लग सकते हैं. Linux कंटेनर सेट अप हो रहा है.</translation>
 <translation id="3562655211539199254">अपने फ़ोन में Chrome पर हाल ही में खोले गए टैब देखें</translation>
@@ -2742,6 +2743,7 @@
 <translation id="3788331399335602504">ये फ़ाइलें</translation>
 <translation id="3788401245189148511">यह निम्न कर सकता है:</translation>
 <translation id="3789841737615482174">इंस्‍टॉल करें</translation>
+<translation id="3790417903123637354">कोई गड़बड़ी हुई. बाद में कोशिश करें</translation>
 <translation id="379082410132524484">आपके कार्ड की समय-सीमा खत्म हो गई है</translation>
 <translation id="3792890930871100565">प्रिंटर डिसकनेक्ट करें</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome को आपके कंप्यूटर पर, नुकसान पहुंचाने वाला कोई सॉफ़्टवेयर नहीं मिला • 1 दिन पहले जांच की गई}one{Chrome को आपके कंप्यूटर पर, नुकसान पहुंचाने वाला कोई सॉफ़्टवेयर नहीं मिला • {NUM_DAYS} दिन पहले जांच की गई}other{Chrome को आपके कंप्यूटर पर, नुकसान पहुंचाने वाला कोई सॉफ़्टवेयर नहीं मिला • {NUM_DAYS} दिन पहले जांच की गई}}</translation>
@@ -3827,6 +3829,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" किसी सीरियल पोर्ट से कनेक्ट करना चाहता है</translation>
 <translation id="4944310289250773232">यह प्रमाणीकरण सेवा <ph name="SAML_DOMAIN" /> की मदद से होस्ट की गई है</translation>
 <translation id="4945439665401275950">फ़िंगरप्रिंट सेट अप करने के लिए, अपने बच्चे को पावर बटन छूने के लिए कहें. आपके बच्चे के फ़िंगरप्रिंट का डेटा सुरक्षित तरीके से सेव किया जाता है. साथ ही, यह हमेशा इस <ph name="DEVICE_TYPE" /> में ही रहता है.</translation>
+<translation id="4946459324029651239">आपके खाते के लिए सामान्य सुरक्षा सेट की गई है</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{एक फ़ाइल}one{# फ़ाइल}other{# फ़ाइलें}}</translation>
 <translation id="495170559598752135">क्रियाएं</translation>
 <translation id="4953808748584563296">डिफ़ॉल्ट नारंगी अवतार</translation>
@@ -4410,6 +4413,7 @@
 <translation id="5575528586625653441">डेमो रजिस्ट्रेशन अनुरोध में कोई परेशानी हुई.</translation>
 <translation id="557722062034137776">अपने डिवाइस को रीसेट करना आपके Google खातों या इन खातों से समन्वयित किसी भी डेटा को प्रभावित नहीं करेगा. हालांकि, आपके डिवाइस पर स्थानीय रूप से सहेजी गईं सभी फ़ाइलें हट जाएंगी.</translation>
 <translation id="5578059481725149024">अपने आप साइन इन करें</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> भाषा में अनुवाद पूरा हो गया है</translation>
 <translation id="558170650521898289">Microsoft Windows Hardware Driver Verification</translation>
 <translation id="5581972110672966454">डिवाइस को डोमेन से नहीं जोड़ा जा सकता. कृपया फिर से कोशिश करें. इसके अलावा, डिवाइस के मालिक या एडमिन से संपर्क करें. गड़बड़ी कोड: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">मुख्य मेन्यू</translation>
@@ -4914,6 +4918,7 @@
 <translation id="6112931163620622315">अपने फ़ोन में देखें</translation>
 <translation id="6113434369102685411">Chrome ब्राउज़र और <ph name="DEVICE_TYPE" /> लॉन्चर के लिए अपना डिफ़ॉल्ट सर्च इंजन सेट करें</translation>
 <translation id="6113942107547980621">Smart Lock इस्तेमाल करने के लिए, अपने डिवाइस के प्राथमिक उपयोगकर्ता की प्रोफ़ाइल पर स्विच करें</translation>
+<translation id="611684075852771314">लॉग के ये मैसेज 'मेरी फ़ाइलें' में इस नाम से सेव हुए हैं</translation>
 <translation id="6116921718742659598">भाषा और अक्षर सेटिंग बदलें</translation>
 <translation id="6119927814891883061">डिवाइस का नाम <ph name="DEVICE_NAME" /> रखें</translation>
 <translation id="6120205520491252677">इस पेज को प्रारंभ स्क्रीन में पिन करें...</translation>
@@ -5690,6 +5695,7 @@
 <translation id="6930036377490597025">बाहरी सुरक्षा चाबी या पहले से मौजूद सेंसर</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{एक्सटेंशन अस्वीकार कर दिया गया}one{# एक्सटेंशन अस्वीकार कर दिए गए}other{# एक्सटेंशन अस्वीकार कर दिए गए}}</translation>
 <translation id="6930321203306643451">अपग्रेड करने की प्रक्रिया पूरी हुई</translation>
+<translation id="6931690462168617033">क्लिक की क्षमता</translation>
 <translation id="6935286146439255109">पेपर ट्रे नहीं है</translation>
 <translation id="693807610556624488">लिखें कार्रवाई विशेषता की अधिकतम लंबाई इसके लिए पार हो गई है: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">आपके पास सेव किया गया एक प्रिंटर है.</translation>
@@ -6819,6 +6825,7 @@
 <translation id="8064279191081105977"><ph name="GROUP_NAME" /> ग्रुप - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">कनेक्शन डायलॉग</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">हैप्टिक फ़ीडबैक</translation>
 <translation id="8071432093239591881">इमेज के रूप में प्रिंट करें</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />ऐप्लिकेशन डेटा ऐसा कोई भी डेटा हो सकता है जिसे किसी ऐप्लिकेशन ने (डेवलपर सेटिंग के हिसाब से) सेव किया है, इसमें संपर्क, मैसेज और फ़ोटो जैसा डेटा शामिल है.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />बैकअप डेटा को आपके बच्चे के 'डिस्क' के स्टोरेज कोटा में शामिल नहीं किया जाएगा.<ph name="END_PARAGRAPH2" />
@@ -6856,6 +6863,7 @@
 <translation id="81020759409809034">डाउनलोड करने के लिए डिफ़ॉल्ट लोकेशन</translation>
 <translation id="8102139037507939978">system_logs.txt से, व्यक्तिगत पहचान ज़ाहिर करने वाली जानकारी को हटाएं.</translation>
 <translation id="8104088837833760645">ई-सिम प्रोफ़ाइल डाउनलोड करें</translation>
+<translation id="8105368624971345109">बंद करें</translation>
 <translation id="8107015733319732394">आपके <ph name="DEVICE_TYPE" /> पर Google Play Store इंस्टॉल हो रहा है. इसमें कुछ मिनट लग सकते हैं.</translation>
 <translation id="810728361871746125">डिसप्ले का रिज़ॉल्यूशन</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{तीसरे पक्ष की कोई कुकी नहीं है}=1{तीसरे पक्ष की 1 कुकी ब्लॉक की गई है}one{तीसरे पक्ष की # कुकी ब्लॉक की गई हैं}other{तीसरे पक्ष की # कुकी ब्लॉक की गई हैं}}</translation>
@@ -7230,6 +7238,7 @@
 <translation id="8528074251912154910">भाषाएं जोड़ें</translation>
 <translation id="8528962588711550376">प्रवेश कर रहा है.</translation>
 <translation id="8529925957403338845">इंस्टैंट टेदरिंग कनेक्शन नहीं किया जा सका</translation>
+<translation id="8531701051932785007">बेहतर सुरक्षित ब्राउज़िंग की सुविधा बंद है</translation>
 <translation id="8534656636775144800">ओह!  डोमेन में शामिल होने की कोशिश करते समय कोई गड़बड़ी हुई. कृपया फिर से कोशिश करें.</translation>
 <translation id="8535005006684281994">Netscape प्रमाणपत्र नवीनीकरण यूआरएल</translation>
 <translation id="8536956381488731905">बटन दबाने पर आवाज़</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 7ee5201..cd4121d4 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">U tijeku je vraćanje Linuxa</translation>
 <translation id="1244303850296295656">Pogreška proširenja</translation>
 <translation id="1246863218384630739">Instaliranje softvera <ph name="VM_NAME" /> nije uspjelo: URL slike vratio je kôd pogreške <ph name="HTTP_ERROR" />. Obratite se administratoru.</translation>
-<translation id="1247071602516579380">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, tablet pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Očekivano otvaranje vitičaste zagrade: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Izbrisat će se <ph name="TOTAL_USAGE" /> podataka koje su spremile web-lokacije i instalirane aplikacije</translation>
 <translation id="1251578593170406502">Traženje podatkovnih mreža...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837">Broj odabranih stavki: <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Postavljanje aktivnog Kerberosovog tiketa</translation>
 <translation id="1444628761356461360">Ovom postavkom upravlja vlasnik uređaja, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, telefon pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Nije uspjelo učitavanje putanje "<ph name="IMAGE_PATH" />" za temu.</translation>
 <translation id="1449191289887455076">Ponovno pritisnite tipku <ph name="CURRENTKEY" /> da biste potvrdili dodjelu i <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Web-stranica, jedna datoteka</translation>
@@ -863,7 +861,6 @@
 <translation id="1855079636134697549">Kamera je uključena</translation>
 <translation id="1856715684130786728">Dodaj lokaciju...</translation>
 <translation id="1858585891038687145">Vjeruj ovom certifikatu za identifikaciju proizvođača softvera</translation>
-<translation id="1859787252990099899">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, neprepoznati uređaj pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Mapa je prazna</translation>
 <translation id="1862311223300693744">Jeste li instalirali neki posebni softver VPN-a, proxyja, vatrozida ili NAS-a?</translation>
 <translation id="1863182668524159459">Nije pronađen nijedan serijski priključak</translation>
@@ -1238,7 +1235,6 @@
 <translation id="2242687258748107519">Informacije o datoteci</translation>
 <translation id="2246549592927364792">Želite li dohvatiti opise slika s Googlea?</translation>
 <translation id="2247738527273549923">Ovim uređajem upravlja vaša organizacija</translation>
-<translation id="2249061317998743208">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, kontroler za videoigre pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Otvori kao prozor s karticama</translation>
 <translation id="2249605167705922988">npr. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Otvori u pregledniku sustava</translation>
@@ -1998,7 +1994,6 @@
 <translation id="3007771295016901659">Dupliciraj karticu</translation>
 <translation id="3008232374986381779">Pokretanje Linuxovih alata, uređivača i IDE-ova na uređaju <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Poništi dopuštenja</translation>
-<translation id="3008396025115884998">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, audiouređaj pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> traži da se danas povežete s Wi-Fijem da biste preuzeli ažuriranje. Možete ga preuzeti i putem veze s ograničenim prometom (moguća je naplata naknada).}one{<ph name="MANAGER" /> traži da se povežete s Wi-Fijem i preuzmete ažuriranje prije roka. Možete ga preuzeti i putem veze s ograničenim prometom (moguća je naplata naknada).}few{<ph name="MANAGER" /> traži da se povežete s Wi-Fijem i preuzmete ažuriranje prije roka. Možete ga preuzeti i putem veze s ograničenim prometom (moguća je naplata naknada).}other{<ph name="MANAGER" /> traži da se povežete s Wi-Fijem i preuzmete ažuriranje prije roka. Možete ga preuzeti i putem veze s ograničenim prometom (moguća je naplata naknada).}}</translation>
 <translation id="3009300415590184725">Jeste li sigurni da želite otkazati proces postavljanja podatkovne mobilne usluge?</translation>
 <translation id="3009779501245596802">Indeksirane baze podataka</translation>
@@ -2304,7 +2299,6 @@
 <translation id="3348038390189153836">Otkriven je uklonjivi uređaj</translation>
 <translation id="3348131053948466246">Emoji je predložen. Pritisnite tipke za gore ili dolje za kretanje i tipku Enter za umetanje.</translation>
 <translation id="3349933790966648062">Upotreba memorije</translation>
-<translation id="3354972872297836698">Uparivanje s uređajem <ph name="DEVICE_NAME" /> nije uspjelo; odaberite uređaj da biste pokušali ponovo</translation>
 <translation id="3355936511340229503">Pogreška veze</translation>
 <translation id="3356580349448036450">Dovršeno</translation>
 <translation id="3359256513598016054">Ograničenja pravila certifikata</translation>
@@ -2736,6 +2730,7 @@
 <translation id="3788331399335602504">ove datoteke</translation>
 <translation id="3788401245189148511">Proširenje ili aplikacija mogli bi:</translation>
 <translation id="3789841737615482174">Instaliraj</translation>
+<translation id="3790417903123637354">Nešto nije u redu. Pokušajte ponovo kasnije</translation>
 <translation id="379082410132524484">Vaša je kartica istekla</translation>
 <translation id="3792890930871100565">Isključi pisače</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome nije pronašao štetni softver na vašem računalu • provjereno jučer}one{Chrome nije pronašao štetni softver na vašem računalu • provjereno prije {NUM_DAYS} dan}few{Chrome nije pronašao štetni softver na vašem računalu • provjereno prije {NUM_DAYS} dana}other{Chrome nije pronašao štetni softver na vašem računalu • provjereno prije {NUM_DAYS} dana}}</translation>
@@ -3135,7 +3130,6 @@
 <translation id="4200689466366162458">Prilagođene riječi</translation>
 <translation id="4200983522494130825">Nova &amp;kartica</translation>
 <translation id="4201546031411513170">Uvijek možete odabrati u postavkama što će se sinkronizirati.</translation>
-<translation id="4202417625268941299">Poboljšano sigurno pregledavanje pruža vam najsnažniju Chromeovu zaštitu</translation>
 <translation id="420283545744377356">Isključivanje čuvara zaslona</translation>
 <translation id="4206144641569145248">Vanzemaljac</translation>
 <translation id="4206323443866416204">Izvješće s povratnim informacijama</translation>
@@ -3641,7 +3635,6 @@
 <translation id="4759238208242260848">Preuzimanje</translation>
 <translation id="4761104368405085019">upotrijebiti vaš mikrofon</translation>
 <translation id="4762718786438001384">Količina prostora na disku uređaja kritično je mala</translation>
-<translation id="4762898026821161650">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, računalo pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Prilikom pregledavanja ove stranice postavljeni su sljedeći kolačići</translation>
 <translation id="4765582662863429759">Omogućuje Android porukama prijenos tekstnih poruka s vašeg telefona na Chromebook</translation>
 <translation id="4768332406694066911">Imate certifikate ovih organizacija koji vas identificiraju</translation>
@@ -5821,7 +5814,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Sigurnosna provjera izvršena je prije 1 minute}one{Sigurnosna provjera izvršena je prije {NUM_MINS} minute}few{Sigurnosna provjera izvršena je prije {NUM_MINS} minute}other{Sigurnosna provjera izvršena je prije {NUM_MINS} minuta}}</translation>
 <translation id="7057767408836081338">Dohvaćanje podataka aplikacije nije uspjelo. I dalje pokušavamo pokrenuti aplikaciju...</translation>
 <translation id="7058024590501568315">Skrivena mreža</translation>
-<translation id="70582545822664495">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, miš pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Postavi na automatsko pokretanje</translation>
 <translation id="7062222374113411376">Dopusti nedavno zatvorenim web-lokacijama dovršetak slanja i primanja podataka</translation>
 <translation id="7063129466199351735">Obrada prečaca...</translation>
@@ -5985,7 +5977,6 @@
 <translation id="7257173066616499747">Wi-Fi mreže</translation>
 <translation id="725758059478686223">Usluga ispisa</translation>
 <translation id="7257666756905341374">čitati podatke koje kopirate i lijepite</translation>
-<translation id="7258006747130724016">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, videokamera pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformacije</translation>
 <translation id="7258225044283673131">Aplikacija ne reagira. Odaberite "Prisilno zatvori" da biste zatvorili tu aplikaciju.</translation>
 <translation id="7262004276116528033">Tu uslugu prijave hostira <ph name="SAML_DOMAIN" /></translation>
@@ -6781,7 +6772,6 @@
 <translation id="8037117027592400564">čitati sve tekstove izgovorene sintetiziranim govorom</translation>
 <translation id="8037357227543935929">Pitaj (zadano)</translation>
 <translation id="803771048473350947">Datoteka</translation>
-<translation id="8038399858950372766">Uređaj <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, tipkovnica pod nazivom <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Slanje povratnih informacija</translation>
 <translation id="8042142357103597104">Prozirnost teksta</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> ne reagira.</translation>
@@ -6857,6 +6847,7 @@
 <translation id="81020759409809034">Lokalna lokacija</translation>
 <translation id="8102139037507939978">Ukloni podatke koji otkrivaju identitet iz datoteke system_logs.txt.</translation>
 <translation id="8104088837833760645">Preuzmite eSIM profil</translation>
+<translation id="8105368624971345109">Isključi</translation>
 <translation id="8107015733319732394">Trgovina Google Play instalira se na vašem uređaju <ph name="DEVICE_TYPE" />. To bi moglo potrajati nekoliko minuta.</translation>
 <translation id="810728361871746125">Razlučivost zaslona</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Bez kolačića treće strane}=1{Blokiran je jedan kolačić treće strane}one{Blokiran je # kolačić treće strane}few{Blokirana su # kolačića treće strane}other{Blokirano je # kolačića treće strane}}</translation>
@@ -6921,7 +6912,6 @@
 <translation id="8168071266284693455">Vaše oznake, zaporke, povijest i još mnogo toga sinkronizirani su na svim vašim uređajima</translation>
 <translation id="8168435359814927499">Sadržaj</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj karticu na popis za čitanje}one{Dodaj kartice na popis za čitanje}few{Dodaj kartice na popis za čitanje}other{Dodaj kartice na popis za čitanje}}</translation>
-<translation id="8169849063724750395">Ponovo uključi</translation>
 <translation id="8171334254070436367">Sakrij sve kartice</translation>
 <translation id="8174047975335711832">Informacije o uređaju</translation>
 <translation id="8174876712881364124">Izradite sigurnosnu kopiju na Google disku. Jednostavno vratite podatke ili prijeđite na drugi uređaj u bilo kojem trenutku. Sigurnosna kopija uključuje podatke aplikacija. Sigurnosna kopija prenosi se na Google i kriptira pomoću zaporke Google računa vašeg djeteta.<ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation>
@@ -6995,7 +6985,6 @@
 <translation id="8249615410597138718">Pošaljite na svoje uređaje</translation>
 <translation id="8249672078237421304">Ponudi prijevod stranica koje nisu na jeziku koji čitam</translation>
 <translation id="8251441930213048644">Osvježi sada</translation>
-<translation id="8251509999076836464">Uparivanje s uređajem <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Sličica je uklonjena.</translation>
 <translation id="825238165904109940">Uvijek prikaži cijele URL-ove</translation>
 <translation id="8252569384384439529">Prijenos...</translation>
@@ -7237,7 +7226,6 @@
 <translation id="8534656636775144800">Ups! Došlo je do pogreške pri pokušaju pridruživanja domeni. Pokušajte ponovo.</translation>
 <translation id="8535005006684281994">URL za obnavljanje Netscape certifikata</translation>
 <translation id="8536956381488731905">Zvuk pritiska tipke</translation>
-<translation id="8538718737588735385">Ponovo uključi</translation>
 <translation id="8539727552378197395">Ne (samo http)</translation>
 <translation id="8539766201049804895">Nadogradi</translation>
 <translation id="8540136935098276800">Unesite ispravno oblikovan URL</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 2d733f8..6d3eb53 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -2516,6 +2516,7 @@
 <translation id="3557101512409028104">Webhelyekre és képernyő előtt töltött időre vonatkozó korlátozások beállítása a Family Linkkel</translation>
 <translation id="3559262020195162408">Nem sikerült telepíteni a házirendet az eszközre.</translation>
 <translation id="3559533181353831840">Körülbelül <ph name="TIME_LEFT" /> maradt</translation>
+<translation id="3559697822483154494">Rezgő visszajelzést kap olyan műveletek esetén, mint az osztott képernyő vagy az asztalok közötti váltás.</translation>
 <translation id="3560034655160545939">&amp;Helyesírás-ellenőrzés</translation>
 <translation id="3562423906127931518">Ez a folyamat néhány percet is igénybe vehet. A Linux-tároló beállítása folyamatban van.</translation>
 <translation id="3562655211539199254">A telefonján nemrég megnyitott Chrome-lapok megtekintése</translation>
@@ -2740,6 +2741,7 @@
 <translation id="3788331399335602504">ezek a fájlok</translation>
 <translation id="3788401245189148511">A következőkre lehet képes:</translation>
 <translation id="3789841737615482174">Telepítés</translation>
+<translation id="3790417903123637354">Hiba történt. Próbálja újra később</translation>
 <translation id="379082410132524484">A kártya lejárt</translation>
 <translation id="3792890930871100565">Nyomtatók leválasztása</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{A Chrome nem talált kártékony szoftvert az Ön számítógépén • 1 napja ellenőrizve}other{A Chrome nem talált kártékony szoftvert az Ön számítógépén • {NUM_DAYS} napja ellenőrizve}}</translation>
@@ -3825,6 +3827,7 @@
 <translation id="4943691134276646401">A(z) „<ph name="CHROME_EXTENSION_NAME" />” soros porthoz szeretne csatlakozni</translation>
 <translation id="4944310289250773232">Ezt a hitelesítési szolgáltatást a(z) <ph name="SAML_DOMAIN" /> biztosítja</translation>
 <translation id="4945439665401275950">Az ujjlenyomat beállításához a gyermekének hozzá kell érintenie az ujját a bekapcsológombhoz. Gyermeke ujjlenyomatadatait a rendszer biztonságosan tárolja, és ezek az adatok soha nem kerülnek ki az eszközről (<ph name="DEVICE_TYPE" />).</translation>
+<translation id="4946459324029651239">Normál védelmet nyújt Önnek a rendszer</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{egy fájlt}other{# fájlt}}</translation>
 <translation id="495170559598752135">Műveletek</translation>
 <translation id="4953808748584563296">Alapértelmezett narancssárga avatar</translation>
@@ -4409,6 +4412,7 @@
 <translation id="5575528586625653441">Gond adódott a demó mód regisztrációs kérelmével.</translation>
 <translation id="557722062034137776">Az eszköz visszaállítása nincs hatással Google-fiókjaira vagy a fiókokkal szinkronizált adatokra. Az eszközön helyileg mentett fájlok azonban törlődni fognak.</translation>
 <translation id="5578059481725149024">Automatikus bejelentkezés</translation>
+<translation id="5581134892342029705">Elkészült a következő nyelvre való fordítás: <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Microsoft Windows - hardver-illesztőprogram ellenőrzése</translation>
 <translation id="5581972110672966454">Nem sikerült csatlakoztatni az eszközt a domainhez. Próbálja újra, illetve forduljon az eszköz tulajdonosához vagy rendszergazdájához. Hibakód: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Főmenü</translation>
@@ -4914,6 +4918,7 @@
 <translation id="6112931163620622315">Folytassa a telefonján</translation>
 <translation id="6113434369102685411">Állítsa be az alapértelmezett keresőmotort a Chrome böngészőhöz és a(z) <ph name="DEVICE_TYPE" /> indítójához</translation>
 <translation id="6113942107547980621">Ha használni szeretné a Smart Lock funkciót, váltson a telefon elsődleges felhasználói profiljára</translation>
+<translation id="611684075852771314">Ezek a naplók a következő néven vannak mentve a Saját fájlok részben:</translation>
 <translation id="6116921718742659598">Nyelvi és beviteli beállítások módosítása</translation>
 <translation id="6119927814891883061">Eszköz elnevezése erre: <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Az oldal rögzítése a kezdőképernyőn...</translation>
@@ -5690,6 +5695,7 @@
 <translation id="6930036377490597025">Külső biztonsági hardverkulcs vagy beépített érzékelő</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Egy bővítmény elutasítva}other{# bővítmény elutasítva}}</translation>
 <translation id="6930321203306643451">A bővítés befejeződött</translation>
+<translation id="6931690462168617033">Kattintási erősség</translation>
 <translation id="6935286146439255109">Hiányzik a papírtálca</translation>
 <translation id="693807610556624488">Az írási művelet meghaladja a következő attribútumának maximális hosszát: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6938386202199793006">1 mentett nyomtató található.</translation>
@@ -6804,6 +6810,7 @@
 <translation id="8054563304616131773">Kérjük, adjon meg egy érvényes e-mail címet</translation>
 <translation id="8054883179223321715">Meghatározott videós webhelyek esetében áll rendelkezésre</translation>
 <translation id="8054921503121346576">USB-billentyűzet csatlakoztatva</translation>
+<translation id="8057414620575339583">Párhuzamos keresés</translation>
 <translation id="8058655154417507695">Lejárat éve</translation>
 <translation id="8058986560951482265">Döcögős</translation>
 <translation id="8059417245945632445">&amp;Eszközök vizsgálata</translation>
@@ -6818,6 +6825,7 @@
 <translation id="8064279191081105977">„<ph name="GROUP_NAME" />” csoport – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Kapcsolódási párbeszédablak</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Rezgő visszajelzés</translation>
 <translation id="8071432093239591881">Nyomtatás képként</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Alkalmazásadat lehet minden olyan adat, amelyet valamelyik alkalmazás elmentett (a fejlesztői beállítások alapján), beleértve például a névjegyeket, az üzeneteket és a fotókat.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />A biztonsági másolat adatai nem számítanak bele gyermeke Drive-tárhelykvótájába.<ph name="END_PARAGRAPH2" />
@@ -6855,6 +6863,7 @@
 <translation id="81020759409809034">Letöltés helye ezen az eszközön</translation>
 <translation id="8102139037507939978">Személyazonosításra alkalmas adatok eltávolítása a system_logs.txt fájlból.</translation>
 <translation id="8104088837833760645">eSIM-profil letöltése</translation>
+<translation id="8105368624971345109">Kikapcsolás</translation>
 <translation id="8107015733319732394">Folyamatban van a Google Play Áruház telepítése a(z) <ph name="DEVICE_TYPE" /> eszközre. Ez eltarthat néhány percig.</translation>
 <translation id="810728361871746125">Képernyőfelbontás</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nem találhatók harmadik féltől származó cookie-k}=1{1 harmadik féltől származó cookie letiltva}other{# harmadik féltől származó cookie letiltva}}</translation>
@@ -7229,6 +7238,7 @@
 <translation id="8528074251912154910">Nyelvek hozzáadása</translation>
 <translation id="8528962588711550376">Bejelentkezés.</translation>
 <translation id="8529925957403338845">Az azonnali internetmegosztás sikertelen volt</translation>
+<translation id="8531701051932785007">A „Biztonságos Böngészés fokozott védelemmel” funkció ki van kapcsolva.</translation>
 <translation id="8534656636775144800">Hoppá! Hiba történt a domainhez való csatlakozás közben. Próbálja újra.</translation>
 <translation id="8535005006684281994">Netscape tanúsítvány - megújítási URL</translation>
 <translation id="8536956381488731905">Hangjelzés gombnyomásra</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 473a9af5..12520719 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Լինուքսի վերականգնումն ընթացքի մեջ է</translation>
 <translation id="1244303850296295656">Ընդլայնման սխալ</translation>
 <translation id="1246863218384630739">Չհաջողվեց տեղադրել «<ph name="VM_NAME" />» վիրտուալ մեքենան․ պատկերի URL-ը վերադարձրել է <ph name="HTTP_ERROR" /> սխալի կոդը։ Դիմեք ձեր ադմինիստրատորին։</translation>
-<translation id="1247071602516579380">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով պլանշետ</translation>
 <translation id="1251366534849411931">Պակասում է բացող ձևավոր փակագիծ՝ <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Կայքերի և տեղադրված հավելվածների կողմից պահված <ph name="TOTAL_USAGE" /> ծավալով տվյալները կջնջվեն։</translation>
 <translation id="1251578593170406502">Բջջային ինտերնետի ցանցերի որոնում…</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> ընտրված</translation>
 <translation id="1442851588227551435">Կարգավորել ակտիվ Kerberos տոմս</translation>
 <translation id="1444628761356461360">Այս կարգավորումը կառավարվում է սարքի սեփականատիրոջ կողմից՝ <ph name="OWNER_EMAIL" />:</translation>
-<translation id="1445005312224723356">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով հեռախոս</translation>
 <translation id="144518587530125858">Չհաջողվեց բեռնել «<ph name="IMAGE_PATH" />»-ը թեմայի համար:</translation>
 <translation id="1449191289887455076">Նշանակումը հաստատելու և <ph name="RESPONSE" /> համար նորից սեղմեք «<ph name="CURRENTKEY" />»։</translation>
 <translation id="1451375123200651445">Վեբէջ, մեկ ֆայլ</translation>
@@ -863,7 +861,6 @@
 <translation id="1855079636134697549">Տեսախցիկը միացված է</translation>
 <translation id="1856715684130786728">Ավելացնել գրացուցակ…</translation>
 <translation id="1858585891038687145">Վստահել այս հավաստագրին ծրագրակազմ արտադրողների նույնականացման համար</translation>
-<translation id="1859787252990099899">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով անհայտ սարք</translation>
 <translation id="1861262398884155592">Այս պանակը դատարկ է</translation>
 <translation id="1862311223300693744">Ձեր համակարգչում տեղադրվա՞ծ է որևէ հատուկ VPN, պրոքսի, հրապատ կամ NAS ծրագրաշար։</translation>
 <translation id="1863182668524159459">Հաջորդական միացքներ չեն գտնվել</translation>
@@ -1238,7 +1235,6 @@
 <translation id="2242687258748107519">Ֆայլի տվյալներ</translation>
 <translation id="2246549592927364792">Ստանա՞լ պատկերների նկարագրությունները Google-ից</translation>
 <translation id="2247738527273549923">Սարքը կառավարվում է ձեր կազմակերպության կողմից</translation>
-<translation id="2249061317998743208">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով խաղային վահանակ</translation>
 <translation id="2249111429176737533">Բացել որպես ներդիրով պատուհան</translation>
 <translation id="2249605167705922988">օր. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Բացել համակարգի դիտակով</translation>
@@ -1996,7 +1992,6 @@
 <translation id="3007771295016901659">Կրկնօրինակել ներդիրը</translation>
 <translation id="3008232374986381779">Աշխատեցրեք Լինուքսի գործիքներ, խմբագրիչներ ու IDE-ներ ձեր <ph name="DEVICE_TYPE" />-ում։ <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Վերակայել թույլտվությունները</translation>
-<translation id="3008396025115884998">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով աուդիո սարք</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Գործող կանոնի համաձայն (աղբյուրը՝ <ph name="MANAGER" />)՝ դուք պետք է այսօր միանաք Wi-Fi-ին և ներբեռնեք թարմացումը կամ օգտվեք վճարովի կապից (կարող է գումար գանձվել)։}one{Գործող կանոնի համաձայն (աղբյուրը՝ <ph name="MANAGER" />)՝ դուք պետք է մինչև վերջնաժամկետը միանաք Wi-Fi-ին և ներբեռնեք թարմացումը կամ օգտվեք վճարովի կապից (կարող է գումար գանձվել)։}other{Գործող կանոնի համաձայն (աղբյուրը՝ <ph name="MANAGER" />)՝ դուք պետք է մինչև վերջնաժամկետը միանաք Wi-Fi-ին և ներբեռնեք թարմացումը կամ օգտվեք վճարովի կապից (կարող է գումար գանձվել)։}}</translation>
 <translation id="3009300415590184725">Չեղարկե՞լ տվյալների բջջային փոխանցման կարգավորումը:</translation>
 <translation id="3009779501245596802">Ցուցակավորված տվյալների շտեմարաններ</translation>
@@ -2302,7 +2297,6 @@
 <translation id="3348038390189153836">Հայտնաբերվել է արտաքին կրիչ</translation>
 <translation id="3348131053948466246">Առաջարկվում են զմայլիկներ։ Դիտելու համար սեղմեք վեր կամ վար սլաքով ստեղնը, իսկ ընտրելու համար՝ Enter։</translation>
 <translation id="3349933790966648062">Օգտագործված հիշողության ծավալ</translation>
-<translation id="3354972872297836698">Չհաջողվեց զուգակցվել «<ph name="DEVICE_NAME" />» սարքին։ Ընտրեք սարքը և նորից փորձեք։</translation>
 <translation id="3355936511340229503">Կապակցման սխալ</translation>
 <translation id="3356580349448036450">Ավարտված է</translation>
 <translation id="3359256513598016054">Վկայագրերի քաղաքականության սահմանափակումներ</translation>
@@ -2734,6 +2728,7 @@
 <translation id="3788331399335602504">այս ֆայլերը</translation>
 <translation id="3788401245189148511">Կարող է՝</translation>
 <translation id="3789841737615482174">Տեղադրել</translation>
+<translation id="3790417903123637354">Սխալ առաջացավ: Փորձեք ավելի ուշ։</translation>
 <translation id="379082410132524484">Քարտի գործողության ժամկետը սպառվել է</translation>
 <translation id="3792890930871100565">Ապակապակցել տպիչները</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome-ը ձեր համակարգչում վնասաբեր ծրագրեր չի հայտնաբերել • Ստուգվել է 1 օր առաջ}one{Chrome-ը ձեր համակարգչում վնասաբեր ծրագրեր չի հայտնաբերել • Ստուգվել է {NUM_DAYS} օր առաջ}other{Chrome-ը ձեր համակարգչում վնասաբեր ծրագրեր չի հայտնաբերել • Ստուգվել է {NUM_DAYS} օր առաջ}}</translation>
@@ -3133,7 +3128,6 @@
 <translation id="4200689466366162458">Հատուկ բառեր</translation>
 <translation id="4200983522494130825">Նոր &amp;ներդիր</translation>
 <translation id="4201546031411513170">Ցանկացած ժամանակ կարող եք անցնել կարգավորումներ և ընտրել, թե ինչն եք ուզում համաժամացնել:</translation>
-<translation id="4202417625268941299">Բարելավված Ապահով դիտարկման շնորհիվ դուք կունենաք ամենաուժեղ պաշտպանությունը Chrome-ում</translation>
 <translation id="420283545744377356">Անջատել էկրանապահը</translation>
 <translation id="4206144641569145248">Այլմոլորակային</translation>
 <translation id="4206323443866416204">Կարծիք հայտնել</translation>
@@ -3639,7 +3633,6 @@
 <translation id="4759238208242260848">Ներբեռնումներ</translation>
 <translation id="4761104368405085019">Օգտագործել խոսափողը</translation>
 <translation id="4762718786438001384">Սարքի սկավառակում տարածքը ծայրահեղ քիչ է</translation>
-<translation id="4762898026821161650">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով համակարգիչ</translation>
 <translation id="4763408175235639573">Այս էջը դիտելիս տեղակայվել են հետևյալ քուքիները</translation>
 <translation id="4765582662863429759">Թույլ է տալիս Android Messages հավելվածին հեռարձակել ձեր հեռախոսի հաղորդագրությունները Chromebook-ին</translation>
 <translation id="4768332406694066911">Դուք այս կազմակերպություններից այնպիսի հավաստագրեր ունեք, որոնք ձեզ կարող են նույնականացնել</translation>
@@ -5822,7 +5815,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Անվտանգության ստուգումն արվել է 1 րոպե առաջ}one{Անվտանգության ստուգումն արվել է {NUM_MINS} րոպե առաջ}other{Անվտանգության ստուգումն արվել է {NUM_MINS} րոպե առաջ}}</translation>
 <translation id="7057767408836081338">Չհաջողվեց ստանալ հավելվածի տվյալները։ Դեռ փորձում ենք գործարկել հավելվածը...</translation>
 <translation id="7058024590501568315">Թաքցված ցանց</translation>
-<translation id="70582545822664495">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով մկնիկ</translation>
 <translation id="7059858479264779982">Միացնել ինքնագործարկումը</translation>
 <translation id="7062222374113411376">Թույլատրել վերջերս փակված կայքերին ավարտել տվյալների ուղարկումն ու ստացումը (խորհուրդ է տրվում)</translation>
 <translation id="7063129466199351735">Դյուրանցումները մշակվում են…</translation>
@@ -5986,7 +5978,6 @@
 <translation id="7257173066616499747">Wi-Fi ցանցեր</translation>
 <translation id="725758059478686223">Տպման ծառայություն</translation>
 <translation id="7257666756905341374">Դիտել տվյալները, որոնք դուք պատճենում և տեղադրում եք</translation>
-<translation id="7258006747130724016">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով տեսախցիկ</translation>
 <translation id="7258192266780953209">Փոխակերպումներ</translation>
 <translation id="7258225044283673131">Հավելվածը չի արձագանքում: Ընտրեք «Ստիպողաբար փակել» տարբերակը:</translation>
 <translation id="7262004276116528033">Մուտքի ծառայությունը տրամադրում է <ph name="SAML_DOMAIN" />-ը</translation>
@@ -6780,7 +6771,6 @@
 <translation id="8037117027592400564">Տեքստի ընթերցում սինթեզված խոսքի միջոցով</translation>
 <translation id="8037357227543935929">Հարցնել (կանխադրված)</translation>
 <translation id="803771048473350947">Ֆայլ</translation>
-<translation id="8038399858950372766">Սարք <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, «<ph name="DEVICE_NAME" />» անվանումով ստեղնաշար</translation>
 <translation id="8041089156583427627">Կարծիք հայտնել</translation>
 <translation id="8042142357103597104">Տեքստի թափանցիկությունը</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> հավելվածը չի արձագանքում</translation>
@@ -6856,6 +6846,7 @@
 <translation id="81020759409809034">Սարքում</translation>
 <translation id="8102139037507939978">Հեռացնել անձը նույնականացնող տեղեկությունները system_logs.txt ֆայլից։</translation>
 <translation id="8104088837833760645">Ներբեռնել eSIM պրոֆիլը</translation>
+<translation id="8105368624971345109">Անջատել</translation>
 <translation id="8107015733319732394">Google Play Խանութը տեղադրվում է <ph name="DEVICE_TYPE" /> սարքում։ Սա կարող է մի քանի րոպե տևել։</translation>
 <translation id="810728361871746125">Էկրանի լուծաչափ</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Երրորդ կողմի քուքիներ չկան}=1{Երրորդ կողմի 1 քուքի արգելափակված է}one{Երրորդ կողմի # քուքի արգելափակված է}other{Երրորդ կողմի # քուքի արգելափակված է}}</translation>
@@ -6920,7 +6911,6 @@
 <translation id="8168071266284693455">Ձեր էջանիշները, գաղտնաբառերը, պատմությունը և մյուս կարգավորումները ձեր բոլոր սարքերում համաժամացված են</translation>
 <translation id="8168435359814927499">Բովանդակություն</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Ավելացնել ներդիր ընթերցանության ցանկում}one{Ավելացնել ներդիրներ ընթերցանության ցանկում}other{Ավելացնել ներդիրներ ընթերցանության ցանկում}}</translation>
-<translation id="8169849063724750395">Միացնել</translation>
 <translation id="8171334254070436367">Թաքցնել բոլոր քարտերը</translation>
 <translation id="8174047975335711832">Սարքի մասին տեղեկություններ</translation>
 <translation id="8174876712881364124">Կրկնօրինակ Google Drive-ում։ Արագ վերականգնեք տվյալները կամ տեղափոխեք այլ սարք: Կրկնօրինակները ներառում են հավելվածների տվյալները։ Կրկնօրինակները վերբեռնվում են Google և գաղտնագրվում ձեր երեխայի Google հաշվի գաղտնաբառի միջոցով։ <ph name="BEGIN_LINK1" />Իմանալ ավելին<ph name="END_LINK1" /></translation>
@@ -6994,7 +6984,6 @@
 <translation id="8249615410597138718">Ուղարկել սարքերին</translation>
 <translation id="8249672078237421304">Առաջարկել թարգմանել էջերը, որոնք ձեր իմացած լեզուներով չեն</translation>
 <translation id="8251441930213048644">Թարմացնել հիմա</translation>
-<translation id="8251509999076836464">Զուգակցում «<ph name="DEVICE_NAME" />» սարքի հետ</translation>
 <translation id="8251578425305135684">Մանրապատկերը հեռացվել է:</translation>
 <translation id="825238165904109940">Միշտ ցույց տալ ամբողջական URL-ները</translation>
 <translation id="8252569384384439529">Վերբեռնում...</translation>
@@ -7236,7 +7225,6 @@
 <translation id="8534656636775144800">Տիրույթին միանալիս սխալ առաջացավ: Նորից փորձեք:</translation>
 <translation id="8535005006684281994">Netscape-ի վկայագրի նորացման URL</translation>
 <translation id="8536956381488731905">Ձայնը սեղմման ժամանակ</translation>
-<translation id="8538718737588735385">Միացնել</translation>
 <translation id="8539727552378197395">Ոչ (HttpOnly)</translation>
 <translation id="8539766201049804895">Նորացնել</translation>
 <translation id="8540136935098276800">Մուտքագրեք ճիշտ ձևաչափի URL</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index ffbd33a..bd2e5d3 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">file berikut</translation>
 <translation id="3788401245189148511">Aplikasi/ekstensi dapat:</translation>
 <translation id="3789841737615482174">Instal</translation>
+<translation id="3790417903123637354">Terjadi masalah. Coba lagi nanti</translation>
 <translation id="379082410132524484">Kartu Anda telah habis masa berlakunya</translation>
 <translation id="3792890930871100565">Lepaskan sambungan printer</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome tidak menemukan software berbahaya di komputer Anda • Diperiksa 1 hari yang lalu}other{Chrome tidak menemukan software berbahaya di komputer Anda • Diperiksa {NUM_DAYS} hari yang lalu}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ingin terhubung ke port serial</translation>
 <translation id="4944310289250773232">Layanan autentikasi ini dihosting oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Untuk menyiapkan sidik jari, minta anak Anda menyentuh tombol daya. Data sidik jari anak Anda disimpan dengan aman dan hanya ada di <ph name="DEVICE_TYPE" /> ini.</translation>
+<translation id="4946459324029651239">Anda mendapatkan perlindungan standar</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{1 file}other{# file}}</translation>
 <translation id="495170559598752135">Tindakan</translation>
 <translation id="4953808748584563296">Avatar oranye default</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">Terjadi masalah dengan permintaan pendaftaran demo.</translation>
 <translation id="557722062034137776">Peresetan perangkat Anda tidak akan memengaruhi akun Google Anda atau data yang disinkronkan ke akun ini. Namun, semua file yang disimpan secara lokal pada perangkat Anda akan terhapus.</translation>
 <translation id="5578059481725149024">Login otomatis</translation>
+<translation id="5581134892342029705">Terjemahan ke <ph name="LANGUAGE" /> selesai</translation>
 <translation id="558170650521898289">Microsoft Windows Hardware Driver Verification</translation>
 <translation id="5581972110672966454">Tidak dapat menggabungkan perangkat ke domain. Coba lagi atau hubungi pemilik atau administrator perangkat Anda. Kode error: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menu utama</translation>
@@ -6806,6 +6809,7 @@
 <translation id="8054563304616131773">Masukkan alamat email yang valid</translation>
 <translation id="8054883179223321715">Tersedia untuk situs video tertentu</translation>
 <translation id="8054921503121346576">Keyboard USB terhubung</translation>
+<translation id="8057414620575339583">Kotak Penelusuran Samping</translation>
 <translation id="8058655154417507695">Tahun akhir masa berlaku</translation>
 <translation id="8058986560951482265">Tersendat-sendat</translation>
 <translation id="8059417245945632445">&amp;Periksa perangkat</translation>
@@ -6857,6 +6861,7 @@
 <translation id="81020759409809034">Lokasi Lokal</translation>
 <translation id="8102139037507939978">Hapus Informasi Identitas Pribadi dari system_logs.txt.</translation>
 <translation id="8104088837833760645">Download profil eSIM</translation>
+<translation id="8105368624971345109">Nonaktifkan</translation>
 <translation id="8107015733319732394">Menginstal Google Play Store di <ph name="DEVICE_TYPE" />. Tindakan ini dapat memakan waktu beberapa menit.</translation>
 <translation id="810728361871746125">Resolusi layar</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Tidak ada cookie pihak ketiga}=1{1 cookie pihak ketiga diblokir}other{# cookie pihak ketiga diblokir}}</translation>
@@ -7231,6 +7236,7 @@
 <translation id="8528074251912154910">Tambahkan bahasa</translation>
 <translation id="8528962588711550376">Login.</translation>
 <translation id="8529925957403338845">Koneksi Tethering Instan gagal</translation>
+<translation id="8531701051932785007">Safe Browsing yang Disempurnakan nonaktif</translation>
 <translation id="8534656636775144800">Maaf.  Terjadi masalah saat mencoba bergabung dengan domain. Harap coba lagi.</translation>
 <translation id="8535005006684281994">Netscape Certificate Renewal URL</translation>
 <translation id="8536956381488731905">Suara saat tombol ditekan</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index d73946bb..43c6ff8 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">þessar skrár</translation>
 <translation id="3788401245189148511">Þetta kann að:</translation>
 <translation id="3789841737615482174">Setja upp</translation>
+<translation id="3790417903123637354">Eitthvað fór úrskeiðis. Reyndu aftur síðar</translation>
 <translation id="379082410132524484">Kortið þitt er útrunnið</translation>
 <translation id="3792890930871100565">Aftengja prentara</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome fann engan skaðlegan hugbúnað í tölvunni þinni • Athugað fyrir 1 degi}one{Chrome fann engan skaðlegan hugbúnað í tölvunni þinni • Athugað fyrir {NUM_DAYS} degi}other{Chrome fann engan skaðlegan hugbúnað í tölvunni þinni • Athugað fyrir {NUM_DAYS} dögum}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ vill tengjast við raðtengi</translation>
 <translation id="4944310289250773232">Þessi auðkenningarþjónusta er hýst af <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Láttu barnið snerta aflrofann til að setja upp fingrafar. Fingrafaragögn barnsins eru í öruggri geymslu og fara aldrei út fyrir þetta <ph name="DEVICE_TYPE" /> tæki.</translation>
+<translation id="4946459324029651239">Þú nýtur hefðbundinnar varnar</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{skrá}one{# skrá}other{# skrár}}</translation>
 <translation id="495170559598752135">Aðgerðir</translation>
 <translation id="4953808748584563296">Sjálfgefin appelsínugul notandamynd</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">Vandamál með skráningarbeiðni fyrir prufustillingu kom upp</translation>
 <translation id="557722062034137776">Endurstilling tækisins hefur engin áhrif á Google reikningana þína eða gögn sem samstillt hafa verið við reikningana. Öllum skrám sem vistaðar hafa verið í tækinu verður hins vegar eytt.</translation>
 <translation id="5578059481725149024">Sjálfvirk innskráning</translation>
+<translation id="5581134892342029705">Þýðingu yfir á <ph name="LANGUAGE" /> er lokið</translation>
 <translation id="558170650521898289">Staðfesting Microsoft Windows vélbúnaðarrekla</translation>
 <translation id="5581972110672966454">Ekki er hægt að tengja tækið við lén. Reyndu aftur eða hafðu samband við eiganda tækisins þíns eða kerfisstjóra. Villukóði: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Aðalvalmynd</translation>
@@ -6805,6 +6808,7 @@
 <translation id="8054563304616131773">Sláðu inn gilt netfang</translation>
 <translation id="8054883179223321715">Í boði fyrir tiltekin vídeóvefsvæði</translation>
 <translation id="8054921503121346576">USB-lyklaborð tengt</translation>
+<translation id="8057414620575339583">Hliðarleit</translation>
 <translation id="8058655154417507695">Gildir til ársins</translation>
 <translation id="8058986560951482265">Höktir</translation>
 <translation id="8059417245945632445">Kanna tæk&amp;i</translation>
@@ -6856,6 +6860,7 @@
 <translation id="81020759409809034">Staðsetning staðar</translation>
 <translation id="8102139037507939978">Fjarlægja persónugreinanlegar upplýsingar úr system_logs.txt.</translation>
 <translation id="8104088837833760645">Sækja eSIM-prófíl</translation>
+<translation id="8105368624971345109">Slökkva</translation>
 <translation id="8107015733319732394">Setur Google Play Store upp á <ph name="DEVICE_TYPE" />. Þetta gæti tekið nokkrar mínútur.</translation>
 <translation id="810728361871746125">Skjáupplausn</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Engin fótspor frá þriðju aðilum}=1{Lokað á eitt fótspor frá þriðja aðila}one{Lokað er á # fótspor frá þriðju aðilum}other{Lokað er á # fótspor frá þriðju aðilum}}</translation>
@@ -7230,6 +7235,7 @@
 <translation id="8528074251912154910">Bæta við tungumálum</translation>
 <translation id="8528962588711550376">Skráir inn.</translation>
 <translation id="8529925957403338845">Tenging skynditjóðrunar mistókst</translation>
+<translation id="8531701051932785007">Slökkt er á enn öruggari vefskoðun</translation>
 <translation id="8534656636775144800">Úbbs! Eitthvað fór úrskeiðis við að tengjast léninu. Reyndu aftur.</translation>
 <translation id="8535005006684281994">Endurnýjunarvefslóð Netscape-vottorðs</translation>
 <translation id="8536956381488731905">Takkahljóð</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index ef5e170a..c3b52efc 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -251,7 +251,6 @@
 <translation id="1244265436519979884">È in corso il ripristino di Linux</translation>
 <translation id="1244303850296295656">Errore delle estensioni</translation>
 <translation id="1246863218384630739">Impossibile installare <ph name="VM_NAME" />: l'URL dell'immagine ha restituito un codice di errore <ph name="HTTP_ERROR" />. Contatta l'amministratore.</translation>
-<translation id="1247071602516579380">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, tablet chiamato <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Parentesi graffa aperta prevista: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Verranno cancellati <ph name="TOTAL_USAGE" /> di dati memorizzati da siti e app installate</translation>
 <translation id="1251578593170406502">Ricerca di reti di dati mobili in corso…</translation>
@@ -438,7 +437,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> selezionati</translation>
 <translation id="1442851588227551435">Impostare richiesta di Kerberos attiva</translation>
 <translation id="1444628761356461360">Questa impostazione è controllata dal proprietario del dispositivo, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, telefono chiamato <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Impossibile caricare "<ph name="IMAGE_PATH" />" per il tema.</translation>
 <translation id="1449191289887455076">Premi di nuovo "<ph name="CURRENTKEY" />" per confermare l'assegnazione e <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Pagina web, singolo file</translation>
@@ -862,7 +860,6 @@
 <translation id="1855079636134697549">La fotocamera è attivata</translation>
 <translation id="1856715684130786728">Aggiungi posizione...</translation>
 <translation id="1858585891038687145">Considera attendibile questo certificato per l'identificazione dei creatori di software</translation>
-<translation id="1859787252990099899">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, dispositivo sconosciuto chiamato <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Questa cartella è vuota</translation>
 <translation id="1862311223300693744">Hai installato VPN, proxy, firewall o software NAS particolari?</translation>
 <translation id="1863182668524159459">Nessuna porta seriale trovata</translation>
@@ -1237,7 +1234,6 @@
 <translation id="2242687258748107519">Info sul file</translation>
 <translation id="2246549592927364792">Vuoi recuperare le descrizioni delle immagini da Google?</translation>
 <translation id="2247738527273549923">Il dispositivo è gestito dalla tua organizzazione</translation>
-<translation id="2249061317998743208">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, controller di gioco chiamato <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Apri come finestra a schede</translation>
 <translation id="2249605167705922988">ad es. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Apri con visualizzatore di sistema</translation>
@@ -1996,7 +1992,6 @@
 <translation id="3007771295016901659">Duplica scheda</translation>
 <translation id="3008232374986381779">Esegui strumenti, editor e IDE di Linux sul dispositivo <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Reimposta le autorizzazioni</translation>
-<translation id="3008396025115884998">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, dispositivo audio chiamato <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> richiede la connessione a una rete Wi-Fi per scaricare un aggiornamento oggi stesso. In alternativa, puoi eseguire il download tramite una connessione a consumo (potrebbero essere applicati costi).}one{<ph name="MANAGER" /> richiede la connessione a una rete Wi-Fi per scaricare un aggiornamento prima della scadenza. In alternativa, puoi eseguire il download tramite una connessione a consumo (potrebbero essere applicati costi).}other{<ph name="MANAGER" /> richiede la connessione a una rete Wi-Fi per scaricare un aggiornamento prima della scadenza. In alternativa, puoi eseguire il download tramite una connessione a consumo (potrebbero essere applicati costi).}}</translation>
 <translation id="3009300415590184725">Annullare la procedura di configurazione del servizio dati mobile?</translation>
 <translation id="3009779501245596802">Indexed databases</translation>
@@ -2302,7 +2297,6 @@
 <translation id="3348038390189153836">Dispositivo rimovibile rilevato</translation>
 <translation id="3348131053948466246">Emoji suggerite. Premi la freccia Su o Giù per spostarti e Invio per inserire l'emoji desiderata.</translation>
 <translation id="3349933790966648062">Footprint di memoria</translation>
-<translation id="3354972872297836698">Impossibile eseguire l'accoppiamento con il dispositivo <ph name="DEVICE_NAME" />; seleziona il dispositivo per riprovare</translation>
 <translation id="3355936511340229503">Errore di connessione</translation>
 <translation id="3356580349448036450">Fine</translation>
 <translation id="3359256513598016054">Vincoli criteri certificati</translation>
@@ -2734,6 +2728,7 @@
 <translation id="3788331399335602504">questi file</translation>
 <translation id="3788401245189148511">Potrebbe:</translation>
 <translation id="3789841737615482174">Installa</translation>
+<translation id="3790417903123637354">Si è verificato un problema. Riprova più tardi.</translation>
 <translation id="379082410132524484">La tua carta è scaduta</translation>
 <translation id="3792890930871100565">Scollega stampanti</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome non ha rilevato software dannoso sul computer • Ultima verifica: 1 giorno fa}one{Chrome non ha rilevato software dannoso sul computer • Ultima verifica: {NUM_DAYS} giorni fa}other{Chrome non ha rilevato software dannoso sul computer • Ultima verifica: {NUM_DAYS} giorni fa}}</translation>
@@ -3133,7 +3128,6 @@
 <translation id="4200689466366162458">Parole del dizionario personale</translation>
 <translation id="4200983522494130825">Nuova &amp;scheda</translation>
 <translation id="4201546031411513170">Puoi scegliere in qualsiasi momento i dati da sincronizzare nelle impostazioni.</translation>
-<translation id="4202417625268941299">Con Navigazione sicura avanzata, otterrai la sicurezza più efficace di Chrome</translation>
 <translation id="420283545744377356">Disattiva salvaschermo</translation>
 <translation id="4206144641569145248">Alieno</translation>
 <translation id="4206323443866416204">Report di feedback</translation>
@@ -3639,7 +3633,6 @@
 <translation id="4759238208242260848">Download</translation>
 <translation id="4761104368405085019">Utilizzare il microfono</translation>
 <translation id="4762718786438001384">Lo spazio sul disco del dispositivo sta per esaurirsi</translation>
-<translation id="4762898026821161650">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, computer chiamato <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Durante la visualizzazione della pagina sono stati impostati i seguenti cookie</translation>
 <translation id="4765582662863429759">Consenti ad Android Messaggi di trasmettere gli SMS dal telefono al Chromebook</translation>
 <translation id="4768332406694066911">Hai certificati da queste organizzazioni che ti identificano</translation>
@@ -5819,7 +5812,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Il controllo di sicurezza è stato eseguito 1 minuto fa}one{Il controllo di sicurezza è stato eseguito {NUM_MINS} minuti fa}other{Il controllo di sicurezza è stato eseguito {NUM_MINS} minuti fa}}</translation>
 <translation id="7057767408836081338">Impossibile recuperare i dati dell'app, tentativo di esecuzione dell'app comunque in corso…</translation>
 <translation id="7058024590501568315">Rete nascosta</translation>
-<translation id="70582545822664495">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, mouse chiamato <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Imposta avvio automatico</translation>
 <translation id="7062222374113411376">Consenti ai siti chiusi di recente di terminare l'invio e la ricezione di dati (opzione consigliata)</translation>
 <translation id="7063129466199351735">Elaborazione delle scorciatoie...</translation>
@@ -5983,7 +5975,6 @@
 <translation id="7257173066616499747">Reti Wi-Fi</translation>
 <translation id="725758059478686223">Servizio di stampa</translation>
 <translation id="7257666756905341374">Lettura dei dati copiati e incollati</translation>
-<translation id="7258006747130724016">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, videocamera chiamata <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Trasformazioni</translation>
 <translation id="7258225044283673131">L'applicazione non risponde. Seleziona "Termina" per chiudere l'app.</translation>
 <translation id="7262004276116528033">Questo servizio di accesso è in hosting su <ph name="SAML_DOMAIN" /></translation>
@@ -6780,7 +6771,6 @@
 <translation id="8037117027592400564">Lettura di tutto il testo pronunciato utilizzando la sintesi vocale</translation>
 <translation id="8037357227543935929">Chiedi (predefinita)</translation>
 <translation id="803771048473350947">Archivio</translation>
-<translation id="8038399858950372766">Dispositivo <ph name="DEVICE_INDEX" /> di <ph name="DEVICE_COUNT" />, tastiera chiamata <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Invia feedback</translation>
 <translation id="8042142357103597104">Opacità testo</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> non risponde.</translation>
@@ -6856,6 +6846,7 @@
 <translation id="81020759409809034">Percorso locale</translation>
 <translation id="8102139037507939978">Rimuovi le informazioni che consentono l'identificazione personale dal file system_logs.txt.</translation>
 <translation id="8104088837833760645">Scarica profilo eSIM</translation>
+<translation id="8105368624971345109">Disattiva</translation>
 <translation id="8107015733319732394">Installazione in corso del Google Play Store sul tuo dispositivo <ph name="DEVICE_TYPE" />. L'operazione potrebbe richiedere alcuni minuti.</translation>
 <translation id="810728361871746125">Risoluzione del display</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nessun cookie di terze parti}=1{È stato bloccato 1 cookie di terze parti}one{Sono stati bloccati # cookie di terze parti}other{Sono stati bloccati # cookie di terze parti}}</translation>
@@ -6920,7 +6911,6 @@
 <translation id="8168071266284693455">I preferiti, le password, la cronologia e altri dati vengono sincronizzati su tutti i tuoi dispositivi</translation>
 <translation id="8168435359814927499">Contenuti</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Aggiungi scheda all'elenco di lettura}one{Aggiungi schede all'elenco di lettura}other{Aggiungi schede all'elenco di lettura}}</translation>
-<translation id="8169849063724750395">Riattiva</translation>
 <translation id="8171334254070436367">Nascondi tutte le schede</translation>
 <translation id="8174047975335711832">Informazioni del dispositivo</translation>
 <translation id="8174876712881364124">Effettua il backup su Google Drive. Ripristina i dati o cambia facilmente dispositivo in qualsiasi momento. Il backup include i dati delle app. Le copie di backup vengono caricate su Google e criptate mediante la password del tuo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation>
@@ -6994,7 +6984,6 @@
 <translation id="8249615410597138718">Invia ai tuoi dispositivi</translation>
 <translation id="8249672078237421304">Consenti di tradurre pagine in lingue che non conosci</translation>
 <translation id="8251441930213048644">Aggiorna ora</translation>
-<translation id="8251509999076836464">Accoppiamento con <ph name="DEVICE_NAME" /> in corso…</translation>
 <translation id="8251578425305135684">Miniatura rimossa.</translation>
 <translation id="825238165904109940">Mostra sempre URL completi</translation>
 <translation id="8252569384384439529">Caricamento...</translation>
@@ -7236,7 +7225,6 @@
 <translation id="8534656636775144800">Spiacenti. Si è verificato un problema durante il tentativo di aggiunta al dominio. Riprova.</translation>
 <translation id="8535005006684281994">URL di rinnovo certificato Netscape</translation>
 <translation id="8536956381488731905">Suono tasti</translation>
-<translation id="8538718737588735385">Riattiva</translation>
 <translation id="8539727552378197395">No (solo Http)</translation>
 <translation id="8539766201049804895">Esegui l'upgrade</translation>
 <translation id="8540136935098276800">Inserisci un URL nel formato corretto</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index 4bcb3614..19034076 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">הקבצים האלה</translation>
 <translation id="3788401245189148511">מעוניינים:</translation>
 <translation id="3789841737615482174">התקנה</translation>
+<translation id="3790417903123637354">משהו השתבש. יש לנסות שוב בהמשך</translation>
 <translation id="379082410132524484">תוקף הכרטיס שלך פג</translation>
 <translation id="3792890930871100565">ניתוק מדפסות</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{‏Chrome לא מצא תוכנות מזיקות במחשב שלך • הבדיקה בוצעה לפני יום אחד}two{‏Chrome לא מצא תוכנות מזיקות במחשב שלך • הבדיקה בוצעה לפני יומיים ({NUM_DAYS})}many{‏Chrome לא מצא תוכנות מזיקות במחשב שלך • הבדיקה בוצעה לפני {NUM_DAYS} ימים}other{‏Chrome לא מצא תוכנות מזיקות במחשב שלך • הבדיקה בוצעה לפני {NUM_DAYS} ימים}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" רוצה להתחבר אל יציאה טורית</translation>
 <translation id="4944310289250773232">שירות האימות הזה מתארח בדומיין <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">כדי להגדיר טביעת אצבע, על הילד או הילדה לגעת בלחצן ההפעלה. נתוני טביעות האצבע של הילד או הילדה מאוחסנים באופן מאובטח ואף פעם לא נשלחים מה-<ph name="DEVICE_TYPE" /> הזה.</translation>
+<translation id="4946459324029651239">יש לך רמת הגנה רגילה</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{קובץ}two{# קבצים}many{# קבצים}other{# קבצים}}</translation>
 <translation id="495170559598752135">פעולות</translation>
 <translation id="4953808748584563296">דמות ברירת מחדל כתומה</translation>
@@ -3844,7 +3846,7 @@
 <translation id="4966972803217407697">עברת למצב אנונימי</translation>
 <translation id="496888482094675990">‏היישום Files מספק גישה מהירה לקבצים ששמרת ב-Google Drive, באחסון חיצוני או במכשיר שלך עם מערכת הפעלה של Chrome.</translation>
 <translation id="4971412780836297815">פתיחה בסיום ההורדה</translation>
-<translation id="4971735654804503942">‏הגנה פרואקטיבית ומהירה יותר מפני אתרים, הורדות ותוספים מסוכנים. המערכת מזהירה אותך בנוגע לחשיפה של סיסמאות. כשמצב ההגנה הזה בשימוש, נתוני גלישה נשלחים אל Google.</translation>
+<translation id="4971735654804503942">‏הגנה מהירה יותר ואקטיבית מפני אתרים, הורדות ותוספים מסוכנים. המערכת מזהירה אותך בנוגע לחשיפה של סיסמאות. כשמצב ההגנה הזה בשימוש, נתוני גלישה נשלחים אל Google.</translation>
 <translation id="4972129977812092092">עריכת מדפסת</translation>
 <translation id="4972164225939028131">סיסמה שגויה</translation>
 <translation id="4972737347717125191">אתרים יכולים לבקש הרשאה להשתמש בנתונים ובמכשירים של מציאות מדומה</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">התרחשה בעיה הקשורה לבקשת הרשמה של הדגמה.</translation>
 <translation id="557722062034137776">‏איפוס של המכשיר לא ישפיע על חשבונות Google שלך או על נתונים המסונכרנים לחשבונות אלה. אך כל הקבצים המאוחסנים במכשיר באופן מקומי יימחקו.</translation>
 <translation id="5578059481725149024">כניסה אוטומטית</translation>
+<translation id="5581134892342029705">התרגום ל<ph name="LANGUAGE" /> הושלם</translation>
 <translation id="558170650521898289">‏אימות מנהל התקן חומרה של Microsoft Windows </translation>
 <translation id="5581972110672966454">לא ניתן לצרף את המכשיר אל הדומיין. יש לנסות שוב, או לפנות לבעלים או למנהל של המכשיר. קוד שגיאה: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">תפריט ראשי</translation>
@@ -6805,6 +6808,7 @@
 <translation id="8054563304616131773">יש להזין כתובת אימייל חוקית</translation>
 <translation id="8054883179223321715">זמין עבור אתרי וידאו מסוימים</translation>
 <translation id="8054921503121346576">‏מקלדת USB מחוברת</translation>
+<translation id="8057414620575339583">חיפוש בצד הדף</translation>
 <translation id="8058655154417507695">שנת תפוגה</translation>
 <translation id="8058986560951482265">קופצני</translation>
 <translation id="8059417245945632445">&amp;בדיקת מכשירים</translation>
@@ -6858,6 +6862,7 @@
 <translation id="81020759409809034">מיקום מקומי</translation>
 <translation id="8102139037507939978">‏הסרה של פרטים אישיים מזהים מהקובץ system_logs.txt.</translation>
 <translation id="8104088837833760645">‏הורדת פרופיל eSIM</translation>
+<translation id="8105368624971345109">כיבוי</translation>
 <translation id="8107015733319732394">‏ההתקנה של חנות Google Play במכשיר <ph name="DEVICE_TYPE" /> מתבצעת. ייתכן שההתקנה תימשך כמה דקות.</translation>
 <translation id="810728361871746125">רזולוציית מסך</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{‏אין קובצי cookie של צד שלישי}=1{‏קובץ cookie אחד של צד שלישי נחסם}two{‏# קובצי cookie של צד שלישי נחסמו}many{‏# קובצי cookie של צד שלישי נחסמו}other{‏# קובצי cookie של צד שלישי נחסמו}}</translation>
@@ -7232,6 +7237,7 @@
 <translation id="8528074251912154910">הוספת שפות</translation>
 <translation id="8528962588711550376">תהליך הכניסה מתבצע.</translation>
 <translation id="8529925957403338845">יצירת החיבור לשיתוף אינטרנט מיידי בין ניידים נכשלה</translation>
+<translation id="8531701051932785007">הגרסה המשופרת של הגלישה הבטוחה מושבתת</translation>
 <translation id="8534656636775144800">אופס! משהו השתבש כשניסינו לצרף את הדומיין. יש לנסות שוב.</translation>
 <translation id="8535005006684281994">‏כתובת אתר לחידוש אישור Netscape</translation>
 <translation id="8536956381488731905">צלילים בהקשה</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 3f86298..639ce85 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -2500,6 +2500,7 @@
 <translation id="3557101512409028104">ファミリー リンクでウェブサイトの制限と利用時間の上限を設定します</translation>
 <translation id="3559262020195162408">ポリシーをデバイスにインストールできませんでした。</translation>
 <translation id="3559533181353831840">残り時間: 約 <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">画面の分割やデスクの切り替えなどの操作をバイブレーションで確認します。</translation>
 <translation id="3560034655160545939">スペルチェック(&amp;S)</translation>
 <translation id="3562423906127931518">この処理には数分かかることがあります。Linux コンテナを設定します。</translation>
 <translation id="3562655211539199254">スマートフォンで最近使った Chrome タブを表示します</translation>
@@ -2724,6 +2725,7 @@
 <translation id="3788331399335602504">これらのファイル</translation>
 <translation id="3788401245189148511">次の権限へのアクセス要求:</translation>
 <translation id="3789841737615482174">インストール</translation>
+<translation id="3790417903123637354">エラーが発生しました。しばらくしてからもう一度お試しください</translation>
 <translation id="379082410132524484">カードの有効期限が切れています</translation>
 <translation id="3792890930871100565">プリンタを切断</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{お使いのパソコンに有害なソフトウェアは見つかりませんでした • 前回の確認: 1 日前}other{お使いのパソコンに有害なソフトウェアは見つかりませんでした • 前回の確認: {NUM_DAYS} 日前}}</translation>
@@ -3804,6 +3806,7 @@
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」がシリアルポートへの接続を要求しています</translation>
 <translation id="4944310289250773232">この認証サービスは <ph name="SAML_DOMAIN" /> でホストされています</translation>
 <translation id="4945439665401275950">指紋を設定するには、お子様に電源ボタンをタップしてもらってください。お子様の指紋データはこの <ph name="DEVICE_TYPE" /> にのみ安全に保存されます。</translation>
+<translation id="4946459324029651239">標準保護機能が適用されます</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{ファイル}other{# 件のファイル}}</translation>
 <translation id="495170559598752135">操作</translation>
 <translation id="4953808748584563296">デフォルトのオレンジのアバター</translation>
@@ -4383,6 +4386,7 @@
 <translation id="5575528586625653441">デモ登録リクエストで問題が発生しました。</translation>
 <translation id="557722062034137776">デバイスをリセットしても、お使いの Google アカウントや、これらのアカウントに同期されているデータには影響しません。ただし、デバイス上でローカルに保存されているすべてのファイルは削除されます。</translation>
 <translation id="5578059481725149024">自動ログイン</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> への翻訳が完了しました</translation>
 <translation id="558170650521898289">Microsoft Windows ハードウェア ドライバの確認</translation>
 <translation id="5581972110672966454">デバイスをドメインに追加できません。もう一度お試しいただくか、デバイス所有者または管理者にお問い合わせください。エラーコード: <ph name="ERROR_CODE" />。</translation>
 <translation id="5582839680698949063">メインメニュー</translation>
@@ -4881,6 +4885,7 @@
 <translation id="6112931163620622315">スマートフォンを確認してください</translation>
 <translation id="6113434369102685411">Chrome ブラウザと <ph name="DEVICE_TYPE" /> ランチャーに既定の検索エンジンを設定します</translation>
 <translation id="6113942107547980621">Smart Lock を使用するには、お使いのスマートフォンでメインユーザーのプロフィールに切り替えます</translation>
+<translation id="611684075852771314">これらのログは [マイファイル] に次の名前で保存されています:</translation>
 <translation id="6116921718742659598">言語と入力の設定を変更</translation>
 <translation id="6119927814891883061">デバイス名を <ph name="DEVICE_NAME" /> に指定します</translation>
 <translation id="6120205520491252677">このページを起動画面に固定...</translation>
@@ -5655,6 +5660,7 @@
 <translation id="6930036377490597025">外部セキュリティ キーまたは内蔵センサー</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{1 個の拡張機能が拒否されました}other{# 個の拡張機能が拒否されました}}</translation>
 <translation id="6930321203306643451">アップグレードを完了</translation>
+<translation id="6931690462168617033">クリックの感度</translation>
 <translation id="6935286146439255109">用紙トレイが見つかりません</translation>
 <translation id="693807610556624488">「<ph name="DEVICE_NAME" />」での書き込み操作で属性の長さが上限を超えています。</translation>
 <translation id="6938386202199793006">保存済みのプリンタは 1 件です。</translation>
@@ -6783,6 +6789,7 @@
 <translation id="8064279191081105977">グループ <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">接続ダイアログ</translation>
 <translation id="8069615408251337349">Google クラウド プリント</translation>
+<translation id="8070662218171013510">触覚フィードバック</translation>
 <translation id="8071432093239591881">画像として印刷する</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />アプリのデータとは、(デベロッパーの設定に基づき)アプリで保存されたあらゆるデータを指します。これには連絡先、メッセージ、写真などのデータも含まれます。<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />バックアップ データは、お子様の Google ドライブの保存容量にはカウントされません。<ph name="END_PARAGRAPH2" />
@@ -6820,6 +6827,7 @@
 <translation id="81020759409809034">ローカルの場所</translation>
 <translation id="8102139037507939978">system_logs.txt から個人を特定できる情報を削除する。</translation>
 <translation id="8104088837833760645">eSIM プロファイルのダウンロード</translation>
+<translation id="8105368624971345109">オフにする</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> に Google Play ストアをインストールしています。この処理には数分かかる可能性があります。</translation>
 <translation id="810728361871746125">ディスプレイの解像度</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{サードパーティの Cookie はありません}=1{1 個のサードパーティ Cookie がブロックされています}other{# 個のサードパーティ Cookie がブロックされています}}</translation>
@@ -7194,6 +7202,7 @@
 <translation id="8528074251912154910">言語を追加</translation>
 <translation id="8528962588711550376">ログインしています。</translation>
 <translation id="8529925957403338845">インスタント テザリングの接続に失敗しました</translation>
+<translation id="8531701051932785007">セーフ ブラウジング保護強化機能はオフになっています</translation>
 <translation id="8534656636775144800">ドメインへの追加中に問題が発生しました。もう一度お試しください。</translation>
 <translation id="8535005006684281994">Netscape 証明書更新 URL</translation>
 <translation id="8536956381488731905">キー操作音</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index 1d7683eb..bd46777 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">ამჟამად მიმდინარეობს Linux აღდგენა</translation>
 <translation id="1244303850296295656">გაფართოების შეცდომა</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" />-ის ინსტალაცია ვერ მოხერხდა: სურათის URL-მა დააბრუნა შეცდომის კოდი <ph name="HTTP_ERROR" />. მიმართეთ თქვენს ადმინისტრატორს.</translation>
-<translation id="1247071602516579380">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, ტაბლეტი სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">მოსალოდნელი იყო გამხსნელი ფიგურული ფრჩხილი: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">ამ მოქმედებით გასუფთავდება საიტებისა და დაინსტალირებული აპების მიერ შენახული მონაცემების <ph name="TOTAL_USAGE" /></translation>
 <translation id="1251578593170406502">მიმდინარეობს მობილური ინტერნეტის ქსელების სკანირება...</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837">არჩეულია <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">აქტიური Kerberos ბილეთის დაყენება</translation>
 <translation id="1444628761356461360">ამ პარამეტრს მართავს აპარატის მფლობელი. <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, ტელეფონი სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">ვერ მოხერხდა „<ph name="IMAGE_PATH" />“ ის დეკორაციისთვის ჩამოტვირთვა.</translation>
 <translation id="1449191289887455076">მიმაგრების დადასტურება და <ph name="RESPONSE" /> რომ შესრულდეს, ხელახლა დააჭირეთ „<ph name="CURRENTKEY" />“-ს</translation>
 <translation id="1451375123200651445">ვებგვერდი, ერთი ფაილი</translation>
@@ -861,7 +859,6 @@
 <translation id="1855079636134697549">კამერა ჩართულია</translation>
 <translation id="1856715684130786728">დაამატეთ ადგილმდებარეობა…</translation>
 <translation id="1858585891038687145">ამ სერტიფიკატისთვის პროგრამული უზრუნველყოფის შემქმნელების ამოცნობის მინდობა</translation>
-<translation id="1859787252990099899">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, უცნობი მოწყობილობა სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">ეს საქაღალდე ცარიელია</translation>
 <translation id="1862311223300693744">გაქვთ თუ არა დაინსტალირებული სპეციალური პროგრამული უზრუნველყოფა VPN-ისთვის, პროქსისთვის, ქსელის დაცვისთვის ან NAS-ისთვის?</translation>
 <translation id="1863182668524159459">თანმიმდევრული პორტები ვერ მოიძებნა</translation>
@@ -1236,7 +1233,6 @@
 <translation id="2242687258748107519">ფაილის ინფორმაცია</translation>
 <translation id="2246549592927364792">გსურთ სურათების აღწერილობების მიღება Google-ისგან?</translation>
 <translation id="2247738527273549923">თქვენს მოწყობილობას მართავს თქვენი ორგანიზაცია</translation>
-<translation id="2249061317998743208">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, სათამაშო კონტროლერი სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">ფანჯრის გახსნა ჩანართებიან რეჟიმში</translation>
 <translation id="2249605167705922988">მაგ., 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">გახსნა სისტემის მაჩვენებლით</translation>
@@ -1995,7 +1991,6 @@
 <translation id="3007771295016901659">ჩანართის დუბლიკატის შექმნა</translation>
 <translation id="3008232374986381779">თქვენს <ph name="DEVICE_TYPE" />-ზე Linux-ის ხელსაწყოების, რედაქტორებისა და IDE-ების გაშვება. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">ნებართვების გადაყენება</translation>
-<translation id="3008396025115884998">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, აუდიომოწყობილობა სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> დღესვე ითხოვს Wi-Fi ქსელთან დაკავშირებას და განახლების ჩამოტვირთვას. სურვილისამებრ, ჩამოტვირთვა შეგიძლიათ ლიმიტირებული კავშირით (შეიძლება დაკავშირებული იყოს ხარჯებთან).}other{<ph name="MANAGER" /> ითხოვს Wi-Fi ქსელთან ბოლო ვადამდე დაკავშირებას და განახლების ჩამოტვირთვას. სურვილისამებრ, ჩამოტვირთვა შეგიძლიათ ლიმიტირებული კავშირით (შეიძლება დაკავშირებული იყოს ხარჯებთან).}}</translation>
 <translation id="3009300415590184725">ნამდვილად გსურთ გააუქმოთ მობილური მონაცემების სერვისის დაყენების პროცესი?</translation>
 <translation id="3009779501245596802">ინდექსირებული მონაცემთა ბაზები</translation>
@@ -2301,7 +2296,6 @@
 <translation id="3348038390189153836">აღმოჩენილია ამოშლადი მოწყობილობა</translation>
 <translation id="3348131053948466246">შემოთავაზებულია emoji. ნავიგაციისთვის დააჭირეთ კლავიშებს ზემოთ ან ქვემოთ მიმართული ისრით, შეყვანისთვის დააჭირეთ enter-ს.</translation>
 <translation id="3349933790966648062">მეხსიერების მოხმარება</translation>
-<translation id="3354972872297836698">მოწყობილობასთან <ph name="DEVICE_NAME" /> დაწყვილება ვერ მოხერხდა; ხელახლა საცდელად არჩიეთ მოწყობილოა</translation>
 <translation id="3355936511340229503">კავშირის შეცდომა</translation>
 <translation id="3356580349448036450">დასრულებულია</translation>
 <translation id="3359256513598016054">სერტიფიკატის პოლიტიკის შეზღუდვები</translation>
@@ -2509,6 +2503,7 @@
 <translation id="3557101512409028104">ვებსაიტებთან და ეკრანთან გატარებულ დროსთან დაკავშირებული შეზღუდვების დაწესება Family Link-ის მეშვეობით</translation>
 <translation id="3559262020195162408">მოწყობილობაზე ვერ მოხერხდა წესების ინსტალაცია.</translation>
 <translation id="3559533181353831840">დარჩენილია დაახლოებით <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">მიიღეთ ვიბროდასტური ისეთი ქმედებებისთვის, როგორიცაა ეკრანის გაყოფა და სამუშაო მაგიდების გადართვა</translation>
 <translation id="3560034655160545939">&amp;მართლწერის შემოწმება</translation>
 <translation id="3562423906127931518">მიმდინარეობს Linux კონტეინერის დაყენება, რასაც შეიძლება რამდენიმე წუთი დასჭირდეს.</translation>
 <translation id="3562655211539199254">იხილეთ Chrome-ის ბოლოდროინდელი ჩანართები თქვენი ტელეფონიდან</translation>
@@ -2733,6 +2728,7 @@
 <translation id="3788331399335602504">ეს ფაილები</translation>
 <translation id="3788401245189148511">შესაძლებლობები:</translation>
 <translation id="3789841737615482174">ინსტალაცია</translation>
+<translation id="3790417903123637354">წარმოიქმნა შეფერხება. ცადეთ მოგვიანებით</translation>
 <translation id="379082410132524484">თქვენი ბარათი ვადაგასულია</translation>
 <translation id="3792890930871100565">გამორთეთ პრინტერები</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome-მა თქვენს კომპიუტერში საზიანო პროგრამული უზრუნველყოფა ვერ აღმოაჩინა • შემოწმდა 1 დღის წინ}other{Chrome-მა თქვენს კომპიუტერში საზიანო პროგრამული უზრუნველყოფა ვერ აღმოაჩინა • შემოწმდა {NUM_DAYS} დღის წინ}}</translation>
@@ -3132,7 +3128,6 @@
 <translation id="4200689466366162458">მორგებული სიტყვები</translation>
 <translation id="4200983522494130825">ახალი &amp;ჩანართი</translation>
 <translation id="4201546031411513170">პარამეტრებიდან ნებისმიერ დროს შეგიძლიათ აირჩიოთ, რისი სინქრონიზაცია გსურთ.</translation>
-<translation id="4202417625268941299">გაძლიერებული Safe Browsing გთავაზობთ Chrome-ის უსაფრთოხების ყველაზე ძლიერ ფუნქციებს</translation>
 <translation id="420283545744377356">ეკრანმზოგის გამორთვა</translation>
 <translation id="4206144641569145248">უცხოპლანეტელი</translation>
 <translation id="4206323443866416204">გამოხმაურების ანგარიში</translation>
@@ -3638,7 +3633,6 @@
 <translation id="4759238208242260848">ჩამოტვირთვები</translation>
 <translation id="4761104368405085019">გამოიყენეთ თქვენი მიკროფონი</translation>
 <translation id="4762718786438001384">მოწყობილობის დისკზე ხელმისაწვდომი მეხსიერება კრიტიკულად არასაკმარისია</translation>
-<translation id="4762898026821161650">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, კომპიუტერი სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">ამ გვერდის დათვალიერებისას შეიქმნა შემდეგი ქუქი-ჩანაწერები</translation>
 <translation id="4765582662863429759">საშუალებას აძლევს Android Messages-ს, მოახდინოს ტექსტური შეტყობინებების რეტრანსლირება ტელეფონიდან თქვენს Chromebook-ში</translation>
 <translation id="4768332406694066911">თქვენ შენახული გაქვთ ქვემოთ ჩამოთვლილი ორგანიზაციების სერტიფიკატები, რომლებიც თქვენს ამოცნობას ახორციელებს</translation>
@@ -4909,6 +4903,7 @@
 <translation id="6112931163620622315">შეამოწმეთ თქვენი ტელეფონი</translation>
 <translation id="6113434369102685411">დააყენეთ ნაგულისხმევი საძიებო სისტემა Chrome ბრაუზერისა და <ph name="DEVICE_TYPE" /> გამშვებისთვის</translation>
 <translation id="6113942107547980621">Smart Lock-ის გამოსაყენებლად საჭიროა ძირითადი მომხმარებლის პროფილის გადართვა თქვენს ტელეფონზე</translation>
+<translation id="611684075852771314">ეს ჟურნალები „ჩემს ფაილებში“ შეინახა, როგორც</translation>
 <translation id="6116921718742659598">შცვალეთ ენა და შეყვანის პარამეტრები</translation>
 <translation id="6119927814891883061">მოწყობილობისთვის სახელის დარქმევა შემდეგით: <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">გვერდის ჩამაგრება საწყის ეკრანზე…</translation>
@@ -5685,6 +5680,7 @@
 <translation id="6930036377490597025">უსაფრთხოების გარე გასაღები ან ჩაშენებული სენსორი</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{გაფართოება უარყოფილია}other{# გაფართოება უარყოფილია}}</translation>
 <translation id="6930321203306643451">ვერსიის განახლება დასრულდა</translation>
+<translation id="6931690462168617033">სიძლიერის შემოწმება</translation>
 <translation id="6935286146439255109">აკლია თაბახი</translation>
 <translation id="693807610556624488">„<ph name="DEVICE_NAME" />“-ზე ჩაწერის ოპერაცია აღემატება ატრიბუტის მაქსიმალურ სიგრძეს.</translation>
 <translation id="6938386202199793006">თქვენ გაქვთ 1 შენახული პრინტერი.</translation>
@@ -5818,7 +5814,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{უსაფრთხოების შემოწმება შესრულდა 1 წუთის წინ}other{უსაფრთხოების შემოწმება შესრულდა {NUM_MINS} წუთის წინ}}</translation>
 <translation id="7057767408836081338">აპის მონაცემების მიღება ვერ მოხერხდა, თუმცა მისი გაშვების მცდელობა მაინც მიმდინარეობს…</translation>
 <translation id="7058024590501568315">დამალული ქსელი</translation>
-<translation id="70582545822664495">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, მაუსი სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">ავტომატური გაშვების დაყენება</translation>
 <translation id="7062222374113411376">ახლახან დახურული საიტებისთვის მონაცემების გაგზავნისა და მიღების დასრულების დაშვება</translation>
 <translation id="7063129466199351735">მალსახმობების დამუშავება…</translation>
@@ -5982,7 +5977,6 @@
 <translation id="7257173066616499747">Wi-Fi ქსელები</translation>
 <translation id="725758059478686223">ბეჭდვის სერვისი</translation>
 <translation id="7257666756905341374">კოპირებული და ჩასმული მონაცემების წაკითხვა</translation>
-<translation id="7258006747130724016">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, ვიდეოკამერა სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">ტრანსფორმაციები</translation>
 <translation id="7258225044283673131">აპლიკაცია არ რეაგირებს. მის დასახურად აირჩიეთ „იძულებით დახურვა“.</translation>
 <translation id="7262004276116528033">შესვლის ამ მომსახურების ჰოსტინგს უზრუნველყოფს <ph name="SAML_DOMAIN" /></translation>
@@ -6777,7 +6771,6 @@
 <translation id="8037117027592400564">წარმოთქმული ტექსტის წაკითხვა სინთეზირებული მეტყველების გამოყენებით</translation>
 <translation id="8037357227543935929">შეკითხვა (ნაგულისხმევი)</translation>
 <translation id="803771048473350947">ფაილი</translation>
-<translation id="8038399858950372766">მოწყობილობა <ph name="DEVICE_INDEX" /> / <ph name="DEVICE_COUNT" />-დან, კლავიატურა სახელად <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">გამოხმაურება</translation>
 <translation id="8042142357103597104">ტექსტის გაუმჭვირობა</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> არ რეაგირებს.</translation>
@@ -6801,6 +6794,7 @@
 <translation id="8054563304616131773">გთხოვთ, შეიყვანოთ სწორი ელფოსტის მისამართი</translation>
 <translation id="8054883179223321715">ხელმისაწვდომია კონკრეტული ვიდეოსაიტებისთვის</translation>
 <translation id="8054921503121346576">USB კლავიატურა დაკავშირებულია</translation>
+<translation id="8057414620575339583">გვერდითი ძიება</translation>
 <translation id="8058655154417507695">ვადის გასვლის წელი</translation>
 <translation id="8058986560951482265">წყვეტებით</translation>
 <translation id="8059417245945632445">მოწყობილობების შ&amp;ემოწმება</translation>
@@ -6815,6 +6809,7 @@
 <translation id="8064279191081105977">ჯგუფი „<ph name="GROUP_NAME" />“ — <ph name="GROUP_CONTENTS" /> — <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">დაკავშირების დიალოგური ფანჯარა</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">შეხებადი რეაქცია</translation>
 <translation id="8071432093239591881">სურათის სახით ბეჭდვა</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />აპების მონაცემები გულისხმობს ამა თუ იმ აპის მიერ შენახულ ნებისმიერ მონაცემს (დამოკიდებულია დეველოპერის პარამეტრებზე), მათ შორის, ისეთ მონაცემებს, როგორიცაა კონტაქტები, შეტყობინებები და ფოტოები.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />სარეზერვო მონაცემები არ აისახება Drive-ზე თქვენთვის გამოყოფილი მეხსიერების კვოტაზე.<ph name="END_PARAGRAPH2" />
@@ -6852,6 +6847,7 @@
 <translation id="81020759409809034">ადგილობრივი მდებარეობა</translation>
 <translation id="8102139037507939978">system_logs.txt ფაილიდან პერსონალურად ამოცნობადი ინფორმაციის მოშორება.</translation>
 <translation id="8104088837833760645">eSIM-პროფილის ჩამოტვირთვა</translation>
+<translation id="8105368624971345109">გამორთვა</translation>
 <translation id="8107015733319732394">მიმდინარეობს Google Play Store-ის ინსტალაცია თქვენს <ph name="DEVICE_TYPE" />-ზე. ამას შეიძლება რამდენიმე წუთი დასჭირდეს.</translation>
 <translation id="810728361871746125">ეკრანის გარჩევადობა</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{მესამე მხარის ქუქი-ჩანაწერები არ არის}=1{მესამე მხარის 1 ქუქი-ჩანაწერი დაბლოკილია}other{მესამე მხარის # ქუქი-ჩანაწერი დაბლოკილია}}</translation>
@@ -6916,7 +6912,6 @@
 <translation id="8168071266284693455">თქვენი სანიშნეები, პაროლები, ისტორია და სხვა კონტენტი სინქრონიზდება თქვენს ყველა მოწყობილობაზე</translation>
 <translation id="8168435359814927499">შიგთავსი</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ჩანართის დამატება საკითხავ სიაში}other{ჩანართების დამატება საკითხავ სიაში}}</translation>
-<translation id="8169849063724750395">ხელახლა ჩართვა</translation>
 <translation id="8171334254070436367">ყველა ბარათის დამალვა</translation>
 <translation id="8174047975335711832">მოწყობილობის ინფორმაცია</translation>
 <translation id="8174876712881364124">სარეზერვო კოპირება Google Drive-ში. მარტივად აღადგინეთ მონაცემები ან შეცვალეთ მოწყობილობები ნებისმიერ დროს. ეს სარეზერვო ასლი მოიცავს აპების მონაცემებს. სარეზერვო ასლები აიტვირთება Google-ში და დაიშიფრება თქვენი შვილის Google ანგარიშის პაროლით. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation>
@@ -6990,7 +6985,6 @@
 <translation id="8249615410597138718">გააგზავნეთ თქვენს მოწყობილობებზე</translation>
 <translation id="8249672078237421304">გვერდების თარგმნის შემოთავაზება, თუ მათი ენა ბრაუზერში გამოყენებულისგან განსხვავდება</translation>
 <translation id="8251441930213048644">ახლავე განახლება</translation>
-<translation id="8251509999076836464">მიმდინარეობს <ph name="DEVICE_NAME" />-თან დაწყვილება</translation>
 <translation id="8251578425305135684">ესკიზები წაშლილია.</translation>
 <translation id="825238165904109940">URL-ების ყოველთვის სრულად გამოჩენა</translation>
 <translation id="8252569384384439529">მიმდინარეობს ატვირთვა...</translation>
@@ -7232,7 +7226,6 @@
 <translation id="8534656636775144800">დომენში გაწევრიანების მცდელობისას შეფერხება წარმოიქმნა. გთხოვთ, ცადოთ ხელახლა.</translation>
 <translation id="8535005006684281994">Netscape სერტიფიკატის განახლების URL</translation>
 <translation id="8536956381488731905">ხმა კლავიშზე დაჭერისას</translation>
-<translation id="8538718737588735385">ხელახლა ჩართვა</translation>
 <translation id="8539727552378197395">არა (მხოლოდ Http)</translation>
 <translation id="8539766201049804895">ახალ ვერსიაზე გადასვლა</translation>
 <translation id="8540136935098276800">შეიყვანეთ URL სწორი ფორმატით</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 181571e..6f40ed0 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">Linux жүйесі қалпына келтірілуде.</translation>
 <translation id="1244303850296295656">Кеңейтім қатесі</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> орнатылмады: суреттің URL мекенжайы <ph name="HTTP_ERROR" /> қате кодын қайтарды. Әкімшіге хабарласыңыз.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> планшеті</translation>
 <translation id="1251366534849411931">Ирек жақша ашылмаған: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Сайттарда және орнатылған қолданбаларда сақталған <ph name="TOTAL_USAGE" /> дерек өшіріледі.</translation>
 <translation id="1251578593170406502">Мобильдік интернет желілері ізделуде…</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> таңдалған</translation>
 <translation id="1442851588227551435">Қосулы Kerberos билетін орнату</translation>
 <translation id="1444628761356461360">Бұл параметрді құрылғы иесі, <ph name="OWNER_EMAIL" />, басқарады.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> телефоны</translation>
 <translation id="144518587530125858">Тақырыпқа арналған "<ph name="IMAGE_PATH" />" жүктеу мүмкін емес.</translation>
 <translation id="1449191289887455076">Тағайындауды растап, <ph name="RESPONSE" /> үшін "<ph name="CURRENTKEY" />" пернесін тағы басыңыз.</translation>
 <translation id="1451375123200651445">Веб-бет, бір файл</translation>
@@ -858,7 +856,6 @@
 <translation id="1855079636134697549">Камера қосулы</translation>
 <translation id="1856715684130786728">Орын қосу…</translation>
 <translation id="1858585891038687145">Бағдарламалық жасақтама авторларын анықтауда осы сертификатқа сену</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, белгісіз <ph name="DEVICE_NAME" /> құрылғысы</translation>
 <translation id="1861262398884155592">Бұл қалта бос</translation>
 <translation id="1862311223300693744">Арнайы VPN, прокси, брандмауэр немесе NAS бағдарламалық құралы орнатылған ба?</translation>
 <translation id="1863182668524159459">Сериялық порттар табылмады.</translation>
@@ -1233,7 +1230,6 @@
 <translation id="2242687258748107519">Файл ақпараты</translation>
 <translation id="2246549592927364792">Google-дан кескін сипаттамаларын алу керек пе?</translation>
 <translation id="2247738527273549923">Құрылғыңызды ұйымыңыз басқарады.</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> ойын контроллері</translation>
 <translation id="2249111429176737533">Қойындысы бар терезе етіп ашу</translation>
 <translation id="2249605167705922988">мысалы, 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Жүйелік көру құралымен ашу</translation>
@@ -1991,7 +1987,6 @@
 <translation id="3007771295016901659">Қайталанбалы қойынды</translation>
 <translation id="3008232374986381779"><ph name="DEVICE_TYPE" /> құрылғысында Linux құралдарын, редакторларын және интеграцияланған әзірлеу орталарын іске қосыңыз. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Рұқсаттарды бастапқы күйіне қайтару</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> аудио құрылғысы</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Жаңа нұсқаны жүктеп алу үшін <ph name="MANAGER" /> Wi-Fi желісіне қосылуыңызды талап етеді. Сондай-ақ трафик саналатын байланыс арқылы жүктеп алуыңызға да болады (ақы алынуы мүмкін).}other{<ph name="MANAGER" /> Wi-Fi желісіне қосылып, мерзім аяқталғанға дейін, жаңа нұсқаны жүктеп алуыңызды талап етеді. Сондай-ақ трафик саналатын байланыс арқылы жүктеп алуыңызға да болады (ақы алынуы мүмкін).}}</translation>
 <translation id="3009300415590184725">Ұялы деректер қызметін орнату процесінен бас тарту қажет пе?</translation>
 <translation id="3009779501245596802">Индекстелген дерекқорлар</translation>
@@ -2297,7 +2292,6 @@
 <translation id="3348038390189153836">Алынбалы құрылғы анықталды</translation>
 <translation id="3348131053948466246">Эмоджи ұсынылады. Жылжу үшін жоғары не төмен және енгізу үшін Enter пернесін басыңыз.</translation>
 <translation id="3349933790966648062">Пайдаланылатын жад көлемі</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> құрылғысымен жұптау мүмкін болмады; әрекетті қайталау үшін құрылғыны таңдаңыз.</translation>
 <translation id="3355936511340229503">Байланыс қатесі</translation>
 <translation id="3356580349448036450">Аяқталған</translation>
 <translation id="3359256513598016054">Сертификат саясатының шектеулері</translation>
@@ -2729,6 +2723,7 @@
 <translation id="3788331399335602504">осы файлдар</translation>
 <translation id="3788401245189148511">Мына артықшылықтарға ие:</translation>
 <translation id="3789841737615482174">Орнату</translation>
+<translation id="3790417903123637354">Бірдеңе дұрыс болмады. Кейінірек қайталап көріңіз</translation>
 <translation id="379082410132524484">Картаңыздың мерзімі біткен</translation>
 <translation id="3792890930871100565">Принтерлерді ажырату</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome браузері компьютеріңізден ешқандай зиянды бағдарламалық құрал таппады. • 1 күн бұрын тексерілді.}other{Chrome браузері компьютеріңізден ешқандай зиянды бағдарламалық құрал таппады. • {NUM_DAYS} күн бұрын тексерілді.}}</translation>
@@ -3128,7 +3123,6 @@
 <translation id="4200689466366162458">Арнаулы сөздер</translation>
 <translation id="4200983522494130825">Жаңа &amp;қойынды</translation>
 <translation id="4201546031411513170">Синхрондалатын мазмұнды кез келген уақытта "Параметрлер" бөлімінде таңдай аласыз.</translation>
-<translation id="4202417625268941299">Жақсартылған Safe Browsing көмегімен Chrome браузерінің қауіпсіздігі барынша артады.</translation>
 <translation id="420283545744377356">Скринсейверді өшіру</translation>
 <translation id="4206144641569145248">Өзге планеталық</translation>
 <translation id="4206323443866416204">Пікір есебі</translation>
@@ -3634,7 +3628,6 @@
 <translation id="4759238208242260848">Жүктеп алынғандар</translation>
 <translation id="4761104368405085019">Микрофоныңызды пайдалану</translation>
 <translation id="4762718786438001384">Құрылғы дискінде бос орын тым аз қалды</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> компьютері</translation>
 <translation id="4763408175235639573">Осы бетті ашқанда, мына cookie файлдары орнатылды</translation>
 <translation id="4765582662863429759">Android Messages қолданбасына хабарларды телефоннан Chromebook құрылғысына жіберуге мүмкіндік береді</translation>
 <translation id="4768332406694066911">Осы ұйымдардан алынған және сізді анықтайтын сертификаттар бар</translation>
@@ -5814,7 +5807,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Қауіпсіздік 1 минут бұрын тексерілді.}other{Қауіпсіздік {NUM_MINS} минут бұрын тексерілді.}}</translation>
 <translation id="7057767408836081338">Қолданба деректерін алу мүмкін болмады, қолданбаны бәрібір іске қосудамыз…</translation>
 <translation id="7058024590501568315">Жасырын желі</translation>
-<translation id="70582545822664495"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> тінтуірі</translation>
 <translation id="7059858479264779982">Автоматты іске қосуға орнату</translation>
 <translation id="7062222374113411376">Жақында жабылған сайттарға деректерді жіберуді және алуды аяқтауға рұқсат беру (ұсынылады)</translation>
 <translation id="7063129466199351735">Таңбашалар өңделуде…</translation>
@@ -5978,7 +5970,6 @@
 <translation id="7257173066616499747">Wi-Fi желілері</translation>
 <translation id="725758059478686223">Басып шығару қызметі</translation>
 <translation id="7257666756905341374">Көшіріп, қойған деректерді оқу</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> бейнекамерасы</translation>
 <translation id="7258192266780953209">Түрлендіру</translation>
 <translation id="7258225044283673131">Қолданба жауап бермейді. Оны жабу үшін "Қолмен жабу" опциясын таңдаңыз.</translation>
 <translation id="7262004276116528033">Бұл кіру қызметі <ph name="SAML_DOMAIN" /> доменінде орналасқан</translation>
@@ -6773,7 +6764,6 @@
 <translation id="8037117027592400564">Синтезделген сөйлеу арқылы айтылған барлық мәтінді оқу</translation>
 <translation id="8037357227543935929">Сұрау (әдепкі)</translation>
 <translation id="803771048473350947">Файл</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" /> құрылғы, <ph name="DEVICE_NAME" /> пернетақтасы</translation>
 <translation id="8041089156583427627">Пікір жіберу</translation>
 <translation id="8042142357103597104">Мәтін бұлыңғырлығы</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> жауап бермей жатыр</translation>
@@ -6797,6 +6787,7 @@
 <translation id="8054563304616131773">Жарамды электрондық пошта мекенжайын енгізіңіз</translation>
 <translation id="8054883179223321715">Арнайы бейне сайттар үшін қолжетімді</translation>
 <translation id="8054921503121346576">USB пернетақтасы жалғанған</translation>
+<translation id="8057414620575339583">Бүйірлік іздеу панелі</translation>
 <translation id="8058655154417507695">Жарамдылық мерзімі бітетін жыл</translation>
 <translation id="8058986560951482265">Үзік</translation>
 <translation id="8059417245945632445">&amp;Құрылғыларды тексеру</translation>
@@ -6848,6 +6839,7 @@
 <translation id="81020759409809034">Құрылғыдағы орны</translation>
 <translation id="8102139037507939978">Жеке тұлғаны анықтау ақпаратын system_logs.txt файлынан өшіру.</translation>
 <translation id="8104088837833760645">eSIM профилін жүктеп алу</translation>
+<translation id="8105368624971345109">Өшіру</translation>
 <translation id="8107015733319732394">Google Play Store дүкені <ph name="DEVICE_TYPE" /> құрылғысына орнатылуда. Бұл бірнеше минут алады.</translation>
 <translation id="810728361871746125">Дисплей ажыратымдылығы</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Үшінші тараптың cookie файлдары жоқ}=1{Үшінші тараптың 1 cookie файлы бөгелді}other{Үшінші тараптың # cookie файлы бөгелді}}</translation>
@@ -6912,7 +6904,6 @@
 <translation id="8168071266284693455">Барлық құрылғыдағы бетбелгілер, құпия сөздер, тарих және т.б. синхрондалады.</translation>
 <translation id="8168435359814927499">Мазмұн</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Қойындыны оқу тізіміне қосу}other{Қойындыларды оқу тізіміне қосу}}</translation>
-<translation id="8169849063724750395">Қайта қосу</translation>
 <translation id="8171334254070436367">Барлық карталарды жасыру</translation>
 <translation id="8174047975335711832">Құрылғы туралы ақпарат</translation>
 <translation id="8174876712881364124">Google Drive дискісіне сақтық көшірме жасау. Деректерді оңай қалпына келтіре және құрылғыны кез келген кезде ауыстыра аласыз. Бұл сақтық көшірмеде қолданба деректері қамтылады. Сақтық көшірмелер Google-ға жүктеп салынады және балаңыздың Google аккаунтының құпия сөзімен шифрланады. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation>
@@ -6986,7 +6977,6 @@
 <translation id="8249615410597138718">Құрылғыларға жіберу</translation>
 <translation id="8249672078237421304">Сіз оқитын тілден басқа тілдегі беттерді аударуды ұсынады</translation>
 <translation id="8251441930213048644">Қазір жаңарту</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> құрылғысымен жұпталуда</translation>
 <translation id="8251578425305135684">Нобай жойылды.</translation>
 <translation id="825238165904109940">URL мекенжайларын әрдайым толық көрсету</translation>
 <translation id="8252569384384439529">Жүктеп салынуда…</translation>
@@ -7228,7 +7218,6 @@
 <translation id="8534656636775144800">Қап! Доменге кіру кезінде бірдеңеден қате кетті. Әрекетті қайталаңыз.</translation>
 <translation id="8535005006684281994">Netscape сертификат жаңалау URL мекенжайы</translation>
 <translation id="8536956381488731905">Пернені басқанда дыбыс шығару</translation>
-<translation id="8538718737588735385">Қайта қосу</translation>
 <translation id="8539727552378197395">Жоқ (HttpOnly)</translation>
 <translation id="8539766201049804895">Жаңа нұсқа орнату</translation>
 <translation id="8540136935098276800">Дұрыс форматталған URL мекенжайын енгізіңіз.</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index 851647c..f4cd8b3 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -416,6 +416,7 @@
            • លុបខូគី និងទិន្នន័យ​គេហទំព័របណ្ដោះអាសន្ន​ផ្សេងទៀត
             <ph name="LINE_BREAKS" />
            ចំណាំ ប្រវត្តិ និងពាក្យសម្ងាត់​ដែលបានរក្សាទុក​នឹងមិន​ប៉ះពាល់ទេ។</translation>
+<translation id="1425233109861512854">មិនស្គាល់​លេខកូដចូល​ប្រើប្រាស់ទេ</translation>
 <translation id="1426410128494586442">បាទ/ចាស</translation>
 <translation id="142655739075382478"><ph name="APP_NAME" /> ត្រូវបាន​ទប់ស្កាត់</translation>
 <translation id="1426870617281699524">ចុច​ព្យាយាមម្តងទៀត រួចទទួល​យក​សារ​ជំរុញ​នៅលើ​កុំព្យូទ័រ​របស់អ្នក</translation>
@@ -583,6 +584,7 @@
 <translation id="1593926297800505364">រក្សាទុកវិធី​បង់ប្រាក់</translation>
 <translation id="1595492813686795610">Linux កំពុង​ដំឡើងកំណែ</translation>
 <translation id="1596286373007273895">អាចប្រើបាន</translation>
+<translation id="1596709061955594992">ប៊្លូធូសត្រូវ​បានបិទ។ ដើម្បីមើល​ឧបករណ៍ដែលអាច​ប្រើបាន សូមបើក​ប៊្លូធូស។</translation>
 <translation id="1598233202702788831">ការអាប់ដេតត្រូវបានបិទដំណើរការដោយអ្នកគ្រប់គ្រងរបស់អ្នក</translation>
 <translation id="1600857548979126453">ចូលប្រើបេកអេនកំចាត់កំហុសទំព័រ</translation>
 <translation id="1601560923496285236">អនុវត្ត</translation>
@@ -1144,6 +1146,7 @@
 <translation id="2148892889047469596">ខាសផ្ទាំង</translation>
 <translation id="2149973817440762519">កែប្រែចំណាំ</translation>
 <translation id="2150139952286079145">គោលដៅស្វែងរក</translation>
+<translation id="2150491840563706000">អ្នកមិនមាន​ការអនុញ្ញាតឱ្យភ្ជាប់​ទៅផ្ទាំងអេក្រង់នេះទេ</translation>
 <translation id="2150661552845026580">បន្ថែម "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="2151576029659734873">សន្ទស្សន៍ផ្ទាំងគ្មានសុពលភាពត្រូវបានបញ្ចូល។</translation>
 <translation id="2152281589789213846">បញ្ចូលម៉ាស៊ីន​បោះពុម្ព​ទៅ​ក្នុងកម្រងព័ត៌មាន​របស់អ្នក</translation>
@@ -2612,6 +2615,7 @@
 <translation id="3654045516529121250">អានការកំណត់លទ្ធភាពប្រើប្រាស់របស់អ្នក</translation>
 <translation id="3655712721956801464">{NUM_FILES,plural, =1{វាមានការចូលប្រើឯកសារមួយជាប្រចាំ។}other{វាមានការចូលប្រើឯកសារ # ជាប្រចាំ។}}</translation>
 <translation id="3658871634334445293">ការបង្កើនល្បឿន TrackPoint</translation>
+<translation id="3659929705630080526">អ្នកបានបញ្ចូល​លេខកូដចូល​ប្រើប្រាស់មិនត្រឹមត្រូវ​ច្រើនដងពេក។ សូមព្យាយាម​ម្ដងទៀត​នៅពេលក្រោយ</translation>
 <translation id="3660234220361471169">មិនអាចជឿជាក់</translation>
 <translation id="3664511988987167893">រូបតំណាង​កម្មវិធី​បន្ថែម</translation>
 <translation id="3665589677786828986">Chrome បានរកឃើញថាការកំណត់របស់អ្នកមួួយចំនួនបានបង្កបញ្ហាដោយកម្មវិធីផ្សេងទៀត ហើយកំណត់ពួកវាឡើងវិញទៅលំនាំដើមរបស់ពួកវា។</translation>
@@ -2695,6 +2699,7 @@
 <translation id="3743842571276656710">បញ្ចូល​កូដ PIN ដើម្បី​ផ្គូផ្គងជាមួយ <ph name="DEVICE_NAME" /></translation>
 <translation id="3747077776423672805">ដើម្បី​លុប​កម្មវិធី សូម​ចូលទៅកាន់​ការកំណត់ &gt; Google Play Store &gt; គ្រប់គ្រង​ចំណូលចិត្ត Android &gt; កម្មវិធី ឬកម្មវិធី​គ្រប់គ្រង​កម្មវិធី។ បន្ទាប់មក​ចុច​កម្មវិធី​ដែលអ្នក​ចង់លុប (អ្នកអាច​នឹងត្រូវ​អូស​ទៅស្តាំ ឬ​ទៅឆ្វេងដើម្បី​ស្វែងរក​កម្មវិធី​នោះ)។ បន្ទាប់មក​ចុច​លុប ឬ​បិទ។</translation>
 <translation id="3747220812138541072">បង្ហាញការណែនាំ​អំពីការសរសេរក្នុងជួរ​ដែលបង្ហាញ នៅពេលអ្នក​វាយបញ្ចូល</translation>
+<translation id="3747603683749989726">បើកសុវត្ថិភាព​បន្ថែមឬ?</translation>
 <translation id="3748706263662799310">រាយការណ៍អំពីបញ្ហា</translation>
 <translation id="3750562496035670393">Chrome បានរក្សាទុកពាក្យសម្ងាត់របស់អ្នកទៅក្នុងឧបករណ៍នេះ ប៉ុន្តែអ្នកអាចរក្សាទុកវាទៅក្នុងគណនី Google របស់អ្នកជំនួសវិញ។ បន្ទាប់ពីនោះ ពាក្យសម្ងាត់ទាំងអស់នៅក្នុង​​គណនី Google របស់អ្នក​ក៏នឹងមាន​ នៅពេលអ្នក​ចូលគណនីផងដែរ។</translation>
 <translation id="3752253558646317685">ប្រាប់ឱ្យកូនរបស់អ្នកបន្តលើកម្រាមដៃរបស់គាត់ឡើង ដើម្បីរក្សាទុកស្នាម​ម្រាមដៃ</translation>
@@ -2743,6 +2748,7 @@
 <translation id="3788331399335602504">ឯកសារ​ទាំងនេះ</translation>
 <translation id="3788401245189148511">វាអាច៖</translation>
 <translation id="3789841737615482174">តំឡើង</translation>
+<translation id="3790417903123637354">មានអ្វីមួយខុសប្រក្រតី។ ព្យាយាមម្តង​ទៀតនៅពេល​ក្រោយ</translation>
 <translation id="379082410132524484">បណ្ណ​របស់អ្នក​ផុតកំណត់​ហើយ</translation>
 <translation id="3792890930871100565">ផ្តាច់ម៉ាស៊ីនបោះពុម្ព</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome រកមិនឃើញ​កម្មវិធី​បង្កគ្រោះថ្នាក់​នៅលើ​កុំព្យូទ័រ​របស់អ្នក​ទេ • បានពិនិត្យមើល 1 ថ្ងៃមុន}other{Chrome រកមិនឃើញ​កម្មវិធី​បង្កគ្រោះថ្នាក់​នៅលើ​កុំព្យូទ័រ​របស់អ្នក​ទេ • បានពិនិត្យមើល {NUM_DAYS} ថ្ងៃមុន}}</translation>
@@ -3209,6 +3215,7 @@
 <translation id="4279129444466079448">អ្នកអាច​ដំឡើង​កម្រងព័ត៌មាន eSIM បានរហូតដល់ <ph name="PROFILE_LIMIT" /> នៅលើ​ឧបករណ៍នេះ។ ដើម្បីបញ្ចូល​កម្រងព័ត៌មាន​ផ្សេងទៀត សូមលុប​កម្រងព័ត៌មាន​ដែលមានស្រាប់​ជាមុនសិន។</translation>
 <translation id="4281844954008187215">លក្ខខណ្ឌសេវាកម្ម</translation>
 <translation id="4282196459431406533">Smart Lock បានបើកហើយ</translation>
+<translation id="4284755288573763878">បិទសុវត្ថិភាព​បន្ថែមឬ?</translation>
 <translation id="4285418559658561636">ធ្វើ​បច្ចុប្បន្នភាព​ពាក្យសម្ងាត់</translation>
 <translation id="4285498937028063278">ដកការដៅ</translation>
 <translation id="428565720843367874">កម្មវិធីកម្ចាត់មេរោគបានបរាជ័យដោយមិនមានរំពឹងទុក ខណៈពេលកំពុងស្កេនឯកសារនេះ។</translation>
@@ -3829,6 +3836,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ចង់ភ្ជាប់​ទៅរន្ធស៊េរី</translation>
 <translation id="4944310289250773232">សេវាកម្មផ្ទៀងផ្ទាត់នេះត្រូវបានបង្ហោះ​ដោយ <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">ដើម្បីរៀបចំស្នាម​ម្រាមដៃ សូមប្រាប់ឱ្យកូនរបស់អ្នកប៉ះប៊ូតុង​​ថាមពល។ ទិន្នន័យ​ស្នាម​ម្រាមដៃរបស់កូនអ្នកត្រូវបាន​រក្សាទុកយ៉ាង​មានសុវត្ថិភាព និងមិនចេញពី <ph name="DEVICE_TYPE" /> នេះឡើយ។</translation>
+<translation id="4946459324029651239">អ្នកកំពុង​ទទួលបាន​ការការពារ​ស្តង់ដារ</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{ឯកសារមួយ}other{ឯកសារ #}}</translation>
 <translation id="495170559598752135">សកម្មភាព</translation>
 <translation id="4953808748584563296">រូបតំណាងពណ៌ទឹកក្រូចលំនាំដើម</translation>
@@ -4412,6 +4420,7 @@
 <translation id="5575528586625653441">សំណើចុះឈ្មោះ​សាកល្បង​មានបញ្ហា។</translation>
 <translation id="557722062034137776">ការកំណត់ឧបករណ៍របស់អ្នកឡើងវិញនឹងមិនប៉ះពាល់ដល់គណនី Google របស់អ្នក ឬទិន្នន័យំណាមួយដែលបានធ្វើសមកម្មទៅគណនីទាំងនេះទេ។ ទោះបីជាយ៉ាងណាក៏ដោយ ឯកសារទាំងអស់ដែលបានរក្សាទុកជាមូលដ្ឋាននៅលើឧបករណ៍របស់អ្នកនឹងត្រូវលុប។</translation>
 <translation id="5578059481725149024">ចូល​ដោយស្វ័យប្រវត្តិ</translation>
+<translation id="5581134892342029705">ការបកប្រែ​ទៅជាភាសា<ph name="LANGUAGE" />បានបញ្ចប់</translation>
 <translation id="558170650521898289">ការផ្ទៀងផ្ទាត់ដ្រាយវ័រផ្នែករឹង Microsoft Windows</translation>
 <translation id="5581972110672966454">មិនអាចភ្ជាប់ឧបករណ៍ជាមួយដែនបានទេ។ សូម​ព្យាយាម​ម្ដងទៀត ឬ​ទាក់ទង​អ្នកគ្រប់គ្រង ឬម្ចាស់ឧបករណ៍របស់អ្នក។ លេខ​កូដ​បញ្ហា៖ <ph name="ERROR_CODE" />។</translation>
 <translation id="5582839680698949063">ម៉ឺនុយមេ</translation>
@@ -4682,6 +4691,7 @@
 <translation id="5865508026715185451"><ph name="APP_NAME" /> នឹងផ្អាក​ក្នុងពេល​ឆាប់ៗ​នេះ</translation>
 <translation id="586567932979200359">អ្នកកំពុងដំណើរការ <ph name="PRODUCT_NAME" /> ពីរូបភាពឌីសរបស់វា។ ការតំឡើងវានៅលើកុំព្យូទ័ររបស់អ្នក អនុញ្ញាតឲ្យអ្នកដំណើរការវាដោយមិនចាំបាច់រូបភាពឌីស ហើយត្រូវប្រាកដថារក្សាវាឲ្យទាន់សម័យកាល។</translation>
 <translation id="5865733239029070421">ផ្ញើស្ថិតិប្រើប្រាស់ និងរបាយការណ៍អំពីការគាំងទៅ Google ដោយស្វ័យប្រវត្តិ</translation>
+<translation id="5865848066829891215">បញ្ហាផ្នែក​ទំនាក់ទំនងបណ្ដាញ</translation>
 <translation id="5867841422488265304">ស្វែងរក ឬវាយ​បញ្ចូល​អាសយដ្ឋានទំព័រ</translation>
 <translation id="5869029295770560994">យល់ព្រម ខ្ញុំយល់ហើយ</translation>
 <translation id="5869522115854928033">ពាក្យសម្ងាត់ដែលបានរក្សាទុក</translation>
@@ -5976,6 +5986,7 @@
 <translation id="7243784282103630670">មានបញ្ហា ពេលកំពុងដំឡើងកំណែ Linux។ យើងនឹងស្ដារទម្រង់ផ្ទុក​ ដោយប្រើការបម្រុងទុករបស់អ្នក។</translation>
 <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ល្អបំផុត)</translation>
 <translation id="7246230585855757313">ដោតបញ្ចូលសោសុវត្ថិភាព​របស់អ្នកឡើងវិញ រួចព្យាយាម​ម្ដងទៀត</translation>
+<translation id="7249197363678284330">ប្ដូរការកំណត់នេះ​នៅក្នុងរបារ​អាសយដ្ឋាន។</translation>
 <translation id="7250616558727237648">ឧបករណ៍​ដែលអ្នក​កំពុងចែករំលែក​ជាមួយ មិនបាន​ឆ្លើយតប​ទេ។ សូមព្យាយាមម្ដងទៀត។</translation>
 <translation id="725109152065019550">សូមទោស អ្នកគ្រប់គ្រងរបស់អ្នកបានបិទដំណើរការឧបករណ៍ផ្ទុកទិន្នន័យខាងក្រៅនៅលើគណនីរបស់អ្នក។</translation>
 <translation id="7251346854160851420">ផ្ទាំង​រូបភាព​លំនាំដើម</translation>
@@ -6862,6 +6873,7 @@
 <translation id="81020759409809034">ទីតាំង​ក្នុងឧបករណ៍</translation>
 <translation id="8102139037507939978">លុប​ព័ត៌មានបញ្ជាក់​អត្តសញ្ញាណ​បុគ្គល​ពី system_logs.txt។</translation>
 <translation id="8104088837833760645">ទាញយក​កម្រងព័ត៌មាន eSIM</translation>
+<translation id="8105368624971345109">បិទ</translation>
 <translation id="8107015733319732394">កំពុងដំឡើង Google Play Store នៅលើ <ph name="DEVICE_TYPE" /> របស់អ្នក។ វាអាច​ចំណាយពេល​ពីរបីនាទី។</translation>
 <translation id="810728361871746125">កម្រិតច្បាស់របស់ផ្ទាំងអេក្រង់</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{មិនមាន​ខូគី​ភាគី​ទីបីទេ}=1{បាន​ទប់ស្កាត់ខូគី​ភាគី​ទីបី 1}other{បាន​ទប់ស្កាត់ខូគី​ភាគី​ទីបី #}}</translation>
@@ -7236,6 +7248,7 @@
 <translation id="8528074251912154910">បន្ថែមភាសា</translation>
 <translation id="8528962588711550376">កំពុងចូល។</translation>
 <translation id="8529925957403338845">មិនអាច​ធ្វើការ​តភ្ជាប់ភ្លាមៗ​បានទេ</translation>
+<translation id="8531701051932785007">ការរុករក​ដោយសុវត្ថិភាពបន្ថែម​ត្រូវបានបិទ</translation>
 <translation id="8534656636775144800">អូ៎! មាន​អ្វីមួយ​ខុស​ប្រក្រតី​ នៅពេល​ព្យាយាម​ចូលដែននេះ។ សូមព្យាយាម​ម្ដងទៀត។</translation>
 <translation id="8535005006684281994">URL ធ្វើវិញ្ញាបនប័ត្រ Netscape ថ្មីឡើងវិញ</translation>
 <translation id="8536956381488731905">សំឡេង​នៅពេលចុច​គ្រាប់ចុច</translation>
@@ -7728,6 +7741,7 @@
 <translation id="9026731007018893674">ទាញយក</translation>
 <translation id="9026852570893462412">ដំណើរការ​នេះ​អាច​ចំណាយ​ពេល​ពីរបីនាទី។ កំពុង​ទាញ​យក​ម៉ាស៊ីន​និម្មិត។</translation>
 <translation id="9027459031423301635">បើកតំណនៅក្នុងផ្ទាំងថ្មី</translation>
+<translation id="9029667986262585240">អ្នកបានបិទ​ការរុករកដោយ​សុវត្ថិភាពបន្ថែមនៅក្នុង​គណនីរបស់អ្នក។</translation>
 <translation id="9030515284705930323">ស្ថាប័នរបស់អ្នកមិនទាន់បើកដំណើរការហាង Google Play សម្រាប់គណនីរបស់អ្នកនៅឡើយទេ។ សូមទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នកសម្រាប់ព័ត៌មានលម្អិត។</translation>
 <translation id="9030754204056345429">លឿន​ជាង</translation>
 <translation id="9030785788945687215">Gmail</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 68e7e37..23b0ed4 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -2510,6 +2510,7 @@
 <translation id="3557101512409028104">Family Link ಮೂಲಕ ವೆಬ್‌ಸೈಟ್ ನಿರ್ಬಂಧನೆಗಳು ಮತ್ತು ವೀಕ್ಷಣಾ ಅವಧಿಯನ್ನು ಹೊಂದಿಸಿ</translation>
 <translation id="3559262020195162408">ಸಾಧನದಲ್ಲಿ ಕಾರ್ಯನೀತಿಯನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="3559533181353831840"><ph name="TIME_LEFT" /> ಸಮಯ ಬಾಕಿ ಉಳಿದಿದೆ</translation>
+<translation id="3559697822483154494">ಸ್ಕ್ರೀನ್ ಬೇರ್ಪಡಿಸಿ ಮತ್ತು ಸ್ವಿಚಿಂಗ್ ಡೆಸ್ಕ್‌ಗಳಂತಹ ಕ್ರಿಯೆಗಳಿಗಾಗಿ ವೈಬ್ರೇಷನ್‌ ದೃಢೀಕರಣವನ್ನು ಸ್ವೀಕರಿಸಿ.</translation>
 <translation id="3560034655160545939">&amp;ಕಾಗುಣಿತ ಪರೀಕ್ಷೆ</translation>
 <translation id="3562423906127931518">ಈ ಪ್ರಕ್ರಿಯೆಗೆ ಕೆಲವು ನಿಮಿಷಗಳ ಕಾಲಾವಕಾಶ ಬೇಕಾಗಬಹುದು. Linux ಕಂಟೇನರ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲಾಗುತ್ತಿದೆ.</translation>
 <translation id="3562655211539199254">ನಿಮ್ಮ ಫೋನ್‌ನಲ್ಲಿರುವ ಇತ್ತೀಚಿನ Chrome ಟ್ಯಾಬ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ</translation>
@@ -2735,6 +2736,7 @@
 <translation id="3788331399335602504">ಈ ಫೈಲ್‌ಗಳು</translation>
 <translation id="3788401245189148511">ಇದು ಸಾಧ್ಯವಾಗಬಹುದು:</translation>
 <translation id="3789841737615482174">ಇನ್‌ಸ್ಟಾಲ್</translation>
+<translation id="3790417903123637354">ಏನೋ ತಪ್ಪಾಗಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="379082410132524484">ನಿಮ್ಮ ಕಾರ್ಡ್‌ ಅವಧಿ ಮುಗಿದಿದೆ</translation>
 <translation id="3792890930871100565">ಮುದ್ರಕಗಳನ್ನು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು Chrome ಪತ್ತೆ ಮಾಡಿಲ್ಲ • 1 ದಿನದ ಹಿಂದೆ ಪರಿಶೀಲಿಸಲಾಗಿದೆ}one{ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು Chrome ಪತ್ತೆ ಮಾಡಿಲ್ಲ • {NUM_DAYS} ದಿನಗಳ ಹಿಂದೆ ಪರಿಶೀಲಿಸಲಾಗಿದೆ}other{ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು Chrome ಪತ್ತೆ ಮಾಡಿಲ್ಲ • {NUM_DAYS} ದಿನಗಳ ಹಿಂದೆ ಪರಿಶೀಲಿಸಲಾಗಿದೆ}}</translation>
@@ -3821,6 +3823,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ಒಂದು ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="4944310289250773232">ಈ ದೃಢೀಕರಣ ಸೇವೆಯನ್ನು <ph name="SAML_DOMAIN" /> ಮೂಲಕ ಹೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="4945439665401275950">ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು, ನಿಮ್ಮ ಮಗುವು ಪವರ್ ಬಟನ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಬೇಕು. ನಿಮ್ಮ ಮಗುವಿನ ಡೇಟಾವನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಣೆ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು ಎಂದೂ ಈ <ph name="DEVICE_TYPE" /> ನಿಂದ ಹೊರಗೆ ಹೋಗುವುದಿಲ್ಲ.</translation>
+<translation id="4946459324029651239">ನೀವು ಪ್ರಮಾಣಿತ ಸುರಕ್ಷತೆಯನ್ನು ಪಡೆದುಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{ಒಂದು ಫೈಲ್}one{# ಫೈಲ್‌ಗಳು}other{# ಫೈಲ್‌ಗಳು}}</translation>
 <translation id="495170559598752135">ಕ್ರಿಯೆಗಳು</translation>
 <translation id="4953808748584563296">ಡಿಫಾಲ್ಟ್ ಕೇಸರಿ ಅವತಾರ್</translation>
@@ -4404,6 +4407,7 @@
 <translation id="5575528586625653441">ಡೆಮೊ ನೋಂದಣಿ ಕೋರಿಕೆಯಲ್ಲಿ ಸಮಸ್ಯೆ ಸಂಭವಿಸಿದೆ.</translation>
 <translation id="557722062034137776">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಹೊಂದಿಸುವುದರಿಂದ, ನಿಮ್ಮ Google ಖಾತೆಗಳು ಅಥವಾ ಈ ಖಾತೆಗಳಿಗೆ ಸಿಂಕ್ ಮಾಡಲಾಗಿರುವ ಯಾವುದೇ ಡೇಟಾದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ. ಆದಾಗ್ಯೂ, ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸ್ಥಳೀಯವಾಗಿ ಉಳಿಸಲಾಗಿರುವ ಎಲ್ಲಾ ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="5578059481725149024">ಸ್ವಯಂ ಸೈನ್-ಇನ್</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> ಗೆ ಅನುವಾದಿಸುವುದನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ</translation>
 <translation id="558170650521898289">Microsoft Windows Hardware Driver Verification</translation>
 <translation id="5581972110672966454">ಡೊಮೇನ್‌ಗೆ ಸಾಧನವನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ನಿಮ್ಮ ಸಾಧನದ ಮಾಲೀಕರು ಅಥವಾ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ. ದೋಷ ಕೋಡ್: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">ಮುಖ್ಯ ಮೆನು</translation>
@@ -4909,6 +4913,7 @@
 <translation id="6112931163620622315">ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="6113434369102685411">Chrome ಬ್ರೌಸರ್ ಅನ್ನು ಮತ್ತು <ph name="DEVICE_TYPE" /> ಲಾಂಚರ್ ಅನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಹುಡುಕಾಟದ ಎಂಜಿನ್ ಆಗಿ ಹೊಂದಿಸಿ</translation>
 <translation id="6113942107547980621">Smart Lock ಅನ್ನು ಬಳಸಲು, ನಿಮ್ಮ ಫೋನ್‌ನಲ್ಲಿರುವ ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರ ಪ್ರೋಫೈಲ್‌ಗೆ ಬದಲಿಸಿ</translation>
+<translation id="611684075852771314">ಈ ಲಾಗ್‌ಗಳನ್ನು ನನ್ನ ಫೈಲ್‌ಗಳಲ್ಲಿ ಈ ರೀತಿಯಾಗಿ ಉಳಿಸಲಾಗಿದೆ</translation>
 <translation id="6116921718742659598">ಭಾಷೆ ಹಾಗೂ ಇನ್‌ಪುಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ</translation>
 <translation id="6119927814891883061">ಸಾಧನಕ್ಕೆ <ph name="DEVICE_NAME" /> ಎಂದು ಹೆಸರಿಸಿ</translation>
 <translation id="6120205520491252677">ಆರಂಭಿಕ ಪರದೆಗೆ ಈ ಪುಟವನ್ನು ಪಿನ್ ಮಾಡಿ...</translation>
@@ -5685,6 +5690,7 @@
 <translation id="6930036377490597025">ಬಾಹ್ಯ ಸುರಕ್ಷತೆ ಕೀ ಅಥವಾ ಅಂತರ್ನಿರ್ಮಿತ ಸೆನ್ಸರ್</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{ಒಂದು ವಿಸ್ತರಣೆಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ}one{# ವಿಸ್ತರಣೆಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ}other{# ವಿಸ್ತರಣೆಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ}}</translation>
 <translation id="6930321203306643451">ಅಪ್‌ಗ್ರೇಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ</translation>
+<translation id="6931690462168617033">ಪ್ರಬಲತೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ</translation>
 <translation id="6935286146439255109">ಪೇಪರ್ ಟ್ರೇ ಕಾಣಿಸುತ್ತಿಲ್ಲ</translation>
 <translation id="693807610556624488">ಬರೆಯುವಿಕೆ ಕಾರ್ಯಾಚರಣೆಯು ಈ ಸಾಧನಕ್ಕೆ ಗುಣಲಕ್ಷಣದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ಮೀರುತ್ತದೆ: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">ನೀವು 1 ಪ್ರಿಂಟರ್ ಅನ್ನು ಉಳಿಸಿದ್ದೀರಿ.</translation>
@@ -6812,6 +6818,7 @@
 <translation id="8064279191081105977">ಗುಂಪು <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">ಕನೆಕ್ಷನ್ ಡೈಲಾಗ್</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">ಸ್ಪರ್ಶ ಪ್ರತಿಕ್ರಿಯೆ</translation>
 <translation id="8071432093239591881">ಚಿತ್ರದಂತೆ ಪ್ರಿಂಟ್ ಮಾಡಿ</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />ಆ್ಯಪ್ ಡೇಟಾವು ಸಂಪರ್ಕಗಳು, ಸಂದೇಶಗಳು ಮತ್ತು ಫೋಟೋಗಳಂತಹ ಡೇಟಾ ಸೇರಿದಂತೆ, ಆ್ಯಪ್ ಉಳಿಸಿರುವಂತಹ (ಡೆವಲಪರ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಆಧರಿಸಿ) ಯಾವುದೇ ಡೇಟಾ ಆಗಿರಬಹುದು.<ph name="END_PARAGRAPH1" />
  <ph name="BEGIN_PARAGRAPH2" />ಬ್ಯಾಕಪ್‌ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವಿನ ಡ್ರೈವ್‌ ಸಂಗ್ರಹಣೆ ಕೋಟಾದಲ್ಲಿ ಪರಿಗಣಿಸಲಾಗುವುದಿಲ್ಲ.<ph name="END_PARAGRAPH2" />
@@ -6849,6 +6856,7 @@
 <translation id="81020759409809034">ಸ್ಥಳೀಯ ಸ್ಥಳ</translation>
 <translation id="8102139037507939978">system_logs.txt ನಿಂದ ವೈಯಕ್ತಿಕವಾಗಿ ಗುರುತಿಸಬಲ್ಲ ಮಾಹಿತಿಯನ್ನು ತೆಗೆದುಹಾಕಿ.</translation>
 <translation id="8104088837833760645">eSIM ಪ್ರೊಫೈಲ್ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ</translation>
+<translation id="8105368624971345109">ಆಫ್ ಮಾಡು</translation>
 <translation id="8107015733319732394">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ Google Play Store  ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ. ಇದು ಕೆಲವು ನಿಮಿಷಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು.</translation>
 <translation id="810728361871746125">ಡಿಸ್‌ಪ್ಲೇ ರೆಸಲ್ಯೂಷನ್</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ಯಾವುದೇ ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳಿಲ್ಲ}=1{1 ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಯನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}one{# ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}other{# ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}}</translation>
@@ -7223,6 +7231,7 @@
 <translation id="8528074251912154910">ಭಾಷೆಗಳನ್ನು ಸೇರಿಸು</translation>
 <translation id="8528962588711550376">ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ.</translation>
 <translation id="8529925957403338845">ತತ್‌ಕ್ಷಣ ಟೆಥರಿಂಗ್ ಸಂಪರ್ಕ ವಿಫಲಗೊಂಡಿದೆ</translation>
+<translation id="8531701051932785007">ವರ್ಧಿತ ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್‌ ಆಫ್ ಆಗಿದೆ</translation>
 <translation id="8534656636775144800">ಓಹ್! ಡೊಮೇನ್ ಅನ್ನು ಸೇರಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಏನೋ ದೋಷ ಸಂಭವಿಸಿದೆ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="8535005006684281994">Netscape ಪ್ರಮಾಣಪತ್ರ ಅಪ್‌ಡೇಟ್‌‌ URL</translation>
 <translation id="8536956381488731905">ಕೀಪ್ರೆಸ್ ಶಬ್ಧ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 77e9f19..cf9c8ec 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">파일</translation>
 <translation id="3788401245189148511">이전에 가능했던 대상:</translation>
 <translation id="3789841737615482174">설치</translation>
+<translation id="3790417903123637354">문제가 발생했습니다. 나중에 다시 시도해 보세요.</translation>
 <translation id="379082410132524484">카드가 만료됨</translation>
 <translation id="3792890930871100565">프린터 연결 해제</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome이 컴퓨터에서 유해 소프트웨어를 발견하지 못함 • 1일 전 확인}other{Chrome이 컴퓨터에서 유해 소프트웨어를 발견하지 못함 • {NUM_DAYS}일 전 확인}}</translation>
@@ -3825,6 +3826,7 @@
 <translation id="4943691134276646401">'<ph name="CHROME_EXTENSION_NAME" />'에서 시리얼 포트에 연결하려고 합니다.</translation>
 <translation id="4944310289250773232">이 인증 서비스는 <ph name="SAML_DOMAIN" />에서 호스팅합니다</translation>
 <translation id="4945439665401275950">지문을 설정하려면 자녀가 전원 버튼을 터치하게 하세요. 자녀의 지문 데이터는 안전하게 저장되며 절대 <ph name="DEVICE_TYPE" /> 외부로 유출되지 않습니다</translation>
+<translation id="4946459324029651239">표준 보호 기능이 적용됩니다.</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{파일 1개}other{파일 #개}}</translation>
 <translation id="495170559598752135">작업</translation>
 <translation id="4953808748584563296">기본 주황색 아바타</translation>
@@ -4408,6 +4410,7 @@
 <translation id="5575528586625653441">데모 등록 요청에 문제가 발생했습니다.</translation>
 <translation id="557722062034137776">기기를 재설정해도 Google 계정 또는 계정에 동기화된 데이터에 영향을 주지 않습니다. 하지만 기기에 로컬로 저장된 파일은 모두 삭제됩니다.</translation>
 <translation id="5578059481725149024">자동 로그인</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" />로의 번역이 완료됨</translation>
 <translation id="558170650521898289">Microsoft Windows Hardware Driver Verification</translation>
 <translation id="5581972110672966454">기기가 도메인에 가입하지 못했습니다. 다시 시도하거나 기기 소유자 또는 관리자에게 문의하세요. 오류 코드: <ph name="ERROR_CODE" /></translation>
 <translation id="5582839680698949063">기본 메뉴</translation>
@@ -6803,6 +6806,7 @@
 <translation id="8054563304616131773">올바른 이메일 주소를 입력하세요.</translation>
 <translation id="8054883179223321715">특정 동영상 사이트에서 사용 가능</translation>
 <translation id="8054921503121346576">USB 키보드 연결됨</translation>
+<translation id="8057414620575339583">사이드 검색</translation>
 <translation id="8058655154417507695">유효기간 연도</translation>
 <translation id="8058986560951482265">일정하지 않음</translation>
 <translation id="8059417245945632445">기기 검사(&amp;I)</translation>
@@ -6854,6 +6858,7 @@
 <translation id="81020759409809034">현지 위치</translation>
 <translation id="8102139037507939978">system_logs.txt에서 개인 식별 정보를 삭제합니다.</translation>
 <translation id="8104088837833760645">eSIM 프로필 다운로드</translation>
+<translation id="8105368624971345109">사용 중지</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" />에 Google Play 스토어를 설치합니다. 설치하는 데 몇 분 정도 걸릴 수 있습니다.</translation>
 <translation id="810728361871746125">화면 해상도</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{타사 쿠키 없음}=1{타사 쿠키 1개가 차단됨}other{타사 쿠키 #개가 차단됨}}</translation>
@@ -7228,6 +7233,7 @@
 <translation id="8528074251912154910">언어 추가</translation>
 <translation id="8528962588711550376">로그인 중입니다.</translation>
 <translation id="8529925957403338845">인스턴트 테더링 연결 실패</translation>
+<translation id="8531701051932785007">향상된 세이프 브라우징 사용 안함</translation>
 <translation id="8534656636775144800">도메인에 가입하는 중에 문제가 발생했습니다. 다시 시도해 주세요.</translation>
 <translation id="8535005006684281994">Netscape Certificate Renewal URL</translation>
 <translation id="8536956381488731905">키를 누를 때 소리 발생</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index dcb89421..4756f701 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Учурда Linux калыбына келтирилүүдө</translation>
 <translation id="1244303850296295656">Кеңейтүү катасы</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> орнотулбай койду: Сүрөттүн URL'инде <ph name="HTTP_ERROR" /> ката коду чыкты. Администраторуңузга кайрылыңыз.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Планшеттин аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Ачуучу ийри кашаа жетишпейт: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Ушуну менен сайттар менен колдонмолор ээлеп турган <ph name="TOTAL_USAGE" /> орун бошотулат</translation>
 <translation id="1251578593170406502">Мобилдик тармактар изделүүдө...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> тандалды</translation>
 <translation id="1442851588227551435">Активдүү Kerberos билетин жөндөө</translation>
 <translation id="1444628761356461360">Бул жөндөөнү түзмөк ээси башкарууда, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Телефондун аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Теманын '<ph name="IMAGE_PATH" />' жүктөлбөй калды.</translation>
 <translation id="1449191289887455076">Дайындоону ырастоо үчүн "<ph name="CURRENTKEY" />" баскычын кайра басыңыз жана <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Веб бет, Жалгыз файл</translation>
@@ -872,7 +870,6 @@
 <translation id="1855079636134697549">Камера күйгүзүлдү</translation>
 <translation id="1856715684130786728">Жайгашкан жерди кошуу…</translation>
 <translation id="1858585891038687145">Программаларды иштеп чыгуучулардын аныктыгын текшерүүдө ушул тастыктаманы ишенимдүү деп белгилеңиз</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Белгисиз түзмөктүн аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Бул папка бош</translation>
 <translation id="1862311223300693744">Атайын VPN, прокси, тармактык коргоо же NAS программасын
     орноткон белеңиз?</translation>
@@ -1248,7 +1245,6 @@
 <translation id="2242687258748107519">Файл тууралуу маалымат</translation>
 <translation id="2246549592927364792">Google'дан сүрөттөрдүн түшүндүрмөлөрү алынсынбы?</translation>
 <translation id="2247738527273549923">Түзмөгүңүздү уюмуңуз башкарат</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Оюнду көзөмөлдөгүчтүн аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Өтмөктөгү терезе катары ачуу</translation>
 <translation id="2249605167705922988">мис. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Тутумга көз чаптыргыч менен ачуу</translation>
@@ -2010,7 +2006,6 @@
 <translation id="3007771295016901659">Кайталанган өтмөк</translation>
 <translation id="3008232374986381779">Linux куралдарын, түзөткүчтөрдү жана бирдиктүү колдонмо тутумдарын иштеп чыгуу куралдарын Chromebook <ph name="DEVICE_TYPE" /> түзмөгүңүздө иштетиңиз. <ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Уруксаттарды өзгөртүү</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Аудио түзмөктүн аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> Wi-Fi тармагына бүгүн туташып, жаңыртууну жүктөп алууну талап кылууда. Же болбосо, трафиги чектелген Интернет аркылуу жүктөп алыңыз (акы алынышы мүмкүн).}other{<ph name="MANAGER" /> Wi-Fi тармагына туташып, жаңыртууну мөөнөтү бүткөнгө чейин жүктөп алууну талап кылууда. Же болбосо, трафиги чектелген Интернет аркылуу жүктөп алыңыз (акы алынышы мүмкүн).}}</translation>
 <translation id="3009300415590184725">Мобилдик дайындар кызматын орнотуу процессин чын эле жокко чыгаргыңыз келеби?</translation>
 <translation id="3009779501245596802">Индекстелген дайындар базалары</translation>
@@ -2316,7 +2311,6 @@
 <translation id="3348038390189153836">Көчмө түзмөк табылды</translation>
 <translation id="3348131053948466246">Быйтыкча сунушталды. Чабыттоо үчүн өйдө же ылдый жебени басыңыз, ал эми киргизүү үчүн Enter баскычын басыңыз.</translation>
 <translation id="3349933790966648062">Эстутумдун колдонулушу</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> түзмөгү жупташтырылган жок; башка түзмөктү тандап, кайталаңыз</translation>
 <translation id="3355936511340229503">Туташуу катасы</translation>
 <translation id="3356580349448036450">Аяктады</translation>
 <translation id="3359256513598016054">Тастыктама саясатындагы чектөөлөр</translation>
@@ -2749,6 +2743,7 @@
 <translation id="3788331399335602504">бул файлдар</translation>
 <translation id="3788401245189148511">Мындай болмок:</translation>
 <translation id="3789841737615482174">Орнотуу</translation>
+<translation id="3790417903123637354">Бир жерден ката кетти. Бир аздан кийин кайталап көрүңүз</translation>
 <translation id="379082410132524484">Карточкаңыздын мөөнөтү бүткөн</translation>
 <translation id="3792890930871100565">Принтерлерди ажыратуу</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome компьютериңизден зыяндуу программа тапкан жок • 1 күн мурун текшерилди}other{Chrome компьютериңизден зыяндуу программа тапкан жок • {NUM_DAYS} күн мурун текшерилди}}</translation>
@@ -3148,7 +3143,6 @@
 <translation id="4200689466366162458">Ыңгайлаштырылган сөздөр</translation>
 <translation id="4200983522494130825">Жаңы &amp;өтмөк</translation>
 <translation id="4201546031411513170">Эмнени шайкештирүү керек экенин жөндөөлөрдөн ар дайым тандай аласыз.</translation>
-<translation id="4202417625268941299">Өркүндөтүлгөн коопсуз серептөө менен Chrome’дун эң күчтүү коопсуздук тутумун колдонуңуз</translation>
 <translation id="420283545744377356">Көшөгөнү өчүрүү</translation>
 <translation id="4206144641569145248">Келгин</translation>
 <translation id="4206323443866416204">Пикир билдирүү</translation>
@@ -3655,7 +3649,6 @@
 <translation id="4759238208242260848">Жүктөлүп алынгандар</translation>
 <translation id="4761104368405085019">Микрофонуңузду колдонуңуз</translation>
 <translation id="4762718786438001384">Түзмөктүн дискинде бош орун өтө аз</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Компьютердин аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Бул барак каралганда төмөнкү кукилер коюлган</translation>
 <translation id="4765582662863429759">Android жазышууларындагы билдирүүлөрдү телефонуңуздан Chromebook'уңузга өткөрүп берип турат</translation>
 <translation id="4768332406694066911">Сизде ушул уюмдардын сиздин аныктыгыңызды текшерген тастыктамалары бар</translation>
@@ -5837,7 +5830,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Коопсуздук 1 мүнөт мурун текшерилди}other{Коопсуздук {NUM_MINS} мүнөт мурун текшерилди}}</translation>
 <translation id="7057767408836081338">Колдонмонун маалыматы алынбай калды. Колдонмону иштетүүгө аракет кылынууда…</translation>
 <translation id="7058024590501568315">Жашырылган тармак</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Чычкандын аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Автоматтык түрдө ишке киргизүүгө коюу</translation>
 <translation id="7062222374113411376">Жаңы эле жабылган сайттарга дайындарды жөнөтүүнү же кабыл алууну аягына чыгарууга уруксат берүү (сунушталат)</translation>
 <translation id="7063129466199351735">Кыска жолдор иштетилүүдө…</translation>
@@ -6001,7 +5993,6 @@
 <translation id="7257173066616499747">Wi-Fi тармактары</translation>
 <translation id="725758059478686223">Басып чыгаруу кызматы</translation>
 <translation id="7257666756905341374">Көчүрүлүп, чапталган дайындарды окуңуз</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Видео камеранын аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Трансформациялар</translation>
 <translation id="7258225044283673131">Колдонмо жооп бербей жатат. Аны жабуу үчүн "Мажбурлап токтотуу" баскычын басыңыз.</translation>
 <translation id="7262004276116528033">Кирүү кызматы <ph name="SAML_DOMAIN" /> доменинде жайгашкан</translation>
@@ -6797,7 +6788,6 @@
 <translation id="8037117027592400564">Кеп синтезаторунун жардамы менен, бардык айтылган текстти окуңуз</translation>
 <translation id="8037357227543935929">Суроо (демейки)</translation>
 <translation id="803771048473350947">Файл</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" /> ичинен <ph name="DEVICE_INDEX" />-түзмөк, Баскычтоптун аталышы: <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Пикириңизди билдириңиз</translation>
 <translation id="8042142357103597104">Тексттин тунук эместиги</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> жооп бербей жатат.</translation>
@@ -6874,6 +6864,7 @@
 <translation id="81020759409809034">Жергиликтүү жайгашкан жери</translation>
 <translation id="8102139037507939978">Адамдын инсандыгын аныктоочу маалыматты system_logs.txt таржымалынан өчүрүү.</translation>
 <translation id="8104088837833760645">eSIM-карта профилин жүктөп алуу</translation>
+<translation id="8105368624971345109">Өчүрүү</translation>
 <translation id="8107015733319732394"><ph name="DEVICE_TYPE" /> түзмөгүңүзгө Google Play Store орнотулууда. Бир нече мүнөт кетиши мүмкүн.</translation>
 <translation id="810728361871746125">Дисплейдин дааналыгы</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Үчүнчү тараптын cookie файлдары жок}=1{Үчүнчү тараптын 1 cookie файлы бөгөттөлдү}other{Үчүнчү тараптын # cookie файлы бөгөттөлдү}}</translation>
@@ -6938,7 +6929,6 @@
 <translation id="8168071266284693455">Кыстармаларыңыз, сырсөздөрүңүз жана башка нерселер бардык түзмөктөрүңүздө шайкештирилет</translation>
 <translation id="8168435359814927499">Мазмун</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Өтмөктү окуу тизмесине кошуу}other{Өтмөктөрдү окуу тизмесине кошуу}}</translation>
-<translation id="8169849063724750395">Кайра күйгүзүү</translation>
 <translation id="8171334254070436367">Бардык кыйытмаларды жашыруу</translation>
 <translation id="8174047975335711832">Түзмөк маалыматы</translation>
 <translation id="8174876712881364124">Камдык көчүрмөнү Google Drive'га сактоо. Дайын-даректериңизди оңой эле калыбына келтирип, бир түзмөктөн экинчисине өткөрүүгө мүмкүнчүлүк берет. Көчүрмөдө колдонмо дайындары дагы сакталат. Камдык көчүрмөлөр Google'га жүктөлүп берилип, балаңыздын Google аккаунтунун сырсөзү менен шифрленет. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation>
@@ -7012,7 +7002,6 @@
 <translation id="8249615410597138718">Түзмөктөрүңүзгө жөнөтүңүз</translation>
 <translation id="8249672078237421304">Барактар түшүнүксүз тилде болсо, аларды которуу сунушталсын</translation>
 <translation id="8251441930213048644">Азыр жаңыртуу</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> менен жупташтырылууда</translation>
 <translation id="8251578425305135684">Бармакбасым өчүрүлдү.</translation>
 <translation id="825238165904109940">URL'дер ар дайым толугу менен көрүнсүн</translation>
 <translation id="8252569384384439529">Жүктөлүп берилүүдө…</translation>
@@ -7254,7 +7243,6 @@
 <translation id="8534656636775144800">Ой! Доменге туташуу учурунда бир жерден ката кетти. Кайталап көрүңүз.</translation>
 <translation id="8535005006684281994">Netscape тастыктамасын жаңылоо URL</translation>
 <translation id="8536956381488731905">Баскычты басканда үн чыгат</translation>
-<translation id="8538718737588735385">Кайра күйгүзүү</translation>
 <translation id="8539727552378197395">Жок (HttpOnly)</translation>
 <translation id="8539766201049804895">Жаңыртуу</translation>
 <translation id="8540136935098276800">Туура форматталган URL дарегин киргизиңиз</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 6c0b51f..456762c 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">ການກູ້ຄືນຂໍ້ມູນຂອງ Linux ພວມດຳເນີນຢູ່ໃນປັດຈຸບັນ</translation>
 <translation id="1244303850296295656">ສ່ວນຂະຫຍາຍຜິດພາດ</translation>
 <translation id="1246863218384630739">ບໍ່ສາມາດຕິດຕັ້ງ <ph name="VM_NAME" /> ໄດ້: URL ຮູບພາບຕອບລະຫັດຜິດພາດ <ph name="HTTP_ERROR" /> ກັບມາ. ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ.</translation>
-<translation id="1247071602516579380">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ແທັບເລັດຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">ເຄື່ອງໝາຍວົງປີກກາເປີດທີ່ຕ້ອງມີ: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">ນີ້ຈະລຶບລ້າງຂໍ້ມູນ <ph name="TOTAL_USAGE" /> ທີ່ເກັບໄວ້ໂດຍເວັບໄຊ ແລະ ແອັບທີ່ຕິດຕັ້ງໄວ້</translation>
 <translation id="1251578593170406502">ກຳລັງສະແກນຫາເຄືອຂ່າຍອິນເຕີເນັດມືຖື...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837">ເລືອກ <ph name="NUMBER_OF_ITEMS_SELECTED" /> ແລ້ວ</translation>
 <translation id="1442851588227551435">ຕັ້ງຄ່າປີ້ Kerberos ທີ່ນຳໃຊ້ຢູ່</translation>
 <translation id="1444628761356461360">ການຕັ້ງຄ່ານີ້ຖືກຈັດການໂດຍ​ເຈົ້າ​ຂອງ​ອຸ​ປະ​ກອນ​, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ໂທລະສັບຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">ບໍ່ສາມາດໂຫຼດ '<ph name="IMAGE_PATH" />' ສໍາລັບເທມໄດ້.</translation>
 <translation id="1449191289887455076">ກົດ “<ph name="CURRENTKEY" />” ອີກເທື່ອໜຶ່ງເພື່ອຢືນຢັນການມອບໝາຍ ແລະ <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">ໜ້າເວັບ, ໄຟລ​໌​ດ່ຽວ</translation>
@@ -870,7 +868,6 @@
 <translation id="1855079636134697549">ກ້ອງເປີດຢູ່</translation>
 <translation id="1856715684130786728">ເພີ່ມ​ທີ່ຕັ້ງ...</translation>
 <translation id="1858585891038687145">ເຊື່ອໝັ້ນໃບຢັ້ງຢືນນີ້ສຳລັບການລະບຸຕົວຕົນຜູ້ສ້າງຊອບແວ</translation>
-<translation id="1859787252990099899">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ອຸປະກອນທີ່ບໍ່ຮູ້ຈັກຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">ໂຟນເດີນີ້ຫວ່າງເປົ່າ</translation>
 <translation id="1862311223300693744">ທ່ານມີ VPN, ພຣັອກຊີ, firewall ຫຼື ຊອບແວ NAS ພິເສດຕິດຕັ້ງໄວ້ບໍ່?</translation>
 <translation id="1863182668524159459">ບໍ່ພົບຜອດອະນຸກຳ</translation>
@@ -1245,7 +1242,6 @@
 <translation id="2242687258748107519">ຂໍ້​ມູນໄຟລ໌</translation>
 <translation id="2246549592927364792">ຮັບລາຍລະອຽດຮູບພາບຈາກ Google ບໍ?</translation>
 <translation id="2247738527273549923">ອຸປະກອນນີ້ແມ່ນຈັດການໂດຍອົງການຂອງທ່ານ</translation>
-<translation id="2249061317998743208">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ມືເກມຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">ເປີດເປັນໜ້າຈໍແຖບ</translation>
 <translation id="2249605167705922988">ຕົວ​ຢ່າງ​: 1-5​, 8​, 11-13</translation>
 <translation id="2251218783371366160">ເປີດດ້ວຍຕົວເບິ່ງລະບົບ</translation>
@@ -2007,7 +2003,6 @@
 <translation id="3007771295016901659">ແຖບຊໍ້າກັນ</translation>
 <translation id="3008232374986381779">ເປີດເຄື່ອງມື Linux, ຕົວແກ້ໄຂ ແລະ IDE ໃນ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">ຣີເຊັດການອະນຸຍາດ</translation>
-<translation id="3008396025115884998">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ອຸປະກອນສຽງຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> ກຳນົດໃຫ້ທ່ານເຊື່ອມຕໍ່ກັບ Wi-Fi ມື້ນີ້ເພື່ອດາວໂຫຼດການອັບເດດ. ຫຼື ດາວໂຫຼດຈາກການເຊື່ອມຕໍ່ແບບວັດແທກປະລິມານອິນເຕີເນັດ (ອາດເກັບຄ່າບໍລິການ).}other{<ph name="MANAGER" /> ກຳນົດໃຫ້ທ່ານເຊື່ອມຕໍ່ກັບ Wi-Fi ແລະ ດາວໂຫຼດການອັບເດດກ່ອນເວລາທີ່ກຳນົດໄວ້. ຫຼື ດາວໂຫຼດຈາກການເຊື່ອມຕໍ່ແບບວັດແທກປະລິມານອິນເຕີເນັດ (ອາດເກັບຄ່າບໍລິການ).}}</translation>
 <translation id="3009300415590184725">ທ່ານແນ່ໃຈບໍ່ວ່າ ທ່ານຕ້ອງການຍົກເລີກຂະບວນການຕັ້ງການບໍລິການຂໍ້ມູນມືຖື?</translation>
 <translation id="3009779501245596802">ຖານ​ຂໍ້​ມູນ​ເຂົ້າດັດ​ຊະ​ນີແລ້ວ</translation>
@@ -2313,7 +2308,6 @@
 <translation id="3348038390189153836">ກວດພົບອຸປະກອນທີ່​ສາມາດຖອດອອກໄດ້</translation>
 <translation id="3348131053948466246">ແນະນຳອີໂມຈິແລ້ວ. ກົດປຸ່ມລູກສອນຂຶ້ນ ຫຼື ລົງເພື່ອເລື່ອນໄປມາ, ກົດປຸ່ມ enter ເພື່ອແຊກໃສ່.</translation>
 <translation id="3349933790966648062">ຮ່ອງຮອຍຄວາມຈຳ</translation>
-<translation id="3354972872297836698">ບໍ່ສາມາດຈັບຄູ່ອຸປະກອນ <ph name="DEVICE_NAME" /> ໄດ້; ກະລຸນາເລືອກອຸປະກອນເພື່ອລອງໃໝ່</translation>
 <translation id="3355936511340229503">ການເຊື່ອມຕໍ່ຜິດພາດ</translation>
 <translation id="3356580349448036450">ສຳ​ເລັດ</translation>
 <translation id="3359256513598016054">ຂໍ້ຈໍາກັດນະໂຍບາຍໃບຢັ້ງຢືນ</translation>
@@ -2745,6 +2739,7 @@
 <translation id="3788331399335602504">ໄຟລ໌ເຫຼົ່ານີ້</translation>
 <translation id="3788401245189148511">ມັນ​ສາ​ມາດ​:</translation>
 <translation id="3789841737615482174">​ຕິດ​ຕັ້ງ</translation>
+<translation id="3790417903123637354">ມີບາງຢ່າງຜິດພາດ. ລອງໃໝ່ໃນພາຍຫລັງ</translation>
 <translation id="379082410132524484">ບັດຂອງທ່ານໝົດອາຍຸແລ້ວ</translation>
 <translation id="3792890930871100565">ຕັດເຊື່ອມຕໍ່ເຄື່ອງພິມ</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ບໍ່ພົບຊອບແວອັນຕະລາຍໃນຄອມພິວເຕີຂອງທ່ານ • ກວດເມື່ອ 1 ມື້ກ່ອນ}other{Chrome ບໍ່ພົບຊອບແວອັນຕະລາຍໃນຄອມພິວເຕີຂອງທ່ານ • ກວດເມື່ອ {NUM_DAYS} ມື້ກ່ອນ}}</translation>
@@ -3144,7 +3139,6 @@
 <translation id="4200689466366162458">ຄຳສັບທີ່ກຳນົດເອງ</translation>
 <translation id="4200983522494130825">ແຖບ​ໃຫມ່</translation>
 <translation id="4201546031411513170">ທ່ານສາມາດເລືອກສິ່ງທີ່ຈະຊິ້ງຂໍ້ມູນໄດ້ທຸກເທື່ອໃນການຕັ້ງຄ່າ.</translation>
-<translation id="4202417625268941299">ດ້ວຍ Safe Browsing ທີ່ປັບປຸງດີຂຶ້ນ, ທ່ານຈະໄດ້ຮັບຄວາມປອດໄພທີ່ເຂັ້ມແຂງທີ່ສຸດຂອງ Chrome</translation>
 <translation id="420283545744377356">ປິດສະກຣີນເຊັບເວີ</translation>
 <translation id="4206144641569145248">ມະນຸດຕ່າງດາວ</translation>
 <translation id="4206323443866416204">ລາຍງານຄຳຕິຊົມ</translation>
@@ -3651,7 +3645,6 @@
 <translation id="4759238208242260848">ດາວ​ໂຫຼດ</translation>
 <translation id="4761104368405085019">ໃຊ້ໄມໂຄຣໂຟນຂອງທ່ານ</translation>
 <translation id="4762718786438001384">ພື້ນທີ່ດິສກ໌ໃນອຸປະກອນເຫຼືອໜ້ອຍທີ່ສຸດ</translation>
-<translation id="4762898026821161650">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ຄອມພິວເຕີຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">ຄຸກກີ້ຕໍ່ໄປນີ້ຖືກຕັ້ງຂຶ້ນ ເມື່ອທ່ານເບິ່ງໜ້ານີ້</translation>
 <translation id="4765582662863429759">ອະນຸຍາດໃຫ້ Android Messages ສົ່ງຕໍ່ຂໍ້ຄວາມຈາກໂທລະສັບຂອງທ່ານໄປໃສ່ Chromebook ທ່ານ</translation>
 <translation id="4768332406694066911">ທ່ານມີໃບຢັ້ງຢືນຈາກ​ໜ່ວຍ​ງານເຫຼົ່ານີ້ທີ່ລະບຸຕົວຕົນຂອງທ່ານ</translation>
@@ -5830,7 +5823,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{ດຳເນີນການກວດສອບຄວາມປອດໄພເມື່ອ 1 ນາທີກ່ອນ}other{ດຳເນີນການກວດສອບຄວາມປອດໄພເມື່ອ {NUM_MINS} ນາທີກ່ອນ}}</translation>
 <translation id="7057767408836081338">ບໍ່ສາມາດຮັບເອົາຂໍ້ມູນແອັບໄດ້, ຍັງພະຍາຍາມເອີ້ນໃຊ້ແອັບຢູ່...</translation>
 <translation id="7058024590501568315">ເຄືອຂ່າຍທີ່ຖືກເຊື່ອງໄວ້</translation>
-<translation id="70582545822664495">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ເມົ້າຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">ຕັ້ງເປັນເລີ່ມເປີດໃຊ້ອັດຕະໂນມັດ</translation>
 <translation id="7062222374113411376">ອະນຸຍາດໃຫ້ເວັບໄຊທີ່ປິດເມື່ອບໍ່ດົນມານີ້ເຮັດສຳເລັດການສົ່ງ ແລະ ການຮັບຂໍ້ມູນ (ແນະນຳ)</translation>
 <translation id="7063129466199351735">ກໍາລັງປະມວນຜົນທາງລັດ...</translation>
@@ -5994,7 +5986,6 @@
 <translation id="7257173066616499747">ເຄືອ​ຂ່າຍ Wi-Fi</translation>
 <translation id="725758059478686223">ການບໍລິການພິມ</translation>
 <translation id="7257666756905341374">ອ່ານຂໍ້ມູນທີ່ທ່ານກັອບປີ້ ແລະແປະໃສ່</translation>
-<translation id="7258006747130724016">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ກ້ອງຖ່າຍວິດີໂອຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">ການປ່ຽນແປງ</translation>
 <translation id="7258225044283673131">ແອັບພລິເຄຊັນບໍ່ຕອບສະໜອງ. ເລືອກ "ບັງຄັບປິດ" ເພື່ອປິດແອັບ.</translation>
 <translation id="7262004276116528033">ບໍລິການເຂົ້າສູ່ລະບົບນີ້ຖືກຝາກໄວ້ໂດຍ <ph name="SAML_DOMAIN" /></translation>
@@ -6789,7 +6780,6 @@
 <translation id="8037117027592400564">ອ່ານຂໍ້ຄວາມທັງໝົດທີ່ໄດ້ເວົ້າໃນລະຫວ່າງການໃຊ້ຄໍາເວົ້າທີ່ຊິງໂຄຣໄນແລ້ວ</translation>
 <translation id="8037357227543935929">ຖາມ (ຄ່າເລີ່ມຕົ້ນ)</translation>
 <translation id="803771048473350947">ໄຟລ໌</translation>
-<translation id="8038399858950372766">ອຸປະກອນທີ <ph name="DEVICE_INDEX" /> ຈາກທັງໝົດ <ph name="DEVICE_COUNT" />, ແປ້ນພິມຊື່ <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">ສົ່ງຄຳຕິຊົມ</translation>
 <translation id="8042142357103597104">ຄວາມໂປ່ງແສງຂອງຂໍ້ຄວາມ</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> ບໍ່ຕອບສະໜອງ.</translation>
@@ -6813,6 +6803,7 @@
 <translation id="8054563304616131773">ກະ​ລຸ​ນາ​ໃສ່​ທີ່​ຢູ່​ອີ​ເມວໃຊ້​ໄດ້​ເຂົ້າ​ໄປ</translation>
 <translation id="8054883179223321715">ມີໃຫ້ສຳລັບເວັບໄຊວິດີໂອສະເພາະ</translation>
 <translation id="8054921503121346576">ຄີບອດ USB ເຊື່ອມ​ຕໍ່ແລ້ວ</translation>
+<translation id="8057414620575339583">ການຊອກຫາດ້ານຂ້າງ</translation>
 <translation id="8058655154417507695">ປີໝົດອາຍຸ</translation>
 <translation id="8058986560951482265">ກະຕຸກ</translation>
 <translation id="8059417245945632445">​ກວດ​ກາ​ອຸ​ປະ​ກອນ</translation>
@@ -6864,6 +6855,7 @@
 <translation id="81020759409809034">ສະຖານທີ່ໃນເຄື່ອງ</translation>
 <translation id="8102139037507939978">ລຶບຂໍ້ມູນທີ່ລະບຸຕົວຕົນບຸກຄົນໄດ້ອອກຈາກ system_logs.txt.</translation>
 <translation id="8104088837833760645">ດາວໂຫຼດໂປຣໄຟລ໌ eSIM</translation>
+<translation id="8105368624971345109">ປິດ</translation>
 <translation id="8107015733319732394">ກຳລັງຕິດຕັ້ງ Google Play Store ໃນ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ. ນີ້ສາມາດໃຊ້ເວລາສອງສາມນາທີ.</translation>
 <translation id="810728361871746125">ຄວາມລະອຽດຈໍສະແດງຜົນ</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ບໍ່ມີຄຸກກີ້ພາກສ່ວນທີສາມ}=1{ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມໄວ້ 1 ລາຍການ}other{ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມໄວ້ # ລາຍການ}}</translation>
@@ -6928,7 +6920,6 @@
 <translation id="8168071266284693455">ບຸກມາກ, ລະຫັດຜ່ານ, ປະຫວັດ ແລະ ອື່ນໆຂອງທ່ານແມ່ນຖືກຊິ້ງຂໍ້ມູນຢູ່ອຸປະກອນທັງໝົດຂອງທ່ານ</translation>
 <translation id="8168435359814927499">ເນື້ອ​ໃນ</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ເພີ່ມແຖບໃສ່ລາຍການທີ່ຈະອ່ານ}other{ເພີ່ມແຖບໃສ່ລາຍການທີ່ຈະອ່ານ}}</translation>
-<translation id="8169849063724750395">ເປີດຄືນໃໝ່</translation>
 <translation id="8171334254070436367">ເຊື່ອງບັດທັງໝົດ</translation>
 <translation id="8174047975335711832">ຂໍ້​ມູນ​ອຸ​ປະ​ກອນ</translation>
 <translation id="8174876712881364124">ສຳຮອງຂໍ້ມູນໄວ້ໃນ Google Drive. ກູ້ຄືນຂໍ້ມູນຂອງທ່ານໄດ້ຢ່າງງ່າຍດາຍ ຫຼື ປ່ຽນອຸປະກອນໄດ້ທຸກເວລາ. ຂໍ້ມູນທີ່ສຳຮອງໄວ້ຂອງທ່ານຮວມເອົາຂໍ້ມູນແອັບ. ຂໍ້ມູນທີ່ສຳຮອງໄວ້ຂອງທ່ານຖືກອັບໂຫຼດໄວ້ໃນ Google ແລະ ເຂົ້າລະຫັດໄວ້ໂດຍໃຊ້ລະຫັດຜ່ານບັນຊີ Google ຂອງລູກທ່ານ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation>
@@ -7002,7 +6993,6 @@
 <translation id="8249615410597138718">ສົ່ງຫາອຸປະກອນຂອງທ່ານ</translation>
 <translation id="8249672078237421304">ສະເໜີແປໜ້າຕ່າງໆທີ່ບໍ່ເປັນພາສາທີ່ທ່ານອ່ານໄດ້</translation>
 <translation id="8251441930213048644">ໂຫຼດຂໍ້ມູນໃຫມ່ດຽວນີ້</translation>
-<translation id="8251509999076836464">ກຳລັງຈັບຄູ່ຫາ <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">ເອົາຮູບນ້ອຍອອກໄປແລ້ວ.</translation>
 <translation id="825238165904109940">ສະແດງ URL ເຕັມທຸກເທື່ອ</translation>
 <translation id="8252569384384439529">ກຳລັງອັບໂຫລດ...</translation>
@@ -7244,7 +7234,6 @@
 <translation id="8534656636775144800">ອຸ້ຍ!  ມີບາງຢ່າງຜິດພາດໃນເວລາພະຍາຍາມເຂົ້າຮ່ວມໂດເມນ. ກະລຸນາລອງອີກຄັ້ງ.</translation>
 <translation id="8535005006684281994">URL ຕໍ່ໃບຢັ້ງຢືນ Netscape ໃໝ່</translation>
 <translation id="8536956381488731905">ສົ່ງສຽງເມື່ອກົດປຸ່ມ</translation>
-<translation id="8538718737588735385">ເປີດຄືນໃໝ່</translation>
 <translation id="8539727552378197395">ບໍ່ແມ່ນ (HttpOnly)</translation>
 <translation id="8539766201049804895">ອັບເກຣດ</translation>
 <translation id="8540136935098276800">ປ້ອນ URL ທີ່ມີຮູບແບບຖືກຕ້ອງ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index ce55bb5..dfa9a27 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -2521,6 +2521,7 @@
 <translation id="3557101512409028104">Nustatykite svetainės ir įrenginio naudojimo laiko apribojimus naudodami „Family Link“</translation>
 <translation id="3559262020195162408">Nepavyko įrenginyje įdiegti politikos.</translation>
 <translation id="3559533181353831840">Liko maždaug <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">Gaukite patvirtinimą vibruojant atlikę tokius veiksmus kaip ekrano išskaidymas ir darbalaukių perjungimas.</translation>
 <translation id="3560034655160545939">&amp;Rašybos tikrinimas</translation>
 <translation id="3562423906127931518">Šis procesas gali užtrukti kelias minutes. Nustatomas „Linux“ sudėtinis rodinys.</translation>
 <translation id="3562655211539199254">Peržiūrėkite pastaruosius „Chrome“ skirtukus telefonu</translation>
@@ -2745,6 +2746,7 @@
 <translation id="3788331399335602504">šie failai</translation>
 <translation id="3788401245189148511">Prašoma leidimo:</translation>
 <translation id="3789841737615482174">Įdiegti</translation>
+<translation id="3790417903123637354">Įvyko klaida. Vėliau bandykite dar kartą</translation>
 <translation id="379082410132524484">Kortelės galiojimo laikas baigėsi</translation>
 <translation id="3792890930871100565">Atjungti spausdintuvus</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{„Chrome“ kompiuteryje nerado žalingos programinės įrangos. • Tikrinta prieš 1 dieną}one{„Chrome“ kompiuteryje nerado žalingos programinės įrangos. • Tikrinta prieš {NUM_DAYS} dieną}few{„Chrome“ kompiuteryje nerado žalingos programinės įrangos. • Tikrinta prieš {NUM_DAYS} dienas}many{„Chrome“ kompiuteryje nerado žalingos programinės įrangos. • Tikrinta prieš {NUM_DAYS} dienos}other{„Chrome“ kompiuteryje nerado žalingos programinės įrangos. • Tikrinta prieš {NUM_DAYS} dienų}}</translation>
@@ -3831,6 +3833,7 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ nori prisijungti prie nuosekliojo prievado</translation>
 <translation id="4944310289250773232">Ši autentifikavimo paslauga priglobiama <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Jei norite nustatyti kontrolinį kodą, paprašykite, kad vaikas paliestų maitinimo mygtuką. Vaiko kontrolinio kodo duomenys saugomi saugiai ir niekada nepatenka už įrenginio „<ph name="DEVICE_TYPE" />“ ribų.</translation>
+<translation id="4946459324029651239">Jūsų apsauga yra įprasta</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{failą}one{# failą}few{# failus}many{# failo}other{# failų}}</translation>
 <translation id="495170559598752135">Veiksmai</translation>
 <translation id="4953808748584563296">Numatytasis oranžinis pseudoportretas</translation>
@@ -4414,6 +4417,7 @@
 <translation id="5575528586625653441">Iškilo su demonstracinio režimo registracijos užklausa susijusi problema.</translation>
 <translation id="557722062034137776">Iš naujo nustačius įrenginį, tai neturės įtakos jūsų „Google“ paskyroms ar šiose paskyrose sinchronizuotiems duomenims. Tačiau bus ištrinti visi įrenginyje saugomi duomenys.</translation>
 <translation id="5578059481725149024">Automatinis prisijungimas</translation>
+<translation id="5581134892342029705">Baigta versti į <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">„Microsoft Windows“ aparatinės įrangos tvarkyklės patvirtinimas</translation>
 <translation id="5581972110672966454">Nepavyko prijungti įrenginio prie domeno. Bandykite dar kartą arba susisiekite su įrenginio savininku ar administratoriumi. Klaidos kodas: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Pagrindinis meniu</translation>
@@ -4919,6 +4923,7 @@
 <translation id="6112931163620622315">Patikrinkite telefoną</translation>
 <translation id="6113434369102685411">Nustatykite numatytąjį „Chrome“ naršyklės ir „<ph name="DEVICE_TYPE" />“ paleidimo priemonės paieškos variklį</translation>
 <translation id="6113942107547980621">Norėdami naudoti „Smart Lock“ telefone pereikite į pagrindinio naudotojo profilį</translation>
+<translation id="611684075852771314">Šie žurnalai išsaugoti aplanke „Mano failai“ kaip</translation>
 <translation id="6116921718742659598">Keisti kalbos ir įvesties nustatymus</translation>
 <translation id="6119927814891883061">Įrenginį pavadinti „<ph name="DEVICE_NAME" />“</translation>
 <translation id="6120205520491252677">Prisegti šį puslapį prie pradžios ekrano...</translation>
@@ -5695,6 +5700,7 @@
 <translation id="6930036377490597025">Išorinis saugos raktas arba integruotas jutiklis</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Plėtinys atmestas}one{Atmestas # plėtinys}few{Atmesti # plėtiniai}many{Atmesta # plėtinio}other{Atmesta # plėtinių}}</translation>
 <translation id="6930321203306643451">Naujovinimas baigtas</translation>
+<translation id="6931690462168617033">Paspaudimo stiprumas</translation>
 <translation id="6935286146439255109">Nėra popieriaus dėklo</translation>
 <translation id="693807610556624488">Rašymo operacija viršija didžiausią įrenginiui „<ph name="DEVICE_NAME" />“ leistiną atributo simbolių skaičių.</translation>
 <translation id="6938386202199793006">Esate išsaugoję 1 spausdintuvą.</translation>
@@ -6825,6 +6831,7 @@
 <translation id="8064279191081105977">Grupė <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Ryšio dialogo langas</translation>
 <translation id="8069615408251337349">„Google“ spausdinimas iš debesies</translation>
+<translation id="8070662218171013510">Juntamas grįžtamasis ryšys</translation>
 <translation id="8071432093239591881">Spausdinti kaip vaizdą</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Programos duomenys gali būti bet kokie programos išsaugoti duomenys (atsižvelgiant į kūrėjo nustatymus), įskaitant kontaktus, pranešimus ir nuotraukas.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Atsarginės kopijos duomenys nebus įtraukti skaičiuojant Disko saugyklos kvotą.<ph name="END_PARAGRAPH2" />
@@ -6862,6 +6869,7 @@
 <translation id="81020759409809034">Vietinė vieta</translation>
 <translation id="8102139037507939978">Panaikinti asmens identifikavimo informaciją iš „system_logs.txt“.</translation>
 <translation id="8104088837833760645">Atsisiųsti „eSIM“ kortelės profilį</translation>
+<translation id="8105368624971345109">Išjungti</translation>
 <translation id="8107015733319732394">Įdiegiama „Google Play“ parduotuvė jūsų „<ph name="DEVICE_TYPE" />“ įrenginyje. Tai gali šiek tiek užtrukti.</translation>
 <translation id="810728361871746125">Ekrano skyra</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nėra trečiųjų šalių slapukų}=1{1 trečiųjų šalių slapukas}one{# trečiųjų šalių slapukas}few{# trečiųjų šalių slapukai}many{# trečiųjų šalių slapuko}other{# trečiųjų šalių slapukų}}</translation>
@@ -7236,6 +7244,7 @@
 <translation id="8528074251912154910">Pridėti kalbų</translation>
 <translation id="8528962588711550376">Prisijungiama.</translation>
 <translation id="8529925957403338845">Nepavyko užmegzti momentinio įrenginio kaip modemo naudojimo ryšio</translation>
+<translation id="8531701051932785007">Sustiprintas saugus naršymas išjungtas</translation>
 <translation id="8534656636775144800">Oi, kažkas nepavyko bandant prijungti prie domeno. Bandykite dar kartą.</translation>
 <translation id="8535005006684281994">„Netscape“ sertifikato atnaujinimo URL</translation>
 <translation id="8536956381488731905">Garsas paspaudus klavišą</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 4b84fbcf..d5529a2 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -2729,6 +2729,7 @@
 <translation id="3788331399335602504">šos failus</translation>
 <translation id="3788401245189148511">Varētu:</translation>
 <translation id="3789841737615482174">Instalēt</translation>
+<translation id="3790417903123637354">Radās kļūda. Vēlāk mēģiniet vēlreiz.</translation>
 <translation id="379082410132524484">Kartes derīguma termiņš ir beidzies</translation>
 <translation id="3792890930871100565">Atvienot printerus</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome neatrada kaitīgu programmatūru jūsu datorā. • Pārbaudīts: pirms 1 dienas.}zero{Chrome neatrada kaitīgu programmatūru jūsu datorā. • Pārbaudīts: pirms {NUM_DAYS} dienām.}one{Chrome neatrada kaitīgu programmatūru jūsu datorā. • Pārbaudīts: pirms {NUM_DAYS} dienas.}other{Chrome neatrada kaitīgu programmatūru jūsu datorā. • Pārbaudīts: pirms {NUM_DAYS} dienām.}}</translation>
@@ -3814,6 +3815,7 @@
 <translation id="4943691134276646401">Paplašinājums “<ph name="CHROME_EXTENSION_NAME" />” vēlas izveidot savienojumu ar seriālo pieslēgvietu</translation>
 <translation id="4944310289250773232">Šo autentifikācijas pakalpojumu mitina <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Lai varētu iestatīt pirksta nospiedumu, bērnam ir jāpieskaras barošanas pogai. Bērna pirksta nospieduma dati tiek glabāti drošībā un vienmēr atrodas tikai šajā ierīcē (<ph name="DEVICE_TYPE" />).</translation>
+<translation id="4946459324029651239">Jums ir pieejama standarta aizsardzība.</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{fails}zero{# failu}one{# fails}other{# faili}}</translation>
 <translation id="495170559598752135">Darbības</translation>
 <translation id="4953808748584563296">Noklusējuma iemiesojums oranžā krāsā</translation>
@@ -4397,6 +4399,7 @@
 <translation id="5575528586625653441">Radās problēma ar demonstrācijas reģistrācijas pieprasījumu.</translation>
 <translation id="557722062034137776">Ierīces atiestatīšana neietekmēs jūsu Google kontus un ar tiem sinhronizētos datus, taču tiks dzēsti visi faili, kuri ierīcē ir saglabāti lokāli.</translation>
 <translation id="5578059481725149024">Automātiska pierakstīšanās</translation>
+<translation id="5581134892342029705">Tulkojums tālāk norādītajā valodā ir pabeigts: <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Microsoft Windows aparatūras dziņa verifikācija</translation>
 <translation id="5581972110672966454">Ierīci nevar saistīt ar domēnu. Lūdzu, mēģiniet vēlreiz vai sazinieties ar ierīces īpašnieku vai administratoru. Kļūdas kods: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Galvenā izvēlne</translation>
@@ -6791,6 +6794,7 @@
 <translation id="8054563304616131773">Lūdzu, ievadiet derīgu e-pasta adresi.</translation>
 <translation id="8054883179223321715">Pieejama konkrētām videoklipu vietnēm</translation>
 <translation id="8054921503121346576">USB tastatūra ir pievienota.</translation>
+<translation id="8057414620575339583">Meklēšanas sānu josla</translation>
 <translation id="8058655154417507695">Derīguma termiņa gads</translation>
 <translation id="8058986560951482265">Raustīgs attēls</translation>
 <translation id="8059417245945632445">&amp;Pārbaudīt ierīces</translation>
@@ -6842,6 +6846,7 @@
 <translation id="81020759409809034">Lokālā atrašanās vieta</translation>
 <translation id="8102139037507939978">Izņemt personu identificējošu informāciju no faila system_logs.txt.</translation>
 <translation id="8104088837833760645">Lejupielādēt eSIM profilu</translation>
+<translation id="8105368624971345109">Izslēgt</translation>
 <translation id="8107015733319732394">Notiek Google Play veikala instalēšana jūsu ierīcē (<ph name="DEVICE_TYPE" />). Tas var ilgt dažas minūtes.</translation>
 <translation id="810728361871746125">Displeja izšķirtspēja</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nav trešās puses sīkfailu}=1{Bloķēts 1 trešās puses sīkfails}zero{Bloķēti # trešās puses sīkfaili}one{Bloķēts # trešās puses sīkfails}other{Bloķēti # trešās puses sīkfaili}}</translation>
@@ -7216,6 +7221,7 @@
 <translation id="8528074251912154910">Pievienot valodas</translation>
 <translation id="8528962588711550376">Pierakstīšanās.</translation>
 <translation id="8529925957403338845">Tūlītējas piesaistes savienojuma izveide neizdevās</translation>
+<translation id="8531701051932785007">Droša pārlūkošana ar papildu aizsardzību ir izslēgta</translation>
 <translation id="8534656636775144800">Diemžēl, mēģinot saistīt domēnu, radās problēma. Lūdzu, mēģiniet vēlreiz.</translation>
 <translation id="8535005006684281994">Netscape sertifikāta atjaunošanas URL</translation>
 <translation id="8536956381488731905">Skaņa, nospiežot taustiņu</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index cec29b5..59da8e0 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -253,7 +253,6 @@
 <translation id="1244265436519979884">Обновата на Linux моментално е во тек</translation>
 <translation id="1244303850296295656">Грешка на наставка</translation>
 <translation id="1246863218384630739">Не можеше да се инсталира <ph name="VM_NAME" />: се појави грешка со код <ph name="HTTP_ERROR" /> за URL на сликата. Контактирајте со администраторот.</translation>
-<translation id="1247071602516579380">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, таблет наречен „<ph name="DEVICE_NAME" />“</translation>
 <translation id="1251366534849411931">Се очекува лева голема заграда: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Ова ќе ги избрише податоците (<ph name="TOTAL_USAGE" />) складирани од сајтовите и инсталираните апликации</translation>
 <translation id="1251578593170406502">Се скенираат мрежи за мобилен интернет…</translation>
@@ -440,7 +439,6 @@
 <translation id="144283815522798837">Избрани се <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Поставете активен билет на Kerberos</translation>
 <translation id="1444628761356461360">Со поставката управува сопственикот на уредот, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, телефон наречен „<ph name="DEVICE_NAME" />“</translation>
 <translation id="144518587530125858">Не може да вчита „<ph name="IMAGE_PATH" />“ за тема.</translation>
 <translation id="1449191289887455076">Притиснете „<ph name="CURRENTKEY" />“ повторно за да го потврдите назначувањето и <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Веб-страница, единечна датотека</translation>
@@ -873,7 +871,6 @@
 <translation id="1855079636134697549">Камерата е вклучена</translation>
 <translation id="1856715684130786728">Додај локација...</translation>
 <translation id="1858585891038687145">Имајте доверба во сертификатов за идентификување на производителите на софтвер</translation>
-<translation id="1859787252990099899">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, непознат уред наречен „<ph name="DEVICE_NAME" />“</translation>
 <translation id="1861262398884155592">Папкава е празна</translation>
 <translation id="1862311223300693744">Дали имате инсталирано посебна VPN, прокси, заштитен ѕид или
     софтвер NAS?</translation>
@@ -1249,7 +1246,6 @@
 <translation id="2242687258748107519">Информации за датотека</translation>
 <translation id="2246549592927364792">Сакате да добивате описи за слики од Google?</translation>
 <translation id="2247738527273549923">Со уредот управува вашата организација</translation>
-<translation id="2249061317998743208">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, контролер за игри наречен „<ph name="DEVICE_NAME" />“</translation>
 <translation id="2249111429176737533">Отвори како прозорец со картички</translation>
 <translation id="2249605167705922988">на пр. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Отвори со прикажувач на систем</translation>
@@ -2011,7 +2007,6 @@
 <translation id="3007771295016901659">Направи дупликат од картичката</translation>
 <translation id="3008232374986381779">Извршувајте ги алатките на Linux, уредувачите и интегрираните средини за програмери на вашиот <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Ресетирај ги дозволите</translation>
-<translation id="3008396025115884998">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, аудиоуред наречен „<ph name="DEVICE_NAME" />“</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> бара да се поврзете на Wi-Fi денес и да преземете ажурирање. Може да го преземете и преку врска со ограничен интернет (може да ви се наплати).}one{<ph name="MANAGER" /> бара да се поврзете на Wi-Fi и да преземете ажурирање пред крајниот рок. Може да го преземете и преку врска со ограничен интернет (може да ви се наплати).}other{<ph name="MANAGER" /> бара да се поврзете на Wi-Fi и да преземете ажурирање пред крајниот рок. Може да го преземете и преку врска со ограничен интернет (може да ви се наплати).}}</translation>
 <translation id="3009300415590184725">Дали сте сигурни дека сакате да го откажете процесот на поставување услуга за мобилен интернет?</translation>
 <translation id="3009779501245596802">Индексирани бази со податоци</translation>
@@ -2317,7 +2312,6 @@
 <translation id="3348038390189153836">Откриен пренослив уред</translation>
 <translation id="3348131053948466246">Предложено е емоџи. Притиснете на стрелката за горе или долу за навигација, а потоа Enter за да вметнете.</translation>
 <translation id="3349933790966648062">Потребна меморија</translation>
-<translation id="3354972872297836698">Не можеше да се спари со уредот „<ph name="DEVICE_NAME" />“, изберете уред за да се обидете повторно</translation>
 <translation id="3355936511340229503">Грешка при поврзување</translation>
 <translation id="3356580349448036450">Завршено</translation>
 <translation id="3359256513598016054">Ограничувања на политика за сертификат</translation>
@@ -2749,6 +2743,7 @@
 <translation id="3788331399335602504">овие датотеки</translation>
 <translation id="3788401245189148511">Може да:</translation>
 <translation id="3789841737615482174">Инсталирај</translation>
+<translation id="3790417903123637354">Нешто тргна наопаку. Обидете се повторно подоцна</translation>
 <translation id="379082410132524484">Картичката ви е истечена</translation>
 <translation id="3792890930871100565">Прекини ја врската со печатачите</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome не најде штетен софтвер на вашиот компјутер • Проверено пред 1 ден}one{Chrome не најде штетен софтвер на вашиот компјутер • Проверено пред {NUM_DAYS} ден}other{Chrome не најде штетен софтвер на вашиот компјутер • Проверено пред {NUM_DAYS} дена}}</translation>
@@ -3148,7 +3143,6 @@
 <translation id="4200689466366162458">Приспособени зборови</translation>
 <translation id="4200983522494130825">Нова &amp;картичка</translation>
 <translation id="4201546031411513170">Секогаш може да изберете што да синхронизирате во „Поставки“.</translation>
-<translation id="4202417625268941299">Со „Подобрено безбедно прелистување“, ќе ја добиете најсилната заштита од Chrome</translation>
 <translation id="420283545744377356">Исклучете го заштитникот на екранот</translation>
 <translation id="4206144641569145248">Вонземјанин</translation>
 <translation id="4206323443866416204">Извештај за повратни информации</translation>
@@ -3655,7 +3649,6 @@
 <translation id="4759238208242260848">Преземања</translation>
 <translation id="4761104368405085019">Користете го микрофонот</translation>
 <translation id="4762718786438001384">Просторот на дискот на уредот е критично низок</translation>
-<translation id="4762898026821161650">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, компјутер наречен „<ph name="DEVICE_NAME" />“</translation>
 <translation id="4763408175235639573">Кога ја посетивте страницава, се поставија следниве колачиња</translation>
 <translation id="4765582662863429759">Дозволува Android Messages да пренесува SMS-пораки од телефонот во вашиот Chromebook</translation>
 <translation id="4768332406694066911">Имате сертификати од овие организации што ве идентификуваат</translation>
@@ -5835,7 +5828,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Безбедносната проверка беше извршена пред 1 минута}one{Безбедносната проверка беше извршена пред {NUM_MINS} минута}other{Безбедносната проверка беше извршена пред {NUM_MINS} минути}}</translation>
 <translation id="7057767408836081338">Не успеавме да добиеме податоци од апликацијата, но сепак се обидуваме да ја стартуваме…</translation>
 <translation id="7058024590501568315">Сокриена мрежа</translation>
-<translation id="70582545822664495">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, глувче наречено „<ph name="DEVICE_NAME" />“</translation>
 <translation id="7059858479264779982">Постави на автоматско стартување</translation>
 <translation id="7062222374113411376">Дозволи неодамна затворените сајтови да завршат со испраќањето и примањето податоци (препорачано)</translation>
 <translation id="7063129466199351735">Обработување кратенки...</translation>
@@ -5999,7 +5991,6 @@
 <translation id="7257173066616499747">Wi-Fi мрежи</translation>
 <translation id="725758059478686223">Услуга за печатење</translation>
 <translation id="7257666756905341374">Прочитајте ги податоците што ги копирате и лепите</translation>
-<translation id="7258006747130724016">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, видеокамера наречена „<ph name="DEVICE_NAME" />“</translation>
 <translation id="7258192266780953209">Трансформации</translation>
 <translation id="7258225044283673131">Апликацијата не одговара. Изберете „Затвори присилно“ за да ја затворите.</translation>
 <translation id="7262004276116528033">Хост на услугата за најавување е <ph name="SAML_DOMAIN" /></translation>
@@ -6795,7 +6786,6 @@
 <translation id="8037117027592400564">Прочитајте го текстот што се изговара со помош на синтетизиран говор.</translation>
 <translation id="8037357227543935929">Прашај (стандардно)</translation>
 <translation id="803771048473350947">Датотека</translation>
-<translation id="8038399858950372766">Уред <ph name="DEVICE_INDEX" /> од <ph name="DEVICE_COUNT" />, тастатура наречена „<ph name="DEVICE_NAME" />“</translation>
 <translation id="8041089156583427627">Испратете повратни информации</translation>
 <translation id="8042142357103597104">Непроѕирност на текст</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> не одговара.</translation>
@@ -6819,6 +6809,7 @@
 <translation id="8054563304616131773">Внесете важечка адреса на е-пошта</translation>
 <translation id="8054883179223321715">Достапен за конкретни сајтови за видеа</translation>
 <translation id="8054921503121346576">USB-тастатурата е поврзана</translation>
+<translation id="8057414620575339583">Странично пребарување</translation>
 <translation id="8058655154417507695">Година на истекување</translation>
 <translation id="8058986560951482265">Со прекини</translation>
 <translation id="8059417245945632445">&amp;Провери уреди</translation>
@@ -6870,6 +6861,7 @@
 <translation id="81020759409809034">Локална локација</translation>
 <translation id="8102139037507939978">Отстрани ги податоците што откриваат идентитет од датотеката system_logs.txt.</translation>
 <translation id="8104088837833760645">Преземете профил на eSIM</translation>
+<translation id="8105368624971345109">Исклучи</translation>
 <translation id="8107015733319732394">Google Play Store се инсталира на вашиот <ph name="DEVICE_TYPE" />. Ова може да потрае неколку минути.</translation>
 <translation id="810728361871746125">Резолуција на екранот</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Нема колачиња од трети страни}=1{Блокирано е 1 колаче од трета страна}one{Блокирано е # колаче од трети страни}other{Блокирани се # колачиња од трети страни}}</translation>
@@ -6934,7 +6926,6 @@
 <translation id="8168071266284693455">Обележувачите, лозинките, историјата и другите работи се синхронизирани на сите ваши уреди</translation>
 <translation id="8168435359814927499">Содржина</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Додај ја картичката во списокот за читање}one{Додај ги картичките во списокот за читање}other{Додај ги картичките во списокот за читање}}</translation>
-<translation id="8169849063724750395">Вклучи повторно</translation>
 <translation id="8171334254070436367">Сокриј ги сите картички</translation>
 <translation id="8174047975335711832">Информации за уредот</translation>
 <translation id="8174876712881364124">Направете бекап на Google Drive. Лесно враќајте ги податоците или менувајте ги уредите во секое време. Бекапов опфаќа податоци за апликациите. Бекапот се прикачува во Google и се шифрира со помош на лозинката за сметката на Google на вашето дете. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation>
@@ -7008,7 +6999,6 @@
 <translation id="8249615410597138718">Испратете до вашите уреди</translation>
 <translation id="8249672078237421304">Понуди да преведеш страници што не се на јазик што го знам</translation>
 <translation id="8251441930213048644">Освежи сега</translation>
-<translation id="8251509999076836464">Се спарува со <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Отстранета сликичка.</translation>
 <translation id="825238165904109940">Секогаш прикажувај ги целосните URL-адреси</translation>
 <translation id="8252569384384439529">Се прикачува…</translation>
@@ -7253,7 +7243,6 @@
 <translation id="8534656636775144800">Упс! Нешто тргна наопаку при обидот за приклучување на доменот. Обидете се повторно.</translation>
 <translation id="8535005006684281994">URL за обновување сертификат на Netscape</translation>
 <translation id="8536956381488731905">Звук на притискање копче</translation>
-<translation id="8538718737588735385">Вклучи повторно</translation>
 <translation id="8539727552378197395">Не (HttpOnly)</translation>
 <translation id="8539766201049804895">Надгради</translation>
 <translation id="8540136935098276800">Внесете правилно форматирана URL-адреса</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 70a21b0..5828e3d 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Linux പുനഃസ്ഥാപിക്കൽ നിലവിൽ പുരോഗതിയിലാണ്</translation>
 <translation id="1244303850296295656">വിപുലീകരണ പിശക്</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> ഇൻസ്‍റ്റാൾ ചെയ്യാനായില്ല: ചിത്ര URL ഒരു പിശക് കോഡ് <ph name="HTTP_ERROR" /> നൽകി. നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള ടാബ്‌ലെറ്റ്</translation>
 <translation id="1251366534849411931">പ്രതീക്ഷിച്ചത് ഓപ്പൺ ചുരുൾ ബ്രാക്കറ്റ്: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">ഇത് സൈറ്റുകളും ഇൻസ്‌റ്റാൾ ചെയ്തിരിക്കുന്ന ആപ്പുകളും സംഭരിച്ചിട്ടുള്ള <ph name="TOTAL_USAGE" /> ഡാറ്റ മായ്ക്കും</translation>
 <translation id="1251578593170406502">മൊബൈൽ ഡാറ്റാ നെറ്റ്‌വർക്കുകൾക്കായി സ്‌കാൻ ചെയ്യുന്നു...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> തിരഞ്ഞെടുത്തു</translation>
 <translation id="1442851588227551435">സജീവ Kerberos ടിക്കറ്റ് സജ്ജീകരിക്കുക</translation>
 <translation id="1444628761356461360">ഈ ക്രമീകരണം നിയന്ത്രിക്കുന്നത് ഉപകരണത്തിന്റെ ഉടമയായ <ph name="OWNER_EMAIL" /> ആണ്.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള ഫോൺ</translation>
 <translation id="144518587530125858">തീമിനായി '<ph name="IMAGE_PATH" />' ലോഡ് ചെയ്യാനായില്ല.</translation>
 <translation id="1449191289887455076">അസൈൻമെന്റ് സ്ഥിരീകരിച്ച ശേഷം <ph name="RESPONSE" /> ചെയ്യാൻ “<ph name="CURRENTKEY" />” വീണ്ടും അമർത്തുക</translation>
 <translation id="1451375123200651445">വെബ്‌പേജ്, ഒരൊറ്റ ഫയൽ</translation>
@@ -860,7 +858,6 @@
 <translation id="1855079636134697549">ക്യാമറ ഓണാണ്</translation>
 <translation id="1856715684130786728">ലൊക്കേഷൻ ചേർക്കുക...</translation>
 <translation id="1858585891038687145">സോഫ്‌റ്റ്‌വെയർ നിർമ്മാതാക്കളെ തിരിച്ചറിയുന്നതിന് ഈ സർട്ടിഫിക്കറ്റിനെ വിശ്വസിക്കുക</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള അജ്ഞാത ഉപകരണം</translation>
 <translation id="1861262398884155592">ഈ ഫോൾഡറിൽ ഒന്നുമില്ല</translation>
 <translation id="1862311223300693744">നിങ്ങൾക്ക് ഇൻസ്റ്റാൾ ചെയ്‌ത ഏതെങ്കിലും പ്രത്യേക VPN, പ്രോക്‌സി, ഫയർവാൾ അല്ലെങ്കിൽ NAS സോഫ്‌റ്റ്‌വെയർ ഉണ്ടോ?</translation>
 <translation id="1863182668524159459">സീരിയൽ പോർട്ടുകളൊന്നും കണ്ടെത്തിയില്ല</translation>
@@ -1235,7 +1232,6 @@
 <translation id="2242687258748107519">ഫയൽ വിവരം</translation>
 <translation id="2246549592927364792">Google-ൽ നിന്ന് ചിത്ര വിവരണങ്ങൾ നേടണോ?</translation>
 <translation id="2247738527273549923">നിങ്ങളുടെ ഉപകരണം മാനേജ് ചെയ്യുന്നത് നിങ്ങളുടെ സ്ഥാപനമാണ്</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള ഗെയിം കൺട്രോളർ</translation>
 <translation id="2249111429176737533">ടാബ് ചെയ്‌ത വിന്‍ഡോ ആയി തുറക്കുക</translation>
 <translation id="2249605167705922988">ഉദാ. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">സിസ്റ്റം വ്യൂവർ ഉപയോഗിച്ച് തുറക്കുക</translation>
@@ -1994,7 +1990,6 @@
 <translation id="3007771295016901659">ഡ്യൂപ്ലിക്കേറ്റ് ടാബ്</translation>
 <translation id="3008232374986381779">Linux ടൂളുകളും എഡിറ്ററുകളും IDE-കളും നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> എന്നതിൽ റൺ ചെയ്യുക. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">അനുമതികൾ പുനഃസജ്ജീകരിക്കുക</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള ഓഡിയോ ഉപകരണം</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{ഇന്ന് തന്നെ വൈഫൈയിൽ കണക്റ്റ് ചെയ്‌ത് അപ്ഡേറ്റ് ഡൗൺലോഡ് ചെയ്യാൻ <ph name="MANAGER" /> നിങ്ങളോട് ആവശ്യപ്പെടുന്നു. അല്ലെങ്കിൽ, മീറ്റർ ചെയ്‌ത കണക്ഷനിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്യുക (നിരക്കുകൾ ബാധകമായേക്കാം).}other{സമയപരിധി അവസാനിക്കുന്നതിന് മുമ്പ് വൈഫൈയിലേക്ക് കണക്റ്റ് ചെയ്‌ത് അപ്ഡേറ്റ് ഡൗൺലോഡ് ചെയ്യാൻ <ph name="MANAGER" /> നിങ്ങളോട് ആവശ്യപ്പെടുന്നു. അല്ലെങ്കിൽ, മീറ്റർ ചെയ്‌ത കണക്ഷനിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്യുക (നിരക്കുകൾ ബാധകമായേക്കാം).}}</translation>
 <translation id="3009300415590184725">മൊബൈൽ ഡാറ്റാ സേവന സജ്ജീകരണ പ്രോസസ് റദ്ദാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെന്ന് തീർച്ചയാണോ?</translation>
 <translation id="3009779501245596802">ഇൻഡെക്‌സ് ചെയ്‌ത ഡാറ്റബേസുകള്‍</translation>
@@ -2300,7 +2295,6 @@
 <translation id="3348038390189153836">നീക്കം ചെയ്യാവുന്ന ഉപകരണം കണ്ടെത്തി</translation>
 <translation id="3348131053948466246">നിർദ്ദേശിക്കുന്ന ഇമോജി. നാവിഗേറ്റ് ചെയ്യാൻ മുകളിലേക്കോ താഴേക്കോ ഉള്ള അമ്പടയാള കീകൾ അമർത്തുക, ചേർക്കാൻ 'Enter' അമർത്തുക.</translation>
 <translation id="3349933790966648062">മെമ്മറി ഫൂട്ട് പ്രിന്‍റ്</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> ഉപകരണവുമായി ജോടിയാക്കാനായില്ല; വീണ്ടും ശ്രമിക്കാൻ ഉപകരണം തിരഞ്ഞെടുക്കുക</translation>
 <translation id="3355936511340229503">കണക്ഷന്‍ പിശക്.</translation>
 <translation id="3356580349448036450">പൂര്‍ത്തിയാക്കൂ</translation>
 <translation id="3359256513598016054">സര്‍‌ട്ടിഫിക്കറ്റ് നയ നിയന്ത്രണങ്ങള്‍‌</translation>
@@ -2733,6 +2727,7 @@
 <translation id="3788331399335602504">ഈ ഫയലുകൾ</translation>
 <translation id="3788401245189148511">ഇത് ആക്‌സ്സുചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നത്:</translation>
 <translation id="3789841737615482174">ഇന്‍സ്റ്റാൾ ചെയ്യുക</translation>
+<translation id="3790417903123637354">എന്തോ കുഴപ്പം സംഭവിച്ചു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക</translation>
 <translation id="379082410132524484">നിങ്ങളുടെ കാർഡ്‌ കാലഹരണപ്പെട്ടു</translation>
 <translation id="3792890930871100565">പ്രിന്ററുകൾ വിച്ഛേദിക്കുക</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ദോഷകരമായ സോഫ്റ്റ്‌വെയർ Chrome കണ്ടെത്തിയില്ല • 1 ദിവസം മുമ്പ് പരിശോധിച്ചു}other{നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ദോഷകരമായ സോഫ്റ്റ്‌വെയർ Chrome കണ്ടെത്തിയില്ല • {NUM_DAYS} ദിവസം മുമ്പ് പരിശോധിച്ചു}}</translation>
@@ -3131,7 +3126,6 @@
 <translation id="4200689466366162458">ഇഷ്‌ടാനുസൃത പദങ്ങൾ</translation>
 <translation id="4200983522494130825">പുതിയ &amp;ടാബ്</translation>
 <translation id="4201546031411513170">എന്തൊക്കെ സമന്വയിക്കണമെന്നത് ക്രമീകരണത്തിൽ നിങ്ങൾക്ക് എപ്പോഴും തിരഞ്ഞെടുക്കാം.</translation>
-<translation id="4202417625268941299">മെച്ചപ്പെടുത്തിയ സുരക്ഷിത ബ്രൗസിംഗിലൂടെ നിങ്ങൾക്ക് Chrome-ന്റെ ഏറ്റവും ശക്തിയേറിയ സുരക്ഷ ലഭിക്കുന്നു</translation>
 <translation id="420283545744377356">സ്ക്രീൻ സേവർ ഓഫാക്കുക</translation>
 <translation id="4206144641569145248">അന്യഗ്രഹജീവി</translation>
 <translation id="4206323443866416204">ഫീഡ്‌ബാക്ക് റിപ്പോർട്ട്</translation>
@@ -3637,7 +3631,6 @@
 <translation id="4759238208242260848">ഡൌണ്‍ലോഡുകള്‍</translation>
 <translation id="4761104368405085019">നിങ്ങളുടെ മൈക്രോഫോൺ ഉപയോഗിക്കുക</translation>
 <translation id="4762718786438001384">ഉപകരണത്തിൽ ഡിസ്‌ക് ഇടം വളരെ കുറവാണ്</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള കമ്പ്യൂട്ടർ</translation>
 <translation id="4763408175235639573">നിങ്ങള്‍‌ ഈ പേജ് കണ്ടപ്പോള്‍‌ ഇനിപ്പറയുന്ന കുക്കികളെ സജ്ജമാക്കി</translation>
 <translation id="4765582662863429759">ഫോണിൽ നിന്ന് Chromebook-ലേക്ക് ടെക്‌സ്‌റ്റുകൾ കൈമാറാൻ Android മെസേജിനെ അനുവദിക്കുന്നു</translation>
 <translation id="4768332406694066911">നിങ്ങള്‍‌ക്ക് ഈ ഓര്‍‌ഗനൈസേഷനുകളില്‍‌ നിന്ന് നിങ്ങളെ തിരിച്ചറിയുന്ന സര്‍‌ട്ടിഫിക്കറ്റുകളുണ്ട്</translation>
@@ -5821,7 +5814,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{ഒരു മിനിറ്റ് മുമ്പ് സുരക്ഷാ പരിശോധന നടത്തി}other{{NUM_MINS} മിനിറ്റ് മുമ്പ് സുരക്ഷാ പരിശോധന നടത്തി}}</translation>
 <translation id="7057767408836081338">ആപ്പ് ഡാറ്റ നേടാനായില്ലെങ്കിലും ആപ്പ് റൺ ചെയ്യാൻ ശ്രമിക്കുന്നു...</translation>
 <translation id="7058024590501568315">മറച്ചിരിക്കുന്ന നെറ്റ്‌വർക്ക്</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള മൗസ്</translation>
 <translation id="7059858479264779982">സ്വയമേവ ലോഞ്ച് ചെയ്യൽ സജ്ജമാക്കുക</translation>
 <translation id="7062222374113411376">അടുത്തിടെ അടച്ച സൈറ്റുകളെ, ഡാറ്റ അയയ്‌ക്കുന്നതും സ്വീകരിക്കുന്നതും പൂർത്തിയാക്കാൻ അനുവദിക്കുക (ശുപാർശചെയ്‌തിരിക്കുന്നു)</translation>
 <translation id="7063129466199351735">കുറുക്കുവഴികൾ പ്രോസസ്സുചെയ്യുന്നു...</translation>
@@ -5985,7 +5977,6 @@
 <translation id="7257173066616499747">Wi-Fi നെറ്റ്‌വർക്കുകൾ:</translation>
 <translation id="725758059478686223">അച്ചടി സേവനം</translation>
 <translation id="7257666756905341374">നിങ്ങൾ പകർത്തി ഒട്ടിച്ച ഡാറ്റ റീഡ് ചെയ്യുക</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള വീഡിയോ ക്യാമറ</translation>
 <translation id="7258192266780953209">പരിവർത്തനങ്ങൾ</translation>
 <translation id="7258225044283673131">ആപ്പ് പ്രതികരിക്കുന്നില്ല. ആപ്പ് അടയ്ക്കാൻ, "നിർബന്ധിതമായി അടയ്ക്കുക" തിരഞ്ഞെടുക്കുക.</translation>
 <translation id="7262004276116528033">ഈ സൈൻ ഇൻ സേവനം ഹോസ്റ്റ് ചെയ്‌തിരിക്കുന്നത് <ph name="SAML_DOMAIN" /> ആണ്.</translation>
@@ -6781,7 +6772,6 @@
 <translation id="8037117027592400564">സംശ്ലേഷിച്ച സംഭാഷണം ഉപയോഗിക്കുന്ന എല്ലാ ടെക്സ്റ്റ് സംഭാഷണവും റീഡുചെയ്യുക</translation>
 <translation id="8037357227543935929">ചോദിക്കുക (ഡിഫോൾട്ട്)</translation>
 <translation id="803771048473350947">ഫയല്‍</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" />-ൽ <ph name="DEVICE_INDEX" />-ാമത്തെ ഉപകരണം, <ph name="DEVICE_NAME" /> എന്ന പേരിലുള്ള കീബോർഡ്</translation>
 <translation id="8041089156583427627">ഫീഡ്ബാക്ക് അയയ്ക്കുക</translation>
 <translation id="8042142357103597104">ടെക്‌സ്‌റ്റ് അതാര്യത</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> പ്രതികരിക്കുന്നില്ല.</translation>
@@ -6858,6 +6848,7 @@
 <translation id="81020759409809034">ലോക്കൽ ലൊക്കേഷൻ</translation>
 <translation id="8102139037507939978">system_logs.txt-ൽ നിന്ന് വ്യക്തിപരമായി തിരിച്ചറിയാനുതകുന്ന വിവരങ്ങൾ ഇല്ലാതാക്കുക.</translation>
 <translation id="8104088837833760645">ഇ-സിം പ്രൊഫൈൽ ഡൗൺലോഡ് ചെയ്യുക</translation>
+<translation id="8105368624971345109">ഓഫാക്കുക</translation>
 <translation id="8107015733319732394">നിങ്ങളുടെ <ph name="DEVICE_TYPE" />-ൽ Google Play Store ഇൻസ്‌റ്റാൾ ചെയ്യുന്നു. ഇതിന് കുറച്ച് മിനിറ്റുകളെടുക്കാം.</translation>
 <translation id="810728361871746125">ഡിസ്പ്ലേ റെസല്യൂഷൻ</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{മൂന്നാം കക്ഷി കുക്കികൾ ഒന്നുമില്ല}=1{ഒരു മൂന്നാം കക്ഷി കുക്കി ബ്ലോക്ക് ചെയ്‍തു}other{# മൂന്നാം കക്ഷി കുക്കികൾ ബ്ലോക്ക് ചെയ്‍തു}}</translation>
@@ -6922,7 +6913,6 @@
 <translation id="8168071266284693455">നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്‌മാർക്കുകളും പാസ്‌വേഡുകളും ചരിത്രവും മറ്റും സമന്വയിപ്പിക്കും</translation>
 <translation id="8168435359814927499">ഉള്ളടക്കം</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{വായനാ ലിസ്‌റ്റിലേക്ക് ടാബ് ചേർക്കുക}other{വായനാ ലിസ്‌റ്റിലേക്ക് ടാബുകൾ ചേർക്കുക}}</translation>
-<translation id="8169849063724750395">വീണ്ടും ഓണാക്കുക</translation>
 <translation id="8171334254070436367">എല്ലാ കാർഡുകളും മറയ്ക്കുക</translation>
 <translation id="8174047975335711832">ഉപകരണ വിവരങ്ങൾ</translation>
 <translation id="8174876712881364124">Google ഡ്രൈവിലേക്ക് ബാക്കപ്പ് ചെയ്യുക. എളുപ്പത്തിൽ ഡാറ്റ പുന:സ്ഥാപിക്കുകയോ ഏതുസമയത്തും ഉപകരണം മാറുകയോ ചെയ്യുക. ഈ ബാക്കപ്പിൽ ആപ്പ് ഡാറ്റയും ഉൾപ്പെടുന്നു. ബാക്കപ്പുകൾ Google-ലേക്ക് അപ്‌ലോഡ് ചെയ്‌ത്, നിങ്ങളുടെ കുട്ടിയുടെ Google അക്കൗണ്ട് പാസ്‌വേഡ് ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്യും. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation>
@@ -6996,7 +6986,6 @@
 <translation id="8249615410597138718">നിങ്ങളുടെ ഉപകരണങ്ങളിലേക്ക് അയയ്‌ക്കുക</translation>
 <translation id="8249672078237421304">നിങ്ങൾക്ക് വായിക്കാനാവുന്ന ഭാഷയിലേക്ക് പേജുകൾ വിവർത്തനം ചെയ്യുന്നത് വാഗ്ദാനം ചെയ്യുന്നു</translation>
 <translation id="8251441930213048644">ഇപ്പോൾ‍ റീഫ്രഷ് ചെയ്യുക</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> എന്നതുമായി ജോടിയാക്കുന്നു</translation>
 <translation id="8251578425305135684">ലഘുചിത്രം നീക്കംചെയ്‌തു.</translation>
 <translation id="825238165904109940">എപ്പോഴും പൂർണ്ണ URL-കൾ കാണിക്കുക</translation>
 <translation id="8252569384384439529">അപ്‌ലോഡ് ചെയ്യുന്നു...</translation>
@@ -7238,7 +7227,6 @@
 <translation id="8534656636775144800">ക്ഷമിക്കണം! ഡൊമെയ്‌നിൽ ചേരാൻ ശ്രമിക്കുമ്പോൾ എന്തോ കുഴപ്പമുണ്ടായി. വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="8535005006684281994">നെറ്റ്‌സ്‌കേപ്പ് സര്‍‌ട്ടിഫിക്കറ്റ് പുതുക്കല്‍‌URL</translation>
 <translation id="8536956381488731905">കീ അമർത്തുമ്പോഴുള്ള ശബ്‌ദം</translation>
-<translation id="8538718737588735385">വീണ്ടും ഓണാക്കുക</translation>
 <translation id="8539727552378197395">ഇല്ല (Httpമാത്രം)</translation>
 <translation id="8539766201049804895">അപ്‍ഗ്രേഡ് ചെയ്യുക</translation>
 <translation id="8540136935098276800">ശരിയായി ഫോർമാറ്റ് ചെയ്‌ത URL നൽകുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index 1036d08..d61d08df 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Linux-г одоогоор сэргээж байна</translation>
 <translation id="1244303850296295656">Өргөтгөлийн алдаа</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" />-г суулгаж чадсангүй: Зургийн URL <ph name="HTTP_ERROR" /> алдааны кодыг буцаасан. Админтайгаа холбогдоно уу.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй таблет</translation>
 <translation id="1251366534849411931">Хээтэй хаалтыг нээхээр хүлээж байсан <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Энэ нь сайтууд болон суулгасан аппуудын хадгалсан <ph name="TOTAL_USAGE" />-н өгөгдлийг арилгана</translation>
 <translation id="1251578593170406502">Мобайл дата сүлжээг скан хийж байна...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" />-г сонгосон</translation>
 <translation id="1442851588227551435">Идэвхтэй Kerberos тасалбарыг тохируулах</translation>
 <translation id="1444628761356461360">Энэ тохиргоог төхөөрөмжийн эзэмшигч удирддаг, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй утас</translation>
 <translation id="144518587530125858">Энэ загварт зориулан <ph name="IMAGE_PATH" />-г татах үйлдэл амжилтгүй болсон байна.</translation>
 <translation id="1449191289887455076">Оноолтыг баталгаажуулахын тулд “<ph name="CURRENTKEY" />” дээр дахин дарж, <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Веб хуудас, Нэг файл</translation>
@@ -868,7 +866,6 @@
 <translation id="1855079636134697549">Камер асаалттай байна</translation>
 <translation id="1856715684130786728">Байршил нэмэх...</translation>
 <translation id="1858585891038687145">Програм хангамж боловсруулагчийг тодорхойлох итгэмжлэлийг энэ сертификатад олгох</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй үл мэдэгдэх төхөөрөмж</translation>
 <translation id="1861262398884155592">Энэ фолдер хоосон байна</translation>
 <translation id="1862311223300693744">Танд суулгасан ямаг нэг тусгай VPN, прокси, галт хана эсвэл NAS программ хангамж
     байгаа юу?</translation>
@@ -1244,7 +1241,6 @@
 <translation id="2242687258748107519">Файлын мэдээлэл</translation>
 <translation id="2246549592927364792">Google-с зургийн тайлбар авах уу?</translation>
 <translation id="2247738527273549923">Таны төхөөрөмжийг танай байгууллагаас удирддаг</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй тоглоомын гар</translation>
 <translation id="2249111429176737533">Табтай цонх хэлбэрээр нээх</translation>
 <translation id="2249605167705922988">жишээ нь, 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Системийн харагчаар нээх</translation>
@@ -2006,7 +2002,6 @@
 <translation id="3007771295016901659">Табыг хуулбарлах</translation>
 <translation id="3008232374986381779"><ph name="DEVICE_TYPE" /> дээрээ Linux-н хэрэгсэл, засварлагч болон IDE-г ажиллуулах. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Зөвшөөрлийг шинэчлэх</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй аудио төхөөрөмж</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> танаас өнөөдөр Wi-Fi-д холбогдож, шинэчлэлт татаж авахыг шаардаж байна. Эсвэл хязгаартай холболтоос татаж авна уу (төлбөр гарч болзошгүй).}other{<ph name="MANAGER" /> танаас эцсийн хугацаанаас өмнө Wi-Fi-д холбогдож, шинэчлэлт татаж авахыг шаардаж байна. Эсвэл хязгаартай холболтоос татаж авна уу (төлбөр гарч болзошгүй).}}</translation>
 <translation id="3009300415590184725">Та гар утасны өгөгдлийн үйлчилгээний тохиргоо хийх явцыг цуцлахыг хүсэж байгаа гэдэгтээ итгэлтэй байна уу?</translation>
 <translation id="3009779501245596802">Индексжүүлсэн мэдээллийн сан</translation>
@@ -2312,7 +2307,6 @@
 <translation id="3348038390189153836">Зөөврийн төхөөрөмж илэрсэн байна</translation>
 <translation id="3348131053948466246">Санал болгож буй эможи. Дээш эсвэл доош дарж шилжээд, enter дарж оруулна.</translation>
 <translation id="3349933790966648062">Санах ойн ул мөр</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> төхөөрөмжтэй хослуулж чадсангүй. Дахин оролдохын тулд төхөөрөмж сонгоно уу</translation>
 <translation id="3355936511340229503">Холболтын алдаа</translation>
 <translation id="3356580349448036450">Бүрэн</translation>
 <translation id="3359256513598016054">Гэрчилгээ бодлогын хязгаарлалтууд</translation>
@@ -2745,6 +2739,7 @@
 <translation id="3788331399335602504">эдгээр файл</translation>
 <translation id="3788401245189148511">Энэ нь:</translation>
 <translation id="3789841737615482174">Суулгах</translation>
+<translation id="3790417903123637354">Алдаа гарлаа. Дараа дахин оролдоно уу</translation>
 <translation id="379082410132524484">Таны карт хүчингүй байна</translation>
 <translation id="3792890930871100565">Хэвлэгч машинуудыг салга</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome таны компьютероос хортой программ хангамж олсонгүй • 1 өдрийн өмнө шалгасан}other{Chrome таны компьютероос хортой программ хангамж олсонгүй • {NUM_DAYS} өдрийн өмнө шалгасан}}</translation>
@@ -3143,7 +3138,6 @@
 <translation id="4200689466366162458">Өөрчлөх үг</translation>
 <translation id="4200983522494130825">Шинэ &amp;цонх</translation>
 <translation id="4201546031411513170">Та синк хийх зүйлээ хүссэн үедээ тохиргооноос сонгож болно</translation>
-<translation id="4202417625268941299">Сайжруулсан аюулгүй хөтчийн тусламжтай та Chrome-н хамгийн хүчирхэг хамгаалалтыг авна</translation>
 <translation id="420283545744377356">Дэлгэц амраагчийг унтраах</translation>
 <translation id="4206144641569145248">Харь гарагийн хүн</translation>
 <translation id="4206323443866416204">Санал хүсэлтийн тайлан</translation>
@@ -3650,7 +3644,6 @@
 <translation id="4759238208242260848">Таталтууд:</translation>
 <translation id="4761104368405085019">Микрофоноо ашигла</translation>
 <translation id="4762718786438001384">Төхөөрөмжийн дискний багтаамж маш бага байна</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" />-c <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй компьютер</translation>
 <translation id="4763408175235639573">Таныг энэ хуудсыг харахад дараах күүкийг тохируулсан</translation>
 <translation id="4765582662863429759">Андройд Мессежийг таны утаснаас таны Chromebook-д мессеж илгээхийг зөвшөөрдөг</translation>
 <translation id="4768332406694066911">Танд эдгээр байгууллагаас таныг тодорхойлох сертификат байна</translation>
@@ -5832,7 +5825,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Аюулгүй байдлын шалгалтыг 1 минутын өмнө хийсэн}other{Аюулгүй байдлын шалгалтыг {NUM_MINS} минутын өмнө хийсэн}}</translation>
 <translation id="7057767408836081338">Аппын өгөгдлийг авч чадсангүй, ямартай ч аппыг ажиллуулахыг оролдож байна...</translation>
 <translation id="7058024590501568315">Нуусан сүлжээ</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй хулгана</translation>
 <translation id="7059858479264779982">Автоматаар эхлүүлэх тохиргоог хийх</translation>
 <translation id="7062222374113411376">Сүүлд хаасан сайтыг өгөгдлийг гүйцэт илгээх, хүлээн авахыг зөвшөөрөх (санал болгосон)</translation>
 <translation id="7063129466199351735">Богино холбоосыг боловсруулж байна...</translation>
@@ -5996,7 +5988,6 @@
 <translation id="7257173066616499747">Wi-Fi сүлжээ</translation>
 <translation id="725758059478686223">Хэвлэх үйлчилгээ</translation>
 <translation id="7257666756905341374">Өөрийн хуулж, наасан өгөгдлийг уншуул</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй видео камер</translation>
 <translation id="7258192266780953209">Хувиргалт</translation>
 <translation id="7258225044283673131">Хэрэглээний программ хариу өгөхгүй байна. Аппыг хаахын тулд "Хүчээр хаах"-г сонгоно уу.</translation>
 <translation id="7262004276116528033">Энэ нэвтрэх үйлчилгээг <ph name="SAML_DOMAIN" />-с хост хийсэн</translation>
@@ -6790,7 +6781,6 @@
 <translation id="8037117027592400564">Нэгтгэсэн яриаг ашиглан яригдсан бүх текстийг унш</translation>
 <translation id="8037357227543935929">Асуух (өгөгдмөл)</translation>
 <translation id="803771048473350947">Файл</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" />-с <ph name="DEVICE_INDEX" />-р төхөөрөмж, <ph name="DEVICE_NAME" /> гэсэн нэртэй гар</translation>
 <translation id="8041089156583427627">Санал хүсэлт илгээх</translation>
 <translation id="8042142357103597104">Текстийн бүдэгрэл</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> хариу өгөхгүй байна.</translation>
@@ -6867,6 +6857,7 @@
 <translation id="81020759409809034">Дотоод байршил</translation>
 <translation id="8102139037507939978">Хувь хүнийг тодорхойлох мэдээллийг system_logs.txt-с арилгана.</translation>
 <translation id="8104088837833760645">eSIM-н профайл татах</translation>
+<translation id="8105368624971345109">Унтраах</translation>
 <translation id="8107015733319732394">Google Play Дэлгүүрийг таны <ph name="DEVICE_TYPE" />-д суулгаж байна. Суулгахад хэдэн хором болно.</translation>
 <translation id="810728361871746125">Дэлгэцийн нягтрал</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Гуравдагч талын күүки байхгүй}=1{Гуравдагч талын 1 күүкиг блоклосон}other{Гуравдагч талын # күүкиг блоклосон}}</translation>
@@ -6931,7 +6922,6 @@
 <translation id="8168071266284693455">Таны хавчуурга, нууц үг, түүх болон бусад зүйлийг бүх төхөөрөмж дээр тань синк хийдэг</translation>
 <translation id="8168435359814927499">Агуулга</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Унших жагсаалтад Таб нэмэх}other{Унших жагсаалтад Табууд нэмэх}}</translation>
-<translation id="8169849063724750395">Буцааж асаах</translation>
 <translation id="8171334254070436367">Бүх картыг нуух</translation>
 <translation id="8174047975335711832">Төхөөрөмжийн мэдээлэл</translation>
 <translation id="8174876712881364124">Google Драйвт нөөцлөх. Өгөгдлийг хялбархнаар сэргээж эсвэл хүссэн үедээ төхөөрөмжийг сэлгээрэй. Энэ нөөцлөлтөд аппын өгөгдөл багтдаг. Нөөцлөлтийг Google-д байршуулдаг бөгөөд таны хүүхдийн Google Бүртгэлийн нууц үгийг ашиглан шифрлэдэг. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation>
@@ -7005,7 +6995,6 @@
 <translation id="8249615410597138718">Төхөөрөмжүүддээ илгээх</translation>
 <translation id="8249672078237421304">Таны орны хэлээр байхгүй хуудсыг орчуулах санал хүргүүлнэ үү</translation>
 <translation id="8251441930213048644">Яг одоо дахин ачаалах</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" />-тай хослуулж байна</translation>
 <translation id="8251578425305135684">Жижиг зураг устгагдсан.</translation>
 <translation id="825238165904109940">Үргэлж бүтэн URL-г харуулах</translation>
 <translation id="8252569384384439529">Байршуулж байна...</translation>
@@ -7247,7 +7236,6 @@
 <translation id="8534656636775144800">Уучлаарай, домайнд нэгдэхэд алдаа гарлаа. Дахин оролдоно уу.</translation>
 <translation id="8535005006684281994">Нетскейп гэрчилгээг шинэчлэх холбоос</translation>
 <translation id="8536956381488731905">Товч дарахад дуу гарах</translation>
-<translation id="8538718737588735385">Буцааж асаах</translation>
 <translation id="8539727552378197395">Үгүй (HttpOnly)</translation>
 <translation id="8539766201049804895">Дэвшүүлэх</translation>
 <translation id="8540136935098276800">Зөв форматтай URL оруулна уу</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 3ff9741..e57e717 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -2517,6 +2517,7 @@
 <translation id="3557101512409028104">Family Link सह वेबसाइटवरील बंधने आणि स्क्रीन वेळ मर्यादा सेट करा</translation>
 <translation id="3559262020195162408">डिव्हाइसवर धोरण इंस्टॉल करता आले नाही.</translation>
 <translation id="3559533181353831840">सुमारे <ph name="TIME_LEFT" /> शिल्लक</translation>
+<translation id="3559697822483154494">स्क्रीन स्प्लिट करणे आणि डेस्‍क स्विच करणे यांसारख्या कृतींसाठी व्हायब्रेशनद्वारे कंफर्मेशन मिळवा.</translation>
 <translation id="3560034655160545939">&amp;स्पेल चेक</translation>
 <translation id="3562423906127931518">या प्रक्रियेला काही मिनिटे लागू शकतात. Linux कंटेनर सेट करत आहे.</translation>
 <translation id="3562655211539199254">तुमच्या फोनमधील अलीकडील Chrome टॅब पहा</translation>
@@ -2741,6 +2742,7 @@
 <translation id="3788331399335602504">या फाइल</translation>
 <translation id="3788401245189148511">ते करू शकले असते:</translation>
 <translation id="3789841737615482174">स्थापना करा</translation>
+<translation id="3790417903123637354">काहीतरी चूक झाली. नंतर पुन्हा प्रयत्न करा</translation>
 <translation id="379082410132524484">तुमचे कार्ड एक्सपायर झालेले आहे</translation>
 <translation id="3792890930871100565">प्रिंटर डिस्कनेक्ट करा</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ला तुमच्या कॉंप्युटरवर हानिकारक सॉफ्टवेअर आढळले नाही • एका दिवसापूर्वी तपासले}other{Chrome ला तुमच्या कॉंप्युटरवर हानिकारक सॉफ्टवेअर आढळले नाही • {NUM_DAYS} दिवसांपूर्वी तपासले}}</translation>
@@ -3825,6 +3827,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ना सिरीअल पोर्टशी कनेक्ट करायचे आहे</translation>
 <translation id="4944310289250773232">ही ऑथेंटिकेशन सेवा <ph name="SAML_DOMAIN" /> द्वारे होस्ट केली जाते</translation>
 <translation id="4945439665401275950">फिंगरप्रिंट सेट करण्यासाठी, तुमच्या लहान मुलाला पॉवर बटणाला स्पर्श करू द्या. तुमच्या लहान मुलाचा फिंगरप्रिंट डेटा सुरक्षितपणे स्टोअर केला आहे आणि तो या <ph name="DEVICE_TYPE" /> मध्येच राहील.</translation>
+<translation id="4946459324029651239">तुम्हाला साधारण सुरक्षा मिळत आहे</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{फाइल}other{# फाइल}}</translation>
 <translation id="495170559598752135">क्रिया</translation>
 <translation id="4953808748584563296">डीफॉल्ट नारिंगी अवतार</translation>
@@ -4408,6 +4411,7 @@
 <translation id="5575528586625653441">डेमो नोंदणी विनंतीला समस्या आली.</translation>
 <translation id="557722062034137776">तुमचे डिव्हाइस रीसेट केल्याने या खात्यांवरील आपल्या Google खात्यांवर किंवा संकालित केलेल्या कोणत्याही डेटावर प्रभाव पडणार नाही. तथापि, आपल्या डिव्हाइसवर स्थानिकपणे सेव्ह केलेल्या सर्व फाइल हटविल्या जातील.</translation>
 <translation id="5578059481725149024">स्वयं साइन-इन</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> मध्ये भाषांतर करणे पूर्ण झाले</translation>
 <translation id="558170650521898289">मायक्रोसॉफ्ट विंडोज हार्डवेअर ड्रायव्हर व्हेरिफिकेशन</translation>
 <translation id="5581972110672966454">डिव्हाइसला डोमेनशी जोडता आले नाही. कृपया पुन्हा प्रयत्न करा किंवा तुमच्या डिव्हाइसच्या मालकाशी अथवा अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा. एरर कोड: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">मुख्य मेनू</translation>
@@ -4913,6 +4917,7 @@
 <translation id="6112931163620622315">तुमचा फोन तपासा</translation>
 <translation id="6113434369102685411">Chrome ब्राउझर आणि <ph name="DEVICE_TYPE" /> लाँचरसाठी तुमचे डीफॉल्ट शोध इंजीन सेट करा</translation>
 <translation id="6113942107547980621">स्मार्ट लॉक वापरण्यासाठी, तुमच्या फोनवर प्राथमिक वापरकर्ता प्रोफाइलवर स्विच करा</translation>
+<translation id="611684075852771314">हे लॉग माझ्या फाइल मध्ये या स्वरूपात सेव्ह केले आहेत</translation>
 <translation id="6116921718742659598">भाषा आणि इनपुट सेटिंग्ज बदला</translation>
 <translation id="6119927814891883061">डिव्हाइसला नाव <ph name="DEVICE_NAME" /> द्या</translation>
 <translation id="6120205520491252677">या पृष्‍ठास सुरू स्‍क्रीनवर पिन करा...</translation>
@@ -5689,6 +5694,7 @@
 <translation id="6930036377490597025">बाह्य सिक्युरिटी की किंवा बिल्ट-इन सेन्सर</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{एक्स्टेंशन नाकारण्यात आले आहे}other{# एक्स्टेंशन नाकारण्यात आली आहेत}}</translation>
 <translation id="6930321203306643451">अपग्रेड पूर्ण झाले</translation>
+<translation id="6931690462168617033">क्लिकची क्षमता</translation>
 <translation id="6935286146439255109">पेपर ट्रे सापडत नाही</translation>
 <translation id="693807610556624488">लिहा ऑपरेशन यावर विशेषतांची कमाल लांबी ओलांडते: " <ph name="DEVICE_NAME" /> ".</translation>
 <translation id="6938386202199793006">तुमच्याकडे एक सेव्ह केलेला प्रिंटर आहे.</translation>
@@ -6817,6 +6823,7 @@
 <translation id="8064279191081105977">गट <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">कनेक्शन डायलॉग</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">स्‍पर्शाद्वारे फीडबॅक</translation>
 <translation id="8071432093239591881">इमेज म्हणून प्रिंट करा</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />अ‍ॅप डेटा म्हणजे अ‍ॅपने (डेव्हलपर सेटिंग्जवर आधारित) सेव्ह केलेला कोणताही डेटा असू शकतो , ज्यामध्ये संपर्क, मेसेज आणि फोटो यासारख्या डेटाचा समावेश आहे.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />बॅकअप डेटा तुमच्या लहान मुलाच्या ड्राइव्ह स्टोरेज कोट्यामध्ये गणला जाणार नाही.<ph name="END_PARAGRAPH2" />
@@ -6854,6 +6861,7 @@
 <translation id="81020759409809034">स्थानिक सिस्टममधील स्थान</translation>
 <translation id="8102139037507939978">system_logs.txt वरून वैयक्तिकरीत्या ओळखण्यायोग्य माहिती स्ट्रिप करा.</translation>
 <translation id="8104088837833760645">eSIM प्रोफाइल डाउनलोड करा</translation>
+<translation id="8105368624971345109">बंद करा</translation>
 <translation id="8107015733319732394">तुमच्या <ph name="DEVICE_TYPE" /> वर Google Play स्टोअर इंस्टॉल करत आहे. यासाठी काही मिनिटे लागतील.</translation>
 <translation id="810728361871746125">डिस्प्ले रिझोल्युशन</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{कोणत्याही तृतीय पक्ष कुकी नाहीत}=1{१ तृतीय पक्ष कुकी ब्लॉक केली आहे}other{# तृतीय पक्ष कुकी ब्लॉक केल्या आहेत}}</translation>
@@ -7228,6 +7236,7 @@
 <translation id="8528074251912154910">भाषा जोडा</translation>
 <translation id="8528962588711550376">साइन इन करत आहे.</translation>
 <translation id="8529925957403338845">झटपट टेदरिंग कनेक्‍शन अयशस्वी झाले</translation>
+<translation id="8531701051932785007">वर्धित सुरक्षित ब्राउझिंग बंद आहे</translation>
 <translation id="8534656636775144800">अरेरे! डोमेनमध्ये सामील होण्याचा प्रयत्न करताना काहीतरी गडबड झाली. कृपया पुन्हा प्रयत्न करा.</translation>
 <translation id="8535005006684281994">Netscape सर्टिफिकेट रिन्यूअल URL</translation>
 <translation id="8536956381488731905">की दाबताना आवाज</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 74ffcd5..8d9464f 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">fail ini</translation>
 <translation id="3788401245189148511">Item boleh:</translation>
 <translation id="3789841737615482174">Pasang</translation>
+<translation id="3790417903123637354">Kesilapan telah berlaku. Cuba lagi nanti</translation>
 <translation id="379082410132524484">Kad anda telah tamat tempoh</translation>
 <translation id="3792890930871100565">Putuskan sambungan pencetak</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome tidak menemukan perisian berbahaya pada komputer anda • Disemak sehari yang lalu}other{Chrome tidak menemukan perisian berbahaya pada komputer anda • Disemak {NUM_DAYS} hari yang lalu}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ingin menyambung ke port siri</translation>
 <translation id="4944310289250773232">Perkhidmatan pengesahan ini dihoskan oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Untuk menyediakan cap jari, minta anak anda menyentuh butang kuasa. Data cap jari anak anda disimpan dengan selamat dan tidak sekali-kali dihantar keluar daripada <ph name="DEVICE_TYPE" /> ini.</translation>
+<translation id="4946459324029651239">Anda mendapat perlindungan standard</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{satu fail}other{# fail}}</translation>
 <translation id="495170559598752135">Tindakan</translation>
 <translation id="4953808748584563296">Avatar jingga lalai</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">Masalah berkaitan permintaan pendaftaran tunjuk cara telah berlaku.</translation>
 <translation id="557722062034137776">Penetapan semula peranti anda tidak akan menjejaskan akaun Google anda atau sebarang data yang disegerakkan ke akaun ini. Walau bagaimanapun, semua fail yang disimpan secara setempat pada peranti anda akan dipadamkan.</translation>
 <translation id="5578059481725149024">Auto log masuk</translation>
+<translation id="5581134892342029705">Penterjemahan kepada <ph name="LANGUAGE" /> selesai</translation>
 <translation id="558170650521898289">Pengesahan Pemacu Perkakasan Microsoft Windows</translation>
 <translation id="5581972110672966454">Tidak dapat menghubungkan peranti ke domain. Sila cuba lagi atau hubungi pemilik atau pentadbir peranti anda. Kod ralat: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menu utama</translation>
@@ -6806,6 +6809,7 @@
 <translation id="8054563304616131773">Sila masukkan alamat e-mel yang sah</translation>
 <translation id="8054883179223321715">Tersedia untuk laman video tertentu</translation>
 <translation id="8054921503121346576">Papan kekunci USB disambungkan</translation>
+<translation id="8057414620575339583">Carian Sisi</translation>
 <translation id="8058655154417507695">Tahun tamat tempoh</translation>
 <translation id="8058986560951482265">Tersangkut-sangkut</translation>
 <translation id="8059417245945632445">&amp;Periksa peranti</translation>
@@ -6857,6 +6861,7 @@
 <translation id="81020759409809034">Lokasi Setempat</translation>
 <translation id="8102139037507939978">Buang Maklumat Peribadi yang Boleh Dikenal Pasti daripada system_logs.txt.</translation>
 <translation id="8104088837833760645">Muat turun profil eSIM</translation>
+<translation id="8105368624971345109">Matikan</translation>
 <translation id="8107015733319732394">Memasang Gedung Google Play pada <ph name="DEVICE_TYPE" /> anda. Proses ini mungkin mengambil masa beberapa minit.</translation>
 <translation id="810728361871746125">Peleraian paparan</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Tiada kuki pihak ketiga}=1{1 kuki pihak ketiga disekat}other{# kuki pihak ketiga disekat}}</translation>
@@ -7232,6 +7237,7 @@
 <translation id="8528074251912154910">Tambah bahasa</translation>
 <translation id="8528962588711550376">Melog masuk.</translation>
 <translation id="8529925957403338845">Sambungan Penambatan Segera gagal dilakukan</translation>
+<translation id="8531701051932785007">Penyemakan Imbas Selamat Dipertingkat dimatikan</translation>
 <translation id="8534656636775144800">Op! Berlaku masalah semasa cuba menyertai domain. Sila cuba lagi.</translation>
 <translation id="8535005006684281994">URL Pembaharuan Sijil Netscape</translation>
 <translation id="8536956381488731905">Bunyi pada tekanan kekunci</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index 6b1585ac..0b88b36 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Linux ပြန်ယူခြင်းကို လောလောဆယ် လုပ်ဆောင်နေသည်</translation>
 <translation id="1244303850296295656">အိတ်စတန်းရှင်း မှားယွင်းမှု</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> ထည့်သွင်း၍ မရပါ- ကွန်ပျူတာစနစ်မိတ္တူ URL က <ph name="HTTP_ERROR" /> အမှားကုဒ် ပြန်ပို့သည်။ သင့်စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော တက်ဘလက်</translation>
 <translation id="1251366534849411931">အဖွင့် တွန့်ကွင်းတစ်ခု လိုနေသည်- <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">ဤလုပ်ဆောင်ချက်က ဝဘ်ဆိုက်များနှင့် ထည့်သွင်းထားသော အက်ပ်များက သိမ်းထားသည့် ဒေတာ <ph name="TOTAL_USAGE" /> ကို ရှင်းထုတ်လိုက်ပါမည်</translation>
 <translation id="1251578593170406502">မိုဘိုင်း ဒေတာကွန်ရက်များ ရှာဖွေနေသည်...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> ရွေးချယ်ထားသည်</translation>
 <translation id="1442851588227551435">အသုံးပြုနေသော Kerberos လက်မှတ် သတ်မှတ်ရန်</translation>
 <translation id="1444628761356461360">ဤကြိုတင်ချိန်ညှိချက်များအား စက်ပစ္စည်း၏ ပိုင်ရှင် <ph name="OWNER_EMAIL" /> မှ စီမံသည်။</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော ဖုန်းအမည်</translation>
 <translation id="144518587530125858">အရောင်အဖွဲ့အတွက် '<ph name="IMAGE_PATH" />' အားဖွင့်၍မရပါ။</translation>
 <translation id="1449191289887455076">သတ်မှတ်မှုကို အတည်ပြုရန် “<ph name="CURRENTKEY" />” ထပ်နှိပ်ပြီး <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">ဝဘ်စာမျက်နှာ၊ ဖိုင် တစ်ခုတည်း</translation>
@@ -871,7 +869,6 @@
 <translation id="1855079636134697549">ကင်မရာ ဖွင့်ထားသည်</translation>
 <translation id="1856715684130786728">တည်နေရာ ထည့်ပေးရန်...</translation>
 <translation id="1858585891038687145">ဆော့ဝဲပြုလုပ်သူများ၏ အထောက်အထားအဖြစ် ဤအသိအမှတ်ပြုလက်မှတ်ကို ယုံကြည်ပါ</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမျိုးအမည်မသိ ကိရိယာ</translation>
 <translation id="1861262398884155592">ဤဖိုင်တွဲတွင် မည်သည့်အရာမျှ မရှိပါ</translation>
 <translation id="1862311223300693744">သင့်တွင် အထူး VPN၊ ပရောက်စီ၊ firewall သို့မဟုတ် NAS ဆော့ဖ်ဝဲ ထည့်သွင်းထားသလား။</translation>
 <translation id="1863182668524159459">အစဉ်လိုက်ပို့တ်များ မရှိပါ</translation>
@@ -1246,7 +1243,6 @@
 <translation id="2242687258748107519">ဖိုင် အချက်လက်</translation>
 <translation id="2246549592927364792">Google မှ ပုံအကြောင်းအရာများ ရယူမလား။</translation>
 <translation id="2247738527273549923">သင်၏စက်ပစ္စည်းကို သင့်အဖွဲ့အစည်းက စီမံခန့်ခွဲသည်</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော ဂိမ်းခလုတ်</translation>
 <translation id="2249111429176737533">တဘ်ဝင်းဒိုးအဖြစ် ဖွင့်ရန်</translation>
 <translation id="2249605167705922988">ဥပမာ၊ ၁-၅၊ ၈၊ ၁၁-၁၃</translation>
 <translation id="2251218783371366160">စနစ် ကြည့်ရှုမှုဖြင့် ဖွင့်ရန်</translation>
@@ -2008,7 +2004,6 @@
 <translation id="3007771295016901659">တဘ်ကို ပွားယူရန်</translation>
 <translation id="3008232374986381779">သင်၏ <ph name="DEVICE_TYPE" /> တွင် Linux ကိရိယာ၊ တည်းဖြတ်စနစ်နှင့် IDE များဖွင့်ပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">ခွင့်ပြုချက်များကို ပြင်ဆင်သတ်မှတ်ရန်</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော အသံစက်ပစ္စည်း</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Wi-Fi သို့ ယနေ့ချိတ်ဆက်ပြီး အပ်ဒိတ်ကို ဒေါင်းလုဒ်လုပ်ရန် <ph name="MANAGER" /> က သတ်မှတ်ထားသည်။ သို့မဟုတ် အခမဲ့ မဟုတ်သော ချိတ်ဆက်မှုမှ ဒေါင်းလုဒ်လုပ်ပါ (ဒေတာသုံးစွဲခ ကျသင့်နိုင်သည်)။}other{နောက်ဆုံးသတ်မှတ်ရက် မတိုင်မီ Wi-Fi သို့ချိတ်ဆက်ပြီး အပ်ဒိတ်ဒေါင်းလုဒ်လုပ်ရန် <ph name="MANAGER" /> က သတ်မှတ်ထားသည်။ သို့မဟုတ် အခမဲ့ မဟုတ်သော ချိတ်ဆက်မှုမှ ဒေါင်းလုဒ်လုပ်ပါ (ဒေတာသုံးစွဲခ ကျသင့်နိုင်သည်)။}}</translation>
 <translation id="3009300415590184725">မိုဘိုင်းအချက်လက်ဝန်ဆောင်မှု တပ်ဆင်ခြင်းလုပ်ငန်းကို ပယ်ဖျက်ရန် သင်လိုလားပါသလား?</translation>
 <translation id="3009779501245596802">လမ်းညွှန်ထားသည့် ဒေတာဘေ့စ်များ</translation>
@@ -2314,7 +2309,6 @@
 <translation id="3348038390189153836">ဖြုတ်ရနိုင်သည့် ကိရိယာကို ရှာတွေ့ခဲ့</translation>
 <translation id="3348131053948466246">အကြံပြုထားသော အီမိုဂျီ။ ရွှေ့ရန် အပေါ် သို့မဟုတ် အောက်ခလုတ်၊ ထည့်သွင်းရန် enter နှိပ်ပါ။</translation>
 <translation id="3349933790966648062">ဖြစ်စဉ်တွင် မှတ်ဉာဏ်အသုံးပြုမှု</translation>
-<translation id="3354972872297836698">စက် <ph name="DEVICE_NAME" /> ကိုတွဲချိတ်၍ မရပါ။ ထပ်စမ်းကြည့်ရန် စက်ပစ္စည်းကိုရွေးပါ</translation>
 <translation id="3355936511340229503">ချိတ်ဆက်မှု မှားယွင်းခြင်း</translation>
 <translation id="3356580349448036450">ပြီးဆုံးပြီ</translation>
 <translation id="3359256513598016054">အသိမှတ်ပြုလက်မှတ် ပေါ်လစီကန့်သတ်ချက်များ</translation>
@@ -2746,6 +2740,7 @@
 <translation id="3788331399335602504">ဤဖိုင်များ</translation>
 <translation id="3788401245189148511">ဖြစ်နိုင်ခဲ့သည်မှာ:</translation>
 <translation id="3789841737615482174">တပ်ဆင်ရန်</translation>
+<translation id="3790417903123637354">တစ်ခုခု မှားသွားသည်။ နောက်မှ ထပ်စမ်းကြည့်ပါ</translation>
 <translation id="379082410132524484">သင်၏ကတ်သည် သက်တမ်းကုန်ဆုံးသွားပါပြီ</translation>
 <translation id="3792890930871100565">ပရင်တာများ ချိတ်ဆက်မှုဖြုတ်</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome သည် သင့်ကွန်ပျူတာတွင် အန္တရာယ်ဆော့ဖ်ဝဲကို ရှာမတွေ့ပါ • ပြီးခဲ့သော 1 ရက်က စစ်ထားသည်}other{Chrome သည် သင့်ကွန်ပျူတာတွင် အန္တရာယ်ဆော့ဖ်ဝဲကို ရှာမတွေ့ပါ • ပြီးခဲ့သော {NUM_DAYS} ရက်က စစ်ထားသည်}}</translation>
@@ -3144,7 +3139,6 @@
 <translation id="4200689466366162458">မိမိကိုယ်ပိုင်စကားလုံး</translation>
 <translation id="4200983522494130825">တဘ် &amp; အသစ်</translation>
 <translation id="4201546031411513170">စင့်ခ်လုပ်မည့်အရာကို ဆက်တင်များတွင် အချိန်မရွေး ရွေးချယ်နိုင်သည်။</translation>
-<translation id="4202417625268941299">‘အရည်အသွေးမြှင့် ဘေးကင်းလုံခြုံသည့် အသုံးပြုမှု’ ဖြင့် Chrome ၏ အမြင့်ဆုံး လုံခြုံရေးကို ရရှိပါမည်</translation>
 <translation id="420283545744377356">ဖန်သားပြင်နားချိန်ကို ပိတ်ရန်</translation>
 <translation id="4206144641569145248">ဂြိုလ်သား</translation>
 <translation id="4206323443866416204">အကြံပြုချက် အစီရင်ခံစာ</translation>
@@ -3651,7 +3645,6 @@
 <translation id="4759238208242260848">ဒေါင်းလုဒ်များ</translation>
 <translation id="4761104368405085019">သင့်မိုက်ခရိုဖုန်းကို အသုံးပြုရန်</translation>
 <translation id="4762718786438001384">စက်ပစ္စည်း၏ သိုလှောင်ခန်းအလွန်နည်းနေပါသည်</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော ကွန်ပျူတာ</translation>
 <translation id="4763408175235639573">ဤစာမျက်နှာကို သင်ကြည့်ခဲ့ချိန်၌ အောက်ပါကွတ်ကီးများကို သတ်မှတ်ထားပါသည်</translation>
 <translation id="4765582662863429759">သင့်ဖုန်းမှ သင်၏ Chromebook သို့ စာတိုမက်ဆေ့ဂျ်များ ထပ်ဆင့်ပို့ရန် Android Messages ကို ခွင့်ပြုပါ</translation>
 <translation id="4768332406694066911">ဤအဖွဲ့အစည်းများမှနေ၍ သင်၏ အထောက်အထား အသိအမှတ်ပြုလက်မှတ်များ သင့်ထံတွင်ရှိပါသည်</translation>
@@ -5829,7 +5822,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{ပြီးခဲ့သည့် ၁ မိနစ်က လုံခြုံရေး စစ်ဆေးခဲ့သည်}other{ပြီးခဲ့သည့် {NUM_MINS} မိနစ်က လုံခြုံရေး စစ်ဆေးခဲ့သည်}}</translation>
 <translation id="7057767408836081338">အက်ပ်ဒေတာရယူ၍ မရပါ၊ မည်သို့ဖြစ်စေ အက်ပ်ကိုဖွင့်ရန် ကြိုးစားနေသည်...</translation>
 <translation id="7058024590501568315">ဖျောက်ထားသော ကွန်ရက်</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော မောက်စ်</translation>
 <translation id="7059858479264779982">အော်တို-ဖွင့်တင်သို့ သတ်မှတ်ရန်</translation>
 <translation id="7062222374113411376">မကြာသေးမီက ပိတ်လိုက်သည့် ဆိုက်များတွင် ဒေတာများ ပို့ခြင်းနှင့် လက်ခံခြင်းကို အဆုံးသတ်ရန် ခွင့်ပြုပါ (အကြံပြုထားသည်)</translation>
 <translation id="7063129466199351735">ဖြတ်လမ်းများကို လုပ်ဆောင်နေသည်...</translation>
@@ -5993,7 +5985,6 @@
 <translation id="7257173066616499747">ကြိုးမဲ့ကွန်ယက်များ</translation>
 <translation id="725758059478686223">ပုံနှိပ်ခြင်း ဝန်ဆောင်မှု</translation>
 <translation id="7257666756905341374">သင်က ကူးယူလျက် ကပ်ပေးသည့် ဒေတာကို ဖတ်ရန်</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော ဗီဒီယိုကင်မရာ</translation>
 <translation id="7258192266780953209">ပြောင်းလဲမှုများ</translation>
 <translation id="7258225044283673131">ဤအပလီကေးရှင်းက တုံ့ပြန်မှုမရှိပါ။ အက်ပ်ကိုပိတ်ရန် "မဖြစ်မနေပိတ်ရန်" ကို ရွေးပါ။</translation>
 <translation id="7262004276116528033">ဤ လက်မှတ်ထိုး ဝင်ရေး ဝန်ဆောင်မှုကို <ph name="SAML_DOMAIN" />မှ စီမံပေးပါသည်</translation>
@@ -6789,7 +6780,6 @@
 <translation id="8037117027592400564">ဖန်တီး နှုတ်စကားကို အသုံးပြုပြီး ပြောကြားခဲ့သည့် စာသား အားလုံးကို ဖတ်ရန်</translation>
 <translation id="8037357227543935929">မေးရန် (မူရင်း)</translation>
 <translation id="803771048473350947">ဖိုင်</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" /> အနက် စက် <ph name="DEVICE_INDEX" />၊ <ph name="DEVICE_NAME" /> အမည်ရှိသော ကီးဘုတ်</translation>
 <translation id="8041089156583427627">အကြံပြုချက် ပို့ရန်</translation>
 <translation id="8042142357103597104">စာသား အလင်းပိတ်နှုန်း</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> တုံ့ပြန်မှုမရှိခြင်း။</translation>
@@ -6813,6 +6803,7 @@
 <translation id="8054563304616131773">မှန်ကန်သော အီးမေးလိပ်စာ ရိုက်ထည့်ပေးရန်</translation>
 <translation id="8054883179223321715">သတ်မှတ်ထားသော ဗီဒီယိုဝဘ်ဆိုက်များအတွက် ရနိုင်သည်</translation>
 <translation id="8054921503121346576">USB ကီးဘုတ် ချိတ်ဆက်ထား</translation>
+<translation id="8057414620575339583">ဘေးရှာဖွေဘား</translation>
 <translation id="8058655154417507695">သက်တမ်းကုန်ဆုံးမည့်နှစ်</translation>
 <translation id="8058986560951482265">ဆတ်တောက်ဆတ်တောက်</translation>
 <translation id="8059417245945632445">&amp;စက်ပစ္စည်းများ စစ်ဆေးရန်</translation>
@@ -6864,6 +6855,7 @@
 <translation id="81020759409809034">စက်တွင်း တည်နေရာ</translation>
 <translation id="8102139037507939978">system_logs.txt မှ 'ပုဂ္ဂိုလ်ရေးအရ ခွဲခြားသိရှိနိုင်သော အချက်အလက်များ' ကို ဖယ်ရှားသည်။</translation>
 <translation id="8104088837833760645">eSIM ပရိုဖိုင် ဒေါင်းလုဒ်လုပ်ရန်</translation>
+<translation id="8105368624971345109">ပိတ်ပါ</translation>
 <translation id="8107015733319732394">သင့် <ph name="DEVICE_TYPE" /> တွင် Google Play Store ကို ထည့်သွင်းနေပါသည်။ မိနစ်အနည်းငယ် ကြာနိုင်ပါသည်။</translation>
 <translation id="810728361871746125">မျက်နှာပြင်ပြသမှုပုံရိပ် ပြတ်သားကိန်း</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီးများ မရှိပါ}=1{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီး ၁ ခုကို ပိတ်ထားသည်}other{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီး # ခုကို ပိတ်ထားသည်}}</translation>
@@ -6928,7 +6920,6 @@
 <translation id="8168071266284693455">သင့်လိပ်စာများ၊ စကားဝှက်များ၊ မှတ်တမ်းနှင့် အခြားအရာများကို သင့်စက်အားလုံးတွင် စင့်ခ်လုပ်ထားသည်</translation>
 <translation id="8168435359814927499">ပါဝင်သောအကြောင်းအရာ</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{တဘ်ကို ဖတ်ရန်စာရင်းသို့ထည့်ရန်}other{တဘ်များကို ဖတ်ရန်စာရင်းသို့ထည့်ရန်}}</translation>
-<translation id="8169849063724750395">ပြန်ဖွင့်ရန်</translation>
 <translation id="8171334254070436367">ကတ်အားလုံးကို ဖျောက်ရန်</translation>
 <translation id="8174047975335711832">စက်ကိရိယာ အချက်အလက်</translation>
 <translation id="8174876712881364124">Google Drive သို့ အရန်သိမ်းပါ။ သင့်ဒေတာများကို ပြန်ယူခြင်း (သို့) စက်ပစ္စည်းပြောင်းခြင်းတို့ အချိန်မရွေး လွယ်ကူစွာပြုလုပ်နိုင်သည်။ သင့်အရန်တွင် အက်ပ်ဒေတာများ ပါဝင်သည်။ သင့်ကလေး၏ Google အကောင့်စကားဝှက် အသုံးပြု၍ ၎င်းတို့ကို Google သို့ အပ်လုဒ်လုပ်ပြီး အသွင်ဝှက်ထားပါသည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation>
@@ -7002,7 +6993,6 @@
 <translation id="8249615410597138718">သင့်ကိရိယာများသို့ ပို့ပါ</translation>
 <translation id="8249672078237421304">သင့်ဘာသာစကားမဟုတ်သည့် စာမျက်နှာများကို ဘာသာပြန်ပေးရန် ကမ်းလှမ်းပါသည်</translation>
 <translation id="8251441930213048644">ယခု ပြန်လည်စတင်ရန်</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> ကိုတွဲချိတ်နေသည်</translation>
 <translation id="8251578425305135684">လက်သည်းပုံ ဖယ်ရှားလိုက်ပါပြီ။</translation>
 <translation id="825238165904109940">URL အပြည့်အစုံကို အမြဲပြရန်</translation>
 <translation id="8252569384384439529">အပ်လုဒ်လုပ်နေသည်...</translation>
@@ -7244,7 +7234,6 @@
 <translation id="8534656636775144800">ဒိုမိန်းသို့ ချိတ်ဆက်နေစဉ် တစ်စုံတစ်ခုမှားယွင်းသွားပါသည်။ နောက်မှ ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="8535005006684281994">Netscape အသိမှတ်ပြု လက်မှတ် ပြန်လည်ဆန်းသစ်မှု URL</translation>
 <translation id="8536956381488731905">ကီးနှိပ်လျှင် အသံမြည်ရန်</translation>
-<translation id="8538718737588735385">ပြန်ဖွင့်ရန်</translation>
 <translation id="8539727552378197395">မဟုတ် (Httpသာလျှင်)</translation>
 <translation id="8539766201049804895">အဆင့်မြှင့်ရန်</translation>
 <translation id="8540136935098276800">မှန်ကန်စွာ ဖော်မက်ချထားသည့် URL ကို ထည့်ပါ</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 400a9aa..969fff58 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -2501,6 +2501,7 @@
 <translation id="3557101512409028104">Family Link मार्फत वेबसाइटका प्रतिबन्धहरू र स्क्रिन हेरेर बिताउने समयको सीमा सेट गर्नुहोस्</translation>
 <translation id="3559262020195162408">यन्त्रमा नीति स्थापना गर्न सकिएन।</translation>
 <translation id="3559533181353831840">लगभग <ph name="TIME_LEFT" /> बाँकी छ</translation>
+<translation id="3559697822483154494">स्क्रिन स्प्लिट गर्ने र डेस्क परिवर्तन गर्ने जस्ता कारबाही गर्दा ती कारबाही गरिएको जनाउने भाइब्रेसन प्राप्त गर्नुहोस्।</translation>
 <translation id="3560034655160545939">&amp;हिज्जे जाँच</translation>
 <translation id="3562423906127931518">यो प्रक्रिया पूरा हुन केही बेर लाग्न सक्छ। Linux कन्टेनर सेटअप गर्दै।</translation>
 <translation id="3562655211539199254">आफ्नो फोनको Chrome मा हालसालै खोलिएका ट्याबहरू हेर्नुहोस्</translation>
@@ -2725,6 +2726,7 @@
 <translation id="3788331399335602504">यी फाइलहरू</translation>
 <translation id="3788401245189148511">यसले सक्छ:</translation>
 <translation id="3789841737615482174">स्थापना गर्नुहोस्</translation>
+<translation id="3790417903123637354">केही चिज गडबड भयो। पछि फेरि प्रयास गर्नुहोस्</translation>
 <translation id="379082410132524484">तपाईंको कार्डको म्याद सकियो</translation>
 <translation id="3792890930871100565">प्रिन्टरहरूको जडान विच्छेद गर्नुहोस्</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ले तपाईंको कम्प्युटरमा कुनै हानिकारक सफ्टवेयर भेट्टाएन • १ दिनअघि जाँच गरिएको}other{Chrome ले तपाईंको कम्प्युटरमा कुनै हानिकारक सफ्टवेयर भेट्टाएन • {NUM_DAYS} दिनअघि जाँच गरिएको}}</translation>
@@ -3809,6 +3811,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" कुनै क्रमिक पोर्टमा जडान गर्न चाहन्छ</translation>
 <translation id="4944310289250773232">यो प्रमाणीकरण सेवा <ph name="SAML_DOMAIN" /> ले होस्ट गरेको हो</translation>
 <translation id="4945439665401275950">तपाईं आफ्ना बच्चाको फिंगरप्रिन्ट सेटअप गर्न चाहनुहुन्छ भने उनलाई पावर बटनमा छुन लगाउनुहोस्। तपाईंका बच्चाको फिंगरप्रिन्ट डेटा सुरक्षित रूपमा भण्डारण गरिन्छ र यो डेटा कहिल्यै पनि यस <ph name="DEVICE_TYPE" /> बाट अन्यत्र पठाइँदैन।</translation>
+<translation id="4946459324029651239">तपाईंले मानक सुरक्षा प्राप्त गरिरहनुभएको छ</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{एउटा फाइल}other{# वटा फाइल}}</translation>
 <translation id="495170559598752135">कार्यहरू</translation>
 <translation id="4953808748584563296">डिफल्ट सुन्तला रङ्गको अवतार</translation>
@@ -4392,6 +4395,7 @@
 <translation id="5575528586625653441">डेमो दर्ताको अनुरोधसम्बन्धी कुनै समस्या भयो।</translation>
 <translation id="557722062034137776">तपाइँको यन्त्र रिसेट गर्नाले तपाइँको Google खाताहरू वा यस खाताहरूमा समक्रमण गरिएका कुनै पनि लगतलाई असर गर्नेछैन। तर पनि, तपाइँको यन्त्रमा स्थायी रूपमा बचत गरेका सबै फाइलहरू हटाइने छ।</translation>
 <translation id="5578059481725149024">स्वतः साइन-इन गर्ने</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> भाषामा अनुवाद गरियो</translation>
 <translation id="558170650521898289">Microsoft Windows हार्डवेयर ड्राइभर प्रमाणीकरण</translation>
 <translation id="5581972110672966454">यो यन्त्रलाई उक्त डोमेनसँग जोड्न सकिएन। कृपया फेरि प्रयास गर्नुहोस् वा आफ्नो डिभाइसका मालिक वा एड्मिनसँग सम्पर्क गर्नुहोस्। त्रुटिको कोड: <ph name="ERROR_CODE" />।</translation>
 <translation id="5582839680698949063">मुख्य मेनु</translation>
@@ -4895,6 +4899,7 @@
 <translation id="6112931163620622315">आफ्नो फोन जाँच गर्नुहोस्</translation>
 <translation id="6113434369102685411">Chrome ब्राउजर र <ph name="DEVICE_TYPE" /> लन्चरका हकमा डिफल्ट सर्च इन्जिन तोक्नुहोस्</translation>
 <translation id="6113942107547980621">Smart Lock प्रयोग गर्न, आफ्नो फोनको प्राथमिक प्रयोगकर्ता प्रोफाइल प्रयोग गर्नुहोस्</translation>
+<translation id="611684075852771314">यी लगहरू "मेरा फाइल" को निम्न नामको फाइलमा सेभ गरिएका छन्:</translation>
 <translation id="6116921718742659598">भाषा र इनपुट सेटिङहरू परिवर्तन गर्नुहोस्</translation>
 <translation id="6119927814891883061">यो डिभाइसको नाम <ph name="DEVICE_NAME" /> राख्नुहोस्</translation>
 <translation id="6120205520491252677">यस पृष्ठलाई सुरुवात स्क्रिनमा पिन गर्नुहोस्...</translation>
@@ -5671,6 +5676,7 @@
 <translation id="6930036377490597025">बाह्य सुरक्षा साँचो वा अन्तर्निर्मित सेन्सर</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{एउटा एक्स्टेन्सन अस्वीकार गरिएको छ}other{# वटा एक्स्टेन्सन अस्वीकार गरिएको छ}}</translation>
 <translation id="6930321203306643451">स्तरोन्नति पूरा भयो</translation>
+<translation id="6931690462168617033">क्लिकको संवेदनशीलता</translation>
 <translation id="6935286146439255109">कागज राख्ने एउटा ट्रे छैन</translation>
 <translation id="693807610556624488">लेख्ने कार्यले "<ph name="DEVICE_NAME" />" मा विशेषताको अधिकतम लम्बाइ नाघ्छ</translation>
 <translation id="6938386202199793006">तपाईंसँग १ प्रिन्टर छ।</translation>
@@ -6785,6 +6791,7 @@
 <translation id="8054563304616131773">एउटा मान्य इमेल ठेगाना प्रविष्टि गर्नुहोस्</translation>
 <translation id="8054883179223321715">भिडियो हेर्ने सुविधा प्रदान गर्ने केही निश्चित साइटहरूका लागि उपलब्ध</translation>
 <translation id="8054921503121346576">युएसबी कुञ्जीपाट जडित</translation>
+<translation id="8057414620575339583">Side Search</translation>
 <translation id="8058655154417507695">म्याद सकिने वर्ष</translation>
 <translation id="8058986560951482265">चल्दै रोकिदै गर्ने</translation>
 <translation id="8059417245945632445">यन्त्रहरू &amp;निरीक्षण गर्नुहोस्</translation>
@@ -6799,6 +6806,7 @@
 <translation id="8064279191081105977">समूह <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">कनेक्सन डायलग</translation>
 <translation id="8069615408251337349">Google क्लाउड प्रिन्टिङ</translation>
+<translation id="8070662218171013510">हेप्टिक फिडब्याक</translation>
 <translation id="8071432093239591881">छविको रूपमा प्रिन्ट गर्नुहोस्</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />एपका डेटा भनेको सम्पर्क, सन्देश र तस्बिरहरू जस्ता डेटालगायत कुनै अनुप्रयोगले सुरक्षित गरेको (विकासकर्ताको सेटिङहरूका आधारमा) जुनसुकै डेटा हुन सक्छ।<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />ब्याकअपसम्बन्धी डेटालाई तपाईंका बालकको ड्राइभको भण्डारण कोटामा गणना गरिने छैन।<ph name="END_PARAGRAPH2" />
@@ -6836,6 +6844,7 @@
 <translation id="81020759409809034">डिभाइसमा फाइल डाउनलोड गरिने डिफल्ट लोकेसन</translation>
 <translation id="8102139037507939978">system_logs.txt बाट व्यक्तिगत रूपमा पहिचान गर्न मिल्ने जानकारी हटाइयोस्।</translation>
 <translation id="8104088837833760645">eSIM प्रोफाइल डाउनलोड गर्नुहोस्</translation>
+<translation id="8105368624971345109">निष्क्रिय पार्नुहोस्</translation>
 <translation id="8107015733319732394">तपाईंको <ph name="DEVICE_TYPE" /> मा उक्त Google Play स्टोर स्थापना गर्दै। यस कार्यमा केही समय लाग्नसक्छ।</translation>
 <translation id="810728361871746125">डिस्प्लेको रिजोल्युसन</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{कुनै पनि तेस्रो पक्षीय कुकी छैन}=1{१ तेस्रो पक्षीय कुकीलाई रोक लगाइयो}other{# वटा तेस्रो पक्षीय कुकीलाई रोक लगाइयो}}</translation>
@@ -7210,6 +7219,7 @@
 <translation id="8528074251912154910">भाषाहरू थप्नुहोस्</translation>
 <translation id="8528962588711550376">साइन इन गर्दै।</translation>
 <translation id="8529925957403338845">तात्कालिक टेदरिङको जडान असफल भयो</translation>
+<translation id="8531701051932785007">परिष्कृत Safe Browsing अफ छ</translation>
 <translation id="8534656636775144800">हत्तेरिका! डोमेनमा सामेल हुने प्रयास गर्दा केही चिज गडबड भयो। कृपया फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="8535005006684281994">नेटस्केप प्रमाणपत्र नविकरण URL</translation>
 <translation id="8536956381488731905">कुञ्जी थिच्दा आवाज आउने पारियोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index f18f77f..3f365661 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">Linux-herstel wordt momenteel uitgevoerd</translation>
 <translation id="1244303850296295656">Fout met extensie</translation>
 <translation id="1246863218384630739">Kan <ph name="VM_NAME" /> niet installeren: image-URL heeft een <ph name="HTTP_ERROR" />-foutcode geretourneerd. Neem contact op met je beheerder.</translation>
-<translation id="1247071602516579380">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, tablet met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Verwachte openingsaccolade <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Hiermee wis je <ph name="TOTAL_USAGE" /> van de gegevens die zijn opgeslagen door sites en geïnstalleerde apps</translation>
 <translation id="1251578593170406502">Scannen naar mobiele gegevensnetwerken...</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> geselecteerd</translation>
 <translation id="1442851588227551435">Actief Kerberos-ticket instellen</translation>
 <translation id="1444628761356461360">Deze instelling wordt beheerd door de eigenaar van het apparaat, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, telefoon met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Kan '<ph name="IMAGE_PATH" />' niet laden voor thema.</translation>
 <translation id="1449191289887455076">Druk nog een keer op <ph name="CURRENTKEY" /> om de toewijzing te bevestigen en <ph name="RESPONSE" />.</translation>
 <translation id="1451375123200651445">Webpagina, één bestand</translation>
@@ -861,7 +859,6 @@
 <translation id="1855079636134697549">Camera staat aan</translation>
 <translation id="1856715684130786728">Locatie toevoegen...</translation>
 <translation id="1858585891038687145">Dit certificaat vertrouwen voor het identificeren van softwareontwikkelaars</translation>
-<translation id="1859787252990099899">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, onbekend apparaat met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Deze map is leeg</translation>
 <translation id="1862311223300693744">Heb je speciale VPN-, proxy-, firewall- of NAS-software geïnstalleerd?</translation>
 <translation id="1863182668524159459">Geen seriële poorten gevonden</translation>
@@ -1236,7 +1233,6 @@
 <translation id="2242687258748107519">Bestandsinformatie</translation>
 <translation id="2246549592927364792">Afbeeldingsbeschrijvingen ophalen van Google?</translation>
 <translation id="2247738527273549923">Je apparaat wordt beheerd door je organisatie</translation>
-<translation id="2249061317998743208">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, gamecontroller met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Openen als venster met tabbladen</translation>
 <translation id="2249605167705922988">bijv. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Openen met systeemviewer</translation>
@@ -1994,7 +1990,6 @@
 <translation id="3007771295016901659">Tabblad dupliceren</translation>
 <translation id="3008232374986381779">Voer Linux-tools, -editors en -IDE's op je <ph name="DEVICE_TYPE" /> uit. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Rechten resetten</translation>
-<translation id="3008396025115884998">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, audioapparaat met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> vereist dat je vandaag verbinding maakt met wifi om een update te downloaden. Je kunt de update ook downloaden via een verbinding met datalimiet (er kunnen kosten van toepassing zijn).}other{<ph name="MANAGER" /> vereist dat je vóór de deadline verbinding maakt met wifi en een update downloadt. Je kunt de update ook downloaden via een verbinding met datalimiet (er kunnen kosten van toepassing zijn).}}</translation>
 <translation id="3009300415590184725">Weet je zeker dat je het instellen van een mobiele dataservice wilt annuleren?</translation>
 <translation id="3009779501245596802">Geïndexeerde databases</translation>
@@ -2300,7 +2295,6 @@
 <translation id="3348038390189153836">Verwisselbaar apparaat gedetecteerd</translation>
 <translation id="3348131053948466246">Voorgestelde emoji's. Druk op de pijl-omhoog of pijl-omlaag om te navigeren en druk op Enter om het geselecteerde item in te voegen.</translation>
 <translation id="3349933790966648062">Geheugenvoetafdruk</translation>
-<translation id="3354972872297836698">Kan niet koppelen met apparaat <ph name="DEVICE_NAME" />, selecteer het apparaat om het opnieuw te proberen</translation>
 <translation id="3355936511340229503">Verbindingsfout</translation>
 <translation id="3356580349448036450">Voltooid</translation>
 <translation id="3359256513598016054">Beleidsbeperkingen voor certificaat</translation>
@@ -2732,6 +2726,7 @@
 <translation id="3788331399335602504">deze bestanden</translation>
 <translation id="3788401245189148511">De apps/extensies zouden nu het volgende kunnen doen:</translation>
 <translation id="3789841737615482174">Installeren</translation>
+<translation id="3790417903123637354">Er is iets misgegaan. Probeer het later opnieuw</translation>
 <translation id="379082410132524484">Je pas is verlopen</translation>
 <translation id="3792890930871100565">Printers ontkoppelen</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome heeft geen schadelijke software gevonden op je computer • 1 dag gecheckt}other{Chrome heeft geen schadelijke software gevonden op je computer • {NUM_DAYS} dagen geleden gecheckt}}</translation>
@@ -3131,7 +3126,6 @@
 <translation id="4200689466366162458">Aangepaste woorden</translation>
 <translation id="4200983522494130825">Nieuw &amp;tabblad</translation>
 <translation id="4201546031411513170">Je kunt altijd in de instellingen bepalen wat je wilt synchroniseren.</translation>
-<translation id="4202417625268941299">Met de uitgebreide versie van Safe Browsing krijg je de sterkste beveiliging van Chrome</translation>
 <translation id="420283545744377356">Screensaver uitzetten</translation>
 <translation id="4206144641569145248">Alien</translation>
 <translation id="4206323443866416204">Feedbackrapport</translation>
@@ -3637,7 +3631,6 @@
 <translation id="4759238208242260848">Downloads</translation>
 <translation id="4761104368405085019">Je microfoon gebruiken</translation>
 <translation id="4762718786438001384">Er is zeer weinig schijfruimte beschikbaar op het apparaat</translation>
-<translation id="4762898026821161650">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, computer met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">De volgende cookies zijn opgeslagen toen je deze pagina bekeek</translation>
 <translation id="4765582662863429759">Hiermee kan Android Berichten sms'jes van je telefoon naar je Chromebook doorsturen</translation>
 <translation id="4768332406694066911">Je hebt certificaten van deze organisaties waarmee je wordt geïdentificeerd</translation>
@@ -5815,7 +5808,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Veiligheidscheck is 1 minuut geleden uitgevoerd}other{Veiligheidscheck is {NUM_MINS} minuten geleden uitgevoerd}}</translation>
 <translation id="7057767408836081338">App-gegevens kunnen niet worden opgehaald. Er wordt toch geprobeerd de app uit te voeren.</translation>
 <translation id="7058024590501568315">Verborgen netwerk</translation>
-<translation id="70582545822664495">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, muis met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Instellen op automatisch starten</translation>
 <translation id="7062222374113411376">Toestaan dat onlangs gesloten sites het verzenden en ontvangen van gegevens voltooien (aanbevolen)</translation>
 <translation id="7063129466199351735">Snelle links verwerken...</translation>
@@ -5979,7 +5971,6 @@
 <translation id="7257173066616499747">Wifi-netwerken</translation>
 <translation id="725758059478686223">Afdrukservice</translation>
 <translation id="7257666756905341374">Gegevens lezen die je kopieert en plakt</translation>
-<translation id="7258006747130724016">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, videocamera met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformaties</translation>
 <translation id="7258225044283673131">De app reageert niet. Selecteer 'Nu sluiten' om de app te sluiten.</translation>
 <translation id="7262004276116528033">Deze inlogservice wordt gehost door <ph name="SAML_DOMAIN" />.</translation>
@@ -6774,7 +6765,6 @@
 <translation id="8037117027592400564">Alle tekst lezen die wordt gesproken met gesynthetiseerde spraak</translation>
 <translation id="8037357227543935929">Vragen (standaard)</translation>
 <translation id="803771048473350947">Archief</translation>
-<translation id="8038399858950372766">Apparaat <ph name="DEVICE_INDEX" /> van <ph name="DEVICE_COUNT" />, toetsenbord met de naam <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Feedback sturen</translation>
 <translation id="8042142357103597104">Ondoorzichtigheid van tekst</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> reageert niet.</translation>
@@ -6850,6 +6840,7 @@
 <translation id="81020759409809034">Lokale locatie</translation>
 <translation id="8102139037507939978">Persoonlijk identificeerbare informatie verwijderen uit system_logs.txt.</translation>
 <translation id="8104088837833760645">E-simkaartprofiel downloaden</translation>
+<translation id="8105368624971345109">Uitzetten</translation>
 <translation id="8107015733319732394">De Google Play Store wordt geïnstalleerd op je <ph name="DEVICE_TYPE" />. Dit kan enkele minuten duren.</translation>
 <translation id="810728361871746125">Schermresolutie</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Geen cookies van derden}=1{1 cookie van derden is geblokkeerd}other{# cookies van derden zijn geblokkeerd}}</translation>
@@ -6914,7 +6905,6 @@
 <translation id="8168071266284693455">Je bookmarks, wachtwoorden, geschiedenis en meer zijn gesynchroniseerd op al je apparaten</translation>
 <translation id="8168435359814927499">Content</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Tabblad toevoegen aan leeslijst}other{Tabbladen toevoegen aan leeslijst}}</translation>
-<translation id="8169849063724750395">Weer aanzetten</translation>
 <translation id="8171334254070436367">Alle kaarten verbergen</translation>
 <translation id="8174047975335711832">Apparaatgegevens</translation>
 <translation id="8174876712881364124">Een back-up maken in Google Drive. Gemakkelijk gegevens herstellen of op elk gewenst moment van apparaat wisselen. Deze back-up omvat app-gegevens. Back-ups worden geüpload naar Google en versleuteld met het wachtwoord van het Google-account van je kind. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation>
@@ -6988,7 +6978,6 @@
 <translation id="8249615410597138718">Verzenden naar je apparaten</translation>
 <translation id="8249672078237421304">Aanbieden om pagina's te vertalen die in een voor jou onbekende taal zijn</translation>
 <translation id="8251441930213048644">Nu vernieuwen</translation>
-<translation id="8251509999076836464">Koppelen met <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Miniatuur verwijderd.</translation>
 <translation id="825238165904109940">Altijd volledige URL's bekijken</translation>
 <translation id="8252569384384439529">Uploaden...</translation>
@@ -7230,7 +7219,6 @@
 <translation id="8534656636775144800">Er is een fout opgetreden bij het verbinden met het domein. Probeer het opnieuw.</translation>
 <translation id="8535005006684281994">URL voor verlengen van Netscape-certificaat</translation>
 <translation id="8536956381488731905">Geluid bij toetsaanslag</translation>
-<translation id="8538718737588735385">Weer aanzetten</translation>
 <translation id="8539727552378197395">Nee (HttpOnly)</translation>
 <translation id="8539766201049804895">Upgraden</translation>
 <translation id="8540136935098276800">Geef een correct opgemaakte URL op</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 043529f..4011f655d 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Linux-gjenoppretting pågår</translation>
 <translation id="1244303850296295656">Feil med utvidelse</translation>
 <translation id="1246863218384630739">Kunne ikke installere <ph name="VM_NAME" />: Nettadressen til bildet returnerte feilkoden <ph name="HTTP_ERROR" />. Kontakt administratoren din.</translation>
-<translation id="1247071602516579380">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – nettbrett som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Forventet venstrestilt krøllparentes: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Dette sletter <ph name="TOTAL_USAGE" /> data som er lagret av nettsteder og installerte apper</translation>
 <translation id="1251578593170406502">Skanner etter mobildatanettverk …</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> valgt</translation>
 <translation id="1442851588227551435">Angi aktiv Kerberos-sak</translation>
 <translation id="1444628761356461360">Denne innstillingen administreres av enhetseieren, <ph name="OWNER_EMAIL" /> .</translation>
-<translation id="1445005312224723356">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – telefon som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Kan ikke laste inn <ph name="IMAGE_PATH" /> for tema.</translation>
 <translation id="1449191289887455076">Trykk på «<ph name="CURRENTKEY" />» på nytt for å bekrefte tilordningen og <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Nettside – enkeltfil</translation>
@@ -867,7 +865,6 @@
 <translation id="1855079636134697549">Kameraet er slått på</translation>
 <translation id="1856715684130786728">Legg til plassering</translation>
 <translation id="1858585891038687145">Stol på dette sertifikatet for identifisering av programvareprodusenter.</translation>
-<translation id="1859787252990099899">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – ukjent enhet som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Denne mappen er tom</translation>
 <translation id="1862311223300693744">Har du noen spesialprogramvare for VPN, proxy-tjener, brannmur eller NAS installert?</translation>
 <translation id="1863182668524159459">Fant ingen serielle porter</translation>
@@ -1242,7 +1239,6 @@
 <translation id="2242687258748107519">Filinformasjon</translation>
 <translation id="2246549592927364792">Vil du få bildebeskrivelser fra Google?</translation>
 <translation id="2247738527273549923">Enheten administreres av organisasjonen din</translation>
-<translation id="2249061317998743208">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – spillkontroller som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Åpne som vindu med faner</translation>
 <translation id="2249605167705922988">f.eks. 1–5, 8, 11–13</translation>
 <translation id="2251218783371366160">Åpne med visningsprogrammet for systemet</translation>
@@ -2004,7 +2000,6 @@
 <translation id="3007771295016901659">Dupliser fanen</translation>
 <translation id="3008232374986381779">Kjør Linux-verktøy, -redigeringsverktøy og -IDE-er på <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Tilbakestill tillatelser</translation>
-<translation id="3008396025115884998">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – lydenhet som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> krever at du kobler til Wi-Fi i dag og laster ned en oppdatering. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).}other{<ph name="MANAGER" /> krever at du kobler til Wi-Fi og laster ned en oppdatering før tidsfristen. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).}}</translation>
 <translation id="3009300415590184725">Er du sikker på at du vil avbryte konfigurasjonsprosessen for mobildatatjenesten?</translation>
 <translation id="3009779501245596802">Indekserte databaser</translation>
@@ -2310,7 +2305,6 @@
 <translation id="3348038390189153836">Oppdaget flyttbar enhet</translation>
 <translation id="3348131053948466246">En emoji er foreslått. Bruk pil opp og pil ned for å navigere og Enter for å sette inn.</translation>
 <translation id="3349933790966648062">Minnebruk</translation>
-<translation id="3354972872297836698">Kunne ikke koble til enheten <ph name="DEVICE_NAME" /> – velg en enhet for å prøve på nytt</translation>
 <translation id="3355936511340229503">Tilkoblingsfeil</translation>
 <translation id="3356580349448036450">Fullført</translation>
 <translation id="3359256513598016054">Retningslinjebegrensninger for sertifikat</translation>
@@ -2518,6 +2512,7 @@
 <translation id="3557101512409028104">Angi begrensninger for nettsteder og skjermtid med Family Link</translation>
 <translation id="3559262020195162408">Kunne ikke installere regelen på enheten.</translation>
 <translation id="3559533181353831840">Omtrent <ph name="TIME_LEFT" /> gjenstår</translation>
+<translation id="3559697822483154494">Få vibreringsbekreftelse på handlinger som delt skjerm og bytte av skrivebord.</translation>
 <translation id="3560034655160545939">&amp;Stavekontroll</translation>
 <translation id="3562423906127931518">Denne prosessen kan ta noen minutter. Konfigurerer Linux-beholderen.</translation>
 <translation id="3562655211539199254">Se nylige Chrome-faner fra telefonen din</translation>
@@ -2742,6 +2737,7 @@
 <translation id="3788331399335602504">disse filene</translation>
 <translation id="3788401245189148511">Den får følgende tilgang:</translation>
 <translation id="3789841737615482174">Installer</translation>
+<translation id="3790417903123637354">Noe gikk galt. Prøv på nytt senere</translation>
 <translation id="379082410132524484">Kortet ditt er utløpt</translation>
 <translation id="3792890930871100565">Koble fra skrivere</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome fant ingen skadelig programvare på datamaskinen • sjekket for 1 dag siden}other{Chrome fant ingen skadelig programvare på datamaskinen • sjekket for {NUM_DAYS} dager siden}}</translation>
@@ -3139,7 +3135,6 @@
 <translation id="4200689466366162458">Egendefinerte ord</translation>
 <translation id="4200983522494130825">&amp;Ny fane</translation>
 <translation id="4201546031411513170">Du kan når som helst velge hva du vil synkronisere, i innstillingene.</translation>
-<translation id="4202417625268941299">Med Safe Browsing med økt beskyttelse får du den sterkeste sikkerheten i Chrome</translation>
 <translation id="420283545744377356">Slå av skjermspareren</translation>
 <translation id="4206144641569145248">Romvesen</translation>
 <translation id="4206323443866416204">Tilbakemeldingsrapport</translation>
@@ -3645,7 +3640,6 @@
 <translation id="4759238208242260848">Nedlastinger</translation>
 <translation id="4761104368405085019">bruke mikrofonen din</translation>
 <translation id="4762718786438001384">Det er kritisk lite plass på enheten</translation>
-<translation id="4762898026821161650">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – datamaskin som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Følgende informasjonskapsler ble angitt da du besøkte denne siden</translation>
 <translation id="4765582662863429759">Tillater at Android Messages videresender tekstmeldinger fra telefonen din til Chromebook</translation>
 <translation id="4768332406694066911">Du har sertifikater som identifiserer deg, fra disse organisasjonene</translation>
@@ -4915,6 +4909,7 @@
 <translation id="6112931163620622315">Sjekk telefonen din</translation>
 <translation id="6113434369102685411">Angi standard søkemotor for Chrome-nettleseren og appoversikten på <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">For å bruke Smart Lock, bytt til den primære brukerprofilen på telefonen din</translation>
+<translation id="611684075852771314">Disse loggene er lagret i Mine filer som</translation>
 <translation id="6116921718742659598">Endre språk- og inndatainnstillinger</translation>
 <translation id="6119927814891883061">Gi enheten navnet <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Fest denne siden til startsiden</translation>
@@ -5691,6 +5686,7 @@
 <translation id="6930036377490597025">Ekstern sikkerhetsnøkkel eller innebygd sensor</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{En utvidelse er avvist}other{# utvidelser er avvist}}</translation>
 <translation id="6930321203306643451">Oppgraderingen er fullført</translation>
+<translation id="6931690462168617033">Klikkstyrke</translation>
 <translation id="6935286146439255109">En papirskuff mangler</translation>
 <translation id="693807610556624488">Skriveoperasjonen til den følgende enheten overskrider den maksimale attributtlengden: «<ph name="DEVICE_NAME" />».</translation>
 <translation id="6938386202199793006">Du har 1 lagret skriver.</translation>
@@ -5824,7 +5820,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Sikkerhetssjekken ble kjørt for 1 minutt siden}other{Sikkerhetssjekken ble kjørt for {NUM_MINS} minutter siden}}</translation>
 <translation id="7057767408836081338">Kunne ikke hente appdata. Prøver å kjøre appen likevel …</translation>
 <translation id="7058024590501568315">Skjult nettverk</translation>
-<translation id="70582545822664495">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – mus som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Angi automatisk oppstart</translation>
 <translation id="7062222374113411376">Tillat at nylig lukkede nettsteder fullfører sending og mottak av data (anbefales)</translation>
 <translation id="7063129466199351735">Behandler snarveier …</translation>
@@ -5988,7 +5983,6 @@
 <translation id="7257173066616499747">Wi-Fi-nettverk</translation>
 <translation id="725758059478686223">Utskriftstjeneste</translation>
 <translation id="7257666756905341374">lese data du kopierer og limer inn</translation>
-<translation id="7258006747130724016">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – videokamera som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformasjoner</translation>
 <translation id="7258225044283673131">Appen svarer ikke. Velg «Tving avslutning» for å lukke appen.</translation>
 <translation id="7262004276116528033">Verten for denne påloggingstjenesten er <ph name="SAML_DOMAIN" /></translation>
@@ -6784,7 +6778,6 @@
 <translation id="8037117027592400564">lese hele teksten med syntetisert tale</translation>
 <translation id="8037357227543935929">Spør (standard)</translation>
 <translation id="803771048473350947">Fil</translation>
-<translation id="8038399858950372766">Enhet <ph name="DEVICE_INDEX" /> av <ph name="DEVICE_COUNT" /> – tastatur som heter <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Send tilbakemelding</translation>
 <translation id="8042142357103597104">Tekstopasitet</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> svarer ikke.</translation>
@@ -6823,6 +6816,7 @@
 <translation id="8064279191081105977">Gruppe <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Tilkoblingsdialogboks</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Fysisk tilbakemelding</translation>
 <translation id="8071432093239591881">Skriv ut som bilde</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Appdata kan være alle slags data apper har lagret (basert på utviklerinnstillingene), blant annet kontakter, meldinger og bilder.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />De sikkerhetskopierte dataene telles ikke med i Disk-lagringskvoten din.<ph name="END_PARAGRAPH2" />
@@ -6860,6 +6854,7 @@
 <translation id="81020759409809034">Lokal plassering</translation>
 <translation id="8102139037507939978">Fjern personlig identifiserende informasjon fra system_logs.txt.</translation>
 <translation id="8104088837833760645">Last ned e-SIM-profilen</translation>
+<translation id="8105368624971345109">Slå av</translation>
 <translation id="8107015733319732394">Installerer Google Play-butikken på <ph name="DEVICE_TYPE" />-enheten din. Dette kan ta noen minutter.</translation>
 <translation id="810728361871746125">Skjermoppløsning</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ingen informasjonskapsler fra tredjeparter}=1{1 informasjonskapsel fra en tredjepart er blokkert}other{# informasjonskapsler fra tredjeparter er blokkert}}</translation>
@@ -6924,7 +6919,6 @@
 <translation id="8168071266284693455">Bokmerkene dine, passordene dine, loggen din med mer er synkronisert på alle enhetene dine</translation>
 <translation id="8168435359814927499">Innhold</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Legg fanen til på leselisten}other{Legg fanene til på leselisten}}</translation>
-<translation id="8169849063724750395">Slå på igjen</translation>
 <translation id="8171334254070436367">Skjul alle kort</translation>
 <translation id="8174047975335711832">Enhetsinformasjon</translation>
 <translation id="8174876712881364124">Sikkerhetskopiér til Google Disk. Gjenopprett data eller bytt enhet når som helst – helt enkelt. Sikkerhetskopier lastes opp til Google og krypteres med passordet for Google-kontoen til barnet ditt. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation>
@@ -6998,7 +6992,6 @@
 <translation id="8249615410597138718">Send til enhetene dine</translation>
 <translation id="8249672078237421304">Tilby oversettelse av nettsider på språk du ikke kan lese</translation>
 <translation id="8251441930213048644">Last inn på nytt nå</translation>
-<translation id="8251509999076836464">Kobler til ‏<ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Miniatyrbilde fjernet.</translation>
 <translation id="825238165904109940">Vis alltid fullstendige nettadresser</translation>
 <translation id="8252569384384439529">Laster opp …</translation>
@@ -7240,7 +7233,6 @@
 <translation id="8534656636775144800">Beklager. Det oppstod en feil da du prøvde å knytte deg til domenet. Prøv igjen.</translation>
 <translation id="8535005006684281994">Fornying av Netscape-sertifikat for nettadresse</translation>
 <translation id="8536956381488731905">Lyd ved tastetrykk</translation>
-<translation id="8538718737588735385">Slå på igjen</translation>
 <translation id="8539727552378197395">Nei (kun http)</translation>
 <translation id="8539766201049804895">Oppgrader</translation>
 <translation id="8540136935098276800">Skriv inn en riktig formatert nettadresse</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index 2bf7f62..09e107e 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -2725,6 +2725,7 @@
 <translation id="3788331399335602504">ଏହି ଫାଇଲଗୁଡ଼ିକ</translation>
 <translation id="3788401245189148511">ଏହା କରିପାରିବ:</translation>
 <translation id="3789841737615482174">ସଂସ୍ଥାପନ</translation>
+<translation id="3790417903123637354">କିଛି ଭୁଲ ହୋଇଗଲା। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation>
 <translation id="379082410132524484">ଆପଣଙ୍କର କାର୍ଡର ଅବଧି ସମାପ୍ତ ହୋ‍ଇଯାଇଛି</translation>
 <translation id="3792890930871100565">ପ୍ରିଣ୍ଟର୍‍ଗୁଡ଼ିକ ବିଚ୍ଛିନ୍ନ କରନ୍ତୁ</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟରରେ କ୍ଷତିକାରକ ସଫ୍ଟୱେରକୁ ଖୋଜି ପାଇଲା ନାହିଁ • 1 ଦିନ ପୂର୍ବେ ଯାଞ୍ଚ କରାଯାଇଛି}other{Chrome ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟରରେ କ୍ଷତିକାରକ ସଫ୍ଟୱେରକୁ ଖୋଜି ପାଇଲା ନାହିଁ • {NUM_DAYS} ଦିନ ପୂର୍ବେ ଯାଞ୍ଚ କରାଯାଇଛି}}</translation>
@@ -3810,6 +3811,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ଏକ ସିରିୟାଲ୍ ପୋର୍ଟ ସହ ସଂଯୋଗ କରିବାକୁ ଚାହୁଁଛି</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> ଦ୍ୱାରା ପ୍ରାମାଣିକତା ସେବା ହୋଷ୍ଟ କରାଯାଇଛି</translation>
 <translation id="4945439665401275950">ଟିପଚିହ୍ନ ସେଟଅପ୍ କରିବା ପାଇଁ ଆପଣଙ୍କ ପିଲାକୁ ପାୱାର ବଟନ୍ ସ୍ପର୍ଶ କରିବାକୁ ଦିଅନ୍ତୁ। ଆପଣଙ୍କ ପିଲାର ଟିପଚିହ୍ନ ସମ୍ବନ୍ଧିତ ଡାଟା ସୁରକ୍ଷିତ ଭାବେ ଷ୍ଟୋର୍ କରାଯାଇଛି ଏବଂ ଏହା କେବେ ବି ଏହି <ph name="DEVICE_TYPE" />ରୁ କାଢ଼ି ଦିଆଯାଏ ନାହିଁ।</translation>
+<translation id="4946459324029651239">ଆପଣ ଷ୍ଟାଣ୍ଡାର୍ଡ ସୁରକ୍ଷା ପାଉଛନ୍ତି</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{ଏକ ଫାଇଲ୍}other{#ଟି ଫାଇଲ୍}}</translation>
 <translation id="495170559598752135">କାର୍ଯ୍ୟ</translation>
 <translation id="4953808748584563296">ଡିଫଲ୍ଟ ଅରେଞ୍ଜ ଅବତାର</translation>
@@ -4393,6 +4395,7 @@
 <translation id="5575528586625653441">ଡେମୋ ପଞ୍ଜିକରଣ ଅନୁରୋଧରେ ଏକ ସମସ୍ୟା ହୋ‍ଇଛି।</translation>
 <translation id="557722062034137776">ଆପଣଙ୍କର ଡିଭାଇସ୍‌କୁ ରିସେଟ୍ କରିବା ଦ୍ୱାରା, ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟଗୁଡ଼ିକୁ କିମ୍ବା ଏହି ଆକାଉଣ୍ଟଗୁଡ଼ିକୁ ସିଙ୍କ୍ ହେଉଥିବା କୌଣସି ଡାଟାକୁ ଏହା ପ୍ରଭାବିତ କରିବ ନାହିଁ। ତାହା ସତ୍ୱେ ମଧ୍ୟ, ଆପଣଙ୍କର ଡିଭାଇସ୍‌ରେ ସେଭ୍ ହୋଇଥିବା ସମସ୍ତ ଫାଇଲ୍ ଡିଲିଟ୍ ହୋଇଯିବ।</translation>
 <translation id="5578059481725149024">ସ୍ୱଚାଳିତ ସାଇନ୍-ଇନ୍</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" />ରେ ଅନୁବାଦ କରିବା ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି</translation>
 <translation id="558170650521898289">Microsoft Windows ହାର୍ଡୱେୟାର୍ ଡ୍ରାଇଭର୍ ଯାଞ୍ଚ</translation>
 <translation id="5581972110672966454">ଡୋମେନ୍ ସହିତ ଡିଭାଇସକୁ ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ଆପଣଙ୍କ ଡିଭାଇସର ମାଲିକ କିମ୍ବା ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ। ତ୍ରୁଟି କୋଡ୍: <ph name="ERROR_CODE" />।</translation>
 <translation id="5582839680698949063">ମୁଖ୍ୟ ମେନୁ</translation>
@@ -6787,6 +6790,7 @@
 <translation id="8054563304616131773">ଦୟାକରି ଏକ ବୈଧ ଇମେଲ୍‌ ଠିକଣା ଲେଖନ୍ତୁ</translation>
 <translation id="8054883179223321715">ନିର୍ଦ୍ଦିଷ୍ଟ ଭିଡିଓ ସାଇଟଗୁଡ଼ିକ ପାଇଁ ଉପଲବ୍ଧ</translation>
 <translation id="8054921503121346576">USB କୀବୋର୍ଡ ସଂଯୁକ୍ତ କରାଗଲା</translation>
+<translation id="8057414620575339583">ସାଇଡ ସନ୍ଧାନ</translation>
 <translation id="8058655154417507695">ମିଆଦ ଶେଷ ହେଉଥିବା ବର୍ଷ</translation>
 <translation id="8058986560951482265">ଜର୍କି</translation>
 <translation id="8059417245945632445">&amp;ଡିଭାଇସ୍ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
@@ -6838,6 +6842,7 @@
 <translation id="81020759409809034">ସ୍ଥାନୀୟ ଲୋକେସନ୍</translation>
 <translation id="8102139037507939978">System_logs.txtରୁ ବ୍ୟକ୍ତିଗତ ରୂପେ ଚିହ୍ନଟ କରାଯାଇପାରୁଥିବା ସୂଚନାକୁ କାଢ଼ି ଦିଅନ୍ତୁ।</translation>
 <translation id="8104088837833760645">eSIM ପ୍ରୋଫାଇଲ୍ ଡାଉନଲୋଡ୍ କରନ୍ତୁ</translation>
+<translation id="8105368624971345109">ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="8107015733319732394">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />ରେ Google Play Store ଇନ୍‌ଷ୍ଟଲ୍‌ ହେଉଛି। ଏଥିରେ କିଛି ସମୟ ଲାଗିପାରେ।</translation>
 <translation id="810728361871746125">ଡିସପ୍ଲେ ରିଜୋଲ୍ୟୁସନ୍</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{କୌଣସି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ନାହିଁ}=1{1ଟି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ବ୍ଲକ୍ କରାଯାଇଛି}other{#ଟି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ବ୍ଲକ୍ କରାଯାଇଛି}}</translation>
@@ -7212,6 +7217,7 @@
 <translation id="8528074251912154910">ଭାଷାଗୁଡ଼ିକ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="8528962588711550376">ସାଇନ୍ ଇନ୍ କରୁଛି।</translation>
 <translation id="8529925957403338845">ତାତ୍‌କ୍ଷଣିକ ଟିଥେରିଂ ସଂଯୋଗ ବିଫଳ ହେଲା</translation>
+<translation id="8531701051932785007">ଉନ୍ନତ ସୁରକ୍ଷିତ ବ୍ରାଉଜିଂ ବନ୍ଦ ଅଛି</translation>
 <translation id="8534656636775144800">ଓହୋଃ!  ଡୋମେନ୍‌ରେ ଯୋଗଦେବାକୁ ଚେଷ୍ଟା କରିବା ସମୟରେ କିଛି ଭୂଲ ହେଉଛି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="8535005006684281994">Netscape ସାର୍ଟିଫିକେଟ୍‌ ନବୀକରଣ URL</translation>
 <translation id="8536956381488731905">କୀ ଦବାଇଲେ ଶବ୍ଦ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index acd4b5b..1d7ffa5 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">ਇਹ ਫ਼ਾਈਲਾਂ</translation>
 <translation id="3788401245189148511">ਇਹ ਕਰ ਸਕਦਾ ਹੈ:</translation>
 <translation id="3789841737615482174">ਸਥਾਪਤ ਕਰੋ</translation>
+<translation id="3790417903123637354">ਕੋਈ ਗੜਬੜ ਹੋਈ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</translation>
 <translation id="379082410132524484">ਤੁਹਾਡੇ ਕਾਰਡ ਦੀ ਮਿਆਦ ਸਮਾਪਤ ਹੋਈ</translation>
 <translation id="3792890930871100565">ਪ੍ਰਿੰਟਰਾਂ ਨੂੰ ਡਿਸਕਨੈਕਟ ਕਰੋ</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ਨੂੰ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਕੋਈ ਹਾਨੀਕਾਰਕ ਸਾਫ਼ਟਵੇਅਰ ਨਹੀਂ ਲੱਭਿਆ • 1 ਦਿਨ ਪਹਿਲਾਂ ਜਾਂਚ ਕੀਤੀ ਗਈ}one{Chrome ਨੂੰ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਕੋਈ ਹਾਨੀਕਾਰਕ ਸਾਫ਼ਟਵੇਅਰ ਨਹੀਂ ਲੱਭਿਆ • {NUM_DAYS} ਦਿਨ ਪਹਿਲਾਂ ਜਾਂਚ ਕੀਤੀ ਗਈ}other{Chrome ਨੂੰ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਕੋਈ ਹਾਨੀਕਾਰਕ ਸਾਫ਼ਟਵੇਅਰ ਨਹੀਂ ਲੱਭਿਆ • {NUM_DAYS} ਦਿਨ ਪਹਿਲਾਂ ਜਾਂਚ ਕੀਤੀ ਗਈ}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ਸੀਰੀਅਲ ਪੋਰਟ ਨਾਲ ਕਨੈਕਟ ਹੋਣਾ ਚਾਹੁੰਦੀ ਹੈ</translation>
 <translation id="4944310289250773232">ਇਹ ਪ੍ਰਮਾਣੀਕਰਨ ਸੇਵਾ <ph name="SAML_DOMAIN" /> ਵੱਲੋਂ ਹੋਸਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ</translation>
 <translation id="4945439665401275950">ਫਿੰਗਰਪ੍ਰਿੰਟ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ, ਆਪਣੇ ਬੱਚੇ ਤੋਂ ਪਾਵਰ ਬਟਨ 'ਤੇ ਸਪਰਸ਼ ਕਰਵਾਓ। ਤੁਹਾਡੇ ਬੱਚੇ ਦਾ ਫਿੰਗਰਪ੍ਰਿੰਟ ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਕਦੇ ਵੀ ਇਸ <ph name="DEVICE_TYPE" /> ਤੋਂ ਬਾਹਰ ਨਹੀਂ ਜਾਂਦਾ।</translation>
+<translation id="4946459324029651239">ਤੁਸੀਂ ਮਿਆਰੀ ਸੁਰੱਖਿਆ ਪ੍ਰਾਪਤ ਕਰ ਰਹੇ ਹੋ</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{ਇੱਕ ਫ਼ਾਈਲ}one{# ਫ਼ਾਈਲ}other{# ਫ਼ਾਈਲਾਂ}}</translation>
 <translation id="495170559598752135">ਕਿਰਿਆਵਾਂ</translation>
 <translation id="4953808748584563296">ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੰਤਰੀ ਅਵਤਾਰ</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">ਡੈਮੋ ਰਜਿਸਟਰੇਸ਼ਨ ਬੇਨਤੀ ਵਿੱਚ ਸਮੱਸਿਆ ਆਈ।</translation>
 <translation id="557722062034137776">ਤੁਹਾਡੀ ਡੀਵਾਈਸ ਨੂੰ ਰੀਸੈੱਟ ਕਰਨ ਨਾਲ ਇਹ ਤੁਹਾਡੇ Google ਖਾਤਿਆਂ ਜਾਂ ਇਹਨਾਂ ਖਾਤਿਆਂ ਨਾਲ  ਸਮਕਾਲੀਕਰਨ ਕੀਤੇ ਕਿਸੇ ਵੀ ਖਾਤੇ ਤੇ ਅਸਰ ਨਹੀਂ ਪਾਏਗੀ। ਹਾਲਾਂਕਿ, ਤੁਹਾਡੀ ਡੀਵਾਈਸ 'ਤੇ ਸਥਾਨਕ ਤੌਰ ਤੇ ਸੁਰੱਖਿਅਤ ਕੀਤੀਆਂ ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾ ਦਿੱਤੀਆਂ ਜਾਣਗੀਆਂ।</translation>
 <translation id="5578059481725149024">ਸਵੈਚਲਿਤ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> ਵਿੱਚ ਅਨੁਵਾਦ ਮੁਕੰਮਲ ਹੋਇਆ</translation>
 <translation id="558170650521898289">Microsoft Windows ਹਾਰਡਵੇਅਰ ਡ੍ਰਾਈਵਰ ਜਾਂਚ</translation>
 <translation id="5581972110672966454">ਡੀਵਾਈਸ ਨੂੰ ਡੋਮੇਨ ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਆਪਣੇ ਡੀਵਾਈਸ ਦੇ ਮਾਲਕ ਜਾਂ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ। ਗੜਬੜ ਕੋਡ: <ph name="ERROR_CODE" />।</translation>
 <translation id="5582839680698949063">ਮੁੱਖ ਮੀਨੂ</translation>
@@ -6805,6 +6808,7 @@
 <translation id="8054563304616131773">ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਵੈਧ ਈਮੇਲ ਪਤਾ ਦਰਜ ਕਰੋ</translation>
 <translation id="8054883179223321715">ਖਾਸ ਵੀਡੀਓ ਸਾਈਟਾਂ ਲਈ ਉਪਲਬਧ</translation>
 <translation id="8054921503121346576">USB ਕੀ-ਬੋਰਡ ਕਨੈਕਟ ਕੀਤਾ</translation>
+<translation id="8057414620575339583">ਸਾਈਡ ਖੋਜ</translation>
 <translation id="8058655154417507695">ਮਿਆਦ ਸਮਾਪਤੀ ਦਾ ਸਾਲ</translation>
 <translation id="8058986560951482265">ਅਟਕ-ਅਟਕ ਕੇ ਚੱਲਣਾ</translation>
 <translation id="8059417245945632445">&amp;ਡਿਵਾਈਸਾਂ ਦੀ ਜਾਂਚ ਕਰੋ</translation>
@@ -6856,6 +6860,7 @@
 <translation id="81020759409809034">ਸਥਾਨਕ ਟਿਕਾਣਾ</translation>
 <translation id="8102139037507939978">system_logs.txt ਤੋਂ ਨਿੱਜੀ ਪਛਾਣ ਕਰਨ ਵਾਲੀ ਜਾਣਕਾਰੀ ਨੂੰ ਹਟਾਓ।</translation>
 <translation id="8104088837833760645">ਈ-ਸਿਮ ਪ੍ਰੋਫਾਈਲ ਡਾਊਨਲੋਡ ਕਰੋ</translation>
+<translation id="8105368624971345109">ਬੰਦ ਕਰੋ</translation>
 <translation id="8107015733319732394">ਤੁਹਾਡੀ <ph name="DEVICE_TYPE" /> 'ਤੇ Google Play Store ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਇਸ ਵਿੱਚ ਥੋੜ੍ਹੀ ਦੇਰ ਲੱਗ ਸਕਦੀ ਹੈ।</translation>
 <translation id="810728361871746125">ਡਿਸਪਲੇ ਰੈਜ਼ੋਲਿਊਸ਼ਨ</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ਕੋਈ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀ ਨਹੀਂ}=1{1 ਤੀਜੀ-ਧਿਰ ਦੀ ਕੁਕੀ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ}other{# ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ}}</translation>
@@ -7230,6 +7235,7 @@
 <translation id="8528074251912154910">ਭਾਸ਼ਾਵਾਂ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="8528962588711550376">ਸਾਈਨ ਇਨ ਕਰ ਰਿਹਾ ਹੈ।</translation>
 <translation id="8529925957403338845">ਤਤਕਾਲ ਟੈਦਰਿੰਗ ਕਨੈਕਸ਼ਨ ਅਸਫਲ ਰਿਹਾ</translation>
+<translation id="8531701051932785007">ਵਿਸਤ੍ਰਿਤ ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਬੰਦ ਹੈ</translation>
 <translation id="8534656636775144800">ਓਹੋ! ਡੋਮੇਨ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਕੁਝ ਗਲਤ ਹੋਇਆ ਸੀ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="8535005006684281994">Netscape ਪ੍ਰਮਾਣ-ਪੱਤਰ ਨਵੀਨੀਕਰਨ URL</translation>
 <translation id="8536956381488731905">ਕੁੰਜੀ ਦਬਾਉਣ 'ਤੇ ਧੁਨੀ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index a14aa4a..16c66277 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">W tej chwili trwa przywracanie Linuksa</translation>
 <translation id="1244303850296295656">Błąd rozszerzenia</translation>
 <translation id="1246863218384630739">Nie udało się zainstalować <ph name="VM_NAME" />: adres URL obrazu zwrócił kod błędu <ph name="HTTP_ERROR" />. Skontaktuj się z administratorem.</translation>
-<translation id="1247071602516579380">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, tablet o nazwie <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Oczekiwany otwierający nawias klamrowy: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Spowoduje to usunięcie <ph name="TOTAL_USAGE" /> danych zapisanych przez strony i zainstalowane aplikacje</translation>
 <translation id="1251578593170406502">Szukam sieci komórkowych…</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837">Wybrane elementy: <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Ustawianie aktywnego zgłoszenia Kerberos</translation>
 <translation id="1444628761356461360">Tym urządzeniem zarządza właściciel urządzenia: <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, telefon o nazwie <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Nie można wczytać ścieżki „<ph name="IMAGE_PATH" />” dla motywu.</translation>
 <translation id="1449191289887455076">Naciśnij jeszcze raz „<ph name="CURRENTKEY" />”, aby potwierdzić przypisanie i <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Strona internetowa, pojedynczy plik</translation>
@@ -859,7 +857,6 @@
 <translation id="1855079636134697549">Kamera jest włączona</translation>
 <translation id="1856715684130786728">Dodaj lokalizację...</translation>
 <translation id="1858585891038687145">Ufaj temu certyfikatowi przy identyfikowaniu producentów oprogramowania</translation>
-<translation id="1859787252990099899">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, nieznane urządzenie <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Ten folder jest pusty</translation>
 <translation id="1862311223300693744">Czy masz zainstalowane jakieś specjalne oprogramowanie VPN, serwera proxy, zapory sieciowej lub NAS?</translation>
 <translation id="1863182668524159459">Nie znaleziono portów szeregowych</translation>
@@ -1234,7 +1231,6 @@
 <translation id="2242687258748107519">Informacje o pliku</translation>
 <translation id="2246549592927364792">Pobierać opisy obrazów z Google?</translation>
 <translation id="2247738527273549923">Urządzeniem zarządza Twoja organizacja</translation>
-<translation id="2249061317998743208">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, kontroler do gier o nazwie <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Otwórz jako okno z kartami</translation>
 <translation id="2249605167705922988">np. 1–5, 8, 11–13</translation>
 <translation id="2251218783371366160">Otwórz w przeglądarce systemowej</translation>
@@ -1992,7 +1988,6 @@
 <translation id="3007771295016901659">Powiel kartę</translation>
 <translation id="3008232374986381779">Używaj na urządzeniu <ph name="DEVICE_TYPE" /> narzędzi, edytorów i IDE na Linuksa. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Zresetuj uprawnienia</translation>
-<translation id="3008396025115884998">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, urządzenie audio o nazwie <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Domena <ph name="MANAGER" /> wymaga połączenia się z Wi-Fi i pobrania aktualizacji dzisiaj. Możesz też rozpocząć pobieranie za pomocą połączenia z pomiarem użycia danych (mogą zostać naliczone opłaty).}few{Domena <ph name="MANAGER" /> wymaga połączenia się z Wi-Fi i pobrania aktualizacji przed upływem wyznaczonego terminu. Możesz też rozpocząć pobieranie za pomocą połączenia z pomiarem użycia danych (mogą zostać naliczone opłaty).}many{Domena <ph name="MANAGER" /> wymaga połączenia się z Wi-Fi i pobrania aktualizacji przed upływem wyznaczonego terminu. Możesz też rozpocząć pobieranie za pomocą połączenia z pomiarem użycia danych (mogą zostać naliczone opłaty).}other{Domena <ph name="MANAGER" /> wymaga połączenia się z Wi-Fi i pobrania aktualizacji przed upływem wyznaczonego terminu. Możesz też rozpocząć pobieranie za pomocą połączenia z pomiarem użycia danych (mogą zostać naliczone opłaty).}}</translation>
 <translation id="3009300415590184725">Czy na pewno chcesz anulować konfigurowanie komórkowej usługi transmisji danych?</translation>
 <translation id="3009779501245596802">Zindeksowane bazy danych</translation>
@@ -2298,7 +2293,6 @@
 <translation id="3348038390189153836">Wykryto urządzenie wymienne</translation>
 <translation id="3348131053948466246">Zasugerowano emotikony. Naciśnij strzałkę w górę lub w dół, by przejść do innego elementu, i naciśnij Enter, by go wstawić.</translation>
 <translation id="3349933790966648062">Wykorzystanie pamięci</translation>
-<translation id="3354972872297836698">Nie udało się sparować urządzenia <ph name="DEVICE_NAME" />. Wybierz urządzenie i spróbuj ponownie</translation>
 <translation id="3355936511340229503">Błąd połączenia</translation>
 <translation id="3356580349448036450">Zakończone</translation>
 <translation id="3359256513598016054">Ograniczenia zasad certyfikatu</translation>
@@ -2730,6 +2724,7 @@
 <translation id="3788331399335602504">te pliki</translation>
 <translation id="3788401245189148511">Będzie mógł:</translation>
 <translation id="3789841737615482174">Zainstaluj</translation>
+<translation id="3790417903123637354">Coś poszło nie tak. Spróbuj ponownie później</translation>
 <translation id="379082410132524484">Twoja karta straciła ważność</translation>
 <translation id="3792890930871100565">Odłącz drukarki</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Szkodliwe oprogramowanie nie zostało znalezione przez Chrome na komputerze • Sprawdzono 1 dzień temu}few{Szkodliwe oprogramowanie nie zostało znalezione przez Chrome na komputerze • Sprawdzono {NUM_DAYS} dni temu}many{Szkodliwe oprogramowanie nie zostało znalezione przez Chrome na komputerze • Sprawdzono {NUM_DAYS} dni temu}other{Szkodliwe oprogramowanie nie zostało znalezione przez Chrome na komputerze • Sprawdzono {NUM_DAYS} dnia temu}}</translation>
@@ -3129,7 +3124,6 @@
 <translation id="4200689466366162458">Słowa niestandardowe</translation>
 <translation id="4200983522494130825">Nowa &amp;karta</translation>
 <translation id="4201546031411513170">W ustawieniach możesz wybrać, co chcesz synchronizować.</translation>
-<translation id="4202417625268941299">Ulepszone Bezpieczne przeglądanie korzysta z najsilniejszych zabezpieczeń Chrome</translation>
 <translation id="420283545744377356">Wyłącz wygaszacz ekranu</translation>
 <translation id="4206144641569145248">Kosmita</translation>
 <translation id="4206323443866416204">Przesyłanie opinii</translation>
@@ -3635,7 +3629,6 @@
 <translation id="4759238208242260848">Pobrane pliki</translation>
 <translation id="4761104368405085019">Korzystanie z Twojego mikrofonu</translation>
 <translation id="4762718786438001384">Bardzo mało miejsca na dysku</translation>
-<translation id="4762898026821161650">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, komputer o nazwie <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Podczas wyświetlania strony zostały utworzone te pliki cookie</translation>
 <translation id="4765582662863429759">Zezwala Wiadomościom na Androida przesyłać SMS-y z telefonu na Chromebooka</translation>
 <translation id="4768332406694066911">Masz certyfikaty od tych organizacji potwierdzające Twoją tożsamość</translation>
@@ -5814,7 +5807,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Kontrola zabezpieczeń została wykonana 1 minutę temu}few{Kontrola zabezpieczeń została wykonana {NUM_MINS} minuty temu}many{Kontrola zabezpieczeń została wykonana {NUM_MINS} minut temu}other{Kontrola zabezpieczeń została wykonana {NUM_MINS} minuty temu}}</translation>
 <translation id="7057767408836081338">Nie udało się pobrać danych aplikacji. Próbuję ją jednak uruchomić...</translation>
 <translation id="7058024590501568315">Sieć ukryta</translation>
-<translation id="70582545822664495">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, mysz o nazwie <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Ustaw automatyczne uruchamianie</translation>
 <translation id="7062222374113411376">Zezwól niedawno zamkniętym stronom na dokończenie wysyłania i odbierania danych (zalecane)</translation>
 <translation id="7063129466199351735">Przetwarzam skróty...</translation>
@@ -5978,7 +5970,6 @@
 <translation id="7257173066616499747">Sieci Wi-Fi</translation>
 <translation id="725758059478686223">Usługa drukowania</translation>
 <translation id="7257666756905341374">Odczyt danych, które kopiujesz i wklejasz</translation>
-<translation id="7258006747130724016">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, kamera wideo o nazwie <ph name="DEVICE_NAME" />.</translation>
 <translation id="7258192266780953209">Transformacje</translation>
 <translation id="7258225044283673131">Aplikacja nie odpowiada. Aby ją zamknąć, wybierz „Wymuś zamknięcie”.</translation>
 <translation id="7262004276116528033">Ta usługa logowania pochodzi z domeny <ph name="SAML_DOMAIN" /></translation>
@@ -6775,7 +6766,6 @@
 <translation id="8037117027592400564">Odczyt całego tekstu mówionego przez syntezator mowy</translation>
 <translation id="8037357227543935929">Pytaj (domyślnie)</translation>
 <translation id="803771048473350947">Plik</translation>
-<translation id="8038399858950372766">Urządzenie <ph name="DEVICE_INDEX" /> z <ph name="DEVICE_COUNT" />, klawiatura o nazwie <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Prześlij opinię</translation>
 <translation id="8042142357103597104">Przezroczystość tekstu</translation>
 <translation id="8044262338717486897">Aplikacja <ph name="LINUX_APP_NAME" /> nie odpowiada.</translation>
@@ -6851,6 +6841,7 @@
 <translation id="81020759409809034">Lokalizacja lokalna</translation>
 <translation id="8102139037507939978">Usuń informacje umożliwiające identyfikację z pliku system_logs.txt.</translation>
 <translation id="8104088837833760645">Pobierz profil eSIM</translation>
+<translation id="8105368624971345109">Wyłącz</translation>
 <translation id="8107015733319732394">Instaluję Sklep Google Play na urządzeniu <ph name="DEVICE_TYPE" />. Może to potrwać kilka minut.</translation>
 <translation id="810728361871746125">Rozdzielczość wyświetlacza</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Brak plików cookie innych firm}=1{Zablokowano 1 plik cookie innej firmy}few{Zablokowano # pliki cookie innych firm}many{Zablokowano # plików cookie innych firm}other{Zablokowano # pliku cookie innych firm}}</translation>
@@ -6915,7 +6906,6 @@
 <translation id="8168071266284693455">Twoje zakładki, hasła, historia i inne dane są synchronizowane na wszystkich Twoich urządzeniach</translation>
 <translation id="8168435359814927499">Treść</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj kartę do listy Do przeczytania}few{Dodaj karty do listy Do przeczytania}many{Dodaj karty do listy Do przeczytania}other{Dodaj karty do listy Do przeczytania}}</translation>
-<translation id="8169849063724750395">Włącz z powrotem</translation>
 <translation id="8171334254070436367">Ukryj wszystkie karty</translation>
 <translation id="8174047975335711832">Informacje o urządzeniu</translation>
 <translation id="8174876712881364124">Zapisuj kopie zapasowe na Dysku Google, by móc łatwo i wygodnie przywrócić dane lub zmienić urządzenie. Kopie zapasowe zawierają dane aplikacji. Są szyfrowane za pomocą hasła do konta Google Twojego dziecka i przesyłane do Google. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation>
@@ -6989,7 +6979,6 @@
 <translation id="8249615410597138718">Wyślij na swoje urządzenia</translation>
 <translation id="8249672078237421304">Proponuj tłumaczenie stron w obcych językach</translation>
 <translation id="8251441930213048644">Odśwież teraz</translation>
-<translation id="8251509999076836464">Paruję z urządzeniem <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Usunięto miniaturę.</translation>
 <translation id="825238165904109940">Zawsze pokazuj całe adresy URL</translation>
 <translation id="8252569384384439529">Przesyłam…</translation>
@@ -7231,7 +7220,6 @@
 <translation id="8534656636775144800">Ups. Podczas próby dołączenia do domeny wystąpił błąd. Spróbuj ponownie.</translation>
 <translation id="8535005006684281994">Adres URL odnowienia certyfikatu firmy Netscape</translation>
 <translation id="8536956381488731905">Dźwięk przy naciśnięciu</translation>
-<translation id="8538718737588735385">Włącz z powrotem</translation>
 <translation id="8539727552378197395">Nie (HttpOnly)</translation>
 <translation id="8539766201049804895">Uaktualnij</translation>
 <translation id="8540136935098276800">Wpisz poprawnie sformatowany URL</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index e884c31..eba7d2b 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -253,7 +253,6 @@
 <translation id="1244265436519979884">A restauração do Linux está em andamento</translation>
 <translation id="1244303850296295656">Erro na extensão</translation>
 <translation id="1246863218384630739">Não foi possível instalar o <ph name="VM_NAME" />: o URL da imagem retornou um código de erro <ph name="HTTP_ERROR" />. Entre em contato com o administrador.</translation>
-<translation id="1247071602516579380">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do tablet: <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Chave de abertura esperada: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Essa ação apagará <ph name="TOTAL_USAGE" /> de dados de armazenados por sites e apps instalados</translation>
 <translation id="1251578593170406502">Procurando redes de dados móveis…</translation>
@@ -440,7 +439,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> selecionado(s)</translation>
 <translation id="1442851588227551435">Definir um tíquete ativo do Kerberos</translation>
 <translation id="1444628761356461360">Esta configuração é gerenciada pelo proprietário do dispositivo, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do smartphone: <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Não foi possível carregar "<ph name="IMAGE_PATH" />" para o tema.</translation>
 <translation id="1449191289887455076">Pressione "<ph name="CURRENTKEY" />" novamente para confirmar a atribuição e <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Página da Web, arquivo único</translation>
@@ -873,7 +871,6 @@
 <translation id="1855079636134697549">A câmera está ativada</translation>
 <translation id="1856715684130786728">Adicionar local...</translation>
 <translation id="1858585891038687145">Confiar neste certificado para a identificação de criadores do software</translation>
-<translation id="1859787252990099899">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do dispositivo desconhecido: <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Esta pasta está vazia</translation>
 <translation id="1862311223300693744">Você tem alguma VPN especial ou algum proxy, firewall ou software NAS
     instalado?</translation>
@@ -1249,7 +1246,6 @@
 <translation id="2242687258748107519">Informações do arquivo</translation>
 <translation id="2246549592927364792">Ver descrições de imagens do Google?</translation>
 <translation id="2247738527273549923">O dispositivo é gerenciado pela sua organização</translation>
-<translation id="2249061317998743208">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do controle de jogo: <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Abrir como janela com guias</translation>
 <translation id="2249605167705922988">por exemplo, 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Abrir com o Visualizador do sistema</translation>
@@ -2011,7 +2007,6 @@
 <translation id="3007771295016901659">Duplicar guia</translation>
 <translation id="3008232374986381779">Execute ferramentas, editores e ambientes de desenvolvimento integrado do Linux no seu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Redefinir permissões</translation>
-<translation id="3008396025115884998">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do dispositivo de áudio: <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> precisa que você se conecte hoje ao Wi-Fi para fazer o download de uma atualização. Você também pode fazer o download em uma conexão limitada (sujeito a cobranças).}one{<ph name="MANAGER" /> precisa que você se conecte ao Wi-Fi e faça o download de uma atualização antes do fim do prazo. Você também pode fazer o download em uma conexão limitada (sujeito a cobranças).}other{<ph name="MANAGER" /> precisa que você se conecte ao Wi-Fi e faça o download de uma atualização antes do fim do prazo. Você também pode fazer o download em uma conexão limitada (sujeito a cobranças).}}</translation>
 <translation id="3009300415590184725">Você quer mesmo cancelar o processo de configuração do serviço de dados móveis?</translation>
 <translation id="3009779501245596802">Bancos de dados indexados</translation>
@@ -2318,7 +2313,6 @@
 <translation id="3348038390189153836">Dispositivo removível detectado</translation>
 <translation id="3348131053948466246">Emoji sugerido. Pressione a seta para cima ou para baixo para navegar e "Enter" para inserir.</translation>
 <translation id="3349933790966648062">Ocupação da memória</translation>
-<translation id="3354972872297836698">Não foi possível parear com o dispositivo <ph name="DEVICE_NAME" />. Selecione o dispositivo para tentar novamente</translation>
 <translation id="3355936511340229503">Erro de conexão</translation>
 <translation id="3356580349448036450">Concluído</translation>
 <translation id="3359256513598016054">Restrições da diretiva de certificação</translation>
@@ -2751,6 +2745,7 @@
 <translation id="3788331399335602504">estes arquivos</translation>
 <translation id="3788401245189148511">Ele poderia:</translation>
 <translation id="3789841737615482174">Instalar</translation>
+<translation id="3790417903123637354">Algo deu errado. Tente novamente mais tarde</translation>
 <translation id="379082410132524484">Seu cartão expirou</translation>
 <translation id="3792890930871100565">Desconectar impressoras</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{O Chrome não encontrou softwares nocivos no computador • Verificado 1 dia atrás}one{O Chrome não encontrou softwares nocivos no computador • Verificado {NUM_DAYS} dia atrás}other{O Chrome não encontrou softwares nocivos no computador • Verificado {NUM_DAYS} dias atrás}}</translation>
@@ -3150,7 +3145,6 @@
 <translation id="4200689466366162458">Palavras personalizadas</translation>
 <translation id="4200983522494130825">Nova &amp;guia</translation>
 <translation id="4201546031411513170">Nas configurações, é possível escolher a qualquer momento o que é sincronizado.</translation>
-<translation id="4202417625268941299">Com o Navegação segura com maior proteção, você tem a melhor segurança do Chrome</translation>
 <translation id="420283545744377356">Desativar o protetor de tela</translation>
 <translation id="4206144641569145248">Alienígena</translation>
 <translation id="4206323443866416204">Relatório de feedback</translation>
@@ -3657,7 +3651,6 @@
 <translation id="4759238208242260848">Downloads</translation>
 <translation id="4761104368405085019">Usar microfone</translation>
 <translation id="4762718786438001384">Dispositivo com espaço em disco criticamente baixo</translation>
-<translation id="4762898026821161650">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do computador: <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Os cookies a seguir foram definidos quando você visualizou esta página</translation>
 <translation id="4765582662863429759">Permite que o Android Mensagens transmita mensagens de texto do smartphone para o Chromebook</translation>
 <translation id="4768332406694066911">Você tem certificados das seguintes empresas que identificam você</translation>
@@ -5840,7 +5833,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{A confirmação de segurança foi executada há 1 minuto}one{A confirmação de segurança foi executada há {NUM_MINS} minuto}other{A confirmação de segurança foi executada há {NUM_MINS} minutos}}</translation>
 <translation id="7057767408836081338">Falha ao acessar os dados do app. Tentando executá-lo mesmo assim…</translation>
 <translation id="7058024590501568315">Rede oculta</translation>
-<translation id="70582545822664495">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do mouse: <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Definir para abertura automática</translation>
 <translation id="7062222374113411376">Permitir que sites fechados recentemente concluam o envio e o recebimento de dados (recomendado)</translation>
 <translation id="7063129466199351735">Processando atalhos...</translation>
@@ -6004,7 +5996,6 @@
 <translation id="7257173066616499747">Redes Wi-Fi</translation>
 <translation id="725758059478686223">Serviço de impressão</translation>
 <translation id="7257666756905341374">Ler dados que você copia e cola</translation>
-<translation id="7258006747130724016">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome da câmera de vídeo: <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformações</translation>
 <translation id="7258225044283673131">O aplicativo não está respondendo. Selecione "Forçar fechamento" para fechar o app.</translation>
 <translation id="7262004276116528033">Este serviço de login é hospedado por <ph name="SAML_DOMAIN" /></translation>
@@ -6801,7 +6792,6 @@
 <translation id="8037117027592400564">Ler todo texto falado usando voz sintetizada</translation>
 <translation id="8037357227543935929">Perguntar (padrão)</translation>
 <translation id="803771048473350947">Arquivo</translation>
-<translation id="8038399858950372766">Dispositivo <ph name="DEVICE_INDEX" /> de <ph name="DEVICE_COUNT" />. Nome do teclado: <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Enviar comentários</translation>
 <translation id="8042142357103597104">Opacidade do texto</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> não está respondendo.</translation>
@@ -6878,6 +6868,7 @@
 <translation id="81020759409809034">Local</translation>
 <translation id="8102139037507939978">Remover informações de identificação pessoal de system_logs.txt.</translation>
 <translation id="8104088837833760645">Fazer o download do perfil do eSIM</translation>
+<translation id="8105368624971345109">Desativar</translation>
 <translation id="8107015733319732394">Instalando a Google Play Store no seu <ph name="DEVICE_TYPE" />. Isso pode demorar alguns minutos.</translation>
 <translation id="810728361871746125">Resolução da tela</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Sem cookies de terceiros}=1{1 cookie de terceiros foi bloqueado}one{# cookie de terceiros foi bloqueado}other{# cookies de terceiros foram bloqueados}}</translation>
@@ -6942,7 +6933,6 @@
 <translation id="8168071266284693455">Favoritos, senhas, histórico e muito mais estão sincronizados em todos os seus dispositivos</translation>
 <translation id="8168435359814927499">Conteúdo</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Adicionar guia à lista de leitura}one{Adicionar guia à lista de leitura}other{Adicionar guias à lista de leitura}}</translation>
-<translation id="8169849063724750395">Ativar novamente</translation>
 <translation id="8171334254070436367">Ocultar todos os cards</translation>
 <translation id="8174047975335711832">Informações do dispositivo</translation>
 <translation id="8174876712881364124">Fazer backup no Google Drive. Restaure dados com facilidade ou troque de dispositivo a qualquer momento. Esse backup inclui dados de apps. Ele é enviado ao Google e criptografado usando a senha da Conta do Google do seu filho. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation>
@@ -7016,7 +7006,6 @@
 <translation id="8249615410597138718">Enviar para seus dispositivos</translation>
 <translation id="8249672078237421304">Sugerir a tradução de páginas que não estão em um idioma que você conheça</translation>
 <translation id="8251441930213048644">Atualizar agora</translation>
-<translation id="8251509999076836464">Pareando com <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Miniatura removida.</translation>
 <translation id="825238165904109940">Sempre mostrar URLs completos</translation>
 <translation id="8252569384384439529">Fazendo upload…</translation>
@@ -7258,7 +7247,6 @@
 <translation id="8534656636775144800">Ops! Algo deu errado ao tentar vincular o domínio. Tente novamente.</translation>
 <translation id="8535005006684281994">URL da renovação do certificado do Netscape</translation>
 <translation id="8536956381488731905">Som ao pressionar tecla</translation>
-<translation id="8538718737588735385">Ativar novamente</translation>
 <translation id="8539727552378197395">Nenhum (HttpOnly)</translation>
 <translation id="8539766201049804895">Fazer upgrade</translation>
 <translation id="8540136935098276800">Insira um URL formatado corretamente</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 2a42075..f3ae155 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -2730,6 +2730,7 @@
 <translation id="3788331399335602504">estes ficheiros</translation>
 <translation id="3788401245189148511">Esta poderia:</translation>
 <translation id="3789841737615482174">Instalar</translation>
+<translation id="3790417903123637354">Ocorreu um erro. Tente novamente mais tarde.</translation>
 <translation id="379082410132524484">O seu cartão de crédito expirou</translation>
 <translation id="3792890930871100565">Desligar impressoras</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{O Chrome não encontrou software prejudicial no seu computador • Última verificação há 1 dia}one{O Chrome não encontrou software prejudicial no seu computador • Última verificação há {NUM_DAYS} dia(s)}other{O Chrome não encontrou software prejudicial no seu computador • Última verificação há {NUM_DAYS} dias}}</translation>
@@ -3815,6 +3816,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" pretende estabelecer ligação a uma porta de série</translation>
 <translation id="4944310289250773232">Este serviço de autenticação é alojado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Para configurar a impressão digital, peça à criança para tocar no botão ligar/desligar. Os dados de impressões digitais da criança são armazenados em segurança e nunca saem do <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Vai obter a proteção padrão</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{um ficheiro}one{# ficheiro(s)}other{# ficheiros}}</translation>
 <translation id="495170559598752135">Ações</translation>
 <translation id="4953808748584563296">Avatar cor de laranja predefinido</translation>
@@ -4398,6 +4400,7 @@
 <translation id="5575528586625653441">Ocorreu um problema com o pedido de registo de demonstração.</translation>
 <translation id="557722062034137776">A reposição do dispositivo não afetará as suas Contas Google nem quaisquer dados sincronizados com essas contas. No entanto, todos os ficheiros guardados localmente no seu dispositivo serão eliminados.</translation>
 <translation id="5578059481725149024">Início de sessão automático</translation>
+<translation id="5581134892342029705">Tradução para <ph name="LANGUAGE" /> concluída</translation>
 <translation id="558170650521898289">Verificação de controladores de hardware Microsoft Windows</translation>
 <translation id="5581972110672966454">Não é possível associar o dispositivo ao domínio. Tente novamente ou contacte o proprietário ou o gestor do dispositivo. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menu principal</translation>
@@ -6849,6 +6852,7 @@
 <translation id="81020759409809034">Localização local</translation>
 <translation id="8102139037507939978">Elimine informações de identificação pessoal do ficheiro system_logs.txt.</translation>
 <translation id="8104088837833760645">Transferir perfil do eSIM</translation>
+<translation id="8105368624971345109">Desativar</translation>
 <translation id="8107015733319732394">A instalar a Google Play Store no <ph name="DEVICE_TYPE" />… Esta ação pode demorar alguns minutos.</translation>
 <translation id="810728361871746125">Resolução do ecrã</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Sem cookies de terceiros}=1{1 cookie de terceiros está bloqueado}one{# cookie(s) de terceiros está/estão bloqueado(s)}other{# cookies de terceiros estão bloqueados}}</translation>
@@ -7223,6 +7227,7 @@
 <translation id="8528074251912154910">Adicionar idiomas</translation>
 <translation id="8528962588711550376">A iniciar sessão.</translation>
 <translation id="8529925957403338845">A ligação via telemóvel instantânea falhou</translation>
+<translation id="8531701051932785007">A Navegação segura melhorada está desativada</translation>
 <translation id="8534656636775144800">Ups! Ocorreu um erro ao tentar aderir ao domínio. Tente novamente.</translation>
 <translation id="8535005006684281994">URL de renovação de certificado Netscape</translation>
 <translation id="8536956381488731905">Som ao premir as teclas</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index c403293..be752ebb 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -2504,6 +2504,7 @@
 <translation id="3557101512409028104">Setează restricții pentru site-uri și limite de timp pentru durata de folosire a ecranului cu Family Link</translation>
 <translation id="3559262020195162408">Nu s-a putut instala politica pe dispozitiv.</translation>
 <translation id="3559533181353831840">Timp aproximativ rămas: <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">Primește confirmări prin vibrații pentru acțiuni cum ar fi împărțirea ecranului și comutarea între desktopuri.</translation>
 <translation id="3560034655160545939">&amp;Verificare ortografică</translation>
 <translation id="3562423906127931518">Poate dura câteva minute. Se configurează containerul Linux.</translation>
 <translation id="3562655211539199254">Vezi filele Chrome recente de pe telefon</translation>
@@ -2728,6 +2729,7 @@
 <translation id="3788331399335602504">aceste fișiere</translation>
 <translation id="3788401245189148511">Aceasta ar putea să:</translation>
 <translation id="3789841737615482174">Instalează</translation>
+<translation id="3790417903123637354">A apărut o eroare. Încearcă din nou mai târziu.</translation>
 <translation id="379082410132524484">Cardul a expirat</translation>
 <translation id="3792890930871100565">Deconectați imprimantele</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome nu a găsit software dăunător pe computer • A verificat acum o zi}few{Chrome nu a găsit software dăunător pe computer • A verificat acum {NUM_DAYS} zile}other{Chrome nu a găsit software dăunător pe computer • A verificat acum {NUM_DAYS} de zile}}</translation>
@@ -3813,6 +3815,7 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” dorește să se conecteze la un port serial</translation>
 <translation id="4944310289250773232">Acest serviciu de autentificare este găzduit de <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Pentru a configura amprenta, solicită-i copilului tău să atingă butonul de pornire. Datele privind amprentele copilului sunt stocate în siguranță și nu părăsesc niciodată dispozitivul <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Beneficiezi de protecție standard</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{un fișier}few{# fișiere}other{# de fișiere}}</translation>
 <translation id="495170559598752135">Acțiuni</translation>
 <translation id="4953808748584563296">Avatar portocaliu prestabilit</translation>
@@ -4396,6 +4399,7 @@
 <translation id="5575528586625653441">A apărut o problemă cu solicitarea de înregistrare demo.</translation>
 <translation id="557722062034137776">Resetarea dispozitivului nu va afecta conturile Google sau datele sincronizate cu aceste conturi. Cu toate acestea, toate fișierele salvate local pe dispozitiv vor fi șterse.</translation>
 <translation id="5578059481725149024">Conectare automată</translation>
+<translation id="5581134892342029705">Traducerea în <ph name="LANGUAGE" /> s-a finalizat</translation>
 <translation id="558170650521898289">Verificare a driverelor hardware pentru Microsoft Windows</translation>
 <translation id="5581972110672966454">Dispozitivul nu a putut fi asociat domeniului. Încearcă din nou sau contactează proprietarul dispozitivului ori administratorul. Cod de eroare: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Meniu principal</translation>
@@ -4900,6 +4904,7 @@
 <translation id="6112931163620622315">Verifică pe telefon</translation>
 <translation id="6113434369102685411">Setează motorul de căutare prestabilit pentru browserul Chrome și lansatorul pentru <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">Pentru a folosi Smart Lock, comută la profilul de utilizator principal de pe telefon</translation>
+<translation id="611684075852771314">Aceste jurnale au fost salvate în Fișierele mele ca</translation>
 <translation id="6116921718742659598">Schimbați setările pentru limbă și introducere de text</translation>
 <translation id="6119927814891883061">Denumește dispozitivul <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Fixați această pagină pe ecranul de pornire...</translation>
@@ -5676,6 +5681,7 @@
 <translation id="6930036377490597025">Cheie de securitate externă sau senzor încorporat</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{O extensie a fost respinsă}few{# extensii au fost respinse}other{# de extensii au fost respinse}}</translation>
 <translation id="6930321203306643451">S-a finalizat upgrade-ul</translation>
+<translation id="6931690462168617033">Sensibilitatea la clic</translation>
 <translation id="6935286146439255109">Lipsește o tavă de hârtie</translation>
 <translation id="693807610556624488">Operațiunea de scriere depășește lungimea maximă a atributului pe: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6938386202199793006">Ai o imprimantă salvată.</translation>
@@ -6805,6 +6811,7 @@
 <translation id="8064279191081105977">Grupul <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Fereastră de dialog de conectare</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Feedback haptic</translation>
 <translation id="8071432093239591881">Printează ca imagine</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Datele unei aplicații pot fi orice date pe care le-a salvat aplicația (în funcție de setările dezvoltatorului), inclusiv date cum ar fi persoanele de contact, mesajele și fotografiile.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Datele cărora li s-a făcut backup nu se iau în considerare la calcularea cotei de stocare a contului Drive al copilului tău.<ph name="END_PARAGRAPH2" />
@@ -6842,6 +6849,7 @@
 <translation id="81020759409809034">Locație locală</translation>
 <translation id="8102139037507939978">Elimină datele cu caracter personal din system_logs.txt.</translation>
 <translation id="8104088837833760645">Descarcă profilul eSIM</translation>
+<translation id="8105368624971345109">Dezactivează</translation>
 <translation id="8107015733319732394">Se instalează Magazinul Google Play pe dispozitivul <ph name="DEVICE_TYPE" />. Ar putea dura câteva minute.</translation>
 <translation id="810728361871746125">Rezoluția afișajului</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Niciun cookie terță parte}=1{Un cookie terță parte este blocat}few{# cookie-uri terță parte sunt blocate}other{# de cookie-uri terță parte sunt blocate}}</translation>
@@ -7216,6 +7224,7 @@
 <translation id="8528074251912154910">Adaugă limbi</translation>
 <translation id="8528962588711550376">Se conectează.</translation>
 <translation id="8529925957403338845">Nu s-a conectat prin Tethering instantaneu</translation>
+<translation id="8531701051932785007">Navigarea sigură îmbunătățită este dezactivată</translation>
 <translation id="8534656636775144800">Hopa! A apărut o eroare la asocierea la domeniu. Încearcă din nou.</translation>
 <translation id="8535005006684281994">Adresă URL de reînnoire a certificatului Netscape</translation>
 <translation id="8536956381488731905">Sunet la apăsarea tastei</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index cd192ca..16dba6e 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -2728,6 +2728,7 @@
 <translation id="3788331399335602504">эти файлы</translation>
 <translation id="3788401245189148511">Разрешения:</translation>
 <translation id="3789841737615482174">Установить</translation>
+<translation id="3790417903123637354">Произошла ошибка. Повторите попытку позже.</translation>
 <translation id="379082410132524484">Срок действия карты истек</translation>
 <translation id="3792890930871100565">Удалить принтеры</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Браузер Chrome не обнаружил на компьютере вредоносное ПО • Последняя проверка: 1 день назад}one{Браузер Chrome не обнаружил на компьютере вредоносное ПО • Последняя проверка: {NUM_DAYS} день назад}few{Браузер Chrome не обнаружил на компьютере вредоносное ПО • Последняя проверка: {NUM_DAYS} дня назад}many{Браузер Chrome не обнаружил на компьютере вредоносное ПО • Последняя проверка: {NUM_DAYS} дней назад}other{Браузер Chrome не обнаружил на компьютере вредоносное ПО • Последняя проверка: {NUM_DAYS} дня назад}}</translation>
@@ -3813,6 +3814,7 @@
 <translation id="4943691134276646401">Расширение "<ph name="CHROME_EXTENSION_NAME" />" запрашивает разрешение подключиться к последовательному порту</translation>
 <translation id="4944310289250773232">Сервис аутентификации размещен в домене <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Чтобы настроить разблокировку по отпечатку, ребенок должен приложить палец к кнопке питания. Данные отпечатков пальцев хранятся только на устройстве <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Будет использоваться стандартная защита.</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{файл}one{# файл}few{# файла}many{# файлов}other{# файла}}</translation>
 <translation id="495170559598752135">Действия</translation>
 <translation id="4953808748584563296">Аватар по умолчанию (оранжевый)</translation>
@@ -4396,6 +4398,7 @@
 <translation id="5575528586625653441">Возникла проблема с запросом на регистрацию демонстрационного режима.</translation>
 <translation id="557722062034137776">Сброс устройства не повлияет на ваши аккаунты Google и синхронизируемые с ними данные. Но все сохраненные на устройстве файлы будут удалены.</translation>
 <translation id="5578059481725149024">Автоматический вход</translation>
+<translation id="5581134892342029705">Перевод на <ph name="LANGUAGE" /> завершен</translation>
 <translation id="558170650521898289">Проверка драйвера оборудования Microsoft Windows</translation>
 <translation id="5581972110672966454">Не удалось подключить устройство к домену. Повторите попытку или обратитесь к владельцу или администратору устройства. Код ошибки: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Главное меню</translation>
@@ -6842,6 +6845,7 @@
 <translation id="81020759409809034">Папка на устройстве</translation>
 <translation id="8102139037507939978">Удалять из файла system_logs.txt информацию, позволяющую идентифицировать личность</translation>
 <translation id="8104088837833760645">Скачать профиль eSIM</translation>
+<translation id="8105368624971345109">Отключить</translation>
 <translation id="8107015733319732394">Установка Google Play Маркета на устройство <ph name="DEVICE_TYPE" /> (может занять несколько минут)…</translation>
 <translation id="810728361871746125">Разрешение экрана</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Нет сторонних файлов cookie}=1{Заблокирован 1 сторонний файл cookie}one{Заблокирован # сторонний файл cookie}few{Заблокировано # сторонних файла cookie}many{Заблокировано # сторонних файлов cookie}other{Заблокировано # сторонних файла cookie}}</translation>
@@ -7216,6 +7220,7 @@
 <translation id="8528074251912154910">Добавить языки</translation>
 <translation id="8528962588711550376">Выполняется вход.</translation>
 <translation id="8529925957403338845">Нет подключения к мгновенной точке доступа</translation>
+<translation id="8531701051932785007">Улучшенный Безопасный просмотр отключен</translation>
 <translation id="8534656636775144800">Произошла ошибка при подключении к домену. Повторите попытку.</translation>
 <translation id="8535005006684281994">URL обновления сертификатов Netscape</translation>
 <translation id="8536956381488731905">Звук клавиш</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 8f06f0f..cde0cd1 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -253,7 +253,6 @@
 <translation id="1244265436519979884">ලිනක්ස් ප්‍රතිසාධනය දැන් සිදු වෙමින් පවතියි</translation>
 <translation id="1244303850296295656">දිගු දෝෂය</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> ස්ථාපනය කළ නොහැකි විය: රූප URL <ph name="HTTP_ERROR" /> දෝෂ කේතයක් ලබා දුණි. කරුණාකර ඔබගේ පරිපාලක සම්බන්ධ කර ගන්න.</translation>
-<translation id="1247071602516579380">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් ටැබ්ලටය</translation>
 <translation id="1251366534849411931">අපේක්‍ෂිත විවෘත රැළි කඹය: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">මෙය වෙබ් අඩවිවලින් සහ ස්ථාපිත යෙදුම්වලින් ගබඩා කරනු ලැබූ දත්ත <ph name="TOTAL_USAGE" /> ක් හිස් කරයි</translation>
 <translation id="1251578593170406502">ජංගම දත්ත ජාල සඳහා ස්කෑන් කරමින්...</translation>
@@ -440,7 +439,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> තේරිණි</translation>
 <translation id="1442851588227551435">ක්‍රියාකාරී Kerberos ප්‍රවේශපත්‍රය සකසන්න</translation>
 <translation id="1444628761356461360">උපාංග හිමිකරු විසින් සැකසුම් කළමනාකරණය කර ඇත, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් දුරකථනය</translation>
 <translation id="144518587530125858">තේමාව සඳහා '<ph name="IMAGE_PATH" />' ප්‍රවේශනය කළ නොහැකි විය.</translation>
 <translation id="1449191289887455076">පැවරුම තහවුරු කර <ph name="RESPONSE" /> “<ph name="CURRENTKEY" />” නැවත ඔබන්න.</translation>
 <translation id="1451375123200651445">වෙබ් පිටුව, තනි ගොනුව</translation>
@@ -861,7 +859,6 @@
 <translation id="1855079636134697549">කැමරාව ක්‍රියාත්මකයි</translation>
 <translation id="1856715684130786728">ස්ථානය එක් කරන්න...</translation>
 <translation id="1858585891038687145">මෘදුකාංග සාදන්නන් හඳුනා ගැනීම සඳහා මෙම සහතිකය මත විශ්වාසය තබන්න</translation>
-<translation id="1859787252990099899">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් නොදන්නා උපාංගය</translation>
 <translation id="1861262398884155592">මෙම ෆෝල්ඩරය හිස්ය</translation>
 <translation id="1862311223300693744">ඔබ යම් විශේෂ VPN, ප්‍රොක්සි, ෆයර්වෝලය හෝ NAS මෘදුකාංගය
     ස්ථාපනය කර තිබේද?</translation>
@@ -1237,7 +1234,6 @@
 <translation id="2242687258748107519">ගොනු තොරතුරු</translation>
 <translation id="2246549592927364792">Google වෙතින් රූප විස්තර ලබා ගන්නද?</translation>
 <translation id="2247738527273549923">මෙම උපාංගය ඔබගේ සංවිධානය මගින් කළමනාකරණය කෙරේ</translation>
-<translation id="2249061317998743208">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් ක්‍රීඩා පාලකය</translation>
 <translation id="2249111429176737533">පටිත්ත කළ කවුළුව ලෙස විවෘත කරන්න</translation>
 <translation id="2249605167705922988">උ දා. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">පද්ධති දැක්මෙන් විවෘත කරන්න</translation>
@@ -1998,7 +1994,6 @@
 <translation id="3007771295016901659">අනුපත් පටිත්ත</translation>
 <translation id="3008232374986381779">ඔබගේ <ph name="DEVICE_TYPE" /> හි Linux මෙවලම්, සංස්කාරක සහ, IDE ධාවනය කරන්න. <ph name="LINK_BEGIN" />තව දැන ගන්න<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">අවසර යළි සකසන්න</translation>
-<translation id="3008396025115884998">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් ශ්‍රව්‍ය උපාංගය</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{යාවත්කාලීනයක් බාගැනීමට <ph name="MANAGER" /> හට අද ඔබ Wi-Fi වෙත සම්බන්ධ වීමට අවශ්‍යය. නැති නම්, මනුගත සම්බන්ධතාවකින් බාගන්න (ගාස්තු අදාළ විය හැකිය).}one{<ph name="MANAGER" /> හට ඔබ Wi-Fi වෙත සම්බන්ධ වී නියමිත වේලාවට පෙර යාවත්කාලීනයක් බාගැනීම අවශ්‍යය. නැති නම්, මනුගත සම්බන්ධතාවකින් බාගන්න (ගාස්තු අදාළ විය හැකිය).}other{<ph name="MANAGER" /> හට ඔබ Wi-Fi වෙත සම්බන්ධ වී නියමිත වේලාවට පෙර යාවත්කාලීනයක් බාගැනීම අවශ්‍යය. නැති නම්, මනුගත සම්බන්ධතාවකින් බාගන්න (ගාස්තු අදාළ විය හැකිය).}}</translation>
 <translation id="3009300415590184725">ජංගම දත්ත සේවා පිහිටුම් ක්‍රියාවලිය අවලංගු කිරීමට අවශ්‍ය බව සහතිකද?</translation>
 <translation id="3009779501245596802">සුචිගත කළ දත්ත සමුදාය</translation>
@@ -2304,7 +2299,6 @@
 <translation id="3348038390189153836">ඉවත් කළ හැකි උපාංගය අනාවරණය විය</translation>
 <translation id="3348131053948466246">ඉමොජි යෝජනා කරන ලදි. සංචාලනය කිරීමට ඉහළට හෝ පහළට ඔබන්න සහ ඇතුළු කිරීමට enter ඔබන්න.</translation>
 <translation id="3349933790966648062">මතක පා සටහන</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> උපාංගය යුගල කළ නොහැකි විය; නැවත උත්සාහ කිරීමට උපාංගය තෝරන්න</translation>
 <translation id="3355936511340229503">සම්බන්ධතා දෝෂයකි</translation>
 <translation id="3356580349448036450">සම්පූර්ණ</translation>
 <translation id="3359256513598016054">සහතික ප්‍රතිපත්ති නිරෝධනයන්</translation>
@@ -2512,6 +2506,7 @@
 <translation id="3557101512409028104">Family Link මඟින් වෙබ් අඩවි සීමා කිරීම් සහ තිර කාල සීමා සකසන්න</translation>
 <translation id="3559262020195162408">උපාංගය මත ප්‍රතිපත්තිය ස්ථාපන කළ නොහැකි විය.</translation>
 <translation id="3559533181353831840"><ph name="TIME_LEFT" /> පමණ ඉතිරියි</translation>
+<translation id="3559697822483154494">බෙදුම් තිරය සහ මේස මාරු කිරීම වැනි ක්‍රියා සඳහා කම්පන තහවුරු කිරීම ලබා ගන්න.</translation>
 <translation id="3560034655160545939">&amp;අක්‍ෂර වින්‍යාස පරීක්‍ෂාව</translation>
 <translation id="3562423906127931518">මෙම ක්‍රියාවලියට විනාඩි කිහිපයක් ගත විය හැක. Linux බහාලනය සකසමින්.</translation>
 <translation id="3562655211539199254">ඔබගේ දුරකථනයෙන් මෑත Chrome ටැබ බලන්න</translation>
@@ -2736,6 +2731,7 @@
 <translation id="3788331399335602504">මෙම ගොනු</translation>
 <translation id="3788401245189148511">එයට හේතුව:</translation>
 <translation id="3789841737615482174">ස්ථාපනය</translation>
+<translation id="3790417903123637354">යම් දෙයක් වැරදිණි. පසුව නැවත උත්සාහ කරන්න</translation>
 <translation id="379082410132524484">ඔබේ කාඩ්පත කල් ඉකුත් වී ඇත</translation>
 <translation id="3792890930871100565">මුද්‍රණ යන්ත්‍ර එක් කරන්න</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome හට ඔබගේ පරිගණකයේ හානිකර මෘදුකාංග හමු නොවීය • දින 1කට පෙර පරීක්ෂා කරන ලදි}one{Chrome හට ඔබගේ පරිගණකයේ හානිකර මෘදුකාංග හමු නොවීය • දින {NUM_DAYS}කට පෙර පරීක්ෂා කරන ලදි}other{Chrome හට ඔබගේ පරිගණකයේ හානිකර මෘදුකාංග හමු නොවීය • දින {NUM_DAYS}කට පෙර පරීක්ෂා කරන ලදි}}</translation>
@@ -3136,7 +3132,6 @@
 <translation id="4200689466366162458">අභිමත වචන</translation>
 <translation id="4200983522494130825">නව ටැබය</translation>
 <translation id="4201546031411513170">ඔබට සැමවිටම සැකසීම් තුළ සමමුහු කළ යුතු දෙය තෝරා ගත හැක.</translation>
-<translation id="4202417625268941299">ඉහළ නැංවූ සුරක්ෂිත පිරික්සුම සමගින්, ඔබට Chrome හි ප්‍රබලම ආරක්ෂාව ලැබෙනු ඇත</translation>
 <translation id="420283545744377356">තිර සුරැකුම ක්‍රියාවිරහිත කරන්න</translation>
 <translation id="4206144641569145248">පිටසක්වලයා</translation>
 <translation id="4206323443866416204">ප්‍රතිපෝෂණ වාර්තාව</translation>
@@ -3642,7 +3637,6 @@
 <translation id="4759238208242260848">බාගැනීම්</translation>
 <translation id="4761104368405085019">මයික්‍රොෙෆෝනය භාවිතා කරන්න</translation>
 <translation id="4762718786438001384">උපාංග තැටි ඉඩ දරුණු ලෙස අඩුය</translation>
-<translation id="4762898026821161650">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් පරිගණකය</translation>
 <translation id="4763408175235639573">ඔබ මෙම පිටුව බැලූ විට පහත කුකී සකසන ලදී</translation>
 <translation id="4765582662863429759">Android පණිවුඩවලට ඔබේ දුරකථනයෙන් ඔබේ Chromebook වෙත පාඨ පිළියැවීමට අවසර දෙයි</translation>
 <translation id="4768332406694066911">ඔබව හඳුනා ගන්නා මෙම සංවිධාන වෙතින් වන සහතික ඔබට තිබේ</translation>
@@ -4914,6 +4908,7 @@
 <translation id="6112931163620622315">ඔබේ දුරකථනය පරික්ෂා කරන්න</translation>
 <translation id="6113434369102685411">Chrome බ්‍රව්සරය සහ <ph name="DEVICE_TYPE" /> දියත්කරණය සඳහා ඔබගේ පෙරනිමි සෙවුම් යන්ත්‍රය සකසන්න</translation>
 <translation id="6113942107547980621">ස්මාර්ට් අගුල භාවිත කිරීමට, ඔබේ දුරකථනයේ ප්‍රාථමික පරිශීලක පැතිකඩට මාරු කරන්න</translation>
+<translation id="611684075852771314">මෙම ලොග මගේ ගොනු තුළ මෙලෙස සුරැක ඇත</translation>
 <translation id="6116921718742659598">භාශාව හා ආදාන සැකසුම් වෙනස් කරන්න</translation>
 <translation id="6119927814891883061">උපාංගය <ph name="DEVICE_NAME" /> ලෙස නම් කරන්න</translation>
 <translation id="6120205520491252677">මෙම පිටුව ආරම්භක තිරයට අමුණන්න...</translation>
@@ -5688,6 +5683,7 @@
 <translation id="6930036377490597025">බාහිර ආරක්‍ෂක යතුර හෝ තිළැලි සංවේදකය</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{දිගුවක් ප්‍රතික්‍ෂේප විය}one{දිගු # ක් ප්‍රතික්‍ෂේප විය}other{දිගු # ක් ප්‍රතික්‍ෂේප විය}}</translation>
 <translation id="6930321203306643451">උත්ශ්‍රේණිය සම්පූර්ණයි</translation>
+<translation id="6931690462168617033">ප්‍රබලතාව ක්ලික් කරන්න</translation>
 <translation id="6935286146439255109">කඩදාසි තැටියක් මඟ හැරී ඇත</translation>
 <translation id="693807610556624488">ලිවිම් මෙහෙයුම මෙය වෙත උපලක්ෂණයේ උපරිම දිග ඉක්මවයි: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">ඔබට 1 සුරැකි මුද්‍රකයක් ඇත.</translation>
@@ -5821,7 +5817,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{ආරක්‍ෂක පරීක්‍ෂාව 1 විනාඩියකට පෙර ධාවන විය}one{ආරක්‍ෂක පරීක්‍ෂාව විනාඩි {NUM_MINS} කට පෙර ධාවන විය}other{ආරක්‍ෂක පරීක්‍ෂාව විනාඩි {NUM_MINS} කට පෙර ධාවන විය}}</translation>
 <translation id="7057767408836081338">යෙදුම් දත්ත ලබා ගැනීම අසාර්ථක විය, කෙසේ වෙතත් යෙදුම ධාවන කිරීමට උත්සාහ කෙරේ...</translation>
 <translation id="7058024590501568315">සැඟවුණු ජාලය</translation>
-<translation id="70582545822664495">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් මූසිකය</translation>
 <translation id="7059858479264779982">ස්වයං-දියත්කිරීමට සකසන්න</translation>
 <translation id="7062222374113411376">මෑතකදී වසා දැමූ අඩවි වලට දත්ත යැවීම සහ ලැබීම අවසන් කිරීමට ඉඩ ලබා දෙන්න (නිර්දේශිතයි)</translation>
 <translation id="7063129466199351735">කෙටිමාර්ග සැකසෙමින්...</translation>
@@ -5985,7 +5980,6 @@
 <translation id="7257173066616499747">Wi-Fi ජාල</translation>
 <translation id="725758059478686223">මුද්‍රණ සේවාව</translation>
 <translation id="7257666756905341374">ඔබ පිටපත් කර අලවන දත්ත කියවන්න</translation>
-<translation id="7258006747130724016">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් වීඩියෝ කැමරාව</translation>
 <translation id="7258192266780953209">පරිණාමන</translation>
 <translation id="7258225044283673131">යෙදුම ප්‍රතිචාර නොදක්වයි. යෙදුම වැසීමට "බලෙන් වසන්න" තෝරන්න.</translation>
 <translation id="7262004276116528033">පුරනය වීමේ සේවාව <ph name="SAML_DOMAIN" /> වෙතින් සත්කාර කරනු ලැබේ</translation>
@@ -6779,7 +6773,6 @@
 <translation id="8037117027592400564">සංශ්ලේෂණය කළ කථනය භාවිතා කරමින් කථා කළ සියලු පෙළ කියවන්න</translation>
 <translation id="8037357227543935929">විමසන්න (පෙරනිමි)</translation>
 <translation id="803771048473350947">ගොනුව</translation>
-<translation id="8038399858950372766">උපාංග <ph name="DEVICE_COUNT" />කින් <ph name="DEVICE_INDEX" />, <ph name="DEVICE_NAME" /> නම් යතුරුපුවරුව</translation>
 <translation id="8041089156583427627">ප්‍රතිපෝෂණ යවන්න</translation>
 <translation id="8042142357103597104">පාඨ පාරාන්ධතාව</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> ප්‍රතිචාර නොදක්වයි.</translation>
@@ -6818,6 +6811,7 @@
 <translation id="8064279191081105977">සමූහය <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">සබැඳුම් සංවාදය</translation>
 <translation id="8069615408251337349">Google Cloud මුද්‍රණය</translation>
+<translation id="8070662218171013510">ස්පෘශ්‍ය ප්‍රතිපෝෂණය</translation>
 <translation id="8071432093239591881">රූපයක් ලෙස මුද්‍රණය කරන්න</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />යෙදුම් දත්ත සම්බන්ධතා, පණිවිඩ, ඡායාරූප වැනි දත්ත ඇතුළුව යෙදුමක් විසින් සුරකිනු ලැබූ (සංවර්ධක සැකසීම් මත පදනම්ව) ඕනෑම දත්තයක් විය හැකිය.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />උපස්ථ දත්ත ඔබේ දරුවාගේ Drive ආචයන පංගුවට ගණනය නොකෙරෙනු ඇත.<ph name="END_PARAGRAPH2" />
@@ -6855,6 +6849,7 @@
 <translation id="81020759409809034">දේශීය ස්ථානය</translation>
 <translation id="8102139037507939978">system_logs.txt වෙතින් පුද්ගලිකව හඳුනා ගත හැකි තොරතුරු ඉවත් කරන්න.</translation>
 <translation id="8104088837833760645">eSIM පැතිකඩ බාගන්න</translation>
+<translation id="8105368624971345109">ක්‍රියා විරහිත කරන්න</translation>
 <translation id="8107015733319732394">ඔබේ <ph name="DEVICE_TYPE" /> මත Google Play Store ස්ථාපනය කරමින්. මේ සඳහා විනාඩි කිහිපයක් ගත විය හැකිය.</translation>
 <translation id="810728361871746125">සංදර්ශක විභේදනය</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{තෙවන පාර්ශ්ව කුකී නැත}=1{1 තෙවන පාර්ශ්ව කුකීයක් අවහිර කළා}one{තෙවන පාර්ශ්ව කුකී # ක් අවහිර කළා}other{තෙවන පාර්ශ්ව කුකී # ක් අවහිර කළා}}</translation>
@@ -6919,7 +6914,6 @@
 <translation id="8168071266284693455">ඔබගේ සියලු උපාංගවල ඔබගේ පිටුසන්, මුරපද, ඉතිහාසය සහ තවත් දේ ඔබගේ සියලු උපාංගවල සමමුහුර්ත කෙරේ</translation>
 <translation id="8168435359814927499">අන්තර්ගතය</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{කියවීම් ලැයිස්තුවට ටැබය එක් කරන්න}one{කියවීම් ලැයිස්තුවට ටැබ එක් කරන්න}other{කියවීම් ලැයිස්තුවට ටැබ එක් කරන්න}}</translation>
-<translation id="8169849063724750395">ආපසු ක්‍රියාත්මක කරන්න</translation>
 <translation id="8171334254070436367">සියලු කාඩ්පත් සඟවන්න</translation>
 <translation id="8174047975335711832">උපාංග තොරතුරු</translation>
 <translation id="8174876712881364124">Google Drive වෙත උපස්ථ කරන්න. ඔබේ දත්ත පහසුවෙන් ප්‍රතිසාධනය කරන්න හෝ ඕනෑම වේලාවක දී උපාංගය මාරු කරන්න. ඔබේ උපස්ථයේ යෙදුම් දත්ත ඇතුළත් වේ. ඔබේ උපස්ථයන් Google වෙත උඩුගත කරන අතර ඔබේ දරුවාගේ Google ගිණුමේ මුරපදය භාවිතයෙන් ගුප්ත කේතනය කර ඇත. <ph name="BEGIN_LINK1" />තව දැන ගන්න<ph name="END_LINK1" /></translation>
@@ -6993,7 +6987,6 @@
 <translation id="8249615410597138718">ඔබේ උපාංග වෙත යවන්න</translation>
 <translation id="8249672078237421304">ඔබට කියවිය හැකි භාෂාවකින් නොවන පිටු පරිවර්තනය කිරීමට පිරිනමන්න</translation>
 <translation id="8251441930213048644">දැන් නැවුම් කරන්න</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" />ට යුගල කරමින්</translation>
 <translation id="8251578425305135684">තම්බ්නේල් ඉවත් කරන ලදි.</translation>
 <translation id="825238165904109940">සැම විටම සම්පූර්ණ URL පෙන්වන්න</translation>
 <translation id="8252569384384439529">උඩුගත කරමින්...</translation>
@@ -7235,7 +7228,6 @@
 <translation id="8534656636775144800">අපොයි! වසමට එක් වීමට උත්සාහ කරන විට යම් දෙයක් වැරදිණි. නැවත උත්සාහ කරන්න.</translation>
 <translation id="8535005006684281994">Netscape සහතිකය අලුත් කිරීමේ URL</translation>
 <translation id="8536956381488731905">යතුරු එබීමේ හඬ</translation>
-<translation id="8538718737588735385">ආපසු ක්‍රියාත්මක කරන්න</translation>
 <translation id="8539727552378197395">(HttpOnly) නැත</translation>
 <translation id="8539766201049804895">උත්ශ්‍රේණි කරන්න</translation>
 <translation id="8540136935098276800">නිවැරදිව ආකෘති කළ URL එකක් ඇතුළත් කරන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index af050f9c..e0ef412 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">Prebieha obnovenie systému Linux</translation>
 <translation id="1244303850296295656">Chyba rozšírenia</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> nebolo možné nainštalovať: webová adresa obrázka vrátila kód chyby <ph name="HTTP_ERROR" />. Kontaktujte správcu.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, tablet s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Očakávaná úvodná zložená zátvorka: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Týmto vymažete <ph name="TOTAL_USAGE" /> dát uložených webmi a nainštalovanými aplikáciami.</translation>
 <translation id="1251578593170406502">Vyhľadávajú sa mobilné dátové siete...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837">Počet vybratých položiek: <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Nastaviť aktívny tiket Kerberos</translation>
 <translation id="1444628761356461360">Toto nastavenie spravuje vlastník zariadenia <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, telefón s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Súbor „<ph name="IMAGE_PATH" />“ sa pre motív nepodarilo načítať.</translation>
 <translation id="1449191289887455076">Ak chcete potvrdiť pridelenie a <ph name="RESPONSE" />, stlačte kláves <ph name="CURRENTKEY" />.</translation>
 <translation id="1451375123200651445">Webová stránka, jeden súbor</translation>
@@ -863,7 +861,6 @@
 <translation id="1855079636134697549">Kamera je zapnutá</translation>
 <translation id="1856715684130786728">Pridať umiestnenie...</translation>
 <translation id="1858585891038687145">Dôverovať tomuto certifikátu na identifikáciu tvorcov softvéru</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, neznáme zariadenie s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Tento priečinok je prázdny</translation>
 <translation id="1862311223300693744">Máte nainštalované nejaké špeciálne pripojenie VPN, server proxy, bránu firewall alebo softvér NAS?</translation>
 <translation id="1863182668524159459">Nenašli sa žiadne sériové porty</translation>
@@ -1238,7 +1235,6 @@
 <translation id="2242687258748107519">Informácie o súbore</translation>
 <translation id="2246549592927364792">Chcete získavať popisy obrázkov od Googlu?</translation>
 <translation id="2247738527273549923">Zariadenie spravuje vaša organizácia</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, herný ovládač s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Otvoriť ako okno s kartami</translation>
 <translation id="2249605167705922988">napr. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Otvoriť pomocou systémového zobrazovača</translation>
@@ -1997,7 +1993,6 @@
 <translation id="3007771295016901659">Duplikovať kartu</translation>
 <translation id="3008232374986381779">Spustite nástroje aj editory pre systém Linux a súbory IDE vo svojom zariadení <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Obnoviť povolenia</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, audio zariadenie s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> vyžaduje, aby ste sa dnes pripojili k sieti Wi‑Fi a stiahli aktualizáciu. Prípadne ju stiahnite prostredníctvom meraného pripojenia (môžu sa účtovať poplatky).}few{<ph name="MANAGER" /> vyžaduje, aby ste sa pripojili k sieti Wi‑Fi a pred uplynutím termínu stiahli aktualizáciu. Prípadne ju stiahnite prostredníctvom meraného pripojenia (môžu sa účtovať poplatky).}many{<ph name="MANAGER" /> vyžaduje, aby ste sa pripojili k sieti Wi‑Fi a pred uplynutím termínu stiahli aktualizáciu. Prípadne ju stiahnite prostredníctvom meraného pripojenia (môžu sa účtovať poplatky).}other{<ph name="MANAGER" /> vyžaduje, aby ste sa pripojili k sieti Wi‑Fi a pred uplynutím termínu stiahli aktualizáciu. Prípadne ju stiahnite prostredníctvom meraného pripojenia (môžu sa účtovať poplatky).}}</translation>
 <translation id="3009300415590184725">Naozaj chcete zrušiť proces nastavenia mobilnej dátovej služby?</translation>
 <translation id="3009779501245596802">Indexované databázy</translation>
@@ -2303,7 +2298,6 @@
 <translation id="3348038390189153836">Bolo zistené odnímateľné zariadenie</translation>
 <translation id="3348131053948466246">Navrhované emodži. Pohybujte sa klávesami so šípkou nahor alebo nadol a stlačením klávesa Enter emodži vložte.</translation>
 <translation id="3349933790966648062">Množstvo využívanej pamäte</translation>
-<translation id="3354972872297836698">Zariadenie <ph name="DEVICE_NAME" /> sa nepodarilo spárovať. Ak to chcete skúsiť znova, vyberte zariadenie.</translation>
 <translation id="3355936511340229503">Chyba pripojenia</translation>
 <translation id="3356580349448036450">Dokončené</translation>
 <translation id="3359256513598016054">Obmedzenia certifikačnej politiky</translation>
@@ -2736,6 +2730,7 @@
 <translation id="3788331399335602504">tieto súbory</translation>
 <translation id="3788401245189148511">Mohli by:</translation>
 <translation id="3789841737615482174">Inštalovať</translation>
+<translation id="3790417903123637354">Vyskytol sa problém. Skúste to neskôr.</translation>
 <translation id="379082410132524484">Platnosť vašej karty vypršala</translation>
 <translation id="3792890930871100565">Odpojiť tlačiarne</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome nenašiel vo vašom počítači škodlivý softvér • skontrolované pred 1 dňom}few{Chrome nenašiel vo vašom počítači škodlivý softvér • skontrolované pred {NUM_DAYS} dňami}many{Chrome nenašiel vo vašom počítači škodlivý softvér • skontrolované pred {NUM_DAYS} dňa}other{Chrome nenašiel vo vašom počítači škodlivý softvér • skontrolované pred {NUM_DAYS} dňami}}</translation>
@@ -3135,7 +3130,6 @@
 <translation id="4200689466366162458">Vlastné slová</translation>
 <translation id="4200983522494130825">Nová &amp;karta</translation>
 <translation id="4201546031411513170">Položky, ktoré chcete synchronizovať, môžete vybrať v nastaveniach.</translation>
-<translation id="4202417625268941299">So Zlepšeným bezpečným prehliadaním získate najsilnejšie zabezpečenie Chromu</translation>
 <translation id="420283545744377356">Vypnúť šetrič obrazovky</translation>
 <translation id="4206144641569145248">Mimozemšťan</translation>
 <translation id="4206323443866416204">Hlásenie spätnej väzby</translation>
@@ -3641,7 +3635,6 @@
 <translation id="4759238208242260848">Stiahnuté</translation>
 <translation id="4761104368405085019">Používať váš mikrofón</translation>
 <translation id="4762718786438001384">Kritický nedostatok miesta na disku zariadenia</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, počítač s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Počas zobrazenia tejto stránky boli nastavené nasledujúce súbory cookie</translation>
 <translation id="4765582662863429759">Umožňuje Správam pre Android prenášať textové správy z vášho telefónu do Chromebooku</translation>
 <translation id="4768332406694066911">Máte certifikáty z týchto organizácií, ktoré vás identifikujú</translation>
@@ -5823,7 +5816,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Kontrola bezpečnosti prebehla pred 1 minútou}few{Kontrola bezpečnosti prebehla pred {NUM_MINS} minútami}many{Kontrola bezpečnosti prebehla pred {NUM_MINS} minúty}other{Kontrola bezpečnosti prebehla pred {NUM_MINS} minútami}}</translation>
 <translation id="7057767408836081338">Dáta aplikácie sa nepodarilo získať. Napriek tomu sa aplikáciu pokúsime spustiť…</translation>
 <translation id="7058024590501568315">Skrytá sieť</translation>
-<translation id="70582545822664495"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, myš s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Nastaviť na automatické spúšťanie</translation>
 <translation id="7062222374113411376">Povoliť nedávno zatvoreným stránkam dokončiť posielanie a prijímanie dát (odporúča sa)</translation>
 <translation id="7063129466199351735">Prebieha spracovanie odkazov...</translation>
@@ -5987,7 +5979,6 @@
 <translation id="7257173066616499747">Siete Wi‑Fi</translation>
 <translation id="725758059478686223">Tlačová služba</translation>
 <translation id="7257666756905341374">Čítať údaje, ktoré kopírujete a prilepujete</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, videokamera s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformácie</translation>
 <translation id="7258225044283673131">Aplikácia nereaguje. Zavrite ju výberom možnosti Vynútiť zavretie.</translation>
 <translation id="7262004276116528033">Túto prihlasovaciu službu hostí doména <ph name="SAML_DOMAIN" /></translation>
@@ -6783,7 +6774,6 @@
 <translation id="8037117027592400564">Čítať akýkoľvek hovorený text prenesený pomocou hlasového syntetizátora</translation>
 <translation id="8037357227543935929">Opýtať sa (predvolené)</translation>
 <translation id="803771048473350947">Súbor</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_INDEX" />. zariadenie z <ph name="DEVICE_COUNT" />, klávesnica s názvom <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Odoslať spätnú väzbu</translation>
 <translation id="8042142357103597104">Nepriehľadnosť textu</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> nereaguje.</translation>
@@ -6860,6 +6850,7 @@
 <translation id="81020759409809034">Miestne umiestnenie</translation>
 <translation id="8102139037507939978">Odstraňovať zo súboru system_logs.txt údaje umožňujúce zistenie totožnosti</translation>
 <translation id="8104088837833760645">Stiahnuť profil eSIM</translation>
+<translation id="8105368624971345109">Vypnúť</translation>
 <translation id="8107015733319732394">Inštaluje sa Obchod Google Play na zariadení <ph name="DEVICE_TYPE" />. Môžete to chvíľu trvať.</translation>
 <translation id="810728361871746125">Rozlíšenie obrazovky</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Žiadne súbory cookie tretích strán}=1{Je blokovaný 1 súbor cookie tretej strany}few{Sú blokované # súbory cookie tretích strán}many{# third-party cookies are blocked}other{Je blokovaných # súborov cookie tretích strán}}</translation>
@@ -6924,7 +6915,6 @@
 <translation id="8168071266284693455">Záložky, heslá, história a ďalší obsah sú synchronizované vo všetkých vašich zariadeniach</translation>
 <translation id="8168435359814927499">Obsah</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Pridať kartu do čitateľského zoznamu}few{Pridať karty do čitateľského zoznamu}many{Pridať karty do čitateľského zoznamu}other{Pridať karty do čitateľského zoznamu}}</translation>
-<translation id="8169849063724750395">Znova zapnúť</translation>
 <translation id="8171334254070436367">Skryť všetky karty</translation>
 <translation id="8174047975335711832">Informácie o zariadení</translation>
 <translation id="8174876712881364124">Zálohovanie na Disk Google. Ľahko kedykoľvek obnovte údaje alebo prejdite na iné zariadenie. Táto záloha obsahuje dáta aplikácií. Zálohy sa nahrajú do Googlu a zašifrujú pomocou vášho hesla účtu Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation>
@@ -6998,7 +6988,6 @@
 <translation id="8249615410597138718">Odoslať do zariadení</translation>
 <translation id="8249672078237421304">Ponúkať preklad stránok, ktorým by ste nemuseli rozumieť</translation>
 <translation id="8251441930213048644">Ihneď obnoviť</translation>
-<translation id="8251509999076836464">Páruje sa so zariadením <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Miniatúra odstránená.</translation>
 <translation id="825238165904109940">Vždy zobrazovať celé webové adresy</translation>
 <translation id="8252569384384439529">Nahráva sa...</translation>
@@ -7240,7 +7229,6 @@
 <translation id="8534656636775144800">Ojoj, pri pripájaní k doméne sa vyskytla chyba. Skúste to znova.</translation>
 <translation id="8535005006684281994">Netscape – webová adresa pre obnovenie certifikátu</translation>
 <translation id="8536956381488731905">Zvuk pri stlačení klávesa</translation>
-<translation id="8538718737588735385">Znova zapnúť</translation>
 <translation id="8539727552378197395">Nie (HttpOnly)</translation>
 <translation id="8539766201049804895">Inovovať</translation>
 <translation id="8540136935098276800">Zadajte správne naformátovanú webovú adresu</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 98617830..dfafc2da 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -255,7 +255,6 @@
 <translation id="1244265436519979884">Trenutno poteka obnavljanje vsebnika za Linux</translation>
 <translation id="1244303850296295656">Napaka razširitve</translation>
 <translation id="1246863218384630739">Navideznega računalnika <ph name="VM_NAME" /> ni bilo mogoče namestiti: URL slike je vrnil kodo napake <ph name="HTTP_ERROR" />. Obrnite se na skrbnika.</translation>
-<translation id="1247071602516579380">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, tablični računalnik, imenovan <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">Pričakovan zaviti oklepaj: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">S tem boste izbrisali <ph name="TOTAL_USAGE" /> podatkov, ki so jih shranila spletna mesta in nameščene aplikacije.</translation>
 <translation id="1251578593170406502">Iskanje mobilnih podatkovnih omrežij …</translation>
@@ -442,7 +441,6 @@
 <translation id="144283815522798837">Št. izbranih: <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Nastavitev aktivnega kartončka za Kerberos</translation>
 <translation id="1444628761356461360">To nastavitev upravlja lastnik naprave <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, telefon, imenovan <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Ni bilo mogoče naložiti slike »<ph name="IMAGE_PATH" />« za temo.</translation>
 <translation id="1449191289887455076">Znova pritisnite »<ph name="CURRENTKEY" />«, če želite potrditi dodelitev in <ph name="RESPONSE" />.</translation>
 <translation id="1451375123200651445">Spletna stran, ena datoteka</translation>
@@ -875,7 +873,6 @@
 <translation id="1855079636134697549">Kamera je vklopljena.</translation>
 <translation id="1856715684130786728">Dodaj lokacijo ...</translation>
 <translation id="1858585891038687145">Zaupaj temu potrdilu za prepoznavanje proizvajalcev programske opreme</translation>
-<translation id="1859787252990099899">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, neznana naprava, imenovana <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Ta mapa je prazna</translation>
 <translation id="1862311223300693744">Ali imate nameščeno posebno omrežje VPN, strežnik proxy, požarni zid ali
     programsko opremo NAS?</translation>
@@ -1251,7 +1248,6 @@
 <translation id="2242687258748107519">Podatki o datoteki</translation>
 <translation id="2246549592927364792">Želite pridobivati opise slik iz Googla?</translation>
 <translation id="2247738527273549923">To napravo upravlja vaša organizacija.</translation>
-<translation id="2249061317998743208">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, krmilnik za igre, imenovan <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Odprta kot okno na zavihku</translation>
 <translation id="2249605167705922988">npr. 1–5, 8, 11–13</translation>
 <translation id="2251218783371366160">Odpri s sistemskim pregledovalnikom</translation>
@@ -2013,7 +2009,6 @@
 <translation id="3007771295016901659">Duplicate Tab</translation>
 <translation id="3008232374986381779">Izvajanje orodij, urejevalnikov in IDE-jev za Linux v napravi <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Ponastavi dovoljenja</translation>
-<translation id="3008396025115884998">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, zvočna naprava, imenovana <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> zahteva, da se še danes povežete z omrežjem Wi-Fi in prenesete posodobitev. Prenesete jo lahko tudi prek povezave z omejenim prenosom podatkov (prenos podatkov se morda zaračuna).}one{<ph name="MANAGER" /> zahteva, da se povežete z omrežjem Wi-Fi in prenesete posodobitev pred rokom. Prenesete jo lahko tudi prek povezave z omejenim prenosom podatkov (prenos podatkov se morda zaračuna).}two{<ph name="MANAGER" /> zahteva, da se povežete z omrežjem Wi-Fi in prenesete posodobitev pred rokom. Prenesete jo lahko tudi prek povezave z omejenim prenosom podatkov (prenos podatkov se morda zaračuna).}few{<ph name="MANAGER" /> zahteva, da se povežete z omrežjem Wi-Fi in prenesete posodobitev pred rokom. Prenesete jo lahko tudi prek povezave z omejenim prenosom podatkov (prenos podatkov se morda zaračuna).}other{<ph name="MANAGER" /> zahteva, da se povežete z omrežjem Wi-Fi in prenesete posodobitev pred rokom. Prenesete jo lahko tudi prek povezave z omejenim prenosom podatkov (prenos podatkov se morda zaračuna).}}</translation>
 <translation id="3009300415590184725">Ali ste prepričani, da želite preklicati postopek nastavitve mobilne podatkovne storitve?</translation>
 <translation id="3009779501245596802">Indeksirane zbirke podatkov</translation>
@@ -2319,7 +2314,6 @@
 <translation id="3348038390189153836">Zaznane zamenljive naprave</translation>
 <translation id="3348131053948466246">Predlagan je bil emodži. Pritisnite tipko za navzdol ali navzdol in Enter, če ga želite vnesti.</translation>
 <translation id="3349933790966648062">Količina uporabljenega pomnilnika</translation>
-<translation id="3354972872297836698">Seznanitve z napravo <ph name="DEVICE_NAME" /> ni bilo mogoče opraviti; izberite napravo, če želite poskusiti znova</translation>
 <translation id="3355936511340229503">Napaka povezave</translation>
 <translation id="3356580349448036450">Dokončano</translation>
 <translation id="3359256513598016054">Omejitve pravilnika potrdila</translation>
@@ -2751,6 +2745,7 @@
 <translation id="3788331399335602504">te datoteke</translation>
 <translation id="3788401245189148511">Lahko bi:</translation>
 <translation id="3789841737615482174">Namesti</translation>
+<translation id="3790417903123637354">Prišlo je do napake. Poskusite znova pozneje.</translation>
 <translation id="379082410132524484">Kartica je potekla</translation>
 <translation id="3792890930871100565">Prekinite povezave s tiskalniki</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome v računalniku ni odkril škodljive programske opreme • Preverjeno pred 1 dnevom}one{Chrome v računalniku ni odkril škodljive programske opreme • Preverjeno pred {NUM_DAYS} dnevom}two{Chrome v računalniku ni odkril škodljive programske opreme • Preverjeno pred {NUM_DAYS} dnevoma}few{Chrome v računalniku ni odkril škodljive programske opreme • Preverjeno pred {NUM_DAYS} dnevi}other{Chrome v računalniku ni odkril škodljive programske opreme • Preverjeno pred {NUM_DAYS} dnevi}}</translation>
@@ -3150,7 +3145,6 @@
 <translation id="4200689466366162458">Besede po meri</translation>
 <translation id="4200983522494130825">Nov &amp;zavihek</translation>
 <translation id="4201546031411513170">V nastavitvah lahko kadar koli izberete, kaj želite sinhronizirati.</translation>
-<translation id="4202417625268941299">Z izboljšanim varnim brskanjem dobite Chromovo najmočnejšo zaščito.</translation>
 <translation id="420283545744377356">Izklop ohranjevalnika zaslona</translation>
 <translation id="4206144641569145248">Zunajzemeljsko bitje</translation>
 <translation id="4206323443866416204">Poročilo s povratnimi informacijami</translation>
@@ -3657,7 +3651,6 @@
 <translation id="4759238208242260848">Prenosi</translation>
 <translation id="4761104368405085019">Uporabite mikrofon</translation>
 <translation id="4762718786438001384">V napravi kritično primanjkuje prostora na disku</translation>
-<translation id="4762898026821161650">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, računalnik, imenovan <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Ko ste si ogledovali to stran, so bili poslani ti piškotki</translation>
 <translation id="4765582662863429759">Aplikaciji Android Messages omogoča posredovanje sporočil SMS iz telefona v Chromebook</translation>
 <translation id="4768332406694066911">Imate potrdila teh organizacij, ki vas identificirajo</translation>
@@ -5839,7 +5832,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Varnostno preverjanje je bilo izvedeno pred 1 minuto}one{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minuto}two{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minutama}few{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minutami}other{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minutami}}</translation>
 <translation id="7057767408836081338">Pridobivanje podatkov aplikacije ni uspelo. Aplikacija se kljub temu poskuša zagnati …</translation>
 <translation id="7058024590501568315">Skrito omrežje</translation>
-<translation id="70582545822664495">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, miška, imenovana <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Nastavi za samodejni zagon</translation>
 <translation id="7062222374113411376">Nedavno zaprtim spletnim mestom dovoli dokončanje pošiljanja in prejemanja podatkov (priporočeno)</translation>
 <translation id="7063129466199351735">Obdelava bližnjic ...</translation>
@@ -6003,7 +5995,6 @@
 <translation id="7257173066616499747">Omrežja Wi-Fi</translation>
 <translation id="725758059478686223">Storitev tiskanja</translation>
 <translation id="7257666756905341374">Branje podatkov, ki jih kopirate in prilepite</translation>
-<translation id="7258006747130724016">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, kamera, imenovana <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Pretvorbe</translation>
 <translation id="7258225044283673131">Aplikacija se ne odziva. Če želite zapreti aplikacijo, izberite »Vsili zapiranje«.</translation>
 <translation id="7262004276116528033">Prijavno storitev gosti <ph name="SAML_DOMAIN" /></translation>
@@ -6800,7 +6791,6 @@
 <translation id="8037117027592400564">Branje in izgovarjava vsega besedila z uporabo sintetiziranega govora</translation>
 <translation id="8037357227543935929">Zahteva (privzeto)</translation>
 <translation id="803771048473350947">Datoteka</translation>
-<translation id="8038399858950372766">Naprava <ph name="DEVICE_INDEX" /> od <ph name="DEVICE_COUNT" />, tipkovnica, imenovana <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Pošlji povratne informacije</translation>
 <translation id="8042142357103597104">Neprosojnost besedila</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> se ne odziva.</translation>
@@ -6824,6 +6814,7 @@
 <translation id="8054563304616131773">Vnesite veljaven e-poštni naslov</translation>
 <translation id="8054883179223321715">Na voljo za določena spletna mesta z videoposnetki</translation>
 <translation id="8054921503121346576">Tipkovnica USB je povezana</translation>
+<translation id="8057414620575339583">Stransko iskanje</translation>
 <translation id="8058655154417507695">Leto poteka</translation>
 <translation id="8058986560951482265">Migeta</translation>
 <translation id="8059417245945632445">&amp;Pregled naprav</translation>
@@ -6875,6 +6866,7 @@
 <translation id="81020759409809034">Lokalna lokacija</translation>
 <translation id="8102139037507939978">Odstrani podatke, ki omogočajo osebno prepoznavo, iz datoteke system_logs.txt.</translation>
 <translation id="8104088837833760645">Prenesi profil za e-SIM</translation>
+<translation id="8105368624971345109">Izklop</translation>
 <translation id="8107015733319732394">Nameščanje Trgovine Google Play v napravi <ph name="DEVICE_TYPE" />. To lahko traja nekaj minut.</translation>
 <translation id="810728361871746125">Ločljivost zaslona</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Ni piškotkov drugih spletnih mest}=1{1 piškotek drugega spletnega mesta je blokiran}one{# piškotek drugih spletnih mest je blokiran}two{# piškotka drugih spletnih mest sta blokirana}few{# piškotki drugih spletnih mest so blokirani}other{# piškotkov drugih spletnih mest je blokiranih}}</translation>
@@ -6939,7 +6931,6 @@
 <translation id="8168071266284693455">Zaznamki, gesla, zgodovina in drugi podatki so sinhronizirani v vseh vaših napravah</translation>
 <translation id="8168435359814927499">Vsebina</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj zavihek na bralni seznam}one{Dodaj zavihke na bralni seznam}two{Dodaj zavihke na bralni seznam}few{Dodaj zavihke na bralni seznam}other{Dodaj zavihke na bralni seznam}}</translation>
-<translation id="8169849063724750395">Vnovični vklop</translation>
 <translation id="8171334254070436367">Skrij vse kartice</translation>
 <translation id="8174047975335711832">Podatki o napravi</translation>
 <translation id="8174876712881364124">Varnostno kopiranje v Google Drive. Po želji lahko preprosto obnovite podatke ali napravo zamenjate z drugo. Ta varnostna kopija vključuje podatke aplikacij. Varnostne kopije so naložene v Google in šifrirane z geslom za Google Račun otroka. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation>
@@ -7013,7 +7004,6 @@
 <translation id="8249615410597138718">Pošiljanje v naprave</translation>
 <translation id="8249672078237421304">Ponudi prevajanje strani, ki niso v vašem jeziku</translation>
 <translation id="8251441930213048644">Osveži zdaj</translation>
-<translation id="8251509999076836464">Seznanjanje z napravo <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Sličica je odstranjena.</translation>
 <translation id="825238165904109940">Vedno pokaži celotne URL-je</translation>
 <translation id="8252569384384439529">Nalaganje …</translation>
@@ -7255,7 +7245,6 @@
 <translation id="8534656636775144800">Ojoj. Pri poskusu pridružitve domeni je prišlo do težav. Poskusite znova.</translation>
 <translation id="8535005006684281994">Spletni naslov podaljšanja Netscapeovega potrdila</translation>
 <translation id="8536956381488731905">Zvok ob pritisku tipke</translation>
-<translation id="8538718737588735385">Vnovični vklop</translation>
 <translation id="8539727552378197395">Ne (samo http)</translation>
 <translation id="8539766201049804895">Nadgradi</translation>
 <translation id="8540136935098276800">Vnesite pravilno oblikovan URL</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 76dc28b..7e970da 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -2724,6 +2724,7 @@
 <translation id="3788331399335602504">këta skedarë</translation>
 <translation id="3788401245189148511">Mund që:</translation>
 <translation id="3789841737615482174">Instalo</translation>
+<translation id="3790417903123637354">Ndodhi një gabim. Provo përsëri më vonë</translation>
 <translation id="379082410132524484">Karta jote ka skaduar</translation>
 <translation id="3792890930871100565">Shkëput printerët</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome nuk gjeti softuerë të dëmshëm në kompjuterin tënd • Kontrolluar 1 ditë më parë}other{Chrome nuk gjeti softuerë të dëmshëm në kompjuterin tënd • Kontrolluar {NUM_DAYS} ditë më parë}}</translation>
@@ -3809,6 +3810,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" dëshiron të lidhet me një portë serie</translation>
 <translation id="4944310289250773232">Ky shërbim vërtetimi strehohet nga <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Për të konfiguruar gjurmë gishti, vëre fëmijën tënd të prekë butonin e energjisë. Të dhënat e gjurmës së gishtit të fëmijës tënd ruhen në mënyrë të sigurt dhe nuk largohen kurrë nga ky <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Po merr mbrojtje standarde</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{një skedar}other{# skedarë}}</translation>
 <translation id="495170559598752135">Veprimet</translation>
 <translation id="4953808748584563296">Avatari i parazgjedhur portokalli</translation>
@@ -4392,6 +4394,7 @@
 <translation id="5575528586625653441">Kishte një problem me kërkesën për regjistrimin e demonstrimit.</translation>
 <translation id="557722062034137776">Rivendosja e pajisjes nuk do të ndikojë në llogaritë e tua të Google dhe të dhënat e sinkronizuara te këto llogari. Sidoqoftë, të gjithë skedarët e ruajtur lokalisht në pajisjen tënde do të fshihen.</translation>
 <translation id="5578059481725149024">Identifikimi automatik</translation>
+<translation id="5581134892342029705">Përkthimi në <ph name="LANGUAGE" /> përfundoi</translation>
 <translation id="558170650521898289">Verifikimi i drejtuesit të harduerit të Microsoft Windows</translation>
 <translation id="5581972110672966454">Pajisja nuk mund të bashkohet në domen. Provo përsëri ose kontakto me zotëruesin e pajisjes ose administratorin. Kodi i gabimit: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menyja kryesore</translation>
@@ -6784,6 +6787,7 @@
 <translation id="8054563304616131773">Fut një adresë të vlefshme mail-i.</translation>
 <translation id="8054883179223321715">Ofrohet për sajte specifike për video</translation>
 <translation id="8054921503121346576">Tastiera USB është e lidhur</translation>
+<translation id="8057414620575339583">Kërkimi anësor</translation>
 <translation id="8058655154417507695">Viti i skadimit</translation>
 <translation id="8058986560951482265">Me dridhje</translation>
 <translation id="8059417245945632445">&amp;Inspekto pajisjet</translation>
@@ -6835,6 +6839,7 @@
 <translation id="81020759409809034">Vendndodhja lokale</translation>
 <translation id="8102139037507939978">Hiq informacionin e idetifikueshëm personalisht nga system_logs.txt.</translation>
 <translation id="8104088837833760645">Shkarko profilin e kartës eSIM</translation>
+<translation id="8105368624971345109">Çaktivizo</translation>
 <translation id="8107015733319732394">Po instalon Google Play Store në pajisjen tënde <ph name="DEVICE_TYPE" />. Kjo mund të kërkojë disa minuta kohë.</translation>
 <translation id="810728361871746125">Rezolucioni i ekranit</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Asnjë kuki e palëve të treta}=1{1 kuki e palëve të treta është bllokuar}other{# kuki të palëve të treta janë bllokuar}}</translation>
@@ -7209,6 +7214,7 @@
 <translation id="8528074251912154910">Shto gjuhët</translation>
 <translation id="8528962588711550376">Po identifikohesh.</translation>
 <translation id="8529925957403338845">Dështoi lidhja e ndarjes së internetit në çast</translation>
+<translation id="8531701051932785007">"Shfletim i sigurt i përmirësuar" është joaktiv</translation>
 <translation id="8534656636775144800">Diçka nuk shkoi mirë gjatë përpjekjes për t'u bashkuar me domenin. Provo sërish.</translation>
 <translation id="8535005006684281994">URL-ja e rinovimit të certifikatës së Netscape</translation>
 <translation id="8536956381488731905">Lësho tingull kur shtyp tastin</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index 58b653ea..57226ab 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2502,6 +2502,7 @@
 <translation id="3557101512409028104">Podesite ograničenja za veb-sajtove i vreme ispred ekrana pomoću Family Link-a</translation>
 <translation id="3559262020195162408">Instaliranje smernica na uređaju nije uspelo.</translation>
 <translation id="3559533181353831840">Još oko <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">Primajte potvrdu vibracijom za radnje kao što su podeljeni ekran i menjanje radnih površina.</translation>
 <translation id="3560034655160545939">&amp;Provera pravopisa</translation>
 <translation id="3562423906127931518">Ovo može da potraje par minuta. Podešava se Linux kontejner.</translation>
 <translation id="3562655211539199254">Pregledajte nedavne Chrome kartice sa telefona</translation>
@@ -2726,6 +2727,7 @@
 <translation id="3788331399335602504">ovi fajlovi</translation>
 <translation id="3788401245189148511">Mogli bi da:</translation>
 <translation id="3789841737615482174">Instaliraj</translation>
+<translation id="3790417903123637354">Nešto nije u redu. Probajte ponovo kasnije</translation>
 <translation id="379082410132524484">Kartica je istekla</translation>
 <translation id="3792890930871100565">Prekini vezu sa štampačima</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome nije pronašao štetan softver na računaru • Provereno pre 1 dan}one{Chrome nije pronašao štetan softver na računaru • Provereno pre {NUM_DAYS} dan}few{Chrome nije pronašao štetan softver na računaru • Provereno pre {NUM_DAYS} dana}other{Chrome nije pronašao štetan softver na računaru • Provereno pre {NUM_DAYS} dana}}</translation>
@@ -3811,6 +3813,7 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ želi da se poveže sa serijskim portom</translation>
 <translation id="4944310289250773232">Ovu uslugu potvrde identiteta hostuje <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Da biste podesili otisak prsta, neka dete dodirne dugme za uključivanje. Podaci o otisku prsta deteta se bezbedno čuvaju isključivo na ovom <ph name="DEVICE_TYPE" /> uređaju.</translation>
+<translation id="4946459324029651239">Dobijate standardnu zaštitu</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{fajl}one{# fajl}few{# fajla}other{# fajlova}}</translation>
 <translation id="495170559598752135">Radnje</translation>
 <translation id="4953808748584563296">Podrazumevani narandžasti avatar</translation>
@@ -4393,6 +4396,7 @@
 <translation id="5575528586625653441">Došlo je do problema sa zahtevom za registraciju za režim demonstracije.</translation>
 <translation id="557722062034137776">Vraćanje uređaja na početna podešavanja ne utiče na Google naloge niti bilo kakve podatke sinhronizovane sa njima. Međutim, sve datoteke koje su lokalno sačuvane na uređaju će biti izbrisane.</translation>
 <translation id="5578059481725149024">Automatsko prijavljivanje</translation>
+<translation id="5581134892342029705">Gotov je prevod na <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Verifikacija upravljačkih programa za hardver u Microsoft Windows-u</translation>
 <translation id="5581972110672966454">Pridruživanje uređaja domenu nije uspelo. Probajte ponovo ili se obratite vlasniku uređaja ili administratoru. Kôd greške: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Glavni meni</translation>
@@ -4898,6 +4902,7 @@
 <translation id="6112931163620622315">Proverite telefon</translation>
 <translation id="6113434369102685411">Podesite podrazumevani pretraživač za Chrome pregledač i pokretač za <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">Da biste koristili Smart Lock, pređite na primarni korisnički profil na telefonu</translation>
+<translation id="611684075852771314">Ova evidencija je sačuvana u Mojim fajlovima kao</translation>
 <translation id="6116921718742659598">Promeni podešavanja jezika i unosa</translation>
 <translation id="6119927814891883061">Promenite naziv uređaja u <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Zakači ovu stranicu na Početni ekran...</translation>
@@ -5674,6 +5679,7 @@
 <translation id="6930036377490597025">Eksterni bezbednosni ključ ili ugrađeni senzor</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Dodatak je odbijen}one{# dodatak je odbijen}few{# dodatka su odbijena}other{# dodataka je odbijeno}}</translation>
 <translation id="6930321203306643451">Nadogradnja je dovršena</translation>
+<translation id="6931690462168617033">Jačina klika</translation>
 <translation id="6935286146439255109">Nedostaje posuda za papir</translation>
 <translation id="693807610556624488">Operacija čitanja premašuje maksimalnu dužinu atributa za: „<ph name="DEVICE_NAME" />“.</translation>
 <translation id="6938386202199793006">Imate 1 sačuvani štampač.</translation>
@@ -6803,6 +6809,7 @@
 <translation id="8064279191081105977">Grupa <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Dijalog za povezivanje</translation>
 <translation id="8069615408251337349">Google Cloud štampanje</translation>
+<translation id="8070662218171013510">Dodirne povratne informacije</translation>
 <translation id="8071432093239591881">Odštampaj kao sliku</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Podaci aplikacija mogu da budu bilo koji podaci koje je aplikacija sačuvala (na osnovu podešavanja programera), uključujući podatke kao što su kontakti, poruke i slike.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Rezervne kopije podataka se ne računaju u odnosu na kvotu memorijskog prostora na Disku deteta.<ph name="END_PARAGRAPH2" />
@@ -6840,6 +6847,7 @@
 <translation id="81020759409809034">Lokalna lokacija</translation>
 <translation id="8102139037507939978">Ukloni podatke koji mogu da otkriju identitet iz datoteke system_logs.txt.</translation>
 <translation id="8104088837833760645">Preuzmite eSIM profil</translation>
+<translation id="8105368624971345109">Isključi</translation>
 <translation id="8107015733319732394">Google Play prodavnica se instalira na uređaju <ph name="DEVICE_TYPE" />. To može da potraje par minuta.</translation>
 <translation id="810728361871746125">Rezolucija ekrana</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Nema kolačića treće strane}=1{1 kolačić treće strane je blokiran}one{# kolačić treće strane je blokiran}few{# kolačića treće strane su blokirana}other{# kolačića treće strane je blokirano}}</translation>
@@ -7214,6 +7222,7 @@
 <translation id="8528074251912154910">Dodaj jezike</translation>
 <translation id="8528962588711550376">Prijavljivanje.</translation>
 <translation id="8529925957403338845">Povezivanje preko trenutnog privezivanja nije uspelo</translation>
+<translation id="8531701051932785007">Poboljšano bezbedno pregledanje je isključeno</translation>
 <translation id="8534656636775144800">Ups, došlo je do greške pri pridruživanju domenu. Probajte ponovo.</translation>
 <translation id="8535005006684281994">URL adresa za obnovu Netscape sertifikata</translation>
 <translation id="8536956381488731905">Zvuk pri pritisku na taster</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 971b6153..02d5834 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2502,6 +2502,7 @@
 <translation id="3557101512409028104">Подесите ограничења за веб-сајтове и време испред екрана помоћу Family Link-а</translation>
 <translation id="3559262020195162408">Инсталирање смерница на уређају није успело.</translation>
 <translation id="3559533181353831840">Још око <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">Примајте потврду вибрацијом за радње као што су подељени екран и мењање радних површина.</translation>
 <translation id="3560034655160545939">&amp;Провера правописа</translation>
 <translation id="3562423906127931518">Ово може да потраје пар минута. Подешава се Linux контејнер.</translation>
 <translation id="3562655211539199254">Прегледајте недавне Chrome картице са телефона</translation>
@@ -2726,6 +2727,7 @@
 <translation id="3788331399335602504">ови фајлови</translation>
 <translation id="3788401245189148511">Могли би да:</translation>
 <translation id="3789841737615482174">Инсталирај</translation>
+<translation id="3790417903123637354">Нешто није у реду. Пробајте поново касније</translation>
 <translation id="379082410132524484">Картица је истекла</translation>
 <translation id="3792890930871100565">Прекини везу са штампачима</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome није пронашао штетан софтвер на рачунару • Проверено пре 1 дан}one{Chrome није пронашао штетан софтвер на рачунару • Проверено пре {NUM_DAYS} дан}few{Chrome није пронашао штетан софтвер на рачунару • Проверено пре {NUM_DAYS} дана}other{Chrome није пронашао штетан софтвер на рачунару • Проверено пре {NUM_DAYS} дана}}</translation>
@@ -3811,6 +3813,7 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ жели да се повеже са серијским портом</translation>
 <translation id="4944310289250773232">Ову услугу потврде идентитета хостује <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Да бисте подесили отисак прста, нека дете додирне дугме за укључивање. Подаци о отиску прста детета се безбедно чувају искључиво на овом <ph name="DEVICE_TYPE" /> уређају.</translation>
+<translation id="4946459324029651239">Добијате стандардну заштиту</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{фајл}one{# фајл}few{# фајла}other{# фајлова}}</translation>
 <translation id="495170559598752135">Радње</translation>
 <translation id="4953808748584563296">Подразумевани наранџасти аватар</translation>
@@ -4393,6 +4396,7 @@
 <translation id="5575528586625653441">Дошло је до проблема са захтевом за регистрацију за режим демонстрације.</translation>
 <translation id="557722062034137776">Враћање уређаја на почетна подешавања не утиче на Google налоге нити било какве податке синхронизоване са њима. Међутим, све датотеке које су локално сачуване на уређају ће бити избрисане.</translation>
 <translation id="5578059481725149024">Аутоматско пријављивање</translation>
+<translation id="5581134892342029705">Готов је превод на <ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Верификација управљачких програма за хардвер у Microsoft Windows-у</translation>
 <translation id="5581972110672966454">Придруживање уређаја домену није успело. Пробајте поново или се обратите власнику уређаја или администратору. Кôд грешке: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Главни мени</translation>
@@ -4898,6 +4902,7 @@
 <translation id="6112931163620622315">Проверите телефон</translation>
 <translation id="6113434369102685411">Подесите подразумевани претраживач за Chrome прегледач и покретач за <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">Да бисте користили Smart Lock, пређите на примарни кориснички профил на телефону</translation>
+<translation id="611684075852771314">Ова евиденција је сачувана у Мојим фајловима као</translation>
 <translation id="6116921718742659598">Промени подешавања језика и уноса</translation>
 <translation id="6119927814891883061">Промените назив уређаја у <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Закачи ову страницу на Почетни екран...</translation>
@@ -5674,6 +5679,7 @@
 <translation id="6930036377490597025">Екстерни безбедносни кључ или уграђени сензор</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Додатак је одбијен}one{# додатак је одбијен}few{# додатка су одбијена}other{# додатака је одбијено}}</translation>
 <translation id="6930321203306643451">Надоградња је довршена</translation>
+<translation id="6931690462168617033">Јачина клика</translation>
 <translation id="6935286146439255109">Недостаје посуда за папир</translation>
 <translation id="693807610556624488">Операција читања премашује максималну дужину атрибута за: „<ph name="DEVICE_NAME" />“.</translation>
 <translation id="6938386202199793006">Имате 1 сачувани штампач.</translation>
@@ -6803,6 +6809,7 @@
 <translation id="8064279191081105977">Група <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Дијалог за повезивање</translation>
 <translation id="8069615408251337349">Google Cloud штампање</translation>
+<translation id="8070662218171013510">Додирне повратне информације</translation>
 <translation id="8071432093239591881">Одштампај као слику</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Подаци апликација могу да буду било који подаци које је апликација сачувала (на основу подешавања програмера), укључујући податке као што су контакти, поруке и слике.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Резервне копије података се не рачунају у односу на квоту меморијског простора на Диску детета.<ph name="END_PARAGRAPH2" />
@@ -6840,6 +6847,7 @@
 <translation id="81020759409809034">Локална локација</translation>
 <translation id="8102139037507939978">Уклони податке који могу да открију идентитет из датотеке system_logs.txt.</translation>
 <translation id="8104088837833760645">Преузмите eSIM профил</translation>
+<translation id="8105368624971345109">Искључи</translation>
 <translation id="8107015733319732394">Google Play продавница се инсталира на уређају <ph name="DEVICE_TYPE" />. То може да потраје пар минута.</translation>
 <translation id="810728361871746125">Резолуција екрана</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Нема колачића треће стране}=1{1 колачић треће стране је блокиран}one{# колачић треће стране је блокиран}few{# колачића треће стране су блокирана}other{# колачића треће стране је блокирано}}</translation>
@@ -7214,6 +7222,7 @@
 <translation id="8528074251912154910">Додај језике</translation>
 <translation id="8528962588711550376">Пријављивање.</translation>
 <translation id="8529925957403338845">Повезивање преко тренутног привезивања није успело</translation>
+<translation id="8531701051932785007">Побољшано безбедно прегледање је искључено</translation>
 <translation id="8534656636775144800">Упс, дошло је до грешке при придруживању домену. Пробајте поново.</translation>
 <translation id="8535005006684281994">URL адреса за обнову Netscape сертификата</translation>
 <translation id="8536956381488731905">Звук при притиску на тастер</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 8df588f..987b16b 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">de här filerna</translation>
 <translation id="3788401245189148511">Appen eller tillägget skulle kunna:</translation>
 <translation id="3789841737615482174">Installera</translation>
+<translation id="3790417903123637354">Något gick fel. Försök igen senare</translation>
 <translation id="379082410132524484">Kortets giltighetstid har löpt ut</translation>
 <translation id="3792890930871100565">Koppla från skrivare</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome har inte upptäckt skadlig programvara på datorn • Genomsöktes för 1 dag sedan}other{Chrome har inte upptäckt skadlig programvara på datorn • Genomsöktes för {NUM_DAYS} dagar sedan}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> vill ansluta till en serieport</translation>
 <translation id="4944310289250773232">Den här autentiseringstjänsten tillhandahålls av <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Låt ditt barn trycka på strömbrytaren om fingeravtryck ska användas. Ditt barns fingeravtrycksdata lagras på ett säkert sätt och lämnar aldrig denna <ph name="DEVICE_TYPE" />.</translation>
+<translation id="4946459324029651239">Du har standardskydd</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{en fil}other{# filer}}</translation>
 <translation id="495170559598752135">Åtgärder</translation>
 <translation id="4953808748584563296">Orange standardavatar</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">Ett problem uppstod med registreringsbegäran.</translation>
 <translation id="557722062034137776">Dina Google-konton eller data som synkroniserats med dessa konton påverkas inte när du återställer enheten. Alla filer som sparas lokalt på enheten kommer dock att tas bort.</translation>
 <translation id="5578059481725149024">Autoinloggning</translation>
+<translation id="5581134892342029705">Översättningen till <ph name="LANGUAGE" /> är klar</translation>
 <translation id="558170650521898289">Microsofts Verifiera Windows-maskinvarudrivrutin</translation>
 <translation id="5581972110672966454">Det gick inte att ansluta enheten till domänen. Försök igen eller kontakta enhetens ägare eller administratör. Felkod: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Huvudmeny</translation>
@@ -6806,6 +6809,7 @@
 <translation id="8054563304616131773">Ange en giltig e-postadress</translation>
 <translation id="8054883179223321715">Tillgänglig för vissa videowebbplatser</translation>
 <translation id="8054921503121346576">USB-tangentbord har anslutits</translation>
+<translation id="8057414620575339583">Sökning med sidofält</translation>
 <translation id="8058655154417507695">Utgångsår</translation>
 <translation id="8058986560951482265">Ryckig</translation>
 <translation id="8059417245945632445">&amp;Inspektera enheter</translation>
@@ -6857,6 +6861,7 @@
 <translation id="81020759409809034">Plats lokalt</translation>
 <translation id="8102139037507939978">Ta bort uppgifter som kan kopplas till en specifik individ från system_logs.txt.</translation>
 <translation id="8104088837833760645">Ladda ned eSIM-profil</translation>
+<translation id="8105368624971345109">Inaktivera</translation>
 <translation id="8107015733319732394">Google Play Butik installeras på din <ph name="DEVICE_TYPE" />. Det kan ta några minuter.</translation>
 <translation id="810728361871746125">Skärmupplösning</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Inga cookies från tredje part}=1{1 cookie från tredje part har blockerats}other{# cookies från tredje part har blockerats}}</translation>
@@ -7231,6 +7236,7 @@
 <translation id="8528074251912154910">Lägg till språk</translation>
 <translation id="8528962588711550376">Inloggning sker</translation>
 <translation id="8529925957403338845">Direktinternetdelning misslyckades</translation>
+<translation id="8531701051932785007">Förbättrad säker webbsökning har inaktiverats</translation>
 <translation id="8534656636775144800">Hoppsan. Något gick fel när du försökte ansluta till domänen. Försök igen.</translation>
 <translation id="8535005006684281994">Förnyelseadress för Netscape-certifikat</translation>
 <translation id="8536956381488731905">Knappljud</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index bc7cbe4..a279e66 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -2514,6 +2514,7 @@
 <translation id="3557101512409028104">Weka vizuizi vya tovuti na vikomo vya muda wa kutumia kifaa ukitumia Family Link</translation>
 <translation id="3559262020195162408">Imeshindwa kusakinisha sera kwenye kifaa.</translation>
 <translation id="3559533181353831840">Zimesalia takribani <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">Pata thibitisho la mtetemo kwa ajili ya vitendo kama vile kugawa skrini na kubadilisha maeneokazi.</translation>
 <translation id="3560034655160545939">&amp;Kikagua maendelezo</translation>
 <translation id="3562423906127931518">Huenda mchakato huu ukachukua dakika kadhaa. Inaweka mipangilio ya metadata ya Linux.</translation>
 <translation id="3562655211539199254">Angalia vichupo vya Chrome ulivyovifungua hivi majuzi kwenye simu yako</translation>
@@ -2738,6 +2739,7 @@
 <translation id="3788331399335602504">faili hizi</translation>
 <translation id="3788401245189148511">Ingeweza:</translation>
 <translation id="3789841737615482174">Sakinisha</translation>
+<translation id="3790417903123637354">Hitilafu fulani imetokea. Jaribu tena baadaye</translation>
 <translation id="379082410132524484">Muda wa matumizi wa kadi yako umekwisha</translation>
 <translation id="3792890930871100565">Kata muunganisho wa printa</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome haikupata programu hatari kwenye kompyuta yako • Ilikaguliwa siku moja iliyopita}other{Chrome haikupata programu hatari kwenye kompyuta yako • Ilikaguliwa siku {NUM_DAYS} zilizopita}}</translation>
@@ -3822,6 +3824,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" inataka kuunganisha kwenye mlango wa kuwekea vifaa</translation>
 <translation id="4944310289250773232">Huduma hii ya uthibitishaji imepangishwa na <ph name="SAML_DOMAIN" /></translation>
 <translation id="4945439665401275950">Ili uweke mipangilio ya alama ya kidole, mwambie mtoto wako aguse kitufe cha kuwasha/kuzima. Data ya alama ya kidole ya mtoto wako itahifadhiwa kwa usalama na itasalia kwenye <ph name="DEVICE_TYPE" /> hii.</translation>
+<translation id="4946459324029651239">Unapata ulinzi wa kawaida</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{faili}other{Faili #}}</translation>
 <translation id="495170559598752135">Vitendo</translation>
 <translation id="4953808748584563296">Ishara chaguomsingi ya rangi ya machungwa</translation>
@@ -4405,6 +4408,7 @@
 <translation id="5575528586625653441">Hitilafu imetokea kwenye onyesho la ombi la usajili.</translation>
 <translation id="557722062034137776">Kuweka upya kifaa chako hakutaathiri akaunti zako za Google au data yoyote iliyosawazishwa kwenye akaunti hizi. Hata hivyo, faili zote zilizohifadhiwa ndani ya kifaa chako zitafutwa.</translation>
 <translation id="5578059481725149024">Ingia katika akaunti kiotomatiki</translation>
+<translation id="5581134892342029705">Tafsiri katika <ph name="LANGUAGE" /> imekamilika</translation>
 <translation id="558170650521898289">Uthibitishaji wa Viendeshi vya Maunzi vya Microsoft Windows</translation>
 <translation id="5581972110672966454">Imeshindwa kuunganisha kifaa kwenye kikoa. Tafadhali jaribu tena au uwasiliane na mmiliki au msimamizi wa kifaa chako. Msimbo wa hitilafu: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menyu kuu</translation>
@@ -4909,6 +4913,7 @@
 <translation id="6112931163620622315">Angalia simu yako</translation>
 <translation id="6113434369102685411">Weka mtambo wako chaguomsingi wa kutafuta kwenye kivinjari cha Chrome na Kifungua Programu cha <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">Ili utumie Smart Lock, badilisha wasifu wa mtumiaji wa msingi kwenye simu yako</translation>
+<translation id="611684075852771314">Kumbukumbu hizi zimehifadhiwa katika sehemu ya Faili Zangu kama</translation>
 <translation id="6116921718742659598">Badilisha mipangilio ya lugha na uingizaji</translation>
 <translation id="6119927814891883061">Kipe kifaa jina la <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">Bana ukurasa huu kwenye skirini ya Kuanza...</translation>
@@ -5685,6 +5690,7 @@
 <translation id="6930036377490597025">Ufunguo wa usalama wa nje au kitambuzi kilichojumuishwa kwenye kompyuta</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Kiendelezi kimekataliwa}other{Viendelezi # vimekataliwa}}</translation>
 <translation id="6930321203306643451">Imemaliza kusasisha</translation>
+<translation id="6931690462168617033">Uthabiti wa mbofyo</translation>
 <translation id="6935286146439255109">Trei ya karatasi haipo</translation>
 <translation id="693807610556624488">Shughuli za kuandika zinazidi ukubwa wa juu wa sifa kwenye: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">Umehifadhi printa moja.</translation>
@@ -6802,6 +6808,7 @@
 <translation id="8054563304616131773">Tafadhali andika anwani sahihi ya barua pepe</translation>
 <translation id="8054883179223321715">Inapatikana kwa tovuti mahususi za video</translation>
 <translation id="8054921503121346576">Kibodi ya USB imeunganishwa</translation>
+<translation id="8057414620575339583">Sehemu ya Utafutaji ya Pembeni</translation>
 <translation id="8058655154417507695">Mwaka wa kuisha kwa muda wa matumizi</translation>
 <translation id="8058986560951482265">Siyo thabiti</translation>
 <translation id="8059417245945632445">Kagua vifaa</translation>
@@ -6816,6 +6823,7 @@
 <translation id="8064279191081105977">Kikundi cha <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Kidirisha cha Muunganisho</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Majibu unayoweza kuhisi</translation>
 <translation id="8071432093239591881">Chapisha kuwa picha</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Data ya programu inaweza kuwa data yoyote ambayo programu imehifadhi (kulingana na mipangilio ya msanidi programu), ikijumuisha data kama vile anwani, ujumbe na picha.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Nakala ya data iliyohifadhiwa haitahesabiwa katika mgawo wa nafasi ya Hifadhi ya mtoto wako.<ph name="END_PARAGRAPH2" />
@@ -6853,6 +6861,7 @@
 <translation id="81020759409809034">Sehemu kwenye kifaa</translation>
 <translation id="8102139037507939978">Ondoa Maelezo ya Kumtambulisha Mtu Binafsi kwenye system_logs.txt.</translation>
 <translation id="8104088837833760645">Pakua wasifu wa eSIM</translation>
+<translation id="8105368624971345109">Zima</translation>
 <translation id="8107015733319732394">Inasakinisha duka la Google Play kwenye <ph name="DEVICE_TYPE" />. Huenda hatua hii ikachukua dakika chache.</translation>
 <translation id="810728361871746125">Ubora wa skrini</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Hakuna vidakuzi vya mtu au kampuni nyingine}=1{Imezuia kidakuzi kimoja cha mtu au kampuni nyingine}other{Imezuia vidakuzi # vya mtu na kampuni nyingine}}</translation>
@@ -7227,6 +7236,7 @@
 <translation id="8528074251912154910">Ongeza lugha</translation>
 <translation id="8528962588711550376">Inaingia.</translation>
 <translation id="8529925957403338845">Muunganisho wa Mtandao wa Kusambaza Papo Hapo haujafaulu</translation>
+<translation id="8531701051932785007">Kipengele cha Kuvinjari Salama Kilichoboreshwa kimezimwa</translation>
 <translation id="8534656636775144800">Lo!  Hitilafu imetokea wakati wa kujaribu kujiunga na kikoa. Tafadhali jaribu tena.</translation>
 <translation id="8535005006684281994">URL ya </translation>
 <translation id="8536956381488731905">Itoe sauti unapobofya kitufe</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index aa6a0828..49e6499 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">இந்தக் கோப்புகளை</translation>
 <translation id="3788401245189148511">இது அணுக விரும்புபவை:</translation>
 <translation id="3789841737615482174">நிறுவுக</translation>
+<translation id="3790417903123637354">ஏதோ தவறாகிவிட்டது. பிறகு முயலவும்</translation>
 <translation id="379082410132524484">கார்டு காலாவதியாகிவிட்டது</translation>
 <translation id="3792890930871100565">பிரிண்டர்களைத் துண்டி</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{தீங்கிழைக்கும் மென்பொருளை உங்கள் கம்ப்யூட்டரில் Chrome கண்டறியவில்லை • சரிபார்க்கப்பட்டது: 1 நாளுக்கு முன்பு}other{தீங்கிழைக்கும் மென்பொருளை உங்கள் கம்ப்யூட்டரில் Chrome கண்டறியவில்லை • சரிபார்க்கப்பட்டது: {NUM_DAYS} நாட்களுக்கு முன்பு}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ஒரு சீரியல் போர்ட்டுடன் இணைக்க விரும்புகிறது</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> நிறுவனத்தின் மூலம் அடையாளச் சேவை ஹோஸ்ட் செய்யப்படுகிறது</translation>
 <translation id="4945439665401275950">கைரேகையை அமைக்க உங்கள் பிள்ளையிடம் பவர் பட்டனைத் தொடுமாறு கூறவும். உங்கள் பிள்ளையின் கைரேகைத் தரவு பாதுகாப்பாகச் சேமிக்கப்படுவதுடன் <ph name="DEVICE_TYPE" /> சாதனத்திலேயே இருக்கும்.</translation>
+<translation id="4946459324029651239">நிலையான பாதுகாப்பைப் பெறுவீர்கள்</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{ஒரு ஃபைலை}other{# கோப்புகளை}}</translation>
 <translation id="495170559598752135">செயல்கள்</translation>
 <translation id="4953808748584563296">இயல்பு ஆரஞ்சுநிற அவதார்</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">டெமோவுக்குப் பதிவு செய்யும் கோரிக்கையில் ஒரு சிக்கல் ஏற்பட்டது.</translation>
 <translation id="557722062034137776">உங்கள் சாதனத்தை மீட்டமைப்பதால் உங்கள் Google கணக்குகள் அல்லது இந்தக் கணக்குகளுடன் ஒத்திசைக்கப்படும் எந்த தரவையும் பாதிக்காது. எனினும்,  உங்கள் அக சாதனத்தில் சேமிக்கப்பட்ட எல்லா கோப்புகளும் நீக்கப்படும்.</translation>
 <translation id="5578059481725149024">தானாக உள்நுழை</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> மொழியில் மொழிபெயர்க்கப்பட்டது</translation>
 <translation id="558170650521898289">Microsoft Windows Hardware Driver Verification</translation>
 <translation id="5581972110672966454">சாதனத்தை டொமைனுடன் இணைக்க முடியவில்லை. மீண்டும் முயலவும் அல்லது உங்கள் சாதன உரிமையாளரையோ நிர்வாகியையோ தொடர்புகொள்ளவும். பிழைக் குறியீடு: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">முதன்மை மெனு</translation>
@@ -6807,6 +6810,7 @@
 <translation id="8054563304616131773">சரியான மின்னஞ்சல் முகவரியை உள்ளிடவும்</translation>
 <translation id="8054883179223321715">குறிப்பிட்ட வீடியோ தளங்களுக்குக் கிடைக்கும்</translation>
 <translation id="8054921503121346576">USB கீபோர்டு இணைக்கப்பட்டது</translation>
+<translation id="8057414620575339583">பக்கவாட்டுத் தேடல்</translation>
 <translation id="8058655154417507695">காலாவதியாகும் ஆண்டு</translation>
 <translation id="8058986560951482265">அதிர்கிறது</translation>
 <translation id="8059417245945632445">&amp;சாதனங்களை ஆய்வுசெய்</translation>
@@ -6858,6 +6862,7 @@
 <translation id="81020759409809034">சாதனச் சேமிப்பிடம்</translation>
 <translation id="8102139037507939978">system_logs.txt ஃபைலில் இருக்கும், தனிப்பட்ட ஒருவரை அடையாளம் காணக்கூடியத் தகவலைக் கோடிட்டு மறைக்கும்.</translation>
 <translation id="8104088837833760645">eSIM சுயவிவரத்தைப் பதிவிறக்குதல்</translation>
+<translation id="8105368624971345109">முடக்கு</translation>
 <translation id="8107015733319732394">உங்கள் <ph name="DEVICE_TYPE" /> இல் Google Play Storeரை நிறுவுகிறது. இதற்குச் சில நிமிடங்கள் ஆகலாம்.</translation>
 <translation id="810728361871746125">திரையின் தெளிவுத்திறன்</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{மூன்றாம் தரப்பின் குக்கீகள் எதுவும் இல்லை}=1{1 மூன்றாம் தரப்பின் குக்கீ தடுக்கப்பட்டுள்ளது}other{# மூன்றாம் தரப்பின் குக்கீகள் தடுக்கப்பட்டுள்ளன}}</translation>
@@ -7232,6 +7237,7 @@
 <translation id="8528074251912154910">மொழிகளைச் சேர்</translation>
 <translation id="8528962588711550376">உள்நுழைகிறீர்கள்.</translation>
 <translation id="8529925957403338845">'உடனடி இணைப்புமுறை' மூலம் இணைக்க முடியவில்லை</translation>
+<translation id="8531701051932785007">‘மேம்பட்ட பாதுகாப்பு உலாவல்’ அம்சம் முடக்கப்பட்டுள்ளது</translation>
 <translation id="8534656636775144800">அச்சச்சோ!  டொமைனில் சேர முயலும் போது, ஏதோ தவறாகிவிட்டது. மீண்டும் முயலவும்.</translation>
 <translation id="8535005006684281994">Netscape சான்றிதழ் புதுப்பிப்பு URL</translation>
 <translation id="8536956381488731905">விசை அழுத்தப்படும்போது ஒலியெழுப்பு</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index d1b8622312..2762114a 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">ప్రస్తుతం Linux పునరుద్ధరణ ప్రోగ్రెస్‌లో ఉంది</translation>
 <translation id="1244303850296295656">ఎక్స్‌టెన్షన్ ఎర్రర్</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" />‌ను ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు: ఇమేజ్ URL <ph name="HTTP_ERROR" /> ఎర్రర్ కోడ్‌ను అందించింది. దయచేసి మీ అడ్మినిస్ట్రేటర్‌ను సంప్రదించండి.</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న టాబ్లెట్</translation>
 <translation id="1251366534849411931">తెరిచి ఉన్న వంకర కలుపు ఉండాలి: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">దీని వలన సైట్‌లు, ఇన్‌స్టాల్ చేయబడిన యాప్‌లు స్టోర్ చేసిన <ph name="TOTAL_USAGE" /> డేటా తొలగిపోతుంది.</translation>
 <translation id="1251578593170406502">మొబైల్ డేటా నెట్‌వర్క్‌ల కోసం స్కాన్ చేస్తోంది...</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> ఎంచుకోబడింది/ఎంచుకోబడ్డాయి</translation>
 <translation id="1442851588227551435">యాక్టివ్ Kerberos టిక్కెట్‌ను సెట్ చేయండి</translation>
 <translation id="1444628761356461360">ఈ సెట్టింగ్‌ను పరికరం యజమాని అయిన <ph name="OWNER_EMAIL" /> నిర్వహిస్తున్నారు.</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న ఫోన్</translation>
 <translation id="144518587530125858">థీమ్ కోసం '<ph name="IMAGE_PATH" />'ను లోడ్ చేయడం సాధ్యపడలేదు.</translation>
 <translation id="1449191289887455076">కేటాయింపును నిర్ధారించి, <ph name="RESPONSE" /> కోసం "<ph name="CURRENTKEY" />"ని మళ్లీ నొక్కండి</translation>
 <translation id="1451375123200651445">వెబ్ పేజీ, ఒకే ఫైల్</translation>
@@ -871,7 +869,6 @@
 <translation id="1855079636134697549">కెమెరా ఆన్ చేయబడింది</translation>
 <translation id="1856715684130786728">స్థానాన్ని జోడించు...</translation>
 <translation id="1858585891038687145">సాఫ్ట్‌వేర్ రూపకర్తలను గుర్తించడం కోసం ఈ ప్రమాణపత్రాన్ని విశ్వసిస్తుంది</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న తెలియని పరికరం</translation>
 <translation id="1861262398884155592">ఈ ఫోల్డర్ ఖాళీగా ఉంది</translation>
 <translation id="1862311223300693744">మీరు ఏదైనా ప్రత్యేక VPN, ప్రాక్సీ, ఫైర్‌వాల్ లేదా NAS సాఫ్ట్‌వేర్‌ను
     ఇన్‌స్టాల్ చేశారా?</translation>
@@ -1247,7 +1244,6 @@
 <translation id="2242687258748107519">ఫైల్ సమాచారం</translation>
 <translation id="2246549592927364792">Google నుండి చిత్ర వివరణలను పొందాలా?</translation>
 <translation id="2247738527273549923">మీ పరికరం మీ సంస్థ ద్వారా మేనేజ్ చేయబడుతుంది.</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న గేమ్ కంట్రోలర్</translation>
 <translation id="2249111429176737533">ట్యాబ్ చేసిన విండో లాగా తెరువు</translation>
 <translation id="2249605167705922988">ఉదా. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">సిస్టమ్ వ్యూయర్‌తో తెరువు</translation>
@@ -2009,7 +2005,6 @@
 <translation id="3007771295016901659">ట్యాబ్ యొక్క నకిలీని రూపొందించు</translation>
 <translation id="3008232374986381779">మీ <ph name="DEVICE_TYPE" />లో Linux టూల్‌లు, ఎడిటర్‌లు, IDEలను రన్ చేయండి. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">అనుమతులను రీసెట్ చేయి</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న ఆడియో పరికరం</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> కోసం అప్‌డేట్‌ను డౌన్‌లోడ్ చేయడానికి మీరు ఈరోజే Wi-Fiకి కనెక్ట్ కావలసి ఉంటుంది. లేదా డేటా నియంత్రణ ఉన్న కనెక్షన్ నుండి డౌన్‌లోడ్ చేయండి (ఛార్జీలు వర్తించవచ్చు).}other{<ph name="MANAGER" /> కోసం అప్‌డేట్‌ను డౌన్‌లోడ్ చేయడానికి మీరు గడువు తేదీలోపు Wi-Fiకి కనెక్ట్ కావలసి ఉంటుంది. లేదా డేటా నియంత్రణ ఉన్న కనెక్షన్ నుండి డౌన్‌లోడ్ చేయండి (ఛార్జీలు వర్తించవచ్చు).}}</translation>
 <translation id="3009300415590184725">మొబైల్ డేటా సేవ సెటప్ ప్రాసెస్‌ను మీరు ఖచ్చితంగా రద్దు చేయాలనుకుంటున్నారా?</translation>
 <translation id="3009779501245596802">సూచికలోని డేటాబేస్‌లు</translation>
@@ -2315,7 +2310,6 @@
 <translation id="3348038390189153836">తొలగించగల పరికరం కనుగొనబడింది</translation>
 <translation id="3348131053948466246">సూచించిన ఎమోజి. నావిగేట్ చేయడానికి పైకి లేదా కిందకి నొక్కండి, జొప్పించడానికి 'Enter' నొక్కండి.</translation>
 <translation id="3349933790966648062">మెమరీ ఫుట్‌ప్రింట్</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> పరికరానికి పెయిర్ చేయడం సాధ్యపడలేదు; మళ్ళీ ట్రై చేయడానికి పరికరాన్ని ఎంచుకోండి</translation>
 <translation id="3355936511340229503">కనెక్షన్ ఎర్రర్</translation>
 <translation id="3356580349448036450">పూర్తయింది</translation>
 <translation id="3359256513598016054">సర్టిఫికెట్ విధాన పరిమితులు</translation>
@@ -2523,6 +2517,7 @@
 <translation id="3557101512409028104">Family Linkతో వెబ్‌సైట్ పరిమితులు &amp; పరికర వినియోగ వ్యవధిని సెట్ చేయండి</translation>
 <translation id="3559262020195162408">పరికరంలో విధానాన్ని ఇన్‌స్టాల్ చేయడంలో విఫలమైంది.</translation>
 <translation id="3559533181353831840">సుమారు <ph name="TIME_LEFT" /> మిగిలి ఉంది</translation>
+<translation id="3559697822483154494">స్ప్లిట్ స్క్రీన్, డెస్క్‌లను మార్చడం వంటి చర్యల కోసం వైబ్రేషన్ నిర్ధారణను అందుకోండి.</translation>
 <translation id="3560034655160545939">&amp;స్పెల్ చెక్</translation>
 <translation id="3562423906127931518">ఈ ప్రక్రియకు కొద్ది నిమిషాలు పట్టవచ్చు. Linux కంటెయినర్‌ని సెటప్ చేస్తోంది.</translation>
 <translation id="3562655211539199254">మీ ఫోన్ నుండి ఇటీవలి Chrome ట్యాబ్‌లను చూడండి</translation>
@@ -2747,6 +2742,7 @@
 <translation id="3788331399335602504">ఈ ఫైల్స్</translation>
 <translation id="3788401245189148511">ఇది వీటిని చేయాలనుకుంటోంది:</translation>
 <translation id="3789841737615482174">ఇన్‌స్టాల్ చేయి</translation>
+<translation id="3790417903123637354">ఏదో తప్పు జరిగింది. తర్వాత మళ్లీ ప్రయత్నించండి</translation>
 <translation id="379082410132524484">మీ కార్డ్ గడువు ముగిసింది</translation>
 <translation id="3792890930871100565">ముద్రకాలను డిస్‌కనెక్ట్ చేయి</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome మీ కంప్యూటర్‌లో హానికరమైన సాఫ్ట్‌వేర్‌ను కనుగొనలేదు • 1 రోజు క్రితం చెక్ చేయబడింది}other{Chrome మీ కంప్యూటర్‌లో హానికరమైన సాఫ్ట్‌వేర్‌ను కనుగొనలేదు • {NUM_DAYS} రోజుల క్రితం చెక్ చేయబడింది}}</translation>
@@ -3146,7 +3142,6 @@
 <translation id="4200689466366162458">అనుకూల పదాలు</translation>
 <translation id="4200983522494130825">కొత్త &amp;టాబ్</translation>
 <translation id="4201546031411513170">మీరు ఎప్పుడైనా సెట్టింగ్‌ల ద్వారా వేటిని సింక్ చేయాలో ఎంచుకోవచ్చు.</translation>
-<translation id="4202417625268941299">మెరుగైన సురక్షిత బ్రౌజింగ్, మీకు Chromeలో అత్యంత సురక్షితమైన సెక్యూరిటీని అందిస్తుంది</translation>
 <translation id="420283545744377356">స్క్రీన్ సేవర్‌ను ఆఫ్ చేయి</translation>
 <translation id="4206144641569145248">గ్రహాంతరవాసి</translation>
 <translation id="4206323443866416204">అభిప్రాయ రిపోర్ట్‌</translation>
@@ -3653,7 +3648,6 @@
 <translation id="4759238208242260848">డౌన్‌లోడ్‌లు</translation>
 <translation id="4761104368405085019">మీ మైక్రోఫోన్‌ను ఉపయోగించండి</translation>
 <translation id="4762718786438001384">పరికరంలో డిస్క్ స్థలం చాలా తక్కువగా ఉంది</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న కంప్యూటర్</translation>
 <translation id="4763408175235639573">మీరు ఈ పేజీని వీక్షించినప్పుడు కింది కుక్కీలు సెట్ చేయబడ్డాయి</translation>
 <translation id="4765582662863429759">మీ ఫోన్‌లో ఉన్న వచనాన్ని మీ Chromebookలో చూపడానికి Android సందేశాలుని అనుమతిస్తుంది</translation>
 <translation id="4768332406694066911">మిమ్మల్ని గుర్తించే ఈ సంస్థల నుండి మీకు ప్రమాణపత్రాలు ఉన్నాయి</translation>
@@ -4924,6 +4918,7 @@
 <translation id="6112931163620622315">మీ ఫోన్‌ని తనిఖీ చేయండి</translation>
 <translation id="6113434369102685411">Chrome బ్రౌజర్, <ph name="DEVICE_TYPE" /> లాంచర్ కోసం మీ ఆటోమేటిక్ సెర్చ్ ఇంజిన్‌ను సెట్ చేయండి</translation>
 <translation id="6113942107547980621">Smart Lockను ఉపయోగించడానికి, మీ ఫోన్‌లో ప్రాథమిక వినియోగదారు ప్రొఫైల్‌కు మారండి</translation>
+<translation id="611684075852771314">ఈ లాగ్‌లు నా ఫైళ్లు అనే ఫోల్డర్‌లో సేవ్ చేయబడ్డాయి</translation>
 <translation id="6116921718742659598">భాష మరియు ఇన్‌పుట్ సెట్టింగ్‌లను మార్చండి</translation>
 <translation id="6119927814891883061">పరికరానికి <ph name="DEVICE_NAME" /> అని పేరు పెట్టండి</translation>
 <translation id="6120205520491252677">ప్రారంభ స్క్రీన్‌కు ఈ పేజీని పిన్ చేయి...</translation>
@@ -5700,6 +5695,7 @@
 <translation id="6930036377490597025">బహిర్గత సెక్యూరిటీ కీ లేదా అంతర్నిర్మిత సెన్సార్</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{ఒక ఎక్స్‌టెన్షన్ తిరస్కారించబడింది}other{# ఎక్స్‌టెన్షన్‌లు తిరస్కారించబడ్డాయి}}</translation>
 <translation id="6930321203306643451">అప్‌గ్రేడ్ పూర్తయింది</translation>
+<translation id="6931690462168617033">సామర్థ్యం అనే ఆప్షన్‌ను క్లిక్ చేయండి</translation>
 <translation id="6935286146439255109">పేపర్ ట్రే అందించలేదు</translation>
 <translation id="693807610556624488">వ్రాసే చర్య దీనికి సంబంధించిన లక్షణం గరిష్ట పొడవును మించిపోయింది: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">మీరు సేవ్ చేయబడిన 1 ప్రింటర్‌ను కలిగి ఉన్నారు.</translation>
@@ -5833,7 +5829,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{భద్రతా తనిఖీ జరిగి 1 నిమిషం అయింది}other{భద్రతా తనిఖీ జరిగి {NUM_MINS} నిమిషాలు అయింది}}</translation>
 <translation id="7057767408836081338">యాప్ డేటాను పొందడంలో సమస్య ఉంది, యాప్‌ను రన్ చేయడానికి ప్రయత్నిస్తోంది...</translation>
 <translation id="7058024590501568315">దాచబడిన నెట్‌వర్క్</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న మౌస్</translation>
 <translation id="7059858479264779982">స్వీయ-ప్రారంభానికి సెట్ చేయి</translation>
 <translation id="7062222374113411376">డేటాను పంపడం మరియు స్వీకరించడం పూర్తి చేయడానికి ఇటీవల మూసివేసిన సైట్‌లను అనుమతించు (సిఫార్సు చేయబడింది)</translation>
 <translation id="7063129466199351735">షార్ట్‌కట్‌లను ప్రాసెస్ చేస్తోంది...</translation>
@@ -5997,7 +5992,6 @@
 <translation id="7257173066616499747">Wi-Fi నెట్‌వర్క్‌లు</translation>
 <translation id="725758059478686223">ముద్రణ సేవ</translation>
 <translation id="7257666756905341374">మీరు కాపీ చేసి అతికించే డేటాను చదవడం</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న వీడియో కెమెరా</translation>
 <translation id="7258192266780953209">పరివర్తనాలు</translation>
 <translation id="7258225044283673131">అప్లికేషన్ స్పందించడం లేదు. యాప్‌ను మూసివేయడానికి "బలవంతంగా మూసివేయి" ఎంచుకోండి.</translation>
 <translation id="7262004276116528033">ఈ సైన్-ఇన్ సేవను <ph name="SAML_DOMAIN" /> హోస్ట్ చేస్తోంది</translation>
@@ -6790,7 +6784,6 @@
 <translation id="8037117027592400564">సంశ్లేషణ ప్రసంగాన్ని ఉపయోగించి మాట్లాడిన మొత్తం వచనాన్ని చదవడం</translation>
 <translation id="8037357227543935929">అడగాలి (డిఫాల్ట్)</translation>
 <translation id="803771048473350947">ఫైల్</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" /> పరికరం, <ph name="DEVICE_NAME" /> అనే పేరుతో ఉన్న కీబోర్డ్</translation>
 <translation id="8041089156583427627">ప్రతిస్పందనను పంపండి</translation>
 <translation id="8042142357103597104">వచన అపారదర్శకత</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> స్పందించడం లేదు.</translation>
@@ -6829,6 +6822,7 @@
 <translation id="8064279191081105977">గ్రూప్ <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">కనెక్షన్ డైలాగ్</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">స్పర్శ ప్రతిస్పందన</translation>
 <translation id="8071432093239591881">చిత్రం లాగా ముద్రించు</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />పరిచయాలు, మెసేజ్‌లు మరియు ఫోటోల వంటి యాప్ సేవ్ చేసిన (డెవలపర్ సెట్టింగ్‌ల ఆధారంగా) ఎలాంటి డేటా అయినా యాప్ డేటాగా పరిగణించబడుతుంది.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />బ్యాకప్ డేటా మీ చిన్నారి డిస్క్ నిల్వ కోటాలో లెక్కించబడదు.<ph name="END_PARAGRAPH2" />
@@ -6866,6 +6860,7 @@
 <translation id="81020759409809034">స్థానిక లొకేషన్</translation>
 <translation id="8102139037507939978">system_logs.txt నుండి వ్యక్తిగతంగా గుర్తించగలిగే సమాచారాన్ని తొలగించండి.</translation>
 <translation id="8104088837833760645">eSIM ప్రొఫైల్‌ను డౌన్‌లోడ్ చేయండి</translation>
+<translation id="8105368624971345109">ఆఫ్ చేయి</translation>
 <translation id="8107015733319732394">మీ <ph name="DEVICE_TYPE" />లో Google Play Storeను ఇన్‌స్టాల్ చేస్తోంది. ఇందుకు కొన్ని నిమిషాలు పట్టవచ్చు.</translation>
 <translation id="810728361871746125">డిస్‌ప్లే రిజల్యూషన్</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{మూడవ పక్షం కుక్కీలు లేవు}=1{మూడవ పక్షానికి సంబంధించిన 1 కుక్కీ బ్లాక్ చేయబడింది}other{మూడవ పక్షానికి సంబంధించిన # కుక్కీలు బ్లాక్ చేయబడ్డాయి}}</translation>
@@ -6930,7 +6925,6 @@
 <translation id="8168071266284693455">మీ బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌లు హిస్టరీ, మరెన్నో మీ అన్ని పరికరాల్లో సింక్ చేయబడ్డాయి</translation>
 <translation id="8168435359814927499">కంటెంట్</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{చదవాల్సిన లిస్ట్‌కు ట్యాబ్‌ను జోడించండి}other{చదవాల్సిన లిస్ట్‌కు ట్యాబ్‌లను జోడించండి}}</translation>
-<translation id="8169849063724750395">మళ్లీ ఆన్ చేయండి</translation>
 <translation id="8171334254070436367">అన్ని కార్డ్‌లను దాచు</translation>
 <translation id="8174047975335711832">పరికర సమాచారం</translation>
 <translation id="8174876712881364124">Google డిస్క్‌కు బ్యాకప్ చేయండి. ఏ సమయంలో అయినా సులభంగా డేటాని పునరుద్ధరించండి లేదా పరికరాన్ని మార్చండి. ఈ బ్యాకప్‌లో యాప్ డేటా ఉంటుంది. బ్యాకప్‌లు Googleకి అప్‌లోడ్ చేయబడతాయి మరియు మీ చిన్నారి Google ఖాతా పాస్‌వర్డ్‌ని ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation>
@@ -7004,7 +6998,6 @@
 <translation id="8249615410597138718">మీ పరికరాలకు పంపండి</translation>
 <translation id="8249672078237421304">మీరు చదివే భాషలో లేని పేజీలను అనువదించే సౌలభ్యం</translation>
 <translation id="8251441930213048644">ఇప్పుడు రిఫ్రెష్ చేయి</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" />కు పెయిర్ అవుతోంది</translation>
 <translation id="8251578425305135684">థంబ్‌నెయిల్‌ తొలగించబడింది.</translation>
 <translation id="825238165904109940">ఎల్లప్పుడూ పూర్తి URLలను చూపించు</translation>
 <translation id="8252569384384439529">అప్‌లోడ్ చేస్తోంది...</translation>
@@ -7246,7 +7239,6 @@
 <translation id="8534656636775144800">అయ్యో!  డొమైన్‌‌ను చేర్చడానికి ప్రయత్నిస్తున్నప్పుడు ఏదో తప్పు జరిగింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="8535005006684281994">Netscape సర్టిఫికెట్ పునరుద్ధరణ URL</translation>
 <translation id="8536956381488731905">కీని నొక్కినప్పుడు ధ్వని</translation>
-<translation id="8538718737588735385">మళ్లీ ఆన్ చేయండి</translation>
 <translation id="8539727552378197395">లేదు (Httpమాత్రమే)</translation>
 <translation id="8539766201049804895">అప్‌గ్రేడ్ చేయి</translation>
 <translation id="8540136935098276800">సరిగ్గా ఫార్మాట్ చేసిన URLను ఎంటర్ చేయండి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 879a6de..58f648a 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">กำลังดำเนินการคืนค่า Linux</translation>
 <translation id="1244303850296295656">ข้อผิดพลาดของส่วนขยาย</translation>
 <translation id="1246863218384630739">ไม่สามารถติดตั้ง <ph name="VM_NAME" />: URL ของรูปภาพแสดงรหัสข้อผิดพลาด <ph name="HTTP_ERROR" /> โปรดติดต่อผู้ดูแลระบบ</translation>
-<translation id="1247071602516579380">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, แท็บเล็ตชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">เครื่องหมายวงเล็บปีกกาเปิดที่ต้องมี: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">การดำเนินการนี้จะล้างข้อมูลที่เว็บไซต์และแอปต่างๆ จัดเก็บไว้รวมทั้งสิ้น <ph name="TOTAL_USAGE" /></translation>
 <translation id="1251578593170406502">กำลังสแกนหาเครือข่ายอินเทอร์เน็ตมือถือ...</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837">เลือกไว้ <ph name="NUMBER_OF_ITEMS_SELECTED" /> รายการ</translation>
 <translation id="1442851588227551435">ตั้งค่าตั๋ว Kerberos ที่ใช้งานอยู่</translation>
 <translation id="1444628761356461360"><ph name="OWNER_EMAIL" /> ซึ่งเป็นเจ้าของอุปกรณ์เป็นผู้จัดการการตั้งค่านี้</translation>
-<translation id="1445005312224723356">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, โทรศัพท์ชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">ไม่สามารถโหลดธีมจาก "<ph name="IMAGE_PATH" />"</translation>
 <translation id="1449191289887455076">กด "<ph name="CURRENTKEY" />" อีกครั้งเพื่อยืนยันการกำหนดและ<ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">หน้าเว็บ ไฟล์เดียว</translation>
@@ -861,7 +859,6 @@
 <translation id="1855079636134697549">กล้องเปิดอยู่</translation>
 <translation id="1856715684130786728">เพิ่มตำแหน่ง...</translation>
 <translation id="1858585891038687145">เชื่อถือใบรับรองนี้ในการระบุตัวตนผู้ผลิตซอฟต์แวร์</translation>
-<translation id="1859787252990099899">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, อุปกรณ์ที่ไม่รู้จักชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">โฟลเดอร์นี้ว่างเปล่า</translation>
 <translation id="1862311223300693744">คุณได้ติดตั้ง VPN, พร็อกซี, ไฟร์วอลล์ หรือซอฟต์แวร์ NAS พิเศษไว้ไหม</translation>
 <translation id="1863182668524159459">ไม่พบพอร์ตอนุกรม</translation>
@@ -1235,7 +1232,6 @@
 <translation id="2242687258748107519">ข้อมูลไฟล์</translation>
 <translation id="2246549592927364792">รับคำอธิบายรูปภาพจาก Google ไหม</translation>
 <translation id="2247738527273549923">อุปกรณ์นี้จัดการโดยองค์กรของคุณ</translation>
-<translation id="2249061317998743208">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, อุปกรณ์ควบคุมเกมชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">เปิดเป็นหน้าต่างแท็บ</translation>
 <translation id="2249605167705922988">เช่น 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">เปิดด้วยเครื่องมือดูระบบ</translation>
@@ -1994,7 +1990,6 @@
 <translation id="3007771295016901659">ทำซ้ำแท็บ</translation>
 <translation id="3008232374986381779">เรียกใช้เครื่องมือ ตัวแก้ไข และ IDE ของ Linux ใน <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">รีเซ็ตสิทธิ์</translation>
-<translation id="3008396025115884998">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, อุปกรณ์เสียงชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> กำหนดให้คุณเชื่อมต่อ Wi-Fi วันนี้เพื่อดาวน์โหลดอัปเดต หรือดาวน์โหลดจากการเชื่อมต่อที่มีการวัดปริมาณอินเทอร์เน็ต (อาจมีค่าบริการ)}other{<ph name="MANAGER" /> กำหนดให้คุณเชื่อมต่อ Wi-Fi และดาวน์โหลดอัปเดตก่อนเวลาที่กำหนด หรือดาวน์โหลดจากการเชื่อมต่อที่มีการวัดปริมาณอินเทอร์เน็ต (อาจมีค่าบริการ)}}</translation>
 <translation id="3009300415590184725">คุณแน่ใจหรือไม่ว่าต้องการยกเลิกขั้นตอนการตั้งค่าบริการข้อมูลโทรศัพท์มือถือ</translation>
 <translation id="3009779501245596802">ฐานข้อมูลที่มีการจัดทำดัชนี</translation>
@@ -2300,7 +2295,6 @@
 <translation id="3348038390189153836">พบอุปกรณ์แบบถอดออกได้</translation>
 <translation id="3348131053948466246">มีการแนะนำอีโมจิ กดขึ้นหรือลงเพื่อไปยังอีโมจิที่ต้องการแล้วกด Enter เพื่อแทรก</translation>
 <translation id="3349933790966648062">หน่วยความจำที่ใช้</translation>
-<translation id="3354972872297836698">จับคู่กับอุปกรณ์ <ph name="DEVICE_NAME" /> ไม่ได้ เลือกอุปกรณ์เพื่อลองอีกครั้ง</translation>
 <translation id="3355936511340229503">ข้อผิดพลาดในการเชื่อมต่อ</translation>
 <translation id="3356580349448036450">เสร็จสมบูรณ์</translation>
 <translation id="3359256513598016054">ข้อจำกัดนโยบายใบรับรอง</translation>
@@ -2508,6 +2502,7 @@
 <translation id="3557101512409028104">ตั้งค่าการจำกัดเว็บไซต์และจำกัดเวลาอยู่หน้าจอด้วย Family Link</translation>
 <translation id="3559262020195162408">ติดตั้งนโยบายในอุปกรณ์นี้ไม่สำเร็จ</translation>
 <translation id="3559533181353831840">ใช้เวลาอีก <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">รับการสั่นยืนยันสำหรับการดำเนินการอย่างเช่นการแบ่งหน้าจอและการสลับเดสก์</translation>
 <translation id="3560034655160545939">&amp;ตรวจตัวสะกด</translation>
 <translation id="3562423906127931518">ขั้นตอนนี้อาจใช้เวลาสักครู่ กำลังตั้งค่าคอนเทนเนอร์ Linux</translation>
 <translation id="3562655211539199254">ดูแท็บ Chrome ล่าสุดจากโทรศัพท์ของคุณ</translation>
@@ -2732,6 +2727,7 @@
 <translation id="3788331399335602504">ไฟล์เหล่านี้</translation>
 <translation id="3788401245189148511">ส่วนขยายต้องการจะ:</translation>
 <translation id="3789841737615482174">ติดตั้ง</translation>
+<translation id="3790417903123637354">เกิดข้อผิดพลาด ลองอีกครั้งภายหลัง</translation>
 <translation id="379082410132524484">บัตรของคุณหมดอายุแล้ว</translation>
 <translation id="3792890930871100565">ยกเลิกการเชื่อมต่อเครื่องพิมพ์</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome ไม่พบซอฟต์แวร์ที่เป็นอันตรายในคอมพิวเตอร์ของคุณ • ตรวจสอบเมื่อ 1 วันที่ผ่านมา}other{Chrome ไม่พบซอฟต์แวร์ที่เป็นอันตรายในคอมพิวเตอร์ของคุณ • ตรวจสอบเมื่อ {NUM_DAYS} วันที่ผ่านมา}}</translation>
@@ -3131,7 +3127,6 @@
 <translation id="4200689466366162458">คำที่กำหนดเอง</translation>
 <translation id="4200983522494130825">แ&amp;ท็บใหม่</translation>
 <translation id="4201546031411513170">คุณเลือกสิ่งที่ต้องการซิงค์ได้เสมอในการตั้งค่า</translation>
-<translation id="4202417625268941299">เมื่อเปิดใช้ Google Safe Browsing เวอร์ชันปรับปรุง คุณจะได้รับการรักษาความปลอดภัยที่เข้มงวดที่สุดของ Chrome</translation>
 <translation id="420283545744377356">ปิดโปรแกรมรักษาหน้าจอ</translation>
 <translation id="4206144641569145248">มนุษย์ต่างดาว</translation>
 <translation id="4206323443866416204">รายงานความคิดเห็น</translation>
@@ -3637,7 +3632,6 @@
 <translation id="4759238208242260848">ดาวน์โหลด</translation>
 <translation id="4761104368405085019">ใช้ไมโครโฟนของคุณ</translation>
 <translation id="4762718786438001384">พื้นที่ดิสก์ของอุปกรณ์ใกล้จะเต็มแล้ว</translation>
-<translation id="4762898026821161650">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, คอมพิวเตอร์ชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">มีการวางคุกกี้ต่อไปนี้เมื่อคุณดูหน้าเว็บนี้</translation>
 <translation id="4765582662863429759">อนุญาตให้ Android Messages นำส่งข้อความจากโทรศัพท์ไปยัง Chromebook ของคุณ</translation>
 <translation id="4768332406694066911">คุณมีใบรับรองจากองค์กรเหล่านี้ซึ่งระบุถึงตัวคุณ</translation>
@@ -4908,6 +4902,7 @@
 <translation id="6112931163620622315">ตรวจสอบโทรศัพท์</translation>
 <translation id="6113434369102685411">ตั้งค่าเครื่องมือค้นหาเริ่มต้นสำหรับเบราว์เซอร์ Chrome และ Launcher ของ <ph name="DEVICE_TYPE" /></translation>
 <translation id="6113942107547980621">โปรดเปลี่ยนเป็นโปรไฟล์ผู้ใช้หลักในโทรศัพท์เพื่อใช้ Smart Lock</translation>
+<translation id="611684075852771314">บันทึกเหล่านี้บันทึกไว้ใน "ไฟล์ของฉัน" เป็น</translation>
 <translation id="6116921718742659598">เปลี่ยนการตั้งค่าภาษาและการป้อนข้อมูล</translation>
 <translation id="6119927814891883061">ตั้งชื่ออุปกรณ์ว่า <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">ตรึงหน้าเว็บนี้ไว้ที่หน้าจอเริ่ม...</translation>
@@ -5684,6 +5679,7 @@
 <translation id="6930036377490597025">คีย์ความปลอดภัยภายนอกหรือเซ็นเซอร์ในตัว</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{ส่วนขยาย 1 รายการถูกปฏิเสธ}other{ส่วนขยาย # รายการถูกปฏิเสธ}}</translation>
 <translation id="6930321203306643451">อัปเกรดเสร็จสมบูรณ์</translation>
+<translation id="6931690462168617033">ความแรงในการคลิก</translation>
 <translation id="6935286146439255109">ไม่มีถาดกระดาษ</translation>
 <translation id="693807610556624488">การเขียนไปยังอุปกรณ์ต่อไปนี้เกินขีดจำกัดความยาวสูงสุดของแอตทริบิวต์: "<ph name="DEVICE_NAME" />"</translation>
 <translation id="6938386202199793006">คุณมีเครื่องพิมพ์ที่บันทึกไว้ 1 เครื่อง</translation>
@@ -5817,7 +5813,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{เรียกใช้การตรวจสอบความปลอดภัยเมื่อ 1 นาทีที่ผ่านมา}other{เรียกใช้การตรวจสอบความปลอดภัยเมื่อ {NUM_MINS} นาทีที่ผ่านมา}}</translation>
 <translation id="7057767408836081338">รับข้อมูลแอปไม่สำเร็จ ยังพยายามเรียกใช้แอปอยู่...</translation>
 <translation id="7058024590501568315">เครือข่ายที่ซ่อนอยู่</translation>
-<translation id="70582545822664495">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, เมาส์ชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">ตั้งค่าเป็นเรียกใช้อัตโนมัติ</translation>
 <translation id="7062222374113411376">อนุญาตให้เว็บไซต์ที่ปิดล่าสุดดำเนินการส่งและรับข้อมูลต่อจนเสร็จ (แนะนำ)</translation>
 <translation id="7063129466199351735">กำลังประมวลผลทางลัด...</translation>
@@ -5981,7 +5976,6 @@
 <translation id="7257173066616499747">เครือข่าย Wi-Fi</translation>
 <translation id="725758059478686223">บริการการพิมพ์</translation>
 <translation id="7257666756905341374">อ่านข้อมูลที่คุณคัดลอกและวาง</translation>
-<translation id="7258006747130724016">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, กล้องวิดีโอชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Transformations</translation>
 <translation id="7258225044283673131">แอปพลิเคชันไม่ตอบสนอง เลือก "บังคับปิด" เพื่อปิดแอป</translation>
 <translation id="7262004276116528033">บริการลงชื่อเข้าใช้นี้โฮสต์โดย <ph name="SAML_DOMAIN" /></translation>
@@ -6776,7 +6770,6 @@
 <translation id="8037117027592400564">อ่านข้อความทั้งหมดที่พูดโดยใช้เสียงสังเคราะห์</translation>
 <translation id="8037357227543935929">ขอ (ค่าเริ่มต้น)</translation>
 <translation id="803771048473350947">ไฟล์</translation>
-<translation id="8038399858950372766">อุปกรณ์ที่ <ph name="DEVICE_INDEX" /> จาก <ph name="DEVICE_COUNT" />, แป้นพิมพ์ชื่อ <ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">ส่งความคิดเห็น</translation>
 <translation id="8042142357103597104">ความทึบแสงของข้อความ</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> ไม่ตอบสนอง</translation>
@@ -6815,6 +6808,7 @@
 <translation id="8064279191081105977">กลุ่ม <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">กล่องโต้ตอบการเชื่อมต่อ</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">การตอบสนองแบบรู้สึกได้</translation>
 <translation id="8071432093239591881">พิมพ์เป็นรูปภาพ</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />ข้อมูลแอปอาจเป็นข้อมูลใดก็ตามที่แอปบันทึกไว้ (โดยอิงตามการตั้งค่าของนักพัฒนาซอฟต์แวร์) ซึ่งรวมถึงข้อมูลอย่างเช่น รายชื่อติดต่อ ข้อความ และรูปภาพ<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />ข้อมูลสำรองจะไม่นับรวมในโควต้าพื้นที่เก็บข้อมูล Google ไดรฟ์ของบุตรหลาน<ph name="END_PARAGRAPH2" />
@@ -6852,6 +6846,7 @@
 <translation id="81020759409809034">ตำแหน่งในเครื่อง</translation>
 <translation id="8102139037507939978">นำข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ออกจาก system_logs.txt</translation>
 <translation id="8104088837833760645">ดาวน์โหลดโปรไฟล์ eSIM</translation>
+<translation id="8105368624971345109">ปิด</translation>
 <translation id="8107015733319732394">กำลังติดตั้ง Google Play Store ใน <ph name="DEVICE_TYPE" /> อาจใช้เวลาสักครู่</translation>
 <translation id="810728361871746125">ความละเอียดของจอแสดงผล</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{ไม่มีคุกกี้ของบุคคลที่สาม}=1{บล็อกคุกกี้ของบุคคลที่สามไว้ 1 รายการ}other{บล็อกคุกกี้ของบุคคลที่สามไว้ # รายการ}}</translation>
@@ -6916,7 +6911,6 @@
 <translation id="8168071266284693455">ซิงค์บุ๊กมาร์ก รหัสผ่าน ประวัติการเข้าชม และอื่นๆ ในอุปกรณ์ทุกเครื่องแล้ว</translation>
 <translation id="8168435359814927499">เนื้อหา</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{เพิ่มแท็บไปยังเรื่องรออ่าน}other{เพิ่มหลายแท็บไปยังเรื่องรออ่าน}}</translation>
-<translation id="8169849063724750395">เปิดอีกครั้ง</translation>
 <translation id="8171334254070436367">ซ่อนการ์ดทั้งหมด</translation>
 <translation id="8174047975335711832">ข้อมูลอุปกรณ์</translation>
 <translation id="8174876712881364124">สำรองข้อมูลไปยัง Google ไดรฟ์ กู้ข้อมูลคืนหรือเปลี่ยนอุปกรณ์ได้ง่ายๆ ทุกเมื่อ ข้อมูลสำรองนี้จะรวมถึงข้อมูลแอป ระบบจะอัปโหลดข้อมูลสำรองไปยัง Google และเข้ารหัสโดยใช้รหัสผ่านบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation>
@@ -6990,7 +6984,6 @@
 <translation id="8249615410597138718">ส่งไปยังอุปกรณ์</translation>
 <translation id="8249672078237421304">เสนอให้แปลหน้าที่ไม่ได้อยู่ในภาษาที่คุณอ่านได้</translation>
 <translation id="8251441930213048644">รีเฟรชเลย</translation>
-<translation id="8251509999076836464">กำลังจับคู่กับ <ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">รูปภาพขนาดย่อถูกลบแล้ว</translation>
 <translation id="825238165904109940">แสดง URL แบบเต็มเสมอ</translation>
 <translation id="8252569384384439529">กำลังอัปโหลด...</translation>
@@ -7232,7 +7225,6 @@
 <translation id="8534656636775144800">อ๊ะ! เกิดข้อผิดพลาดขณะพยายามเข้าร่วมโดเมน โปรดลองอีกครั้ง</translation>
 <translation id="8535005006684281994">URL การต่ออายุใบรับรองของ Netscape</translation>
 <translation id="8536956381488731905">ส่งเสียงเมื่อกดปุ่ม</translation>
-<translation id="8538718737588735385">เปิดอีกครั้ง</translation>
 <translation id="8539727552378197395">ไม่มี (HttpOnly)</translation>
 <translation id="8539766201049804895">อัปเกรด</translation>
 <translation id="8540136935098276800">ป้อน URL ที่มีรูปแบบที่ถูกต้อง</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 013db17..be49dfd7 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -2501,6 +2501,7 @@
 <translation id="3557101512409028104">Family Link ile web sitesi kısıtlamaları ve ekran süresi sınırlamaları ayarlayın</translation>
 <translation id="3559262020195162408">Politika cihaza yüklenemedi.</translation>
 <translation id="3559533181353831840">Yaklaşık <ph name="TIME_LEFT" /> kaldı</translation>
+<translation id="3559697822483154494">Bölünmüş ekran ve masa değiştirme gibi işlemler için titreşim onayı alın.</translation>
 <translation id="3560034655160545939">&amp;Yazım denetimi</translation>
 <translation id="3562423906127931518">Bu işlem birkaç dakika sürebilir. Linux kapsayıcısı kuruluyor.</translation>
 <translation id="3562655211539199254">Son Chrome sekmelerini telefonunuzda görüntüleyin</translation>
@@ -2725,6 +2726,7 @@
 <translation id="3788331399335602504">bu dosyalar</translation>
 <translation id="3788401245189148511">Şunları yapabilecek:</translation>
 <translation id="3789841737615482174">Yükle</translation>
+<translation id="3790417903123637354">Bir sorun oldu. Daha sonra tekrar deneyin</translation>
 <translation id="379082410132524484">Kartınızın süresi doldu</translation>
 <translation id="3792890930871100565">Yazıcıların bağlantısını kes</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome, bilgisayarınızda zararlı yazılım bulamadı • 1 gün önce kontrol edildi}other{Chrome, bilgisayarınızda zararlı yazılım bulamadı • {NUM_DAYS} gün önce kontrol edildi}}</translation>
@@ -3810,6 +3812,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" bir seri bağlantı noktasına bağlanmak istiyor</translation>
 <translation id="4944310289250773232">Bu kimlik doğrulama hizmeti <ph name="SAML_DOMAIN" /> tarafından barındırılıyor.</translation>
 <translation id="4945439665401275950">Parmak izini ayarlamak için çocuğunuzun güç düğmesine dokunması gerekir. Çocuğunuzun parmak izi verileri güvenli bir şekilde depolanır ve her zaman <ph name="DEVICE_TYPE" /> cihazınızda tutulur.</translation>
+<translation id="4946459324029651239">Standart koruma kullanıyorsunuz</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{bir dosya}other{# dosya}}</translation>
 <translation id="495170559598752135">İşlemler</translation>
 <translation id="4953808748584563296">Varsayılan turuncu avatar</translation>
@@ -4393,6 +4396,7 @@
 <translation id="5575528586625653441">Demo kayıt isteğiyle ilgili bir sorun oluştu.</translation>
 <translation id="557722062034137776">Cihazınızı sıfırlamak Google hesaplarınızı veya o hesaplarla senkronize edilmiş verileri etkilemez. Ancak yerel olarak cihazınıza kaydedilmiş tüm dosyalar silinir.</translation>
 <translation id="5578059481725149024">Otomatik oturum aç</translation>
+<translation id="5581134892342029705"><ph name="LANGUAGE" /> diline çeviri tamamlandı</translation>
 <translation id="558170650521898289">Microsoft Windows Donanım Sürücüsü Doğrulaması</translation>
 <translation id="5581972110672966454">Cihaz, alan adına eklenemiyor. Lütfen tekrar deneyin veya cihaz sahibi ya da yöneticisiyle iletişime geçin. Hata kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Ana menü</translation>
@@ -4898,6 +4902,7 @@
 <translation id="6112931163620622315">Telefonunuzu kontrol edin</translation>
 <translation id="6113434369102685411">Chrome tarayıcı ve <ph name="DEVICE_TYPE" /> Başlatıcı için varsayılan arama motorunuzu ayarlayın</translation>
 <translation id="6113942107547980621">Smart Lock'u kullanmak için telefonunuzda birincil kullanıcı profiline geçin.</translation>
+<translation id="611684075852771314">Bu günlükler Dosyalarım'a şu şekilde kaydedilmiş:</translation>
 <translation id="6116921718742659598">Dil ve giriş ayarlarını değiştir</translation>
 <translation id="6119927814891883061">Cihazı <ph name="DEVICE_NAME" /> olarak adlandır</translation>
 <translation id="6120205520491252677">Bu sayfayı Başlangıç ekranına sabitle...</translation>
@@ -5674,6 +5679,7 @@
 <translation id="6930036377490597025">Harici güvenlik anahtarı veya yerleşik sensör</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Bir uzantı reddedildi}other{# uzantı reddedildi}}</translation>
 <translation id="6930321203306643451">Yeni sürüme geçme işlemi tamamlandı</translation>
+<translation id="6931690462168617033">Tıklama gücü</translation>
 <translation id="6935286146439255109">Kağıt tepsisi yok</translation>
 <translation id="693807610556624488">Yazma işlemi şu cihaz için maksimum özellik uzunluğunu aşıyor: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6938386202199793006">Kaydedilmiş 1 yazıcınız var.</translation>
@@ -6787,6 +6793,7 @@
 <translation id="8054563304616131773">Lütfen geçerli bir e-posta adresi girin</translation>
 <translation id="8054883179223321715">Belirli video sitelerinde kullanılabilir</translation>
 <translation id="8054921503121346576">USB klavyesi bağlandı</translation>
+<translation id="8057414620575339583">Yan Arama</translation>
 <translation id="8058655154417507695">Son kullanım tarihinin yılı</translation>
 <translation id="8058986560951482265">Titriyor</translation>
 <translation id="8059417245945632445">&amp;Cihazları denetle</translation>
@@ -6801,6 +6808,7 @@
 <translation id="8064279191081105977"><ph name="GROUP_NAME" /> grubu - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">Bağlantı İletişim Kutusu</translation>
 <translation id="8069615408251337349">Google Cloud Print</translation>
+<translation id="8070662218171013510">Dokunsal geribildirim</translation>
 <translation id="8071432093239591881">Resim olarak yazdır</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />Uygulama verileri, bir uygulamanın kaydettiği her tür veri olabilir (geliştirici ayarlarına bağlıdır) ve bu veriler arasında kişiler, iletiler ve fotoğraflar gibi veriler de bulunabilir.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Yedeklenen veriler çocuğunuzun Drive Depolama Alanı kotasından düşülmez.<ph name="END_PARAGRAPH2" />
@@ -6838,6 +6846,7 @@
 <translation id="81020759409809034">Yerel Konum</translation>
 <translation id="8102139037507939978">Kimliği Tanımlayabilecek Bilgiler'i system_logs.txt dosyasından çıkar.</translation>
 <translation id="8104088837833760645">eSIM profili indir</translation>
+<translation id="8105368624971345109">Kapat</translation>
 <translation id="8107015733319732394">Google Play Store <ph name="DEVICE_TYPE" /> cihazınıza yükleniyor. Bu işlem birkaç dakika sürebilir.</translation>
 <translation id="810728361871746125">Ekran çözünürlüğü</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Üçüncü taraf çerez yok}=1{1 üçüncü taraf çerez engellendi}other{# üçüncü taraf çerez engellendi}}</translation>
@@ -7212,6 +7221,7 @@
 <translation id="8528074251912154910">Dil ekle</translation>
 <translation id="8528962588711550376">Oturum açılıyor.</translation>
 <translation id="8529925957403338845">Anında Tethering bağlantısı kurulamadı</translation>
+<translation id="8531701051932785007">Gelişmiş Güvenli Tarama kapalı</translation>
 <translation id="8534656636775144800">Tüh! Alan adına eklenirken bir şeyler ters gitti. Lütfen tekrar deneyin.</translation>
 <translation id="8535005006684281994">Netscape Sertifikası Yenileme URL'si</translation>
 <translation id="8536956381488731905">Tuşa basılınca ses çıkar</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 3ec45673..493fe5d 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -255,7 +255,6 @@
 <translation id="1244265436519979884">Триває відновлення Linux</translation>
 <translation id="1244303850296295656">Помилка розширення</translation>
 <translation id="1246863218384630739">Не вдалося встановити <ph name="VM_NAME" />: URL-адреса зображення повернула код помилки <ph name="HTTP_ERROR" />. Зв’яжіться з адміністратором.</translation>
-<translation id="1247071602516579380">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, планшет "<ph name="DEVICE_NAME" />"</translation>
 <translation id="1251366534849411931">Очікується ліва фігурна дужка: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Буде видалено <ph name="TOTAL_USAGE" /> даних, збережених сайтами та встановленими додатками</translation>
 <translation id="1251578593170406502">Пошук мереж мобільного Інтернету…</translation>
@@ -442,7 +441,6 @@
 <translation id="144283815522798837">Вибрано <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Налаштувати активний квиток Kerberos</translation>
 <translation id="1444628761356461360">Цим налаштуванням керує власник пристрою (<ph name="OWNER_EMAIL" />).</translation>
-<translation id="1445005312224723356">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, телефон "<ph name="DEVICE_NAME" />"</translation>
 <translation id="144518587530125858">Не вдалося завантажити "<ph name="IMAGE_PATH" />" для теми.</translation>
 <translation id="1449191289887455076">Натисніть клавішу "<ph name="CURRENTKEY" />" ще раз, щоб підтвердити призначену дію та <ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Веб-сторінка в одному файлі</translation>
@@ -875,7 +873,6 @@
 <translation id="1855079636134697549">Камеру ввімкнено</translation>
 <translation id="1856715684130786728">Додати розташування…</translation>
 <translation id="1858585891038687145">Довіряти цьому сертифікату для ідентифікації виробників програмного забезпечення</translation>
-<translation id="1859787252990099899">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, невідомий пристрій "<ph name="DEVICE_NAME" />"</translation>
 <translation id="1861262398884155592">Ця папка порожня</translation>
 <translation id="1862311223300693744">Чи встановлено на Вашому пристрої таке програмне забезпечення, як VPN-клієнт, проксі-сервер, брандмауер
     або NAS?</translation>
@@ -1251,7 +1248,6 @@
 <translation id="2242687258748107519">Інформація про файл</translation>
 <translation id="2246549592927364792">Отримувати описи зображень від Google?</translation>
 <translation id="2247738527273549923">Пристроєм керує ваша організація</translation>
-<translation id="2249061317998743208">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, ігровий контролер "<ph name="DEVICE_NAME" />"</translation>
 <translation id="2249111429176737533">Відкрити як вікно з вкладками</translation>
 <translation id="2249605167705922988">напр., 1–5, 8, 11–13</translation>
 <translation id="2251218783371366160">Відкрити за допомогою системного переглядача</translation>
@@ -2013,7 +2009,6 @@
 <translation id="3007771295016901659">Ідентична вкладка</translation>
 <translation id="3008232374986381779">Запускайте інструменти, редактори й ІСР Linux на пристрої <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Скинути дозволи</translation>
-<translation id="3008396025115884998">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, аудіопристрій "<ph name="DEVICE_NAME" />"</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{Адміністратор домену <ph name="MANAGER" /> вимагає, щоб ви сьогодні підключилися до мережі Wi-Fi та завантажили оновлення. Ви також можете використовувати підключення з тарифікацією трафіку (може стягуватися плата).}one{Адміністратор домену <ph name="MANAGER" /> вимагає, щоб ви підключилися до мережі Wi-Fi та завантажили оновлення до кінцевого терміну. Ви також можете використовувати підключення з тарифікацією трафіку (може стягуватися плата).}few{Адміністратор домену <ph name="MANAGER" /> вимагає, щоб ви підключилися до мережі Wi-Fi та завантажили оновлення до кінцевого терміну. Ви також можете використовувати підключення з тарифікацією трафіку (може стягуватися плата).}many{Адміністратор домену <ph name="MANAGER" /> вимагає, щоб ви підключилися до мережі Wi-Fi та завантажили оновлення до кінцевого терміну. Ви також можете використовувати підключення з тарифікацією трафіку (може стягуватися плата).}other{Адміністратор домену <ph name="MANAGER" /> вимагає, щоб ви підключилися до мережі Wi-Fi та завантажили оновлення до кінцевого терміну. Ви також можете використовувати підключення з тарифікацією трафіку (може стягуватися плата).}}</translation>
 <translation id="3009300415590184725">Дійсно скасувати процес налаштування служби передавання мобільних даних?</translation>
 <translation id="3009779501245596802">Проіндексовані бази даних</translation>
@@ -2319,7 +2314,6 @@
 <translation id="3348038390189153836">Виявлено знімний пристрій</translation>
 <translation id="3348131053948466246">Запропоновано смайли. Щоб переходити між ними, натискайте стрілки вгору або вниз. Щоб вставити смайл, натисніть Enter.</translation>
 <translation id="3349933790966648062">Використання пам’яті</translation>
-<translation id="3354972872297836698">Не вдалося підключитися до пристрою "<ph name="DEVICE_NAME" />"; виберіть пристрій, щоб повторити спробу</translation>
 <translation id="3355936511340229503">Помилка з’єднання</translation>
 <translation id="3356580349448036450">Готово</translation>
 <translation id="3359256513598016054">Обмеження політики сертифіката</translation>
@@ -2751,6 +2745,7 @@
 <translation id="3788331399335602504">ці файли</translation>
 <translation id="3788401245189148511">Зможе:</translation>
 <translation id="3789841737615482174">Установити</translation>
+<translation id="3790417903123637354">Сталася помилка. Спробуйте пізніше</translation>
 <translation id="379082410132524484">Ваша картка недійсна</translation>
 <translation id="3792890930871100565">Від’єднати принтери</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Веб-переглядач Chrome не виявив шкідливого програмного забезпечення на вашому комп'ютері • Перевірено 1 день тому}one{Веб-переглядач Chrome не виявив шкідливого програмного забезпечення на вашому комп'ютері • Перевірено {NUM_DAYS} день тому}few{Веб-переглядач Chrome не виявив шкідливого програмного забезпечення на вашому комп'ютері • Перевірено {NUM_DAYS} дні тому}many{Веб-переглядач Chrome не виявив шкідливого програмного забезпечення на вашому комп'ютері • Перевірено {NUM_DAYS} днів тому}other{Веб-переглядач Chrome не виявив шкідливого програмного забезпечення на вашому комп'ютері • Перевірено {NUM_DAYS} дня тому}}</translation>
@@ -3150,7 +3145,6 @@
 <translation id="4200689466366162458">Спеціальні слова</translation>
 <translation id="4200983522494130825">Нова &amp;вкладка</translation>
 <translation id="4201546031411513170">Ви можете будь-коли вибрати дані для синхронізації в налаштуваннях.</translation>
-<translation id="4202417625268941299">Безпечний перегляд із розширеним захистом надасть вам найвищий рівень безпеки від Chrome</translation>
 <translation id="420283545744377356">Вимкнути заставку</translation>
 <translation id="4206144641569145248">Прибулець</translation>
 <translation id="4206323443866416204">Надсилання відгуку</translation>
@@ -3657,7 +3651,6 @@
 <translation id="4759238208242260848">Завантаження</translation>
 <translation id="4761104368405085019">Використовувати ваш мікрофон</translation>
 <translation id="4762718786438001384">На диску пристрою дуже мало вільного місця</translation>
-<translation id="4762898026821161650">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, комп’ютер "<ph name="DEVICE_NAME" />"</translation>
 <translation id="4763408175235639573">Файли cookie, створені під час перегляду сторінки</translation>
 <translation id="4765582662863429759">Дозволяє сервісу Android Повідомлення передавати SMS із телефона на Chromebook</translation>
 <translation id="4768332406694066911">Вас ідентифікують сертифікати від цих організацій</translation>
@@ -4503,7 +4496,7 @@
 <translation id="5653154844073528838">Збережених принтерів: <ph name="PRINTER_COUNT" />.</translation>
 <translation id="5655296450510165335">Реєстрація пристрою</translation>
 <translation id="5656845498778518563">Надіслати відгук у Google</translation>
-<translation id="5657156137487675418">Дозволити всі cookie-файли</translation>
+<translation id="5657156137487675418">Дозволити всі файли cookie</translation>
 <translation id="5657667036353380798">Для зовнішнього розширення потрібна версія Chrome <ph name="MINIMUM_CHROME_VERSION" /> або новіша.</translation>
 <translation id="5658415415603568799">З міркувань безпеки Smart Lock запропонує ввести пароль через 20 годин.</translation>
 <translation id="5659593005791499971">Ел. пошта</translation>
@@ -5837,7 +5830,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Перевірку безпеки виконано 1 хвилину тому}one{Перевірку безпеки виконано {NUM_MINS} хвилину тому}few{Перевірку безпеки виконано {NUM_MINS} хвилини тому}many{Перевірку безпеки виконано {NUM_MINS} хвилин тому}other{Перевірку безпеки виконано {NUM_MINS} хвилини тому}}</translation>
 <translation id="7057767408836081338">Не вдалось отримати дані додатка. Додаток усе ще запускається…</translation>
 <translation id="7058024590501568315">Прихована мережа</translation>
-<translation id="70582545822664495">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, миша "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7059858479264779982">Увімкнути автозапуск</translation>
 <translation id="7062222374113411376">Дозволити нещодавно закритим сайтам завершувати надсилання й отримання даних (рекомендується)</translation>
 <translation id="7063129466199351735">Обробка ярликів…</translation>
@@ -6001,7 +5993,6 @@
 <translation id="7257173066616499747">Мережі Wi-Fi</translation>
 <translation id="725758059478686223">Служба друку</translation>
 <translation id="7257666756905341374">Читати дані, які ви копіюєте та вставляєте</translation>
-<translation id="7258006747130724016">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, відеокамера "<ph name="DEVICE_NAME" />"</translation>
 <translation id="7258192266780953209">Перетворення</translation>
 <translation id="7258225044283673131">Додаток не відповідає. Щоб закрити його, виберіть опцію "Примусово закрити".</translation>
 <translation id="7262004276116528033">Ця служба входу в обліковий запис зареєстрована в домені <ph name="SAML_DOMAIN" /></translation>
@@ -6798,7 +6789,6 @@
 <translation id="8037117027592400564">Читати весь текст, відтворений за допомогою синтезованого мовлення</translation>
 <translation id="8037357227543935929">Запитувати (за умовчанням)</translation>
 <translation id="803771048473350947">Файл</translation>
-<translation id="8038399858950372766">Пристрій <ph name="DEVICE_INDEX" /> з <ph name="DEVICE_COUNT" />, клавіатура "<ph name="DEVICE_NAME" />"</translation>
 <translation id="8041089156583427627">Надіслати відгук</translation>
 <translation id="8042142357103597104">Прозорість тексту</translation>
 <translation id="8044262338717486897">Додаток <ph name="LINUX_APP_NAME" /> не відповідає.</translation>
@@ -6874,6 +6864,7 @@
 <translation id="81020759409809034">Локальне розташування</translation>
 <translation id="8102139037507939978">Вилучити ідентифікаційну інформацію з файлу system_logs.txt.</translation>
 <translation id="8104088837833760645">Завантажити профіль eSIM-карти</translation>
+<translation id="8105368624971345109">Вимкнути</translation>
 <translation id="8107015733319732394">Встановлення додатка Google Play Store на ваш <ph name="DEVICE_TYPE" />. Це може зайняти кілька хвилин.</translation>
 <translation id="810728361871746125">Роздільна здатність дисплея</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Немає файлів cookie третіх сторін}=1{Заблоковано 1 файл cookie третіх сторін}one{Заблоковано # файл cookie третіх сторін}few{Заблоковано # файли cookie третіх сторін}many{Заблоковано # файлів cookie третіх сторін}other{Заблоковано # файлу cookie третіх сторін}}</translation>
@@ -6938,7 +6929,6 @@
 <translation id="8168071266284693455">Закладки, паролі, історію й інші дані синхронізовано на всіх ваших пристроях</translation>
 <translation id="8168435359814927499">Вміст</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Додати вкладку в список читання}one{Додати вкладки в список читання}few{Додати вкладки в список читання}many{Додати вкладки в список читання}other{Додати вкладки в список читання}}</translation>
-<translation id="8169849063724750395">Увімкнути знову</translation>
 <translation id="8171334254070436367">Сховати всі картки</translation>
 <translation id="8174047975335711832">Інформація про пристрій</translation>
 <translation id="8174876712881364124">Створення резервних копій на Google Диску. Легко відновлюйте дані та переносьте їх на інші пристрої. Ця резервна копія містить дані додатків. Резервні копії завантажуються в Google і шифруються за допомогою пароля облікового запису Google вашої дитини. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation>
@@ -7012,7 +7002,6 @@
 <translation id="8249615410597138718">Надіслати на пристрої</translation>
 <translation id="8249672078237421304">Пропонувати переклад сторінок, якщо їх мова відрізняється від мови у веб-переглядачі</translation>
 <translation id="8251441930213048644">Оновити</translation>
-<translation id="8251509999076836464">Підключення до пристрою "<ph name="DEVICE_NAME" />"</translation>
 <translation id="8251578425305135684">Ескіз видалено.</translation>
 <translation id="825238165904109940">Завжди показувати повні URL-адреси</translation>
 <translation id="8252569384384439529">Завантаження…</translation>
@@ -7254,7 +7243,6 @@
 <translation id="8534656636775144800">На жаль, не вдалося приєднатися до домену. Повторіть спробу.</translation>
 <translation id="8535005006684281994">URL-адреса відновлення сертифікатів Netscape</translation>
 <translation id="8536956381488731905">Звук натискання клавіш</translation>
-<translation id="8538718737588735385">Увімкнути знову</translation>
 <translation id="8539727552378197395">Ні (HttpOnly)</translation>
 <translation id="8539766201049804895">Оновити</translation>
 <translation id="8540136935098276800">Введіть URL-адресу правильного формату</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index 3b19f80..55bc35c 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">‏Linux بحالی فی الحال جاری ہے</translation>
 <translation id="1244303850296295656">ایکسٹینشن میں خرابی</translation>
 <translation id="1246863218384630739">‏<ph name="VM_NAME" /> کو انسٹال نہیں کیا جا سکا: تصویری URL نے <ph name="HTTP_ERROR" /> خرابی کا کوڈ واپس کر دیا۔ براہ کرم اپنے منتظم سے رابطہ کریں۔</translation>
-<translation id="1247071602516579380"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا ٹیبلیٹ</translation>
 <translation id="1251366534849411931">ابتدائی خمیدہ قوسین کی توقع ہے: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">اس سے سائٹس اور انسٹال کردہ ایپس کا <ph name="TOTAL_USAGE" /> اسٹور کردہ ڈیٹا صاف ہو جائے گا</translation>
 <translation id="1251578593170406502">موبائل ڈیٹا نیٹ ورکس کو اسکین کیا جا رہا ہے...</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> کو منتخب کیا گیا</translation>
 <translation id="1442851588227551435">‏Kerberos کا فعال ٹکٹ سیٹ کریں</translation>
 <translation id="1444628761356461360">یہ ترتیب آلہ کے مالک، <ph name="OWNER_EMAIL" /> کے زیر انتظام ہے۔</translation>
-<translation id="1445005312224723356"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا فون</translation>
 <translation id="144518587530125858">تھیم کیلئے '<ph name="IMAGE_PATH" />' کو لوڈ نہیں کیا جا سکا۔</translation>
 <translation id="1449191289887455076">تفویض اور <ph name="RESPONSE" /> کی تصدیق کرنے کے لیے "<ph name="CURRENTKEY" />" دوبارہ دبائيں</translation>
 <translation id="1451375123200651445">ویب صفحہ، واحد فائل</translation>
@@ -861,7 +859,6 @@
 <translation id="1855079636134697549">کیمرا آن ہے</translation>
 <translation id="1856715684130786728">مقام شامل کریں…</translation>
 <translation id="1858585891038687145">سافٹ ویئر بنانے والوں کی شناخت کرنے کیلئے اس سرٹیفیکیٹ پر بھروسہ کریں</translation>
-<translation id="1859787252990099899"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا نامعلوم آلہ</translation>
 <translation id="1861262398884155592">یہ فولڈر خالی ہے</translation>
 <translation id="1862311223300693744">‏کیا آپ نے کوئی خصوصی VPN، پراکسی، فائروال یا NAS سافٹ ویئر انسٹال کیا ہوا ہے؟</translation>
 <translation id="1863182668524159459">کوئی سیریل پورٹ نہیں ملا</translation>
@@ -1236,7 +1233,6 @@
 <translation id="2242687258748107519">فائل کی معلومات</translation>
 <translation id="2246549592927364792">‏Google سے تصویر کی تفصیلات حاصل کریں؟</translation>
 <translation id="2247738527273549923">آپ کا آلہ آپ کی تنظیم کے زیر انتظام ہے</translation>
-<translation id="2249061317998743208"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا گیم کنٹرولر</translation>
 <translation id="2249111429176737533">ٹیب کردہ ونڈو کے طور پر کھولیں</translation>
 <translation id="2249605167705922988">‏مثلاً ‎1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">سسٹم ویور کے ساتھ کھولیں</translation>
@@ -1994,7 +1990,6 @@
 <translation id="3007771295016901659">ڈپلیکیٹ ٹیب</translation>
 <translation id="3008232374986381779">‏اپنے <ph name="DEVICE_TYPE" /> پر Linux ٹولز، ایڈیٹرز اور IDEs چلائیں۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">اجازتیں دوبارہ ترتیب دیں</translation>
-<translation id="3008396025115884998"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا آڈیو آلہ</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{‏<ph name="MANAGER" /> کا تقاضہ ہے کہ آج آپ Wi-Fi سے منسلک ہوں اور ایک اپ ڈیٹ ڈاؤن لوڈ کریں۔ یا میٹرڈ کنکشن سے ڈاؤن لوڈ کریں (چارجز لاگو ہو سکتے ہیں)۔}other{‏<ph name="MANAGER" /> کا تقاضہ ہے کہ آپ آخری تاریخ سے پہلے Wi-Fi سے منسلک ہوں اور ایک اپ ڈیٹ ڈاؤن لوڈ کریں۔ یا میٹرڈ کنکشن سے ڈاؤن لوڈ کریں (چارجز لاگو ہو سکتے ہیں)۔}}</translation>
 <translation id="3009300415590184725">کیا آپ واقعی موبائل ڈیٹا سروس سیٹ اپ کارروائی کو منسوخ کرنا چاہتے ہیں؟</translation>
 <translation id="3009779501245596802">انڈیکس کردہ ڈیٹا بیسز</translation>
@@ -2300,7 +2295,6 @@
 <translation id="3348038390189153836">ہٹانے لائق آلہ کا پتا چلا</translation>
 <translation id="3348131053948466246">تجویز کردہ ایموجی۔ نیویگیٹ کرنے کے لیے اوپر یا نیچے کا تیر دبائیں اور داخل کرنے کے لیے اینٹر دبائیں۔</translation>
 <translation id="3349933790966648062">میموری فوٹ پرنٹ</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> آلے سے جوڑا نہیں بنایا جا سکا؛ دوبارہ کوشش کرنے کے لیے آلہ منتخب کریں</translation>
 <translation id="3355936511340229503">کنکشن کی خرابی</translation>
 <translation id="3356580349448036450">مکمل</translation>
 <translation id="3359256513598016054">سرٹیفکیٹ کی پالیسی کی پابندیاں</translation>
@@ -2508,6 +2502,7 @@
 <translation id="3557101512409028104">‏Family Link کی مدد سے ویب سائٹ کی پابندیاں اور اسکرین کے وقت کی حدود سیٹ کریں</translation>
 <translation id="3559262020195162408">آلہ پر پالیسی انسٹال نہیں ہو سکی۔</translation>
 <translation id="3559533181353831840">تقریباً <ph name="TIME_LEFT" /> باقی ہے</translation>
+<translation id="3559697822483154494">اسپلٹ اسکرین اور ڈیسکس سوئچ کرنے جیسی کاروائیوں کے لیے وائبریشن کی توثیق موصول کریں۔</translation>
 <translation id="3560034655160545939">اور املا کی جانچ</translation>
 <translation id="3562423906127931518">‏اس کارروائی میں چند منٹس لگ سکتے ہيں۔ Linux کنٹینر سیٹ کیا جا رہا ہے۔</translation>
 <translation id="3562655211539199254">‏اپنے فون سے حالیہ Chrome ٹیبز دیکھیں</translation>
@@ -2732,6 +2727,7 @@
 <translation id="3788331399335602504">یہ فائلز</translation>
 <translation id="3788401245189148511">اس کی وجہ سے ہو سکتا ہے:</translation>
 <translation id="3789841737615482174">انسٹال کریں</translation>
+<translation id="3790417903123637354">کچھ غلط ہو گیا۔ بعد میں دوبارہ کوشش کریں</translation>
 <translation id="379082410132524484">آپ کے کارڈ کی معیاد ختم ہو گئی ہے</translation>
 <translation id="3792890930871100565">پرنٹرز منقطع کریں</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{‏Chrome کو آپ کے کمپیوٹر میں نقصان دہ سافٹ ویئر نہیں ملا • 1 دن پہلے چیک کیا گیا}other{‏Chrome کو آپ کے کمپیوٹر میں نقصان دہ سافٹ ویئر نہیں ملا • {NUM_DAYS} دن پہلے چیک کیا گیا}}</translation>
@@ -3131,7 +3127,6 @@
 <translation id="4200689466366162458">حسب ضرورت الفاظ</translation>
 <translation id="4200983522494130825">نیا &amp;ٹیب</translation>
 <translation id="4201546031411513170">آپ ترتیبات میں کسی بھی وقت اس بات کا انتخاب کر سکتے ہیں کہ کس چیز کی مطابقت پذیری کرنی ہے۔</translation>
-<translation id="4202417625268941299">‏بہتر کردہ محفوظ براؤزنگ کے ساتھ، آپ Chrome کی مضبوط ترین سیکیورٹی حاصل کریں گے</translation>
 <translation id="420283545744377356">اسکرین سیور آف کریں</translation>
 <translation id="4206144641569145248">ایلیئن</translation>
 <translation id="4206323443866416204">تاثرات کی رپورٹ</translation>
@@ -3637,7 +3632,6 @@
 <translation id="4759238208242260848">ڈاؤن لوڈز</translation>
 <translation id="4761104368405085019">اپنا مائیکروفون استعمال کریں</translation>
 <translation id="4762718786438001384">آلہ کے ڈسک کی جگہ انتہائی کم ہے</translation>
-<translation id="4762898026821161650"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا کمپیوٹر</translation>
 <translation id="4763408175235639573">جب آپ نے یہ صفحہ ملاحظہ کیا تو مندرجہ ذیل کوکیز سیٹ کی گئی تھیں</translation>
 <translation id="4765582662863429759">‏Android پیغامات کو آپ کے فون سے آپ کے Chromebook پر متنی پیغامت بھیجنے کی اجازت دیتی ہے</translation>
 <translation id="4768332406694066911">آپ کی شناخت کرنے والی ان تنظیموں کی جانب سے آپ کے پاس سرٹیفیکیٹس ہیں</translation>
@@ -4907,6 +4901,7 @@
 <translation id="6112931163620622315">اپنا فون چیک کریں</translation>
 <translation id="6113434369102685411">‏Chrome براؤزر اور <ph name="DEVICE_TYPE" /> لانچر کیلئے اپنا ڈیفالٹ سرچ انجن سیٹ کریں</translation>
 <translation id="6113942107547980621">‏Smart Lock کا استعمال کرنے کے لیے اپنے فون پربنیادی صارف پروفائل پر سوئچ کریں</translation>
+<translation id="611684075852771314">یہ لاگز میری فائلز میں بطور محفوظ کیے گئے ہیں</translation>
 <translation id="6116921718742659598">زبان اور ان پٹ کی ترتیبات تبدیل کریں</translation>
 <translation id="6119927814891883061">آلہ کا نام <ph name="DEVICE_NAME" /> رکھیں</translation>
 <translation id="6120205520491252677">اسکرین شروع کرنے کیلئے اس صفحہ کو پن کریں…</translation>
@@ -5683,6 +5678,7 @@
 <translation id="6930036377490597025">بیرونی سیکیورٹی کلید یا پہلے سے شامل سینسر</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{ایک ایکسٹینشن مسترد کر دی گئی ہے}other{# ایکسٹینشنز مسترد کر دی گئی ہیں}}</translation>
 <translation id="6930321203306643451">اپ گریڈ مکمل ہو گیا</translation>
+<translation id="6931690462168617033">قوت پر کلک کریں</translation>
 <translation id="6935286146439255109">کاغذی ٹرے غائب ہے</translation>
 <translation id="693807610556624488">لکھنے کی کارروائی اس کے انتساب کی زیادہ سے زیادہ طوالت سے زیادہ ہے: "<ph name="DEVICE_NAME" />"۔</translation>
 <translation id="6938386202199793006">آپ کے پاس 1 محفوظ کردہ پرنٹر ہے۔</translation>
@@ -5816,7 +5812,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{سیفٹی چیک 1 منٹ پہلے کیا گیا}other{سیفٹی چیک {NUM_MINS} منٹ پہلے کیا گیا}}</translation>
 <translation id="7057767408836081338">ایپ کا ڈیٹا حاصل کرنے میں ناکام، بہر صورت ایپ کو چلانے کی کوشش کی جار رہی ہے...</translation>
 <translation id="7058024590501568315">پوشیدہ نیٹ ورک</translation>
-<translation id="70582545822664495"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا ماؤس</translation>
 <translation id="7059858479264779982">خود کار طور پر شروع کریں پر سیٹ کریں</translation>
 <translation id="7062222374113411376">حال ہی میں بند کی گئی سائٹس کو ڈیٹا بھیجنے اور حاصل کرنے کو مکمل کرنے کی اجازت دیں (تجویز کردہ)</translation>
 <translation id="7063129466199351735">شارٹ کٹس پر کارروائی کی جا رہی ہے…</translation>
@@ -5980,7 +5975,6 @@
 <translation id="7257173066616499747">‏Wi-Fi نیٹ ورکس</translation>
 <translation id="725758059478686223">پرنٹنگ سروس</translation>
 <translation id="7257666756905341374">آپ جو ڈیٹا کاپی اور پیسٹ کرتے ہیں اسے پڑھیں</translation>
-<translation id="7258006747130724016"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا ویڈیو کیمرا</translation>
 <translation id="7258192266780953209">تبدیلیاں</translation>
 <translation id="7258225044283673131">ایپلیکیشن جواب نہیں دے رہی ہے۔ ایپ بند کرنے کیلئے، "زبردستی بند کریں" منتخب کریں۔</translation>
 <translation id="7262004276116528033">اس سائن ان سروس کی میزبانی <ph name="SAML_DOMAIN" />  کرتا ہے</translation>
@@ -6776,7 +6770,6 @@
 <translation id="8037117027592400564">سنتھیسائز کردہ اسپیچ کا استعمال کر کے بولے گئے سبھی متن کو پڑھیں</translation>
 <translation id="8037357227543935929">پوچھیں (ڈیفالٹ)</translation>
 <translation id="803771048473350947">فائل</translation>
-<translation id="8038399858950372766"><ph name="DEVICE_COUNT" /> میں سے <ph name="DEVICE_INDEX" /> آلہ، <ph name="DEVICE_NAME" /> نام والا کی بورڈ</translation>
 <translation id="8041089156583427627">تاثرات بھیجیں</translation>
 <translation id="8042142357103597104">متن کا دھندلا پن</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> جواب نہیں دے رہی ہے۔</translation>
@@ -6800,6 +6793,7 @@
 <translation id="8054563304616131773">براہ کرم ایک درست ای میل پتہ درج کریں</translation>
 <translation id="8054883179223321715">مخصوص ویڈیو سائٹس کے لئے دستیاب ہے</translation>
 <translation id="8054921503121346576">‏USB کی بورڈ منسلک کر دیا گیا</translation>
+<translation id="8057414620575339583">سائیڈ تلاش کریں</translation>
 <translation id="8058655154417507695">میعاد کے اختتام کا سال</translation>
 <translation id="8058986560951482265">رک رک کر چلتی ہے</translation>
 <translation id="8059417245945632445">آلات کا &amp;معائنہ کریں</translation>
@@ -6814,6 +6808,7 @@
 <translation id="8064279191081105977">گروپ <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">کنکشن کا ڈائیلاگ</translation>
 <translation id="8069615408251337349">‏Google کلاؤڈ پرنٹ</translation>
+<translation id="8070662218171013510">تاثرات بذریعہ تھپتھپاہٹ</translation>
 <translation id="8071432093239591881">بطور تصویر پرنٹ کریں</translation>
 <translation id="8073499153683482226">‏<ph name="BEGIN_PARAGRAPH1" />ایپ ڈیٹا کوئی بھی ایسا ڈیٹا ہو سکتا ہے جسے کسی ایپ نے رابطے، پیغامات اور تصاویر جیسے ڈیٹا سمیت (ڈویلپر کی ترتیبات کی بنیاد پر) محفوظ کیا ہو۔<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />بیک اپ ڈیٹا کا شمار آپ کے بچے کے Drive اسٹوریج کے کوٹہ میں نہیں کیا جائے گا۔<ph name="END_PARAGRAPH2" />
@@ -6851,6 +6846,7 @@
 <translation id="81020759409809034">مقامی سسٹم پر ڈاؤن لوڈز کا مقام</translation>
 <translation id="8102139037507939978">‏system_logs.txt سے ذاتی طور پر قابل شناخت معلومات اسٹرپ۔</translation>
 <translation id="8104088837833760645">‏eSIM پروفائل ڈاؤن لوڈ کریں</translation>
+<translation id="8105368624971345109">آف کریں</translation>
 <translation id="8107015733319732394">‏آپ کے <ph name="DEVICE_TYPE" /> پر Google Play اسٹور انسٹال کیا جا رہا ہے۔ اس میں کچھ منٹ کا وقت لگ سکتا ہے۔</translation>
 <translation id="810728361871746125">ڈسپلے کا ریزولیوشن</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{کوئی فریق ثالث کوکی نہیں ہے}=1{1 فریق ثالث کوکی مسدود ہے}other{# فریق ثالث کوکیز مسدود ہیں}}</translation>
@@ -6915,7 +6911,6 @@
 <translation id="8168071266284693455">آپ کے سبھی آلات پر آپ کے بُک مارکس، پاس ورڈز، سرگزشت اور مزید بہت کچھ کو سِنک کیا جاتا ہے</translation>
 <translation id="8168435359814927499">مواد</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{پڑھنے کی فہرست میں ٹیب شامل کریں}other{پڑھنے کی فہرست میں ٹیبز شامل کریں}}</translation>
-<translation id="8169849063724750395">دوبارہ آن کریں</translation>
 <translation id="8171334254070436367">سبھی کارڈز کو چھپائیں</translation>
 <translation id="8174047975335711832">آلہ کی معلومات</translation>
 <translation id="8174876712881364124">‏Google Drive پر بیک اپ لیں۔ آسانی سے ڈیٹا بحال کریں یا کسی بھی وقت آلہ سوئچ کریں۔ اس بیک اپ میں ایپ ڈیٹا شامل ہوتا ہے۔ بیک اپس کو Google پر اپ لوڈ کیا جاتا ہے اور آپ کے بچے کے Google اکاؤنٹ کا پاس ورڈ استعمال کر کے انہیں مرموز کیا جاتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation>
@@ -6989,7 +6984,6 @@
 <translation id="8249615410597138718">اپنے آلات پر بھیجیں</translation>
 <translation id="8249672078237421304">ان صفحات کا ترجمہ کرنے کی پیشکش کریں جو آپ کے مطالعہ کی زبان میں نہیں ہیں</translation>
 <translation id="8251441930213048644">اب ریفریش کریں</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> سے جوڑا بنایا جا رہا ہے</translation>
 <translation id="8251578425305135684">تھمب نیل کو ہٹا دیا گیا۔</translation>
 <translation id="825238165904109940">‏ہمیشہ مکمل URLs دکھائیں</translation>
 <translation id="8252569384384439529">اپ لوڈ ہو رہی ہے...</translation>
@@ -7231,7 +7225,6 @@
 <translation id="8534656636775144800">افوہ!  ڈومین میں شامل ہونے کی کوشش کرتے وقت کچھ غلط ہو گیا۔ براہ کرم دوبارہ کوشش کریں۔</translation>
 <translation id="8535005006684281994">‏Netscape سرٹیفیکیٹ تجدید URL</translation>
 <translation id="8536956381488731905">کلید دبانے پر آواز</translation>
-<translation id="8538718737588735385">دوبارہ آن کریں</translation>
 <translation id="8539727552378197395">‏کوئی (HttpOnly) نہیں ہے</translation>
 <translation id="8539766201049804895">اپ گریڈ کریں</translation>
 <translation id="8540136935098276800">‏صحیح طور پر فارمیٹ کیا ہوا URL درج کریں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index 2aea68e..ab6308c 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">Ayni vaqtda Linux fayllari tiklanmoqda</translation>
 <translation id="1244303850296295656">Kengaytma xatoligi</translation>
 <translation id="1246863218384630739"><ph name="VM_NAME" /> oʻrnatilmadi: Rasm URL manzilida xato (<ph name="HTTP_ERROR" />) yuz berdi. Administratorga murojaat qiling.</translation>
-<translation id="1247071602516579380">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli planshet</translation>
 <translation id="1251366534849411931">Chap figurali qavs kiritilmagan: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Oʻrnatilgan ilovalar va saytlar joylagan <ph name="TOTAL_USAGE" /> maʼlumot tozalab tashlanadi</translation>
 <translation id="1251578593170406502">Mobil internet tarmoqlari tekshirilmoqda...</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837">Tanlandi: <ph name="NUMBER_OF_ITEMS_SELECTED" /></translation>
 <translation id="1442851588227551435">Faol Kerberos chiptasini belgilash</translation>
 <translation id="1444628761356461360">Bu sozlama qurilma egasi (<ph name="OWNER_EMAIL" />) tomonidan boshqariladi.</translation>
-<translation id="1445005312224723356">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli telefon</translation>
 <translation id="144518587530125858">Mavzu uchun “<ph name="IMAGE_PATH" />” yuklab bo‘lmadi.</translation>
 <translation id="1449191289887455076">Tayinlovni tasdiqlash va <ph name="RESPONSE" /> uchun “<ph name="CURRENTKEY" />” tugmasini qayta bosing.</translation>
 <translation id="1451375123200651445">Veb-sahifa, bitta fayl</translation>
@@ -859,7 +857,6 @@
 <translation id="1855079636134697549">Kamera yoqildi</translation>
 <translation id="1856715684130786728">Jild qo‘shish...</translation>
 <translation id="1858585891038687145">Dasturiy ta’minot ishlab chiquvchilarni identifikatsiya qilishda ushbu sertifikat ishonchli deb hisoblansin.</translation>
-<translation id="1859787252990099899">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli notanish qurilma</translation>
 <translation id="1861262398884155592">Bu jild bo‘sh</translation>
 <translation id="1862311223300693744">Kompyuteringizda VPN, proksi-server, himoya devori yoki NAS kabi maxsus dasturiy taʼminot
     oʻrnatilganmi?</translation>
@@ -1235,7 +1232,6 @@
 <translation id="2242687258748107519">Fayl ma’lumoti</translation>
 <translation id="2246549592927364792">Rasmlar tavsifi Google orqali olinsinmi?</translation>
 <translation id="2247738527273549923">Qurilmangiz tashkilotingiz tomonidan boshqariladi</translation>
-<translation id="2249061317998743208">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli joystik</translation>
 <translation id="2249111429176737533">Varaqlardan iborat oynada ochish</translation>
 <translation id="2249605167705922988">m-n, 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Birlamchi ko‘rish dasturida ochish</translation>
@@ -1997,7 +1993,6 @@
 <translation id="3007771295016901659">Varaqni nusxalash</translation>
 <translation id="3008232374986381779"><ph name="DEVICE_TYPE" /> qurilmangizda Linux uskunalar, tahrirchilar va IDE qobiqlarini ishga tushiring. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Ruxsatlarni qasliga qaytarish</translation>
-<translation id="3008396025115884998">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli audio qurilma</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> domeni bugunoq Wi-Fi tarmoqqa ulanib, yangilanishni yuklab olishni talab qilmoqda. Yoki trafik hisoblanadigan ulanishdan foydalanib yuklab olish mumkin.}other{<ph name="MANAGER" /> Wi-Fi tarmoqqa ulanib, yangilanishni oxirgi muddatdan oldin yuklab olishni talab qilmoqda. Yoki trafik hisoblanadigan ulanishdan foydalanib yuklab olish mumkin.}}</translation>
 <translation id="3009300415590184725">Haqiqatan ham mobil ma’lumot xizmatini sozlash jarayonini bekor qilmoqchimisiz?</translation>
 <translation id="3009779501245596802">Indekslangan ma’lumot omborlari</translation>
@@ -2303,7 +2298,6 @@
 <translation id="3348038390189153836">Xotira qurilmasi aniqlandi</translation>
 <translation id="3348131053948466246">Emoji taklif qilindi. Joylash uchun tepaga, pastga strelkalar bilan tanlab Enter tugmasini bosing</translation>
 <translation id="3349933790966648062">Xotira sarfi</translation>
-<translation id="3354972872297836698"><ph name="DEVICE_NAME" /> qurilmasiga ulanmadi; qayta urinish uchun qurilmani tanlang</translation>
 <translation id="3355936511340229503">Ulanish xatoligi</translation>
 <translation id="3356580349448036450">Tayyor</translation>
 <translation id="3359256513598016054">Sertifikatlar siyosati cheklovlari</translation>
@@ -2736,6 +2730,7 @@
 <translation id="3788331399335602504">bu fayllar</translation>
 <translation id="3788401245189148511">Ruxsatlar:</translation>
 <translation id="3789841737615482174">O‘rnatish</translation>
+<translation id="3790417903123637354">Xatolik yuz berdi. Keyinroq qayta urining</translation>
 <translation id="379082410132524484">Kartangiz muddati tugagan</translation>
 <translation id="3792890930871100565">Printerlarni o‘chirish</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome kompyuteringizdan zararli dasturlarni topa olmadi. • 1 kun oldin tekshirildi}other{Chrome kompyuteringizdan zararli dasturlarni topa olmadi. • {NUM_DAYS} kun oldin tekshirildi}}</translation>
@@ -3135,7 +3130,6 @@
 <translation id="4200689466366162458">Boshqa so‘zlar</translation>
 <translation id="4200983522494130825">Yangi &amp;ichki oyna</translation>
 <translation id="4201546031411513170">Nimani sinxronlashni istalgan vaqtda sozlamalar orqali tanlash mumkin.</translation>
-<translation id="4202417625268941299">Saytlarni kuchaytirilgan xavfsiz rejimda kezish funksiyasi bilan Chrome eng mustahkam himoyani taʼminlaydi</translation>
 <translation id="420283545744377356">Ekran lavhasini faolsizlantirish</translation>
 <translation id="4206144641569145248">O‘zga sayyoralik</translation>
 <translation id="4206323443866416204">Fikr-mulohaza</translation>
@@ -3642,7 +3636,6 @@
 <translation id="4759238208242260848">Yuklanmalar</translation>
 <translation id="4761104368405085019">Mikrofoningizni ishlatish</translation>
 <translation id="4762718786438001384">Qurilma diskida bo‘sh joy deyarli qolmadi</translation>
-<translation id="4762898026821161650">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli kompyuter</translation>
 <translation id="4763408175235639573">Bu sahifaga tashrif buyurish vaqtida kompyuteringizga quyidagi cookie fayllari saqlandi:</translation>
 <translation id="4765582662863429759">Android Xabarlar ilovasi matnlarni telefoningizdan Chromebook qurilmasiga retranslatsiya qilish imkonini beradi</translation>
 <translation id="4768332406694066911">Sizda haqiqiyligingizni tasdiqlovchi quyidagi tashkilotlar sertifikatlari mavjud</translation>
@@ -5825,7 +5818,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Xavfsizlik tekshiruvi 1 daqiqa oldin bajarilgan}other{Xavfsizlik tekshiruvi {NUM_MINS} daqiqa oldin bajarilgan}}</translation>
 <translation id="7057767408836081338">Ilova maʼlumotlari yuklanmadi, lekin hali ham urinilmoqda...</translation>
 <translation id="7058024590501568315">Yashirin tarmoq</translation>
-<translation id="70582545822664495">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli sichqoncha</translation>
 <translation id="7059858479264779982">Avtomatik ishga tushirishni sozlash</translation>
 <translation id="7062222374113411376">Yaqinda yopilgan saytlarga ma’lumot yuborish va qabul qilishga ruxsat berish (tavsiya etiladi)</translation>
 <translation id="7063129466199351735">Yorliqlarga ishlov berilmoqda...</translation>
@@ -5989,7 +5981,6 @@
 <translation id="7257173066616499747">Wi-Fi tarmoqlari</translation>
 <translation id="725758059478686223">Chop etish xizmati</translation>
 <translation id="7257666756905341374">Nusxalash va joylash ma’lumotlariga ruxsat</translation>
-<translation id="7258006747130724016">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli video kamera</translation>
 <translation id="7258192266780953209">Tranfsofrmatsiyalar</translation>
 <translation id="7258225044283673131">Ilova javob bermayapti. Ilovani “Majburiy toʻxtatish” orqali yoping.</translation>
 <translation id="7262004276116528033">Tizimga kirish xizmati <ph name="SAML_DOMAIN" /> domenida joylashgan.</translation>
@@ -6784,7 +6775,6 @@
 <translation id="8037117027592400564">Nutq sintezatori orqali barcha matnni ovozli o‘qish</translation>
 <translation id="8037357227543935929">So‘ralsin (standart sozlama)</translation>
 <translation id="803771048473350947">Fayl</translation>
-<translation id="8038399858950372766">Qurilma <ph name="DEVICE_INDEX" />/<ph name="DEVICE_COUNT" />, <ph name="DEVICE_NAME" /> nomli klaviatura</translation>
 <translation id="8041089156583427627">Fikr-mulohaza</translation>
 <translation id="8042142357103597104">Matn yarim tiniqligi</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> javob bermayapti.</translation>
@@ -6861,6 +6851,7 @@
 <translation id="81020759409809034">Qurilmadagi jild</translation>
 <translation id="8102139037507939978">Shaxsni aniqlash maʼlumotlarini system_logs.txt faylidan chiqarib tashlash.</translation>
 <translation id="8104088837833760645">eSIM profilini yuklab olish</translation>
+<translation id="8105368624971345109">O‘chirib qo‘yish</translation>
 <translation id="8107015733319732394">Google Market <ph name="DEVICE_TYPE" /> qurilmangizga o‘rnatilmoqda. Bu bir necha daqiqa oladi.</translation>
 <translation id="810728361871746125">Ekran oʻlchami:</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Tashqi cookie fayllar yoʻq}=1{1 ta tashqi cookie fayl bloklandi}other{# ta tashqi cookie fayl bloklandi}}</translation>
@@ -6925,7 +6916,6 @@
 <translation id="8168071266284693455">Bukmarklar, parollar va tarix barcha qurilmalaringizda sinxronlangan.</translation>
 <translation id="8168435359814927499">Kontent</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Varaqni mutolaa roʻyxatiga kiritish}other{Varaqlarni mutolaa roʻyxatiga kiritish}}</translation>
-<translation id="8169849063724750395">Qayta yoqish</translation>
 <translation id="8171334254070436367">Barcha bildirgilarni berkitish</translation>
 <translation id="8174047975335711832">Qurilma haqida axborot</translation>
 <translation id="8174876712881364124">Google Drive xizmatiga zaxiralash. Axborotlaringizni osongina tiklashingiz yoki qurilmangizni xohlagan vaqtda almashtirishingiz mumkin. Zaxira ichida ilova ma’lumotlari ham bor. Zaxiralar Google serverlariga yuklanadi va farzandingizning Google hisobingiz paroli bilan shifrlanadi. <ph name="BEGIN_LINK1" />Batafsil axborot<ph name="END_LINK1" /></translation>
@@ -6999,7 +6989,6 @@
 <translation id="8249615410597138718">Qurilmalaringizga yuborish</translation>
 <translation id="8249672078237421304">Agar sahifa tili brauzer tilidan farq qilsa, uni tarjima qilish taklif qilinsin</translation>
 <translation id="8251441930213048644">Hozir yangilash</translation>
-<translation id="8251509999076836464"><ph name="DEVICE_NAME" /> qurilmasiga ulanmoqda</translation>
 <translation id="8251578425305135684">Tezkor havola o‘chirildi.</translation>
 <translation id="825238165904109940">Doim butun URL manzillar chiqarilsin</translation>
 <translation id="8252569384384439529">Yuklanmoqda…</translation>
@@ -7241,7 +7230,6 @@
 <translation id="8534656636775144800">Domenga ulanishda xatolik yuz berdi. Qaytadan urining.</translation>
 <translation id="8535005006684281994">Netscape sertifikatini yangilash URL manzili</translation>
 <translation id="8536956381488731905">Tugmalar tovushi</translation>
-<translation id="8538718737588735385">Qayta yoqish</translation>
 <translation id="8539727552378197395">Yo‘q (HttpOnly)</translation>
 <translation id="8539766201049804895">Yangilash</translation>
 <translation id="8540136935098276800">URL manzilni xatosiz kiriting</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 9313356a..f9963ba 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -2742,6 +2742,7 @@
 <translation id="3788331399335602504">các tệp này</translation>
 <translation id="3788401245189148511">Tiện ích/ứng dụng này có thể:</translation>
 <translation id="3789841737615482174">Cài đặt</translation>
+<translation id="3790417903123637354">Đã xảy ra lỗi. Hãy thử lại sau</translation>
 <translation id="379082410132524484">Thẻ của bạn đã hết hạn</translation>
 <translation id="3792890930871100565">Ngắt kết nối máy in</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome không tìm thấy phần mềm gây hại trên máy tính của bạn • Đã kiểm tra 1 ngày trước}other{Chrome không tìm thấy phần mềm gây hại trên máy tính của bạn • Đã kiểm tra {NUM_DAYS} ngày trước}}</translation>
@@ -3828,6 +3829,7 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" muốn kết nối với một cổng nối tiếp</translation>
 <translation id="4944310289250773232">Dịch vụ xác thực này do <ph name="SAML_DOMAIN" /> lưu trữ</translation>
 <translation id="4945439665401275950">Để thiết lập vân tay, con bạn cần chạm vào nút nguồn. Dữ liệu vân tay của con bạn được lưu trữ an toàn và chỉ có trên chiếc <ph name="DEVICE_TYPE" /> này.</translation>
+<translation id="4946459324029651239">Bạn đang sử dụng chế độ bảo vệ tiêu chuẩn</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{một tệp}other{# tệp}}</translation>
 <translation id="495170559598752135">Tác vụ</translation>
 <translation id="4953808748584563296">Hình đại diện màu cam mặc định</translation>
@@ -4411,6 +4413,7 @@
 <translation id="5575528586625653441">Đã xảy ra lỗi với yêu cầu đăng ký chế độ minh họa.</translation>
 <translation id="557722062034137776">Đặt lại thiết bị sẽ không ảnh hưởng tới những tài khoản Google của bạn hoặc bất kỳ dữ liệu nào được đồng bộ hóa với những tài khoản này. Tuy nhiên, tất cả các tệp lưu trên thiết bị của bạn sẽ bị xóa.</translation>
 <translation id="5578059481725149024">Tự động đăng nhập</translation>
+<translation id="5581134892342029705">Bản dịch sang <ph name="LANGUAGE" /> đã hoàn tất</translation>
 <translation id="558170650521898289">Xác minh Trình điều khiển Ổ cứng của Microsoft Windows</translation>
 <translation id="5581972110672966454">Không thể kết nối thiết bị với miền này. Vui lòng thử lại hoặc liên hệ với quản trị viên hay chủ sở hữu thiết bị. Mã lỗi: <ph name="ERROR_CODE" />.</translation>
 <translation id="5582839680698949063">Menu chính</translation>
@@ -6806,6 +6809,7 @@
 <translation id="8054563304616131773">Vui lòng nhập địa chỉ email hợp lệ</translation>
 <translation id="8054883179223321715">Tương thích với các trang web video cụ thể</translation>
 <translation id="8054921503121346576">Đã kết nối bàn phím USB</translation>
+<translation id="8057414620575339583">Bảng tìm kiếm bên</translation>
 <translation id="8058655154417507695">Năm hết hạn</translation>
 <translation id="8058986560951482265">Giật hình</translation>
 <translation id="8059417245945632445">&amp;Kiểm tra thiết bị</translation>
@@ -6857,6 +6861,7 @@
 <translation id="81020759409809034">Vị trí cục bộ trên thiết bị</translation>
 <translation id="8102139037507939978">Xóa thông tin nhận dạng cá nhân khỏi tệp system_logs.txt.</translation>
 <translation id="8104088837833760645">Tải hồ sơ eSIM xuống</translation>
+<translation id="8105368624971345109">Tắt</translation>
 <translation id="8107015733319732394">Đang cài đặt Cửa hàng Google Play trên <ph name="DEVICE_TYPE" /> của bạn. Quá trình này có thể mất vài phút.</translation>
 <translation id="810728361871746125">Độ phân giải màn hình</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Không có cookie bên thứ ba}=1{Đã chặn 1 cookie bên thứ ba}other{Đã chặn # cookie bên thứ ba}}</translation>
@@ -7231,6 +7236,7 @@
 <translation id="8528074251912154910">Thêm ngôn ngữ</translation>
 <translation id="8528962588711550376">Đang đăng nhập.</translation>
 <translation id="8529925957403338845">Lỗi kết nối khi Chia sẻ Internet tức thì</translation>
+<translation id="8531701051932785007">Đang tắt tính năng Duyệt web an toàn có tăng cường bảo vệ</translation>
 <translation id="8534656636775144800">Rất tiếc! Đã xảy ra lỗi khi tìm cách tham gia miền. Vui lòng thử lại.</translation>
 <translation id="8535005006684281994">URL Gia hạn Chứng chỉ của Netscape</translation>
 <translation id="8536956381488731905">Âm thanh khi nhấn phím</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 263567f..c6ae303 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -2723,6 +2723,7 @@
 <translation id="3788331399335602504">这些文件</translation>
 <translation id="3788401245189148511">该扩展程序想要:</translation>
 <translation id="3789841737615482174">安装</translation>
+<translation id="3790417903123637354">出了点问题。请稍后重试</translation>
 <translation id="379082410132524484">您的卡已过期</translation>
 <translation id="3792890930871100565">断开打印机连接</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome 在您的计算机上未发现有害软件 • 1 天前检查过}other{Chrome 在您的计算机上未发现有害软件 • {NUM_DAYS} 天前检查过}}</translation>
@@ -3807,6 +3808,7 @@
 <translation id="4943691134276646401">“<ph name="CHROME_EXTENSION_NAME" />”想连接到串行端口</translation>
 <translation id="4944310289250773232">此项身份验证服务由 <ph name="SAML_DOMAIN" /> 托管</translation>
 <translation id="4945439665401275950">若要设置指纹,请让您的孩子轻触电源按钮。您孩子的指纹数据会安全地存储在此 <ph name="DEVICE_TYPE" /> 上,绝不会外泄。</translation>
+<translation id="4946459324029651239">您将获享标准保护</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{1 个文件}other{# 个文件}}</translation>
 <translation id="495170559598752135">操作</translation>
 <translation id="4953808748584563296">默认的橙色头像</translation>
@@ -4390,6 +4392,7 @@
 <translation id="5575528586625653441">请求注册演示模式时出问题了。</translation>
 <translation id="557722062034137776">重置您的设备不会影响您的 Google 帐号或已同步到这些帐号的任何数据,但您的设备中本地保存的所有文件都将被删除。</translation>
 <translation id="5578059481725149024">自动登录</translation>
+<translation id="5581134892342029705">已将源语言翻译成<ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Microsoft Windows 硬件驱动程序验证</translation>
 <translation id="5581972110672966454">无法将设备加入到网域中。请重试,或与设备所有者/管理员联系。错误代码:<ph name="ERROR_CODE" />。</translation>
 <translation id="5582839680698949063">主菜单</translation>
@@ -6784,6 +6787,7 @@
 <translation id="8054563304616131773">请输入有效的电子邮件地址</translation>
 <translation id="8054883179223321715">适用于特定视频网站</translation>
 <translation id="8054921503121346576">USB键盘已连接</translation>
+<translation id="8057414620575339583">侧边搜索</translation>
 <translation id="8058655154417507695">到期年份</translation>
 <translation id="8058986560951482265">不流畅</translation>
 <translation id="8059417245945632445">检查设备(&amp;I)</translation>
@@ -6835,6 +6839,7 @@
 <translation id="81020759409809034">本地位置</translation>
 <translation id="8102139037507939978">从 system_logs.txt 中删除个人身份信息。</translation>
 <translation id="8104088837833760645">下载 eSIM 卡配置文件</translation>
+<translation id="8105368624971345109">关闭</translation>
 <translation id="8107015733319732394">正在在您的 <ph name="DEVICE_TYPE" /> 上安装 Google Play 商店。这可能需要几分钟的时间。</translation>
 <translation id="810728361871746125">显示屏分辨率</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{无第三方 Cookie}=1{已屏蔽 1 个第三方 Cookie}other{已屏蔽 # 个第三方 Cookie}}</translation>
@@ -7209,6 +7214,7 @@
 <translation id="8528074251912154910">添加语言</translation>
 <translation id="8528962588711550376">正在登录。</translation>
 <translation id="8529925957403338845">即时网络共享连接失败</translation>
+<translation id="8531701051932785007">“增强型安全浏览”功能处于关闭状态</translation>
 <translation id="8534656636775144800">糟糕!尝试加入该网域时出错了。请重试。</translation>
 <translation id="8535005006684281994">Netscape 证书续订网址</translation>
 <translation id="8536956381488731905">按键音效</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 10b94a0..749eee53f 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -252,7 +252,6 @@
 <translation id="1244265436519979884">正在執行 Linux 還原</translation>
 <translation id="1244303850296295656">擴充功能錯誤</translation>
 <translation id="1246863218384630739">無法安裝「<ph name="VM_NAME" />」:圖片網址已傳回 <ph name="HTTP_ERROR" /> 錯誤代碼。請聯絡您的管理員。</translation>
-<translation id="1247071602516579380">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的平板電腦</translation>
 <translation id="1251366534849411931">缺少預期的開頭大括弧:<ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">此操作會清除網站儲存的資料 (共 <ph name="TOTAL_USAGE" />),以及所安裝的應用程式</translation>
 <translation id="1251578593170406502">正在掃瞄流動數據網絡…</translation>
@@ -439,7 +438,6 @@
 <translation id="144283815522798837">已選取 <ph name="NUMBER_OF_ITEMS_SELECTED" /> 個項目</translation>
 <translation id="1442851588227551435">設定使用中的 Kerberos 票證</translation>
 <translation id="1444628761356461360">這項設定是由裝置擁有者「<ph name="OWNER_EMAIL" />」管理。</translation>
-<translation id="1445005312224723356">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的手機</translation>
 <translation id="144518587530125858">無法為主題背景載入「<ph name="IMAGE_PATH" />」。</translation>
 <translation id="1449191289887455076">再次按下「<ph name="CURRENTKEY" />」鍵即可確認指派設定並<ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">另存為單一檔案網頁</translation>
@@ -871,7 +869,6 @@
 <translation id="1855079636134697549">攝錄機已開啟</translation>
 <translation id="1856715684130786728">新增位置…</translation>
 <translation id="1858585891038687145">信任這個用於識別軟件製造商的憑證</translation>
-<translation id="1859787252990099899">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的不明裝置</translation>
 <translation id="1861262398884155592">此資料夾中沒有內容</translation>
 <translation id="1862311223300693744">您有安裝任何特殊的 VPN、Proxy、防火牆或 NAS 軟件
     嗎?</translation>
@@ -1247,7 +1244,6 @@
 <translation id="2242687258748107519">檔案資料</translation>
 <translation id="2246549592927364792">要從 Google 取得圖片說明嗎?</translation>
 <translation id="2247738527273549923">您的裝置由您的機構管理</translation>
-<translation id="2249061317998743208">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的遊戲控制器</translation>
 <translation id="2249111429176737533">在分頁視窗中開啟</translation>
 <translation id="2249605167705922988">例如:1-5、8、11-13</translation>
 <translation id="2251218783371366160">使用系統檢視器開啟</translation>
@@ -2009,7 +2005,6 @@
 <translation id="3007771295016901659">複製標籤</translation>
 <translation id="3008232374986381779">在您的 <ph name="DEVICE_TYPE" /> 上執行 Linux 工具、編輯器和整合開發環境 (IDE)。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">重設權限</translation>
-<translation id="3008396025115884998">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的音訊裝置</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> 要求您在今天內連接 Wi-Fi 並下載更新,或使用按用量收費連線的下載更新 (可能需支付費用)。}other{<ph name="MANAGER" /> 要求您連接 Wi-Fi 並在期限前下載更新,或使用按用量收費連線的下載更新 (可能需支付費用)。}}</translation>
 <translation id="3009300415590184725">您確定要取消流動數據服務設定程序嗎?</translation>
 <translation id="3009779501245596802">索引數據庫</translation>
@@ -2315,7 +2310,6 @@
 <translation id="3348038390189153836">偵測到卸除式裝置</translation>
 <translation id="3348131053948466246">提供咗 Emoji 建議。㩒向上鍵或者向下鍵就可以導覽,㩒 Enter 鍵就可以插入 Emoji。</translation>
 <translation id="3349933790966648062">記憶體使用量</translation>
-<translation id="3354972872297836698">無法與裝置「<ph name="DEVICE_NAME" />」配對,請選取裝置後再試一次</translation>
 <translation id="3355936511340229503">連線錯誤</translation>
 <translation id="3356580349448036450">完成</translation>
 <translation id="3359256513598016054">憑證政策限制</translation>
@@ -2523,6 +2517,7 @@
 <translation id="3557101512409028104">透過 Family Link 設定網站限制和裝置使用時間限制</translation>
 <translation id="3559262020195162408">無法在裝置上安裝政策。</translation>
 <translation id="3559533181353831840">大約剩餘 <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">接收相關操作 (如分割畫面和切換桌面等) 的震動確認。</translation>
 <translation id="3560034655160545939">拼字檢查(&amp;S)</translation>
 <translation id="3562423906127931518">此程序可能需時幾分鐘。正在設定 Linux 容器。</translation>
 <translation id="3562655211539199254">查看最近透過手機開啟的 Chrome 分頁</translation>
@@ -2747,6 +2742,7 @@
 <translation id="3788331399335602504">這些檔案</translation>
 <translation id="3788401245189148511">要求存取下列權限:</translation>
 <translation id="3789841737615482174">安裝</translation>
+<translation id="3790417903123637354">發生錯誤,請稍後再試</translation>
 <translation id="379082410132524484">您的付款卡已過期</translation>
 <translation id="3792890930871100565">中斷打印機連線</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome 在您的電腦上找不到有害軟件 • 上次檢查時間:1 天前}other{Chrome 在您的電腦上找不到有害軟件 • 上次檢查時間:{NUM_DAYS} 天前}}</translation>
@@ -3146,7 +3142,6 @@
 <translation id="4200689466366162458">自訂字詞</translation>
 <translation id="4200983522494130825">新分頁(&amp;T)</translation>
 <translation id="4201546031411513170">您隨時可在設定中選擇要同步的資料。</translation>
-<translation id="4202417625268941299">開啟安全瀏覽強化防護功能後,即可獲得 Chrome 最強大的安全防護</translation>
 <translation id="420283545744377356">關閉螢幕保護程式</translation>
 <translation id="4206144641569145248">外星人</translation>
 <translation id="4206323443866416204">意見反映報告</translation>
@@ -3653,7 +3648,6 @@
 <translation id="4759238208242260848">下載</translation>
 <translation id="4761104368405085019">使用您的麥克風</translation>
 <translation id="4762718786438001384">裝置磁碟的儲存空間嚴重不足</translation>
-<translation id="4762898026821161650">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的電腦</translation>
 <translation id="4763408175235639573">系統在您瀏覽此網頁時已設定下列 Cookie</translation>
 <translation id="4765582662863429759">允許「Android 訊息」由您的手機轉送短訊至 Chromebook</translation>
 <translation id="4768332406694066911">您具備下列組織的識別憑證</translation>
@@ -3835,7 +3829,7 @@
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」要求與序列連接埠連線</translation>
 <translation id="4944310289250773232">此驗證服務由 <ph name="SAML_DOMAIN" /> 代管</translation>
 <translation id="4945439665401275950">如要設定指紋,請讓子女輕觸開關按鈕。系統會妥善地將您子女的指紋資料儲存在此 <ph name="DEVICE_TYPE" /> 上,絕不會外洩。</translation>
-<translation id="4946459324029651239">你將獲得標準防護</translation>
+<translation id="4946459324029651239">您將取得標準保護功能</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{1 個檔案}other{# 個檔案}}</translation>
 <translation id="495170559598752135">動作</translation>
 <translation id="4953808748584563296">預設橙色圖片</translation>
@@ -4420,7 +4414,7 @@
 <translation id="5575528586625653441">示範註冊要求發生問題。</translation>
 <translation id="557722062034137776">重設裝置並不會影響您的 Google 帳戶,以及任何與這些帳戶同步處理的數據。不過,裝置中所有本機儲存檔案將被刪除。</translation>
 <translation id="5578059481725149024">自動登入</translation>
-<translation id="5581134892342029705">翻譯為<ph name="LANGUAGE" />的作業已完成</translation>
+<translation id="5581134892342029705">已經完成翻譯去<ph name="LANGUAGE" /></translation>
 <translation id="558170650521898289">Microsoft Windows 硬件驅動程式驗證</translation>
 <translation id="5581972110672966454">無法將裝置加入網域。請再試一次,或聯絡您的裝置擁有者或管理員。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="5582839680698949063">主選單</translation>
@@ -4925,6 +4919,7 @@
 <translation id="6112931163620622315">請檢查手機</translation>
 <translation id="6113434369102685411">設定 Chrome 瀏覽器和 <ph name="DEVICE_TYPE" /> 啟動器的預設搜尋引擎</translation>
 <translation id="6113942107547980621">如要使用 Smart Lock,請在手機上切換至主要使用者設定檔</translation>
+<translation id="611684075852771314">這些記錄已儲存至「我的檔案」,檔名為</translation>
 <translation id="6116921718742659598">變更語言和輸入設定</translation>
 <translation id="6119927814891883061">將裝置個名改做 <ph name="DEVICE_NAME" /></translation>
 <translation id="6120205520491252677">將這個網頁固定到 [開始] 螢幕…</translation>
@@ -5701,6 +5696,7 @@
 <translation id="6930036377490597025">外置安全密鑰或內置感應器</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{已拒絕 1 個擴充程式}other{已拒絕 # 個擴充程式}}</translation>
 <translation id="6930321203306643451">升級完成</translation>
+<translation id="6931690462168617033">點按強度</translation>
 <translation id="6935286146439255109">找不到紙匣</translation>
 <translation id="693807610556624488">寫入操作長度超過「<ph name="DEVICE_NAME" />」屬性的上限。</translation>
 <translation id="6938386202199793006">你有 1 部儲存咗嘅打印機。</translation>
@@ -5834,7 +5830,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{1 分鐘前已執行安全檢查}other{{NUM_MINS} 分鐘前已執行安全檢查}}</translation>
 <translation id="7057767408836081338">無法取得應用程式資料,正在嘗試繼續執行應用程式…</translation>
 <translation id="7058024590501568315">隱藏的網絡</translation>
-<translation id="70582545822664495">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的滑鼠</translation>
 <translation id="7059858479264779982">設為自動啟動</translation>
 <translation id="7062222374113411376">允許最近關閉的網站完成傳送和接收資料動作 (建議)</translation>
 <translation id="7063129466199351735">正在處理捷徑…</translation>
@@ -5998,7 +5993,6 @@
 <translation id="7257173066616499747">Wi-Fi 網絡</translation>
 <translation id="725758059478686223">列印服務</translation>
 <translation id="7257666756905341374">讀取您複製並貼上的資料</translation>
-<translation id="7258006747130724016">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的攝影機</translation>
 <translation id="7258192266780953209">變形</translation>
 <translation id="7258225044283673131">應用程式沒有回應。選取「強制關閉」即可關閉應用程式。</translation>
 <translation id="7262004276116528033">此登入服務是由 <ph name="SAML_DOMAIN" /> 代管</translation>
@@ -6795,7 +6789,6 @@
 <translation id="8037117027592400564">讀取使用合成語音朗讀的所有文字</translation>
 <translation id="8037357227543935929">要求 (預設)</translation>
 <translation id="803771048473350947">檔案</translation>
-<translation id="8038399858950372766">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的鍵盤</translation>
 <translation id="8041089156583427627">提供意見</translation>
 <translation id="8042142357103597104">文字透明度</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> 沒有回應。</translation>
@@ -6819,7 +6812,7 @@
 <translation id="8054563304616131773">請輸入有效的電郵地址</translation>
 <translation id="8054883179223321715">適用於特定影片網站</translation>
 <translation id="8054921503121346576">已連接 USB 鍵盤</translation>
-<translation id="8057414620575339583">側邊搜尋</translation>
+<translation id="8057414620575339583">側欄搜尋</translation>
 <translation id="8058655154417507695">到期年份</translation>
 <translation id="8058986560951482265">畫面不穩定</translation>
 <translation id="8059417245945632445">檢查裝置 (&amp;I)</translation>
@@ -6834,6 +6827,7 @@
 <translation id="8064279191081105977">群組 <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">連線對話框</translation>
 <translation id="8069615408251337349">Google 雲端列印</translation>
+<translation id="8070662218171013510">觸動回饋</translation>
 <translation id="8071432093239591881">以圖片形式列印</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />應用程式資料泛指應用程式根據開發人員設定所儲存的任何資料,包括聯絡人、訊息和相片等資料。<ph name="END_PARAGRAPH1" />
 <ph name="BEGIN_PARAGRAPH2" />備份資料將不會佔用您子女的「雲端硬碟」儲存空間配額。<ph name="END_PARAGRAPH2" />
@@ -6871,6 +6865,7 @@
 <translation id="81020759409809034">本地位置</translation>
 <translation id="8102139037507939978">移除 system_logs.txt 中的個人識別資料。</translation>
 <translation id="8104088837833760645">下載 eSIM 卡設定檔</translation>
+<translation id="8105368624971345109">關閉</translation>
 <translation id="8107015733319732394">正在為 <ph name="DEVICE_TYPE" /> 安裝「Google Play 商店」。這可能需時幾分鐘。</translation>
 <translation id="810728361871746125">螢幕解像度</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{沒有第三方 Cookie}=1{已封鎖 1 個第三方 Cookie}other{已封鎖 # 個第三方 Cookie}}</translation>
@@ -6935,7 +6930,6 @@
 <translation id="8168071266284693455">您的書籤、密碼、記錄和其他設定會同步至所有裝置</translation>
 <translation id="8168435359814927499">內容</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{將分頁新增至閱讀清單}other{將分頁新增至閱讀清單}}</translation>
-<translation id="8169849063724750395">重新開啟</translation>
 <translation id="8171334254070436367">隱藏所有資訊卡</translation>
 <translation id="8174047975335711832">裝置資料</translation>
 <translation id="8174876712881364124">備份至「Google 雲端硬碟」。您可隨時輕鬆還原資料或改用其他裝置。備份包含應用程式資料。備份會上載至 Google,並使用您子女的 Google 帳戶密碼加密。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation>
@@ -7009,7 +7003,6 @@
 <translation id="8249615410597138718">傳送至您的裝置</translation>
 <translation id="8249672078237421304">詢問是否把網頁翻譯為您慣用的語言</translation>
 <translation id="8251441930213048644">立即重新整理</translation>
-<translation id="8251509999076836464">正在配對「<ph name="DEVICE_NAME" />」</translation>
 <translation id="8251578425305135684">已移除縮圖。</translation>
 <translation id="825238165904109940">一律顯示完整網址</translation>
 <translation id="8252569384384439529">正在上載…</translation>
@@ -7247,11 +7240,10 @@
 <translation id="8528074251912154910">新增語言</translation>
 <translation id="8528962588711550376">正在登入。</translation>
 <translation id="8529925957403338845">即時網絡共享連線失敗</translation>
-<translation id="8531701051932785007">已關閉安全瀏覽強化防護功能</translation>
+<translation id="8531701051932785007">「強化安全瀏覽」功能已關閉</translation>
 <translation id="8534656636775144800">抱歉!嘗試加入網域時發生錯誤,請再試一次。</translation>
 <translation id="8535005006684281994">Netscape 憑證更新網址</translation>
 <translation id="8536956381488731905">按鍵音效</translation>
-<translation id="8538718737588735385">重新開啟</translation>
 <translation id="8539727552378197395">否 (限 Http)</translation>
 <translation id="8539766201049804895">升級</translation>
 <translation id="8540136935098276800">請輸入正確格式的網址</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 06bc254d..78ee185 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -250,7 +250,6 @@
 <translation id="1244265436519979884">目前正在執行 Linux 還原作業</translation>
 <translation id="1244303850296295656">擴充功能錯誤</translation>
 <translation id="1246863218384630739">無法安裝 <ph name="VM_NAME" />:映像檔網址傳回 <ph name="HTTP_ERROR" /> 錯誤代碼。請與管理員聯絡。</translation>
-<translation id="1247071602516579380">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的平板電腦</translation>
 <translation id="1251366534849411931">缺少左大括弧:<ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">這會清除網站儲存的資料 (共 <ph name="TOTAL_USAGE" />),以及所安裝的應用程式</translation>
 <translation id="1251578593170406502">正在掃描行動數據網路…</translation>
@@ -437,7 +436,6 @@
 <translation id="144283815522798837">已選取 <ph name="NUMBER_OF_ITEMS_SELECTED" /> 個項目</translation>
 <translation id="1442851588227551435">設定使用中的 Kerberos 票證</translation>
 <translation id="1444628761356461360">這項設定是由裝置擁有者「<ph name="OWNER_EMAIL" />」管理。</translation>
-<translation id="1445005312224723356">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的手機</translation>
 <translation id="144518587530125858"> 無法載入主題的「<ph name="IMAGE_PATH" />」。</translation>
 <translation id="1449191289887455076">再次按下「<ph name="CURRENTKEY" />」鍵即可確認指派設定並<ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">另存為單一檔案網頁</translation>
@@ -861,7 +859,6 @@
 <translation id="1855079636134697549">攝影機已開啟</translation>
 <translation id="1856715684130786728">新增位置...</translation>
 <translation id="1858585891038687145">信任這個用於識別軟體製造商的憑證</translation>
-<translation id="1859787252990099899">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的不明裝置</translation>
 <translation id="1861262398884155592">這個資料夾是空的</translation>
 <translation id="1862311223300693744">你是否安裝了任何特殊的 VPN、Proxy、防火牆或網路附加儲存 (NAS) 軟體?</translation>
 <translation id="1863182668524159459">找不到序列埠</translation>
@@ -1236,7 +1233,6 @@
 <translation id="2242687258748107519">檔案資訊</translation>
 <translation id="2246549592927364792">要取得 Google 提供的圖片說明嗎?</translation>
 <translation id="2247738527273549923">這部裝置是由貴機構管理</translation>
-<translation id="2249061317998743208">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的遊戲控制器</translation>
 <translation id="2249111429176737533">在分頁視窗中開啟</translation>
 <translation id="2249605167705922988">例如:1-5、8、11-13</translation>
 <translation id="2251218783371366160">使用系統檢視器開啟</translation>
@@ -1995,7 +1991,6 @@
 <translation id="3007771295016901659">複製分頁</translation>
 <translation id="3008232374986381779">在 <ph name="DEVICE_TYPE" /> 上執行 Linux 工具、編輯器和 IDE。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">重設權限</translation>
-<translation id="3008396025115884998">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的音訊裝置</translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> 要求你在今天內透過 Wi-Fi 連線下載更新,或使用計量付費連線下載更新 (可能要支付流量費用)。}other{<ph name="MANAGER" /> 要求你在期限內透過 Wi-Fi 連線下載更新,或使用計量付費連線下載更新 (可能要支付流量費用)。}}</translation>
 <translation id="3009300415590184725">你確定要取消行動數據服務設定程序嗎?</translation>
 <translation id="3009779501245596802">索引資料庫</translation>
@@ -2301,7 +2296,6 @@
 <translation id="3348038390189153836">偵測到卸除式裝置</translation>
 <translation id="3348131053948466246">已提供表情符號建議。使用向上鍵或向下鍵進行瀏覽,按下 Enter 鍵即可插入表情符號。</translation>
 <translation id="3349933790966648062">記憶體使用量</translation>
-<translation id="3354972872297836698">無法與裝置「<ph name="DEVICE_NAME" />」配對,請選取裝置後再試一次</translation>
 <translation id="3355936511340229503">連線錯誤</translation>
 <translation id="3356580349448036450">完成</translation>
 <translation id="3359256513598016054">憑證原則限制</translation>
@@ -2509,6 +2503,7 @@
 <translation id="3557101512409028104">透過 Family Link 設定網站限制和裝置使用時間限制</translation>
 <translation id="3559262020195162408">無法在裝置上安裝政策。</translation>
 <translation id="3559533181353831840">大約還剩 <ph name="TIME_LEFT" /></translation>
+<translation id="3559697822483154494">接收相關操作 (如分割畫面和切換桌面等) 的震動確認。</translation>
 <translation id="3560034655160545939">拼字檢查(&amp;S)</translation>
 <translation id="3562423906127931518">這個過程可能需要幾分鐘的時間。正在設定 Linux 容器。</translation>
 <translation id="3562655211539199254">查看最近透過手機開啟的 Chrome 分頁</translation>
@@ -2733,6 +2728,7 @@
 <translation id="3788331399335602504">這些檔案</translation>
 <translation id="3788401245189148511">要求下列權限:</translation>
 <translation id="3789841737615482174">安裝</translation>
+<translation id="3790417903123637354">發生錯誤,請稍後再試</translation>
 <translation id="379082410132524484">你的卡片已過期</translation>
 <translation id="3792890930871100565">中斷印表機連線</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{Chrome 並未在電腦上發現任何有害軟體 • 上次檢查時間:1 天前}other{Chrome 並未在電腦上發現任何有害軟體 • 上次檢查時間:{NUM_DAYS} 天前}}</translation>
@@ -3131,7 +3127,6 @@
 <translation id="4200689466366162458">自訂字詞</translation>
 <translation id="4200983522494130825">新增分頁(&amp;T)</translation>
 <translation id="4201546031411513170">你隨時可以在設定中選擇要同步處理的資料。</translation>
-<translation id="4202417625268941299">開啟安全瀏覽強化防護功能後,即可獲得 Chrome 最強大的安全防護</translation>
 <translation id="420283545744377356">關閉螢幕保護程式</translation>
 <translation id="4206144641569145248">外星人</translation>
 <translation id="4206323443866416204">意見回饋報告</translation>
@@ -3637,7 +3632,6 @@
 <translation id="4759238208242260848">下載</translation>
 <translation id="4761104368405085019">使用你的麥克風</translation>
 <translation id="4762718786438001384">裝置磁碟空間嚴重不足</translation>
-<translation id="4762898026821161650">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的電腦</translation>
 <translation id="4763408175235639573">系統在你瀏覽這個網頁時設定了下列 Cookie</translation>
 <translation id="4765582662863429759">允許 Android 訊息將簡訊內容從手機轉送到 Chromebook</translation>
 <translation id="4768332406694066911">您有這些機構核發給您的憑證</translation>
@@ -4908,6 +4902,7 @@
 <translation id="6112931163620622315">請查看你的手機</translation>
 <translation id="6113434369102685411">設定 Chrome 瀏覽器和 <ph name="DEVICE_TYPE" /> 啟動器的預設搜尋引擎</translation>
 <translation id="6113942107547980621">如要使用 Smart Lock,請在手機上切換到主要使用者設定檔</translation>
+<translation id="611684075852771314">這些記錄已儲存至「我的檔案」,檔名為</translation>
 <translation id="6116921718742659598">變更語言和輸入設定</translation>
 <translation id="6119927814891883061">將裝置命名為「<ph name="DEVICE_NAME" />」</translation>
 <translation id="6120205520491252677">將這個網頁固定到開始畫面...</translation>
@@ -5684,6 +5679,7 @@
 <translation id="6930036377490597025">外部的安全金鑰或內建的感應器</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{已拒絕擴充功能}other{已拒絕 # 個擴充功能}}</translation>
 <translation id="6930321203306643451">升級完成</translation>
+<translation id="6931690462168617033">點按強度</translation>
 <translation id="6935286146439255109">找不到紙匣</translation>
 <translation id="693807610556624488">對以下裝置執行的寫入作業超過屬性長度上限:「<ph name="DEVICE_NAME" />」。</translation>
 <translation id="6938386202199793006">你有 1 台已儲存的印表機。</translation>
@@ -5817,7 +5813,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{1 分鐘前已執行安全檢查}other{{NUM_MINS} 分鐘前已執行安全檢查}}</translation>
 <translation id="7057767408836081338">無法取得應用程式資料,正在嘗試繼續執行應用程式...</translation>
 <translation id="7058024590501568315">隱藏的網路</translation>
-<translation id="70582545822664495">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的滑鼠</translation>
 <translation id="7059858479264779982">設為自動啟動</translation>
 <translation id="7062222374113411376">允許最近關閉的網站完成資料收發作業 (建議)</translation>
 <translation id="7063129466199351735">正在處理捷徑...</translation>
@@ -5981,7 +5976,6 @@
 <translation id="7257173066616499747">Wi-Fi 網路</translation>
 <translation id="725758059478686223">列印服務</translation>
 <translation id="7257666756905341374">讀取你複製和貼上的資料</translation>
-<translation id="7258006747130724016">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的攝影機</translation>
 <translation id="7258192266780953209">轉換</translation>
 <translation id="7258225044283673131">應用程式沒有回應。選取「強制關閉」即可關閉應用程式。</translation>
 <translation id="7262004276116528033">這是由 <ph name="SAML_DOMAIN" /> 代管的登入服務。</translation>
@@ -6778,7 +6772,6 @@
 <translation id="8037117027592400564">讀取使用合成語音朗讀的所有文字</translation>
 <translation id="8037357227543935929">詢問 (預設)</translation>
 <translation id="803771048473350947">檔案</translation>
-<translation id="8038399858950372766">裝置 <ph name="DEVICE_INDEX" /> (共 <ph name="DEVICE_COUNT" /> 個),名為「<ph name="DEVICE_NAME" />」的鍵盤</translation>
 <translation id="8041089156583427627">提供意見</translation>
 <translation id="8042142357103597104">文字不透明度</translation>
 <translation id="8044262338717486897">「<ph name="LINUX_APP_NAME" />」沒有回應。</translation>
@@ -6817,6 +6810,7 @@
 <translation id="8064279191081105977">「<ph name="GROUP_NAME" />」群組 - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation>
 <translation id="8066444921260601116">連線對話方塊</translation>
 <translation id="8069615408251337349">Google 雲端列印</translation>
+<translation id="8070662218171013510">觸動回饋</translation>
 <translation id="8071432093239591881">以圖片形式列印</translation>
 <translation id="8073499153683482226"><ph name="BEGIN_PARAGRAPH1" />應用程式資料泛指應用程式依據開發人員設定所儲存的任何資料,包括聯絡人、訊息和相片等。<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />備份資料不會計入貴子女帳戶的雲端硬碟儲存空間配額。<ph name="END_PARAGRAPH2" />
@@ -6854,6 +6848,7 @@
 <translation id="81020759409809034">本機位置</translation>
 <translation id="8102139037507939978">移除 system_logs.txt 中的個人識別資訊。</translation>
 <translation id="8104088837833760645">下載 eSIM 卡設定檔</translation>
+<translation id="8105368624971345109">關閉</translation>
 <translation id="8107015733319732394">正在為 <ph name="DEVICE_TYPE" /> 安裝 Google Play 商店。這可能需要幾分鐘時間。</translation>
 <translation id="810728361871746125">螢幕解析度</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{沒有第三方 Cookie}=1{已封鎖 1 組第三方 Cookie}other{已封鎖 # 組第三方 Cookie}}</translation>
@@ -6918,7 +6913,6 @@
 <translation id="8168071266284693455">你的書籤、密碼和歷史記錄等資料會在所有裝置上保持同步</translation>
 <translation id="8168435359814927499">內容</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{將分頁新增至閱讀清單}other{將分頁新增至閱讀清單}}</translation>
-<translation id="8169849063724750395">重新開啟</translation>
 <translation id="8171334254070436367">隱藏所有資訊卡</translation>
 <translation id="8174047975335711832">裝置資訊</translation>
 <translation id="8174876712881364124">備份到 Google 雲端硬碟。你隨時可以輕鬆還原資料或改用其他裝置。備份內容包含應用程式資料。備份內容會上傳到 Google,並以貴子女帳戶的 Google 帳戶密碼加密。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation>
@@ -6992,7 +6986,6 @@
 <translation id="8249615410597138718">傳送至你的裝置</translation>
 <translation id="8249672078237421304">詢問是否將網頁翻譯成你慣用的語言</translation>
 <translation id="8251441930213048644">立即更新</translation>
-<translation id="8251509999076836464">正在配對「<ph name="DEVICE_NAME" />」</translation>
 <translation id="8251578425305135684">已移除縮圖。</translation>
 <translation id="825238165904109940">一律顯示完整網址</translation>
 <translation id="8252569384384439529">上傳中...</translation>
@@ -7234,7 +7227,6 @@
 <translation id="8534656636775144800">糟糕!嘗試加入網域時發生錯誤,請再試一次。</translation>
 <translation id="8535005006684281994">Netscape 憑證更新網址</translation>
 <translation id="8536956381488731905">按鍵音效</translation>
-<translation id="8538718737588735385">重新開啟</translation>
 <translation id="8539727552378197395">否 (限 Http)</translation>
 <translation id="8539766201049804895">升級</translation>
 <translation id="8540136935098276800">請輸入正確格式的網址</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 06daec4a..eea8c21 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -253,7 +253,6 @@
 <translation id="1244265436519979884">Ukubuyiselwa kwe-Linux manje kuyaqhubeka</translation>
 <translation id="1244303850296295656">Iphutha lesandiso</translation>
 <translation id="1246863218384630739">Ayikwazanga ukufaka i-<ph name="VM_NAME" />: I-URL yomfanekiso ibuyisele ikhodi lephutha le-<ph name="HTTP_ERROR" />. Sicela uxhumane nomlawuli wakho.</translation>
-<translation id="1247071602516579380">Idivayisi ye-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Ithebulethi ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="1251366534849411931">I-brace egoqekile yokuvuleka okulindelwe: <ph name="ERROR_LINE" /></translation>
 <translation id="1251480783646955802">Lokhu kuzosula idatha engu-<ph name="TOTAL_USAGE" /> egcinwe amasayithi nezinhlelo zokusebenza ezifakiwe</translation>
 <translation id="1251578593170406502">Iskena amanethiwekhi wedatha yeselula...</translation>
@@ -440,7 +439,6 @@
 <translation id="144283815522798837"><ph name="NUMBER_OF_ITEMS_SELECTED" /> okukhethiwe</translation>
 <translation id="1442851588227551435">Setha ithikithi le-Kerberos elisebenzayo</translation>
 <translation id="1444628761356461360">Lokhu kulungiselelwa kuphethwe umnikazi wedivayisi, <ph name="OWNER_EMAIL" />.</translation>
-<translation id="1445005312224723356">Idivayisi engu-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Ifoni ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="144518587530125858">Ayikwazanga ukulayisha i-'<ph name="IMAGE_PATH" />' yetimu.</translation>
 <translation id="1449191289887455076">Cindezela i-“<ph name="CURRENTKEY" />” futhi ukuqinisekisa umsebenzi ne-<ph name="RESPONSE" /></translation>
 <translation id="1451375123200651445">Ikhasi lewebhu, ifayela eyodwa</translation>
@@ -871,7 +869,6 @@
 <translation id="1855079636134697549">Ikhamera ivuliwe</translation>
 <translation id="1856715684130786728">Engeza indawo...</translation>
 <translation id="1858585891038687145">Themba lesi sitifiketi ukuze sikhombe omaka besofthiwe</translation>
-<translation id="1859787252990099899">Idivayisi ye-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Idivayisi engaziwa ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="1861262398884155592">Le folda ayinalutho</translation>
 <translation id="1862311223300693744">Ingabe unayo isofthiwe ekhethekile ye-VPN, yommeleli, yohlelo lokuvikela noma ye-NAS
     efakiwe?</translation>
@@ -1247,7 +1244,6 @@
 <translation id="2242687258748107519">Ulwazi lwefayela</translation>
 <translation id="2246549592927364792">Thola izincazelo zesithombe kusuka ku-Google?</translation>
 <translation id="2247738527273549923">Idivayisi yakho iphethwe inhlangano yakho</translation>
-<translation id="2249061317998743208">Idivayisi engu-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Isilawuli segeyimu esibizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="2249111429176737533">Kuvule njengewindi elinethebhu</translation>
 <translation id="2249605167705922988">isb. 1-5, 8, 11-13</translation>
 <translation id="2251218783371366160">Vula ngesibukeli sesistimu</translation>
@@ -2009,7 +2005,6 @@
 <translation id="3007771295016901659">Phinda ithebhu</translation>
 <translation id="3008232374986381779">Qalisa amathuluzi e-Linux, abahleli, nama-IDE ku-<ph name="DEVICE_TYPE" /> yakho. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Setha kabusha izimvume</translation>
-<translation id="3008396025115884998">Idivayisi ye-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Idivayisi yomsindo ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="3008694618228964140">{NUM_DAYS,plural, =1{I-<ph name="MANAGER" /> idinga ukuthi uxhumeke ku-Wi-Fi namuhla ukuze ulande isibuyekezo. Noma, ulande ngokuxhuma okwenziwe imitha (kungaba nezinkokhelo).}one{I-<ph name="MANAGER" /> idinga ukuthi uxhume ku-Wi-Fi bese ulanda isibuyekezo ngaphambi kwesikhathi esimisiwe. Noma, ulande ngokuxhuma okwenziwe imitha (kungaba nezinkokhelo).}other{I-<ph name="MANAGER" /> idinga ukuthi uxhume ku-Wi-Fi bese ulanda isibuyekezo ngaphambi kwesikhathi esimisiwe. Noma, ulande ngokuxhuma okwenziwe imitha (kungaba nezinkokhelo).}}</translation>
 <translation id="3009300415590184725">Ingabe uqinisekile ukuthi ufuna ukukhansela inqubo yokusetha yesevisi yedatha yeselula?</translation>
 <translation id="3009779501245596802">Izizinda zemininingwane ezikhonjiwe</translation>
@@ -2315,7 +2310,6 @@
 <translation id="3348038390189153836">Kutholwe idivayisi engasuseka</translation>
 <translation id="3348131053948466246">I-emoji iphakanyisiwe. Cindezela umcibisholo waphezulu noma waphansi ukuze uzulazule kanye no-enter ukuze ufake.</translation>
 <translation id="3349933790966648062">I-Footprint yememori</translation>
-<translation id="3354972872297836698">Ayikwazanga ukubhangqa ku-<ph name="DEVICE_NAME" />; khetha idivayisi ukuzama futhi</translation>
 <translation id="3355936511340229503">Iphutha lokuxhumeka</translation>
 <translation id="3356580349448036450">Qedile</translation>
 <translation id="3359256513598016054">Izithiyo zenqubomgomo yesitifiketi</translation>
@@ -2747,6 +2741,7 @@
 <translation id="3788331399335602504">lawa mafayela</translation>
 <translation id="3788401245189148511">Ingahle:</translation>
 <translation id="3789841737615482174">Faka</translation>
+<translation id="3790417903123637354">Okuthile akuhambanga kahle. Zama futhi emuva kwesikhathi</translation>
 <translation id="379082410132524484">Ikhadi lakho liphelelwe isikhathi</translation>
 <translation id="3792890930871100565">Nqamula amaphrinta</translation>
 <translation id="3793588272211751505">{NUM_DAYS,plural, =1{I-Chrome ayitholanga isofthiwe enobungozi kukhompuyutha yakho • Ihlolwe osukwini olu-1 olwedlule}one{I-Chrome ayitholanga isofthiwe enobungozi kukhompuyutha yakho • Ihlolwe ezinsukwini ezingu-{NUM_DAYS} ezedlule}other{I-Chrome ayitholanga isofthiwe enobungozi kukhompuyutha yakho • Ihlolwe ezinsukwini ezingu-{NUM_DAYS} ezedlule}}</translation>
@@ -3145,7 +3140,6 @@
 <translation id="4200689466366162458">Amagama angokwezifiso</translation>
 <translation id="4200983522494130825">Ithebhu entsha</translation>
 <translation id="4201546031411513170">Ungahlala ukhetha ukuthi yini okumele ivunyelaniswe kuzilungiselelo.</translation>
-<translation id="4202417625268941299">Ngokuphequlula Ngokuphepha Okugqamile, uzothola ukuvikeleka kwe-Chrome okunamandla</translation>
 <translation id="420283545744377356">Vula isilondolozi sesikrini</translation>
 <translation id="4206144641569145248">I-alien</translation>
 <translation id="4206323443866416204">Umbiko wokuphendula</translation>
@@ -3652,7 +3646,6 @@
 <translation id="4759238208242260848">Ukulanda</translation>
 <translation id="4761104368405085019">Sebenzisa imakrofoni yakho</translation>
 <translation id="4762718786438001384">Isikhala sediski yedivayisi sincane kakhulu</translation>
-<translation id="4762898026821161650">Idivayisi ye-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Ikhompyutha ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="4763408175235639573">Amakhukhi alandelayo athunyelwe ngenkathi ubuka leli khasi</translation>
 <translation id="4765582662863429759">Ivumela i-Android Messages ukwethemba imibhalo kusuka efonini yakho kuya ku-Chromebook yakho</translation>
 <translation id="4768332406694066911">Unezitifiketi ezivela kulezi zinhlangano ezikukhombayo</translation>
@@ -5835,7 +5828,6 @@
 <translation id="7057184853669165321">{NUM_MINS,plural, =1{Ukuhlola kokuphepha kusebenze eminithini elingu-1 eledlule}one{Ukuhlola kokuphepha kusebenze emaminithini angu-{NUM_MINS} adlule}other{Ukuhlola kokuphepha kusebenze emaminithini angu-{NUM_MINS} adlule}}</translation>
 <translation id="7057767408836081338">Yehlulekile ukuthola idatha yohlelo lokusebenza, izama ukuqalisa uhlelo lokusebenza noma kunjalo...</translation>
 <translation id="7058024590501568315">Inethiwekhi efihliwe</translation>
-<translation id="70582545822664495">Idivayisi engu-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Imawuzi ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="7059858479264779982">Sethela ukuqalisa ngokuzenzakalela</translation>
 <translation id="7062222374113411376">Vumela amasayithi asanda kuvalwa ukuqeda ukuthumela noma ukwamukela idatha</translation>
 <translation id="7063129466199351735">Icubungula izinqamuleli...</translation>
@@ -5999,7 +5991,6 @@
 <translation id="7257173066616499747">Amanethiwekhi we-Wi-Fi</translation>
 <translation id="725758059478686223">Isevisi yokuphrinta</translation>
 <translation id="7257666756905341374">Funda idatha oyikopishayo uphinde uyinamathisele</translation>
-<translation id="7258006747130724016">Idivayisi ye-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Ikhamera yevidiyo ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="7258192266780953209">Ukuguqulwa</translation>
 <translation id="7258225044283673131">Uhlelo lokusebenza aluphenduli. Khetha okuthi "Phoqa ukuvala" ukuze uvale uhlelo lokusebenza.</translation>
 <translation id="7262004276116528033">Le sevisi yokungena ngemvume isingathwa yi-<ph name="SAML_DOMAIN" /></translation>
@@ -6795,7 +6786,6 @@
 <translation id="8037117027592400564">Funda wonke umbhalo okhulunywayo usebenzisa inkulumo ekhulisiwe</translation>
 <translation id="8037357227543935929">Buza (okuzenzakalelayo)</translation>
 <translation id="803771048473350947">Ifayela</translation>
-<translation id="8038399858950372766">Idivayisi ye-<ph name="DEVICE_INDEX" /> kwezingu-<ph name="DEVICE_COUNT" />, Ikhibhodi ebizwa ngokuthi i-<ph name="DEVICE_NAME" /></translation>
 <translation id="8041089156583427627">Thumela impendulo</translation>
 <translation id="8042142357103597104">I-Opacity yombhalo</translation>
 <translation id="8044262338717486897">I-<ph name="LINUX_APP_NAME" /> ayiphenduli.</translation>
@@ -6819,6 +6809,7 @@
 <translation id="8054563304616131773">Sicela ufake ikheli le-imeyili elilungile</translation>
 <translation id="8054883179223321715">Kuyatholakala kumasayithi wevidiyo athile</translation>
 <translation id="8054921503121346576">Ikhibhodi ye-USB ixhunyiwe</translation>
+<translation id="8057414620575339583">Sesha Ohlangothini</translation>
 <translation id="8058655154417507695">Unyaka wokuphelelwa isikhathi</translation>
 <translation id="8058986560951482265">I-Jerky</translation>
 <translation id="8059417245945632445">&amp;Hlola amadivayisi</translation>
@@ -6870,6 +6861,7 @@
 <translation id="81020759409809034">Endaweni</translation>
 <translation id="8102139037507939978">Susa Ulwazi Lwenkomba Olungokomuntu Siqu ku-system_logs.txt.</translation>
 <translation id="8104088837833760645">Landa iphrofayela ye-eSIM</translation>
+<translation id="8105368624971345109">Vala</translation>
 <translation id="8107015733319732394">Ukufaka i-Google Play Isitolo ku-<ph name="DEVICE_TYPE" /> yakho. Lokhu kungathatha amaminithi ambalwa.</translation>
 <translation id="810728361871746125">Isiboniso sokulungiswa</translation>
 <translation id="8108526232944491552">{COUNT,plural, =0{Awekho amakhukhi enkampani yangaphandle}=1{1 ikhukhi lenkampani yangaphandle livinjelwe}one{# amakhukhi enkampani yangaphandle avinjelwe}other{# amakhukhi enkampani yangaphandle avinjelwe}}</translation>
@@ -6934,7 +6926,6 @@
 <translation id="8168071266284693455">Amabhukhimakhi akho, amaphasiwedi, umlando, nokunye kuyavunyelaniswa kuwo wonke amadivayisi akho</translation>
 <translation id="8168435359814927499">Okuqukethwe</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Engeza Ithebhu Kuhlu Lokufunda}one{Engeza Amathebhu Kuhlu Lokufunda}other{Engeza Amathebhu Kuhlu Lokufunda}}</translation>
-<translation id="8169849063724750395">Phinda uvule</translation>
 <translation id="8171334254070436367">Fihla wonke amakhadi</translation>
 <translation id="8174047975335711832">Ulwazi lwedivayisi</translation>
 <translation id="8174876712881364124">Ukwenza isipele ku-Google Drayivu. Buyisa kalula idatha noma shintsha idivayisi noma kunini. Lesi sipele sibandakanya idatha yohlelo lokusebenza. Izipele zilayishwa ku-Google futhi zibethelwe kusetshenziswa iphasiwedi ye-akhawunti ye-Google yengane yakho. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation>
@@ -7008,7 +6999,6 @@
 <translation id="8249615410597138718">Thumela kumadivayisi akho</translation>
 <translation id="8249672078237421304">Nikezela ngokuhumusha amakhasi angekho kulimi olifundayo</translation>
 <translation id="8251441930213048644">Vuselela manje</translation>
-<translation id="8251509999076836464">Ibhangqa ku-<ph name="DEVICE_NAME" /></translation>
 <translation id="8251578425305135684">Isithombe esincane sisusiwe.</translation>
 <translation id="825238165904109940">Njalo nje Bonisa ama-URL Agcwele</translation>
 <translation id="8252569384384439529">Iyalayisha...</translation>
@@ -7250,7 +7240,6 @@
 <translation id="8534656636775144800">Eshu! Kukhona okungahambanga kahle ngenkathi uzama ukujoyina isizinda. Sicela uzame futhi.</translation>
 <translation id="8535005006684281994">I-URL yokuvuselela yesitifiketi se-Netscape</translation>
 <translation id="8536956381488731905">Umsindo wokucindezela ukhiye</translation>
-<translation id="8538718737588735385">Phinda uvule</translation>
 <translation id="8539727552378197395">Ayikho (HttpOnly)</translation>
 <translation id="8539766201049804895">Thuthukisa</translation>
 <translation id="8540136935098276800">Faka i-URL efomethwe ngokulungile</translation>
diff --git a/chrome/app/resources/google_chrome_strings_af.xtb b/chrome/app/resources/google_chrome_strings_af.xtb
index 2beca7bf..7011346 100644
--- a/chrome/app/resources/google_chrome_strings_af.xtb
+++ b/chrome/app/resources/google_chrome_strings_af.xtb
@@ -292,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Hierdie werkprofiel is heeltemal apart van jou persoonlike profiel.</translation>
 <translation id="8556340503434111824">Daar is 'n nuwe weergawe van Google Chrome beskikbaar en dit is vinniger as ooit.</translation>
-<translation id="855774455305595697">Skakel ook in Chrome aan?</translation>
 <translation id="8571790202382503603">Met Chrome-profiele kan jy al jou Chrome-goed skei. Dit maak dit makliker om tussen werk en pret te verdeel.</translation>
 <translation id="8614913330719544658">Google Chrome reageer nie. Herbegin nou?</translation>
 <translation id="861702415419836452">Chrome moet toestemming hê om toegang te kry tot jou kamera om 'n 3D-kaart van jou omgewing te skep</translation>
diff --git a/chrome/app/resources/google_chrome_strings_am.xtb b/chrome/app/resources/google_chrome_strings_am.xtb
index 9b3142a..cf28188 100644
--- a/chrome/app/resources/google_chrome_strings_am.xtb
+++ b/chrome/app/resources/google_chrome_strings_am.xtb
@@ -249,6 +249,7 @@
 <translation id="7398801000654795464">እንደ <ph name="USER_EMAIL_ADDRESS" /> ሆነው ወደ Chrome ገብተዋል። እባክዎ እንደገና ለመግባት ተመሳሳዩን መለያ ይጠቀሙ።</translation>
 <translation id="7408085963519505752">የChrome OS ውል</translation>
 <translation id="7419046106786626209">ማመሳሰል ለጎራዎ ስለማይገኝ Chrome OS ውሂብዎን ማመሳሰል አልቻለም።</translation>
+<translation id="7481213027396403996">በጣም ጠንካራውን የChrome ደህንነት ያግኙ</translation>
 <translation id="7486227612705979895">Chrome የእርስዎን Drive በአድራሻ አሞሌ ውስጥ ጥቆማ ሐሳቦችን ይደርሳል</translation>
 <translation id="7535429826459677826">Google Chrome ገንቢ</translation>
 <translation id="7573289029918943991">መሣሪያዎ የተዘመነ ከሆነ ለማየት ወደ <ph name="LINK_BEGIN" />የChrome OS ቅንብሮች ይሂዱ<ph name="LINK_END" /></translation>
@@ -291,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">ይህ የስራ መገለጫ ከግል መገለጫዎ ሙሉ ለሙሉ የተለየ ነው።</translation>
 <translation id="8556340503434111824">አዲስ የGoogle Chrome ስሪት አለ፣ እና ከመቼውም በበለጠ ፈጣን ነው።</translation>
-<translation id="855774455305595697">እንዲሁም በChrome ውስጥ ይብራ?</translation>
 <translation id="8571790202382503603">በChrome መገለጫዎች ሁሉንም የChrome ነገሮችዎን መለየት ይችላሉ። ይህ በስራ እና በመዝናኛ መካከል መከፋፈልን ቀላል ያደርገዋል።</translation>
 <translation id="8614913330719544658">Google Chrome መልስ አይሰጥም። አሁን ዳግም ይጀምር?</translation>
 <translation id="861702415419836452">Chrome የዙሪያዎ 3ል ካርታ መፍጠር እንዲችል ካሜራዎን የመድረስ ፈቃድ ያስፈልገዋል</translation>
@@ -308,6 +308,7 @@
 <translation id="8862326446509486874">ለስርዓተ-ደረጃ ጭነት ተገቢ መብቶች የሉዎትም። ጫኚውን እንደ አስተዳዳሪ በማሄድ እንደገና ይሞክሩ።</translation>
 <translation id="8914504000324227558">Chromeን ዳግም አስጀምር</translation>
 <translation id="8922193594870374009">አንድ ቁጥር ከ<ph name="ORIGIN" /> ወደ የእርስዎ Android ስልክ ለመላክ በሁለቱም መሣሪያዎች ላይ በመለያ ወደ Chrome ይግቡ።</translation>
+<translation id="8927704157641862988">Chrome በጣም አስፈላጊ እንደሆኑ የሚያስባቸውን የግላዊነት ምርጫዎች ያብጁ። ይህ መመሪያ ሁሉንም ቅንብር እና አማራጭ አይደለም የሚያካትተው።</translation>
 <translation id="8986207147630327271">የስራ መገለጫን ወደዚህ አሳሽ እያከሉ እና ለአስተዳዳሪዎ በስራ መገለጫው ላይ ብቻ ቁጥጥር እየሰጡ ነው።</translation>
 <translation id="8999208279178790196">{0,plural, =0{የChrome ዝማኔ አለ}=1{የChrome ዝማኔ አለ}one{አንድ የChrome ዝማኔ ለ# ቀኖች ነበር}other{አንድ የChrome ዝማኔ ለ# ቀኖች ነበር}}</translation>
 <translation id="9026991721384951619">የመለያዎ መግቢያ ዝርዝሮች ጊዜያቸው ያለፈባቸው ስለሆኑ Chrome OS ውሂብዎን ማመሳሰል አልቻለም።</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb
index c946395..a476231 100644
--- a/chrome/app/resources/google_chrome_strings_ar.xtb
+++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -288,7 +288,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">هذا الملف الشخصي للعمل منفصِل تمامًا عن ملفك الشخصي.</translation>
 <translation id="8556340503434111824">‏يتوفر إصدار جديد من Google Chrome، وهو أسرع بكثير من ذي قبل.</translation>
-<translation id="855774455305595697">‏هل تريد أيضًا تفعيل ميزة "الحماية المُحسّنة للتصفّح الآمن" في Chrome؟</translation>
 <translation id="8571790202382503603">‏باستخدام الملفات الشخصية على Chrome، يمكنك الفصل بين جميع بياناتك على Chrome، ما يسهِّل عليك الفصل بين العمل والترفيه.</translation>
 <translation id="8614913330719544658">‏لا يستجيب Google Chrome. هل تريد إعادة التشغيل الآن؟</translation>
 <translation id="861702415419836452">‏يحتاج متصفِّح Chrome إلى إذن للوصول إلى الكاميرا من أجل إنشاء خريطة ثلاثية الأبعاد للبيئة المحيطة بك.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb
index 75650f8..df804c2c 100644
--- a/chrome/app/resources/google_chrome_strings_as.xtb
+++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -250,6 +250,7 @@
 <translation id="7398801000654795464">আপুনি Chromeত <ph name="USER_EMAIL_ADDRESS" /> হিচাপে ছাইন ইন হৈ আছিলে। অনুগ্ৰহ কৰি আকৌ ছাইন ইন কৰিবলৈ একেটা একাউন্টেই ব্যৱহাৰ কৰক।</translation>
 <translation id="7408085963519505752">Chrome OS চৰ্তাৱলী</translation>
 <translation id="7419046106786626209">আপোনাৰ ড‘মেইনত ছিংক কৰাৰ সুবিধা নথকাৰ বাবে Chrome OSএ আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে।</translation>
+<translation id="7481213027396403996">Chromeৰ আটাইতকৈ বৰ্ধিত সুৰক্ষাৰ সুবিধা লাভ কৰক</translation>
 <translation id="7486227612705979895">Chromeএ ঠিকনাৰ বাৰত পৰামর্শ দিবলৈ আপোনাৰ ড্ৰাইভত এক্সেছ কৰিব</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">আপোনাৰ ডিভাইচটো আপ-টু-ডে’ট হৈ আছেনে নাই সেয়া চাবলৈ <ph name="LINK_BEGIN" />Chrome OSৰ ছেটিংসমূহ<ph name="LINK_END" />লৈ যাওক</translation>
@@ -308,6 +309,7 @@
 <translation id="8862326446509486874">ছিষ্টেম-পৰ্যায়ৰ ইনষ্টলৰ বাবে আপোনাৰ সঠিক অধিকাৰ নাই। প্রশাসক হিচাপে ইনষ্টলাৰটো পুনৰ চলাই চাওক।</translation>
 <translation id="8914504000324227558">Chrome পুনৰ লঞ্চ কৰক</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" />ৰ পৰা এটা নম্বৰ আপোনাৰ Android ফ’নলৈ পঠিয়াবলৈ দুয়োটা ডিভাইচত Chromeত ছাইন ইন কৰক।</translation>
+<translation id="8927704157641862988">Chromeএ আটাইতকৈ গুৰুত্বপূৰ্ণ বুলি বিবেচনা কৰা গোপনীয়তা সম্পৰ্কীয় বাছনি কাষ্টমাইজ কৰক। এই নিৰ্দেশাৱলীয়ে প্ৰতিটো ছেটিং আৰু বিকল্প অন্তৰ্ভুক্ত নকৰে।</translation>
 <translation id="8986207147630327271">আপুনি এই ব্ৰাউজাৰত এটা কৰ্মস্থানৰ প্ৰ’ফাইল যোগ দিছে আৰু নিজৰ প্ৰশাসকক কেৱল কৰ্মস্থানৰ প্ৰ’ফাইলটোৰ ওপৰত নিয়ন্ত্ৰণ দিছে।</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chromeৰ এটা আপডে’ট উপলব্ধ}=1{Chromeৰ এটা আপডে’ট উপলব্ধ}one{# দিনৰ বাবে Chromeৰ এটা আপডে’ট উপলব্ধ}other{# দিনৰ বাবে Chromeৰ এটা আপডে’ট উপলব্ধ}}</translation>
 <translation id="9026991721384951619">আপোনাৰ একাউণ্টৰ ছাইন ইনৰ সবিশেষ তথ্যৰ ম্যাদ উকলি যোৱাৰ বাবে Chrome OS আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb
index 5c86903..907e9c2 100644
--- a/chrome/app/resources/google_chrome_strings_az.xtb
+++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -288,7 +288,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Bu iş profili şəxsi profilinizdən tamamilə ayrıdır.</translation>
 <translation id="8556340503434111824">Yeni Google Chrome versiyası var ki, öncəkindən daha sürətlidir.</translation>
-<translation id="855774455305595697">Chrome'da da aktiv edilsin?</translation>
 <translation id="8571790202382503603">Chrome profilləri ilə bütün Chrome elementlərinizi ayıra bilərsiniz. Bu, iş və əyləncə arasında ayırım etməyi asanlaşdırır.</translation>
 <translation id="8614913330719544658">Google Chrome cavab vermir. Yenidən başladılsın?</translation>
 <translation id="861702415419836452">Chrome ətrafınızın 3D xəritəsini yaratmaq üçün kameranıza giriş icazəsi tələb edir</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb
index b7755607..8af12e8c 100644
--- a/chrome/app/resources/google_chrome_strings_bn.xtb
+++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -246,6 +246,7 @@
 <translation id="7398801000654795464">আপনি <ph name="USER_EMAIL_ADDRESS" /> হিসাবে Chrome-এ প্রবেশ করেছেন৷ আবার সাইন-ইন করতে একই অ্যাকাউন্ট ব্যবহার করুন৷</translation>
 <translation id="7408085963519505752">Chrome OS শর্তাবলী</translation>
 <translation id="7419046106786626209">আপনার ডোমেনে সিঙ্ক উপলভ্য না থাকার কারণে Chrome OS আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation>
+<translation id="7481213027396403996">Chrome-এ সবচেয়ে বেশি সুরক্ষা পান</translation>
 <translation id="7486227612705979895">অ্যাড্রেস বারে সাজেশন দেওয়ার জন্য Chrome আপনার ড্রাইভ অ্যাক্সেস করবে</translation>
 <translation id="7535429826459677826">Google Chrome ডেভেলপার</translation>
 <translation id="7573289029918943991">আপনার ডিভাইস আপ-টু-ডেট আছে কিনা তা দেখতে <ph name="LINK_BEGIN" />Chrome OS সেটিংস<ph name="LINK_END" /> বিকল্পে যান</translation>
@@ -288,7 +289,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">এই অফিস প্রোফাইল আপনার ব্যক্তিগত প্রোফাইল থেকে সম্পূর্ণ আলাদা।</translation>
 <translation id="8556340503434111824">Google Chrome-এর একটি নতুন ভার্সন উপলভ্য এবং এটি আগের তুলনায় দ্রুততর৷</translation>
-<translation id="855774455305595697">এছাড়া, Chrome-এ চালু করতে চান?</translation>
 <translation id="8571790202382503603">Chrome প্রোফাইলের সাহায্যে আপনি সব Chrome-এ থাকা ডেটা আলাদা করতে পারবেন। এর ফলে সহজেই অফিস এবং বিনোদনের প্রোফাইল আলাদা করা যায়।</translation>
 <translation id="8614913330719544658">Google Chrome প্রতিক্রিয়া করছে না৷ এখনই পুনঃলঞ্চ করবেন?</translation>
 <translation id="861702415419836452">আপনার আশেপাশের 3D ম্যাপ তৈরি করতে এই সাইটটির জন্য Chrome-কে আপনার ক্যামেরা অ্যাক্সেস করার অনুমতি দিতে হবে</translation>
@@ -305,6 +305,7 @@
 <translation id="8862326446509486874">সিস্টেম-স্তরীয় ইনস্টলের জন্য আপনার কাছে যথাযথ অধিকারগুলি নেই৷ অ্যাডমিনিস্ট্রেটর হিসেবে আবার ইনস্টলারটি চালানোর চেষ্টা করুন৷</translation>
 <translation id="8914504000324227558">Chrome আবার লঞ্চ করুন</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> থেকে আপনার Android ফোনে একটি নম্বর পাঠাতে, উভয় ডিভাইসের Chrome-এ সাইন-ইন করুন।</translation>
+<translation id="8927704157641862988">গোপনীয়তা পছন্দগুলি কাস্টমাইজ করুন যা Chrome সবচেয়ে গুরুত্বপূর্ণ বলে মনে করে। এই গাইড প্রতিটি সেটিং এবং বিকল্প অন্তর্ভুক্ত করে না।</translation>
 <translation id="8986207147630327271">আপনি এই ব্রাউজারে অফিস প্রোফাইল যোগ করছেন এবং আপনার অ্যাডমিনিস্ট্রেটরকে শুধু অফিস প্রোফাইলটি নিয়ন্ত্রণ করার অধিকার দিচ্ছেন।</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome-এর একটি আপডেট উপলভ্য আছে}=1{Chrome-এর একটি আপডেট উপলভ্য আছে}one{Chrome-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}other{Chrome-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}}</translation>
 <translation id="9026991721384951619">আপনার অ্যাকাউন্টের সাইন-ইনের বিবরণটি পুরনো হওয়ায় Chrome OS আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb
index 01e3088..55047e5 100644
--- a/chrome/app/resources/google_chrome_strings_bs.xtb
+++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -248,6 +248,7 @@
 <translation id="7398801000654795464">Prijavljeni ste na Chrome kao <ph name="USER_EMAIL_ADDRESS" />. Ponovo upotrijebite isti račun za prijavu.</translation>
 <translation id="7408085963519505752">Uslovi korištenja Chrome OS-a</translation>
 <translation id="7419046106786626209">Chrome OS nije sinhronizirao vaše podatke jer sinhronizacija nije dostupna za vašu domenu.</translation>
+<translation id="7481213027396403996">Odaberite maksimalnu sigurnost koju nudi Chrome</translation>
 <translation id="7486227612705979895">Chrome će pristupiti Disku kako bi pružio prijedloge u traci za adresu.</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Da vidite je li vaš uređaj ažuriran, idite u <ph name="LINK_BEGIN" />Postavke Chrome OS-a<ph name="LINK_END" /></translation>
@@ -290,7 +291,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Ovaj radni profil je u potpunosti odvojen od vašeg ličnog profila.</translation>
 <translation id="8556340503434111824">Dostupna je nova verzija Google Chromea koji je brži nego ikad.</translation>
-<translation id="855774455305595697">Uključiti i na Chromeu?</translation>
 <translation id="8571790202382503603">S Chrome profilima možete odvojiti sve svoje Chrome stvari. Tako ćete lakše razdvojiti posao i zabavu.</translation>
 <translation id="8614913330719544658">Google Chrome ne reagira. Ponovo pokrenuti sada?</translation>
 <translation id="861702415419836452">Chromeu je potrebno odobrenje da pristupi kameri radi kreiranja 3D mape vašeg okruženja</translation>
@@ -307,6 +307,7 @@
 <translation id="8862326446509486874">Nemate odgovarajuća prava za instalaciju na nivou sistema. Pokušajte ponovo pokrenuti instalaciju kao administrator.</translation>
 <translation id="8914504000324227558">Ponovo pokreni Chrome</translation>
 <translation id="8922193594870374009">Da pošaljete broj s uređaja <ph name="ORIGIN" /> na svoj Android telefon, prijavite se u Chrome na oba uređaja.</translation>
+<translation id="8927704157641862988">Prilagodite odabire privatnosti koje Chrome smatra najvažnijim. Ovaj vodič ne obuhvata svaku postavku i opciju.</translation>
 <translation id="8986207147630327271">Dodajete radni profil na ovaj preglednik i dajte administratoru kontrolu samo nad radnim profilom.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Dostupno je ažuriranje Chromea}=1{Dostupno je ažuriranje Chromea}one{Ažuriranje Chromea je dostupno # dan}few{Ažuriranje Chromea je dostupno # dana}other{Ažuriranje Chromea je dostupno # dana}}</translation>
 <translation id="9026991721384951619">Chrome OS nije mogao sinhronizirati vaše podatke jer su podaci o prijavi računa zastarjeli.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ca.xtb b/chrome/app/resources/google_chrome_strings_ca.xtb
index 49c8a30d..736a96b 100644
--- a/chrome/app/resources/google_chrome_strings_ca.xtb
+++ b/chrome/app/resources/google_chrome_strings_ca.xtb
@@ -241,6 +241,7 @@
 <translation id="7398801000654795464">Teníeu la sessió iniciada a Chrome com a <ph name="USER_EMAIL_ADDRESS" />. Utilitzeu el mateix compte per tornar-hi a iniciar la sessió.</translation>
 <translation id="7408085963519505752">Condicions de Chrome OS</translation>
 <translation id="7419046106786626209">Chrome OS no ha pogut sincronitzar les vostres dades perquè la sincronització no està disponible per al vostre domini.</translation>
+<translation id="7481213027396403996">Obtén la seguretat més efectiva de Chrome</translation>
 <translation id="7486227612705979895">Chrome accedirà a Drive per fer suggeriments a la barra d'adreces</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Per veure si el dispositiu està actualitzat, ves a la <ph name="LINK_BEGIN" />configuració de Chrome OS<ph name="LINK_END" /></translation>
@@ -299,6 +300,7 @@
 <translation id="8862326446509486874">No disposeu dels drets necessaris per instal·lar aplicacions al sistema. Proveu de tornar a executar l'instal·lador com a administrador.</translation>
 <translation id="8914504000324227558">Torna a iniciar Chrome</translation>
 <translation id="8922193594870374009">Per enviar un número del dispositiu <ph name="ORIGIN" /> al teu telèfon Android, inicia la sessió a Chrome en tots dos dispositius.</translation>
+<translation id="8927704157641862988">Personalitza les opcions de privadesa que Chrome consideri més importants. Aquesta guia no inclou totes les opcions de configuració.</translation>
 <translation id="8986207147630327271">Estàs afegint un perfil de treball a aquest navegador i donant control al teu administrador únicament sobre el perfil de treball.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Hi ha una actualització de Chrome disponible}=1{Hi ha una actualització de Chrome disponible}other{Fa # dies que hi ha una actualització de Chrome disponible}}</translation>
 <translation id="9026991721384951619">Chrome OS no ha pogut sincronitzar les vostres dades perquè les dades d'inici de sessió del compte no estan actualitzades.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb
index 577dafe..512bc79 100644
--- a/chrome/app/resources/google_chrome_strings_el.xtb
+++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -289,7 +289,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Αυτό το προφίλ εργασίας είναι εντελώς ξεχωριστό από το προσωπικό προφίλ σας.</translation>
 <translation id="8556340503434111824">Υπάρχει μια νέα έκδοση του Google Chrome και είναι ταχύτερη από ποτέ.</translation>
-<translation id="855774455305595697">Ενεργοποίηση και στο Chrome;</translation>
 <translation id="8571790202382503603">Με τα προφίλ του Chrome μπορείτε να διαχωρίσετε όλο το περιεχόμενό σας στο Chromium. Αυτό σας βοηθά να διαχωρίζετε την εργασία από την ψυχαγωγία.</translation>
 <translation id="8614913330719544658">Το Google Chrome δεν αποκρίνεται. Επανεκκίνηση τώρα;</translation>
 <translation id="861702415419836452">Το 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 bc51ed2..1a3603c 100644
--- a/chrome/app/resources/google_chrome_strings_en-GB.xtb
+++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -292,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">This work profile is completely separate from your personal profile.</translation>
 <translation id="8556340503434111824">There's a new version of Google Chrome available and it's faster than ever.</translation>
-<translation id="855774455305595697">Also turn on in Chrome?</translation>
 <translation id="8571790202382503603">With Chrome profiles you can separate all of your Chrome things. This makes it easier to split between work and fun.</translation>
 <translation id="8614913330719544658">Google Chrome is unresponsive. Relaunch now?</translation>
 <translation id="861702415419836452">Chrome needs permission to access your camera to create a 3D map of your surroundings</translation>
diff --git a/chrome/app/resources/google_chrome_strings_eu.xtb b/chrome/app/resources/google_chrome_strings_eu.xtb
index ce2bd22..598d30d 100644
--- a/chrome/app/resources/google_chrome_strings_eu.xtb
+++ b/chrome/app/resources/google_chrome_strings_eu.xtb
@@ -291,7 +291,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Laneko profila eta profil pertsonala guztiz bereizita daude.</translation>
 <translation id="8556340503434111824">Google Chrome-ren bertsio berri bat erabilgarri dago; inoiz baino bizkorragoa da.</translation>
-<translation id="855774455305595697">Chrome-n ere aktibatu nahi duzu?</translation>
 <translation id="8571790202382503603">Chrome-ko profilekin, Chrome-n dituzun gauza guztiak bereiz ditzakezu. Hala, errazago edukiko dituzu bananduta gauza pertsonalak eta lanekoak.</translation>
 <translation id="8614913330719544658">Google Chrome-k ez du erantzuten. Berrabiarazi nahi duzu?</translation>
 <translation id="861702415419836452">Chrome-k kamera atzitzeko baimena behar du, ingurunearen hiru dimentsioko mapa bat sortzeko</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb
index b072f94..4f6006a3 100644
--- a/chrome/app/resources/google_chrome_strings_fa.xtb
+++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -242,6 +242,7 @@
 <translation id="7398801000654795464">‏شما بعنوان <ph name="USER_EMAIL_ADDRESS" /> وارد سیستم Chrome شدید. لطفاً برای ورود به سیستم مجدد از همان حساب استفاده کنید.</translation>
 <translation id="7408085963519505752">‏شرایط Chrome OS</translation>
 <translation id="7419046106786626209">‏سیستم‌عامل Chrome قادر به همگام‌سازی داده‌هایتان نبود زیرا همگام‌سازی برای دامنه شما قابل دسترسی نیست.</translation>
+<translation id="7481213027396403996">‏دریافت قوی‌ترین امنیت Chrome</translation>
 <translation id="7486227612705979895">‏Chrome برای ارائه پیشنهاد در نوار نشانی، به Drive شما دسترسی خواهد داشت</translation>
 <translation id="7535429826459677826">‏Google Chrome نسخه Dev</translation>
 <translation id="7573289029918943991">‏برای اینکه ببینید دستگاهتان به‌روز است یا نه، به <ph name="LINK_BEGIN" />تنظیمات Chrome OS<ph name="LINK_END" /> بروید</translation>
@@ -284,7 +285,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">این نمایه کاری کاملاً مجزا از نمایه شخصی‌تان است.</translation>
 <translation id="8556340503434111824">‏نسخه جدیدی از Google Chrome وجود دارد که سریعتر از همیشه است.</translation>
-<translation id="855774455305595697">‏در Chrome نیز روشن شود؟</translation>
 <translation id="8571790202382503603">‏با نمایه‌های Chrome می‌توانید همه‌چیزتان را در Chrome جدا کنید. با این کار، راحت‌تر می‌توان کار و سرگرمی را ازهم جدا کرد.</translation>
 <translation id="8614913330719544658">‏Google Chrome پاسخ نمی‌دهد. مجدداً راه‌اندازی شود؟</translation>
 <translation id="861702415419836452">‏Chrome برای دسترسی به دوربین به اجازه نیاز دارد تا بتواند نقشه سه‌بعدی محیط شما را ایجاد کند</translation>
@@ -301,6 +301,7 @@
 <translation id="8862326446509486874">شما حقوق لازم برای نصب در سطح سیستم را ندارید. دوباره به‌عنوان سرپرست نصب‌کننده را اجرا کنید.</translation>
 <translation id="8914504000324227558">‏راه‌اندازی مجدد Chrome</translation>
 <translation id="8922193594870374009">‏برای ارسال شماره از <ph name="ORIGIN" /> به تلفن Android خود، در هر دو دستگاه به سیستم Chrome وارد شوید.</translation>
+<translation id="8927704157641862988">‏انتخاب‌های حریم‌خصوصی را که ازنظر Chrome مهم‌ترین هستند سفارشی کنید. این راهنما حاوی همه تنظیمات و گزینه‌ها نیست.</translation>
 <translation id="8986207147630327271">با این کار، نمایه کاری را به این مرورگر اضافه می‌کنید و فقط کنترل نمایه کاری را دراختیار سرپرست قرار می‌دهید.</translation>
 <translation id="8999208279178790196">{0,plural, =0{‏به‌روزرسانی Chrome دردسترس است}=1{‏به‌روزرسانی Chrome دردسترس است}one{‏به‌روزرسانی Chrome از # روز پیش دردسترس است}other{‏به‌روزرسانی Chrome از # روز پیش دردسترس است}}</translation>
 <translation id="9026991721384951619">‏سیستم‌عامل Chrome قادر به همگام‌سازی داده‌هایتان نبود زیرا جزئیات ورود به سیستم حساب شما به‌روز نیست.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb
index f9f9554d..52991f9 100644
--- a/chrome/app/resources/google_chrome_strings_fil.xtb
+++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -250,6 +250,7 @@
 <translation id="7398801000654795464">Naka-sign in ka sa Chrome bilang <ph name="USER_EMAIL_ADDRESS" />. Pakigamit ang parehong account upang mag-sign in muli.</translation>
 <translation id="7408085963519505752">Mga tuntunin ng Chrome OS</translation>
 <translation id="7419046106786626209">Hindi ma-sync ng Chrome OS ang iyong data dahil hindi available ang Pag-sync para sa iyong domain.</translation>
+<translation id="7481213027396403996">Kunin ang pinakamahusay na seguridad ng Chrome</translation>
 <translation id="7486227612705979895">Ia-access ng Chrome ang iyong Drive para makapagmungkahi sa address bar</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Para makita kung up to date ang iyong device, pumunta sa <ph name="LINK_BEGIN" />Mga Setting ng Chrome OS<ph name="LINK_END" /></translation>
@@ -308,6 +309,7 @@
 <translation id="8862326446509486874">Wala kang naaangkop na mga karapatan para sa pag-install sa antas ng system. Subukan muling patakbuhin ang installer bilang Administrator.</translation>
 <translation id="8914504000324227558">Muling ilunsad ang Chrome</translation>
 <translation id="8922193594870374009">Para magpadala ng numero sa iyong Android phone mula sa <ph name="ORIGIN" />, mag-sign in sa Chrome sa parehong device.</translation>
+<translation id="8927704157641862988">I-customize ang mga opsyon sa privacy na itinuturing na pinakamahalaga ng Chrome. Hindi kasama sa gabay na ito ang bawat setting at opsyon.</translation>
 <translation id="8986207147630327271">Nagdaragdag ka ng profile sa trabaho sa browser na ito at binibigyan mo ang iyong administrator ng kontrol sa profile sa trabaho lang.</translation>
 <translation id="8999208279178790196">{0,plural, =0{May available na update sa Chrome}=1{May available na update sa Chrome}one{# araw nang may available na update sa Chrome}other{# na araw nang may available na update sa Chrome}}</translation>
 <translation id="9026991721384951619">Hindi ma-sync ng Chrome OS ang iyong data dahil hindi napapanahon ang mga detalye sa pag-sign in sa iyong account.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb
index c56566db..3a5674c 100644
--- a/chrome/app/resources/google_chrome_strings_fr.xtb
+++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -290,7 +290,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Ce profil professionnel est parfaitement séparé de votre profil personnel.</translation>
 <translation id="8556340503434111824">Une nouvelle version de Google Chrome encore plus rapide est disponible.</translation>
-<translation id="855774455305595697">Activer aussi dans Chrome ?</translation>
 <translation id="8571790202382503603">Utilisez les profils Chrome pour dissocier toutes vos données Chrome. Vous pouvez ainsi faire plus facilement la distinction entre vos contenus personnels et professionnels.</translation>
 <translation id="8614913330719544658">Google Chrome ne répond pas. Voulez-vous le relancer maintenant ?</translation>
 <translation id="861702415419836452">Chrome a besoin de votre autorisation pour accéder à votre appareil photo afin de créer un plan 3D de votre environnement</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb
index 54e4ef1..5abddad07 100644
--- a/chrome/app/resources/google_chrome_strings_gu.xtb
+++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -250,6 +250,7 @@
 <translation id="7398801000654795464">તમે Chromeમાં <ph name="USER_EMAIL_ADDRESS" /> તરીકે સાઇન ઇન કર્યું હતું. ફરીથી સાઇન ઇન કરવા માટે કૃપા કરીને એ જ એકાઉન્ટનો ઉપયોગ કરો.</translation>
 <translation id="7408085963519505752">Chrome OS શરતો</translation>
 <translation id="7419046106786626209">Chrome OS તમારા ડેટાને સિંક કરી શક્યું નથી કારણ કે તમારા ડોમેન માટે સિંક ઉપલબ્ધ નથી.</translation>
+<translation id="7481213027396403996">Chromeની સૌથી વધુ મજબૂત સુરક્ષા મેળવો</translation>
 <translation id="7486227612705979895">ઍડ્રેસ બારમાં સૂચનો કરવા માટે, Chrome તમારી ડ્રાઇવને ઍક્સેસ કરશે</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">તમારું ડિવાઇસ અપ ટૂ ડેટ છે કે નહીં, તે જાણવા માટે <ph name="LINK_BEGIN" />Chrome OS સેટિંગ<ph name="LINK_END" /> પર જાઓ</translation>
@@ -292,7 +293,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">ઑફિસની આ પ્રોફાઇલ તમારી વ્યક્તિગત પ્રોફાઇલથી સાવ અલગ છે.</translation>
 <translation id="8556340503434111824">Google Chromeનું એક નવું વર્ઝન ઉપલબ્ધ છે અને તે પહેલાં કરતાંએ વધુ ઝડપી છે.</translation>
-<translation id="855774455305595697">Chromeમાં પણ ચાલુ કરીએ?</translation>
 <translation id="8571790202382503603">Chrome પ્રોફાઇલ વડે તમે તમારી બધી વસ્તુઓ Chrome પર અલગ-અલગ રાખી શકો છો. આનાથી ઑફિસ અને મનોરંજન વચ્ચે વિભાજન કરવાનું સરળ બને છે.</translation>
 <translation id="8614913330719544658">Google Chrome પ્રતિસાદ આપતું નથી. હવે ફરીથી લોંચ કરીએ?</translation>
 <translation id="861702415419836452">તમારા આસપાસનો 3D નકશો બનાવવા માટે, Chromeને તમારા કૅમેરાના ઍક્સેસની પરવાનગી જરૂરી છે</translation>
@@ -309,6 +309,7 @@
 <translation id="8862326446509486874">તમારી પાસે સિસ્ટમ-સ્તરનાં ઇન્સ્ટોલ માટે ઉચિત અધિકારો નથી. એડમિન તરીકે ઇન્સ્ટૉલરને ફરીથી ચલાવવનો પ્રયાસ કરો.</translation>
 <translation id="8914504000324227558">Chrome ફરીથી લોંચ કરો</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" />માંથી તમારા Android ફોન પર નંબર મોકલવા માટે, બન્ને ડિવાઇસ પર Chromeમાં સાઇન ઇન કરો.</translation>
+<translation id="8927704157641862988">પ્રાઇવસીની એ પસંદગીઓને કસ્ટમાઇઝ કરો કે જેને Chrome સૌથી મહત્ત્વપૂર્ણ માને છે. આ માર્ગદર્શિકામાં દરેક સેટિંગ અને વિકલ્પ શામેલ નથી.</translation>
 <translation id="8986207147630327271">તમે આ બ્રાઉઝરમાં ઑફિસની પ્રોફાઇલ ઉમેરી રહ્યાં છો અને તમારા વ્યવસ્થાપકને માત્ર ઑફિસની પ્રોફાઇલનો નિયંત્રણ આપી રહ્યાં છો.</translation>
 <translation id="8999208279178790196">{0,plural, =0{એક Chrome અપડેટ ઉપલબ્ધ છે}=1{એક Chrome અપડેટ ઉપલબ્ધ છે}one{Chrome અપડેટ # દિવસ માટે ઉપલબ્ધ છે}other{Chrome અપડેટ # દિવસ માટે ઉપલબ્ધ છે}}</translation>
 <translation id="9026991721384951619">સાઇન ઇન વિગતો જૂની હોવાને કારણે Chrome OS તમારા ડેટાને સિંક કરી શક્યું નથી.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb
index 8cca1a3..c1182f7d 100644
--- a/chrome/app/resources/google_chrome_strings_hi.xtb
+++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -246,6 +246,7 @@
 <translation id="7398801000654795464">आपने Chrome में <ph name="USER_EMAIL_ADDRESS" /> के रूप में साइन इन किया था. फिर से साइन इन करने के लिए कृपया उसी खाते का इस्तेमाल करें.</translation>
 <translation id="7408085963519505752">Chrome OS शर्तें</translation>
 <translation id="7419046106786626209">Chrome OS आपका डेटा समन्वयित नहीं कर सका क्योंकि आपके डोमेन के लिए समन्वयन उपलब्ध नहीं है.</translation>
+<translation id="7481213027396403996">Chrome की सबसे मज़बूत सुरक्षा पाएं</translation>
 <translation id="7486227612705979895">पता बार में सुझाव देने के लिए Chrome आपका 'डिस्क' ऐक्सेस करेगा</translation>
 <translation id="7535429826459677826">Google Chrome डेवलपर</translation>
 <translation id="7573289029918943991">यह देखने के लिए कि आपका डिवाइस अपडेट है या नहीं <ph name="LINK_BEGIN" />Chrome OS सेटिंग<ph name="LINK_END" /> पर जाएं</translation>
@@ -304,6 +305,7 @@
 <translation id="8862326446509486874">सिस्टम-स्तर स्थापना के लिए आपके पास उचित अधिकार नहीं हैं. इंस्टॉलर को व्यवस्थापक के रूप में फिर से चलाने का प्रयास करें.</translation>
 <translation id="8914504000324227558">Chrome को फिर से लॉन्‍च करें</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> से अपने Android फ़ोन पर नंबर भेजने के लिए, दोनों डिवाइस पर Chrome में साइन इन करें.</translation>
+<translation id="8927704157641862988">निजता से जुड़े उन विकल्पों को अपनी पसंद के मुताबिक बनाएं जो Chrome के हिसाब से सबसे अहम हैं. इस गाइड में सभी सेटिंग और विकल्प के बारे में नहीं बताया गया है.</translation>
 <translation id="8986207147630327271">आप इस ब्राउज़र में एक वर्क प्रोफ़ाइल जोड़ रहे हैं और अपने एडमिन को सिर्फ़ उस प्रोफ़ाइल को कंट्रोल करने का अधिकार दे रहे हैं.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome का एक अपडेट उपलब्ध है}=1{Chrome का एक अपडेट उपलब्ध है}one{Chrome का अपडेट # दिनों से उपलब्ध है}other{Chrome का अपडेट # दिनों से उपलब्ध है}}</translation>
 <translation id="9026991721384951619">Chrome OS आपका डेटा सिंक नहीं कर सका क्योंकि आपके खाता साइन इन विवरण की समय सीमा पूरी हो चुकी है.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb
index 69f132f..ac932f1 100644
--- a/chrome/app/resources/google_chrome_strings_hr.xtb
+++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -284,7 +284,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Ovaj poslovni profil potpuno je zaseban od vašeg osobnog profila.</translation>
 <translation id="8556340503434111824">Dostupna je nova verzija preglednika Google Chrome, brža no ikad.</translation>
-<translation id="855774455305595697">Želite li uključiti i u Chromeu?</translation>
 <translation id="8571790202382503603">Chromeovi profili omogućuju vam da razdvojite sve svoje sadržaje u Chromeu. To olakšava odvajanje posla i zabave.</translation>
 <translation id="8614913330719544658">Google Chrome ne reagira. Ponovo pokrenuti sada?</translation>
 <translation id="861702415419836452">Chrome treba dopuštenje za pristup kameri radi izrade 3D karte vašeg okruženja</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb
index 1285c0d..43d1818 100644
--- a/chrome/app/resources/google_chrome_strings_hu.xtb
+++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -241,6 +241,7 @@
 <translation id="7398801000654795464"><ph name="USER_EMAIL_ADDRESS" /> néven volt bejelentkezve a Chrome-ba. Kérjük, ugyanazzal a fiókkal jelentkezzen be újra.</translation>
 <translation id="7408085963519505752">Chrome OS – Szerződési Feltételek</translation>
 <translation id="7419046106786626209">A Chrome OS nem tudta szinkronizálni az adatait, mert a szinkronizálás nem érhető el az Ön domainjénél.</translation>
+<translation id="7481213027396403996">Állítsa be a Chrome legerősebb védelmét</translation>
 <translation id="7486227612705979895">A Chrome hozzáfér Drive-jához, hogy javaslatokat nyújthasson a címsávon.</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Ha szeretné megtekinteni, hogy eszköze naprakész-e, lépjen a <ph name="LINK_BEGIN" />Chrome OS beállításaihoz<ph name="LINK_END" /></translation>
@@ -299,6 +300,7 @@
 <translation id="8862326446509486874">Nincsenek meg a megfelelő jogai a rendszerszintű telepítéshez. Indítsa újra a telepítőt rendszergazdaként.</translation>
 <translation id="8914504000324227558">A Chrome újraindítása</translation>
 <translation id="8922193594870374009">Ha innen: <ph name="ORIGIN" /> szeretne számot küldeni Android-telefonjára, jelentkezzen be a Chrome-ba mindkét eszközén.</translation>
+<translation id="8927704157641862988">Személyre szabhatja azokat az adatvédelmi lehetőségeket, amelyek a Chrome szerint a legfontosabbak. Ebben az útmutatóban nem szerepel az összes beállítási lehetőség.</translation>
 <translation id="8986207147630327271">Munkaprofilt ad hozzá ehhez a böngészőhöz, és csak a munkaprofil felett adja át az irányítást a rendszergazdának.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Rendelkezésre áll egy Chrome-frissítés}=1{Rendelkezésre áll egy Chrome-frissítés}other{# napja rendelkezésre áll egy Chrome-frissítés}}</translation>
 <translation id="9026991721384951619">A Chrome OS nem tudta szinkronizálni az adatokat, mert a fiók bejelentkezési adatai elavultak.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb
index cb4d7ee..2925be4 100644
--- a/chrome/app/resources/google_chrome_strings_hy.xtb
+++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -289,7 +289,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Այս աշխատանքային պրոֆիլն ամբողջովին առանձնացված է ձեր անձնական պրոֆիլից։</translation>
 <translation id="8556340503434111824">Google Chrome-ի նոր տարբերակը մատչելի է և այն շատ ավելի արագ է:</translation>
-<translation id="855774455305595697">Միացնե՞լ նաև Chrome-ում</translation>
 <translation id="8571790202382503603">Chromе պրոֆիլների միջոցով դուք կարող եք օգտագործել դիտարկիչն առանձին այլ օգտատերերից։ Այդպես ավելի հեշտ է տարանջատել գործնական և անձնական նպատակներով օգտագործումը։</translation>
 <translation id="8614913330719544658">Google Chrome-ը չի պատասխանում: Վերագործարկե՞լ:</translation>
 <translation id="861702415419836452">Chrome-ին անհրաժեշտ է տեսախցիկն օգտագործելու թույլտվություն՝ ձեր շրջակայքի եռաչափ քարտեզը ստեղծելու համար։</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb
index 398a87a..0f93f7c 100644
--- a/chrome/app/resources/google_chrome_strings_it.xtb
+++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -282,7 +282,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Questo profilo di lavoro è completamente separato dal tuo profilo personale.</translation>
 <translation id="8556340503434111824">È disponibile una nuova versione di Google Chrome con una velocità senza precedenti.</translation>
-<translation id="855774455305595697">Vuoi attivare la funzionalità anche su Chrome?</translation>
 <translation id="8571790202382503603">Con i profili Chrome puoi separare tutti i tuoi contenuti di Chrome. In questo modo potrai alternare lavoro e divertimento con più facilità.</translation>
 <translation id="8614913330719544658">Google Chrome non risponde. Riavviarlo ora?</translation>
 <translation id="861702415419836452">Chrome ha bisogno dell'autorizzazione ad accedere alla fotocamera per creare una mappa 3D dell'ambiente circostante</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb
index 4b6dae0..7e386ff 100644
--- a/chrome/app/resources/google_chrome_strings_ja.xtb
+++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -241,6 +241,7 @@
 <translation id="7398801000654795464">Chrome に <ph name="USER_EMAIL_ADDRESS" /> としてログインしていました。再度ログインするには同じアカウントを使用してください。</translation>
 <translation id="7408085963519505752">Chrome OS 利用規約</translation>
 <translation id="7419046106786626209">お使いのドメインでは同期を利用できないため、Chrome OS はデータを同期できませんでした。</translation>
+<translation id="7481213027396403996">Chrome の最高水準のセキュリティで保護</translation>
 <translation id="7486227612705979895">Chrome からお客様のドライブにアクセスして、アドレスバーに候補を表示します</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">デバイスが最新の状態かどうか確認するには、<ph name="LINK_BEGIN" />Chrome OS の設定<ph name="LINK_END" />をご覧ください</translation>
@@ -299,6 +300,7 @@
 <translation id="8862326446509486874">権限が不十分なためシステムレベルのインストールができません。管理者権限でインストールしてください。</translation>
 <translation id="8914504000324227558">Chrome の再起動</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> から Android スマートフォンに番号を送信するには、両方のデバイスで Chrome にログインしてください。</translation>
+<translation id="8927704157641862988">Chrome の最も重要なプライバシー設定をカスタマイズできます。このガイドにすべての設定とオプションが含まれているわけではありません。</translation>
 <translation id="8986207147630327271">このブラウザに仕事用プロファイルを追加し、管理者がこの仕事用プロファイルのみを管理できるようにします。</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome のアップデートが利用可能です}=1{Chrome のアップデートが利用可能です}other{Chrome のアップデートが利用可能になってから # 日経過しています}}</translation>
 <translation id="9026991721384951619">アカウントのログイン情報が最新ではないため、Chrome OS はデータを同期できませんでした。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb
index 4f29cef9..96f28302 100644
--- a/chrome/app/resources/google_chrome_strings_ka.xtb
+++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -248,6 +248,7 @@
 <translation id="7398801000654795464">თქვენ შესული ხართ Chrome ში როგორც <ph name="USER_EMAIL_ADDRESS" />. შემდეგი შესვლისთვისაც გთხოვთ იგივე ანგარიში გამოიყენოთ.</translation>
 <translation id="7408085963519505752">Chrome OS ტერმინები</translation>
 <translation id="7419046106786626209">Chrome OS ის საშუალებით ვერ მოხერხდა თქვენი მონაცემების სინქრონიზაცია, რადგნა თქვენს დომენზე სინქრონ. შეუძლებელია.</translation>
+<translation id="7481213027396403996">ისარგებლეთ Chrome-ის უსაფრთხოების ყველაზე ძლიერი ფუნქციებით</translation>
 <translation id="7486227612705979895">Chrome-ს ექნება წვდომა თქვენს Drive-ზე მისამართთა ზოლში შემოთავაზებების უზრუნველსაყოფად</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">თქვენი მოწყობილობის განახლების სტატუსის სანახავად გადადით <ph name="LINK_BEGIN" />Chrome OS-ის პარამეტრებზე<ph name="LINK_END" /></translation>
@@ -290,7 +291,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">სამსახურის ეს პროფილი თქვენი პირადი პროფილისგან სრულიად დამოუკიდებლად ფუნქციონირებს.</translation>
 <translation id="8556340503434111824">ხელმისაწვდომია Google Chrome-ის უფრო ახალი ვერსია, რომელიც უფრო სწრაფია.</translation>
-<translation id="855774455305595697">გსურთ, Chromе-შიც ჩართოთ?</translation>
 <translation id="8571790202382503603">Chrome პროფილები Chrome-ში არსებული თქვენი კონტენტის განცალკევების საშუალებას გაძლევთ. მაგალითად, სამსახურებრივი და პირადი მონაცემების.</translation>
 <translation id="8614913330719544658">Google Chrome არ პასუხობს. გავუშვათ ხელახლა?</translation>
 <translation id="861702415419836452">Chrome საჭიროებს თქვენს კამერაზე წვდომის ნებართვას, თქვენი გარემოს 3-განზომილებიანი რუკის შექმნა რომ შეძლოს</translation>
@@ -307,6 +307,7 @@
 <translation id="8862326446509486874">თქვენ არ გაქვთ შესაბამისი უფლებები სისტემის დონეზე ინსტალაციისთვის. სცადეთ ინსტალაციის პროგრამის ხელახლა გაშვება ადმინისტრატორის სტატუსით.</translation>
 <translation id="8914504000324227558">Chrome-ის ხელახლა გაშვება</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" />-დან თქვენს Android ტელეფონზე ნომრის გასაგზავნად შედით Chrome-ში ორივე მოწყობილობაზე.</translation>
+<translation id="8927704157641862988">დააფიქსირეთ კონფიდენციალურობასთან დაკავშირებული არჩევანი, რომელსაც Chrome უმნიშვნელოვანესად მიიჩნევს. აღნიშნული სახელმძღვანელო არ მოიცავს ყველა პარამეტრსა და ვარიანტს.</translation>
 <translation id="8986207147630327271">თქვენ აპირებთ, ამ ბრაუზერს სამსახურის პროფილი დაამატოთ, რითაც თქვენს ადმინისტრატორს კონტროლს მხოლოდ სამსახურის პროფილზე მიანიჭებთ.</translation>
 <translation id="8999208279178790196">{0,plural, =0{ხელმისაწვდომია Chrome-ის განახლება}=1{ხელმისაწვდომია Chrome-ის განახლება}other{უკვე # დღეა, რაც ხელმისაწვდომია Chrome-ის განახლება}}</translation>
 <translation id="9026991721384951619">Chrome OS-მა ვერ დაასინქრონა თქვენი მონაცემები, რადგან თქვენი ანგარიშის შესვლის დეტალები მოძველდა.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb
index 688f3c0..69ae06a 100644
--- a/chrome/app/resources/google_chrome_strings_kk.xtb
+++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -291,7 +291,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Бұл жұмыс профилі жеке профиліңізден толық ажыратылған.</translation>
 <translation id="8556340503434111824">Жаңа жылдамырақ Google Chrome нұсқасы қолжетімді.</translation>
-<translation id="855774455305595697">Chrome браузерінде де қосылсын ба?</translation>
 <translation id="8571790202382503603">Chrome профильдері арқылы Chrome-дағы барлық материалыңызды бөле аласыз. Осылайша оларды жұмыс немесе көңіл көтеру топтарына оңай іріктеуге болады.</translation>
 <translation id="8614913330719544658">Google Chrome жауап бермейді. Қазір қайта іске қосасыз ба?</translation>
 <translation id="861702415419836452">Chrome браузеріне айналаңыздың 3D картасын жасау үшін камераны пайдалану рұқсаты керек.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_km.xtb b/chrome/app/resources/google_chrome_strings_km.xtb
index d303187..16d86a5 100644
--- a/chrome/app/resources/google_chrome_strings_km.xtb
+++ b/chrome/app/resources/google_chrome_strings_km.xtb
@@ -310,6 +310,7 @@
 <translation id="8914504000324227558">ដំណើរការ Chrome ឡើងវិញ</translation>
 <translation id="8922193594870374009">ដើម្បីផ្ញើ​លេខទូរសព្ទពី <ph name="ORIGIN" /> ទៅទូរសព្ទ Android របស់អ្នក សូមចូល Chrome នៅលើឧបករណ៍​ទាំងពីរ។</translation>
 <translation id="8927704157641862988">ប្ដូរតាមបំណងនូវ​ជម្រើសឯកជនភាព​ដែល Chrome គិតថា​សំខាន់បំផុត។ ការណែនាំនេះ​មិនរាប់បញ្ចូល​គ្រប់ជម្រើស និងការកំណត់​នោះទេ។</translation>
+<translation id="8983720963221508955">អ្នកបានបើក​ការរុករកដោយ​សុវត្ថិភាពបន្ថែមនៅក្នុង​គណនីរបស់អ្នក។ ឥឡូវនេះ យកវាសម្រាប់ Chrome។</translation>
 <translation id="8986207147630327271">អ្នកកំពុងបញ្ចូលកម្រងព័ត៌មានការងារទៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតនេះ និងផ្ដល់លទ្ធភាពឱ្យអ្នកគ្រប់គ្រងរបស់អ្នកគ្រប់គ្រងតែកម្រងព័ត៌មានការងារប៉ុណ្ណោះ។</translation>
 <translation id="8999208279178790196">{0,plural, =0{មាន​កំណែថ្មី​របស់ Chrome ហើយ}=1{មាន​កំណែថ្មី​របស់ Chrome ហើយ}other{មាន​កំណែថ្មី​របស់ Chrome រយៈពេល # ថ្ងៃហើយ}}</translation>
 <translation id="9026991721384951619">Chrome OS មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេ ពីព្រោះព័ត៌មានលំអិតគណនីចូលរបស់អ្នកហួសសម័យហើយ។</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kn.xtb b/chrome/app/resources/google_chrome_strings_kn.xtb
index ec01cee9..8748478 100644
--- a/chrome/app/resources/google_chrome_strings_kn.xtb
+++ b/chrome/app/resources/google_chrome_strings_kn.xtb
@@ -242,6 +242,7 @@
 <translation id="7398801000654795464"><ph name="USER_EMAIL_ADDRESS" /> ನಂತೆ Chrome ಅನ್ನು ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿರುವಿರಿ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಅದೇ ಖಾತೆಯನ್ನು ಬಳಸಿ.</translation>
 <translation id="7408085963519505752">Chrome OS ನಿಯಮಗಳು</translation>
 <translation id="7419046106786626209">ನಿಮ್ಮ ಡೊಮೇನ್‌ನಲ್ಲಿ ಸಿಂಕ್ ಮಾಡುವ ಸೌಲಭ್ಯವಿಲ್ಲದ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chrome OS ಗೆ ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.</translation>
+<translation id="7481213027396403996">Chrome ನ ಪ್ರಬಲ ಭದ್ರತೆಯನ್ನು ಪಡೆಯಿರಿ</translation>
 <translation id="7486227612705979895">ವಿಳಾಸಪಟ್ಟಿಯಲ್ಲಿ ಸಲಹೆ ನೀಡಲು, Chrome ನಿಮ್ಮ ಡ್ರೈವ್‌ಗೆ ಪ್ರವೇಶಿಸುತ್ತದೆ.</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">ನಿಮ್ಮ ಸಾಧನ ಅಪ್ ಟು ಡೇಟ್ ಆಗಿದೆಯೇ ಎಂಬುದನ್ನು ನೋಡಲು, <ph name="LINK_BEGIN" />Chrome OS ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ<ph name="LINK_END" /> ಹೋಗಿ</translation>
@@ -301,6 +302,7 @@
 <translation id="8862326446509486874">ಸಿಸ್ಟಂ ಮಟ್ಟದ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ನೀವು ಸರಿಯಾದ ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿಲ್ಲ. ನಿರ್ವಾಹಕರಂತೆ ಮತ್ತೆ ಇನ್‌ಸ್ಟಾಲರ್ ಅನ್ನು ರನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="8914504000324227558">Chrome ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> ನಿಂದ ನಿಮ್ಮ Android ಫೋನ್‌ಗೆ ಸಂಖ್ಯೆಯನ್ನು ಕಳುಹಿಸಲು, ಎರಡೂ ಸಾಧನಗಳಲ್ಲಿ Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
+<translation id="8927704157641862988">Chrome ಪ್ರಮುಖವಾಗಿ ಪರಿಗಣಿಸುವ ಗೌಪ್ಯತೆ ಆಯ್ಕೆಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ. ಈ ಮಾರ್ಗದರ್ಶಿಯು ಪ್ರತಿಯೊಂದು ಸೆಟ್ಟಿಂಗ್ ಮತ್ತು ಆಯ್ಕೆಯನ್ನು ಒಳಗೊಂಡಿಲ್ಲ.</translation>
 <translation id="8986207147630327271">ನೀವು ಈ ಬ್ರೌಸರ್‌ಗೆ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ ಅನ್ನು ಸೇರಿಸುತ್ತಿರುವಿರಿ ಮತ್ತು ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಗೆ ಕೇವಲ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ನ ಮೇಲೆ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತಿರುವಿರಿ.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome ಅಪ್‌ಡೇಟ್ ಲಭ್ಯವಿದೆ}=1{Chrome ಅಪ್‌ಡೇಟ್ ಲಭ್ಯವಿದೆ}one{# ದಿನಗಳ ಮಟ್ಟಿಗೆ Chrome ಅಪ್‌ಡೇಟ್ ಲಭ್ಯವಿದೆ}other{# ದಿನಗಳ ಮಟ್ಟಿಗೆ Chrome ಅಪ್‌ಡೇಟ್ ಲಭ್ಯವಿದೆ}}</translation>
 <translation id="9026991721384951619">ನಿಮ್ಮ ಖಾತೆಯ ಸೈನ್ ಇನ್ ವಿವರಗಳು ಹಳೆಯದಾಗಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chrome OS ಗೆ ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb
index 28936a9..38280bf 100644
--- a/chrome/app/resources/google_chrome_strings_ky.xtb
+++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -293,7 +293,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Бул жумуш профили жеке профилиңизден толугу менен ажыратылган.</translation>
 <translation id="8556340503434111824">Google Chrome'дун чагылгандай тездик менен иштеген жаңы версиясы бар.</translation>
-<translation id="855774455305595697">Chrome'до да күйгүзүлсүнбү?</translation>
 <translation id="8571790202382503603">Chrome профилдери менен Chrome'догу маалыматты өзүнчө сактай аласыз. Бул жумуш менен эс алууну бири-бири менен аралаштырбоого жардам берет.</translation>
 <translation id="8614913330719544658">Google Chrome жооп бербей жатат. Азыр өчүрүп кайра ишке киргизесизби?</translation>
 <translation id="861702415419836452">Chrome айланаңыздын 3D картасын түзүү үчүн камераңызды колдонушу керек</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb
index 7b0ce23..52aa111 100644
--- a/chrome/app/resources/google_chrome_strings_lo.xtb
+++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -292,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກນີ້ແຍກກັນຢ່າງສິ້ນເຊີງຈາກໂປຣໄຟລ໌ສ່ວນຕົວຂອງທ່ານ.</translation>
 <translation id="8556340503434111824">ມີ Google Chrome ລຸ້ນໃໝ່ຢູ່, ແລະມັນໄວກ່ວາຜ່ານມາ.</translation>
-<translation id="855774455305595697">ເປີດຄືນໃໝ່ໃນ Chrome ນຳບໍ?</translation>
 <translation id="8571790202382503603">ດ້ວຍໂປຣໄຟລ໌ Chrome ທ່ານສາມາດແຍກເນື້ອຫາ Chrome ຂອງທ່ານທັງໝົດໄດ້. ນີ້ຈະເຮັດໃຫ້ແຍກລະຫວ່າງວຽກ ແລະ ຄວາມມ່ວນໄດ້ງ່າຍຂຶ້ນ.</translation>
 <translation id="8614913330719544658">Google Chrome ບໍ່ຕອບຮັບ. ເລີ່ມເປີດໃຊ້ໃໝ່ດຽວນີ້ບໍ?</translation>
 <translation id="861702415419836452">Chrome ຕ້ອງການການອະນຸຍາດເພື່ອເຂົ້າເຖິງກ້ອງຂອງທ່ານເພື່ອສ້າງແຜນທີ່ 3 ມິຕິຂອງສະພາບແວດລ້ອມອ້ອມຂ້າງຂອງທ່ານ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb
index 7481f32..51b397f 100644
--- a/chrome/app/resources/google_chrome_strings_lt.xtb
+++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -250,6 +250,7 @@
 <translation id="7398801000654795464">Buvote prisijungę prie „Chrome“ kaip <ph name="USER_EMAIL_ADDRESS" />. Prisijungdami vėl naudokite tą pačią paskyrą.</translation>
 <translation id="7408085963519505752">„Chrome“ OS sąlygos</translation>
 <translation id="7419046106786626209">„Chrome“ OS negali sinchronizuoti duomenų, nes jūsų domene sinchronizavimas nepasiekiamas.</translation>
+<translation id="7481213027396403996">Patikimiausios „Chrome“ saugos užtikrinimas</translation>
 <translation id="7486227612705979895">„Chrome“ turės prieigą prie Disko, kad galėtų teikti pasiūlymus adreso juostoje</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Norėdami sužinoti, ar įrenginys atnaujintas, eikite į <ph name="LINK_BEGIN" />„Chrome“ OS nustatymus<ph name="LINK_END" /></translation>
@@ -308,6 +309,7 @@
 <translation id="8862326446509486874">Neturite reikiamų teisių sistemai įdiegti. Pamėginkite įdiegimo priemonę dar kartą paleisti kaip administratorius.</translation>
 <translation id="8914504000324227558">Iš naujo paleisti „Chrome“</translation>
 <translation id="8922193594870374009">Jei norite iš <ph name="ORIGIN" /> į „Android“ telefoną išsiųsti numerį, prisijunkite prie „Chrome“ abiejuose įrenginiuose.</translation>
+<translation id="8927704157641862988">Tinkinkite privatumo pasirinkimus, kurie „Chrome“ laikomi svarbiausiais. Į šį vadovą įtraukiami ne visi nustatymai ir parinktys.</translation>
 <translation id="8986207147630327271">Pridedate darbo profilį prie šios naršyklės ir suteikiate administratoriui teisę valdyti tik darbo profilį.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Pasiekiamas „Chrome“ naujinys}=1{Pasiekiamas „Chrome“ naujinys}one{„Chrome“ naujinys pasiekiamas # dieną}few{„Chrome“ naujinys pasiekiamas # dienas}many{„Chrome“ naujinys pasiekiamas # dienos}other{„Chrome“ naujinys pasiekiamas # dienų}}</translation>
 <translation id="9026991721384951619">„Chrome“ OS negali sinchronizuoti duomenų, nes paskyros išsami prisijungimo informacija yra pasenusi.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mk.xtb b/chrome/app/resources/google_chrome_strings_mk.xtb
index 48b608a..2da35061 100644
--- a/chrome/app/resources/google_chrome_strings_mk.xtb
+++ b/chrome/app/resources/google_chrome_strings_mk.xtb
@@ -292,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Овој работен профил е целосно одделен од вашиот личен профил.</translation>
 <translation id="8556340503434111824">Достапна е нова верзија на Google Chrome и побрза е од кога било.</translation>
-<translation id="855774455305595697">Да се вклучи и во Chrome?</translation>
 <translation id="8571790202382503603">Со профилите на Chrome може да ги одделите сите ваши работи на Chrome. Со ова е полесно да се одделат работата и забавата.</translation>
 <translation id="8614913330719544658">Google Chrome не реагира. Да се рестартира сега?</translation>
 <translation id="861702415419836452">На Chrome му треба дозвола за да пристапи до камерата и да создаде 3D-карта од вашето опкружување</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb
index 86def7c6..c5fd991 100644
--- a/chrome/app/resources/google_chrome_strings_ml.xtb
+++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -293,7 +293,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">ഈ ഔദ്യോഗിക പ്രൊഫൈൽ നിങ്ങളുടെ വ്യക്തിപരമായ പ്രൊഫൈലിൽ നിന്ന് തികച്ചും വ്യത്യസ്തമാണ്.</translation>
 <translation id="8556340503434111824">Google Chrome-ന്റെ പുതിയ പതിപ്പ് ലഭ്യമാണ്, അത് മുമ്പത്തേക്കാൾ വേഗതയേറിയതാണ്.</translation>
-<translation id="855774455305595697">Chrome-ലും ഓണാക്കണോ?</translation>
 <translation id="8571790202382503603">Chrome പ്രൊഫൈലുകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ എല്ലാ Chrome ഉള്ളടക്കവും വേർതിരിക്കാം. ജോലികാര്യങ്ങളും വിനോദവും പ്രത്യേകമായി തരംതിരിക്കുന്നത് ഇത് കൂടുതൽ എളുപ്പമാക്കുന്നു.</translation>
 <translation id="8614913330719544658">Google Chrome പ്രതികരിക്കുന്നില്ല. ഇപ്പോള്‍ വീണ്ടും സമാരംഭിക്കണോ?</translation>
 <translation id="861702415419836452">നിങ്ങളുടെ ചുറ്റുപാടിന്റെ 3D മാപ്പ് സൃഷ്ടിക്കുന്നതിന് നിങ്ങളുടെ ക്യാമറ ആക്സസ് ചെയ്യാൻ Chrome-ന് അനുമതി ആവശ്യമാണ്</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb
index 62b20806..27108ae 100644
--- a/chrome/app/resources/google_chrome_strings_mn.xtb
+++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -293,7 +293,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Энэ ажлын профайл нь таны хувийн профайлаас бүрэн тусдаа байна.</translation>
 <translation id="8556340503434111824">Google Chrome-ийн шинэ хувилбар боломжтой байгаа бөгөөд энэ нь урьд урьдныхаас ч илүү хурдан.</translation>
-<translation id="855774455305595697">Мөн Chrome-д асаах уу?</translation>
 <translation id="8571790202382503603">Chrome-н профайлуудаар та Chrome-н бүх зүйлээ тусгаарлах боломжтой. Энэ нь ажил болон зугаацдаг зүйлсээ тусад нь байлгахад илүү хялбар болгоно.</translation>
 <translation id="8614913330719544658">Google Chrome ажиллахгүй байна. Дахин эхүүлэх үү?</translation>
 <translation id="861702415419836452">Орчин тойрны тань 3D газрын зургийг үүсгэхийн тулд таны камерт хандах зөвшөөрөл Chrome-д шаардлагатай</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mr.xtb b/chrome/app/resources/google_chrome_strings_mr.xtb
index 263d9a6..deac5ad 100644
--- a/chrome/app/resources/google_chrome_strings_mr.xtb
+++ b/chrome/app/resources/google_chrome_strings_mr.xtb
@@ -248,6 +248,7 @@
 <translation id="7398801000654795464">तुम्ही <ph name="USER_EMAIL_ADDRESS" /> या रुपात Chrome मध्ये साइन इन केले होते. कृपया पुन्हा साइन इन करण्यासाठी समान खाते वापरा.</translation>
 <translation id="7408085963519505752">Chrome OS अटी</translation>
 <translation id="7419046106786626209">आपल्या डोमेनसाठी सिंक उपलब्ध नसल्यामुळे Chrome OS तुमचा डेटा संकालित करू शकले नाही.</translation>
+<translation id="7481213027396403996">Chrome ची सर्वात मजबूत सुरक्षा मिळवा</translation>
 <translation id="7486227612705979895">ॲड्रेस बारमध्ये सूचना देण्यासाठी Chrome तुमची ड्राइव्ह ॲक्सेस करेल</translation>
 <translation id="7535429826459677826">Google Chrome डेव्हलपर</translation>
 <translation id="7573289029918943991">तुमचे डिव्हाइस अप टू डेट असल्याची खात्री करण्यासाठी <ph name="LINK_BEGIN" />Chrome OS सेटिंग्ज<ph name="LINK_END" /> वर जा</translation>
@@ -306,6 +307,7 @@
 <translation id="8862326446509486874">तुमच्याकडे सिस्टम स्तरावरील इंस्टॉलसाठी योग्य अधिकार नाहीत. ॲडमिनिस्ट्रेटर म्हणून पुन्हा इंस्टॉलर चालविण्याचा प्रयत्न करा.</translation>
 <translation id="8914504000324227558">Chrome रीलाँच करा</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> वरून तुमच्या Android फोनवर नंबर पाठवण्यासाठी, दोन्ही डिव्हाइसवर Chrome मध्ये साइन इन करा.</translation>
+<translation id="8927704157641862988">Chrome ला गोपनीयतेसंबंधित सर्वात महत्त्वाच्या वाटणाऱ्या निवडी कस्टमाइझ करा. या मार्गदर्शकामध्ये प्रत्येक सेटिंग आणि पर्यायाचा समावेश नाही.</translation>
 <translation id="8986207147630327271">तुम्ही या ब्राउझरवर कार्य प्रोफाइल जोडत आहात आणि तुमच्या अ‍ॅडमिस्ट्रेटरला फक्त कार्य प्रोफाइलवर नियंत्रण देत आहात.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome अपडेट उपलब्ध आहे}=1{Chrome अपडेट उपलब्ध आहे}other{Chrome अपडेट # दिवसांसाठी उपलब्ध आहे}}</translation>
 <translation id="9026991721384951619">तुमचे खाते साइन इन तपशील कालबाह्य झाल्यामुळे Chrome OS तुमचा डेटा संकालित करू शकले नाही.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_my.xtb b/chrome/app/resources/google_chrome_strings_my.xtb
index ac642330..a9b2ce54 100644
--- a/chrome/app/resources/google_chrome_strings_my.xtb
+++ b/chrome/app/resources/google_chrome_strings_my.xtb
@@ -292,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">ဤအလုပ်ပရိုဖိုင်ကို သင်၏ကိုယ်ပိုင်ပရိုဖိုင်မှ လုံးဝခွဲထုတ်ထားသည်။</translation>
 <translation id="8556340503434111824">Google Chrome ၏ ဗားရှင်း အသစ်ကို ရနိုင်ပါပြီ၊ ၎င်းသည် မကြုံစဖူး ပိုမြန်ပါသည်။</translation>
-<translation id="855774455305595697">Chrome တွင်ပါ ဖွင့်မလား။</translation>
 <translation id="8571790202382503603">သင်၏ Chrome လုပ်ဆောင်ချက်အားလုံးကို Chrome ပရိုဖိုင်များဖြင့် သီးသန့်ခွဲခြားနိုင်သည်။ အလုပ်နှင့် ပျော်ရွှင်မှုကြား ခွဲခြားနိုင်ရန် ပိုမိုလွယ်ကူစေသည်။</translation>
 <translation id="8614913330719544658">Google Chrome သည် မတုံ့ပြန်ပါ။ ယခု ပြန်ပြီးဖွင့်တင်ရမလား?</translation>
 <translation id="861702415419836452">သင့်ပတ်ဝန်းကျင်၏ 3D မြေပုံ ပြုလုပ်ရန် Chrome က သင့်ကင်မရာကို အသုံးပြုခွင့် လိုအပ်သည်</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ne.xtb b/chrome/app/resources/google_chrome_strings_ne.xtb
index 5452d66..cf2fcd69 100644
--- a/chrome/app/resources/google_chrome_strings_ne.xtb
+++ b/chrome/app/resources/google_chrome_strings_ne.xtb
@@ -246,6 +246,7 @@
 <translation id="7398801000654795464">तपाइँलाई Chrome मा <ph name="USER_EMAIL_ADDRESS" /> को रूपमा साइन इन गिरएको थियो। कृपया फेरि साइन इन गर्नको लागि समान खाता प्रयोग गर्नुहोस्।</translation>
 <translation id="7408085963519505752">Chrome OS सर्तहरू</translation>
 <translation id="7419046106786626209">Chrome OS ले तपाइँको लगतलाई समक्रमण गर्न सकेन किनभने तपाइँको डोमेनको लागि समक्रमण उपलब्ध छैन।</translation>
+<translation id="7481213027396403996">Chrome को सबैभन्दा भरपर्दो सुरक्षा प्राप्त गर्नुहोस्</translation>
 <translation id="7486227612705979895">ठेगाना बारमा सुझाव दिन Chrome तपाईंको ड्राइभमाथि पहुँच राख्ने छ</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">आफ्नो यन्त्र अद्यावधिक छ कि छैन भनी हेर्न <ph name="LINK_BEGIN" />Chrome OS का सेटिङ<ph name="LINK_END" />मा जानुहोस्</translation>
@@ -304,6 +305,7 @@
 <translation id="8862326446509486874">तपाईंसँग सिस्टम-स्तरको स्थापनाको लागि उपयुक्त अधिकारहरू छैनन्। स्थापकलाई व्यवस्थापकको रूपमा पुन: चलाउने प्रयास गर्नुहोस्।</translation>
 <translation id="8914504000324227558">Chrome पुनः सुरु गर्नुहोस्</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> बाट आफ्नो Android फोनमा कुनै नम्बर पठाउन दुवै यन्त्रमा Chrome मा साइन इन गर्नुहोस्।</translation>
+<translation id="8927704157641862988">Chrome ले अत्यन्तै महत्त्वपूर्ण ठान्ने गोपनीयतासम्बन्धी विकल्पहरू कस्टमाइज गर्नुहोस्। यो निर्देशिकामा सबै सेटिङ र विकल्पहरू समावेश गरिएको छैन।</translation>
 <translation id="8986207147630327271">तपाईं यो ब्राउजरमा एउटा कार्य प्रोफाइल हाल्दै हुनुहुन्छ। तपाईंले यसो गर्नुभयो भने तपाईंका एड्मिन केवल उक्त कार्य प्रोफाइल नियन्त्रण गर्न सक्नुहुन्छ।</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome को अद्यावधिक उपलब्ध छ}=1{Chrome को अद्यावधिक उपलब्ध छ}other{Chrome को अद्यावधिक # दिनदेखि उपलब्ध छ}}</translation>
 <translation id="9026991721384951619">Chrome OS ले तपाइँको लगत समक्रमण गर्न सकेन किनभने तपाइँको खाता साइन-इन विवरणहरूको मिति सिधिएको छ।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb
index a007cf9..b8a9aba8 100644
--- a/chrome/app/resources/google_chrome_strings_nl.xtb
+++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -288,7 +288,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Dit werkprofiel is volledig gescheiden van je persoonlijke profiel.</translation>
 <translation id="8556340503434111824">Er is een nieuwe versie van Google Chrome en deze is sneller dan ooit.</translation>
-<translation id="855774455305595697">Ook aanzetten in Chrome?</translation>
 <translation id="8571790202382503603">Met Chrome-profielen kun je alle Chrome-gegevens gescheiden houden. Zo kun je makkelijker onderscheid maken tussen werk en privé.</translation>
 <translation id="8614913330719544658">Google Chrome reageert niet meer. Nu opnieuw starten?</translation>
 <translation id="861702415419836452">Chrome heeft toegangsrechten voor de camera nodig om een 3D-kaart van je omgeving te maken.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb
index 4193c69..d0f8f2a 100644
--- a/chrome/app/resources/google_chrome_strings_no.xtb
+++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -241,6 +241,7 @@
 <translation id="7398801000654795464">Du ble logget på Chrome som <ph name="USER_EMAIL_ADDRESS" />. Du må logge deg på igjen med samme konto.</translation>
 <translation id="7408085963519505752">Vilkår for Chrome OS</translation>
 <translation id="7419046106786626209">Chrome OS kunne ikke synkronisere dataene dine fordi synkronisering ikke er tilgjengelig for domenet ditt.</translation>
+<translation id="7481213027396403996">Få den sterkeste sikkerheten i Chrome</translation>
 <translation id="7486227612705979895">Chrome får tilgang til Disk-lagringen din for å kunne gi deg forslag i adressefeltet</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">For å se om enheten er oppdatert, gå til <ph name="LINK_BEGIN" />Innstillinger for Chrome OS<ph name="LINK_END" /></translation>
@@ -283,7 +284,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Denne jobbprofilen er helt separat fra den personlige profilen din.</translation>
 <translation id="8556340503434111824">En ny versjon av Google Chrome er tilgjengelig, og den er nå raskere en noen sinne.</translation>
-<translation id="855774455305595697">Vil du også slå det på i Chrome?</translation>
 <translation id="8571790202382503603">Med Chrome-profiler kan du holde alle Chrome-tingene dine atskilt. Dette gjør det lettere å skille mellom arbeid og fritid.</translation>
 <translation id="8614913330719544658">Google Chrome svarer ikke. Vil du starte på nytt nå?</translation>
 <translation id="861702415419836452">Chrome trenger tilgang til kameraet for å lage et 3D-kart av omgivelsene</translation>
@@ -300,6 +300,7 @@
 <translation id="8862326446509486874">Du har ikke de nødvendige rettighetene for å installere på systemnivå. Prøv å kjøre installasjonsprogrammet som administrator.</translation>
 <translation id="8914504000324227558">Start Chrome på nytt</translation>
 <translation id="8922193594870374009">For å sende numre fra <ph name="ORIGIN" /> til Android-telefonen din, logg på Chrome på begge enhetene.</translation>
+<translation id="8927704157641862988">Tilpass personvernvalgene som anses for å være de viktigste i Chrome. Denne veiledningen omfatter ikke alle innstillinger og alternativer.</translation>
 <translation id="8986207147630327271">Du er i ferd med å legge til en jobbprofil i denne nettleseren og gi administratoren din kontroll over kun jobbprofilen.</translation>
 <translation id="8999208279178790196">{0,plural, =0{En Chrome-oppdatering er tilgjengelig}=1{En Chrome-oppdatering er tilgjengelig}other{En Chrome-oppdatering har vært tilgjengelig i # dager}}</translation>
 <translation id="9026991721384951619">Chrome OS kunne ikke synkronisere dataene fordi påloggingsopplysningene dine er foreldede.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb
index 96f48f80..b8bd29e 100644
--- a/chrome/app/resources/google_chrome_strings_pl.xtb
+++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -282,7 +282,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Ten profil służbowy jest całkowicie oddzielony od Twojego profilu osobistego.</translation>
 <translation id="8556340503434111824">Dostępna jest nowa, szybsza niż kiedykolwiek wersja przeglądarki Google Chrome.</translation>
-<translation id="855774455305595697">Włączyć też w Chrome?</translation>
 <translation id="8571790202382503603">Dzięki profilom Chrome wszystkie swoje rzeczy z tej przeglądarki możesz przechowywać osobno. To pozwala łatwo oddzielić pracę od rozrywki.</translation>
 <translation id="8614913330719544658">Przeglądarka Google Chrome nie odpowiada. Uruchomić ją teraz ponownie?</translation>
 <translation id="861702415419836452">Aby utworzyć mapę 3D Twojego otoczenia, Chrome potrzebuje uprawnień dostępu do kamery</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-BR.xtb b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
index c5811c6..051137d 100644
--- a/chrome/app/resources/google_chrome_strings_pt-BR.xtb
+++ b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
@@ -284,7 +284,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Este perfil de trabalho é completamente separado do seu perfil pessoal.</translation>
 <translation id="8556340503434111824">Há uma nova versão ainda mais rápida do Google Chrome disponível.</translation>
-<translation id="855774455305595697">Ativar também no Chrome?</translation>
 <translation id="8571790202382503603">Você pode usar os perfis do Chrome para separar todos os seus dados nele. Assim, fica mais fácil dividir suas atividades entre trabalho e diversão.</translation>
 <translation id="8614913330719544658">O Google Chrome não responde. Reiniciar agora?</translation>
 <translation id="861702415419836452">O Chrome precisa de permissão para acessar sua câmera e criar um mapa 3D do ambiente a sua volta</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb
index f653ae6..a3711f6 100644
--- a/chrome/app/resources/google_chrome_strings_ro.xtb
+++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -241,6 +241,7 @@
 <translation id="7398801000654795464">Ați fost conectat(ă) la Chrome ca <ph name="USER_EMAIL_ADDRESS" />. Utilizați același cont pentru a vă conecta din nou.</translation>
 <translation id="7408085963519505752">Termeni și condiții pentru sistemul de operare Chrome</translation>
 <translation id="7419046106786626209">Sistemul de operare Chrome nu a putut sincroniza datele, deoarece sincronizarea nu este disponibilă pentru domeniul dvs.</translation>
+<translation id="7481213027396403996">Beneficiază de cel mai înalt nivel de securitate de la Chrome</translation>
 <translation id="7486227612705979895">Chrome îți va accesa spațiul de stocare Drive pentru a face sugestii în bara de adrese</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Pentru a verifica dacă dispozitivul este actualizat, accesează <ph name="LINK_BEGIN" />Setările sistemului de operare Chrome<ph name="LINK_END" /></translation>
@@ -299,6 +300,7 @@
 <translation id="8862326446509486874">Nu ai drepturile adecvate pentru instalarea la nivel de sistem. Încearcă să rulezi din nou programul de instalare ca Administrator.</translation>
 <translation id="8914504000324227558">Relansați Chrome</translation>
 <translation id="8922193594870374009">Pentru a trimite un număr de pe <ph name="ORIGIN" /> pe telefonul Android, conectează-te la Chrome pe ambele dispozitive.</translation>
+<translation id="8927704157641862988">Personalizează opțiunile de confidențialitate pe care Chrome le consideră cele mai importante. Acest ghid nu conține toate setările și opțiunile.</translation>
 <translation id="8986207147630327271">Adaugi un profil de serviciu în acest browser și îi acorzi administratorului permisiunea de a gestiona numai profilul de serviciu.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Este disponibilă o actualizare Chrome}=1{Este disponibilă o actualizare Chrome}few{O actualizare Chrome este disponibilă de # zile}other{O actualizare Chrome este disponibilă de # de zile}}</translation>
 <translation id="9026991721384951619">Sistemul de operare Chrome nu a putut sincroniza datele, deoarece detaliile de conectare pentru contul dvs. nu sunt actualizate.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb
index 557d292..ea600c40 100644
--- a/chrome/app/resources/google_chrome_strings_si.xtb
+++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -249,6 +249,7 @@
 <translation id="7398801000654795464">ඔබ Chrome වෙත <ph name="USER_EMAIL_ADDRESS" /> ලෙස පුරා තිබුණි. කරුණාකර නැවත පිරීමට එම ගිණුමම භාවිතා කරන්න.</translation>
 <translation id="7408085963519505752">Chrome OS නියම</translation>
 <translation id="7419046106786626209">Chrome OS ඔබේ වසම සඳහා සම්මුහුර්ත ලද නොහැකි නිසා Google Chrome හට ඔබේ දත්ත සම්මුහුර්ත කළ නොහැකි විය.</translation>
+<translation id="7481213027396403996">Chrome හි ප්‍රබලම ආරක්ෂාව ලබා ගන්න</translation>
 <translation id="7486227612705979895">ලිපින තීරුවේ යෝජනා කිරීමට Chrome ඔබගේ Drive ප්‍රවේශ කරනු ඇත</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">ඔබේ උපාංගය යාවත්කාලීනද බැලීමට <ph name="LINK_BEGIN" />Chrome OS සැකසුම්<ph name="LINK_END" /> වෙත යන්න</translation>
@@ -291,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">මෙම කාර්යාල පැතිකඩ ඔබගේ පුද්ගලික පැතිකඩෙන් සම්පූර්ණයෙන්ම වෙන්ව ඇත.</translation>
 <translation id="8556340503434111824">Google Chrome හි නව සංස්කරණයක් පවතී, එය සැමදාටම වඩා වේගවත්.</translation>
-<translation id="855774455305595697">Chrome තුළද ක්‍රියාත්මක කරන්න ද?</translation>
 <translation id="8571790202382503603">Chrome පැතිකඩවල් සමඟ ඔබට ඔබගේ සියලු Chrome දේවල් වෙන් කළ හැකිය. මෙය වැඩ සහ විනෝදය වෙන් කිරීම පහසු කරයි.</translation>
 <translation id="8614913330719544658">Google Chrome ප්‍රතිචාර නොදක්වයි. යළි දියත් කරන්නද?</translation>
 <translation id="861702415419836452">Chrome හට ඔබේ වටපිටාවේ ත්‍රිමාන සිතියමක් සෑදීමට ඔබේ කැමරාවට ප්‍රවේශ වීමට අවසර අවශ්‍යයි</translation>
@@ -308,6 +308,7 @@
 <translation id="8862326446509486874">ඔබට පද්ධති මට්ටමේ ස්ථානපයකට අයිතිය නැත. නැවත පරිපාලක වශයෙන් ස්ථාපකය ධාවනය කිරීමට උත්සාහ කරන්න.</translation>
 <translation id="8914504000324227558">Chrome නැවත දියත් කරන්න</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> වෙතින් ඔබගේ Android දුරකථනයට අංකයක් යැවීමට, උපාංග දෙකෙහිම Chrome වෙත පුරන්න.</translation>
+<translation id="8927704157641862988">Chrome වඩාත්ම වැදගත් ලෙස සලකන පෞද්ගලිකත්ව තේරීම් අභිරුචිකරණය කරන්න. මෙම මාර්ගෝපදේශයට සෑම සැකසුමක්ම සහ විකල්පයක්ම ඇතුළත් නොවේ.</translation>
 <translation id="8986207147630327271">ඔබ මෙම බ්‍රව්සරයට කාර්යාල පැතිකඩක් එක් කරන අතර ඔබගේ පරිපාලකට ඔබගේ පැතිකඩෙහි පාලනය ලබා දෙයි.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome යාවත්කාලීනයක් තිබේ}=1{Chrome යාවත්කාලීනයක් තිබේ}one{දින # කට Chrome යාවත්කාලීනයක් ලැබී ඇත}other{දින # කට Chrome යාවත්කාලීනයක් ලැබී ඇත}}</translation>
 <translation id="9026991721384951619">පිවිසුම් දත්ත කල් ඉකුත්වී ඇති බැවින් Chrome OS හට ඔබේ දත්ත සම්මුහු කළ නොහැකි විය.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb
index e7767f5..4407bb4 100644
--- a/chrome/app/resources/google_chrome_strings_sk.xtb
+++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -290,7 +290,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Tento pracovný profil je úplne oddelený od vášho osobného.</translation>
 <translation id="8556340503434111824">K dispozícii je nová verzia prehliadača Google Chrome, ktorá je rýchlejšia ako kedykoľvek predtým.</translation>
-<translation id="855774455305595697">Chcete to zapnúť aj v Chrome?</translation>
 <translation id="8571790202382503603">Profilmi Chromu môžete oddeliť všetok svoj obsah v Chrome. Jednoduchšie tak rozdelíte prácu a zábavu.</translation>
 <translation id="8614913330719544658">Google Chrome nereaguje. Chcete ho spustiť znova?</translation>
 <translation id="861702415419836452">Chrome potrebuje povolenie použiť fotoaparát, aby mohol vytvoriť 3D mapu vášho okolia</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb
index f893398..a9ef4a34 100644
--- a/chrome/app/resources/google_chrome_strings_sl.xtb
+++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -292,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Ta delovni profil je v celoti ločen od osebnega profila.</translation>
 <translation id="8556340503434111824">Na voljo je nova različica Google Chroma, ki je najhitrejša doslej.</translation>
-<translation id="855774455305595697">Želite vklopiti tudi v Chromu?</translation>
 <translation id="8571790202382503603">S profili v Chromu lahko ločite vse stvari v Chromu. Tako laže ločite delo in zabavo.</translation>
 <translation id="8614913330719544658">Google Chrome se ne odziva. Ga želite znova zagnati?</translation>
 <translation id="861702415419836452">Chrome potrebuje dovoljenje za dostop do fotoaparata zaradi ustvarjanja tridimenzionalnega zemljevida okolice.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
index edb79fa..845d6a4 100644
--- a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
+++ b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
@@ -250,6 +250,7 @@
 <translation id="7398801000654795464">Bili ste prijavljeni u Chrome kao <ph name="USER_EMAIL_ADDRESS" />. Koristite isti nalog da biste se ponovo prijavili.</translation>
 <translation id="7408085963519505752">Chrome OS uslovi</translation>
 <translation id="7419046106786626209">Chrome OS ne može da sinhronizuje podatke jer Sinhronizacija nije dostupna za domen.</translation>
+<translation id="7481213027396403996">Nabavite najjaču Chrome zaštitu</translation>
 <translation id="7486227612705979895">Chrome će pristupati Disku da bi prikazivao predloge na traci za adresu</translation>
 <translation id="7535429826459677826">Programerska verzija Google Chrome-a</translation>
 <translation id="7573289029918943991">Da biste proverili da li je uređaj ažuriran, idite u <ph name="LINK_BEGIN" />Podešavanja Chrome OS-a<ph name="LINK_END" /></translation>
@@ -308,6 +309,7 @@
 <translation id="8862326446509486874">Nemate odgovarajuća prava za instalaciju na nivou sistema. Probajte ponovo da pokrenete program za instalaciju, ovoga puta kao administrator.</translation>
 <translation id="8914504000324227558">Ponovo pokreni Chrome</translation>
 <translation id="8922193594870374009">Da biste poslali broj sa <ph name="ORIGIN" /> na Android telefon, prijavite se u Chrome na oba uređaja.</translation>
+<translation id="8927704157641862988">Prilagodite podešavanja privatnosti koja Chrome smatra najvažnijim. Ovaj vodič ne obuhvata svako podešavanje i opciju.</translation>
 <translation id="8986207147630327271">Dodajete poslovni profil u ovaj pregledač i dajete administratoru kontrolu samo nad ovim poslovnim profilom.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Ažuriranje za Chrome je dostupno}=1{Ažuriranje za Chrome je dostupno}one{Ažuriranje za Chrome je dostupno već # dan}few{Ažuriranje za Chrome je dostupno već # dana}other{Ažuriranje za Chrome je dostupno već # dana}}</translation>
 <translation id="9026991721384951619">Chrome OS ne može da sinhronizuje podatke zato što su podaci za prijavljivanje na nalog zastareli.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb
index 1d1656d..2ece4f80 100644
--- a/chrome/app/resources/google_chrome_strings_sr.xtb
+++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -250,6 +250,7 @@
 <translation id="7398801000654795464">Били сте пријављени у Chrome као <ph name="USER_EMAIL_ADDRESS" />. Користите исти налог да бисте се поново пријавили.</translation>
 <translation id="7408085963519505752">Chrome ОС услови</translation>
 <translation id="7419046106786626209">Chrome ОС не може да синхронизује податке јер Синхронизација није доступна за домен.</translation>
+<translation id="7481213027396403996">Набавите најјачу Chrome заштиту</translation>
 <translation id="7486227612705979895">Chrome ће приступати Диску да би приказивао предлоге на траци за адресу</translation>
 <translation id="7535429826459677826">Програмерска верзија Google Chrome-а</translation>
 <translation id="7573289029918943991">Да бисте проверили да ли је уређај ажуриран, идите у <ph name="LINK_BEGIN" />Подешавања Chrome ОС-а<ph name="LINK_END" /></translation>
@@ -308,6 +309,7 @@
 <translation id="8862326446509486874">Немате одговарајућа права за инсталацију на нивоу система. Пробајте поново да покренете програм за инсталацију, овога пута као администратор.</translation>
 <translation id="8914504000324227558">Поново покрени Chrome</translation>
 <translation id="8922193594870374009">Да бисте послали број са <ph name="ORIGIN" /> на Android телефон, пријавите се у Chrome на оба уређаја.</translation>
+<translation id="8927704157641862988">Прилагодите подешавања приватности која Chrome сматра најважнијим. Овај водич не обухвата свако подешавање и опцију.</translation>
 <translation id="8986207147630327271">Додајете пословни профил у овај прегледач и дајете администратору контролу само над овим пословним профилом.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Ажурирање за Chrome је доступно}=1{Ажурирање за Chrome је доступно}one{Ажурирање за Chrome је доступно већ # дан}few{Ажурирање за Chrome је доступно већ # дана}other{Ажурирање за Chrome је доступно већ # дана}}</translation>
 <translation id="9026991721384951619">Chrome ОС не може да синхронизује податке зато што су подаци за пријављивање на налог застарели.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb
index f8be86b..f2af4a3a 100644
--- a/chrome/app/resources/google_chrome_strings_sw.xtb
+++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -250,6 +250,7 @@
 <translation id="7398801000654795464">Uliingia kwenye Chrome kama <ph name="USER_EMAIL_ADDRESS" />. Tafadhali tumia akaunti sawa ili kuingia tena.</translation>
 <translation id="7408085963519505752">Masharti ya Chrome OS</translation>
 <translation id="7419046106786626209">Mfumo wa Uendeshaji wa Chrome haukuweza kusawazisha data yako kwa sababu Usawazishaji haupatikani katika kikoa chako.</translation>
+<translation id="7481213027396403996">Pata usalama thabiti zaidi kutoka Chrome</translation>
 <translation id="7486227612705979895">Chrome itafikia Hifadhi yako ili kutoa mapendekezo kwenye sehemu ya anwani</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Ili uone ikiwa kifaa chako kimesasishwa, nenda kwenye <ph name="LINK_BEGIN" />Mipangilio ya Mfumo wa Uendeshaji wa Chrome<ph name="LINK_END" /></translation>
@@ -308,6 +309,7 @@
 <translation id="8862326446509486874">Huna haki zifaazo ili kufanya usakinishaji wa kiwango cha mfumo. Jaribu kutumia kisakinishi kama msimamiaji kompyuta.</translation>
 <translation id="8914504000324227558">Zindua upya Chrome</translation>
 <translation id="8922193594870374009">Ili uweze kutuma nambari kwa simu yako ya Android kutoka <ph name="ORIGIN" />, ingia katika akaunti kwenye Chrome ukitumia vifaa vyote viwili.</translation>
+<translation id="8927704157641862988">Weka mapendeleo kwenye chaguo za faragha ambazo Chrome inachukulia kuwa ni muhimu zaidi. Mwongozo huu haujumuishi mipangilio na chaguo zote.</translation>
 <translation id="8986207147630327271">Unaongeza wasifu wa kazini kwenye kivinjari hiki na unampa msimamizi wako uwezo wa kudhibiti wasifu huo wa kazini pekee.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Sasisho la Chrome linapatikana}=1{Sasisho la Chrome linapatikana}other{Sasisho la Chrome limekuwepo kwa siku #}}</translation>
 <translation id="9026991721384951619">Mfumo wa Uendeshaji wa Chrome haukuweza kusawazisha data yako kwa sababu maelezo yako ya kuingia katika akaunti yanahitaji kusasishwa.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb
index 1bf64ed..b16ec740 100644
--- a/chrome/app/resources/google_chrome_strings_te.xtb
+++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -242,6 +242,7 @@
 <translation id="7398801000654795464">మీరు <ph name="USER_EMAIL_ADDRESS" />గా Chromeకు సైన్ ఇన్ చేశారు. మళ్లీ సైన్ ఇన్ చేయడానికి, దయచేసి ఇదే ఖాతాను ఉపయోగించండి.</translation>
 <translation id="7408085963519505752">Chrome OS నిబంధనలు</translation>
 <translation id="7419046106786626209">మీ డొమైన్ కోసం సింక్‌ అందుబాటులో లేనందున Chrome OS మీ డేటాను సింక్ చేయ‌లేక‌పోయింది.</translation>
+<translation id="7481213027396403996">Chrome అత్యంత శక్తివంతమైన రక్షణను పొందండి</translation>
 <translation id="7486227612705979895">అడ్రస్ బార్‌లో మీకు సూచనలు ఇవ్వడానికి, Chrome మీ డ్రైవ్‌ను యాక్సెస్ చేస్తుంది</translation>
 <translation id="7535429826459677826">Google Chrome డెవలపర్</translation>
 <translation id="7573289029918943991">మీ పరికరం అప్‌డేట్ చేయబడి ఉందని చూడటానికి <ph name="LINK_BEGIN" />Chrome OS సెట్టింగ్‌లు<ph name="LINK_END" />కు వెళ్లండి</translation>
@@ -284,7 +285,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">ఈ వర్క్ ప్రొఫైల్, మీ వ్యక్తిగత ప్రొఫైల్ నుండి పూర్తిగా భిన్నంగా ఉంది.</translation>
 <translation id="8556340503434111824">Google Chrome యొక్క కొత్త వెర్షన్ అందుబాటులో ఉంది, ఇది మునుపటి కంటే వేగవంతంగా ఉంటుంది.</translation>
-<translation id="855774455305595697">Chromeలో కూడా ఆన్ చేయాలా?</translation>
 <translation id="8571790202382503603">మీ మొత్తం Chrome అంశాలను మీ Chrome ప్రొఫైల్‌లతో వేరు చేయండి. ఇలా చేయడం వలన ఆఫీస్, వినోదాన్ని వేర్వేరుగా ఉంచవచ్చు.</translation>
 <translation id="8614913330719544658">Google Chrome స్పందించడం లేదు. ఇప్పుడే పునఃప్రారంభించాలా?</translation>
 <translation id="861702415419836452">మీ పరిసరాల 3D మ్యాప్‌ను సృష్టించడానికి Chromeకు మీ కెమెరాను యాక్సెస్ చేసే అనుమతి కావాలి</translation>
@@ -301,6 +301,7 @@
 <translation id="8862326446509486874">సిస్టమ్-స్థాయిలో ఇన్‌స్టాల్‌ చేయ‌డానికి మీకు సరైన హక్కులు లేవు. నిర్వాహకుడి లాగా ఇన్‌స్టాలర్‌ను మ‌ళ్లీ రన్ చేయ‌డానికి ప్రయత్నించండి.</translation>
 <translation id="8914504000324227558">Chromeను పునఃప్రారంభించు</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> నుండి మీ Android ఫోన్‌కు నంబర్‌ను పంపడానికి, రెండు పరికరాలలోని Chromeకు సైన్ ఇన్ చేయండి.</translation>
+<translation id="8927704157641862988">Chrome అత్యంత ముఖ్యమైనవిగా పరిగణించే గోప్యతా ఎంపికలను అనుకూలంగా మార్చండి. ఈ గైడ్‌ ప్రతి సెట్టింగ్, ఆప్షన్‌ను కలిగి ఉండదు.</translation>
 <translation id="8986207147630327271">మీరు ఈ బ్రౌజర్‌కు వర్క్ ప్రొఫైల్‌ను జోడిస్తున్నారు, ఇంకా మీ అడ్మినిస్ట్రేటర్‌కు వర్క్ ప్రొఫైల్‌పై కంట్రోల్ ఇస్తున్నారు.</translation>
 <translation id="8999208279178790196">{0,plural, =0{ఒక Chrome అప్‌డేట్ అందుబాటులో ఉంది}=1{ఒక Chrome అప్‌డేట్ అందుబాటులో ఉంది}other{ఒక Chrome అప్‌డేట్ # రోజులుగా అందుబాటులో ఉంది}}</translation>
 <translation id="9026991721384951619">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chrome OS మీ డేటాను సింక్ చేయ‌లేకపోయింది.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb
index b83e2374..f38b64bb 100644
--- a/chrome/app/resources/google_chrome_strings_th.xtb
+++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -240,6 +240,7 @@
 <translation id="7398801000654795464">คุณเคยลงชื่อเข้าใช้ Chrome ในชื่อ <ph name="USER_EMAIL_ADDRESS" /> โปรดใช้บัญชีเดิมเพื่อลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="7408085963519505752">ข้อกำหนดของ Chrome OS</translation>
 <translation id="7419046106786626209">Chrome OS ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากการซิงค์ไม่พร้อมให้บริการสำหรับโดเมนของคุณ</translation>
+<translation id="7481213027396403996">รับการรักษาความปลอดภัยที่เข้มงวดที่สุดของ Chrome</translation>
 <translation id="7486227612705979895">Chrome จะเข้าถึงไดรฟ์ของคุณเพื่อแสดงคำแนะนำในแถบที่อยู่</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">หากต้องการดูว่าอุปกรณ์เป็นเวอร์ชันล่าสุดแล้วหรือไม่ ให้ไปที่<ph name="LINK_BEGIN" />การตั้งค่า Chrome OS<ph name="LINK_END" /></translation>
@@ -282,7 +283,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">โปรไฟล์งานนี้แยกออกจากโปรไฟล์ส่วนตัวโดยสิ้นเชิง</translation>
 <translation id="8556340503434111824">มี Chrome รุ่นใหม่ให้ใช้งานแล้วและเร็วกว่าเดิม</translation>
-<translation id="855774455305595697">เปิดใน Chrome ด้วยไหม</translation>
 <translation id="8571790202382503603">โปรไฟล์ Chrome ช่วยให้คุณแยกข้อมูลต่างๆ ใน Chrome ได้ ซึ่งทำให้แยกการทำงานออกจากความบันเทิงได้ง่ายขึ้น</translation>
 <translation id="8614913330719544658">Google Chrome ไม่ตอบสนอง เปิดใช้งานใหม่ตอนนี้หรือไม่</translation>
 <translation id="861702415419836452">Chrome ต้องการสิทธิ์เข้าถึงกล้องเพื่อสร้างแผนที่ 3 มิติของสิ่งที่อยู่รอบตัวคุณ</translation>
@@ -299,6 +299,7 @@
 <translation id="8862326446509486874">คุณไม่มีสิทธิ์ในการติดตั้งระดับระบบ ทดลองใช้งานโปรแกรมติดตั้งอีกครั้งโดยกำหนดให้เป็นผู้ดูแลระบบ</translation>
 <translation id="8914504000324227558">เปิด Chrome ขึ้นใหม่</translation>
 <translation id="8922193594870374009">หากต้องการส่งหมายเลขจาก <ph name="ORIGIN" /> ไปยังโทรศัพท์ Android ให้ลงชื่อเข้าใช้ Chrome ในอุปกรณ์ทั้งสองเครื่อง</translation>
+<translation id="8927704157641862988">ปรับแต่งตัวเลือกด้านความเป็นส่วนตัวที่ Chrome จัดว่าสำคัญที่สุด คำแนะนำนี้อาจมีการตั้งค่าและตัวเลือกไม่ครบทั้งหมด</translation>
 <translation id="8986207147630327271">คุณกำลังเพิ่มโปรไฟล์งานลงในเบราว์เซอร์นี้และให้ผู้ดูแลระบบเป็นผู้ควบคุมเฉพาะโปรไฟล์งานดังกล่าว</translation>
 <translation id="8999208279178790196">{0,plural, =0{มีอัปเดต Chrome พร้อมให้ใช้งาน}=1{มีอัปเดต Chrome พร้อมให้ใช้งาน}other{อัปเดต Chrome พร้อมให้ใช้งานมาแล้ว # วัน}}</translation>
 <translation id="9026991721384951619">Chrome OS ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากรายละเอียดการลงชื่อเข้าใช้บัญชีของคุณล้าสมัย</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb
index 9f61cc81aa..2eba86a7 100644
--- a/chrome/app/resources/google_chrome_strings_tr.xtb
+++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -243,6 +243,7 @@
 <translation id="7398801000654795464">Chrome'da <ph name="USER_EMAIL_ADDRESS" /> olarak oturum açtınız. Tekrar oturum açmak için lütfen aynı hesabı kullanın.</translation>
 <translation id="7408085963519505752">Chrome OS Şartları</translation>
 <translation id="7419046106786626209">Senkronizasyon, alan adınızda kullanılamadığından Chrome OS, verilerinizi senkronize edemedi.</translation>
+<translation id="7481213027396403996">Chrome’un en güçlü güvenlik özelliklerinden faydalanın</translation>
 <translation id="7486227612705979895">Chrome, adres çubuğunda öneriler göstermek için Drive'ınıza erişecektir</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">Cihazınızın güncel olup olmadığını görmek için <ph name="LINK_BEGIN" />Chrome OS Ayarları<ph name="LINK_END" />'na gidin</translation>
@@ -301,6 +302,7 @@
 <translation id="8862326446509486874">Sistem düzeyinde yükleme için gerekli haklara sahip değilsiniz. Yükleyiciyi Yönetici olarak tekrar çalıştırmayı deneyin.</translation>
 <translation id="8914504000324227558">Chrome'u Yeniden Başlat</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> sitesinden Android telefonunuza numara göndermek için iki cihazdan da Chrome'da oturum açın.</translation>
+<translation id="8927704157641862988">Chrome'un en önemli olduğunu düşündüğü gizlilik seçeneklerini özelleştirin. Bu kılavuzda her ayar ve seçenek yer almaz.</translation>
 <translation id="8986207147630327271">Bu tarayıcıya bir iş profili ekliyor ve yöneticinize yalnızca iş profilini kontrol etme yetkisi veriyorsunuz.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Bir Chrome güncellemesi var}=1{Bir Chrome güncellemesi var}other{# gün önce kullanıma sunulmuş bir Chrome güncellemesi var}}</translation>
 <translation id="9026991721384951619">Hesap oturum açma ayrıntılarınız güncel olmadığından Chrome OS, verilerinizi senkronize edemedi.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb
index 5dc05b9..61c11c2 100644
--- a/chrome/app/resources/google_chrome_strings_uk.xtb
+++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -284,7 +284,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Цей робочий профіль ніяк не пов'язаний із вашим особистим профілем.</translation>
 <translation id="8556340503434111824">Доступна нова версія Google Chrome – швидша, ніж будь-коли.</translation>
-<translation id="855774455305595697">Також увімкнути в Chrome?</translation>
 <translation id="8571790202382503603">Створюйте профілі Chrome для різних цілей (наприклад, робочий і особистий), щоб розмежовувати роботу й дозвілля.</translation>
 <translation id="8614913330719544658">Google Chrome не відповідає. Перезапустити зараз?</translation>
 <translation id="861702415419836452">Chrome потрібен дозвіл на використання камери, щоб створити 3D-карту вашого оточення</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ur.xtb b/chrome/app/resources/google_chrome_strings_ur.xtb
index 7159f001..38edff8 100644
--- a/chrome/app/resources/google_chrome_strings_ur.xtb
+++ b/chrome/app/resources/google_chrome_strings_ur.xtb
@@ -249,6 +249,7 @@
 <translation id="7398801000654795464">‏آپ Chrome میں بطور <ph name="USER_EMAIL_ADDRESS" /> سائن ان تھے۔ براہ کرم دوبارہ سائن ان کرنے کیلئے وہی اکاؤنٹ استعمال کریں۔</translation>
 <translation id="7408085963519505752">‏Chrome OS کی شرائط</translation>
 <translation id="7419046106786626209">‏Chrome OS آپ کے ڈیٹا کی مطابقت پذیری نہیں کر سکا کیونکہ Sync آپ کے ڈومین کیلئے دستیاب نہیں ہے۔</translation>
+<translation id="7481213027396403996">‏Chrome کی مضبوط ترین سیکیورٹی حاصل کریں</translation>
 <translation id="7486227612705979895">‏پتہ بار میں تجاویز پیش کرنے کے لیے Chrome آپ کی Drive تک رسائی حاصل کرے گا</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">‏یہ دیکھنے کی لیے کہ کیا آپ کا آلہ اپ ٹو ڈیٹ ہے، <ph name="LINK_BEGIN" />Chromium OS کی ترتیبات<ph name="LINK_END" /> پر جائیں</translation>
@@ -291,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">یہ دفتری پروفائل آپ کی ذاتی پروفائل سے پوری طرح علیحدہ ہے۔</translation>
 <translation id="8556340503434111824">‏Google Chrome کا ایک نیا ورژن دستیاب ہے اور پہلے سے کہیں زیادہ تیز ہے۔</translation>
-<translation id="855774455305595697">‏Chrome میں بھی آن کرنا چاہتے ہیں؟</translation>
 <translation id="8571790202382503603">‏Chrome کی پروفائلز کے ساتھ آپ اپنے تمام Chrome کی چیزوں کو الگ کر سکتے ہیں۔ یہ کام اور تفریح کے درمیان تقسیم کرنا زیادہ آسان بناتا ہے۔</translation>
 <translation id="8614913330719544658">‏Google Chrome جواب نہیں دے رہا ہے۔ ابھی دوبارہ شروع کریں؟</translation>
 <translation id="861702415419836452">‏اپنے اطراف کا 3D نقشہ تخلیق کرنے کی خاطر Chrome کو آپ کے کیمرے تک رسائی کی اجازت درکار ہے</translation>
@@ -308,6 +308,7 @@
 <translation id="8862326446509486874">سسٹم کی سطح پر انسٹال کرنے کیلئے آپ کے پاس مناسب حقوق نہیں ہیں۔ انسٹالر کو دوبارہ منتظم کے بطور چلانے کی کوشش کریں۔</translation>
 <translation id="8914504000324227558">‏Chrome کو دوبارہ شروع کریں</translation>
 <translation id="8922193594870374009">‏<ph name="ORIGIN" /> سے اپنے Android فون پر نمبر بھیجنے کے لئے دونوں آلات پر Chrome میں سائن ان کریں۔</translation>
+<translation id="8927704157641862988">‏رازداری کے ان اختیارات کو حسب ضرورت بنائیں جنہیں Chrome انتہائی اہم سمجھتا ہے۔ اس گائیڈ میں ہر ترتیب اور اختیار شامل نہیں ہے۔</translation>
 <translation id="8986207147630327271">آپ اس براؤزر میں ایک دفتری پروفائل شامل کر رہے ہیں اور اپنے منتظم کو صرف دفتری پروفائل پر کنٹرول فراہم کر رہے ہیں۔</translation>
 <translation id="8999208279178790196">{0,plural, =0{‏Chrome کا اپ ڈیٹ دستیاب ہے}=1{‏Chrome کا اپ ڈیٹ دستیاب ہے}other{‏Chrome کا اپ ڈیٹ # دن سے دستیاب ہے}}</translation>
 <translation id="9026991721384951619">‏Chrome OS آپ کے اکاؤنٹ کی سائن ان تفصیلات پرانی ہونے کی وجہ سے آپ کے ڈیٹا کی مطابقت پذیری نہیں کر سکا۔</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb
index ec77b72..7a20dc0 100644
--- a/chrome/app/resources/google_chrome_strings_uz.xtb
+++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -290,7 +290,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Bu ish profili shaxsiy profilingizdan butunlay ajratilgan.</translation>
 <translation id="8556340503434111824">Google Chrome brauzerining yanada tezroq ishlaydigan yangi versiyasi chiqdi.</translation>
-<translation id="855774455305595697">Chromeda ham yoqilsinmi?</translation>
 <translation id="8571790202382503603">Chrome profillari brauzerdan alohida foydalanish uchun kerak. Bunda ish va hordiqni ajratish osonlashadi.</translation>
 <translation id="8614913330719544658">Google Chrome javob bermayapti. Qaytadan ishga tushirilsinmi?</translation>
 <translation id="861702415419836452">Chrome atrofingiz 3D xaritasini yaratishi uchun unga kamera ruxsati zarur</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
index 9c0bce9..153407a 100644
--- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -248,6 +248,7 @@
 <translation id="7398801000654795464">您使用了 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入 Chrome,請使用相同帳戶重新登入。</translation>
 <translation id="7408085963519505752">Chrome 作業系統條款</translation>
 <translation id="7419046106786626209">您的網域無法使用「同步功能」,因此 Chrome 作業系統無法同步處理您的數據。</translation>
+<translation id="7481213027396403996">獲得 Chrome 最強大的安全防護</translation>
 <translation id="7486227612705979895">Chrome 會存取您的「雲端硬碟」,然後在網址列提出建議</translation>
 <translation id="7535429826459677826">Google Chrome 開發人員版</translation>
 <translation id="7573289029918943991">如要查看裝置是否已更新,請前往 <ph name="LINK_BEGIN" />Chrome 作業系統設定<ph name="LINK_END" /></translation>
@@ -290,7 +291,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">此工作設定檔與個人設定檔是完全分開。</translation>
 <translation id="8556340503434111824">Google Chrome 推出全新版本,速度更勝從前。</translation>
-<translation id="855774455305595697">要一併在 Chrome 中開啟這項功能嗎?</translation>
 <translation id="8571790202382503603">透過 Chrome 設定檔,您可將所有 Chrome 內容分門別類,從而更輕易劃分工作和娛樂內容。</translation>
 <translation id="8614913330719544658">Google Chrome 沒有回應,要立即重新啟動嗎?</translation>
 <translation id="861702415419836452">Chrome 需要取得權限,才能存取相機以建立您身處環境的 3D 地圖</translation>
@@ -307,6 +307,7 @@
 <translation id="8862326446509486874">您沒有在系統層級進行安裝的權限,請以管理員的身分執行安裝程式。</translation>
 <translation id="8914504000324227558">重新啟動 Chrome</translation>
 <translation id="8922193594870374009">如要將號碼從 <ph name="ORIGIN" /> 傳送至 Android 手機,請在這兩部裝置上登入 Chrome。</translation>
+<translation id="8927704157641862988">自訂 Chrome 最重視的隱私權選項。這份指南並未涵蓋所有設定和選項。</translation>
 <translation id="8986207147630327271">您即將在此瀏覽器中新增工作設定檔,並只將工作設定檔的控制權授予管理員。</translation>
 <translation id="8999208279178790196">{0,plural, =0{有可用的 Chrome 更新}=1{有可用的 Chrome 更新}other{Chrome 更新已發佈 # 天}}</translation>
 <translation id="9026991721384951619">您的帳戶登入詳情尚未更新,因此 Chrome 作業系統無法同步處理您的數據。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
index 3ef6403..3a292377 100644
--- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -243,6 +243,7 @@
 <translation id="7398801000654795464">你使用了 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入 Chrome,請使用相同帳戶重新登入。</translation>
 <translation id="7408085963519505752">Chrome 作業系統條款</translation>
 <translation id="7419046106786626209">你的網域無法使用「同步功能」,因此 Chrome 作業系統無法同步處理你的資料。</translation>
+<translation id="7481213027396403996">獲得 Chrome 最強大的安全防護</translation>
 <translation id="7486227612705979895">Chrome 將存取你的雲端硬碟,並在網址列提供建議</translation>
 <translation id="7535429826459677826">Google Chrome 開發人員版</translation>
 <translation id="7573289029918943991">如要查看你的裝置是否為最新版,請前往 <ph name="LINK_BEGIN" />Chrome 作業系統設定<ph name="LINK_END" /></translation>
@@ -285,7 +286,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">這個工作資料夾與個人資料夾各自獨立。</translation>
 <translation id="8556340503434111824">Google Chrome 推出全新版本,速度更勝以往。</translation>
-<translation id="855774455305595697">要一併在 Chrome 中開啟這項功能嗎?</translation>
 <translation id="8571790202382503603">你可以運用 Chrome 設定檔區隔各種 Chrome 資料,更輕鬆區分工作和娛樂。</translation>
 <translation id="8614913330719544658">Google Chrome 沒有回應,要立即重新啟動嗎?</translation>
 <translation id="861702415419836452">Chrome 需要取得攝影機權限,才能根據你的周遭環境建立 3D 地圖</translation>
@@ -302,6 +302,7 @@
 <translation id="8862326446509486874">你沒有在系統層級進行安裝的權限,請以管理員的身分執行安裝檔。</translation>
 <translation id="8914504000324227558">重新啟動 Chrome</translation>
 <translation id="8922193594870374009">如要將號碼從 <ph name="ORIGIN" /> 傳送到 Android 手機,請在這兩部裝置上登入 Chrome。</translation>
+<translation id="8927704157641862988">自訂 Chrome 最重視的隱私權選項。這份指南並未涵蓋所有設定和選項。</translation>
 <translation id="8986207147630327271">你即將在這個瀏覽器中新增工作資料夾,並僅將工作資料夾的控制權授予管理員。</translation>
 <translation id="8999208279178790196">{0,plural, =0{有可用的 Chrome 更新}=1{有可用的 Chrome 更新}other{Chrome 更新已發布 # 天}}</translation>
 <translation id="9026991721384951619">你的帳戶登入詳細資料尚未更新,因此 Chrome 作業系統無法同步處理你的資料。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zu.xtb b/chrome/app/resources/google_chrome_strings_zu.xtb
index bf8a8dc..b2e0e1b 100644
--- a/chrome/app/resources/google_chrome_strings_zu.xtb
+++ b/chrome/app/resources/google_chrome_strings_zu.xtb
@@ -292,7 +292,6 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8550334526674375523">Le phrofayela yomsebenzi ihluke ngokugcwele kusukela kuphrofayela yakho siqu.</translation>
 <translation id="8556340503434111824">Kukhona inguqulo entsha ye-Google Chrome etholakalayo, futhi ishesha kakhulu kunakuqala.</translation>
-<translation id="855774455305595697">Vula futhi ku-Chrome?</translation>
 <translation id="8571790202382503603">Ngamaphrofayela we-Chrome ungahlukanisa zonke izinto zakho ze-Chrome. Lokhu kwenza kube lula ukuhlukanisa phakathi komsebenzi nokuzijabulisa.</translation>
 <translation id="8614913330719544658">I-Google Chrome ayiphenduli. Qalisa kabusha manje?</translation>
 <translation id="861702415419836452">I-Chrome idinga imvume yokufinyelela kwikhamera yakho ukudala imephu engu-3D yendawo yakho ekuzungezile</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index 9db956b0..cb579ea 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -724,13 +724,17 @@
     More actions, saved account for <ph name="USERNAME">$1<ex>example@gmail.com</ex></ph> on <ph name="DOMAIN">$2<ex>www.google.com</ex></ph>
   </message>
   <!-- TODO(crbug.com/1202088): Remove "translateable=false" once definitive string is available, and update description. -->
-  <message translateable="false" name="IDS_SETTINGS_TRUSTED_VAULT_OPT_IN_LABEL" desc="Label for the link to the page to opt in to trusted vault encryption">
+  <message translateable="false" name="IDS_SETTINGS_TRUSTED_VAULT_BANNER_LABEL" desc="Label for the trusted vault encryption banner in settings.">
     Trusted vault
   </message>
   <!-- TODO(crbug.com/1202088): Remove "translateable=false" once definitive string is available, and update description. -->
-  <message translateable="false" name="IDS_SETTINGS_TRUSTED_VAULT_OPT_IN_SUB_LABEL" desc="Sub-label for the link to the page to opt in to trusted vault encryption">
+  <message translateable="false" name="IDS_SETTINGS_TRUSTED_VAULT_BANNER_SUB_LABEL_OFFER_OPT_IN" desc="Sub-label for the trusted vault encryption banner in settings, when the user is being offered to opt in.">
     Opt in to trusted vault
   </message>
+  <!-- TODO(crbug.com/1202088): Remove "translateable=false" once definitive string is available, and update description. -->
+  <message translateable="false" name="IDS_SETTINGS_TRUSTED_VAULT_BANNER_SUB_LABEL_OPTED_IN" desc="Sub-label for the trusted vault encryption banner in settings, when the user is already opted in.">
+    You are opted in to trusted vault
+  </message>
   <message name="IDS_SETTINGS_PASSWORD_SHOW_PASSWORD_A11Y" desc="The ARIA (accessibility) message for the 'Show Password' button, which sits in every row of the password list. For this row does not include a password, only information of the account. Reveals password when clicked.">
     Show password for <ph name="USERNAME">$1<ex>example@gmail.com</ex></ph> on <ph name="DOMAIN">$2<ex>www.google.com</ex></ph>
   </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 39d2ed34..08c30085 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -211,6 +211,8 @@
     "bookmarks/chrome_bookmark_client.h",
     "bookmarks/managed_bookmark_service_factory.cc",
     "bookmarks/managed_bookmark_service_factory.h",
+    "breadcrumbs/breadcrumbs_status.cc",
+    "breadcrumbs/breadcrumbs_status.h",
     "browser_about_handler.cc",
     "browser_about_handler.h",
     "browser_features.cc",
@@ -1357,6 +1359,10 @@
     "privacy/privacy_metrics_service.h",
     "privacy/privacy_metrics_service_factory.cc",
     "privacy/privacy_metrics_service_factory.h",
+    "privacy_sandbox/privacy_sandbox_service.cc",
+    "privacy_sandbox/privacy_sandbox_service.h",
+    "privacy_sandbox/privacy_sandbox_service_factory.cc",
+    "privacy_sandbox/privacy_sandbox_service_factory.h",
     "privacy_sandbox/privacy_sandbox_settings.cc",
     "privacy_sandbox/privacy_sandbox_settings.h",
     "privacy_sandbox/privacy_sandbox_settings_factory.cc",
@@ -5092,6 +5098,8 @@
       "chromeos/policy/dlp/dlp_clipboard_notifier.h",
       "chromeos/policy/dlp/dlp_confidential_contents.cc",
       "chromeos/policy/dlp/dlp_confidential_contents.h",
+      "chromeos/policy/dlp/dlp_content_manager.cc",
+      "chromeos/policy/dlp/dlp_content_manager.h",
       "chromeos/policy/dlp/dlp_content_manager_lacros.cc",
       "chromeos/policy/dlp/dlp_content_manager_lacros.h",
       "chromeos/policy/dlp/dlp_content_observer.cc",
@@ -5106,6 +5114,8 @@
       "chromeos/policy/dlp/dlp_drag_drop_notifier.h",
       "chromeos/policy/dlp/dlp_histogram_helper.cc",
       "chromeos/policy/dlp/dlp_histogram_helper.h",
+      "chromeos/policy/dlp/dlp_notification_helper.cc",
+      "chromeos/policy/dlp/dlp_notification_helper.h",
       "chromeos/policy/dlp/dlp_policy_constants.h",
       "chromeos/policy/dlp/dlp_reporting_manager.cc",
       "chromeos/policy/dlp/dlp_reporting_manager.h",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 337c3a81..db900fd 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -7828,6 +7828,13 @@
 
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+  // In order to be considered for Lacros, flags additionally need to be usable
+  // on Chrome OS.
+  if (!(entry.supported_platforms & (kOsCrOS | kOsCrOSOwnerOnly)))
+    return true;
+#endif  //  BUILDFLAG(IS_CHROMEOS_LACROS)
+
   // data-reduction-proxy-lo-fi and enable-data-reduction-proxy-lite-page
   // are only available for Chromium builds and the Canary/Dev/Beta channels.
   if ((!strcmp("data-reduction-proxy-lo-fi", entry.internal_name) ||
diff --git a/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.cc b/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.cc
index 6807ebb0..8ec840e 100644
--- a/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.cc
+++ b/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.cc
@@ -55,15 +55,17 @@
   basic_interactions->ToggleUserAction(proto);
 }
 
-void ShowInfoPopup(const InfoPopupProto& proto,
-                   base::android::ScopedJavaGlobalRef<jobject> jcontext,
-                   const std::string& close_display_str) {
+void ShowInfoPopup(
+    const InfoPopupProto& proto,
+    base::android::ScopedJavaGlobalRef<jobject> jcontext,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
+    const std::string& close_display_str) {
   JNIEnv* env = base::android::AttachCurrentThread();
   auto jcontext_local = base::android::ScopedJavaLocalRef<jobject>(jcontext);
   ui_controller_android_utils::ShowJavaInfoPopup(
       env,
-      ui_controller_android_utils::CreateJavaInfoPopup(env, proto,
-                                                       close_display_str),
+      ui_controller_android_utils::CreateJavaInfoPopup(
+          env, proto, jinfo_page_util, close_display_str),
       jcontext_local);
 }
 
diff --git a/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.h b/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.h
index b23b549..0f75098 100644
--- a/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.h
+++ b/chrome/browser/android/autofill_assistant/generic_ui_interactions_android.h
@@ -42,9 +42,11 @@
 
 // Displays an info popup on the screen.
 // close_display_str is used to show a button, if not specified in proto.
-void ShowInfoPopup(const InfoPopupProto& proto,
-                   base::android::ScopedJavaGlobalRef<jobject> jcontext,
-                   const std::string& close_display_str);
+void ShowInfoPopup(
+    const InfoPopupProto& proto,
+    base::android::ScopedJavaGlobalRef<jobject> jcontext,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
+    const std::string& close_display_str);
 
 // Displays a list popup on the screen.
 void ShowListPopup(base::WeakPtr<UserModel> user_model,
diff --git a/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.cc b/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.cc
index 9b6418b..0a09bb8 100644
--- a/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.cc
+++ b/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.cc
@@ -466,6 +466,7 @@
 GenericUiNestedControllerAndroid::CreateFromProto(
     const GenericUserInterfaceProto& proto,
     base::android::ScopedJavaGlobalRef<jobject> jcontext,
+    base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
     base::android::ScopedJavaGlobalRef<jobject> jdelegate,
     EventHandler* event_handler,
     UserModel* user_model,
@@ -475,7 +476,7 @@
   auto view_handler = std::make_unique<ViewHandlerAndroid>();
   auto interaction_handler = std::make_unique<InteractionHandlerAndroid>(
       event_handler, user_model, basic_interactions, view_handler.get(),
-      radio_button_controller, jcontext, jdelegate);
+      radio_button_controller, jcontext, jinfo_page_util, jdelegate);
   std::vector<std::pair<std::string, std::string>> created_radio_buttons;
   auto register_radio_button_callback =
       base::BindRepeating(&RegisterRadioButton, &created_radio_buttons,
diff --git a/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.h b/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.h
index fcb5e5ae..1259b289 100644
--- a/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.h
+++ b/chrome/browser/android/autofill_assistant/generic_ui_nested_controller_android.h
@@ -29,6 +29,7 @@
   static std::unique_ptr<GenericUiNestedControllerAndroid> CreateFromProto(
       const GenericUserInterfaceProto& proto,
       base::android::ScopedJavaGlobalRef<jobject> jcontext,
+      base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
       base::android::ScopedJavaGlobalRef<jobject> jdelegate,
       EventHandler* event_handler,
       UserModel* user_model,
diff --git a/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.cc b/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.cc
index 569e6bd..458fb694 100644
--- a/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.cc
+++ b/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.cc
@@ -27,6 +27,7 @@
 GenericUiRootControllerAndroid::CreateFromProto(
     const GenericUserInterfaceProto& proto,
     base::android::ScopedJavaGlobalRef<jobject> jcontext,
+    base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
     base::android::ScopedJavaGlobalRef<jobject> jdelegate,
     EventHandler* event_handler,
     UserModel* user_model,
@@ -34,8 +35,8 @@
   auto radio_button_controller =
       std::make_unique<RadioButtonController>(user_model);
   auto controller = GenericUiNestedControllerAndroid::CreateFromProto(
-      proto, jcontext, jdelegate, event_handler, user_model, basic_interactions,
-      radio_button_controller.get());
+      proto, jcontext, jinfo_page_util, jdelegate, event_handler, user_model,
+      basic_interactions, radio_button_controller.get());
 
   if (controller == nullptr) {
     return nullptr;
diff --git a/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.h b/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.h
index a3b4a0c..39380fb 100644
--- a/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.h
+++ b/chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.h
@@ -26,6 +26,7 @@
   static std::unique_ptr<GenericUiRootControllerAndroid> CreateFromProto(
       const GenericUserInterfaceProto& proto,
       base::android::ScopedJavaGlobalRef<jobject> jcontext,
+      base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
       base::android::ScopedJavaGlobalRef<jobject> jdelegate,
       EventHandler* event_handler,
       UserModel* user_model,
diff --git a/chrome/browser/android/autofill_assistant/interaction_handler_android.cc b/chrome/browser/android/autofill_assistant/interaction_handler_android.cc
index a20ab9cf..16c26b91 100644
--- a/chrome/browser/android/autofill_assistant/interaction_handler_android.cc
+++ b/chrome/browser/android/autofill_assistant/interaction_handler_android.cc
@@ -90,6 +90,7 @@
     ViewHandlerAndroid* view_handler,
     RadioButtonController* radio_button_controller,
     base::android::ScopedJavaGlobalRef<jobject> jcontext,
+    base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
     base::android::ScopedJavaGlobalRef<jobject> jdelegate)
     : event_handler_(event_handler),
       user_model_(user_model),
@@ -97,6 +98,7 @@
       view_handler_(view_handler),
       radio_button_controller_(radio_button_controller),
       jcontext_(jcontext),
+      jinfo_page_util_(jinfo_page_util),
       jdelegate_(jdelegate) {}
 
 InteractionHandlerAndroid::~InteractionHandlerAndroid() {
@@ -195,7 +197,7 @@
     case CallbackProto::kShowInfoPopup: {
       return absl::optional<InteractionCallback>(base::BindRepeating(
           &android_interactions::ShowInfoPopup,
-          proto.show_info_popup().info_popup(), jcontext_,
+          proto.show_info_popup().info_popup(), jcontext_, jinfo_page_util_,
           GetDisplayStringUTF8(ClientSettingsProto::CLOSE,
                                basic_interactions_->GetClientSettings())));
     }
@@ -384,8 +386,8 @@
     return nullptr;
   }
   auto nested_ui = GenericUiNestedControllerAndroid::CreateFromProto(
-      proto, jcontext_, jdelegate_, event_handler_, user_model_,
-      basic_interactions_, radio_button_controller_);
+      proto, jcontext_, jinfo_page_util_, jdelegate_, event_handler_,
+      user_model_, basic_interactions_, radio_button_controller_);
   const auto* nested_ui_ptr = nested_ui.get();
   if (nested_ui) {
     nested_ui_controllers_.emplace(identifier, std::move(nested_ui));
diff --git a/chrome/browser/android/autofill_assistant/interaction_handler_android.h b/chrome/browser/android/autofill_assistant/interaction_handler_android.h
index 4c872aa..a1f8721 100644
--- a/chrome/browser/android/autofill_assistant/interaction_handler_android.h
+++ b/chrome/browser/android/autofill_assistant/interaction_handler_android.h
@@ -42,6 +42,7 @@
       ViewHandlerAndroid* view_handler,
       RadioButtonController* radio_button_controller,
       base::android::ScopedJavaGlobalRef<jobject> jcontext,
+      base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
       base::android::ScopedJavaGlobalRef<jobject> jdelegate);
 
   InteractionHandlerAndroid(const InteractionHandlerAndroid&) = delete;
@@ -106,6 +107,7 @@
   raw_ptr<ViewHandlerAndroid> view_handler_ = nullptr;
   raw_ptr<RadioButtonController> radio_button_controller_ = nullptr;
   base::android::ScopedJavaGlobalRef<jobject> jcontext_ = nullptr;
+  base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util_ = nullptr;
   base::android::ScopedJavaGlobalRef<jobject> jdelegate_ = nullptr;
   bool is_listening_ = false;
 
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.cc b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
index 41a9cc9..be1535e 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android.cc
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
@@ -28,6 +28,8 @@
 #include "chrome/android/features/autofill_assistant/jni_headers/AssistantOverlayModel_jni.h"
 #include "chrome/android/features/autofill_assistant/jni_headers/AssistantPlaceholdersConfiguration_jni.h"
 #include "chrome/android/features/autofill_assistant/jni_headers/AutofillAssistantUiController_jni.h"
+#include "chrome/android/features/autofill_assistant/jni_headers_public/AssistantDependencies_jni.h"
+#include "chrome/android/features/autofill_assistant/jni_headers_public/AssistantStaticDependencies_jni.h"
 #include "chrome/browser/android/autofill_assistant/client_android.h"
 #include "chrome/browser/android/autofill_assistant/generic_ui_root_controller_android.h"
 #include "chrome/browser/android/autofill_assistant/ui_controller_android_utils.h"
@@ -105,11 +107,12 @@
 ScopedJavaLocalRef<jobject> CreateOptionalJavaInfoPopup(
     JNIEnv* env,
     const LoginChoice& login_choice,
-    const ClientSettings& client_settings) {
+    const ClientSettings& client_settings,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util) {
   ScopedJavaLocalRef<jobject> jinfo_popup = nullptr;
   if (login_choice.info_popup.has_value()) {
     jinfo_popup = CreateJavaInfoPopup(
-        env, *login_choice.info_popup,
+        env, *login_choice.info_popup, jinfo_page_util,
         GetDisplayStringUTF8(ClientSettingsProto::CLOSE, client_settings));
   }
   return jinfo_popup;
@@ -118,7 +121,8 @@
 ScopedJavaLocalRef<jobject> CreateJavaLoginChoice(
     JNIEnv* env,
     const LoginChoice& login_choice,
-    const ClientSettings& client_settings) {
+    const ClientSettings& client_settings,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util) {
   return Java_AssistantCollectUserDataModel_createLoginChoice(
       env, ConvertUTF8ToJavaString(env, login_choice.identifier),
       ConvertUTF8ToJavaString(env, login_choice.label),
@@ -126,7 +130,8 @@
       ConvertNativeOptionalStringToJava(
           env, login_choice.sublabel_accessibility_hint),
       login_choice.preselect_priority,
-      CreateOptionalJavaInfoPopup(env, login_choice, client_settings),
+      CreateOptionalJavaInfoPopup(env, login_choice, client_settings,
+                                  jinfo_page_util),
       ConvertNativeOptionalStringToJava(
           env, login_choice.edit_button_content_description));
 }
@@ -135,7 +140,8 @@
 ScopedJavaLocalRef<jobject> CreateJavaLoginChoiceList(
     JNIEnv* env,
     const std::vector<LoginChoice>& login_choices,
-    const ClientSettings& client_settings) {
+    const ClientSettings& client_settings,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util) {
   auto jlist = Java_AssistantCollectUserDataModel_createLoginChoiceList(env);
   for (const auto& login_choice : login_choices) {
     Java_AssistantCollectUserDataModel_addLoginChoice(
@@ -145,7 +151,8 @@
         ConvertNativeOptionalStringToJava(
             env, login_choice.sublabel_accessibility_hint),
         login_choice.preselect_priority,
-        CreateOptionalJavaInfoPopup(env, login_choice, client_settings),
+        CreateOptionalJavaInfoPopup(env, login_choice, client_settings,
+                                    jinfo_page_util),
         ConvertNativeOptionalStringToJava(
             env, login_choice.edit_button_content_description));
   }
@@ -293,7 +300,10 @@
       collect_user_data_delegate_(this),
       form_delegate_(this),
       generic_ui_delegate_(this),
-      bottom_bar_delegate_(this) {
+      bottom_bar_delegate_(this),
+      jstatic_dependencies_(
+          Java_AssistantDependencies_getStaticDependencies(env,
+                                                           jdependencies)) {
   java_object_ = Java_AutofillAssistantUiController_create(
       env, jactivity,
       /* allowTabSwitching= */
@@ -1206,6 +1216,13 @@
       AttachCurrentThread(), java_object_);
 }
 
+base::android::ScopedJavaGlobalRef<jobject>
+UiControllerAndroid::GetInfoPageUtil() const {
+  return base::android::ScopedJavaGlobalRef<jobject>(
+      Java_AssistantStaticDependencies_getInfoPageUtil(AttachCurrentThread(),
+                                                       jstatic_dependencies_));
+}
+
 void UiControllerAndroid::OnCollectUserDataOptionsChanged(
     const CollectUserDataOptions* collect_user_data_options) {
   JNIEnv* env = AttachCurrentThread();
@@ -1271,9 +1288,9 @@
       base::android::ToJavaArrayOfStrings(
           env, collect_user_data_options->supported_basic_card_networks));
   if (collect_user_data_options->request_login_choice) {
-    auto jlist =
-        CreateJavaLoginChoiceList(env, collect_user_data_options->login_choices,
-                                  ui_delegate_->GetClientSettings());
+    auto jlist = CreateJavaLoginChoiceList(
+        env, collect_user_data_options->login_choices,
+        ui_delegate_->GetClientSettings(), GetInfoPageUtil());
     Java_AssistantCollectUserDataModel_setLoginChoices(env, jmodel, jlist);
   }
   Java_AssistantCollectUserDataModel_setRequestDateRange(
@@ -1625,7 +1642,8 @@
         user_data.selected_login_choice() == nullptr
             ? nullptr
             : CreateJavaLoginChoice(env, *user_data.selected_login_choice(),
-                                    ui_delegate_->GetClientSettings());
+                                    ui_delegate_->GetClientSettings(),
+                                    GetInfoPageUtil());
 
     Java_AssistantCollectUserDataModel_setSelectedLoginChoice(
         env, jmodel, jselected_login_choice);
@@ -1739,7 +1757,7 @@
     Java_AssistantFormModel_setInfoPopup(
         env, GetFormModel(),
         ui_controller_android_utils::CreateJavaInfoPopup(
-            env, form->info_popup(),
+            env, form->info_popup(), GetInfoPageUtil(),
             GetDisplayStringUTF8(ClientSettingsProto::CLOSE,
                                  ui_delegate_->GetClientSettings())));
   } else {
@@ -1978,8 +1996,9 @@
       Java_AutofillAssistantUiController_getContext(env, java_object_);
   return GenericUiRootControllerAndroid::CreateFromProto(
       proto, base::android::ScopedJavaGlobalRef<jobject>(jcontext),
-      generic_ui_delegate_.GetJavaObject(), ui_delegate_->GetEventHandler(),
-      ui_delegate_->GetUserModel(), ui_delegate_->GetBasicInteractions());
+      GetInfoPageUtil(), generic_ui_delegate_.GetJavaObject(),
+      ui_delegate_->GetEventHandler(), ui_delegate_->GetUserModel(),
+      ui_delegate_->GetBasicInteractions());
 }
 
 base::android::ScopedJavaLocalRef<jobject>
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.h b/chrome/browser/android/autofill_assistant/ui_controller_android.h
index ca9a8c30..f145030 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android.h
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android.h
@@ -267,6 +267,8 @@
   void UpdateActions(const std::vector<UserAction>& GetUserActions);
   void HideKeyboardIfFocusNotOnText();
 
+  base::android::ScopedJavaGlobalRef<jobject> GetInfoPageUtil() const;
+
   void ResetGenericUiControllers();
   std::unique_ptr<GenericUiRootControllerAndroid>
   CreateGenericUiControllerForProto(const GenericUserInterfaceProto& proto);
@@ -295,6 +297,10 @@
   // Java-side AutofillAssistantUiController object.
   base::android::ScopedJavaGlobalRef<jobject> java_object_;
 
+  // Java-side AssistantStaticDependencies object. This never changes during the
+  // life of the application.
+  const base::android::ScopedJavaGlobalRef<jobject> jstatic_dependencies_;
+
   // Native controllers for generic UI.
   std::unique_ptr<GenericUiRootControllerAndroid>
       collect_user_data_prepended_generic_ui_controller_;
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc
index de27fc50..e723699 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc
@@ -335,7 +335,8 @@
 
 base::android::ScopedJavaLocalRef<jobject> CreateJavaDialogButton(
     JNIEnv* env,
-    const InfoPopupProto_DialogButton& button_proto) {
+    const InfoPopupProto_DialogButton& button_proto,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util) {
   base::android::ScopedJavaLocalRef<jstring> jurl = nullptr;
 
   switch (button_proto.click_action_case()) {
@@ -350,13 +351,14 @@
       break;
   }
   return Java_AssistantDialogButton_Constructor(
-      env, base::android::ConvertUTF8ToJavaString(env, button_proto.label()),
-      jurl);
+      env, jinfo_page_util,
+      base::android::ConvertUTF8ToJavaString(env, button_proto.label()), jurl);
 }
 
 base::android::ScopedJavaLocalRef<jobject> CreateJavaInfoPopup(
     JNIEnv* env,
     const InfoPopupProto& info_popup_proto,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
     const std::string& close_display_str) {
   base::android::ScopedJavaLocalRef<jobject> jpositive_button = nullptr;
   base::android::ScopedJavaLocalRef<jobject> jnegative_button = nullptr;
@@ -366,21 +368,22 @@
       info_popup_proto.has_negative_button() ||
       info_popup_proto.has_neutral_button()) {
     if (info_popup_proto.has_positive_button()) {
-      jpositive_button =
-          CreateJavaDialogButton(env, info_popup_proto.positive_button());
+      jpositive_button = CreateJavaDialogButton(
+          env, info_popup_proto.positive_button(), jinfo_page_util);
     }
     if (info_popup_proto.has_negative_button()) {
-      jnegative_button =
-          CreateJavaDialogButton(env, info_popup_proto.negative_button());
+      jnegative_button = CreateJavaDialogButton(
+          env, info_popup_proto.negative_button(), jinfo_page_util);
     }
     if (info_popup_proto.has_neutral_button()) {
-      jneutral_button =
-          CreateJavaDialogButton(env, info_popup_proto.neutral_button());
+      jneutral_button = CreateJavaDialogButton(
+          env, info_popup_proto.neutral_button(), jinfo_page_util);
     }
   } else {
     // If no button is set in the proto, we add a Close button
     jpositive_button = Java_AssistantDialogButton_Constructor(
-        env, base::android::ConvertUTF8ToJavaString(env, close_display_str),
+        env, jinfo_page_util,
+        base::android::ConvertUTF8ToJavaString(env, close_display_str),
         nullptr);
   }
 
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.h b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.h
index 822052b..9b00c1a 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.h
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.h
@@ -79,6 +79,7 @@
 base::android::ScopedJavaLocalRef<jobject> CreateJavaInfoPopup(
     JNIEnv* env,
     const InfoPopupProto& proto,
+    const base::android::ScopedJavaGlobalRef<jobject> jinfo_page_util,
     const std::string& close_display_str);
 
 // Shows an instance of |AssistantInfoPopup| on the screen.
diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
index eb3de20..9c77c88 100644
--- a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
+++ b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
@@ -12,16 +12,6 @@
 #include "components/metrics/metrics_pref_names.h"
 #include "components/prefs/pref_service.h"
 
-namespace {
-
-PrefService* GetPrefService() {
-  return ProfileManager::GetActiveUserProfile()
-      ->GetOriginalProfile()
-      ->GetPrefs();
-}
-
-}  // namespace
-
 static jboolean JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingEnabled(
     JNIEnv* env) {
   PrefService* local_state = g_browser_process->local_state();
@@ -35,8 +25,11 @@
   local_state->SetBoolean(metrics::prefs::kMetricsReportingEnabled, enabled);
 }
 
-static jboolean JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingManaged(
+static jboolean
+JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingDisabledByPolicy(
     JNIEnv* env) {
-  return GetPrefService()->IsManagedPreference(
-      metrics::prefs::kMetricsReportingEnabled);
+  const PrefService* local_state = g_browser_process->local_state();
+  return local_state->IsManagedPreference(
+             metrics::prefs::kMetricsReportingEnabled) &&
+         !local_state->GetBoolean(metrics::prefs::kMetricsReportingEnabled);
 }
diff --git a/chrome/browser/apps/app_shim/web_app_shim_manager_delegate_mac.cc b/chrome/browser/apps/app_shim/web_app_shim_manager_delegate_mac.cc
index b270c24..415cdde6 100644
--- a/chrome/browser/apps/app_shim/web_app_shim_manager_delegate_mac.cc
+++ b/chrome/browser/apps/app_shim/web_app_shim_manager_delegate_mac.cc
@@ -265,18 +265,18 @@
     }
   }
 
+  WebAppProvider* const provider = WebAppProvider::GetForWebApps(profile);
   if (!launch_files.empty()) {
-    WebAppProvider* const provider = WebAppProvider::GetForWebApps(profile);
     absl::optional<GURL> file_handler_url =
         provider->os_integration_manager().GetMatchingFileHandlerURL(
             app_id, launch_files);
-    if (!file_handler_url) {
-      CancelAppLaunch(profile, app_id);
-      return;
-    }
+    if (file_handler_url)
+      params.launch_files = launch_files;
+    // If there is no matching file handling URL (such as when the API has been
+    // disabled), fall back to a normal app launch.
+  }
 
-    params.launch_files = launch_files;
-
+  if (!params.launch_files.empty()) {
     const WebApp* web_app = provider->registrar().GetAppById(app_id);
     DCHECK(web_app);
 
diff --git a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.cc b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.cc
index 191c1cf..0f3b4f9 100644
--- a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.cc
+++ b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.cc
@@ -127,17 +127,6 @@
   char_limit_per_request_ = limit;
 }
 
-data_decoder::mojom::JsonParser* EnhancedNetworkTtsImpl::GetJsonParser() {
-  // TODO(crbug.com/1217301): Sets an explicit disconnect handler.
-  if (!json_parser_) {
-    data_decoder_.GetService()->BindJsonParser(
-        json_parser_.BindNewPipeAndPassReceiver());
-    json_parser_.reset_on_disconnect();
-  }
-
-  return json_parser_.get();
-}
-
 std::unique_ptr<network::SimpleURLLoader>
 EnhancedNetworkTtsImpl::MakeRequestLoader() {
   auto resource_request = std::make_unique<network::ResourceRequest>();
@@ -196,7 +185,7 @@
   }
 
   // Send the JSON string to a dedicated service for safe parsing.
-  GetJsonParser()->Parse(
+  data_decoder_.ParseJson(
       *json_response,
       base::BindOnce(&EnhancedNetworkTtsImpl::OnResponseJsonParsed,
                      weak_factory_.GetWeakPtr(), start_index, is_last_request));
@@ -205,19 +194,18 @@
 void EnhancedNetworkTtsImpl::OnResponseJsonParsed(
     const int start_index,
     const bool is_last_request,
-    const absl::optional<base::Value> json_data,
-    const absl::optional<std::string>& error) {
-  const bool success = json_data.has_value() && !error.has_value();
+    data_decoder::DataDecoder::ValueOrError result) {
   // Extract results for the request.
-  if (success) {
-    SendResponse(UnpackJsonResponse(*json_data, start_index, is_last_request));
+  if (result.value) {
+    SendResponse(
+        UnpackJsonResponse(*result.value, start_index, is_last_request));
     // Only start the next request after finishing the current one. This method
     // will also reset the internal state if there is no more request.
     ProcessNextServerRequest();
   } else {
     ResetAndSendErrorResponse(mojom::TtsRequestError::kReceivedUnexpectedData);
     DVLOG(1) << "Parsing server response JSON failed with error: "
-             << error.value_or("No reason reported.");
+             << result.error.value_or("No reason reported.");
   }
 }
 
diff --git a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h
index ccc7e46..273e9935 100644
--- a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h
+++ b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h
@@ -17,7 +17,6 @@
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "services/data_decoder/public/cpp/data_decoder.h"
-#include "services/data_decoder/public/mojom/json_parser.mojom.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/network/public/cpp/simple_url_loader.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -77,10 +76,6 @@
   // List of ServerRequest.
   using ServerRequestList = std::list<ServerRequest>;
 
-  // Create or reuse a connection to the data decoder service for safe JSON
-  // parsing.
-  data_decoder::mojom::JsonParser* GetJsonParser();
-
   // Create a URL loader for a network request with an attached API key.
   std::unique_ptr<network::SimpleURLLoader> MakeRequestLoader();
 
@@ -101,8 +96,7 @@
   // indicates if this is the last response we expect.
   void OnResponseJsonParsed(const int start_index,
                             const bool is_last_request,
-                            absl::optional<base::Value> json_data,
-                            const absl::optional<std::string>& error);
+                            data_decoder::DataDecoder::ValueOrError result);
 
   // Sends the response to the |mojom::AudioDataObserver|.
   void SendResponse(mojom::TtsResponsePtr response);
@@ -129,9 +123,6 @@
   // Url loader factory to be loaded.
   scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
 
-  // Should not be used directly; GetJsonParser() should be called instead.
-  mojo::Remote<data_decoder::mojom::JsonParser> json_parser_;
-
   mojo::Receiver<mojom::EnhancedNetworkTts> receiver_{this};
 
   const std::string api_key_;
diff --git a/chrome/browser/ash/input_method/input_method_manager_impl.cc b/chrome/browser/ash/input_method/input_method_manager_impl.cc
index 3066766..fd2bd50f 100644
--- a/chrome/browser/ash/input_method/input_method_manager_impl.cc
+++ b/chrome/browser/ash/input_method/input_method_manager_impl.cc
@@ -928,7 +928,7 @@
   return descriptor;
 }
 
-Profile* const InputMethodManagerImpl::StateImpl::GetProfile() const {
+Profile* InputMethodManagerImpl::StateImpl::GetProfile() const {
   return profile_;
 }
 
diff --git a/chrome/browser/ash/input_method/input_method_manager_impl.h b/chrome/browser/ash/input_method/input_method_manager_impl.h
index 0f47ad61..ab015e4d 100644
--- a/chrome/browser/ash/input_method/input_method_manager_impl.h
+++ b/chrome/browser/ash/input_method/input_method_manager_impl.h
@@ -51,7 +51,7 @@
               Profile* profile,
               const InputMethodDescriptor* initial_input_method = nullptr);
 
-    Profile* const GetProfile() const;
+    Profile* GetProfile() const;
 
     // Returns true if |input_method_id| is in |enabled_input_method_ids_|.
     bool InputMethodIsEnabled(const std::string& input_method_id) const;
diff --git a/chrome/browser/ash/input_method/native_input_method_engine.cc b/chrome/browser/ash/input_method/native_input_method_engine.cc
index 172cb9d..26c93018 100644
--- a/chrome/browser/ash/input_method/native_input_method_engine.cc
+++ b/chrome/browser/ash/input_method/native_input_method_engine.cc
@@ -381,16 +381,6 @@
       ModifierStateFromEvent(event));
 }
 
-uint32_t Utf8ToCodepoint(const std::string& str) {
-  int32_t index = 0;
-  uint32_t codepoint = 0;
-  base::ReadUnicodeCharacter(str.data(), str.length(), &index, &codepoint);
-
-  // Should only contain a single codepoint.
-  DCHECK_EQ(index, str.length() - 1);
-  return codepoint;
-}
-
 uint32_t Utf16ToCodepoint(const std::u16string& str) {
   int32_t index = 0;
   uint32_t codepoint = 0;
diff --git a/chrome/browser/ash/login/lock/fingerprint_unlock_browsertest.cc b/chrome/browser/ash/login/lock/fingerprint_unlock_browsertest.cc
index 1cb318e..65904c1 100644
--- a/chrome/browser/ash/login/lock/fingerprint_unlock_browsertest.cc
+++ b/chrome/browser/ash/login/lock/fingerprint_unlock_browsertest.cc
@@ -41,8 +41,11 @@
 void AuthenticateAndCheckThroughHistogram(
     base::HistogramTester& histogram_tester,
     FakeBiodClient* biod) {
-  biod->SendAuthScanDone(kFingerprint, biod::SCAN_RESULT_TOO_FAST);
-  biod->SendAuthScanDone(kFingerprint, biod::SCAN_RESULT_SUCCESS);
+  biod::FingerprintMessage msg;
+  msg.set_scan_result(biod::SCAN_RESULT_TOO_FAST);
+  biod->SendAuthScanDone(kFingerprint, msg);
+  msg.set_scan_result(biod::SCAN_RESULT_SUCCESS);
+  biod->SendAuthScanDone(kFingerprint, msg);
   base::RunLoop().RunUntilIdle();
 
   EXPECT_THAT(histogram_tester.GetAllSamples("Fingerprint.Auth.ScanResult"),
@@ -105,7 +108,9 @@
   }
 
   void AuthenticateWithFingerprint() {
-    biod_->SendAuthScanDone(kFingerprint, biod::SCAN_RESULT_SUCCESS);
+    biod::FingerprintMessage msg;
+    msg.set_scan_result(biod::SCAN_RESULT_SUCCESS);
+    biod_->SendAuthScanDone(kFingerprint, msg);
     base::RunLoop().RunUntilIdle();
   }
 
@@ -304,6 +309,8 @@
 IN_PROC_BROWSER_TEST_F(FingerprintUnlockEnrollTest,
                        ExceedAttemptsAndBiodRestart) {
   ScreenLockerTester tester;
+  biod::FingerprintMessage msg;
+
   tester.Lock();
 
   LockScreen::TestApi lock_screen_test(LockScreen::Get());
@@ -319,7 +326,8 @@
         lock_contents_test.GetFingerPrintState(user_manager::StubAccountId());
     EXPECT_EQ(state, FingerprintState::AVAILABLE_DEFAULT);
     // Simulate bad attempt.
-    biod_->SendAuthScanDone(kFingerprint, biod::SCAN_RESULT_TOO_FAST);
+    msg.set_scan_result(biod::SCAN_RESULT_TOO_FAST);
+    biod_->SendAuthScanDone(kFingerprint, msg);
     base::RunLoop().RunUntilIdle();
   }
 
@@ -432,10 +440,13 @@
   tester.Lock();
 
   base::HistogramTester histogram_tester;
+  biod::FingerprintMessage msg;
 
   EXPECT_TRUE(HasStrongAuth());
-  biod_->SendAuthScanDone(kFingerprint, biod::SCAN_RESULT_TOO_FAST);
-  biod_->SendAuthScanDone(kFingerprint, biod::SCAN_RESULT_SUCCESS);
+  msg.set_scan_result(biod::SCAN_RESULT_TOO_FAST);
+  biod_->SendAuthScanDone(kFingerprint, msg);
+  msg.set_scan_result(biod::SCAN_RESULT_SUCCESS);
+  biod_->SendAuthScanDone(kFingerprint, msg);
   tester.WaitForUnlock();
   histogram_tester.ExpectBucketCount(kFingerprintSuccessHistogramName,
                                      /*success=*/1, 1);
diff --git a/chrome/browser/ash/login/lock/screen_locker.cc b/chrome/browser/ash/login/lock/screen_locker.cc
index e581a15..5ada7555 100644
--- a/chrome/browser/ash/login/lock/screen_locker.cc
+++ b/chrome/browser/ash/login/lock/screen_locker.cc
@@ -809,12 +809,10 @@
                                     int percent_complete) {}
 
 void ScreenLocker::OnAuthScanDone(
-    device::mojom::ScanResult scan_result,
+    const device::mojom::FingerprintMessagePtr msg,
     const base::flat_map<std::string, std::vector<std::string>>& matches) {
   RefreshPinAndFingerprintTimeout();
 
-  VLOG(1) << "Receive fingerprint auth scan result. scan_result="
-          << scan_result;
   unlock_attempt_type_ = AUTH_FINGERPRINT;
   const user_manager::User* primary_user =
       user_manager::UserManager::Get()->GetPrimaryUser();
@@ -841,13 +839,28 @@
       primary_user->GetAccountId(),
       LoginAuthRecorder::AuthMethod::kFingerprint);
 
-  if (scan_result != device::mojom::ScanResult::SUCCESS) {
-    LOG(ERROR) << "Fingerprint unlock failed because scan_result="
-               << scan_result;
-    OnFingerprintAuthFailure(*primary_user);
-    quick_unlock_storage->fingerprint_storage()->RecordFingerprintUnlockResult(
-        quick_unlock::FingerprintUnlockResult::kMatchFailed);
-    return;
+  switch (msg->which()) {
+    case device::mojom::FingerprintMessage::Tag::kScanResult:
+      VLOG(1) << "Receive fingerprint auth scan result. scan_result="
+              << msg->get_scan_result();
+      if (msg->get_scan_result() != device::mojom::ScanResult::SUCCESS) {
+        LOG(ERROR) << "Fingerprint unlock failed because scan_result="
+                   << msg->get_scan_result();
+        OnFingerprintAuthFailure(*primary_user);
+        quick_unlock_storage->fingerprint_storage()
+            ->RecordFingerprintUnlockResult(
+                quick_unlock::FingerprintUnlockResult::kMatchFailed);
+        return;
+      }
+      break;
+    case device::mojom::FingerprintMessage::Tag::kFingerprintError:
+      LOG(ERROR) << "Fingerprint unlock failed because error="
+                 << msg->get_fingerprint_error() << " occurred.";
+      OnFingerprintAuthFailure(*primary_user);
+      quick_unlock_storage->fingerprint_storage()
+          ->RecordFingerprintUnlockResult(
+              quick_unlock::FingerprintUnlockResult::kMatchFailed);
+      return;
   }
 
   UserContext user_context(*primary_user);
diff --git a/chrome/browser/ash/login/lock/screen_locker.h b/chrome/browser/ash/login/lock/screen_locker.h
index 23e03f18..535b222 100644
--- a/chrome/browser/ash/login/lock/screen_locker.h
+++ b/chrome/browser/ash/login/lock/screen_locker.h
@@ -183,7 +183,7 @@
                         bool is_complete,
                         int32_t percent_complete) override;
   void OnAuthScanDone(
-      device::mojom::ScanResult scan_result,
+      const device::mojom::FingerprintMessagePtr msg,
       const base::flat_map<std::string, std::vector<std::string>>& matches)
       override;
   void OnSessionFailed() override;
diff --git a/chrome/browser/ash/login/lock/screen_locker_browsertest.cc b/chrome/browser/ash/login/lock/screen_locker_browsertest.cc
index 51620bc..d9e0bb3 100644
--- a/chrome/browser/ash/login/lock/screen_locker_browsertest.cc
+++ b/chrome/browser/ash/login/lock/screen_locker_browsertest.cc
@@ -82,8 +82,9 @@
   }
 
   void AuthenticateWithFingerprint() {
-    FakeBiodClient::Get()->SendAuthScanDone(kFingerprint,
-                                            biod::SCAN_RESULT_SUCCESS);
+    biod::FingerprintMessage msg;
+    msg.set_scan_result(biod::SCAN_RESULT_SUCCESS);
+    FakeBiodClient::Get()->SendAuthScanDone(kFingerprint, msg);
     base::RunLoop().RunUntilIdle();
   }
 
diff --git a/chrome/browser/ash/login/quick_unlock/fingerprint_storage.cc b/chrome/browser/ash/login/quick_unlock/fingerprint_storage.cc
index 51f7f00..934bac01 100644
--- a/chrome/browser/ash/login/quick_unlock/fingerprint_storage.cc
+++ b/chrome/browser/ash/login/quick_unlock/fingerprint_storage.cc
@@ -117,9 +117,19 @@
 }
 
 void FingerprintStorage::OnAuthScanDone(
-    device::mojom::ScanResult scan_result,
+    const device::mojom::FingerprintMessagePtr msg,
     const base::flat_map<std::string, std::vector<std::string>>& matches) {
-  base::UmaHistogramEnumeration("Fingerprint.Auth.ScanResult", scan_result);
+  switch (msg->which()) {
+    case device::mojom::FingerprintMessage::Tag::kScanResult:
+      base::UmaHistogramEnumeration("Fingerprint.Auth.ScanResult",
+                                    msg->get_scan_result());
+      return;
+    case device::mojom::FingerprintMessage::Tag::kFingerprintError:
+      base::UmaHistogramEnumeration("Fingerprint.Auth.Error",
+                                    msg->get_fingerprint_error());
+      return;
+  }
+  NOTREACHED();
 }
 
 void FingerprintStorage::OnSessionFailed() {}
diff --git a/chrome/browser/ash/login/quick_unlock/fingerprint_storage.h b/chrome/browser/ash/login/quick_unlock/fingerprint_storage.h
index 6b2ab8b..67df9472 100644
--- a/chrome/browser/ash/login/quick_unlock/fingerprint_storage.h
+++ b/chrome/browser/ash/login/quick_unlock/fingerprint_storage.h
@@ -82,7 +82,7 @@
                         bool is_complete,
                         int32_t percent_complete) override;
   void OnAuthScanDone(
-      device::mojom::ScanResult scan_result,
+      const device::mojom::FingerprintMessagePtr msg,
       const base::flat_map<std::string, std::vector<std::string>>& matches)
       override;
   void OnSessionFailed() override;
diff --git a/chrome/browser/ash/login/quick_unlock/fingerprint_storage_unittest.cc b/chrome/browser/ash/login/quick_unlock/fingerprint_storage_unittest.cc
index 8a51a76..7972296e 100644
--- a/chrome/browser/ash/login/quick_unlock/fingerprint_storage_unittest.cc
+++ b/chrome/browser/ash/login/quick_unlock/fingerprint_storage_unittest.cc
@@ -7,18 +7,25 @@
 #include <memory>
 
 #include "ash/constants/ash_pref_names.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/ash/login/quick_unlock/quick_unlock_factory.h"
 #include "chrome/browser/ash/login/quick_unlock/quick_unlock_storage.h"
 #include "chrome/browser/ash/login/quick_unlock/quick_unlock_utils.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/test/browser_task_environment.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using testing::ElementsAre;
+
 namespace ash {
 namespace quick_unlock {
 namespace {
 
+const char* kUmaAuthScanResult = "Fingerprint.Auth.ScanResult";
+const char* kUmaAuthError = "Fingerprint.Auth.Error";
+
 class FingerprintStorageUnitTest : public testing::Test {
  public:
   FingerprintStorageUnitTest(const FingerprintStorageUnitTest&) = delete;
@@ -115,5 +122,45 @@
   EXPECT_TRUE(test_api.IsFingerprintAvailable());
 }
 
+TEST_F(FingerprintStorageUnitTest, TestScanResultIsSentToUma) {
+  FingerprintStorage* fingerprint_storage =
+      QuickUnlockFactory::GetForProfile(profile_.get())->fingerprint_storage();
+  base::HistogramTester histogram_tester;
+  base::flat_map<std::string, std::vector<std::string>> empty_matches;
+  device::mojom::FingerprintMessagePtr msg =
+      device::mojom::FingerprintMessage::New();
+
+  msg->set_scan_result(device::mojom::ScanResult::SUCCESS);
+  fingerprint_storage->OnAuthScanDone(std::move(msg), empty_matches);
+
+  EXPECT_THAT(
+      histogram_tester.GetAllSamples(kUmaAuthScanResult),
+      ElementsAre(base::Bucket(
+          static_cast<int>(device::mojom::ScanResult::SUCCESS), /*count=*/1)));
+
+  EXPECT_TRUE(histogram_tester.GetAllSamples(kUmaAuthError).empty());
+}
+
+TEST_F(FingerprintStorageUnitTest, TestFingerprintErrorIsSentToUma) {
+  FingerprintStorage* fingerprint_storage =
+      QuickUnlockFactory::GetForProfile(profile_.get())->fingerprint_storage();
+  base::HistogramTester histogram_tester;
+  base::flat_map<std::string, std::vector<std::string>> empty_matches;
+  device::mojom::FingerprintMessagePtr msg =
+      device::mojom::FingerprintMessage::New();
+
+  msg->set_fingerprint_error(
+      device::mojom::FingerprintError::UNABLE_TO_PROCESS);
+  fingerprint_storage->OnAuthScanDone(std::move(msg), empty_matches);
+
+  EXPECT_TRUE(histogram_tester.GetAllSamples(kUmaAuthScanResult).empty());
+
+  EXPECT_THAT(
+      histogram_tester.GetAllSamples(kUmaAuthError),
+      ElementsAre(base::Bucket(
+          static_cast<int>(device::mojom::FingerprintError::UNABLE_TO_PROCESS),
+          /*count=*/1)));
+}
+
 }  // namespace quick_unlock
 }  // namespace ash
diff --git a/chrome/browser/ash/login/screens/fingerprint_setup_screen.cc b/chrome/browser/ash/login/screens/fingerprint_setup_screen.cc
index 151a474b..4d70e59 100644
--- a/chrome/browser/ash/login/screens/fingerprint_setup_screen.cc
+++ b/chrome/browser/ash/login/screens/fingerprint_setup_screen.cc
@@ -190,7 +190,7 @@
 }
 
 void FingerprintSetupScreen::OnAuthScanDone(
-    device::mojom::ScanResult scan_result,
+    const device::mojom::FingerprintMessagePtr ptr,
     const base::flat_map<std::string, std::vector<std::string>>& matches) {}
 
 void FingerprintSetupScreen::OnSessionFailed() {
diff --git a/chrome/browser/ash/login/screens/fingerprint_setup_screen.h b/chrome/browser/ash/login/screens/fingerprint_setup_screen.h
index ac3d84b1..19d17a6 100644
--- a/chrome/browser/ash/login/screens/fingerprint_setup_screen.h
+++ b/chrome/browser/ash/login/screens/fingerprint_setup_screen.h
@@ -67,7 +67,7 @@
                         bool enroll_session_complete,
                         int percent_complete) override;
   void OnAuthScanDone(
-      device::mojom::ScanResult scan_result,
+      const device::mojom::FingerprintMessagePtr msg,
       const base::flat_map<std::string, std::vector<std::string>>& matches)
       override;
   void OnSessionFailed() override;
diff --git a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.cc b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.cc
index b6355604..de3f6651 100644
--- a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.cc
+++ b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.cc
@@ -15,11 +15,10 @@
 #include "base/containers/contains.h"
 #include "base/containers/cxx20_erase.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/ash/policy/dlp/dlp_notification_helper.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_confidential_contents.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_histogram_helper.h"
-#include "chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_warn_notifier.h"
@@ -40,52 +39,6 @@
 // a quick switch from one confidential data to another.
 const base::TimeDelta kPrivacyScreenOffDelay = base::Milliseconds(500);
 
-// Reports events to `reporting_manager`.
-void ReportEvent(GURL url,
-                 DlpRulesManager::Restriction restriction,
-                 DlpRulesManager::Level level,
-                 DlpReportingManager* reporting_manager) {
-  DCHECK(reporting_manager);
-
-  DlpRulesManager* rules_manager =
-      DlpRulesManagerFactory::GetForPrimaryProfile();
-  if (!rules_manager)
-    return;
-
-  const std::string src_url =
-      rules_manager->GetSourceUrlPattern(url, restriction, level);
-
-  reporting_manager->ReportEvent(src_url, restriction, level);
-}
-
-// Reports events of type DlpPolicyEvent::Mode::WARN_PROCEED to
-// `reporting_manager`.
-void ReportWarningProceededEvent(const GURL& url,
-                                 DlpRulesManager::Restriction restriction,
-                                 DlpReportingManager* reporting_manager) {
-  if (!reporting_manager)
-    return;
-
-  DlpRulesManager* rules_manager =
-      DlpRulesManagerFactory::GetForPrimaryProfile();
-  if (rules_manager) {
-    const std::string src_url = rules_manager->GetSourceUrlPattern(
-        url, restriction, DlpRulesManager::Level::kWarn);
-    reporting_manager->ReportWarningProceededEvent(src_url, restriction);
-  }
-}
-
-// Helper method to create a callback with ReportWarningProceededEvent function.
-bool MaybeReportWarningProceededEvent(GURL url,
-                                      DlpRulesManager::Restriction restriction,
-                                      DlpReportingManager* reporting_manager,
-                                      bool should_proceed) {
-  if (should_proceed) {
-    ReportWarningProceededEvent(url, restriction, reporting_manager);
-  }
-  return should_proceed;
-}
-
 // Helper method to check whether the restriction level is kBlock.
 bool IsBlocked(RestrictionLevelAndUrl restriction_info) {
   return restriction_info.level == DlpRulesManager::Level::kBlock;
@@ -178,51 +131,6 @@
   CheckScreenCaptureRestriction(info, std::move(callback));
 }
 
-void DlpContentManagerAsh::CheckPrintingRestriction(
-    content::WebContents* web_contents,
-    OnDlpRestrictionCheckedCallback callback) {
-  const RestrictionLevelAndUrl restriction_info =
-      GetPrintingRestrictionInfo(web_contents);
-  MaybeReportEvent(restriction_info, DlpRulesManager::Restriction::kPrinting);
-  DlpBooleanHistogram(dlp::kPrintingBlockedUMA, IsBlocked(restriction_info));
-  if (IsBlocked(restriction_info)) {
-    ShowDlpPrintDisabledNotification();
-    std::move(callback).Run(false);
-    return;
-  }
-
-  if (IsWarn(restriction_info)) {
-    // Check if the contents were already allowed and don't warn in that case.
-    if (user_allowed_contents_cache_.Contains(
-            web_contents, DlpRulesManager::Restriction::kPrinting)) {
-      ReportWarningProceededEvent(restriction_info.url,
-                                  DlpRulesManager::Restriction::kPrinting,
-                                  reporting_manager_);
-      std::move(callback).Run(true);
-      return;
-    }
-
-    // Immediately report a warning event.
-    ReportWarningEvent(restriction_info,
-                       DlpRulesManager::Restriction::kPrinting);
-
-    // Report a warning proceeded event only after a user proceeds with printing
-    // in the warn dialog.
-    auto reporting_callback = base::BindOnce(
-        &MaybeReportWarningProceededEvent, restriction_info.url,
-        DlpRulesManager::Restriction::kPrinting, reporting_manager_);
-    warn_notifier_->ShowDlpPrintWarningDialog(base::BindOnce(
-        &DlpContentManagerAsh::OnDlpWarnDialogReply, base::Unretained(this),
-        DlpConfidentialContents({web_contents}),
-        DlpRulesManager::Restriction::kPrinting,
-        std::move(reporting_callback).Then(std::move(callback))));
-    return;
-  }
-
-  // No restrictions apply.
-  std::move(callback).Run(true);
-}
-
 bool DlpContentManagerAsh::IsScreenCaptureRestricted(
     const content::DesktopMediaID& media_id) {
   const ConfidentialContentsInfo info =
@@ -473,24 +381,13 @@
 
 DlpContentManagerAsh::DlpContentManagerAsh() = default;
 
-void DlpContentManagerAsh::Init() {
-  DlpRulesManager* rules_manager =
-      DlpRulesManagerFactory::GetForPrimaryProfile();
-  if (rules_manager)
-    reporting_manager_ =
-        DlpRulesManagerFactory::GetForPrimaryProfile()->GetReportingManager();
-  warn_notifier_ = std::make_unique<DlpWarnNotifier>();
-}
-
 DlpContentManagerAsh::~DlpContentManagerAsh() = default;
 
 void DlpContentManagerAsh::OnConfidentialityChanged(
     content::WebContents* web_contents,
     const DlpContentRestrictionSet& restriction_set) {
-  if (restriction_set.IsEmpty()) {
-    RemoveFromConfidential(web_contents);
-  } else {
-    confidential_web_contents_[web_contents] = restriction_set;
+  DlpContentManager::OnConfidentialityChanged(web_contents, restriction_set);
+  if (!restriction_set.IsEmpty()) {
     web_contents_window_observers_[web_contents] =
         std::make_unique<DlpWindowObserver>(web_contents->GetNativeView(),
                                             this);
@@ -501,11 +398,6 @@
   CheckRunningScreenShares();
 }
 
-void DlpContentManagerAsh::OnWebContentsDestroyed(
-    content::WebContents* web_contents) {
-  RemoveFromConfidential(web_contents);
-}
-
 void DlpContentManagerAsh::OnVisibilityChanged(
     content::WebContents* web_contents) {
   MaybeChangeOnScreenRestrictions();
@@ -513,7 +405,7 @@
 
 void DlpContentManagerAsh::RemoveFromConfidential(
     content::WebContents* web_contents) {
-  confidential_web_contents_.erase(web_contents);
+  DlpContentManager::RemoveFromConfidential(web_contents);
   web_contents_window_observers_.erase(web_contents);
   MaybeChangeOnScreenRestrictions();
 }
@@ -546,7 +438,7 @@
 
 void DlpContentManagerAsh::OnScreenRestrictionsChanged(
     const DlpContentRestrictionSet& added_restrictions,
-    const DlpContentRestrictionSet& removed_restrictions) const {
+    const DlpContentRestrictionSet& removed_restrictions) {
   DCHECK(!(added_restrictions.GetRestrictionLevel(
                DlpContentRestriction::kPrivacyScreen) ==
                DlpRulesManager::Level::kBlock &&
@@ -568,14 +460,8 @@
     privacy_screen_helper->SetEnforced(true);
   }
 
-  if (added_restriction_info.level == DlpRulesManager::Level::kBlock ||
-      added_restriction_info.level == DlpRulesManager::Level::kReport) {
-    if (reporting_manager_) {
-      ReportEvent(added_restriction_info.url,
-                  DlpRulesManager::Restriction::kPrivacyScreen,
-                  added_restriction_info.level, reporting_manager_);
-    }
-  }
+  MaybeReportEvent(added_restriction_info,
+                   DlpRulesManager::Restriction::kPrivacyScreen);
 
   if (removed_restrictions.GetRestrictionLevel(
           DlpContentRestriction::kPrivacyScreen) ==
@@ -910,19 +796,6 @@
   return kPrivacyScreenOffDelay;
 }
 
-RestrictionLevelAndUrl DlpContentManagerAsh::GetPrintingRestrictionInfo(
-    content::WebContents* web_contents) const {
-  // If we're viewing the PDF in a MimeHandlerViewGuest, use its embedded
-  // WebContents.
-  auto* guest_view =
-      extensions::MimeHandlerViewGuest::FromWebContents(web_contents);
-  web_contents =
-      guest_view ? guest_view->embedder_web_contents() : web_contents;
-
-  return GetConfidentialRestrictions(web_contents)
-      .GetRestrictionLevelAndUrl(DlpContentRestriction::kPrint);
-}
-
 void DlpContentManagerAsh::CheckScreenCaptureRestriction(
     ConfidentialContentsInfo info,
     ash::OnCaptureModeDlpRestrictionChecked callback) {
@@ -972,48 +845,6 @@
   screen_share.MaybeUpdateNotifications();
 }
 
-void DlpContentManagerAsh::OnDlpWarnDialogReply(
-    const DlpConfidentialContents& confidential_contents,
-    DlpRulesManager::Restriction restriction,
-    OnDlpRestrictionCheckedCallback callback,
-    bool should_proceed) {
-  if (should_proceed) {
-    for (const auto& content : confidential_contents.GetContents()) {
-      user_allowed_contents_cache_.Cache(content, restriction);
-    }
-  }
-  std::move(callback).Run(should_proceed);
-}
-
-void DlpContentManagerAsh::MaybeReportEvent(
-    const RestrictionLevelAndUrl& restriction_info,
-    DlpRulesManager::Restriction restriction) {
-  // TODO(crbug.com/1260302): Add reporting and metrics for WARN restrictions.
-  if (IsReported(restriction_info) && reporting_manager_) {
-    ReportEvent(restriction_info.url, restriction, restriction_info.level,
-                reporting_manager_);
-  }
-}
-
-void DlpContentManagerAsh::ReportWarningEvent(
-    const RestrictionLevelAndUrl& restriction_info,
-    DlpRulesManager::Restriction restriction) {
-  DCHECK(IsWarn(restriction_info));
-  if (reporting_manager_) {
-    ReportEvent(restriction_info.url, restriction,
-                DlpRulesManager::Level::kWarn, reporting_manager_);
-  }
-}
-
-void DlpContentManagerAsh::RemoveAllowedContents(
-    DlpConfidentialContents& contents,
-    DlpRulesManager::Restriction restriction) {
-  base::EraseIf(
-      contents.GetContents(), [=](const DlpConfidentialContent& content) {
-        return user_allowed_contents_cache_.Contains(content, restriction);
-      });
-}
-
 // ScopedDlpContentManagerAshForTesting
 ScopedDlpContentManagerAshForTesting::ScopedDlpContentManagerAshForTesting(
     DlpContentManagerAsh* test_dlp_content_manager) {
diff --git a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.h b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.h
index 9e8acda..bf9cd92 100644
--- a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.h
+++ b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash.h
@@ -12,14 +12,12 @@
 #include "ash/public/cpp/capture_mode/capture_mode_delegate.h"
 #include "base/callback.h"
 #include "base/containers/flat_map.h"
-#include "base/gtest_prod_util.h"
 #include "base/time/time.h"
 #include "chrome/browser/ash/policy/dlp/dlp_window_observer.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_confidential_contents.h"
-#include "chrome/browser/chromeos/policy/dlp/dlp_content_observer.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_content_manager.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h"
-#include "chrome/browser/chromeos/policy/dlp/dlp_warn_dialog.h"
 #include "chrome/browser/ui/ash/screenshot_area.h"
 #include "content/public/browser/desktop_media_id.h"
 #include "content/public/browser/media_stream_request.h"
@@ -46,7 +44,7 @@
 // WebContents and whether any of them are currently visible.
 // If any confidential WebContents is visible, the corresponding restrictions
 // will be enforced according to the current enterprise policy.
-class DlpContentManagerAsh : public DlpContentObserver,
+class DlpContentManagerAsh : public DlpContentManager,
                              public DlpWindowObserver::Delegate {
  public:
   DlpContentManagerAsh(const DlpContentManagerAsh&) = delete;
@@ -83,13 +81,6 @@
       const ScreenshotArea& area,
       ash::OnCaptureModeDlpRestrictionChecked callback);
 
-  // Checks whether printing of |web_contents| is restricted or not advised.
-  // Depending on the result, calls |callback| and passes an indicator whether
-  // to proceed or not.
-  virtual void CheckPrintingRestriction(
-      content::WebContents* web_contents,
-      OnDlpRestrictionCheckedCallback callback);
-
   // Returns whether screen capture of the defined content should be restricted.
   // TODO(crbug.com/1257493): Remove when it won't be used anymore.
   virtual bool IsScreenCaptureRestricted(
@@ -232,28 +223,15 @@
     DlpConfidentialContents confidential_contents;
   };
 
-  // Structure that relates a list of confidential contents to the
-  // corresponding restriction level.
-  struct ConfidentialContentsInfo {
-    RestrictionLevelAndUrl restriction_info;
-    DlpConfidentialContents confidential_contents;
-  };
-
   DlpContentManagerAsh();
   ~DlpContentManagerAsh() override;
 
-  // Initializing to be called separately to make testing possible.
-  virtual void Init();
-
-  // DlpContentObserver overrides:
+  // DlpContentManager overrides:
   void OnConfidentialityChanged(
       content::WebContents* web_contents,
       const DlpContentRestrictionSet& restriction_set) override;
-  void OnWebContentsDestroyed(content::WebContents* web_contents) override;
   void OnVisibilityChanged(content::WebContents* web_contents) override;
-
-  // Helper to remove |web_contents| from the confidential set.
-  void RemoveFromConfidential(content::WebContents* web_contents);
+  void RemoveFromConfidential(content::WebContents* web_contents) override;
 
   // Updates |on_screen_restrictions_| and calls
   // OnScreenRestrictionsChanged() if needed.
@@ -262,7 +240,7 @@
   // Called when the restrictions for currently visible content changes.
   void OnScreenRestrictionsChanged(
       const DlpContentRestrictionSet& added_restrictions,
-      const DlpContentRestrictionSet& removed_restrictions) const;
+      const DlpContentRestrictionSet& removed_restrictions);
 
   // Removes PrivacyScreen enforcement after delay if it's still not enforced.
   void MaybeRemovePrivacyScreenEnforcement() const;
@@ -295,11 +273,6 @@
   // Get the delay before switching privacy screen off.
   static base::TimeDelta GetPrivacyScreenOffDelayForTesting();
 
-  // Returns which level and url of printing restriction is currently enforced
-  // for |web_contents|.
-  RestrictionLevelAndUrl GetPrintingRestrictionInfo(
-      content::WebContents* web_contents) const;
-
   // Helper method for async check of the restriction level, based on which
   // calls |callback| with an indicator whether to proceed or not.
   void CheckScreenCaptureRestriction(
@@ -317,35 +290,6 @@
       ScreenShareInfo screen_share,
       bool should_proceed);
 
-  // Called back from warning dialogs. Passes along the user's response,
-  // reflected in the value of |should_proceed| along to |callback| which
-  // handles continuing or cancelling the action based on this response. In case
-  // that |should_proceed| is true, also saves the |confidential_contents| that
-  // were allowed by the user for |restriction| to avoid future warnings.
-  void OnDlpWarnDialogReply(
-      const DlpConfidentialContents& confidential_contents,
-      DlpRulesManager::Restriction restriction,
-      OnDlpRestrictionCheckedCallback callback,
-      bool should_proceed);
-
-  // Reports events if required by the |restriction_info| and
-  // `reporting_manager` is configured.
-  void MaybeReportEvent(const RestrictionLevelAndUrl& restriction_info,
-                        DlpRulesManager::Restriction restriction);
-
-  // Reports warning events if `reporting_manager` is configured.
-  void ReportWarningEvent(const RestrictionLevelAndUrl& restriction_info,
-                          DlpRulesManager::Restriction restriction);
-
-  // Removes all elements of |contents| that the user has recently already
-  // acknowledged the warning for.
-  void RemoveAllowedContents(DlpConfidentialContents& contents,
-                             DlpRulesManager::Restriction restriction);
-
-  // Map from currently known confidential WebContents to the restrictions.
-  base::flat_map<content::WebContents*, DlpContentRestrictionSet>
-      confidential_web_contents_;
-
   // Map of window observers for the current confidential WebContents.
   base::flat_map<content::WebContents*, std::unique_ptr<DlpWindowObserver>>
       web_contents_window_observers_;
@@ -366,14 +310,6 @@
   // List of the currently running screen shares.
   std::vector<ScreenShareInfo> running_screen_shares_;
 
-  // Keeps track of the contents for which the user allowed the action after
-  // being shown a warning for each type of restriction.
-  DlpConfidentialContentsCache user_allowed_contents_cache_;
-
-  DlpReportingManager* reporting_manager_;
-
-  std::unique_ptr<DlpWarnNotifier> warn_notifier_;
-
   // TODO(https://crbug.com/1278733): Remove this flag
   const bool is_screen_share_warning_mode_enabled_ = false;
 };
diff --git a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_browsertest.cc b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_browsertest.cc
index b24a12aa..ca690d6 100644
--- a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_browsertest.cc
+++ b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_browsertest.cc
@@ -87,6 +87,7 @@
 constexpr char kSrcPattern[] = "example.com";
 }  // namespace
 
+// TODO(crbug.com/1262948): Enable and modify for lacros.
 class DlpContentManagerAshBrowserTest : public InProcessBrowserTest {
  public:
   DlpContentManagerAshBrowserTest() = default;
diff --git a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_unittest.cc b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_unittest.cc
index 3239cc2..ef44788 100644
--- a/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_unittest.cc
+++ b/chrome/browser/ash/policy/dlp/dlp_content_manager_ash_unittest.cc
@@ -90,6 +90,7 @@
 
 }  // namespace
 
+// TODO(crbug.com/1262948): Enable and modify for lacros.
 class DlpContentManagerAshTest : public testing::Test {
  public:
   DlpContentManagerAshTest(const DlpContentManagerAshTest&) = delete;
diff --git a/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc b/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc
index 6b9492d..efe58a1 100644
--- a/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc
+++ b/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc
@@ -8,7 +8,6 @@
 #include "ash/grit/ash_camera_app_resources.h"
 #include "ash/webui/camera_app_ui/resources/strings/grit/ash_camera_app_strings.h"
 #include "ash/webui/camera_app_ui/url_constants.h"
-#include "chrome/browser/ash/file_manager/path_util.h"
 #include "chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_constants.h"
 #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h"
 #include "chrome/browser/web_applications/web_app_constants.h"
@@ -78,11 +77,6 @@
   return true;
 }
 
-base::FilePath CameraSystemAppDelegate::GetLaunchDirectory(
-    const apps::AppLaunchParams& params) const {
-  return file_manager::util::GetMyFilesFolderForProfile(profile());
-}
-
 gfx::Size CameraSystemAppDelegate::GetMinimumWindowSize() const {
   return {kChromeCameraAppMinimumWidth, kChromeCameraAppMinimumHeight + 32};
 }
diff --git a/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.h b/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.h
index c46e00f..249f178 100644
--- a/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.h
+++ b/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.h
@@ -6,9 +6,9 @@
 #define CHROME_BROWSER_ASH_WEB_APPLICATIONS_CAMERA_APP_CAMERA_SYSTEM_WEB_APP_INFO_H_
 
 #include <memory>
-
 #include "chrome/browser/web_applications/system_web_apps/system_web_app_delegate.h"
 #include "chrome/browser/web_applications/system_web_apps/system_web_app_types.h"
+
 #include "ui/gfx/geometry/rect.h"
 
 class Browser;
@@ -22,8 +22,6 @@
   std::unique_ptr<WebApplicationInfo> GetWebAppInfo() const override;
   bool ShouldCaptureNavigations() const override;
   gfx::Size GetMinimumWindowSize() const override;
-  base::FilePath GetLaunchDirectory(
-      const apps::AppLaunchParams& params) const override;
   gfx::Rect GetDefaultBounds(Browser* browser) const override;
 };
 
diff --git a/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.cc b/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.cc
index 52c176f..9db614e 100644
--- a/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.cc
+++ b/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.cc
@@ -31,8 +31,11 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/web_applications/system_web_app_ui_utils.h"
+#include "chrome/browser/web_applications/system_web_apps/system_web_app_manager.h"
 #include "chrome/browser/web_applications/web_app_id_constants.h"
+#include "chrome/browser/web_applications/web_app_provider.h"
 #include "chrome/browser/web_applications/web_app_tab_helper.h"
+#include "chrome/browser/web_applications/web_launch_params_helper.h"
 #include "components/services/app_service/public/mojom/types.mojom.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
@@ -167,6 +170,30 @@
   file_task_runner_->DeleteSoon(FROM_HERE, std::move(file_monitor_));
 }
 
+void ChromeCameraAppUIDelegate::SetLaunchDirectory() {
+  Profile* profile = Profile::FromWebUI(web_ui_);
+  content::WebContents* web_contents = web_ui_->GetWebContents();
+
+  auto my_files_folder_path =
+      file_manager::util::GetMyFilesFolderForProfile(profile);
+
+  auto* provider = web_app::WebAppProvider::GetForSystemWebApps(profile);
+  absl::optional<web_app::AppId> app_id =
+      provider->system_web_app_manager().GetAppIdForSystemApp(
+          web_app::SystemAppType::CAMERA);
+
+  // The launch directory is passed here rather than
+  // `SystemWebAppDelegate::LaunchAndNavigateSystemWebApp()` to handle the case
+  // of the app being opened to handle an Android intent, i.e. when it's shown
+  // as a dialog via `CameraAppDialog`.
+  web_app::WebLaunchParamsHelper::EnqueueLaunchParams(
+      web_contents, provider->registrar(), *app_id,
+      /*await_navigation=*/true,
+      /*launch_url=*/GURL(ash::kChromeUICameraAppMainURL), my_files_folder_path,
+      /*launch_paths=*/{});
+  web_app::WebAppTabHelper::CreateForWebContents(web_contents);
+}
+
 void ChromeCameraAppUIDelegate::PopulateLoadTimeData(
     content::WebUIDataSource* source) {
   // Add strings that can be pulled in.
diff --git a/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.h b/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.h
index f7c75ff..267b5b70 100644
--- a/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.h
+++ b/chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_delegate.h
@@ -93,6 +93,7 @@
   ~ChromeCameraAppUIDelegate() override;
 
   // ash::CameraAppUIDelegate
+  void SetLaunchDirectory() override;
   void PopulateLoadTimeData(content::WebUIDataSource* source) override;
   bool IsMetricsAndCrashReportingEnabled() override;
   void OpenFileInGallery(const std::string& name) override;
diff --git a/chrome/browser/breadcrumbs/breadcrumbs_status.cc b/chrome/browser/breadcrumbs/breadcrumbs_status.cc
new file mode 100644
index 0000000..1d1c4ec
--- /dev/null
+++ b/chrome/browser/breadcrumbs/breadcrumbs_status.cc
@@ -0,0 +1,18 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/breadcrumbs/breadcrumbs_status.h"
+
+#include "base/feature_list.h"
+#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
+#include "components/breadcrumbs/core/features.h"
+
+bool BreadcrumbsStatus::IsEnabled() {
+  return base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs) &&
+         IsMetricsAndCrashReportingEnabled();
+}
+
+bool BreadcrumbsStatus::IsMetricsAndCrashReportingEnabled() {
+  return ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled();
+}
diff --git a/chrome/browser/breadcrumbs/breadcrumbs_status.h b/chrome/browser/breadcrumbs/breadcrumbs_status.h
new file mode 100644
index 0000000..ae470f2
--- /dev/null
+++ b/chrome/browser/breadcrumbs/breadcrumbs_status.h
@@ -0,0 +1,32 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_BREADCRUMBS_BREADCRUMBS_STATUS_H_
+#define CHROME_BROWSER_BREADCRUMBS_BREADCRUMBS_STATUS_H_
+
+// Returns whether breadcrumbs crash logging is enabled. When enabled,
+// breadcrumbs appends a short history of events to crash reports. These can be
+// used to diagnose the cause of the attached crash by providing context for the
+// crash.
+// Breadcrumb events include:
+// * user-triggered actions listed in tools/metrics/actions.xml
+// * per-tab actions, e.g., when navigation starts/finishes
+// * per-browser actions, e.g., number of tabs opened/closed/moved
+// * memory pressure
+// * startup/shutdown
+class BreadcrumbsStatus {
+ public:
+  // Returns true if breadcrumbs logging is enabled. This is only the case if
+  // both the feature is enabled and the user has consented to metrics
+  // recording.
+  static bool IsEnabled();
+
+ private:
+  // Returns true if the user has consented to metrics reporting. Breadcrumbs
+  // should only be appended to crash reports if this is true, as they use
+  // information from UMA.
+  static bool IsMetricsAndCrashReportingEnabled();
+};
+
+#endif  // CHROME_BROWSER_BREADCRUMBS_BREADCRUMBS_STATUS_H_
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 4b6fff7..c99434fd 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -37,6 +37,7 @@
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/accessibility/soda_installer_impl.h"
 #include "chrome/browser/battery/battery_metrics.h"
+#include "chrome/browser/breadcrumbs/breadcrumbs_status.h"
 #include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/chrome_browser_main.h"
 #include "chrome/browser/chrome_content_browser_client.h"
@@ -91,8 +92,8 @@
 #include "components/breadcrumbs/core/application_breadcrumbs_logger.h"
 #include "components/breadcrumbs/core/breadcrumb_manager.h"
 #include "components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h"
+#include "components/breadcrumbs/core/breadcrumb_persistent_storage_util.h"
 #include "components/breadcrumbs/core/breadcrumb_util.h"
-#include "components/breadcrumbs/core/features.h"
 #include "components/component_updater/component_updater_service.h"
 #include "components/component_updater/timer_update_scheduler.h"
 #include "components/crash/core/common/crash_key.h"
@@ -1203,22 +1204,23 @@
   soda_installer_impl_ = std::make_unique<speech::SodaInstallerImplChromeOS>();
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
-  if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs)) {
+  base::FilePath user_data_dir;
+  bool result = base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
+  DCHECK(result);
+  if (BreadcrumbsStatus::IsEnabled()) {
     breadcrumb_manager_ = std::make_unique<breadcrumbs::BreadcrumbManager>(
         breadcrumbs::GetStartTime());
     application_breadcrumbs_logger_ =
         std::make_unique<breadcrumbs::ApplicationBreadcrumbsLogger>(
             breadcrumb_manager_.get());
 
-    base::FilePath storage_dir;
-    bool result = base::PathService::Get(chrome::DIR_USER_DATA, &storage_dir);
-    DCHECK(result);
-
     auto breadcrumb_persistent_storage_manager =
         std::make_unique<breadcrumbs::BreadcrumbPersistentStorageManager>(
-            storage_dir);
+            user_data_dir);
     application_breadcrumbs_logger_->SetPersistentStorageManager(
         std::move(breadcrumb_persistent_storage_manager));
+  } else {
+    breadcrumbs::DeleteBreadcrumbFiles(user_data_dir);
   }
 }
 
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index a2ba854..fa6248bc 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -2462,8 +2462,6 @@
     "../ash/policy/display/display_settings_handler.h",
     "../ash/policy/dlp/dlp_content_manager_ash.cc",
     "../ash/policy/dlp/dlp_content_manager_ash.h",
-    "../ash/policy/dlp/dlp_notification_helper.cc",
-    "../ash/policy/dlp/dlp_notification_helper.h",
     "../ash/policy/dlp/dlp_window_observer.cc",
     "../ash/policy/dlp/dlp_window_observer.h",
     "../ash/policy/enrollment/account_status_check_fetcher.cc",
@@ -3327,6 +3325,8 @@
     "policy/dlp/dlp_clipboard_notifier.h",
     "policy/dlp/dlp_confidential_contents.cc",
     "policy/dlp/dlp_confidential_contents.h",
+    "policy/dlp/dlp_content_manager.cc",
+    "policy/dlp/dlp_content_manager.h",
     "policy/dlp/dlp_content_observer.cc",
     "policy/dlp/dlp_content_observer.h",
     "policy/dlp/dlp_content_restriction_set.cc",
@@ -3339,6 +3339,8 @@
     "policy/dlp/dlp_drag_drop_notifier.h",
     "policy/dlp/dlp_histogram_helper.cc",
     "policy/dlp/dlp_histogram_helper.h",
+    "policy/dlp/dlp_notification_helper.cc",
+    "policy/dlp/dlp_notification_helper.h",
     "policy/dlp/dlp_policy_constants.h",
     "policy/dlp/dlp_reporting_manager.cc",
     "policy/dlp/dlp_reporting_manager.h",
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc
new file mode 100644
index 0000000..a901f45
--- /dev/null
+++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc
@@ -0,0 +1,240 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/policy/dlp/dlp_content_manager.h"
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/bind.h"
+#include "base/callback_helpers.h"
+#include "base/check.h"
+#include "base/containers/contains.h"
+#include "base/containers/cxx20_erase.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_confidential_contents.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_histogram_helper.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_reporting_manager.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_warn_notifier.h"
+#include "content/public/browser/web_contents.h"
+#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
+#include "url/gurl.h"
+
+namespace policy {
+
+namespace {
+// Reports events to `reporting_manager`.
+void ReportEvent(GURL url,
+                 DlpRulesManager::Restriction restriction,
+                 DlpRulesManager::Level level,
+                 DlpReportingManager* reporting_manager) {
+  DCHECK(reporting_manager);
+
+  DlpRulesManager* rules_manager =
+      DlpRulesManagerFactory::GetForPrimaryProfile();
+  if (!rules_manager)
+    return;
+
+  const std::string src_url =
+      rules_manager->GetSourceUrlPattern(url, restriction, level);
+
+  reporting_manager->ReportEvent(src_url, restriction, level);
+}
+
+// Reports events of type DlpPolicyEvent::Mode::WARN_PROCEED to
+// `reporting_manager`.
+void ReportWarningProceededEvent(const GURL& url,
+                                 DlpRulesManager::Restriction restriction,
+                                 DlpReportingManager* reporting_manager) {
+  if (!reporting_manager)
+    return;
+
+  DlpRulesManager* rules_manager =
+      DlpRulesManagerFactory::GetForPrimaryProfile();
+  if (rules_manager) {
+    const std::string src_url = rules_manager->GetSourceUrlPattern(
+        url, restriction, DlpRulesManager::Level::kWarn);
+    reporting_manager->ReportWarningProceededEvent(src_url, restriction);
+  }
+}
+
+// Helper method to create a callback with ReportWarningProceededEvent function.
+bool MaybeReportWarningProceededEvent(GURL url,
+                                      DlpRulesManager::Restriction restriction,
+                                      DlpReportingManager* reporting_manager,
+                                      bool should_proceed) {
+  if (should_proceed) {
+    ReportWarningProceededEvent(url, restriction, reporting_manager);
+  }
+  return should_proceed;
+}
+
+// Helper method to check whether the restriction level is kBlock.
+bool IsBlocked(RestrictionLevelAndUrl restriction_info) {
+  return restriction_info.level == DlpRulesManager::Level::kBlock;
+}
+
+// Helper method to check whether the restriction level is kWarn.
+bool IsWarn(RestrictionLevelAndUrl restriction_info) {
+  return restriction_info.level == DlpRulesManager::Level::kWarn;
+}
+
+// Helper method to check if event should be reported.
+// Does not apply to warning mode reporting.
+bool IsReported(RestrictionLevelAndUrl restriction_info) {
+  return restriction_info.level == DlpRulesManager::Level::kReport ||
+         IsBlocked(restriction_info);
+}
+
+}  // namespace
+
+// static
+DlpContentManager* DlpContentManager::Get() {
+  return static_cast<DlpContentManager*>(DlpContentObserver::Get());
+}
+
+DlpContentRestrictionSet DlpContentManager::GetConfidentialRestrictions(
+    content::WebContents* web_contents) const {
+  if (!base::Contains(confidential_web_contents_, web_contents))
+    return DlpContentRestrictionSet();
+  return confidential_web_contents_.at(web_contents);
+}
+
+void DlpContentManager::CheckPrintingRestriction(
+    content::WebContents* web_contents,
+    OnDlpRestrictionCheckedCallback callback) {
+  const RestrictionLevelAndUrl restriction_info =
+      GetPrintingRestrictionInfo(web_contents);
+  MaybeReportEvent(restriction_info, DlpRulesManager::Restriction::kPrinting);
+  DlpBooleanHistogram(dlp::kPrintingBlockedUMA, IsBlocked(restriction_info));
+  if (IsBlocked(restriction_info)) {
+    ShowDlpPrintDisabledNotification();
+    std::move(callback).Run(false);
+    return;
+  }
+
+  if (IsWarn(restriction_info)) {
+    // Check if the contents were already allowed and don't warn in that case.
+    if (user_allowed_contents_cache_.Contains(
+            web_contents, DlpRulesManager::Restriction::kPrinting)) {
+      ReportWarningProceededEvent(restriction_info.url,
+                                  DlpRulesManager::Restriction::kPrinting,
+                                  reporting_manager_);
+      std::move(callback).Run(true);
+      return;
+    }
+
+    // Immediately report a warning event.
+    ReportWarningEvent(restriction_info,
+                       DlpRulesManager::Restriction::kPrinting);
+
+    // Report a warning proceeded event only after a user proceeds with printing
+    // in the warn dialog.
+    auto reporting_callback = base::BindOnce(
+        &MaybeReportWarningProceededEvent, restriction_info.url,
+        DlpRulesManager::Restriction::kPrinting, reporting_manager_);
+    warn_notifier_->ShowDlpPrintWarningDialog(base::BindOnce(
+        &DlpContentManager::OnDlpWarnDialogReply, base::Unretained(this),
+        DlpConfidentialContents({web_contents}),
+        DlpRulesManager::Restriction::kPrinting,
+        std::move(reporting_callback).Then(std::move(callback))));
+    return;
+  }
+
+  // No restrictions apply.
+  std::move(callback).Run(true);
+}
+
+DlpContentManager::DlpContentManager() = default;
+DlpContentManager::~DlpContentManager() = default;
+
+void DlpContentManager::Init() {
+  DlpRulesManager* rules_manager =
+      DlpRulesManagerFactory::GetForPrimaryProfile();
+  if (rules_manager)
+    reporting_manager_ =
+        DlpRulesManagerFactory::GetForPrimaryProfile()->GetReportingManager();
+  warn_notifier_ = std::make_unique<DlpWarnNotifier>();
+}
+
+void DlpContentManager::OnConfidentialityChanged(
+    content::WebContents* web_contents,
+    const DlpContentRestrictionSet& restriction_set) {
+  if (restriction_set.IsEmpty()) {
+    RemoveFromConfidential(web_contents);
+  } else {
+    confidential_web_contents_[web_contents] = restriction_set;
+  }
+}
+
+void DlpContentManager::OnWebContentsDestroyed(
+    content::WebContents* web_contents) {
+  RemoveFromConfidential(web_contents);
+}
+
+void DlpContentManager::RemoveFromConfidential(
+    content::WebContents* web_contents) {
+  confidential_web_contents_.erase(web_contents);
+}
+
+RestrictionLevelAndUrl DlpContentManager::GetPrintingRestrictionInfo(
+    content::WebContents* web_contents) const {
+  // If we're viewing the PDF in a MimeHandlerViewGuest, use its embedded
+  // WebContents.
+  auto* guest_view =
+      extensions::MimeHandlerViewGuest::FromWebContents(web_contents);
+  web_contents =
+      guest_view ? guest_view->embedder_web_contents() : web_contents;
+
+  return GetConfidentialRestrictions(web_contents)
+      .GetRestrictionLevelAndUrl(DlpContentRestriction::kPrint);
+}
+
+void DlpContentManager::OnDlpWarnDialogReply(
+    const DlpConfidentialContents& confidential_contents,
+    DlpRulesManager::Restriction restriction,
+    OnDlpRestrictionCheckedCallback callback,
+    bool should_proceed) {
+  if (should_proceed) {
+    for (const auto& content : confidential_contents.GetContents()) {
+      user_allowed_contents_cache_.Cache(content, restriction);
+    }
+  }
+  std::move(callback).Run(should_proceed);
+}
+
+void DlpContentManager::MaybeReportEvent(
+    const RestrictionLevelAndUrl& restriction_info,
+    DlpRulesManager::Restriction restriction) {
+  // TODO(crbug.com/1260302): Add reporting and metrics for WARN restrictions.
+  if (IsReported(restriction_info) && reporting_manager_) {
+    ReportEvent(restriction_info.url, restriction, restriction_info.level,
+                reporting_manager_);
+  }
+}
+
+void DlpContentManager::ReportWarningEvent(
+    const RestrictionLevelAndUrl& restriction_info,
+    DlpRulesManager::Restriction restriction) {
+  DCHECK(IsWarn(restriction_info));
+  if (reporting_manager_) {
+    ReportEvent(restriction_info.url, restriction,
+                DlpRulesManager::Level::kWarn, reporting_manager_);
+  }
+}
+
+void DlpContentManager::RemoveAllowedContents(
+    DlpConfidentialContents& contents,
+    DlpRulesManager::Restriction restriction) {
+  base::EraseIf(
+      contents.GetContents(), [=](const DlpConfidentialContent& content) {
+        return user_allowed_contents_cache_.Contains(content, restriction);
+      });
+}
+
+}  // namespace policy
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.h b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.h
new file mode 100644
index 0000000..1c2545c
--- /dev/null
+++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.h
@@ -0,0 +1,124 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_CONTENT_MANAGER_H_
+#define CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_CONTENT_MANAGER_H_
+
+#include <memory>
+#include <string>
+#include <utility>
+
+#include "base/callback.h"
+#include "base/containers/flat_map.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_confidential_contents.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_content_observer.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_warn_dialog.h"
+#include "url/gurl.h"
+
+namespace content {
+class WebContents;
+}  // namespace content
+
+namespace policy {
+
+class DlpReportingManager;
+
+class DlpWarnNotifier;
+
+// System-wide class that tracks the set of currently known confidential
+// WebContents and whether any of them are currently visible.
+// If any confidential WebContents is visible, the corresponding restrictions
+// will be enforced according to the current enterprise policy.
+class DlpContentManager : public DlpContentObserver {
+ public:
+  DlpContentManager(const DlpContentManager&) = delete;
+  DlpContentManager& operator=(const DlpContentManager&) = delete;
+
+  // Returns platform-specific implementation of the class. Never returns
+  // nullptr.
+  static DlpContentManager* Get();
+
+  // Returns which restrictions are applied to the |web_contents| according to
+  // the policy.
+  DlpContentRestrictionSet GetConfidentialRestrictions(
+      content::WebContents* web_contents) const;
+
+  // Checks whether printing of |web_contents| is restricted or not advised.
+  // Depending on the result, calls |callback| and passes an indicator whether
+  // to proceed or not.
+  void CheckPrintingRestriction(content::WebContents* web_contents,
+                                OnDlpRestrictionCheckedCallback callback);
+
+ protected:
+  // Structure that relates a list of confidential contents to the
+  // corresponding restriction level.
+  struct ConfidentialContentsInfo {
+    RestrictionLevelAndUrl restriction_info;
+    DlpConfidentialContents confidential_contents;
+  };
+
+  DlpContentManager();
+  ~DlpContentManager() override;
+
+  // Initializing to be called separately to make testing possible.
+  virtual void Init();
+
+  // DlpContentObserver overrides:
+  void OnConfidentialityChanged(
+      content::WebContents* web_contents,
+      const DlpContentRestrictionSet& restriction_set) override;
+  void OnWebContentsDestroyed(content::WebContents* web_contents) override;
+
+  // Helper to remove |web_contents| from the confidential set.
+  virtual void RemoveFromConfidential(content::WebContents* web_contents);
+
+  // Returns which level and url of printing restriction is currently enforced
+  // for |web_contents|.
+  RestrictionLevelAndUrl GetPrintingRestrictionInfo(
+      content::WebContents* web_contents) const;
+
+  // Called back from warning dialogs. Passes along the user's response,
+  // reflected in the value of |should_proceed| along to |callback| which
+  // handles continuing or cancelling the action based on this response. In case
+  // that |should_proceed| is true, also saves the |confidential_contents| that
+  // were allowed by the user for |restriction| to avoid future warnings.
+  void OnDlpWarnDialogReply(
+      const DlpConfidentialContents& confidential_contents,
+      DlpRulesManager::Restriction restriction,
+      OnDlpRestrictionCheckedCallback callback,
+      bool should_proceed);
+
+  // Reports events if required by the |restriction_info| and
+  // `reporting_manager` is configured.
+  void MaybeReportEvent(const RestrictionLevelAndUrl& restriction_info,
+                        DlpRulesManager::Restriction restriction);
+
+  // Reports warning events if `reporting_manager` is configured.
+  void ReportWarningEvent(const RestrictionLevelAndUrl& restriction_info,
+                          DlpRulesManager::Restriction restriction);
+
+  // Removes all elements of |contents| that the user has recently already
+  // acknowledged the warning for.
+  void RemoveAllowedContents(DlpConfidentialContents& contents,
+                             DlpRulesManager::Restriction restriction);
+
+  // Map from currently known confidential WebContents to the restrictions.
+  base::flat_map<content::WebContents*, DlpContentRestrictionSet>
+      confidential_web_contents_;
+
+  // Keeps track of the contents for which the user allowed the action after
+  // being shown a warning for each type of restriction.
+  // TODO(crbug.com/1264803): Change to DlpConfidentialContentsCache
+  DlpConfidentialContentsCache user_allowed_contents_cache_;
+
+  DlpReportingManager* reporting_manager_;
+
+  std::unique_ptr<DlpWarnNotifier> warn_notifier_;
+};
+
+}  // namespace policy
+
+#endif  // CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_CONTENT_MANAGER_H_
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.cc b/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.cc
index 1f04132..cc47c83d 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.cc
@@ -64,6 +64,7 @@
 DlpContentManagerLacros* DlpContentManagerLacros::Get() {
   if (!g_dlp_content_manager) {
     g_dlp_content_manager = new DlpContentManagerLacros();
+    g_dlp_content_manager->Init();
   }
   return g_dlp_content_manager;
 }
@@ -74,7 +75,7 @@
 void DlpContentManagerLacros::OnConfidentialityChanged(
     content::WebContents* web_contents,
     const DlpContentRestrictionSet& restriction_set) {
-  confidential_web_contents_[web_contents] = restriction_set;
+  DlpContentManager::OnConfidentialityChanged(web_contents, restriction_set);
   aura::Window* window = web_contents->GetNativeView();
   if (!window_webcontents_.contains(window)) {
     window_webcontents_[window] = {};
@@ -86,7 +87,7 @@
 
 void DlpContentManagerLacros::OnWebContentsDestroyed(
     content::WebContents* web_contents) {
-  confidential_web_contents_.erase(web_contents);
+  DlpContentManager::OnWebContentsDestroyed(web_contents);
   aura::Window* window = web_contents->GetNativeView();
   if (window_webcontents_.contains(window)) {
     window_webcontents_[window].erase(web_contents);
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.h b/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.h
index 3279e5c1..da6d4483 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.h
+++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager_lacros.h
@@ -7,7 +7,7 @@
 
 #include "base/containers/flat_map.h"
 #include "base/containers/flat_set.h"
-#include "chrome/browser/chromeos/policy/dlp/dlp_content_observer.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_content_manager.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set.h"
 #include "ui/aura/window_observer.h"
 
@@ -23,7 +23,7 @@
 
 // LaCros-wide class that tracks the set of currently known confidential
 // WebContents and whether any of them are currently visible.
-class DlpContentManagerLacros : public DlpContentObserver,
+class DlpContentManagerLacros : public DlpContentManager,
                                 public aura::WindowObserver {
  public:
   // Creates the instance if not yet created.
@@ -52,10 +52,6 @@
   base::flat_map<aura::Window*, base::flat_set<content::WebContents*>>
       window_webcontents_;
 
-  // Tracks current restrictions applied to WebContents*.
-  base::flat_map<content::WebContents*, DlpContentRestrictionSet>
-      confidential_web_contents_;
-
   // Tracks current restrictions applied to Window* based on visible
   // WebContents* belonging to Window*.
   base::flat_map<aura::Window*, DlpContentRestrictionSet> confidential_windows_;
diff --git a/chrome/browser/ash/policy/dlp/dlp_notification_helper.cc b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.cc
similarity index 76%
rename from chrome/browser/ash/policy/dlp/dlp_notification_helper.cc
rename to chrome/browser/chromeos/policy/dlp/dlp_notification_helper.cc
index 0e85273..6bf0ce2 100644
--- a/chrome/browser/ash/policy/dlp/dlp_notification_helper.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.cc
@@ -2,10 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ash/policy/dlp/dlp_notification_helper.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h"
 
-#include "ash/public/cpp/new_window_delegate.h"
-#include "ash/public/cpp/notification_utils.h"
 #include "chrome/browser/chromeos/policy/dlp/dlp_clipboard_bubble_constants.h"
 #include "chrome/browser/notifications/notification_display_service.h"
 #include "chrome/browser/profiles/profile.h"
@@ -19,6 +17,14 @@
 #include "ui/message_center/public/cpp/notifier_id.h"
 #include "url/gurl.h"
 
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "ash/public/cpp/new_window_delegate.h"
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+#include "chrome/browser/lacros/browser_service_lacros.h"
+#endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
+
 namespace policy {
 
 namespace {
@@ -36,8 +42,13 @@
 constexpr char kDlpPolicyNotifierId[] = "policy.dlp";
 
 void OnNotificationClicked(const std::string id) {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
   ash::NewWindowDelegate::GetInstance()->OpenUrl(
       GURL(kDlpLearnMoreUrl), /*from_user_interaction=*/true);
+#elif BUILDFLAG(IS_CHROMEOS_LACROS)
+  auto browser_service = std::make_unique<BrowserServiceLacros>();
+  browser_service->OpenUrl(GURL(kDlpLearnMoreUrl), base::DoNothing());
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
   NotificationDisplayService::GetForProfile(
       ProfileManager::GetActiveUserProfile())
@@ -47,22 +58,26 @@
 void ShowDlpNotification(const std::string& id,
                          const std::u16string& title,
                          const std::u16string& message) {
-  std::unique_ptr<message_center::Notification> notification =
-      ash::CreateSystemNotification(
-          message_center::NOTIFICATION_TYPE_SIMPLE, id, title, message,
-          /*display_source=*/std::u16string(), GURL(),
-          message_center::NotifierId(
-              message_center::NotifierType::SYSTEM_COMPONENT,
-              kDlpPolicyNotifierId),
-          message_center::RichNotificationData(),
-          base::MakeRefCounted<message_center::HandleNotificationClickDelegate>(
-              base::BindRepeating(&OnNotificationClicked, id)),
-          vector_icons::kBusinessIcon,
-          message_center::SystemNotificationWarningLevel::CRITICAL_WARNING);
-  notification->set_renotify(true);
+  message_center::Notification notification(
+      message_center::NOTIFICATION_TYPE_SIMPLE, id, title, message,
+      /*icon=*/gfx::Image(), /*display_source=*/std::u16string(),
+      /*origin_url=*/GURL(),
+      message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT,
+                                 kDlpPolicyNotifierId),
+      message_center::RichNotificationData(),
+      base::MakeRefCounted<message_center::HandleNotificationClickDelegate>(
+          base::BindRepeating(&OnNotificationClicked, id)));
+  // Set critical warning color.
+  notification.set_accent_color(gfx::kGoogleRed700);
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  notification.set_system_notification_warning_level(
+      message_center::SystemNotificationWarningLevel::CRITICAL_WARNING);
+#endif
+  notification.set_vector_small_image(vector_icons::kBusinessIcon);
+  notification.set_renotify(true);
   NotificationDisplayService::GetForProfile(
       ProfileManager::GetActiveUserProfile())
-      ->Display(NotificationHandler::Type::TRANSIENT, *notification,
+      ->Display(NotificationHandler::Type::TRANSIENT, notification,
                 /*metadata=*/nullptr);
 }
 
diff --git a/chrome/browser/ash/policy/dlp/dlp_notification_helper.h b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h
similarity index 87%
rename from chrome/browser/ash/policy/dlp/dlp_notification_helper.h
rename to chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h
index aab3f915..bf4ba04 100644
--- a/chrome/browser/ash/policy/dlp/dlp_notification_helper.h
+++ b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_ASH_POLICY_DLP_DLP_NOTIFICATION_HELPER_H_
-#define CHROME_BROWSER_ASH_POLICY_DLP_DLP_NOTIFICATION_HELPER_H_
+#ifndef CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_NOTIFICATION_HELPER_H_
+#define CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_NOTIFICATION_HELPER_H_
 
 #include <string>
 
@@ -37,4 +37,4 @@
 
 }  // namespace policy
 
-#endif  // CHROME_BROWSER_ASH_POLICY_DLP_DLP_NOTIFICATION_HELPER_H_
+#endif  // CHROME_BROWSER_CHROMEOS_POLICY_DLP_DLP_NOTIFICATION_HELPER_H_
diff --git a/chrome/browser/client_hints/client_hints_browsertest.cc b/chrome/browser/client_hints/client_hints_browsertest.cc
index 54ab2b4..05d220ce 100644
--- a/chrome/browser/client_hints/client_hints_browsertest.cc
+++ b/chrome/browser/client_hints/client_hints_browsertest.cc
@@ -94,9 +94,10 @@
 constexpr unsigned expected_client_hints_number = 17u;
 constexpr unsigned expected_default_third_party_client_hints_number = 3u;
 constexpr unsigned expected_requested_third_party_client_hints_number = 20u;
+constexpr unsigned expected_pre_merge_third_party_client_hints_number = 12u;
 
 // An interceptor that records count of fetches and client hint headers for
-// requests to https://{foo|bar}.com/non-existing-image.jpg.
+// requests to https://{foo|bar}.com/non-existing-{image.jpg|iframe.html}.
 class ThirdPartyURLLoaderInterceptor {
  public:
   explicit ThirdPartyURLLoaderInterceptor(const std::set<GURL> intercepted_urls)
@@ -329,6 +330,10 @@
         https_server_.GetURL("/http_equiv_accept_ch_delegation_bar.html");
     meta_name_accept_ch_delegation_bar_ =
         https_server_.GetURL("/meta_name_accept_ch_delegation_bar.html");
+    http_equiv_accept_ch_delegation_merge_ =
+        https_server_.GetURL("/http_equiv_accept_ch_delegation_merge.html");
+    meta_name_accept_ch_delegation_merge_ =
+        https_server_.GetURL("/meta_name_accept_ch_delegation_merge.html");
     http_equiv_accept_ch_merge_ =
         https_server_.GetURL("/http_equiv_accept_ch_merge.html");
     meta_name_accept_ch_merge_ =
@@ -363,7 +368,9 @@
     host_resolver()->AddRule("*", "127.0.0.1");
     request_interceptor_ = std::make_unique<ThirdPartyURLLoaderInterceptor>(
         (std::set<GURL>){GURL("https://foo.com/non-existing-image.jpg"),
-                         GURL("https://bar.com/non-existing-image.jpg")});
+                         GURL("https://foo.com/non-existing-iframe.html"),
+                         GURL("https://bar.com/non-existing-image.jpg"),
+                         GURL("https://bar.com/non-existing-iframe.html")});
     base::RunLoop().RunUntilIdle();
   }
 
@@ -525,6 +532,14 @@
     return meta_name_accept_ch_delegation_bar_;
   }
 
+  // A page where hints are delegated to the third-party sites in HTTP and HTML.
+  const GURL& http_equiv_accept_ch_delegation_merge() const {
+    return http_equiv_accept_ch_delegation_merge_;
+  }
+  const GURL& meta_name_accept_ch_delegation_merge() const {
+    return meta_name_accept_ch_delegation_merge_;
+  }
+
   // A page where some hints are in accept-ch header, some in http-equiv.
   const GURL& http_equiv_accept_ch_merge() const {
     return http_equiv_accept_ch_merge_;
@@ -983,6 +998,8 @@
   GURL meta_name_accept_ch_delegation_foo_;
   GURL http_equiv_accept_ch_delegation_bar_;
   GURL meta_name_accept_ch_delegation_bar_;
+  GURL http_equiv_accept_ch_delegation_merge_;
+  GURL meta_name_accept_ch_delegation_merge_;
   GURL http_equiv_accept_ch_merge_;
   GURL meta_name_accept_ch_merge_;
   GURL without_accept_ch_cross_origin_;
@@ -1514,8 +1531,8 @@
   SetClientHintExpectationsOnSubresources(false);
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(0u, count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_default_third_party_client_hints_number * 2,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_default_third_party_client_hints_number * 7,
             third_party_client_hints_count_seen());
 }
 IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithThirdPartyDelegation,
@@ -1526,8 +1543,8 @@
   SetClientHintExpectationsOnSubresources(false);
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(0u, count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_default_third_party_client_hints_number * 2,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_default_third_party_client_hints_number * 7,
             third_party_client_hints_count_seen());
 }
 
@@ -1539,8 +1556,8 @@
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(expected_client_hints_number * 2,
             count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_default_third_party_client_hints_number * 2,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_default_third_party_client_hints_number * 7,
             third_party_client_hints_count_seen());
 }
 IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithThirdPartyDelegation,
@@ -1552,9 +1569,9 @@
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(expected_client_hints_number * 2,
             count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_requested_third_party_client_hints_number +
-                expected_default_third_party_client_hints_number,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_requested_third_party_client_hints_number * 5 +
+                expected_default_third_party_client_hints_number * 2,
             third_party_client_hints_count_seen());
 }
 
@@ -1565,8 +1582,8 @@
   SetClientHintExpectationsOnSubresources(false);
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(0u, count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_default_third_party_client_hints_number * 2,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_default_third_party_client_hints_number * 7,
             third_party_client_hints_count_seen());
 }
 IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithThirdPartyDelegation,
@@ -1577,8 +1594,8 @@
   SetClientHintExpectationsOnSubresources(false);
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(0u, count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_default_third_party_client_hints_number * 2,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_default_third_party_client_hints_number * 7,
             third_party_client_hints_count_seen());
 }
 
@@ -1590,8 +1607,8 @@
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(expected_client_hints_number * 2,
             count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_default_third_party_client_hints_number * 2,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_default_third_party_client_hints_number * 7,
             third_party_client_hints_count_seen());
 }
 IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithThirdPartyDelegation,
@@ -1603,9 +1620,64 @@
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
   EXPECT_EQ(expected_client_hints_number * 2,
             count_client_hints_headers_seen());
-  EXPECT_EQ(2u, third_party_request_count_seen());
-  EXPECT_EQ(expected_requested_third_party_client_hints_number +
-                expected_default_third_party_client_hints_number,
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_requested_third_party_client_hints_number * 2 +
+                expected_default_third_party_client_hints_number * 5,
+            third_party_client_hints_count_seen());
+}
+
+IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTest, DelegateAndMerge_HttpEquiv) {
+  // Go to a page which delegates hints in HTTP and HTML.
+  GURL gurl = http_equiv_accept_ch_delegation_merge();
+  SetClientHintExpectationsOnMainFrame(false);
+  SetClientHintExpectationsOnSubresources(true);
+  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
+  EXPECT_EQ(expected_client_hints_number * 2,
+            count_client_hints_headers_seen());
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_pre_merge_third_party_client_hints_number * 2 +
+                expected_requested_third_party_client_hints_number * 5,
+            third_party_client_hints_count_seen());
+}
+IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithThirdPartyDelegation,
+                       DelegateAndMerge_HttpEquiv) {
+  // Go to a page which delegates hints in HTTP and HTML.
+  GURL gurl = http_equiv_accept_ch_delegation_merge();
+  SetClientHintExpectationsOnMainFrame(false);
+  SetClientHintExpectationsOnSubresources(true);
+  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
+  EXPECT_EQ(expected_client_hints_number * 2,
+            count_client_hints_headers_seen());
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_pre_merge_third_party_client_hints_number * 2 +
+                expected_requested_third_party_client_hints_number * 5,
+            third_party_client_hints_count_seen());
+}
+
+IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTest, DelegateAndMerge_MetaName) {
+  // Go to a page which delegates hints in HTTP and HTML.
+  GURL gurl = meta_name_accept_ch_delegation_merge();
+  SetClientHintExpectationsOnMainFrame(false);
+  SetClientHintExpectationsOnSubresources(true);
+  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
+  EXPECT_EQ(expected_client_hints_number * 2,
+            count_client_hints_headers_seen());
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_pre_merge_third_party_client_hints_number * 2 +
+                expected_requested_third_party_client_hints_number * 5,
+            third_party_client_hints_count_seen());
+}
+IN_PROC_BROWSER_TEST_F(ClientHintsBrowserTestWithThirdPartyDelegation,
+                       DelegateAndMerge_MetaName) {
+  // Go to a page which delegates hints in HTTP and HTML.
+  GURL gurl = meta_name_accept_ch_delegation_merge();
+  SetClientHintExpectationsOnMainFrame(false);
+  SetClientHintExpectationsOnSubresources(true);
+  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), gurl));
+  EXPECT_EQ(expected_client_hints_number * 2,
+            count_client_hints_headers_seen());
+  EXPECT_EQ(7u, third_party_request_count_seen());
+  EXPECT_EQ(expected_requested_third_party_client_hints_number * 7,
             third_party_client_hints_count_seen());
 }
 
diff --git a/chrome/browser/content_creation/reactions/internal/android/BUILD.gn b/chrome/browser/content_creation/reactions/internal/android/BUILD.gn
index d2aebb31..97caff1 100644
--- a/chrome/browser/content_creation/reactions/internal/android/BUILD.gn
+++ b/chrome/browser/content_creation/reactions/internal/android/BUILD.gn
@@ -28,6 +28,7 @@
     "//base:base_java",
     "//chrome/android:chrome_java",
     "//chrome/browser/content_creation/reactions/android:public_java",
+    "//chrome/browser/flags:java",
     "//chrome/browser/profiles/android:java",
     "//chrome/browser/share:java",
     "//chrome/browser/tab:java",
diff --git a/chrome/browser/content_creation/reactions/internal/android/java/src/org/chromium/chrome/browser/content_creation/reactions/scene/SceneCoordinator.java b/chrome/browser/content_creation/reactions/internal/android/java/src/org/chromium/chrome/browser/content_creation/reactions/scene/SceneCoordinator.java
index 38dbd9e..2ad14d9 100644
--- a/chrome/browser/content_creation/reactions/internal/android/java/src/org/chromium/chrome/browser/content_creation/reactions/scene/SceneCoordinator.java
+++ b/chrome/browser/content_creation/reactions/internal/android/java/src/org/chromium/chrome/browser/content_creation/reactions/scene/SceneCoordinator.java
@@ -20,6 +20,7 @@
 import org.chromium.chrome.browser.content_creation.reactions.ReactionGifDrawable;
 import org.chromium.chrome.browser.content_creation.reactions.internal.R;
 import org.chromium.chrome.browser.content_creation.reactions.toolbar.ToolbarReactionsDelegate;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.components.content_creation.reactions.ReactionMetadata;
 import org.chromium.ui.LayoutInflaterUtils;
 import org.chromium.ui.base.ViewUtils;
@@ -41,13 +42,15 @@
 public class SceneCoordinator implements SceneEditorDelegate, ToolbarReactionsDelegate {
     private static final int DEFAULT_REACTION_SIZE_DP = 192;
     private static final int REACTION_OFFSET_DP = 45;
-    private static final int MAX_REACTION_COUNT = 10;
+    private static final int DEFAULT_MAX_REACTION_COUNT = 10;
+    private static final String MAX_REACTIONS_PARAM_NAME = "max_reactions";
 
     private final Activity mActivity;
     private final LightweightReactionsMediator mMediator;
     private final Set<ReactionLayout> mReactionLayouts;
     private final Map<ReactionLayout, Integer> mInitialPositionByReaction;
     private final List<Integer> mNumReactionsInPosition;
+    private final int mMaxReactionCount;
 
     private ReactionLayout mActiveReaction;
     private RelativeLayout mSceneBackground;
@@ -79,6 +82,10 @@
         mNbDuplicate = 0;
         mNbDelete = 0;
         mNbMove = 0;
+
+        mMaxReactionCount = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
+                ChromeFeatureList.LIGHTWEIGHT_REACTIONS, MAX_REACTIONS_PARAM_NAME,
+                DEFAULT_MAX_REACTION_COUNT);
     }
 
     public void setSceneBackground(RelativeLayout sceneBackground, ImageView screenshotView) {
@@ -272,7 +279,7 @@
     // SceneEditorDelegate implementation.
     @Override
     public boolean canAddReaction() {
-        return mReactionLayouts.size() < MAX_REACTION_COUNT;
+        return mReactionLayouts.size() < mMaxReactionCount;
     }
 
     @Override
@@ -314,7 +321,7 @@
         }
         mToast = Toast.makeText(mActivity,
                 mActivity.getString(R.string.lightweight_reactions_error_max_reactions_reached,
-                        MAX_REACTION_COUNT),
+                        mMaxReactionCount),
                 Toast.LENGTH_SHORT);
         mToast.show();
     }
diff --git a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/home/filter/FilterChipsProvider.java b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/home/filter/FilterChipsProvider.java
index a4898ec..407df612 100644
--- a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/home/filter/FilterChipsProvider.java
+++ b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/home/filter/FilterChipsProvider.java
@@ -97,12 +97,7 @@
     public void setFilterSelected(@FilterType int type) {
         for (int i = 0; i < mSortedChips.size(); i++) {
             PropertyModel chip = mSortedChips.get(i).model;
-            boolean willSelect = chip.get(ChipProperties.ID) == type;
-
-            // Early out if we're already selecting the appropriate Chip type.
-            if (chip.get(ChipProperties.SELECTED) && willSelect) return;
-            if (chip.get(ChipProperties.SELECTED) == willSelect) continue;
-            chip.set(ChipProperties.SELECTED, willSelect);
+            chip.set(ChipProperties.SELECTED, chip.get(ChipProperties.ID) == type);
         }
     }
 
diff --git a/chrome/browser/federated_learning/floc_id_provider_unittest.cc b/chrome/browser/federated_learning/floc_id_provider_unittest.cc
index 14620ca..4089e4d 100644
--- a/chrome/browser/federated_learning/floc_id_provider_unittest.cc
+++ b/chrome/browser/federated_learning/floc_id_provider_unittest.cc
@@ -25,7 +25,6 @@
 #include "components/history/core/browser/history_database_params.h"
 #include "components/history/core/browser/history_service.h"
 #include "components/history/core/test/test_history_database.h"
-#include "components/policy/core/common/mock_policy_service.h"
 #include "components/privacy_sandbox/privacy_sandbox_prefs.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "components/ukm/test_ukm_recorder.h"
@@ -193,9 +192,7 @@
                                              /*is_incognito=*/false);
 
     privacy_sandbox_settings_ = std::make_unique<PrivacySandboxSettings>(
-        settings_map_.get(), cookie_settings_.get(), &prefs_,
-        &mock_policy_service_,
-        /*sync_service=*/nullptr, /*identity_manager=*/nullptr);
+        settings_map_.get(), cookie_settings_.get(), &prefs_);
 
     task_environment_.RunUntilIdle();
   }
@@ -303,7 +300,6 @@
 
   std::unique_ptr<history::HistoryService> history_service_;
   scoped_refptr<content_settings::CookieSettings> cookie_settings_;
-  testing::NiceMock<policy::MockPolicyService> mock_policy_service_;
   std::unique_ptr<PrivacySandboxSettings> privacy_sandbox_settings_;
   std::unique_ptr<MockFlocIdProvider> floc_id_provider_;
 
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedProcessScopeDependencyProviderTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedProcessScopeDependencyProviderTest.java
index 3ec6f31..c5f35fa5 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedProcessScopeDependencyProviderTest.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedProcessScopeDependencyProviderTest.java
@@ -65,7 +65,7 @@
         @Override
         public void setMetricsReportingEnabled(boolean enabled) {}
         @Override
-        public boolean isMetricsReportingManaged() {
+        public boolean isMetricsReportingDisabledByPolicy() {
             return false;
         }
     };
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 756c4cd..6e733cdb 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -4852,7 +4852,7 @@
   },
   {
     "name": "scan-app-searchable-pdf",
-    "owners": [ "kmoed@google.com", "cros-peripherals@google.com" ],
+    "owners": [ "gavinwill", "cros-peripherals@google.com" ],
     "expiry_milestone": 97
   },
   {
diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/chrome/browser/long_screenshots/long_screenshots_tab_service.cc
index 330508a..f1b322b 100644
--- a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc
+++ b/chrome/browser/long_screenshots/long_screenshots_tab_service.cc
@@ -41,6 +41,9 @@
 // Regex pattern for the path of Google AMP Viewer URLs.
 const char kGoogleAmpViewerPathPattern[] = "/amp/(s/)?(.*)";
 
+const char kGoogleNewsHost[] = "news.google.com";
+const char kGoogleNewsPathPattern[] = "/articles/(.*)";
+
 }  // namespace
 
 // Used to free a CaptureResult if it is passed up to Java and cannot be used by
@@ -60,9 +63,11 @@
                               std::move(policy),
                               is_off_the_record),
       google_amp_cache_path_regex_(kGoogleAmpCachePathPattern),
-      google_amp_viewer_path_regex_(kGoogleAmpViewerPathPattern) {
+      google_amp_viewer_path_regex_(kGoogleAmpViewerPathPattern),
+      google_news_path_regex_(kGoogleNewsPathPattern) {
   DCHECK(google_amp_cache_path_regex_.ok());
   DCHECK(google_amp_viewer_path_regex_.ok());
+  DCHECK(google_news_path_regex_.ok());
 
   JNIEnv* env = base::android::AttachCurrentThread();
 
@@ -240,6 +245,12 @@
     return true;
   }
 
+  // Check for "news.google.com/articles/*".
+  if (url.DomainIs(kGoogleNewsHost) &&
+      re2::RE2::FullMatch(url.path(), google_news_path_regex_)) {
+    return true;
+  }
+
   return false;
 }
 
diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.h b/chrome/browser/long_screenshots/long_screenshots_tab_service.h
index f59751ac..b5aa33f 100644
--- a/chrome/browser/long_screenshots/long_screenshots_tab_service.h
+++ b/chrome/browser/long_screenshots/long_screenshots_tab_service.h
@@ -126,6 +126,7 @@
 
   const re2::RE2 google_amp_cache_path_regex_;
   const re2::RE2 google_amp_viewer_path_regex_;
+  const re2::RE2 google_news_path_regex_;
 
   base::ScopedClosureRunner capture_handle_;
   base::android::ScopedJavaGlobalRef<jobject> java_ref_;
diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service_unittest.cc b/chrome/browser/long_screenshots/long_screenshots_tab_service_unittest.cc
index e9106004..b3b1198d 100644
--- a/chrome/browser/long_screenshots/long_screenshots_tab_service_unittest.cc
+++ b/chrome/browser/long_screenshots/long_screenshots_tab_service_unittest.cc
@@ -312,10 +312,12 @@
   GURL amp_url("https://www.google.com/amp/s/example");
   GURL amp_cahe_url(
       "https://www-example-com.cdn.ampproject.org/c/www.example.com");
+  GURL google_news_url("https://news.google.com/articles/foo");
   GURL non_amp_url("https://foo.com/amp/bar/");
 
   ASSERT_TRUE(TabService_IsAmpUrl(amp_url));
   ASSERT_TRUE(TabService_IsAmpUrl(amp_cahe_url));
+  ASSERT_TRUE(TabService_IsAmpUrl(google_news_url));
   ASSERT_FALSE(TabService_IsAmpUrl(non_amp_url));
 
   auto* rfh = main_rfh();
diff --git a/chrome/browser/metrics/chrome_metrics_service_accessor.h b/chrome/browser/metrics/chrome_metrics_service_accessor.h
index a649d61..62ce6fc 100644
--- a/chrome/browser/metrics/chrome_metrics_service_accessor.h
+++ b/chrome/browser/metrics/chrome_metrics_service_accessor.h
@@ -16,6 +16,7 @@
 #include "components/metrics/metrics_service_accessor.h"
 #include "ppapi/buildflags/buildflags.h"
 
+class BreadcrumbsStatus;
 class ChromeMetricsServiceClient;
 class ChromePasswordManagerClient;
 class HttpsFirstModeService;
@@ -115,6 +116,7 @@
   friend class autofill_assistant::ClientAndroid;
   friend class ::CrashesDOMHandler;
   friend class ::FlashDOMHandler;
+  friend class BreadcrumbsStatus;
   friend class ChromeBrowserFieldTrials;
   // For ClangPGO.
   friend class ChromeBrowserMainExtraPartsMetrics;
diff --git a/chrome/browser/page_load_metrics/observers/README.md b/chrome/browser/page_load_metrics/observers/README.md
new file mode 100644
index 0000000..99ebe5b
--- /dev/null
+++ b/chrome/browser/page_load_metrics/observers/README.md
@@ -0,0 +1,323 @@
+# Tracking Page Load Metrics In Chrome: Implementing a PageLoadMetricsObserver
+
+Page load metrics can be tracked in chromium by implementing the
+[`PageLoadMetricsObserver`](/components/page_load_metrics/browser/page_load_metrics_observer.h)
+interface, which provides callbacks that indicate when various paint, document,
+and user interaction events happen during the course of a page load.
+
+This document provides a detailed guide to implementing a `PageLoadMetricsObserver`.
+For a quick introduction, you may wish to read the [implementation basics](#implementation-basics)
+section below, browse the [`PageLoadMetricsObserver`](/components/page_load_metrics/browser/page_load_metrics_observer.h)
+interface, and look over [existing `PageLoadMetricsObserver` implementations](/chrome/browser/page_load_metrics/observers/).
+
+`PageLoadMetricsObserver`s can track [web vitals](https://web.dev/vitals/) like time to [Largest Contentful Paint](https://web.dev/lcp) and other per-page metrics such as time to first user input in [UMA](/tools/metrics/histograms/README.md) or [UKM](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/services/metrics/ukm_api.md).
+
+You can implement a `PageLoadMetricsObserver` to:
+
+* Filter per-page metrics to a subset of page loads
+  relevant to you or your team. Example: [`DataSaverSiteBreakdownMetricsObserver`](data_saver_site_breakdown_metrics_observer.cc)
+* Track new page load related metrics not already included in the core page load metrics.
+  Example: [`HttpsEngagementPageLoadMetricsObserver`](https_engagement_metrics/https_engagement_page_load_metrics_observer.cc)
+* Provide page load metrics to another Chrome component.
+  Example: [`AndroidPageLoadMetricsObserver`](android_page_load_metrics_observer.cc)
+
+[TOC]
+
+If you have additional questions or needs not covered in this document,
+please contact speed-metrics-dev@chromium.org.
+
+## Key Concepts: Navigations, provisional loads, committed loads
+The rest of this document assumes familiarity with the page load lifecycle in
+Chrome. Key concepts are explained briefly here:
+
+* A page load, or just “load”, is considered “provisional” during the period
+  from when its navigation starts (roughly, when the request is sent) until the
+  navigation either fails or commits.
+* A navigation “commits” when the first response bytes (post-redirect, if any)
+  are processed in the renderer. A load is considered “committed” during the
+  period starting when its navigation commits, until another navigation in the
+  frame commits and replaces it, or until the hosting frame is destroyed.
+* A navigation fails when the response is not successfully received over the
+  network. For example, a navigation may fail because hostname resolution fails,
+  or because establishing a connection to the server fails, among other reasons.
+* There can be at most one committed load in a frame at any given time.
+* There is typically at most one provisional load in a frame at any given time,
+  though there can be two provisional page loads in a frame in uncommon cases.
+
+For more detailed information, see the comments in the navigation section of
+[`WebContentsObserver`](https://source.chromium.org/chromium/chromium/src/+/main:content/public/browser/web_contents_observer.h?q=file:web_contents_observer.h%20%22%2F%2F%20Navigation%20---%22&ss=chromium),
+as well as the navigation-related entries in
+[Truths and Not Truths](https://docs.google.com/document/d/1UyF1sBxXmRC0MQ7MBcQdkFWJ4IgJQMw_t8qWzjtpY0g/edit).
+
+## PageLoadMetricsObserver lifetime
+
+Page load metrics are tracked by implementing the `PageLoadMetricsObserver`
+interface. A new instance of each `PageLoadMetricsObserver` implementation is
+instantiated for each page load. `PageLoadMetricsObserver` instances are created
+and owned by the page load metrics infrastructure. A `PageLoadMetricsObserver`’s
+lifetime starts when a main frame navigation is initiated, and ends when one of
+the following cases is encountered:
+
+* The hosting `WebContents` (a `WebContents` is essentially a browser tab) is destroyed
+* The navigation fails to commit
+* Another navigation in the frame commits and replaces the committed load, for page loads that committed (note: the documentation needs to be updated here for bfcache).
+
+### Example: `PageLoadMetricsObserver` lifetimes, for a WebContents with 3 page loads
+
+![PageLoadMetricsObserver lifetimes, for a WebContents with 3 page loads](observer-lifetime.png)
+
+Above, we show example `PageLoadMetricsObserver` (PLMO) lifetimes for a
+`WebContents` with three main-frame navigations, shown in blue, green, and
+yellow, with time starting on the left, and ending on the right.
+* The PLMO for the first navigation in the `WebContents`, in blue, is
+  instantiated when its navigation starts, and is destroyed when the next
+  navigation in the `WebContents` commits (the yellow load).
+* The PLMO for the second navigation, in green, is instantiated when its
+  navigation starts, and is destroyed when its navigation fails to commit.
+  Because the green navigation fails to commit, the lifetime of the PLMO for the
+  blue load is not affected by this navigation.
+* The PLMO for the third navigation, in yellow, is instantiated when its
+  navigation starts, and is destroyed when the `WebContents` is closed. The
+  commit of the yellow navigation causes the PLMO for the previously committed
+  load, in blue, to be destroyed.
+
+`PageLoadMetricsObserver` lifetimes within a `WebContents` often overlap. In
+particular, if there is a committed load in a `WebContents`, the lifetime of its
+associated `PageLoadMetricsObserver` overlaps with the lifetime of subsequent
+navigations, for the period from the subsequent load’s navigation start until
+the next navigation commits. We see this for the blue and yellow loads in the
+example above.
+
+### `PageLoadMetricsObserver` callback life cycle
+
+* A `PageLoadMetricsObserver` (PLMO) implementation is instantiated when a
+  navigation starts. At this time, the `OnStart` callback is invoked.
+* `OnRedirect` may be invoked one or more times, for each server-side redirect.
+  Note that content-triggered redirects, such as meta refreshes or a JS-based
+  navigations, are separate distinct page loads, and do not cause `OnRedirect`
+  to be invoked.
+* When the navigation finishes:
+  * If the navigation commits:
+    * If it does not meet the additional filtering criteria applied at commit
+      time, no subsequent callbacks are invoked, and the PLMO is destroyed
+    * Otherwise, `OnCommit` is invoked
+  * If the navigation did not commit successfully, `OnFailedProvisionalLoad` is
+    invoked, and the PLMO is destroyed.
+* Finally, for page loads that committed, the `OnComplete` callback is invoked
+  just before the PLMO is destroyed (due to e.g. a new page load committing, the
+  associated `WebContents` being destroyed, etc).
+
+Returning to the example above, callbacks are invoked in the following order:
+
+* Blue navigation starts. `PageLoadMetricsObserver`s for the blue load are
+  instantiated, and `OnStart` is invoked on them.
+* Blue navigation commits. `OnCommit` is invoked for the blue load’s PLMOs.
+* Green navigation starts. PLMOs for the green load are instantiated, and
+  `OnStart` is invoked for them.
+* Green navigation fails to commit. `OnFailedProvisionalLoad` is invoked for the
+  green load’s PLMOs. PLMOs for the green navigation are then destroyed.
+* Yellow navigation starts. PLMOs for the yellow navigation are instantiated,
+  and `OnStart` is invoked on them.
+* Yellow navigation commits. `OnComplete` is invoked for the blue load’s PLMOs.
+  `OnCommit` is then invoked for the yellow load’s PLMOs.
+* The hosting tab is destroyed. `OnComplete` is invoked for the yellow load’s PLMOs.
+
+Additionally, the following callbacks may be invoked during the lifetime of a
+`PageLoadMetricsObserver`:
+
+* At any time (either before or after commit):
+  * `OnHidden` and `OnShown` are invoked as the associated `WebContents` is
+    hidden or shown (e.g. when the user switches tabs).
+  * On Android, if the Chrome application is backgrounded, the
+    `FlushMetricsOnAppEnterBackground` callback is invoked to signal to
+    observers that any metrics buffered in memory should be persisted. Once
+    `FlushMetricsOnAppEnterBackground` is invoked, the application may be killed
+    without subsequent notification. Note that `FlushMetricsOnAppEnterBackground`
+    may be invoked multiple times for a single page load if Chrome transitions
+    from the foreground to background to foreground to background without being
+    killed. Note that this callback is only invoked if the entire Chrome
+    application is backgrounded. It is not invoked if the user e.g. switches
+    between tabs within Chrome.
+  * `OnLoadedResource` is invoked as each resource on the page finishes loading.
+* After the load commits:
+  * Page load timing callbacks, such as `OnFirstContentfulPaint` are invoked as
+    the associated page load timing events occur.
+  * `OnUserInput` is invoked as user input events are received.
+  * `OnLoadingBehaviorObserved` is invoked as certain page loading behaviors are
+    observed. See the section on loading behaviors below for additional information.
+
+## Which page loads are tracked by `PageLoadMetricsObserver`s?
+
+Only provisional loads that meet the following criteria are tracked:
+
+* Main frame page loads (page load timing and metadata updates are collected for
+  child frames and reported to observers for the main frame, as long as the main
+  frame meets all other tracking criteria)
+* Pages with HTTP or HTTPS URLs
+* Non-New Tab Page URLs (on desktop, the NTP may be served over HTTPS. These
+  loads are not tracked)
+* Non same-page navigations (e.g. navigations using pushState, or using a
+  #fragment within the same document are not tracked).
+
+In addition, when a load commits, additional criteria are applied at commit time.
+Only page loads that meet the earlier provisional criteria, as well as the
+following criteria at commit time, are tracked after commit:
+
+* Page loads that do not result in displaying a Chrome-generated error page
+  (e.g. the ‘There is no Internet connection’ page is not tracked)
+* Pages with successful HTTP status codes (4xx and 5xx responses are not tracked)
+* HTML or XHTML pages
+
+Note that the provisional criteria is applied again at commit time, as navigation
+attributes such as the URL may have changed between the time a provisional load
+is started and the time it commits.
+
+Loads that finish and received HTTP response headers but did not commit do _not_
+invoke the `OnFailedProvisionalLoad` callback. These are special case
+navigations, such as downloads and HTTP 204/205 responses, which complete
+successfully but do not result in a committed load.
+
+If a page load is filtered due to the above criteria, no subsequent callbacks
+will be invoked for the associated `PageLoadMetricsObservers` for that page load.
+
+Because not every load meets the commit-time criteria, some
+`PageLoadMetricsObserver`s will see calls to `OnStart` and `OnRedirect` but no
+other callbacks.
+
+We intend to allow teams to add custom `PageLoad` UMA metrics that relax these
+constraints as needed. For instance, we could add support for tracking just NTP
+loads, or chrome:// URLs. If you are interested in tracking metrics using a
+different set of constraints, please reach out to speed-metrics-dev@chromium.org.
+
+## Best practices
+
+### Implementation basics
+* Header, implementation, and unit tests for new observers should be added to
+  the [chrome/browser/page_load_metrics/observers/](/chrome/browser/page_load_metrics/observers/) directory.
+* You may wish to add browser tests to [page_load_metrics_browsertest.cc](/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc).
+* Instantiate your observer in the `PageLoadMetricsEmbedder::RegisterObservers`
+  method in [page_load_metrics_initialize.cc](/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc).
+* Add definitions for any new histograms into a file in [tools/metrics/histograms/metadata/](/tools/metrics/histograms/metadata/).
+  If your histograms are specific to page load, you can add them to
+  [page/histograms.xml](/tools/metrics/histograms/metadata/page/histograms.xml)
+* Send your change to OWNERS for review.
+* Reach out to speed-metrics-dev@chromium.org at any time if you have questions.
+
+See https://chromium-review.googlesource.com/c/chromium/src/+/2294392 for an
+example end-to-end change that adds a new `PageLoadMetricsObserver`.
+
+### Filtering out backgrounded pages
+
+By default, page loads that spend time in the background during the period
+between navigation start and an event occurring are not included in core page
+load metrics. Backgrounded pages are often throttled and thus their metrics can
+be less useful/actionable for understanding page load performance.
+
+For instance, the `PageLoad.PaintTiming.NavigationToFirstContentfulPaint` UMA
+only includes samples for page loads that were in the foreground for the entire
+period from navigation to first contentful paint. Page loads that were in the
+background for any period of time between navigation start and first contentful
+paint are excluded.
+
+Thus, it is recommended that observers not record samples for metrics that occur
+when a page load is in the background.
+
+An observer that does not want to track any metrics for events that occur after
+the page has been backgrounded can implement `OnHidden` to return `STOP_OBSERVING`,
+and OnStart to return `STOP_OBSERVING` if the `started_in_foreground` parameter
+is false.
+
+Observers that track some background metrics can determine if an event happened
+completely in the foreground using the `WasStartedInForegroundOptionalEventInForeground`
+method. See existing page load metrics observer implementations for examples.
+
+Observers that wish to track metrics for pages that spend time in the background
+can log metrics for those cases by checking that
+`WasStartedInForegroundOptionalEventInForeground` returns false, and using a
+separate histogram with a `.Background` suffix. For example,
+`PageLoad.PaintTiming.NavigationToFirstContentfulPaint.Background` includes page
+loads that were in the background at some point in time between navigation start
+and first contentful paint. In practice, we have not found `.Background`
+histograms to be very useful, other than to track the percentage of page loads
+that spend time in the background. Observers are discouraged from logging
+background histograms unless there is a clear reason to do so.
+
+### Choosing UMA histogram names
+
+Most observers add their histograms under the `PageLoad.Clients.*` prefix. For
+example, `PageLoad.Clients.DataReductionProxy.PaintTiming.NavigationToFirstContentfulPaint`
+tracks `PageLoad.PaintTiming.NavigationToFirstContentfulPaint` for the subset of
+page loads loaded through the data reduction proxy. It is recommended that
+observers add metrics under `PageLoad.Clients`, as this allows other UMA users
+to more easily discover these metrics while browsing metrics with the
+`PageLoad.*` prefix.
+
+If your metrics are not likely to be useful to other UMA users interested in
+page load metrics, you may wish to use a different naming scheme for your
+metrics. If you have questions, reach out to speed-metrics-dev@chromium.org.
+
+### Avoiding data loss by flushing metrics when Chrome is backgrounded
+On the Android platform, once the Chrome application goes into the background,
+it may be killed without subsequent notification. To avoid data loss, observers
+that buffer metric information in memory may wish to implement the
+`FlushMetricsOnAppEnterBackground` callback to persist metrics when Chrome goes
+into the background.
+
+Considerations
+* Observers that implement the `OnComplete` callback should consider also
+  implementing the `FlushMetricsOnAppEnterBackground` callback.
+* Observers that implement `FlushMetricsOnAppEnterBackground` may also receive
+  an `OnComplete` callback.
+* `FlushMetricsOnAppEnterBackground` may be invoked multiple times for a single
+  page load if Chrome transitions from the foreground to background to foreground
+  to background without being killed.
+
+## `PageLoadMetricsObserver` examples
+
+### Performing additional filtering of page loads
+
+Observers that wish to avoid tracking metrics for some page loads can do so by
+returning `ObservePolicy::STOP_OBSERVING` from observer callbacks that return an
+`ObservePolicy`. For example, an observer that wishes to only track metrics for
+page loads that match certain criteria at commit, such as the hostname of the
+committed URL, can implement the `OnCommit` callback. If an observer returns
+`STOP_OBSERVING`, no subsequent callbacks will be invoked on the observer.
+
+[SignedExchangePageLoadMetricsObserver](/chrome/browser/page_load_metrics/observers/signed_exchange_page_load_metrics_observer.cc)
+is an observer that performs page load filtering in the OnCommit callback,
+tracking only page loads for signed exchanges.
+
+Considerations
+* You should get approval from Chrome privacy team before tracking page loads filtered by URL.
+
+### Tracking page loads with certain attributes in Blink (loading behaviors)
+
+`PageLoadMetricsObserver`s that want to track pages with certain attributes known in Blink, for example, whether the page is service worker controlled or whether the page loaded a parser blocking script inserted via `document.write`, can do so using loading behaviors in the `WebLoadingBehaviorFlag` Blink public enum.
+
+To track pages with a certain loading behavior, a `PageLoadMetricsObserver` can implement the `OnLoadingBehaviorObserved` callback, or check the `metadata.behavior_flags` field of the `PageLoadExtraInfo` structure that is passed to various `PageLoadMetricsObserver` callbacks.
+
+[`ServiceWorkerPageLoadMetricsObserver`](service_worker_page_load_metrics_observer.cc) is an observer that tracks metrics for page loads that are controlled by a service worker, as indicated by the `WebLoadingBehaviorServiceWorkerControlled` loading behavior flag.
+
+Considerations
+
+* Loading behaviors may be observed part way through a page load, potentially after events interesting to your observer. For example, the `WebLoadingBehaviorDocumentWriteBlock` loading behavior may be observed after first contentful paint occurs.
+* Observers that wish to log timing events for page loads where the loading event is observed after events interesting to your observer need to add logging logic in both the callback for that event, as well as in the `OnLoadingBehaviorObserved` callback.
+* Observers that only want to log histograms for page loads where events occurred after the given loading behavior was observed (in other words, page loads where the timing of the event may have been affected by the given loading behavior), should only log in the associated timing callback, and not log in `OnLoadingBehaviorObserved`. [`DocumentWritePageLoadMetricsObserver`](document_write_page_load_metrics_observer.cc) is an observer that uses this logging strategy.
+
+If your observer wants to track a new loading behavior, you can add it to the `WebLoadingBehaviorFlag` enum and add instrumentation in Blink to notify the page load metrics infrastructure when the new loading behavior is observed. See the changes to `FrameLoader.cpp` in [this change](https://codereview.chromium.org/1871393002) for an example change that adds instrumentation to track a new loading behavior.
+
+### Tracking aborted page loads
+
+Observers can track aborted page loads. A page load abort occurs when some event occurs that causes the page load to be terminated. Note that page load abort tracking is somewhat experimental and is subject to change.
+
+Aborts can occur before or after commit. Observers can track aborts that happen before commit by implementing the OnFailedProvisionalLoad callback, and aborts that happen after commit by implementing the OnComplete callback. The current convention is to log aborts that occur before commit using the ‘.BeforeCommit’ histogram suffix, and after commit using a suffix such as ‘.AfterCommit.BeforePaint’.
+
+To determine whether an abort occurred, observers should check whether the abort_type field of the PageLoadExtraInfo structure has a value other than ABORT_NONE. The time until the page load was aborted is available in the time_to_abort field of the PageLoadExtraInfo structure.
+
+[`AbortsPageLoadMetricsObserver`](aborts_page_load_metrics_observer.cc) is an observer that tracks page load abort metrics.
+
+### Aggregating statistics across multiple page loads
+
+Some observer implementers may wish to track statistics aggregated across multiple page loads. Since a `PageLoadMetricsObserver`’s lifetime is bound to a single page load, a separate object with a longer lifetime must be used to track these statistics.
+
+[`HttpsEngagementPageLoadMetricsObserver`](https_engagement_metrics/https_engagement_page_load_metrics_observer.cc) is an observer that tracks statistics aggregated across page loads. The observer forwards information about a page load to the [`HttpsEngagementService`](https_engagement_metrics/https_engagement_service.h), which is responsible for aggregating statistics and logging aggregated metrics.
diff --git a/chrome/browser/page_load_metrics/observers/observer-lifetime.png b/chrome/browser/page_load_metrics/observers/observer-lifetime.png
new file mode 100644
index 0000000..2efcc89
--- /dev/null
+++ b/chrome/browser/page_load_metrics/observers/observer-lifetime.png
Binary files differ
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackend.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackend.java
index d5170c0..7c69c4ee 100644
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackend.java
+++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackend.java
@@ -22,6 +22,25 @@
             errorCode = error;
         }
     }
+
+    /**
+     * Subscribes to notifications from the downstream implementation.
+     *
+     * @param successCallback Callback that is called on success.
+     * @param failureCallback A callback that is called on failure for any reason. May return sync.
+     * TODO(crbug.com/1278767): Remove default keyword after downstream implementation.
+     */
+    default void subscribe(Runnable successCallback, Callback<Exception> failureCallback){};
+
+    /**
+     * Unsubscribes from notifications from the downstream implementation.
+     *
+     * @param successCallback Callback that is called on success.
+     * @param failureCallback A callback that is called on failure for any reason. May return sync.
+     * TODO(crbug.com/1278767): Remove default keyword after downstream implementation.
+     */
+    default void unsubscribe(Runnable successCallback, Callback<Exception> failureCallback){};
+
     /**
      * Triggers an async list call to retrieve all logins.
      *
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.cc b/chrome/browser/password_manager/android/password_store_android_backend.cc
index 3f78cd3..74ea04c 100644
--- a/chrome/browser/password_manager/android/password_store_android_backend.cc
+++ b/chrome/browser/password_manager/android/password_store_android_backend.cc
@@ -99,10 +99,12 @@
 
 void ValidateSignonRealm(const PasswordFormDigest& form_digest_to_match,
                          bool include_psl,
-                         LoginsReply callback,
+                         LoginsOrErrorReply callback,
                          LoginsResultOrError logins_or_error) {
-  if (absl::holds_alternative<PasswordStoreBackendError>(logins_or_error))
-    std::move(callback).Run({});
+  if (absl::holds_alternative<PasswordStoreBackendError>(logins_or_error)) {
+    std::move(callback).Run(std::move(logins_or_error));
+    return;
+  }
   LoginsResult retrieved_logins =
       std::move(absl::get<LoginsResult>(logins_or_error));
   LoginsResult matching_logins;
@@ -119,9 +121,14 @@
   std::move(callback).Run(std::move(matching_logins));
 }
 
-LoginsResult JoinRetrievedLogins(std::vector<LoginsResult> results) {
+LoginsResultOrError JoinRetrievedLoginsOrError(
+    std::vector<LoginsResultOrError> results) {
   LoginsResult joined_logins;
-  for (auto& logins : results) {
+  for (auto& result : results) {
+    // If one of retrievals ended with an error, pass on the error.
+    if (absl::holds_alternative<PasswordStoreBackendError>(result))
+      return std::move(result);
+    LoginsResult logins = std::move(absl::get<LoginsResult>(result));
     std::move(logins.begin(), logins.end(), std::back_inserter(joined_logins));
   }
   return joined_logins;
@@ -340,8 +347,8 @@
 
   // Create a barrier callback that aggregates results of a multiple
   // calls to GetLoginsAsync.
-  auto barrier_callback = base::BarrierCallback<LoginsResult>(
-      forms.size(), base::BindOnce(&JoinRetrievedLogins)
+  auto barrier_callback = base::BarrierCallback<LoginsResultOrError>(
+      forms.size(), base::BindOnce(&JoinRetrievedLoginsOrError)
                         .Then(std::move(record_metrics_and_reply)));
 
   // Create and run a callbacks chain that retrieves logins and invokes
@@ -405,9 +412,10 @@
 
   // Create a barrier callback that aggregates results of a multiple
   // calls to RemoveLoginAsync.
-  auto barrier_callback = base::BarrierCallback<PasswordStoreChangeList>(
-      logins_to_remove.size(),
-      base::BindOnce(&JoinPasswordStoreChanges).Then(std::move(reply)));
+  auto barrier_callback =
+      base::BarrierCallback<absl::optional<PasswordStoreChangeList>>(
+          logins_to_remove.size(),
+          base::BindOnce(&JoinPasswordStoreChanges).Then(std::move(reply)));
 
   // Create and run the callback chain that removes the logins.
   base::RepeatingClosure callbacks_chain = base::DoNothing();
@@ -426,13 +434,19 @@
     base::Time delete_end,
     base::OnceCallback<void(bool)> sync_completion,
     PasswordStoreChangeListReply callback) {
+  // Record metrics prior to invoking |callback|.
+  PasswordStoreChangeListReply record_metrics_and_reply =
+      ReportMetricsAndInvokeCallbackForStoreModifications(
+          MetricInfix("RemoveLoginsByURLAndTimeAsync"), std::move(callback));
+
   JobId get_logins_job_id = bridge_->GetAllLogins();
   QueueNewJob(
       get_logins_job_id,
       JobReturnHandler(
           base::BindOnce(&PasswordStoreAndroidBackend::FilterAndRemoveLogins,
                          weak_ptr_factory_.GetWeakPtr(), std::move(url_filter),
-                         delete_begin, delete_end, std::move(callback)),
+                         delete_begin, delete_end,
+                         std::move(record_metrics_and_reply)),
           MetricsRecorder(MetricInfix("GetAllLoginsAsync"))));
 }
 
@@ -440,6 +454,11 @@
     base::Time delete_begin,
     base::Time delete_end,
     PasswordStoreChangeListReply callback) {
+  // Record metrics prior to invoking |callback|.
+  PasswordStoreChangeListReply record_metrics_and_reply =
+      ReportMetricsAndInvokeCallbackForStoreModifications(
+          MetricInfix("RemoveLoginsCreatedBetweenAsync"), std::move(callback));
+
   JobId get_logins_job_id = bridge_->GetAllLogins();
   QueueNewJob(
       get_logins_job_id,
@@ -448,7 +467,8 @@
                          weak_ptr_factory_.GetWeakPtr(),
                          // Include all urls.
                          base::BindRepeating([](const GURL&) { return true; }),
-                         delete_begin, delete_end, std::move(callback)),
+                         delete_begin, delete_end,
+                         std::move(record_metrics_and_reply)),
           MetricsRecorder(MetricInfix("GetAllLoginsAsync"))));
 }
 
@@ -490,7 +510,7 @@
 
 void PasswordStoreAndroidBackend::OnLoginsChanged(
     JobId job_id,
-    const PasswordStoreChangeList& changes) {
+    absl::optional<PasswordStoreChangeList> changes) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(main_sequence_checker_);
   JobReturnHandler reply = GetAndEraseJob(job_id);
   reply.RecordMetrics(/*error=*/absl::nullopt);
@@ -543,7 +563,7 @@
 
 void PasswordStoreAndroidBackend::GetLoginsAsync(const PasswordFormDigest& form,
                                                  bool include_psl,
-                                                 LoginsReply callback) {
+                                                 LoginsOrErrorReply callback) {
   JobId job_id = bridge_->GetLoginsForSignonRealm(
       FormToSignonRealmQuery(form, include_psl));
   QueueNewJob(job_id, JobReturnHandler(
@@ -556,6 +576,8 @@
 PasswordStoreAndroidBackend::ReportMetricsAndInvokeCallbackForLoginsRetrieval(
     const MetricInfix& metric_infix,
     LoginsReply callback) {
+  // TODO(https://crbug.com/1229655) Switch to using base::PassThrough to handle
+  // this callback more gracefully when it's implemented.
   return base::BindOnce(
       [](MetricsRecorder metrics_recorder, LoginsReply callback,
          LoginsResultOrError results) {
@@ -569,4 +591,24 @@
       MetricsRecorder(metric_infix), std::move(callback));
 }
 
+PasswordStoreChangeListReply PasswordStoreAndroidBackend::
+    ReportMetricsAndInvokeCallbackForStoreModifications(
+        const MetricInfix& metric_infix,
+        PasswordStoreChangeListReply callback) {
+  // TODO(https://crbug.com/1229655) Switch to using base::PassThrough to handle
+  // this callback more gracefully when it's implemented.
+  return base::BindOnce(
+      [](MetricsRecorder metrics_recorder,
+         PasswordStoreChangeListReply callback,
+         absl::optional<PasswordStoreChangeList> results) {
+        // Errors are not recorded at the moment. This should be implemented
+        // in the future, when actual store changes will be received from the
+        // store modifying operations.
+        metrics_recorder.RecordMetrics(/*success=*/true,
+                                       /*error=*/absl::nullopt);
+        std::move(callback).Run(std::move(results));
+      },
+      MetricsRecorder(metric_infix), std::move(callback));
+}
+
 }  // namespace password_manager
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.h b/chrome/browser/password_manager/android/password_store_android_backend.h
index 9d8acf5..6f3360e 100644
--- a/chrome/browser/password_manager/android/password_store_android_backend.h
+++ b/chrome/browser/password_manager/android/password_store_android_backend.h
@@ -193,8 +193,9 @@
   // Implements PasswordStoreAndroidBackendBridge::Consumer interface.
   void OnCompleteWithLogins(PasswordStoreAndroidBackendBridge::JobId job_id,
                             std::vector<PasswordForm> passwords) override;
-  void OnLoginsChanged(PasswordStoreAndroidBackendBridge::JobId task_id,
-                       const PasswordStoreChangeList& changes) override;
+  void OnLoginsChanged(
+      PasswordStoreAndroidBackendBridge::JobId task_id,
+      absl::optional<PasswordStoreChangeList> changes) override;
   void OnError(PasswordStoreAndroidBackendBridge::JobId job_id,
                AndroidBackendError error) override;
 
@@ -207,7 +208,7 @@
   // Gets logins matching |form|.
   void GetLoginsAsync(const PasswordFormDigest& form,
                       bool include_psl,
-                      LoginsReply callback);
+                      LoginsOrErrorReply callback);
 
   // Filters |logins| created between |delete_begin| and |delete_end| time
   // that match |url_filer| and asynchronously removes them.
@@ -225,6 +226,14 @@
       const MetricInfix& metric_infix,
       LoginsReply callback);
 
+  // Creates a metrics recorder that records latency and success metrics for
+  // store modification operation with |metric_infix| name prior to
+  // calling |callback|.
+  PasswordStoreChangeListReply
+  ReportMetricsAndInvokeCallbackForStoreModifications(
+      const MetricInfix& metric_infix,
+      PasswordStoreChangeListReply callback);
+
   // Observer to propagate remote form changes to.
   RemoteChangesReceived remote_form_changes_received_;
 
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_bridge.h b/chrome/browser/password_manager/android/password_store_android_backend_bridge.h
index a49944d..edcee0f 100644
--- a/chrome/browser/password_manager/android/password_store_android_backend_bridge.h
+++ b/chrome/browser/password_manager/android/password_store_android_backend_bridge.h
@@ -44,8 +44,9 @@
     // corresponding call to `PasswordStoreAndroidBackendBridge`, and with the
     // PasswordStoreChangeList.
     // Used in response to 'AddLogin', 'UpdateLogin' and `RemoveLogin`.
-    virtual void OnLoginsChanged(JobId job_id,
-                                 const PasswordStoreChangeList& changes) = 0;
+    virtual void OnLoginsChanged(
+        JobId job_id,
+        absl::optional<PasswordStoreChangeList> changes) = 0;
 
     // Asynchronous response called with the `job_id` which was passed to the
     // corresponding call to `PasswordStoreAndroidBackendBridge`.
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc b/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc
index 57a71b27..53f7f51 100644
--- a/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc
+++ b/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc
@@ -24,6 +24,7 @@
 using testing::_;
 using testing::ElementsAre;
 using testing::Eq;
+using testing::Optional;
 using testing::Return;
 using testing::StrictMock;
 using testing::WithArg;
@@ -285,13 +286,14 @@
   PasswordStoreChangeList expected_changes;
   expected_changes.emplace_back(
       PasswordStoreChange(PasswordStoreChange::REMOVE, form));
-  EXPECT_CALL(mock_reply, Run(expected_changes));
+  EXPECT_CALL(mock_reply, Run(Optional(expected_changes)));
   consumer().OnLoginsChanged(kJobId, expected_changes);
   RunUntilIdle();
 }
 
 TEST_F(PasswordStoreAndroidBackendTest,
        CallsBridgeForRemoveLoginsByURLAndTime) {
+  base::HistogramTester histogram_tester;
   backend().InitBackend(PasswordStoreAndroidBackend::RemoteChangesReceived(),
                         base::RepeatingClosure(), base::DoNothing());
   base::MockCallback<PasswordStoreChangeListReply> mock_deletion_reply;
@@ -299,6 +301,13 @@
       [](const GURL& url) { return url == GURL(kTestUrl); });
   base::Time delete_begin = base::Time::FromTimeT(1000);
   base::Time delete_end = base::Time::FromTimeT(2000);
+  constexpr auto kLatencyDelta = base::Milliseconds(123u);
+  const char kDurationMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend."
+      "RemoveLoginsByURLAndTimeAsync.Latency";
+  const char kSuccessMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend."
+      "RemoveLoginsByURLAndTimeAsync.Success";
 
   // Check that calling RemoveLoginsByURLAndTime triggers logins retrieval
   // first.
@@ -321,23 +330,39 @@
   consumer().OnCompleteWithLogins(kGetLoginsJobId,
                                   {form_to_delete, form_to_keep});
   RunUntilIdle();
+  task_environment_.FastForwardBy(kLatencyDelta);
 
   // Verify that the callback is called.
   PasswordStoreChangeList expected_changes;
   expected_changes.emplace_back(
       PasswordStoreChange(PasswordStoreChange::REMOVE, form_to_delete));
-  EXPECT_CALL(mock_deletion_reply, Run(expected_changes));
+  EXPECT_CALL(mock_deletion_reply, Run(Optional(expected_changes)));
   consumer().OnLoginsChanged(kRemoveLoginJobId, expected_changes);
   RunUntilIdle();
+
+  histogram_tester.ExpectTimeBucketCount(kDurationMetric, kLatencyDelta, 1);
+  histogram_tester.ExpectBucketCount(kSuccessMetric, 1, 1);
+
+  // Check that other values are not recorded.
+  histogram_tester.ExpectTotalCount(kDurationMetric, 1);
+  histogram_tester.ExpectTotalCount(kSuccessMetric, 1);
 }
 
 TEST_F(PasswordStoreAndroidBackendTest,
        CallsBridgeForRemoveLoginsCreatedBetween) {
+  base::HistogramTester histogram_tester;
   backend().InitBackend(PasswordStoreAndroidBackend::RemoteChangesReceived(),
                         base::RepeatingClosure(), base::DoNothing());
   base::MockCallback<PasswordStoreChangeListReply> mock_deletion_reply;
   base::Time delete_begin = base::Time::FromTimeT(1000);
   base::Time delete_end = base::Time::FromTimeT(2000);
+  constexpr auto kLatencyDelta = base::Milliseconds(123u);
+  const char kDurationMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend."
+      "RemoveLoginsCreatedBetweenAsync.Latency";
+  const char kSuccessMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend."
+      "RemoveLoginsCreatedBetweenAsync.Success";
 
   // Check that calling RemoveLoginsCreatedBetween triggers logins retrieval
   // first.
@@ -358,14 +383,22 @@
   consumer().OnCompleteWithLogins(kGetLoginsJobId,
                                   {form_to_delete, form_to_keep});
   RunUntilIdle();
+  task_environment_.FastForwardBy(kLatencyDelta);
 
   // Verify that the callback is called.
   PasswordStoreChangeList expected_changes;
   expected_changes.emplace_back(
       PasswordStoreChange(PasswordStoreChange::REMOVE, form_to_delete));
-  EXPECT_CALL(mock_deletion_reply, Run(expected_changes));
+  EXPECT_CALL(mock_deletion_reply, Run(Optional(expected_changes)));
   consumer().OnLoginsChanged(kRemoveLoginJobId, expected_changes);
   RunUntilIdle();
+
+  histogram_tester.ExpectTimeBucketCount(kDurationMetric, kLatencyDelta, 1);
+  histogram_tester.ExpectBucketCount(kSuccessMetric, 1, 1);
+
+  // Check that other values are not recorded.
+  histogram_tester.ExpectTotalCount(kDurationMetric, 1);
+  histogram_tester.ExpectTotalCount(kSuccessMetric, 1);
 }
 
 TEST_F(PasswordStoreAndroidBackendTest, CallsBridgeForAddLogin) {
@@ -382,7 +415,7 @@
   PasswordStoreChangeList expected_changes;
   expected_changes.emplace_back(
       PasswordStoreChange(PasswordStoreChange::ADD, form));
-  EXPECT_CALL(mock_reply, Run(expected_changes));
+  EXPECT_CALL(mock_reply, Run(Optional(expected_changes)));
   consumer().OnLoginsChanged(kJobId, expected_changes);
   RunUntilIdle();
 }
@@ -401,7 +434,7 @@
   PasswordStoreChangeList expected_changes;
   expected_changes.emplace_back(
       PasswordStoreChange(PasswordStoreChange::UPDATE, form));
-  EXPECT_CALL(mock_reply, Run(expected_changes));
+  EXPECT_CALL(mock_reply, Run(Optional(expected_changes)));
   consumer().OnLoginsChanged(kJobId, expected_changes);
   RunUntilIdle();
 }
@@ -611,6 +644,51 @@
   }
 }
 
+TEST_P(PasswordStoreAndroidBackendTestForMetrics,
+       GetAutofillableLoginsAsyncMetrics) {
+  base::HistogramTester histogram_tester;
+  backend().InitBackend(
+      PasswordStoreAndroidBackend::RemoteChangesReceived(),
+      /*sync_enabled_or_disabled_cb=*/base::RepeatingClosure(),
+      /*completion=*/base::DoNothing());
+  constexpr auto kLatencyDelta = base::Milliseconds(123u);
+  constexpr JobId kJobId{1337};
+  const char kDurationMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend.GetAutofillableLoginsAsync."
+      "Latency";
+  const char kSuccessMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend.GetAutofillableLoginsAsync."
+      "Success";
+  const char kErrorCodeMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend.ErrorCode";
+  const char kPerApiErrorCodeMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend.GetAutofillableLoginsAsync."
+      "ErrorCode";
+  base::MockCallback<LoginsOrErrorReply> mock_reply;
+
+  EXPECT_CALL(*bridge(), GetAutofillableLogins).WillOnce(Return(kJobId));
+  backend().GetAutofillableLoginsAsync(mock_reply.Get());
+
+  EXPECT_CALL(mock_reply, Run(_)).Times(1);
+  task_environment_.FastForwardBy(kLatencyDelta);
+  if (ShouldSucceed())
+    consumer().OnCompleteWithLogins(kJobId, {});
+  else
+    consumer().OnError(
+        kJobId, AndroidBackendError(AndroidBackendErrorType::kUncategorized));
+  RunUntilIdle();
+
+  histogram_tester.ExpectTotalCount(kDurationMetric, 1);
+  histogram_tester.ExpectTimeBucketCount(kDurationMetric, kLatencyDelta, 1);
+  histogram_tester.ExpectTotalCount(kSuccessMetric, 1);
+  histogram_tester.ExpectBucketCount(kSuccessMetric, true, ShouldSucceed());
+  histogram_tester.ExpectBucketCount(kSuccessMetric, false, !ShouldSucceed());
+  if (!ShouldSucceed()) {
+    histogram_tester.ExpectBucketCount(kErrorCodeMetric, 0, 1);
+    histogram_tester.ExpectBucketCount(kPerApiErrorCodeMetric, 0, 1);
+  }
+}
+
 INSTANTIATE_TEST_SUITE_P(,
                          PasswordStoreAndroidBackendTestForMetrics,
                          testing::Bool());
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc
index a211aabd..6e6eac2 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -1275,13 +1275,10 @@
   autofill_assistant_manager->AddObserver(this);
 }
 
-void ChromePasswordManagerClient::DidStartNavigation(
-    content::NavigationHandle* navigation_handle) {
+void ChromePasswordManagerClient::PrimaryPageChanged(content::Page& page) {
   // Logging has no sense on WebUI sites.
   log_manager_->SetSuspended(web_contents()->GetWebUI() != nullptr);
-}
 
-void ChromePasswordManagerClient::PrimaryPageChanged(content::Page& page) {
   // Send any collected metrics by destroying the metrics recorder.
   metrics_recorder_.reset();
 
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.h b/chrome/browser/password_manager/chrome_password_manager_client.h
index 2f329c3..b30aa6c 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.h
+++ b/chrome/browser/password_manager/chrome_password_manager_client.h
@@ -314,8 +314,6 @@
   friend class content::WebContentsUserData<ChromePasswordManagerClient>;
 
   // content::WebContentsObserver overrides.
-  void DidStartNavigation(
-      content::NavigationHandle* navigation_handle) override;
   void PrimaryPageChanged(content::Page& page) override;
   void WebContentsDestroyed() override;
 // TODO(crbug.com/1006430): Paste event is not captured on Android.
diff --git a/chrome/browser/printing/print_browsertest.cc b/chrome/browser/printing/print_browsertest.cc
index e12d42ce..f075430 100644
--- a/chrome/browser/printing/print_browsertest.cc
+++ b/chrome/browser/printing/print_browsertest.cc
@@ -1161,7 +1161,7 @@
   EXPECT_EQ(content::AreAllSitesIsolatedForTesting(), IsOopifEnabled());
 }
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
+#if defined(OS_CHROMEOS)
 // Test that if user allows printing after being shown a warning due to DLP
 // restrictions, the print preview is rendered.
 IN_PROC_BROWSER_TEST_F(PrintBrowserTest, DLPWarnAllowed) {
@@ -1316,7 +1316,7 @@
   ASSERT_EQ(print_view_manager->GetPrintAllowance(),
             TestPrintViewManagerForDLP::PrintAllowance::kDisallowed);
 }
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+#endif  // BUILDFLAG(OS_CHROMEOS)
 
 // Printing preview a webpage with isolate-origins enabled.
 // Test that we will use oopif printing for this case.
diff --git a/chrome/browser/printing/print_view_manager.cc b/chrome/browser/printing/print_view_manager.cc
index bc42981..2a5234f 100644
--- a/chrome/browser/printing/print_view_manager.cc
+++ b/chrome/browser/printing/print_view_manager.cc
@@ -25,8 +25,8 @@
 #include "mojo/public/cpp/bindings/associated_remote.h"
 #include "printing/buildflags/buildflags.h"
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "chrome/browser/ash/policy/dlp/dlp_content_manager_ash.h"
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/policy/dlp/dlp_content_manager.h"
 #endif
 
 using content::BrowserThread;
@@ -192,9 +192,9 @@
 
 void PrintViewManager::RejectPrintPreviewRequestIfRestricted(
     base::OnceCallback<void(bool should_proceed)> callback) {
-#if BUILDFLAG(IS_CHROMEOS_ASH)
+#if defined(OS_CHROMEOS)
   // Don't print DLP restricted content on Chrome OS.
-  policy::DlpContentManagerAsh::Get()->CheckPrintingRestriction(
+  policy::DlpContentManager::Get()->CheckPrintingRestriction(
       web_contents(), std::move(callback));
 #else
   std::move(callback).Run(true);
diff --git a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java b/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java
index b8666ee..a2e84d5 100644
--- a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java
+++ b/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java
@@ -84,7 +84,7 @@
     void setMetricsReportingEnabled(boolean enabled);
 
     /**
-     * @return Whether usage and crash report pref is managed.
+     * @return Whether the usage and crash reporting pref is disabled by policy.
      */
-    boolean isMetricsReportingManaged();
+    boolean isMetricsReportingDisabledByPolicy();
 }
diff --git a/chrome/browser/privacy_sandbox/android/privacy_sandbox_bridge.cc b/chrome/browser/privacy_sandbox/android/privacy_sandbox_bridge.cc
index db6f2aa3..2c5068f 100644
--- a/chrome/browser/privacy_sandbox/android/privacy_sandbox_bridge.cc
+++ b/chrome/browser/privacy_sandbox/android/privacy_sandbox_bridge.cc
@@ -4,8 +4,9 @@
 
 #include "base/android/jni_string.h"
 #include "base/time/time.h"
-#include "chrome/browser/federated_learning/floc_id_provider_factory.h"
 #include "chrome/browser/privacy_sandbox/android/jni_headers/PrivacySandboxBridge_jni.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
 #include "chrome/browser/profiles/profile_manager.h"
@@ -14,13 +15,13 @@
 using base::android::ScopedJavaLocalRef;
 
 static jboolean JNI_PrivacySandboxBridge_IsPrivacySandboxEnabled(JNIEnv* env) {
-  return PrivacySandboxSettingsFactory::GetForProfile(
+  return PrivacySandboxServiceFactory::GetForProfile(
              ProfileManager::GetActiveUserProfile())
       ->IsPrivacySandboxEnabled();
 }
 
 static jboolean JNI_PrivacySandboxBridge_IsPrivacySandboxManaged(JNIEnv* env) {
-  return PrivacySandboxSettingsFactory::GetForProfile(
+  return PrivacySandboxServiceFactory::GetForProfile(
              ProfileManager::GetActiveUserProfile())
       ->IsPrivacySandboxManaged();
 }
@@ -34,26 +35,26 @@
 }
 
 static jboolean JNI_PrivacySandboxBridge_IsFlocEnabled(JNIEnv* env) {
-  return PrivacySandboxSettingsFactory::GetForProfile(
+  return PrivacySandboxServiceFactory::GetForProfile(
              ProfileManager::GetActiveUserProfile())
       ->IsFlocPrefEnabled();
 }
 
 static void JNI_PrivacySandboxBridge_SetFlocEnabled(JNIEnv* env,
                                                     jboolean enabled) {
-  PrivacySandboxSettingsFactory::GetForProfile(
+  PrivacySandboxServiceFactory::GetForProfile(
       ProfileManager::GetActiveUserProfile())
       ->SetFlocPrefEnabled(enabled);
 }
 
 static jboolean JNI_PrivacySandboxBridge_IsFlocIdResettable(JNIEnv* env) {
-  return PrivacySandboxSettingsFactory::GetForProfile(
+  return PrivacySandboxServiceFactory::GetForProfile(
              ProfileManager::GetActiveUserProfile())
       ->IsFlocIdResettable();
 }
 
 static void JNI_PrivacySandboxBridge_ResetFlocId(JNIEnv* env) {
-  PrivacySandboxSettingsFactory::GetForProfile(
+  PrivacySandboxServiceFactory::GetForProfile(
       ProfileManager::GetActiveUserProfile())
       ->ResetFlocId(/*user_initiated=*/true);
 }
@@ -61,7 +62,7 @@
 static ScopedJavaLocalRef<jstring> JNI_PrivacySandboxBridge_GetFlocStatusString(
     JNIEnv* env) {
   return ConvertUTF16ToJavaString(env,
-                                  PrivacySandboxSettingsFactory::GetForProfile(
+                                  PrivacySandboxServiceFactory::GetForProfile(
                                       ProfileManager::GetActiveUserProfile())
                                       ->GetFlocStatusForDisplay());
 }
@@ -69,7 +70,7 @@
 static ScopedJavaLocalRef<jstring> JNI_PrivacySandboxBridge_GetFlocGroupString(
     JNIEnv* env) {
   return ConvertUTF16ToJavaString(env,
-                                  PrivacySandboxSettingsFactory::GetForProfile(
+                                  PrivacySandboxServiceFactory::GetForProfile(
                                       ProfileManager::GetActiveUserProfile())
                                       ->GetFlocIdForDisplay());
 }
@@ -78,17 +79,14 @@
     JNIEnv* env) {
   Profile* profile = ProfileManager::GetActiveUserProfile();
   return ConvertUTF16ToJavaString(
-      env,
-      PrivacySandboxSettingsFactory::GetForProfile(profile)
-          ->GetFlocIdNextUpdateForDisplay(
-              federated_learning::FlocIdProviderFactory::GetForProfile(profile),
-              profile->GetOriginalProfile()->GetPrefs(), base::Time::Now()));
+      env, PrivacySandboxServiceFactory::GetForProfile(profile)
+               ->GetFlocIdNextUpdateForDisplay(base::Time::Now()));
 }
 
 static ScopedJavaLocalRef<jstring>
 JNI_PrivacySandboxBridge_GetFlocDescriptionString(JNIEnv* env) {
   return ConvertUTF16ToJavaString(env,
-                                  PrivacySandboxSettingsFactory::GetForProfile(
+                                  PrivacySandboxServiceFactory::GetForProfile(
                                       ProfileManager::GetActiveUserProfile())
                                       ->GetFlocDescriptionForDisplay());
 }
@@ -96,7 +94,7 @@
 static ScopedJavaLocalRef<jstring>
 JNI_PrivacySandboxBridge_GetFlocResetExplanationString(JNIEnv* env) {
   return ConvertUTF16ToJavaString(env,
-                                  PrivacySandboxSettingsFactory::GetForProfile(
+                                  PrivacySandboxServiceFactory::GetForProfile(
                                       ProfileManager::GetActiveUserProfile())
                                       ->GetFlocResetExplanationForDisplay());
 }
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc
new file mode 100644
index 0000000..7f2eaef
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc
@@ -0,0 +1,468 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+
+#include "base/feature_list.h"
+#include "base/i18n/time_formatting.h"
+#include "base/metrics/histogram.h"
+#include "base/metrics/histogram_functions.h"
+#include "base/metrics/user_metrics.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/time/time.h"
+#include "chrome/browser/federated_learning/floc_id_provider.h"
+#include "chrome/common/chrome_features.h"
+#include "components/content_settings/core/browser/cookie_settings.h"
+#include "components/content_settings/core/common/pref_names.h"
+#include "components/federated_learning/features/features.h"
+#include "components/prefs/pref_service.h"
+#include "components/privacy_sandbox/privacy_sandbox_prefs.h"
+#include "components/signin/public/identity_manager/identity_manager.h"
+#include "components/strings/grit/components_strings.h"
+#include "components/sync/driver/sync_service.h"
+#include "components/sync/driver/sync_user_settings.h"
+#include "content/public/common/content_features.h"
+#include "google_apis/gaia/google_service_auth_error.h"
+#include "third_party/blink/public/common/features.h"
+#include "ui/base/l10n/l10n_util.h"
+
+namespace {
+
+// Returns true iff based on |cookies_settings| & |prefs| third party cookies
+// are disabled by policy. This includes disabling third party cookies via
+// disabling all cookies.
+bool ThirdPartyCookiesDisabledByPolicy(
+    content_settings::CookieSettings* cookie_settings,
+    PrefService* prefs) {
+  auto* cookie_controls_mode_pref =
+      prefs->FindPreference(prefs::kCookieControlsMode);
+  auto cookie_controls_mode_value =
+      static_cast<content_settings::CookieControlsMode>(
+          cookie_controls_mode_pref->GetValue()->GetInt());
+
+  if (cookie_controls_mode_pref->IsManaged() &&
+      cookie_controls_mode_value ==
+          content_settings::CookieControlsMode::kBlockThirdParty) {
+    return true;
+  }
+
+  std::string default_cookie_setting_provider;
+  auto default_cookie_setting = cookie_settings->GetDefaultCookieSetting(
+      &default_cookie_setting_provider);
+  auto default_cookie_setting_source =
+      HostContentSettingsMap::GetSettingSourceFromProviderName(
+          default_cookie_setting_provider);
+
+  if (default_cookie_setting_source ==
+          content_settings::SettingSource::SETTING_SOURCE_POLICY &&
+      default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
+    return true;
+  }
+
+  return false;
+}
+
+// Returns whether |cookie_settings| and |prefs| imply that a user's Privacy
+// Sandbox preference should be turned off.
+bool ShouldDisablePrivacySandbox(
+    content_settings::CookieSettings* cookie_settings,
+    PrefService* prefs) {
+  // If a user has already expressed control over the Privacy Sandbox preference
+  // on any of their devices there is no need to disable it.
+  if (prefs->GetBoolean(prefs::kPrivacySandboxManuallyControlled))
+    return false;
+
+  auto cookie_controls_mode_value =
+      static_cast<content_settings::CookieControlsMode>(
+          prefs->GetInteger(prefs::kCookieControlsMode));
+
+  auto default_cookie_setting =
+      cookie_settings->GetDefaultCookieSetting(/*provider_id=*/nullptr);
+
+  // The Privacy Sandbox preference should be disabled if 3P cookies or all
+  // cookies are blocked.
+  return (cookie_controls_mode_value ==
+              content_settings::CookieControlsMode::kBlockThirdParty ||
+          default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK);
+}
+
+// Returns the number of days in |time|, rounded to the closest day by hour if
+// there is at least 1 day, but rounded to 0 if |time| is less than 1 day.
+int GetNumberOfDaysRoundedAboveOne(base::TimeDelta time) {
+  int number_of_days = time.InDays();
+  if (number_of_days == 0)
+    return 0;
+
+  int number_of_hours_past_day = (time - base::Days(number_of_days)).InHours();
+
+  if (number_of_hours_past_day >= 12)
+    number_of_days++;
+
+  return number_of_days;
+}
+
+}  // namespace
+
+PrivacySandboxService::PrivacySandboxService(
+    PrivacySandboxSettings* privacy_sandbox_settings,
+    content_settings::CookieSettings* cookie_settings,
+    PrefService* pref_service,
+    policy::PolicyService* policy_service,
+    syncer::SyncService* sync_service,
+    signin::IdentityManager* identity_manager,
+    federated_learning::FlocIdProvider* floc_id_provider)
+    : privacy_sandbox_settings_(privacy_sandbox_settings),
+      cookie_settings_(cookie_settings),
+      pref_service_(pref_service),
+      policy_service_(policy_service),
+      sync_service_(sync_service),
+      identity_manager_(identity_manager),
+      floc_id_provider_(floc_id_provider) {
+  DCHECK(privacy_sandbox_settings_);
+  DCHECK(pref_service_);
+  DCHECK(cookie_settings_);
+  DCHECK(policy_service_);
+  DCHECK(identity_manager_);
+
+  // Register observers for the Privacy Sandbox & FLoC preferences.
+  user_prefs_registrar_.Init(pref_service_);
+  user_prefs_registrar_.Add(
+      prefs::kPrivacySandboxApisEnabled,
+      base::BindRepeating(&PrivacySandboxService::OnPrivacySandboxPrefChanged,
+                          base::Unretained(this)));
+  user_prefs_registrar_.Add(
+      prefs::kPrivacySandboxFlocEnabled,
+      base::BindRepeating(&PrivacySandboxService::OnPrivacySandboxPrefChanged,
+                          base::Unretained(this)));
+
+  // On first entering the privacy sandbox experiment, users may have the
+  // privacy sandbox disabled (or "reconciled") based on their current cookie
+  // settings (e.g. blocking 3P cookies). Depending on the state of the sync
+  // service, identity manager, and cookie setting, reconciliation may not run
+  // immediately, or may not run at all.
+  // TODO(crbug.com/1166665): Remove reconciliation logic when kAPI controls are
+  // further separated from cookie controls.
+  MaybeReconcilePrivacySandboxPref();
+}
+
+PrivacySandboxService::~PrivacySandboxService() = default;
+
+std::u16string PrivacySandboxService::GetFlocDescriptionForDisplay() const {
+  return l10n_util::GetPluralStringFUTF16(
+      IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION,
+      GetNumberOfDaysRoundedAboveOne(
+          federated_learning::kFlocIdScheduledUpdateInterval.Get()));
+}
+
+std::u16string PrivacySandboxService::GetFlocIdForDisplay() const {
+  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
+      blink::features::kInterestCohortAPIOriginTrial);
+  auto floc_id = federated_learning::FlocId::ReadFromPrefs(pref_service_);
+
+  if (!privacy_sandbox_settings_->IsFlocAllowed() || !floc_feature_enabled ||
+      !floc_id.IsValid())
+    return l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID);
+
+  return base::NumberToString16(floc_id.ToUint64());
+}
+
+std::u16string PrivacySandboxService::GetFlocIdNextUpdateForDisplay(
+    const base::Time& current_time) {
+  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
+      blink::features::kInterestCohortAPIOriginTrial);
+
+  if (!floc_id_provider_ || !floc_feature_enabled ||
+      !privacy_sandbox_settings_->IsFlocAllowed()) {
+    return l10n_util::GetStringUTF16(
+        IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE_INVALID);
+  }
+
+  auto next_compute_time = floc_id_provider_->GetApproximateNextComputeTime();
+
+  // There are no guarantee that the next compute time is in the future. This
+  // should only occur when a compute is soon to occur, so assuming the current
+  // time is suitable.
+  if (next_compute_time < current_time)
+    next_compute_time = current_time;
+
+  return l10n_util::GetPluralStringFUTF16(
+      IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE,
+      GetNumberOfDaysRoundedAboveOne(next_compute_time - current_time));
+}
+
+std::u16string PrivacySandboxService::GetFlocResetExplanationForDisplay()
+    const {
+  return l10n_util::GetPluralStringFUTF16(
+      IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION,
+      GetNumberOfDaysRoundedAboveOne(
+          federated_learning::kFlocIdScheduledUpdateInterval.Get()));
+}
+
+std::u16string PrivacySandboxService::GetFlocStatusForDisplay() const {
+  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
+      blink::features::kInterestCohortAPIOriginTrial);
+  const bool floc_setting_enabled = privacy_sandbox_settings_->IsFlocAllowed();
+  if (floc_setting_enabled) {
+    return floc_feature_enabled
+               ? l10n_util::GetStringUTF16(
+                     IDS_PRIVACY_SANDBOX_FLOC_STATUS_ACTIVE)
+               : l10n_util::GetStringUTF16(
+                     IDS_PRIVACY_SANDBOX_FLOC_STATUS_ELIGIBLE_NOT_ACTIVE);
+  }
+
+  return l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_NOT_ACTIVE);
+}
+
+bool PrivacySandboxService::IsFlocIdResettable() const {
+  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
+      blink::features::kInterestCohortAPIOriginTrial);
+  return floc_feature_enabled && privacy_sandbox_settings_->IsFlocAllowed();
+}
+
+void PrivacySandboxService::ResetFlocId(bool user_initiated) const {
+  privacy_sandbox_settings_->SetFlocDataAccessibleFromNow(
+      /*reset_calculate_timer=*/true);
+  if (user_initiated) {
+    base::RecordAction(
+        base::UserMetricsAction("Settings.PrivacySandbox.ResetFloc"));
+  }
+}
+
+bool PrivacySandboxService::IsFlocPrefEnabled() const {
+  return pref_service_->GetBoolean(prefs::kPrivacySandboxFlocEnabled);
+}
+
+void PrivacySandboxService::SetFlocPrefEnabled(bool enabled) const {
+  pref_service_->SetBoolean(prefs::kPrivacySandboxFlocEnabled, enabled);
+  base::RecordAction(base::UserMetricsAction(
+      enabled ? "Settings.PrivacySandbox.FlocEnabled"
+              : "Settings.PrivacySandbox.FlocDisabled"));
+}
+
+bool PrivacySandboxService::IsPrivacySandboxEnabled() {
+  return pref_service_->GetBoolean(prefs::kPrivacySandboxApisEnabled);
+}
+
+bool PrivacySandboxService::IsPrivacySandboxManaged() {
+  return pref_service_->IsManagedPreference(prefs::kPrivacySandboxApisEnabled);
+}
+
+void PrivacySandboxService::OnPrivacySandboxPrefChanged() {
+  // Any change of the two observed prefs should be accompanied by a
+  // reset of the FLoC cohort. Technically this only needs to occur on the
+  // transition from FLoC being effectively disabled to effectively enabled,
+  // but performing it on every pref change achieves the same user visible
+  // behavior, and is much simpler.
+  ResetFlocId(/*user_initiated=*/false);
+}
+
+void PrivacySandboxService::Shutdown() {
+  StopObserving();
+}
+
+void PrivacySandboxService::OnPolicyUpdated(const policy::PolicyNamespace& ns,
+                                            const policy::PolicyMap& previous,
+                                            const policy::PolicyMap& current) {
+  // |pref_service_| and |cookie_settings_| will have been made aware
+  // of the policy changes before this observer function is called.
+  MaybeReconcilePrivacySandboxPref();
+}
+
+void PrivacySandboxService::OnStateChanged(syncer::SyncService* sync) {
+  MaybeReconcilePrivacySandboxPref();
+}
+
+void PrivacySandboxService::OnSyncCycleCompleted(syncer::SyncService* sync) {
+  MaybeReconcilePrivacySandboxPref();
+}
+
+void PrivacySandboxService::OnErrorStateOfRefreshTokenUpdatedForAccount(
+    const CoreAccountInfo& account_info,
+    const GoogleServiceAuthError& error) {
+  MaybeReconcilePrivacySandboxPref();
+}
+
+void PrivacySandboxService::MaybeReconcilePrivacySandboxPref() {
+  // No need to reconcile preferences if it has already happened.
+  if (pref_service_->GetBoolean(prefs::kPrivacySandboxPreferencesReconciled)) {
+    LogPrivacySandboxState();
+    return;
+  }
+
+  // If all or 3P cookies are disabled by policy, this will be reflected
+  // directly in the Privacy Sandbox preference at the policy level. No attempt
+  // should be made to reconcile the user preference while this is true, as due
+  // to sync this may opt a user out on a personal device based on managed
+  // device settings. If the device becomes unmanaged, or the policy changes,
+  // reconciliation should occur.
+  if (ThirdPartyCookiesDisabledByPolicy(cookie_settings_, pref_service_)) {
+    // The policy service may already be observed, e.g. if this method is being
+    // called after an update which did not result in reconciliation running.
+    if (!policy_service_observed_) {
+      policy_service_->AddObserver(policy::POLICY_DOMAIN_CHROME, this);
+      policy_service_observed_ = true;
+      LogPrivacySandboxState();
+    }
+    return;
+  }
+
+  // Reconciliation of the Privacy Sandbox preference is based on both synced
+  // and unsynced settings. The synced settings are only consulted should the
+  // local settings indicate the Privacy Sandbox should be disabled.
+  if (!ShouldDisablePrivacySandbox(cookie_settings_, pref_service_)) {
+    ReconcilePrivacySandboxPref();
+    return;
+  }
+
+  // The current settings applied to this device indicate that the Privacy
+  // Sandbox should be disabled. A decision however cannot be made until it is
+  // confirmed that either:
+  //   A) the synced state is available, or
+  //   B) it has become clear that the sync state will not be available.
+  // In both cases reconciliation is run. In outcome A this is obviously fine,
+  // in outcome B this risks clobbering some opted in devices if this device
+  // would later sync the disabled preference (e.g. by the user signing back
+  // into a sync paused device).
+
+  // If the service currently indicates that preferences will not be synced,
+  // then outcome B has been reached.
+  if (!sync_service_ || !sync_service_->IsSyncFeatureEnabled() ||
+      !sync_service_->GetUserSettings()->GetSelectedTypes().Has(
+          syncer::UserSelectableType::kPreferences) ||
+      sync_service_->HasUnrecoverableError()) {
+    ReconcilePrivacySandboxPref();
+    return;
+  }
+
+  // If the sync service has already completed a sync cycle, then outcome A has
+  // been reached.
+  if (sync_service_->HasCompletedSyncCycle()) {
+    ReconcilePrivacySandboxPref();
+    return;
+  }
+
+  // If there is a persistent auth error associated with the primary account's
+  // refresh token, then sync will not be able to run and then outcome B has
+  // been reached.
+  GoogleServiceAuthError auth_error =
+      identity_manager_->GetErrorStateOfRefreshTokenForAccount(
+          identity_manager_->GetPrimaryAccountId(signin::ConsentLevel::kSync));
+  if (auth_error.IsPersistentError()) {
+    ReconcilePrivacySandboxPref();
+    return;
+  }
+
+  // Further tracking to determine when outcome A or B has occurred requires
+  // observing both the sync service and the identity manager. It is valid for
+  // observation to already be occurring as this method may be called multiple
+  // times if observed updates do not result in outcome A or B being reached.
+  DCHECK(sync_service_);
+  DCHECK(identity_manager_);
+  if (!sync_service_observer_.IsObserving())
+    sync_service_observer_.Observe(sync_service_.get());
+  if (!identity_manager_observer_.IsObserving())
+    identity_manager_observer_.Observe(identity_manager_.get());
+}
+
+void PrivacySandboxService::ReconcilePrivacySandboxPref() {
+  if (ShouldDisablePrivacySandbox(cookie_settings_, pref_service_))
+    pref_service_->SetBoolean(prefs::kPrivacySandboxApisEnabled, false);
+
+  pref_service_->SetBoolean(prefs::kPrivacySandboxPreferencesReconciled, true);
+
+  // If observers were setup they are no longer required after reconciliation
+  // has occurred.
+  StopObserving();
+  LogPrivacySandboxState();
+}
+
+void PrivacySandboxService::StopObserving() {
+  // Removing a non-observing observer is a no-op.
+  sync_service_observer_.Reset();
+  identity_manager_observer_.Reset();
+  if (policy_service_observed_) {
+    policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this);
+    policy_service_observed_ = false;
+  }
+}
+
+void PrivacySandboxService::RecordPrivacySandboxHistogram(
+    PrivacySandboxService::SettingsPrivacySandboxEnabled state) {
+  base::UmaHistogramEnumeration("Settings.PrivacySandbox.Enabled", state);
+}
+
+void PrivacySandboxService::LogPrivacySandboxState() {
+  // Check policy status first.
+  std::string default_cookie_setting_provider;
+  auto default_cookie_setting = cookie_settings_->GetDefaultCookieSetting(
+      &default_cookie_setting_provider);
+  auto default_cookie_setting_source =
+      HostContentSettingsMap::GetSettingSourceFromProviderName(
+          default_cookie_setting_provider);
+
+  if (default_cookie_setting_source ==
+          content_settings::SettingSource::SETTING_SOURCE_POLICY &&
+      default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
+    RecordPrivacySandboxHistogram(
+        PrivacySandboxService::SettingsPrivacySandboxEnabled::
+            kPSDisabledPolicyBlockAll);
+    return;
+  }
+
+  auto* cookie_controls_mode_pref =
+      pref_service_->FindPreference(prefs::kCookieControlsMode);
+  auto cookie_controls_mode_value =
+      static_cast<content_settings::CookieControlsMode>(
+          cookie_controls_mode_pref->GetValue()->GetInt());
+
+  if (cookie_controls_mode_pref->IsManaged() &&
+      cookie_controls_mode_value ==
+          content_settings::CookieControlsMode::kBlockThirdParty) {
+    RecordPrivacySandboxHistogram(
+        PrivacySandboxService::SettingsPrivacySandboxEnabled::
+            kPSDisabledPolicyBlock3P);
+    return;
+  }
+
+  if (pref_service_->GetBoolean(prefs::kPrivacySandboxApisEnabled)) {
+    const bool floc_enabled =
+        pref_service_->GetBoolean(prefs::kPrivacySandboxFlocEnabled);
+
+    if (default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
+      RecordPrivacySandboxHistogram(
+          floc_enabled ? PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                             kPSEnabledBlockAll
+                       : PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                             kPSEnabledFlocDisabledBlockAll);
+    } else if (cookie_controls_mode_value ==
+               content_settings::CookieControlsMode::kBlockThirdParty) {
+      RecordPrivacySandboxHistogram(
+          floc_enabled ? PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                             kPSEnabledBlock3P
+                       : PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                             kPSEnabledFlocDisabledBlock3P);
+    } else {
+      RecordPrivacySandboxHistogram(
+          floc_enabled ? PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                             kPSEnabledAllowAll
+                       : PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                             kPSEnabledFlocDisabledAllowAll);
+    }
+  } else {
+    if (default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
+      RecordPrivacySandboxHistogram(
+          PrivacySandboxService::SettingsPrivacySandboxEnabled::
+              kPSDisabledBlockAll);
+    } else if (cookie_controls_mode_value ==
+               content_settings::CookieControlsMode::kBlockThirdParty) {
+      RecordPrivacySandboxHistogram(
+          PrivacySandboxService::SettingsPrivacySandboxEnabled::
+              kPSDisabledBlock3P);
+    } else {
+      RecordPrivacySandboxHistogram(
+          PrivacySandboxService::SettingsPrivacySandboxEnabled::
+              kPSDisabledAllowAll);
+    }
+  }
+}
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service.h b/chrome/browser/privacy_sandbox/privacy_sandbox_service.h
new file mode 100644
index 0000000..ff5a4012
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service.h
@@ -0,0 +1,220 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_SERVICE_H_
+#define CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_SERVICE_H_
+
+#include "base/gtest_prod_util.h"
+#include "base/memory/raw_ptr.h"
+#include "base/scoped_observation.h"
+#include "base/time/time.h"
+#include "chrome/browser/federated_learning/floc_id_provider.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
+#include "components/content_settings/core/common/content_settings.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "components/policy/core/common/policy_service.h"
+#include "components/prefs/pref_change_registrar.h"
+#include "components/signin/public/identity_manager/identity_manager.h"
+#include "components/sync/driver/sync_service.h"
+#include "components/sync/driver/sync_service_observer.h"
+
+class PrefService;
+
+namespace content_settings {
+class CookieSettings;
+}
+
+// Service which encapsulates logic related to displaying and controlling the
+// users Privacy Sandbox settings. This service contains the chrome/ specific
+// logic used by the UI, including decision making around what the users'
+// Privacy Sandbox settings should be based on their existing settings.
+// Ultimately the decisions made by this service are consumed (through
+// preferences and content settings) by the PrivacySandboxSettings located in
+// components/privacy_sandbox/, which in turn makes them available to Privacy
+// Sandbox APIs.
+class PrivacySandboxService : public KeyedService,
+                              public policy::PolicyService::Observer,
+                              public syncer::SyncServiceObserver,
+                              public signin::IdentityManager::Observer {
+ public:
+  PrivacySandboxService(PrivacySandboxSettings* privacy_sandbox_settings,
+                        content_settings::CookieSettings* cookie_settings,
+                        PrefService* pref_service,
+                        policy::PolicyService* policy_service,
+                        syncer::SyncService* sync_service,
+                        signin::IdentityManager* identity_manager,
+                        federated_learning::FlocIdProvider* floc_id_provider);
+  ~PrivacySandboxService() override;
+
+  // Returns a description of FLoC ready for display to the user. Correctly
+  // takes into account the FLoC feature parameters when determining the number
+  // of days between cohort calculations.
+  std::u16string GetFlocDescriptionForDisplay() const;
+
+  // Returns the current FLoC cohort identifier for the associated profile in
+  // string format suitable for direct display to the user. If the cohort is
+  // not valid, the appropriate descriptive string is returned instead.
+  std::u16string GetFlocIdForDisplay() const;
+
+  // Returns when the user's current FLoC cohort identifier will next be updated
+  // in a string format suitable for direct display to the user. If no compute
+  // is scheduled, the appropriate descriptive string is returned instead.
+  std::u16string GetFlocIdNextUpdateForDisplay(const base::Time& current_time);
+
+  // Returns the display ready string explaining what happens when the user
+  // resets the FLoC cohort identifier.
+  std::u16string GetFlocResetExplanationForDisplay() const;
+
+  // Returns a display ready string explaining the current status of FloC. E.g.
+  // the effective state of the Finch experiment, and the user's setting.
+  std::u16string GetFlocStatusForDisplay() const;
+
+  // Returns whether the user's current FLoC ID can be reset. This requires that
+  // the FLoC feature be enabled and FLoC be enabled in preferences. It does not
+  // require that the current ID is valid, as resetting the ID also resets the
+  // compute timer, it should be available whenever FLoC is active.
+  bool IsFlocIdResettable() const;
+
+  // Sets the time when history is accessible for FLoC calculation to the
+  // current time and resets the time to the next FLoC id calculation. If
+  // |user_initiated| is true, records the associated User Metrics Action.
+  void ResetFlocId(bool user_initiated) const;
+
+  // Returns whether the FLoC preference is enabled. This should only be used
+  // for displaying the preference state to the user, and should *not* be used
+  // for determining whether FLoC is allowed or not.
+  bool IsFlocPrefEnabled() const;
+
+  // Sets the FLoC preference to |enabled|.
+  void SetFlocPrefEnabled(bool enabled) const;
+
+  // Disables the Privacy Sandbox completely if |enabled| is false, if |enabled|
+  // is true, more granular checks will still be performed to determine if
+  // specific APIs are available in specific contexts.
+  void SetPrivacySandboxEnabled(bool enabled);
+
+  // Used by the UI to check if the API is enabled. Checks the primary
+  // pref directly.
+  bool IsPrivacySandboxEnabled();
+
+  // Returns whether the state of the API is managed.
+  bool IsPrivacySandboxManaged();
+
+  // Called when a preference relevant to the the Privacy Sandbox is changed.
+  void OnPrivacySandboxPrefChanged();
+
+  // KeyedService:
+  void Shutdown() override;
+
+  // policy::PolicyService::Observer:
+  void OnPolicyUpdated(const policy::PolicyNamespace& ns,
+                       const policy::PolicyMap& previous,
+                       const policy::PolicyMap& current) override;
+
+  // syncer::SyncServiceObserver:
+  void OnStateChanged(syncer::SyncService* sync) override;
+  void OnSyncCycleCompleted(syncer::SyncService* sync) override;
+
+  // signin::IdentityManager::Observer:
+  // TODO(crbug.com/1167680): This is only required to capture failure scenarios
+  // that affect sync, yet aren't reported via SyncServiceObserver.
+  void OnErrorStateOfRefreshTokenUpdatedForAccount(
+      const CoreAccountInfo& account_info,
+      const GoogleServiceAuthError& error) override;
+
+ protected:
+  friend class PrivacySandboxServiceTest;
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           ReconciliationOutcome);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           ImmediateReconciliationNoSync);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           ImmediateReconciliationSyncComplete);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           ImmediateReconciliationPersistentSyncError);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           ImmediateReconciliationNoDisable);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           DelayedReconciliationSyncSuccess);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           DelayedReconciliationSyncFailure);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           DelayedReconciliationIdentityFailure);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           DelayedReconciliationSyncIssueThenManaged);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           NoReconciliationAlreadyRun);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           NoReconciliationSandboxSettingsDisabled);
+  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxServiceTestReconciliationBlocked,
+                           MetricsLoggingOccursCorrectly);
+
+  // Contains all possible privacy sandbox states, recorded on startup.
+  // These values are persisted to logs. Entries should not be renumbered and
+  // numeric values should never be reused.
+  // Must be kept in sync with the SettingsPrivacySandboxEnabled enum in
+  // histograms/enums.xml.
+  enum class SettingsPrivacySandboxEnabled {
+    kPSEnabledAllowAll = 0,
+    kPSEnabledBlock3P = 1,
+    kPSEnabledBlockAll = 2,
+    kPSDisabledAllowAll = 3,
+    kPSDisabledBlock3P = 4,
+    kPSDisabledBlockAll = 5,
+    kPSDisabledPolicyBlock3P = 6,
+    kPSDisabledPolicyBlockAll = 7,
+    kPSEnabledFlocDisabledAllowAll = 8,
+    kPSEnabledFlocDisabledBlock3P = 9,
+    kPSEnabledFlocDisabledBlockAll = 10,
+    // Add values above this line with a corresponding label in
+    // tools/metrics/histograms/enums.xml
+    kMaxValue = kPSEnabledFlocDisabledBlockAll,
+  };
+
+  // Inspects the current sync state and settings to determine if the Privacy
+  // Sandbox prefs should be reconciled. Calls ReconcilePrivacySandbox()
+  // immediately if appropriate, or may register sync and identity observers to
+  // call ReconcilePrivacySandbox() later as appropriate.
+  void MaybeReconcilePrivacySandboxPref();
+
+  // Selectively disable the Privacy Sandbox preference based on the local and
+  // synced state. Reconcilliation is only performed once per synced profile.
+  // As the sandbox is default enabled, reconcilliation will only ever opt a
+  // user out of the sandbox.
+  void ReconcilePrivacySandboxPref();
+
+  // Stops any observation of services being performed by this class.
+  void StopObserving();
+
+  // Helper function to actually make the metrics call for
+  // LogPrivacySandboxState.
+  void RecordPrivacySandboxHistogram(SettingsPrivacySandboxEnabled state);
+
+  // Logs the state of the privacy sandbox and cookie settings. Called once per
+  // profile startup.
+  void LogPrivacySandboxState();
+
+ private:
+  raw_ptr<PrivacySandboxSettings> privacy_sandbox_settings_;
+  raw_ptr<content_settings::CookieSettings> cookie_settings_;
+  raw_ptr<PrefService> pref_service_;
+  raw_ptr<policy::PolicyService> policy_service_;
+  raw_ptr<syncer::SyncService> sync_service_;
+  raw_ptr<signin::IdentityManager> identity_manager_;
+  raw_ptr<federated_learning::FlocIdProvider> floc_id_provider_;
+
+  base::ScopedObservation<syncer::SyncService, syncer::SyncServiceObserver>
+      sync_service_observer_{this};
+  base::ScopedObservation<signin::IdentityManager,
+                          signin::IdentityManager::Observer>
+      identity_manager_observer_{this};
+
+  PrefChangeRegistrar user_prefs_registrar_;
+
+  // A manual record of whether policy_service_ is being observerd.
+  // Unfortunately PolicyService does not support scoped observers.
+  bool policy_service_observed_ = false;
+};
+
+#endif  // CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_SERVICE_H_
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_browsertest.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service_browsertest.cc
new file mode 100644
index 0000000..fde2c258
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_browsertest.cc
@@ -0,0 +1,85 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "components/content_settings/core/common/content_settings.h"
+#include "components/policy/core/browser/browser_policy_connector.h"
+#include "components/policy/core/common/mock_configuration_policy_provider.h"
+#include "components/policy/core/common/policy_map.h"
+#include "components/policy/policy_constants.h"
+#include "components/prefs/pref_service.h"
+#include "components/privacy_sandbox/privacy_sandbox_prefs.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/test/browser_test.h"
+#include "content/public/test/browser_test_utils.h"
+
+class PrivacySandboxSettingsBrowserPolicyTest : public InProcessBrowserTest {
+ public:
+  PrivacySandboxSettingsBrowserPolicyTest() {
+    policy_provider()->SetDefaultReturns(
+        /*is_initialization_complete_return=*/true,
+        /*is_first_policy_load_complete_return=*/true);
+    policy::BrowserPolicyConnector::SetPolicyProviderForTesting(
+        policy_provider());
+
+    policy::PolicyMap third_party_cookies_blocked_policy;
+    third_party_cookies_blocked_policy.Set(
+        policy::key::kBlockThirdPartyCookies, policy::POLICY_LEVEL_MANDATORY,
+        policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
+        base::Value(true),
+        /*external_data_fetcher=*/nullptr);
+    policy_provider()->UpdateChromePolicy(third_party_cookies_blocked_policy);
+  }
+
+  PrivacySandboxSettings* privacy_sandbox_settings() {
+    return PrivacySandboxSettingsFactory::GetForProfile(browser()->profile());
+  }
+
+  policy::MockConfigurationPolicyProvider* policy_provider() {
+    return &policy_provider_;
+  }
+
+ protected:
+  testing::NiceMock<policy::MockConfigurationPolicyProvider> policy_provider_;
+};
+
+// Reconciliation should not run while 3P or all cookies are disabled by
+// policy, but should run if the policy is changed or removed.
+IN_PROC_BROWSER_TEST_F(PrivacySandboxSettingsBrowserPolicyTest,
+                       DelayedReconciliationCookieSettingsManaged) {
+  privacy_sandbox_settings();
+
+  // Policies set in the test constructor should have prevented reconciliation
+  // from running immediately.
+  EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // Check that applying a different policy which also results in 3P cookies
+  // being blocked does not result in reconciliation running.
+  policy::PolicyMap all_cookies_blocked_policy;
+  all_cookies_blocked_policy.Set(
+      policy::key::kDefaultCookiesSetting, policy::POLICY_LEVEL_MANDATORY,
+      policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
+      base::Value(CONTENT_SETTING_BLOCK),
+      /*external_data_fetcher=*/nullptr);
+  policy_provider()->UpdateChromePolicy(all_cookies_blocked_policy);
+  EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // Apply policy which allows third party cookies and ensure that
+  // reconciliation runs.
+  policy::PolicyMap third_party_cookies_allowed_policy;
+  third_party_cookies_allowed_policy.Set(
+      policy::key::kBlockThirdPartyCookies, policy::POLICY_LEVEL_MANDATORY,
+      policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
+      base::Value(false),
+      /*external_data_fetcher=*/nullptr);
+  policy_provider()->UpdateChromePolicy(third_party_cookies_allowed_policy);
+  EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.cc
new file mode 100644
index 0000000..997128d
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.cc
@@ -0,0 +1,55 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
+
+#include "base/memory/singleton.h"
+#include "chrome/browser/content_settings/cookie_settings_factory.h"
+#include "chrome/browser/federated_learning/floc_id_provider_factory.h"
+#include "chrome/browser/policy/profile_policy_connector.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
+#include "chrome/browser/profiles/incognito_helpers.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/sync/sync_service_factory.h"
+#include "components/content_settings/core/browser/cookie_settings.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/keyed_service/core/keyed_service.h"
+
+PrivacySandboxServiceFactory* PrivacySandboxServiceFactory::GetInstance() {
+  return base::Singleton<PrivacySandboxServiceFactory>::get();
+}
+
+PrivacySandboxService* PrivacySandboxServiceFactory::GetForProfile(
+    Profile* profile) {
+  return static_cast<PrivacySandboxService*>(
+      GetInstance()->GetServiceForBrowserContext(profile, true));
+}
+
+PrivacySandboxServiceFactory::PrivacySandboxServiceFactory()
+    : BrowserContextKeyedServiceFactory(
+          "PrivacySandboxService",
+          BrowserContextDependencyManager::GetInstance()) {
+  DependsOn(PrivacySandboxSettingsFactory::GetInstance());
+  DependsOn(CookieSettingsFactory::GetInstance());
+  DependsOn(SyncServiceFactory::GetInstance());
+  DependsOn(IdentityManagerFactory::GetInstance());
+  DependsOn(federated_learning::FlocIdProviderFactory::GetInstance());
+}
+
+KeyedService* PrivacySandboxServiceFactory::BuildServiceInstanceFor(
+    content::BrowserContext* context) const {
+  Profile* profile = Profile::FromBrowserContext(context);
+  if (!profile->IsRegularProfile())
+    return nullptr;
+
+  return new PrivacySandboxService(
+      PrivacySandboxSettingsFactory::GetForProfile(profile),
+      CookieSettingsFactory::GetForProfile(profile).get(), profile->GetPrefs(),
+      profile->GetProfilePolicyConnector()->policy_service(),
+      SyncServiceFactory::GetForProfile(profile),
+      IdentityManagerFactory::GetForProfile(profile),
+      federated_learning::FlocIdProviderFactory::GetForProfile(profile));
+}
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h b/chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h
new file mode 100644
index 0000000..17aba87
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h
@@ -0,0 +1,29 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_SERVICE_FACTORY_H_
+#define CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_SERVICE_FACTORY_H_
+
+#include "base/memory/singleton.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+
+class PrivacySandboxService;
+class Profile;
+
+class PrivacySandboxServiceFactory : public BrowserContextKeyedServiceFactory {
+ public:
+  static PrivacySandboxServiceFactory* GetInstance();
+  static PrivacySandboxService* GetForProfile(Profile* profile);
+
+ private:
+  friend struct base::DefaultSingletonTraits<PrivacySandboxServiceFactory>;
+  PrivacySandboxServiceFactory();
+  ~PrivacySandboxServiceFactory() override = default;
+
+  // BrowserContextKeyedServiceFactory:
+  KeyedService* BuildServiceInstanceFor(
+      content::BrowserContext* context) const override;
+};
+
+#endif  // CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_SERVICE_FACTORY_H_
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_unittest.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service_unittest.cc
new file mode 100644
index 0000000..98e277c
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_unittest.cc
@@ -0,0 +1,1127 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+
+#include "base/test/gtest_util.h"
+#include "base/test/icu_test_util.h"
+#include "base/test/metrics/histogram_tester.h"
+#include "base/test/metrics/user_action_tester.h"
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/content_settings/cookie_settings_factory.h"
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
+#include "chrome/browser/federated_learning/floc_id_provider.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/ui/webui/federated_learning/floc_internals.mojom.h"
+#include "chrome/common/chrome_features.h"
+#include "chrome/test/base/testing_profile.h"
+#include "components/content_settings/core/browser/cookie_settings.h"
+#include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/content_settings/core/common/pref_names.h"
+#include "components/federated_learning/features/features.h"
+#include "components/federated_learning/floc_id.h"
+#include "components/policy/core/common/mock_policy_service.h"
+#include "components/privacy_sandbox/privacy_sandbox_prefs.h"
+#include "components/signin/public/identity_manager/account_info.h"
+#include "components/signin/public/identity_manager/identity_test_environment.h"
+#include "components/strings/grit/components_strings.h"
+#include "components/sync/base/user_selectable_type.h"
+#include "components/sync/driver/test_sync_service.h"
+#include "components/sync_preferences/testing_pref_service_syncable.h"
+#include "content/public/common/content_features.h"
+#include "content/public/test/browser_task_environment.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/public/mojom/federated_learning/floc.mojom.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "url/origin.h"
+
+namespace {
+
+class MockFlocIdProvider : public federated_learning::FlocIdProvider {
+ public:
+  blink::mojom::InterestCohortPtr GetInterestCohortForJsApi(
+      const GURL& url,
+      const absl::optional<url::Origin>& top_frame_origin) const override {
+    return blink::mojom::InterestCohort::New();
+  }
+  MOCK_METHOD(federated_learning::mojom::WebUIFlocStatusPtr,
+              GetFlocStatusForWebUi,
+              (),
+              (const, override));
+  MOCK_METHOD(void, MaybeRecordFlocToUkm, (ukm::SourceId), (override));
+  MOCK_METHOD(base::Time, GetApproximateNextComputeTime, (), (const, override));
+};
+
+}  // namespace
+
+class PrivacySandboxServiceTest : public testing::Test {
+ public:
+  PrivacySandboxServiceTest()
+      : browser_task_environment_(
+            base::test::TaskEnvironment::TimeSource::MOCK_TIME) {}
+
+  void SetUp() override {
+    InitializePrefsBeforeStart();
+
+    privacy_sandbox_service_ = std::make_unique<PrivacySandboxService>(
+        PrivacySandboxSettingsFactory::GetForProfile(profile()),
+        CookieSettingsFactory::GetForProfile(profile()).get(),
+        profile()->GetPrefs(), policy_service(), sync_service(),
+        identity_test_env()->identity_manager(), mock_floc_id_provider());
+  }
+
+  virtual void InitializePrefsBeforeStart() {}
+
+  TestingProfile* profile() { return &profile_; }
+  PrivacySandboxService* privacy_sandbox_service() {
+    return privacy_sandbox_service_.get();
+  }
+  base::test::ScopedFeatureList* feature_list() { return &feature_list_; }
+  sync_preferences::TestingPrefServiceSyncable* prefs() {
+    return profile()->GetTestingPrefService();
+  }
+  HostContentSettingsMap* host_content_settings_map() {
+    return HostContentSettingsMapFactory::GetForProfile(profile());
+  }
+  syncer::TestSyncService* sync_service() { return &sync_service_; }
+  policy::MockPolicyService* policy_service() { return &mock_policy_service_; }
+  signin::IdentityTestEnvironment* identity_test_env() {
+    return &identity_test_env_;
+  }
+  MockFlocIdProvider* mock_floc_id_provider() {
+    return &mock_floc_id_provider_;
+  }
+
+ private:
+  content::BrowserTaskEnvironment browser_task_environment_;
+  signin::IdentityTestEnvironment identity_test_env_;
+  testing::NiceMock<policy::MockPolicyService> mock_policy_service_;
+
+  TestingProfile profile_;
+  base::test::ScopedFeatureList feature_list_;
+  syncer::TestSyncService sync_service_;
+  MockFlocIdProvider mock_floc_id_provider_;
+
+  std::unique_ptr<PrivacySandboxService> privacy_sandbox_service_;
+};
+
+TEST_F(PrivacySandboxServiceTest, GetFlocDescriptionForDisplay) {
+  // Check that the returned FLoC description correctly takes into account the
+  // time between FLoC recomputes.
+  std::map<std::string, std::u16string> param_to_expected_string = {
+      {"1h", l10n_util::GetPluralStringFUTF16(
+                 IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 0)},
+      {"23h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 0)},
+      {"24h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 1)},
+      {"25h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 1)},
+      {"60h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 3)},
+      {"167h", l10n_util::GetPluralStringFUTF16(
+                   IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 7)},
+      {"168h", l10n_util::GetPluralStringFUTF16(
+                   IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 7)}};
+
+  for (const auto& param_expected : param_to_expected_string) {
+    feature_list()->InitAndEnableFeatureWithParameters(
+        federated_learning::kFederatedLearningOfCohorts,
+        {{"update_interval", param_expected.first}});
+    EXPECT_EQ(param_expected.second,
+              privacy_sandbox_service()->GetFlocDescriptionForDisplay());
+    feature_list()->Reset();
+  }
+}
+
+TEST_F(PrivacySandboxServiceTest, GetFlocIdForDisplay) {
+  // Check that the cohort identifier is correctly converted to a string when
+  // available.
+  feature_list()->InitWithFeatures(
+      {blink::features::kInterestCohortAPIOriginTrial}, {});
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, true);
+  federated_learning::FlocId floc_id = federated_learning::FlocId::CreateValid(
+      123456, base::Time(), base::Time::Now(),
+      /*sorting_lsh_version=*/0);
+  floc_id.SaveToPrefs(profile()->GetTestingPrefService());
+
+  EXPECT_EQ(std::u16string(u"123456"),
+            privacy_sandbox_service()->GetFlocIdForDisplay());
+
+  // If the FLoC preference, the Sandbox Preference, or the feature is disabled,
+  // or the FLoC ID is invalid, the invalid string should be returned.
+  feature_list()->Reset();
+  feature_list()->InitWithFeatures(
+      {}, {blink::features::kInterestCohortAPIOriginTrial});
+  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
+            privacy_sandbox_service()->GetFlocIdForDisplay());
+
+  feature_list()->Reset();
+  feature_list()->InitWithFeatures(
+      {blink::features::kInterestCohortAPIOriginTrial}, {});
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, false);
+  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
+            privacy_sandbox_service()->GetFlocIdForDisplay());
+
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, true);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
+            privacy_sandbox_service()->GetFlocIdForDisplay());
+
+  floc_id.UpdateStatusAndSaveToPrefs(
+      profile()->GetTestingPrefService(),
+      federated_learning::FlocId::Status::kInvalidReset);
+  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
+            privacy_sandbox_service()->GetFlocIdForDisplay());
+}
+
+TEST_F(PrivacySandboxServiceTest, GetFlocIdNextUpdateForDisplay) {
+  // Check that date FLoC will be next updated is returned when available.
+  feature_list()->InitWithFeatures(
+      {blink::features::kInterestCohortAPIOriginTrial}, {});
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, true);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+
+  std::map<base::TimeDelta, std::u16string> offsets_to_expected_string = {
+      {base::Hours(23), l10n_util::GetPluralStringFUTF16(
+                            IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 0)},
+      {base::Hours(25), l10n_util::GetPluralStringFUTF16(
+                            IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 1)},
+      {base::Days(2), l10n_util::GetPluralStringFUTF16(
+                          IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 2)},
+      {base::Hours(60), l10n_util::GetPluralStringFUTF16(
+                            IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 3)},
+      {base::Hours(167),  // 1 hour less than 7 days.
+       l10n_util::GetPluralStringFUTF16(
+           IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 7)}};
+
+  for (const auto& offset_expected : offsets_to_expected_string) {
+    EXPECT_CALL(*mock_floc_id_provider(), GetApproximateNextComputeTime)
+        .WillOnce(testing::Return(base::Time::Now() + offset_expected.first));
+    EXPECT_EQ(offset_expected.second,
+              privacy_sandbox_service()->GetFlocIdNextUpdateForDisplay(
+                  base::Time::Now()));
+    testing::Mock::VerifyAndClearExpectations(mock_floc_id_provider());
+  }
+
+  // Check that disabling FLoC is also reflected in the returned string.
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+  EXPECT_CALL(*mock_floc_id_provider(), GetApproximateNextComputeTime).Times(0);
+  EXPECT_EQ(l10n_util::GetStringUTF16(
+                IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE_INVALID),
+            privacy_sandbox_service()->GetFlocIdNextUpdateForDisplay(
+                base::Time::Now()));
+  testing::Mock::VerifyAndClearExpectations(mock_floc_id_provider());
+
+  // Disabling the FLoC feature should also invalidate the next compute time.
+  feature_list()->Reset();
+  feature_list()->InitWithFeatures(
+      {}, {blink::features::kInterestCohortAPIOriginTrial});
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  testing::Mock::VerifyAndClearExpectations(mock_floc_id_provider());
+}
+
+TEST_F(PrivacySandboxServiceTest, GetFlocResetExplanationForDisplay) {
+  // Check that the string description indicating what happens when the user
+  // resets the FLoC ID updates appropriately based on the feature parameter.
+  std::map<std::string, std::u16string> param_to_expected_string = {
+      {"1h", l10n_util::GetPluralStringFUTF16(
+                 IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 0)},
+      {"23h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 0)},
+      {"24h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 1)},
+      {"25h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 1)},
+      {"60h", l10n_util::GetPluralStringFUTF16(
+                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 3)},
+      {"167h", l10n_util::GetPluralStringFUTF16(
+                   IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 7)},
+      {"168h", l10n_util::GetPluralStringFUTF16(
+                   IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 7)}};
+
+  for (const auto& param_expected : param_to_expected_string) {
+    feature_list()->InitAndEnableFeatureWithParameters(
+        federated_learning::kFederatedLearningOfCohorts,
+        {{"update_interval", param_expected.first}});
+    EXPECT_EQ(param_expected.second,
+              privacy_sandbox_service()->GetFlocResetExplanationForDisplay());
+    feature_list()->Reset();
+  }
+}
+
+TEST_F(PrivacySandboxServiceTest, GetFlocStatusForDisplay) {
+  // Check the status of the user's FLoC is correctly returned. This depends
+  // on whether the FLoC origin trial feature is enabled, and whether the user
+  // has FLoC enabled.
+  feature_list()->InitWithFeatures(
+      {blink::features::kInterestCohortAPIOriginTrial}, {});
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, true);
+  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_ACTIVE),
+            privacy_sandbox_service()->GetFlocStatusForDisplay());
+
+  // The Privacy Sandbox APIs pref & FLoC pref should disable the trial when
+  // either is disabled.
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, false);
+  EXPECT_EQ(
+      l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_NOT_ACTIVE),
+      privacy_sandbox_service()->GetFlocStatusForDisplay());
+
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, true);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+  EXPECT_EQ(
+      l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_NOT_ACTIVE),
+      privacy_sandbox_service()->GetFlocStatusForDisplay());
+
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  feature_list()->Reset();
+  feature_list()->InitWithFeatures(
+      {}, {blink::features::kInterestCohortAPIOriginTrial});
+  EXPECT_EQ(l10n_util::GetStringUTF16(
+                IDS_PRIVACY_SANDBOX_FLOC_STATUS_ELIGIBLE_NOT_ACTIVE),
+            privacy_sandbox_service()->GetFlocStatusForDisplay());
+}
+
+TEST_F(PrivacySandboxServiceTest, IsFlocIdResettable) {
+  // Check that if FLoC is functional the FLoC ID is resettable, regardless of
+  // whether the FLoC ID is currently valid.
+  feature_list()->InitWithFeatures(
+      {blink::features::kInterestCohortAPIOriginTrial}, {});
+  federated_learning::FlocId floc_id = federated_learning::FlocId::CreateValid(
+      123456, base::Time(), base::Time::Now(),
+      /*sorting_lsh_version=*/0);
+  floc_id.SaveToPrefs(profile()->GetTestingPrefService());
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, true);
+  EXPECT_TRUE(privacy_sandbox_service()->IsFlocIdResettable());
+
+  feature_list()->Reset();
+  feature_list()->InitWithFeatures(
+      {}, {blink::features::kInterestCohortAPIOriginTrial});
+  EXPECT_FALSE(privacy_sandbox_service()->IsFlocIdResettable());
+
+  feature_list()->Reset();
+  feature_list()->InitWithFeatures(
+      {blink::features::kInterestCohortAPIOriginTrial}, {});
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+  EXPECT_FALSE(privacy_sandbox_service()->IsFlocIdResettable());
+
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+  EXPECT_FALSE(privacy_sandbox_service()->IsFlocIdResettable());
+
+  floc_id.UpdateStatusAndSaveToPrefs(
+      profile()->GetTestingPrefService(),
+      federated_learning::FlocId::Status::kInvalidReset);
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  EXPECT_TRUE(privacy_sandbox_service()->IsFlocIdResettable());
+}
+
+TEST_F(PrivacySandboxServiceTest, UserResetFlocID) {
+  // Check that the PrivacySandboxSettings is informed, and the appropriate
+  // actions are logged, in response to a user resetting the floc id.
+  auto* privacy_sandbox_settings =
+      PrivacySandboxSettingsFactory::GetForProfile(profile());
+  EXPECT_EQ(base::Time(), privacy_sandbox_settings->FlocDataAccessibleSince());
+
+  privacy_sandbox_test_util::MockPrivacySandboxObserver observer;
+  privacy_sandbox_settings->AddObserver(&observer);
+  EXPECT_CALL(observer, OnFlocDataAccessibleSinceUpdated(true)).Times(2);
+
+  base::UserActionTester user_action_tester;
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.ResetFloc"));
+
+  privacy_sandbox_service()->ResetFlocId(/*user_initiated=*/true);
+
+  EXPECT_NE(base::Time(), privacy_sandbox_settings->FlocDataAccessibleSince());
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.ResetFloc"));
+
+  privacy_sandbox_service()->ResetFlocId(/*user_initiated=*/false);
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.ResetFloc"));
+}
+
+TEST_F(PrivacySandboxServiceTest, IsFlocPrefEnabled) {
+  // IsFlocPrefEnabled should directly reflect the state of the FLoC pref.
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  EXPECT_TRUE(privacy_sandbox_service()->IsFlocPrefEnabled());
+
+  // The Privacy Sandbox APIs pref should not impact the return value.
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, false);
+  EXPECT_TRUE(privacy_sandbox_service()->IsFlocPrefEnabled());
+
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+  EXPECT_FALSE(privacy_sandbox_service()->IsFlocPrefEnabled());
+}
+
+TEST_F(PrivacySandboxServiceTest, SetFlocPrefEnabled) {
+  // The FLoc pref should always be updated by this function, regardless of
+  // other Sandbox State.
+  base::UserActionTester user_action_tester;
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocEnabled"));
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocDisabled"));
+
+  privacy_sandbox_service()->SetFlocPrefEnabled(false);
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxFlocEnabled));
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocEnabled"));
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocDisabled"));
+
+  // Disabling the sandbox shouldn't prevent the pref from being updated. This
+  // state is not directly allowable by the UI, but the state itself is valid
+  // as far as the PrivacySandboxService service is concerned.
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, false);
+  privacy_sandbox_service()->SetFlocPrefEnabled(true);
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxFlocEnabled));
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocEnabled"));
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocDisabled"));
+}
+
+TEST_F(PrivacySandboxServiceTest, OnPrivacySandboxPrefChanged) {
+  // When either the main Privacy Sandbox pref, or the FLoC pref, are changed
+  // the FLoC ID should be reset. This will be propagated to the settings
+  // instance, which should then notify observers.
+  privacy_sandbox_test_util::MockPrivacySandboxObserver
+      mock_privacy_sandbox_observer;
+  PrivacySandboxSettingsFactory::GetForProfile(profile())->AddObserver(
+      &mock_privacy_sandbox_observer);
+  EXPECT_CALL(mock_privacy_sandbox_observer,
+              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
+
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, false);
+  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
+
+  EXPECT_CALL(mock_privacy_sandbox_observer,
+              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
+
+  EXPECT_CALL(mock_privacy_sandbox_observer,
+              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
+
+  EXPECT_CALL(mock_privacy_sandbox_observer,
+              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxApisEnabled, true);
+  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
+}
+
+class PrivacySandboxServiceTestReconciliationBlocked
+    : public PrivacySandboxServiceTest {
+ public:
+  void InitializePrefsBeforeStart() override {
+    // Set the reconciled preference to true here, so when the service is
+    // created prior to each test case running, it does not attempt to reconcile
+    // the preferences. Tests must call ResetReconciledPref before testing to
+    // reset the preference to it's default value.
+    profile()->GetTestingPrefService()->SetUserPref(
+        prefs::kPrivacySandboxPreferencesReconciled,
+        std::make_unique<base::Value>(true));
+  }
+
+  void ResetReconciledPref() {
+    profile()->GetTestingPrefService()->SetUserPref(
+        prefs::kPrivacySandboxPreferencesReconciled,
+        std::make_unique<base::Value>(false));
+  }
+};
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked, ReconciliationOutcome) {
+  // Check that reconciling preferences has the appropriate outcome based on
+  // the current user cookie settings.
+  ResetReconciledPref();
+
+  // Blocking 3P cookies should disable.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->ReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxApisEnabled));
+
+  // Blocking all cookies should disable.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->ReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxApisEnabled));
+
+  // Blocking cookies via content setting exceptions, now matter how broad,
+  // should not disable.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/
+      {{"[*.]com", "*", ContentSetting::CONTENT_SETTING_BLOCK}},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->ReconcilePrivacySandboxPref();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxApisEnabled));
+
+  // If the user has already expressed control over the privacy sandbox, it
+  // should not be disabled.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+  profile()->GetTestingPrefService()->SetUserPref(
+      prefs::kPrivacySandboxManuallyControlled,
+      std::make_unique<base::Value>(true));
+
+  privacy_sandbox_service()->ReconcilePrivacySandboxPref();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxApisEnabled));
+
+  // Allowing cookies should leave the sandbox enabled.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+  profile()->GetTestingPrefService()->SetUserPref(
+      prefs::kPrivacySandboxManuallyControlled,
+      std::make_unique<base::Value>(true));
+
+  privacy_sandbox_service()->ReconcilePrivacySandboxPref();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxApisEnabled));
+
+  // Reconciliation should not enable the privacy sandbox.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/false,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+  profile()->GetTestingPrefService()->SetUserPref(
+      prefs::kPrivacySandboxManuallyControlled,
+      std::make_unique<base::Value>(false));
+
+  privacy_sandbox_service()->ReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxApisEnabled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       ImmediateReconciliationNoSync) {
+  // Check that if the user is not syncing preferences, reconciliation occurs
+  // immediately.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  auto registered_types =
+      sync_service()->GetUserSettings()->GetRegisteredSelectableTypes();
+  registered_types.Remove(syncer::UserSelectableType::kPreferences);
+  sync_service()->GetUserSettings()->SetSelectedTypes(
+      /*sync_everything=*/false, registered_types);
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       ImmediateReconciliationSyncComplete) {
+  // Check that if sync has completed a cycle that reconciliation occurs
+  // immediately.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  sync_service()->SetNonEmptyLastCycleSnapshot();
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       ImmediateReconciliationPersistentSyncError) {
+  // Check that if sync has a persistent error that reconciliation occurs
+  // immediately.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  sync_service()->SetDisableReasons(
+      syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR);
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       ImmediateReconciliationNoDisable) {
+  // Check that if the local settings would not disable the privacy sandbox
+  // that reconciliation runs.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/false,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       DelayedReconciliationSyncSuccess) {
+  // Check that a sync service which has not yet started delays reconciliation
+  // until it has completed a sync cycle.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  sync_service()->SetEmptyLastCycleSnapshot();
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  sync_service()->SetNonEmptyLastCycleSnapshot();
+  sync_service()->FireSyncCycleCompleted();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       DelayedReconciliationSyncFailure) {
+  // Check that a sync service which has not yet started delays reconciliation
+  // until a persistent error has occurred.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  sync_service()->SetEmptyLastCycleSnapshot();
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // A transient sync startup state should not result in reconciliation.
+  sync_service()->SetTransportState(
+      syncer::SyncService::TransportState::START_DEFERRED);
+  sync_service()->FireStateChanged();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // A state update after an unrecoverable error should result in
+  // reconciliation.
+  sync_service()->SetDisableReasons(
+      syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR);
+  sync_service()->FireStateChanged();
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       DelayedReconciliationIdentityFailure) {
+  // Check that a sync service which has not yet started delays reconciliation
+  // until a persistent identity error has occurred.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  sync_service()->SetEmptyLastCycleSnapshot();
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // An account becoming available should not result in reconciliation.
+  identity_test_env()->MakePrimaryAccountAvailable("test@test.com",
+                                                   signin::ConsentLevel::kSync);
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // A successful update to refresh tokens should not result in reconciliation.
+  identity_test_env()->SetRefreshTokenForPrimaryAccount();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // A persistent authentication error for a non-primary account should not
+  // result in reconciliation.
+  auto non_primary_account =
+      identity_test_env()->MakeAccountAvailable("unrelated@unrelated.com");
+  identity_test_env()->SetRefreshTokenForAccount(
+      non_primary_account.account_id);
+  identity_test_env()->UpdatePersistentErrorOfRefreshTokenForAccount(
+      non_primary_account.account_id,
+      GoogleServiceAuthError(
+          GoogleServiceAuthError::State::INVALID_GAIA_CREDENTIALS));
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // A persistent authentication error for the primary account should result
+  // in reconciliation.
+  identity_test_env()->UpdatePersistentErrorOfRefreshTokenForAccount(
+      identity_test_env()->identity_manager()->GetPrimaryAccountId(
+          signin::ConsentLevel::kSync),
+      GoogleServiceAuthError(
+          GoogleServiceAuthError::State::INVALID_GAIA_CREDENTIALS));
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       DelayedReconciliationSyncIssueThenManaged) {
+  // Check that if before an initial sync issue is resolved, the cookie settings
+  // are disabled by policy, that reconciliation does not run until the policy
+  // is removed.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  sync_service()->SetEmptyLastCycleSnapshot();
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // Apply a management state that is disabling cookies. This should result
+  // in the policy service being observed when the sync issue is resolved.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*managed_cookie_exceptions=*/{});
+
+  EXPECT_CALL(*policy_service(), AddObserver(policy::POLICY_DOMAIN_CHROME,
+                                             privacy_sandbox_service()))
+      .Times(1);
+
+  sync_service()->SetNonEmptyLastCycleSnapshot();
+  sync_service()->FireSyncCycleCompleted();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  // Removing the management state and firing the policy update listener should
+  // result in reconciliation running.
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  // The HostContentSettingsMap & PrefService are inspected directly, and not
+  // the PolicyMap provided here. The associated browser tests confirm that this
+  // is a valid approach.
+  privacy_sandbox_service()->OnPolicyUpdated(
+      policy::PolicyNamespace(), policy::PolicyMap(), policy::PolicyMap());
+
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       NoReconciliationAlreadyRun) {
+  // Reconciliation should not run if it is recorded as already occurring.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  profile()->GetTestingPrefService()->SetUserPref(
+      prefs::kPrivacySandboxPreferencesReconciled,
+      std::make_unique<base::Value>(true));
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  // If run, reconciliation would have disabled the sandbox.
+  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxApisEnabled));
+}
+
+TEST_F(PrivacySandboxServiceTestReconciliationBlocked,
+       MetricsLoggingOccursCorrectly) {
+  base::HistogramTester histograms;
+  const std::string histogram_name = "Settings.PrivacySandbox.Enabled";
+  ResetReconciledPref();
+
+  // The histogram should start off empty.
+  histograms.ExpectTotalCount(histogram_name, 0);
+
+  // For buckets that do not explicitly mention FLoC, it is assumed to be on,
+  // or its state is irrelevant, i.e. overridden by the Privacy Sandbox pref.
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, true);
+
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 1);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSEnabledAllowAll),
+      1);
+
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 2);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSEnabledBlock3P),
+      1);
+
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 3);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSEnabledBlockAll),
+      1);
+
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/false,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 4);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSDisabledAllowAll),
+      1);
+
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/false,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 5);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSDisabledBlock3P),
+      1);
+
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/false,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 6);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::PrivacySandboxService::
+                           SettingsPrivacySandboxEnabled::kPSDisabledBlockAll),
+      1);
+
+  // Verify that delayed reconciliation still logs properly.
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  sync_service()->SetEmptyLastCycleSnapshot();
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
+      prefs::kPrivacySandboxPreferencesReconciled));
+
+  histograms.ExpectTotalCount(histogram_name, 6);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSDisabledBlockAll),
+      1);
+
+  sync_service()->SetNonEmptyLastCycleSnapshot();
+  sync_service()->FireSyncCycleCompleted();
+
+  histograms.ExpectTotalCount(histogram_name, 7);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSDisabledBlockAll),
+      2);
+
+  ResetReconciledPref();
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/false,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 8);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSDisabledPolicyBlockAll),
+      1);
+
+  // Disable FLoC and test the buckets that reflect a disabled FLoC state.
+  ResetReconciledPref();
+  profile()->GetTestingPrefService()->SetBoolean(
+      prefs::kPrivacySandboxFlocEnabled, false);
+
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/false,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 9);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSEnabledFlocDisabledAllowAll),
+      1);
+
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 10);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSEnabledFlocDisabledBlock3P),
+      1);
+
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
+      /*privacy_sandbox_enabled=*/true,
+      /*block_third_party_cookies=*/true,
+      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
+      /*user_cookie_exceptions=*/{},
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
+      /*managed_cookie_exceptions=*/{});
+
+  privacy_sandbox_service()->MaybeReconcilePrivacySandboxPref();
+
+  histograms.ExpectTotalCount(histogram_name, 11);
+  histograms.ExpectBucketCount(
+      histogram_name,
+      static_cast<int>(PrivacySandboxService::SettingsPrivacySandboxEnabled::
+                           kPSEnabledFlocDisabledBlockAll),
+      1);
+}
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc
index 0dc065a..52cef6c 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc
@@ -5,11 +5,6 @@
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
 
 #include "base/feature_list.h"
-#include "base/i18n/time_formatting.h"
-#include "base/metrics/histogram.h"
-#include "base/metrics/histogram_functions.h"
-#include "base/metrics/user_metrics.h"
-#include "base/strings/string_number_conversions.h"
 #include "base/time/time.h"
 #include "chrome/browser/federated_learning/floc_id_provider.h"
 #include "chrome/common/chrome_features.h"
@@ -19,15 +14,10 @@
 #include "components/federated_learning/features/features.h"
 #include "components/prefs/pref_service.h"
 #include "components/privacy_sandbox/privacy_sandbox_prefs.h"
-#include "components/signin/public/identity_manager/identity_manager.h"
 #include "components/strings/grit/components_strings.h"
-#include "components/sync/driver/sync_service.h"
-#include "components/sync/driver/sync_user_settings.h"
 #include "content/public/common/content_features.h"
-#include "google_apis/gaia/google_service_auth_error.h"
 #include "net/cookies/site_for_cookies.h"
 #include "third_party/blink/public/common/features.h"
-#include "ui/base/l10n/l10n_util.h"
 #include "url/gurl.h"
 #include "url/origin.h"
 
@@ -72,142 +62,31 @@
   return false;
 }
 
-// Returns true iff based on |cookies_settings| & |prefs| third party cookies
-// are disabled by policy. This includes disabling third party cookies via
-// disabling all cookies.
-bool ThirdPartyCookiesDisabledByPolicy(
-    content_settings::CookieSettings* cookie_settings,
-    PrefService* prefs) {
-  auto* cookie_controls_mode_pref =
-      prefs->FindPreference(prefs::kCookieControlsMode);
-  auto cookie_controls_mode_value =
-      static_cast<content_settings::CookieControlsMode>(
-          cookie_controls_mode_pref->GetValue()->GetInt());
-
-  if (cookie_controls_mode_pref->IsManaged() &&
-      cookie_controls_mode_value ==
-          content_settings::CookieControlsMode::kBlockThirdParty) {
-    return true;
-  }
-
-  std::string default_cookie_setting_provider;
-  auto default_cookie_setting = cookie_settings->GetDefaultCookieSetting(
-      &default_cookie_setting_provider);
-  auto default_cookie_setting_source =
-      HostContentSettingsMap::GetSettingSourceFromProviderName(
-          default_cookie_setting_provider);
-
-  if (default_cookie_setting_source ==
-          content_settings::SettingSource::SETTING_SOURCE_POLICY &&
-      default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
-    return true;
-  }
-
-  return false;
-}
-
-// Returns whether |cookie_settings| and |prefs| imply that a user's Privacy
-// Sandbox preference should be turned off.
-bool ShouldDisablePrivacySandbox(
-    content_settings::CookieSettings* cookie_settings,
-    PrefService* prefs) {
-  // If a user has already expressed control over the Privacy Sandbox preference
-  // on any of their devices there is no need to disable it.
-  if (prefs->GetBoolean(prefs::kPrivacySandboxManuallyControlled))
-    return false;
-
-  auto cookie_controls_mode_value =
-      static_cast<content_settings::CookieControlsMode>(
-          prefs->GetInteger(prefs::kCookieControlsMode));
-
-  auto default_cookie_setting =
-      cookie_settings->GetDefaultCookieSetting(/*provider_id=*/nullptr);
-
-  // The Privacy Sandbox preference should be disabled if 3P cookies or all
-  // cookies are blocked.
-  return (cookie_controls_mode_value ==
-              content_settings::CookieControlsMode::kBlockThirdParty ||
-          default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK);
-}
-
-// Returns whether FLoC is allowable by the current state of |pref_service|.
-bool IsFlocAllowedByPrefs(PrefService* pref_service) {
-  return pref_service->GetBoolean(prefs::kPrivacySandboxFlocEnabled) &&
-         pref_service->GetBoolean(prefs::kPrivacySandboxApisEnabled);
-}
-
-// Returns the number of days in |time|, rounded to the closest day by hour if
-// there is at least 1 day, but rounded to 0 if |time| is less than 1 day.
-int GetNumberOfDaysRoundedAboveOne(base::TimeDelta time) {
-  int number_of_days = time.InDays();
-  if (number_of_days == 0)
-    return 0;
-
-  int number_of_hours_past_day = (time - base::Days(number_of_days)).InHours();
-
-  if (number_of_hours_past_day >= 12)
-    number_of_days++;
-
-  return number_of_days;
-}
-
 }  // namespace
 
 PrivacySandboxSettings::PrivacySandboxSettings(
     HostContentSettingsMap* host_content_settings_map,
     content_settings::CookieSettings* cookie_settings,
-    PrefService* pref_service,
-    policy::PolicyService* policy_service,
-    syncer::SyncService* sync_service,
-    signin::IdentityManager* identity_manager)
+    PrefService* pref_service)
     : host_content_settings_map_(host_content_settings_map),
       cookie_settings_(cookie_settings),
-      pref_service_(pref_service),
-      policy_service_(policy_service),
-      sync_service_(sync_service),
-      identity_manager_(identity_manager) {
+      pref_service_(pref_service) {
   DCHECK(pref_service_);
   DCHECK(host_content_settings_map_);
   DCHECK(cookie_settings_);
-  DCHECK(policy_service_);
-  // The |sync_service_| may be null (if sync is explitily disabled, or if the
-  // browser context is off the record). A null |idenity_manager_| should only
-  // occur if the browser context is off the record, in which case
-  // |sync_service_| must also be null.
-  DCHECK(identity_manager_ || !sync_service_);
-
   // "Clear on exit" causes a cookie deletion on shutdown. But for practical
   // purposes, we're notifying the observers on startup (which should be
   // equivalent, as no cookie operations could have happened while the profile
   // was shut down).
   if (IsCookiesClearOnExitEnabled(host_content_settings_map_))
     OnCookiesCleared();
-
-  // Register observers for the Privacy Sandbox & FLoC preferences.
-  user_prefs_registrar_.Init(pref_service_);
-  user_prefs_registrar_.Add(
-      prefs::kPrivacySandboxApisEnabled,
-      base::BindRepeating(&PrivacySandboxSettings::OnPrivacySandboxPrefChanged,
-                          base::Unretained(this)));
-  user_prefs_registrar_.Add(
-      prefs::kPrivacySandboxFlocEnabled,
-      base::BindRepeating(&PrivacySandboxSettings::OnPrivacySandboxPrefChanged,
-                          base::Unretained(this)));
-
-  // On first entering the privacy sandbox experiment, users may have the
-  // privacy sandbox disabled (or "reconciled") based on their current cookie
-  // settings (e.g. blocking 3P cookies). Depending on the state of the sync
-  // service, identity manager, and cookie setting, reconciliation may not run
-  // immediately, or may not run at all.
-  // TODO(crbug.com/1166665): Remove reconciliation logic when kAPI controls are
-  // further separated from cookie controls.
-  MaybeReconcilePrivacySandboxPref();
 }
 
 PrivacySandboxSettings::~PrivacySandboxSettings() = default;
 
 bool PrivacySandboxSettings::IsFlocAllowed() const {
-  return IsFlocAllowedByPrefs(pref_service_);
+  return pref_service_->GetBoolean(prefs::kPrivacySandboxFlocEnabled) &&
+         pref_service_->GetBoolean(prefs::kPrivacySandboxApisEnabled);
 }
 
 bool PrivacySandboxSettings::IsFlocAllowedForContext(
@@ -228,95 +107,13 @@
   return pref_service_->GetTime(prefs::kPrivacySandboxFlocDataAccessibleSince);
 }
 
-std::u16string PrivacySandboxSettings::GetFlocDescriptionForDisplay() const {
-  return l10n_util::GetPluralStringFUTF16(
-      IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION,
-      GetNumberOfDaysRoundedAboveOne(
-          federated_learning::kFlocIdScheduledUpdateInterval.Get()));
-}
+void PrivacySandboxSettings::SetFlocDataAccessibleFromNow(
+    bool reset_calculate_timer) const {
+  pref_service_->SetTime(prefs::kPrivacySandboxFlocDataAccessibleSince,
+                         base::Time::Now());
 
-std::u16string PrivacySandboxSettings::GetFlocIdForDisplay() const {
-  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
-      blink::features::kInterestCohortAPIOriginTrial);
-  auto floc_id = federated_learning::FlocId::ReadFromPrefs(pref_service_);
-  if (!IsFlocAllowed() || !floc_feature_enabled || !floc_id.IsValid())
-    return l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID);
-
-  return base::NumberToString16(floc_id.ToUint64());
-}
-
-/*static*/ std::u16string PrivacySandboxSettings::GetFlocIdNextUpdateForDisplay(
-    federated_learning::FlocIdProvider* floc_id_provider,
-    PrefService* pref_service,
-    const base::Time& current_time) {
-  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
-      blink::features::kInterestCohortAPIOriginTrial);
-
-  if (!floc_id_provider || !floc_feature_enabled ||
-      !IsFlocAllowedByPrefs(pref_service)) {
-    return l10n_util::GetStringUTF16(
-        IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE_INVALID);
-  }
-
-  auto next_compute_time = floc_id_provider->GetApproximateNextComputeTime();
-
-  // There are no guarantee that the next compute time is in the future. This
-  // should only occur when a compute is soon to occur, so assuming the current
-  // time is suitable.
-  if (next_compute_time < current_time)
-    next_compute_time = current_time;
-
-  return l10n_util::GetPluralStringFUTF16(
-      IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE,
-      GetNumberOfDaysRoundedAboveOne(next_compute_time - current_time));
-}
-
-std::u16string PrivacySandboxSettings::GetFlocResetExplanationForDisplay()
-    const {
-  return l10n_util::GetPluralStringFUTF16(
-      IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION,
-      GetNumberOfDaysRoundedAboveOne(
-          federated_learning::kFlocIdScheduledUpdateInterval.Get()));
-}
-
-std::u16string PrivacySandboxSettings::GetFlocStatusForDisplay() const {
-  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
-      blink::features::kInterestCohortAPIOriginTrial);
-  const bool floc_setting_enabled = IsFlocAllowed();
-  if (floc_setting_enabled) {
-    return floc_feature_enabled
-               ? l10n_util::GetStringUTF16(
-                     IDS_PRIVACY_SANDBOX_FLOC_STATUS_ACTIVE)
-               : l10n_util::GetStringUTF16(
-                     IDS_PRIVACY_SANDBOX_FLOC_STATUS_ELIGIBLE_NOT_ACTIVE);
-  }
-
-  return l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_NOT_ACTIVE);
-}
-
-bool PrivacySandboxSettings::IsFlocIdResettable() const {
-  const bool floc_feature_enabled = base::FeatureList::IsEnabled(
-      blink::features::kInterestCohortAPIOriginTrial);
-  return floc_feature_enabled && IsFlocAllowed();
-}
-
-void PrivacySandboxSettings::ResetFlocId(bool user_initiated) const {
-  SetFlocDataAccessibleFromNow(/*reset_calculate_timer=*/true);
-  if (user_initiated) {
-    base::RecordAction(
-        base::UserMetricsAction("Settings.PrivacySandbox.ResetFloc"));
-  }
-}
-
-bool PrivacySandboxSettings::IsFlocPrefEnabled() const {
-  return pref_service_->GetBoolean(prefs::kPrivacySandboxFlocEnabled);
-}
-
-void PrivacySandboxSettings::SetFlocPrefEnabled(bool enabled) const {
-  pref_service_->SetBoolean(prefs::kPrivacySandboxFlocEnabled, enabled);
-  base::RecordAction(base::UserMetricsAction(
-      enabled ? "Settings.PrivacySandbox.FlocEnabled"
-              : "Settings.PrivacySandbox.FlocDisabled"));
+  for (auto& observer : observers_)
+    observer.OnFlocDataAccessibleSinceUpdated(reset_calculate_timer);
 }
 
 bool PrivacySandboxSettings::IsConversionMeasurementAllowed(
@@ -382,14 +179,6 @@
   return pref_service_->GetBoolean(prefs::kPrivacySandboxApisEnabled);
 }
 
-bool PrivacySandboxSettings::IsPrivacySandboxEnabled() {
-  return pref_service_->GetBoolean(prefs::kPrivacySandboxApisEnabled);
-}
-
-bool PrivacySandboxSettings::IsPrivacySandboxManaged() {
-  return pref_service_->IsManagedPreference(prefs::kPrivacySandboxApisEnabled);
-}
-
 void PrivacySandboxSettings::SetPrivacySandboxEnabled(bool enabled) {
   pref_service_->SetBoolean(prefs::kPrivacySandboxManuallyControlled, true);
   pref_service_->SetBoolean(prefs::kPrivacySandboxApisEnabled, enabled);
@@ -399,15 +188,6 @@
   SetFlocDataAccessibleFromNow(/*reset_calculate_timer=*/false);
 }
 
-void PrivacySandboxSettings::OnPrivacySandboxPrefChanged() {
-  // Any change of the two observed prefs should be accompanied by a
-  // reset of the FLoC cohort. Technically this only needs to occur on the
-  // transition from FLoC being effectively disabled to effectively enabled,
-  // but performing it on every pref change achieves the same user visible
-  // behavior, and is much simpler.
-  ResetFlocId(/*user_initiated=*/false);
-}
-
 void PrivacySandboxSettings::AddObserver(Observer* observer) {
   observers_.AddObserver(observer);
 }
@@ -416,32 +196,6 @@
   observers_.RemoveObserver(observer);
 }
 
-void PrivacySandboxSettings::Shutdown() {
-  StopObserving();
-}
-
-void PrivacySandboxSettings::OnPolicyUpdated(const policy::PolicyNamespace& ns,
-                                             const policy::PolicyMap& previous,
-                                             const policy::PolicyMap& current) {
-  // |pref_service_| and |cookie_settings_| will have been made aware
-  // of the policy changes before this observer function is called.
-  MaybeReconcilePrivacySandboxPref();
-}
-
-void PrivacySandboxSettings::OnStateChanged(syncer::SyncService* sync) {
-  MaybeReconcilePrivacySandboxPref();
-}
-
-void PrivacySandboxSettings::OnSyncCycleCompleted(syncer::SyncService* sync) {
-  MaybeReconcilePrivacySandboxPref();
-}
-
-void PrivacySandboxSettings::OnErrorStateOfRefreshTokenUpdatedForAccount(
-    const CoreAccountInfo& account_info,
-    const GoogleServiceAuthError& error) {
-  MaybeReconcilePrivacySandboxPref();
-}
-
 bool PrivacySandboxSettings::IsPrivacySandboxAllowedForContext(
     const GURL& url,
     const absl::optional<url::Origin>& top_frame_origin,
@@ -456,196 +210,3 @@
       cookie_settings, url,
       top_frame_origin ? top_frame_origin->GetURL() : GURL());
 }
-
-void PrivacySandboxSettings::MaybeReconcilePrivacySandboxPref() {
-  // No need to reconcile preferences if it has already happened.
-  if (pref_service_->GetBoolean(prefs::kPrivacySandboxPreferencesReconciled)) {
-    LogPrivacySandboxState();
-    return;
-  }
-
-  // If all or 3P cookies are disabled by policy, this will be reflected
-  // directly in the Privacy Sandbox preference at the policy level. No attempt
-  // should be made to reconcile the user preference while this is true, as due
-  // to sync this may opt a user out on a personal device based on managed
-  // device settings. If the device becomes unmanaged, or the policy changes,
-  // reconciliation should occur.
-  if (ThirdPartyCookiesDisabledByPolicy(cookie_settings_, pref_service_)) {
-    // The policy service may already be observed, e.g. if this method is being
-    // called after an update which did not result in reconciliation running.
-    if (!policy_service_observed_) {
-      policy_service_->AddObserver(policy::POLICY_DOMAIN_CHROME, this);
-      policy_service_observed_ = true;
-      LogPrivacySandboxState();
-    }
-    return;
-  }
-
-  // Reconciliation of the Privacy Sandbox preference is based on both synced
-  // and unsynced settings. The synced settings are only consulted should the
-  // local settings indicate the Privacy Sandbox should be disabled.
-  if (!ShouldDisablePrivacySandbox(cookie_settings_, pref_service_)) {
-    ReconcilePrivacySandboxPref();
-    return;
-  }
-
-  // The current settings applied to this device indicate that the Privacy
-  // Sandbox should be disabled. A decision however cannot be made until it is
-  // confirmed that either:
-  //   A) the synced state is available, or
-  //   B) it has become clear that the sync state will not be available.
-  // In both cases reconciliation is run. In outcome A this is obviously fine,
-  // in outcome B this risks clobbering some opted in devices if this device
-  // would later sync the disabled preference (e.g. by the user signing back
-  // into a sync paused device).
-
-  // If the service currently indicates that preferences will not be synced,
-  // then outcome B has been reached.
-  if (!sync_service_ || !sync_service_->IsSyncFeatureEnabled() ||
-      !sync_service_->GetUserSettings()->GetSelectedTypes().Has(
-          syncer::UserSelectableType::kPreferences) ||
-      sync_service_->HasUnrecoverableError()) {
-    ReconcilePrivacySandboxPref();
-    return;
-  }
-
-  // If the sync service has already completed a sync cycle, then outcome A has
-  // been reached.
-  if (sync_service_->HasCompletedSyncCycle()) {
-    ReconcilePrivacySandboxPref();
-    return;
-  }
-
-  // If there is a persistent auth error associated with the primary account's
-  // refresh token, then sync will not be able to run and then outcome B has
-  // been reached.
-  GoogleServiceAuthError auth_error =
-      identity_manager_->GetErrorStateOfRefreshTokenForAccount(
-          identity_manager_->GetPrimaryAccountId(signin::ConsentLevel::kSync));
-  if (auth_error.IsPersistentError()) {
-    ReconcilePrivacySandboxPref();
-    return;
-  }
-
-  // Further tracking to determine when outcome A or B has occurred requires
-  // observing both the sync service and the identity manager. It is valid for
-  // observation to already be occurring as this method may be called multiple
-  // times if observed updates do not result in outcome A or B being reached.
-  DCHECK(sync_service_);
-  DCHECK(identity_manager_);
-  if (!sync_service_observer_.IsObserving())
-    sync_service_observer_.Observe(sync_service_.get());
-  if (!identity_manager_observer_.IsObserving())
-    identity_manager_observer_.Observe(identity_manager_.get());
-}
-
-void PrivacySandboxSettings::ReconcilePrivacySandboxPref() {
-  if (ShouldDisablePrivacySandbox(cookie_settings_, pref_service_))
-    pref_service_->SetBoolean(prefs::kPrivacySandboxApisEnabled, false);
-
-  pref_service_->SetBoolean(prefs::kPrivacySandboxPreferencesReconciled, true);
-
-  // If observers were setup they are no longer required after reconciliation
-  // has occurred.
-  StopObserving();
-  LogPrivacySandboxState();
-}
-
-void PrivacySandboxSettings::SetFlocDataAccessibleFromNow(
-    bool reset_calculate_timer) const {
-  pref_service_->SetTime(prefs::kPrivacySandboxFlocDataAccessibleSince,
-                         base::Time::Now());
-
-  for (auto& observer : observers_)
-    observer.OnFlocDataAccessibleSinceUpdated(reset_calculate_timer);
-}
-
-void PrivacySandboxSettings::StopObserving() {
-  // Removing a non-observing observer is a no-op.
-  sync_service_observer_.Reset();
-  identity_manager_observer_.Reset();
-  if (policy_service_observed_) {
-    policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this);
-    policy_service_observed_ = false;
-  }
-}
-
-void PrivacySandboxSettings::RecordPrivacySandboxHistogram(
-    PrivacySandboxSettings::SettingsPrivacySandboxEnabled state) {
-  base::UmaHistogramEnumeration("Settings.PrivacySandbox.Enabled", state);
-}
-
-void PrivacySandboxSettings::LogPrivacySandboxState() {
-  // Check policy status first.
-  std::string default_cookie_setting_provider;
-  auto default_cookie_setting = cookie_settings_->GetDefaultCookieSetting(
-      &default_cookie_setting_provider);
-  auto default_cookie_setting_source =
-      HostContentSettingsMap::GetSettingSourceFromProviderName(
-          default_cookie_setting_provider);
-
-  if (default_cookie_setting_source ==
-          content_settings::SettingSource::SETTING_SOURCE_POLICY &&
-      default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
-    RecordPrivacySandboxHistogram(
-        PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-            kPSDisabledPolicyBlockAll);
-    return;
-  }
-
-  auto* cookie_controls_mode_pref =
-      pref_service_->FindPreference(prefs::kCookieControlsMode);
-  auto cookie_controls_mode_value =
-      static_cast<content_settings::CookieControlsMode>(
-          cookie_controls_mode_pref->GetValue()->GetInt());
-
-  if (cookie_controls_mode_pref->IsManaged() &&
-      cookie_controls_mode_value ==
-          content_settings::CookieControlsMode::kBlockThirdParty) {
-    RecordPrivacySandboxHistogram(
-        PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-            kPSDisabledPolicyBlock3P);
-    return;
-  }
-
-  if (pref_service_->GetBoolean(prefs::kPrivacySandboxApisEnabled)) {
-    const bool floc_enabled =
-        pref_service_->GetBoolean(prefs::kPrivacySandboxFlocEnabled);
-
-    if (default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
-      RecordPrivacySandboxHistogram(
-          floc_enabled ? PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                             kPSEnabledBlockAll
-                       : PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                             kPSEnabledFlocDisabledBlockAll);
-    } else if (cookie_controls_mode_value ==
-               content_settings::CookieControlsMode::kBlockThirdParty) {
-      RecordPrivacySandboxHistogram(
-          floc_enabled ? PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                             kPSEnabledBlock3P
-                       : PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                             kPSEnabledFlocDisabledBlock3P);
-    } else {
-      RecordPrivacySandboxHistogram(
-          floc_enabled ? PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                             kPSEnabledAllowAll
-                       : PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                             kPSEnabledFlocDisabledAllowAll);
-    }
-  } else {
-    if (default_cookie_setting == ContentSetting::CONTENT_SETTING_BLOCK) {
-      RecordPrivacySandboxHistogram(
-          PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-              kPSDisabledBlockAll);
-    } else if (cookie_controls_mode_value ==
-               content_settings::CookieControlsMode::kBlockThirdParty) {
-      RecordPrivacySandboxHistogram(
-          PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-              kPSDisabledBlock3P);
-    } else {
-      RecordPrivacySandboxHistogram(
-          PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-              kPSDisabledAllowAll);
-    }
-  }
-}
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings.h b/chrome/browser/privacy_sandbox/privacy_sandbox_settings.h
index 68c1d71..a6c7947 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings.h
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings.h
@@ -7,19 +7,12 @@
 
 #include "base/gtest_prod_util.h"
 #include "base/memory/raw_ptr.h"
-#include "base/memory/ref_counted.h"
 #include "base/observer_list.h"
-#include "base/scoped_observation.h"
 #include "base/time/time.h"
-#include "chrome/browser/federated_learning/floc_id_provider.h"
 #include "components/content_settings/core/common/content_settings.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/policy/core/common/policy_service.h"
 #include "components/prefs/pref_change_registrar.h"
-#include "components/signin/public/identity_manager/identity_manager.h"
-#include "components/sync/driver/sync_service.h"
-#include "components/sync/driver/sync_service_observer.h"
-#include "net/cookies/cookie_constants.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 class HostContentSettingsMap;
@@ -35,13 +28,13 @@
 
 // A service which acts as a intermediary between Privacy Sandbox APIs and the
 // preferences and content settings which define when they are allowed to be
-// accessed.
-// TODO (crbug.com/1154686): Move this and other Privacy Sandbox items into
-// components.
-class PrivacySandboxSettings : public KeyedService,
-                               public policy::PolicyService::Observer,
-                               public syncer::SyncServiceObserver,
-                               public signin::IdentityManager::Observer {
+// accessed. Privacy Sandbox APIs, regardless of where they live (renderer,
+// browser, network etc), must consult this service to determine when
+// they are allowed to run. While a basic on/off control is provided by this
+// service, embedders are expected to achieve fine-grained control though
+// the underlying preferences and content settings separately.
+// TODO (crbug.com/1154686): Move this service into components/
+class PrivacySandboxSettings : public KeyedService {
  public:
   class Observer {
    public:
@@ -50,10 +43,7 @@
 
   PrivacySandboxSettings(HostContentSettingsMap* host_content_settings_map,
                          content_settings::CookieSettings* cookie_settings,
-                         PrefService* pref_service,
-                         policy::PolicyService* policy_service,
-                         syncer::SyncService* sync_service,
-                         signin::IdentityManager* identity_manager);
+                         PrefService* pref_service);
   ~PrivacySandboxSettings() override;
 
   // Returns whether FLoC is allowed at all. If false, FLoC calculations should
@@ -75,55 +65,10 @@
   // which case no history is eligible.
   base::Time FlocDataAccessibleSince() const;
 
-  // Returns a description of FLoC ready for display to the user. Correctly
-  // takes into account the FLoC feature parameters when determining the number
-  // of days between cohort calculations.
-  std::u16string GetFlocDescriptionForDisplay() const;
-
-  // Returns the current FLoC cohort identifier for the associated profile in
-  // string format suitable for direct display to the user. If the cohort is
-  // not valid, the appropriate descriptive string is returned instead.
-  std::u16string GetFlocIdForDisplay() const;
-
-  // Returns when the user's current FLoC cohort identifier will next be updated
-  // in a string format suitable for direct display to the user. If no compute
-  // is scheduled, the appropriate descriptive string is returned instead.
-  // This is static to break a circular dependency between this service, and
-  // the FlocIdProvider service. This pushes the requirement to the caller to
-  // ensure the profile is not in a shutdown state before calling.
-  // TODO(crbug.com/1210405): This is indicative of an architecture issue and
-  // should be changed or broken out into an explicit helper.
-  static std::u16string GetFlocIdNextUpdateForDisplay(
-      federated_learning::FlocIdProvider* floc_id_provider,
-      PrefService* pref_service,
-      const base::Time& current_time);
-
-  // Returns the display ready string explanaing what happens when the user
-  // resets the FLoC cohort identifier.
-  std::u16string GetFlocResetExplanationForDisplay() const;
-
-  // Returns a display ready string explaining the current status of FloC. E.g.
-  // the effective state of the Finch experiment, and the user's setting.
-  std::u16string GetFlocStatusForDisplay() const;
-
-  // Returns whether the user's current FLoC ID can be reset. This requires that
-  // the FLoC feature be enabled and FLoC be enabled in preferences. It does not
-  // require that the current ID is valid, as resetting the ID also resets the
-  // compute timer, it should be available whenever FLoC is active.
-  bool IsFlocIdResettable() const;
-
   // Sets the time when history is accessible for FLoC calculation to the
-  // current time and resets the time to the next FLoC id calculation. If
-  // |user_initiated| is true, records the associated User Metrics Action.
-  void ResetFlocId(bool user_initiated) const;
-
-  // Returns whether the FLoC preference is enabled. This should only be used
-  // for displaying the preference state to the user, and should *not* be used
-  // for determining whether FLoC is allowed or not.
-  bool IsFlocPrefEnabled() const;
-
-  // Sets the FLoC preference to |enabled|.
-  void SetFlocPrefEnabled(bool enabled) const;
+  // current time, optionally resetting the time to the next FLoC id calculation
+  // if |reset_calculate_timer| is true.
+  void SetFlocDataAccessibleFromNow(bool reset_calculate_timer) const;
 
   // Determines whether Conversion Measurement is allowable in a particular
   // context. Should be called at both impression & conversion. At each of these
@@ -155,19 +100,12 @@
   // Returns whether the Privacy Sandbox is "generally" available. A return
   // value of false indicates that the sandbox is completely disabled. A return
   // value of true *must* be followed up by the appropriate context specific
-  // check. If the sandbox experiment is disabled, this check is equivalent to
-  // |!cookie_settings_->ShouldBlockThirdPartyCookies()|; but if the experiment
-  // is enabled, this will check prefs::kPrivacySandboxApisEnabled instead.
+  // check.
   bool IsPrivacySandboxAllowed();
 
-  // Used by the UI to check if the API is enabled. Unlike the method above,
-  // this method only checks the pref directly.
-  bool IsPrivacySandboxEnabled();
-
-  // Returns whether the state of the API is managed.
-  bool IsPrivacySandboxManaged();
-
-  // Gets invoked by the UI when the user manually changed the state of the API.
+  // Disables the Privacy Sandbox completely if |enabled| is false, if |enabled|
+  // is true, more granular checks will still be performed to determine if
+  // specific APIs are available in specific contexts.
   void SetPrivacySandboxEnabled(bool enabled);
 
   // Called when there's a broad cookies clearing action. For example, this
@@ -175,80 +113,10 @@
   // Clear-Site-Data header, as it's restricted to a specific site.
   void OnCookiesCleared();
 
-  // Called when a preference relevant to the the Privacy Sandbox is changed.
-  void OnPrivacySandboxPrefChanged();
-
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
 
-  // KeyedService:
-  void Shutdown() override;
-
-  // policy::PolicyService::Observer:
-  void OnPolicyUpdated(const policy::PolicyNamespace& ns,
-                       const policy::PolicyMap& previous,
-                       const policy::PolicyMap& current) override;
-
-  // syncer::SyncServiceObserver:
-  void OnStateChanged(syncer::SyncService* sync) override;
-  void OnSyncCycleCompleted(syncer::SyncService* sync) override;
-
-  // signin::IdentityManager::Observer:
-  // TODO(crbug.com/1167680): This is only required to capture failure scenarios
-  // that affect sync, yet aren't reported via SyncServiceObserver.
-  void OnErrorStateOfRefreshTokenUpdatedForAccount(
-      const CoreAccountInfo& account_info,
-      const GoogleServiceAuthError& error) override;
-
  protected:
-  friend class PrivacySandboxSettingsTest;
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           ReconciliationOutcome);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           ImmediateReconciliationNoSync);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           ImmediateReconciliationSyncComplete);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           ImmediateReconciliationPersistentSyncError);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           ImmediateReconciliationNoDisable);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           DelayedReconciliationSyncSuccess);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           DelayedReconciliationSyncFailure);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           DelayedReconciliationIdentityFailure);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           DelayedReconciliationSyncIssueThenManaged);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           NoReconciliationAlreadyRun);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           NoReconciliationSandboxSettingsDisabled);
-  FRIEND_TEST_ALL_PREFIXES(PrivacySandboxSettingsTestReconciliationBlocked,
-                           MetricsLoggingOccursCorrectly);
-
-  // Contains all possible privacy sandbox states, recorded on startup.
-  // These values are persisted to logs. Entries should not be renumbered and
-  // numeric values should never be reused.
-  // Must be kept in sync with the SettingsPrivacySandboxEnabled enum in
-  // histograms/enums.xml.
-  enum class SettingsPrivacySandboxEnabled {
-    kPSEnabledAllowAll = 0,
-    kPSEnabledBlock3P = 1,
-    kPSEnabledBlockAll = 2,
-    kPSDisabledAllowAll = 3,
-    kPSDisabledBlock3P = 4,
-    kPSDisabledBlockAll = 5,
-    kPSDisabledPolicyBlock3P = 6,
-    kPSDisabledPolicyBlockAll = 7,
-    kPSEnabledFlocDisabledAllowAll = 8,
-    kPSEnabledFlocDisabledBlock3P = 9,
-    kPSEnabledFlocDisabledBlockAll = 10,
-    // Add values above this line with a corresponding label in
-    // tools/metrics/histograms/enums.xml
-    kMaxValue = kPSEnabledFlocDisabledBlockAll,
-  };
-
   // Determines based on the current features, preferences and provided
   // |cookie_settings| whether Privacy Sandbox APIs are generally allowable for
   // |url| on |top_frame_origin|. Individual APIs may perform additional checks
@@ -259,55 +127,12 @@
       const absl::optional<url::Origin>& top_frame_origin,
       const ContentSettingsForOneType& cookie_settings) const;
 
-  // Inspects the current sync state and settings to determine if the Privacy
-  // Sandbox prefs should be reconciled. Calls ReconcilePrivacySandbox()
-  // immediately if appropriate, or may register sync and identity observers to
-  // call ReconcilePrivacySandbox() later as appropriate.
-  void MaybeReconcilePrivacySandboxPref();
-
-  // Selectively disable the Privacy Sandbox preference based on the local and
-  // synced state. Reconcilliation is only performed once per synced profile.
-  // As the sandbox is default enabled, reconcilliation will only ever opt a
-  // user out of the sandbox.
-  void ReconcilePrivacySandboxPref();
-
-  // Sets the time when history is accessible for FLoC calculation to the
-  // current time, optionally resetting the time to the next FLoC id calculation
-  // if |reset_calculate_timer| is true.
-  void SetFlocDataAccessibleFromNow(bool reset_calculate_timer) const;
-
-  // Stops any observation of services being performed by this class.
-  void StopObserving();
-
-  // Helper function to actually make the metrics call for
-  // LogPrivacySandboxState.
-  void RecordPrivacySandboxHistogram(SettingsPrivacySandboxEnabled state);
-
-  // Logs the state of the privacy sandbox and cookie settings. Called once per
-  // profile startup.
-  void LogPrivacySandboxState();
-
  private:
   base::ObserverList<Observer>::Unchecked observers_;
 
   raw_ptr<HostContentSettingsMap> host_content_settings_map_;
   raw_ptr<content_settings::CookieSettings> cookie_settings_;
   raw_ptr<PrefService> pref_service_;
-  raw_ptr<policy::PolicyService> policy_service_;
-  raw_ptr<syncer::SyncService> sync_service_;
-  raw_ptr<signin::IdentityManager> identity_manager_;
-
-  base::ScopedObservation<syncer::SyncService, syncer::SyncServiceObserver>
-      sync_service_observer_{this};
-  base::ScopedObservation<signin::IdentityManager,
-                          signin::IdentityManager::Observer>
-      identity_manager_observer_{this};
-
-  PrefChangeRegistrar user_prefs_registrar_;
-
-  // A manual record of whether policy_service_ is being observerd.
-  // Unfortunately PolicyService does not support scoped observers.
-  bool policy_service_observed_ = false;
 };
 
 #endif  // CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_SETTINGS_H_
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc
index c8985ce..4f6dbe8 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc
@@ -4,21 +4,14 @@
 
 #include "base/strings/strcat.h"
 #include "base/test/bind.h"
-#include "base/test/metrics/user_action_tester.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
-#include "components/content_settings/core/common/content_settings.h"
-#include "components/policy/core/browser/browser_policy_connector.h"
-#include "components/policy/core/common/mock_configuration_policy_provider.h"
-#include "components/policy/core/common/policy_map.h"
-#include "components/policy/policy_constants.h"
-#include "components/prefs/pref_service.h"
-#include "components/privacy_sandbox/privacy_sandbox_prefs.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
@@ -28,15 +21,6 @@
 #include "net/test/embedded_test_server/http_request.h"
 #include "net/test/embedded_test_server/http_response.h"
 
-namespace {
-
-class MockPrivacySandboxObserver : public PrivacySandboxSettings::Observer {
- public:
-  MOCK_METHOD1(OnFlocDataAccessibleSinceUpdated, void(bool));
-};
-
-}  // namespace
-
 class PrivacySandboxSettingsBrowserTest : public InProcessBrowserTest {
  public:
   void SetUpOnMainThread() override {
@@ -100,7 +84,7 @@
   EXPECT_EQ(base::Time(),
             privacy_sandbox_settings()->FlocDataAccessibleSince());
 
-  MockPrivacySandboxObserver observer;
+  privacy_sandbox_test_util::MockPrivacySandboxObserver observer;
   privacy_sandbox_settings()->AddObserver(&observer);
   EXPECT_CALL(observer, OnFlocDataAccessibleSinceUpdated(false));
 
@@ -118,7 +102,7 @@
   EXPECT_EQ(base::Time(),
             privacy_sandbox_settings()->FlocDataAccessibleSince());
 
-  MockPrivacySandboxObserver observer;
+  privacy_sandbox_test_util::MockPrivacySandboxObserver observer;
   privacy_sandbox_settings()->AddObserver(&observer);
   EXPECT_CALL(observer, OnFlocDataAccessibleSinceUpdated(testing::_)).Times(0);
 
@@ -129,92 +113,3 @@
   EXPECT_EQ(base::Time(),
             privacy_sandbox_settings()->FlocDataAccessibleSince());
 }
-
-// Check that the observer is called appropriately in response to a user
-// resetting the floc id.
-IN_PROC_BROWSER_TEST_F(PrivacySandboxSettingsBrowserTest, UserResetFlocID) {
-  EXPECT_EQ(base::Time(),
-            privacy_sandbox_settings()->FlocDataAccessibleSince());
-
-  MockPrivacySandboxObserver observer;
-  privacy_sandbox_settings()->AddObserver(&observer);
-  EXPECT_CALL(observer, OnFlocDataAccessibleSinceUpdated(true)).Times(2);
-
-  base::UserActionTester user_action_tester;
-  ASSERT_EQ(0, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.ResetFloc"));
-
-  privacy_sandbox_settings()->ResetFlocId(/*user_initiated=*/true);
-
-  EXPECT_NE(base::Time(),
-            privacy_sandbox_settings()->FlocDataAccessibleSince());
-  ASSERT_EQ(1, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.ResetFloc"));
-
-  privacy_sandbox_settings()->ResetFlocId(/*user_initiated=*/false);
-  ASSERT_EQ(1, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.ResetFloc"));
-}
-
-class PrivacySandboxSettingsBrowserPolicyTest
-    : public PrivacySandboxSettingsBrowserTest {
- public:
-  PrivacySandboxSettingsBrowserPolicyTest() {
-    policy_provider()->SetDefaultReturns(
-        /*is_initialization_complete_return=*/true,
-        /*is_first_policy_load_complete_return=*/true);
-    policy::BrowserPolicyConnector::SetPolicyProviderForTesting(
-        policy_provider());
-
-    policy::PolicyMap third_party_cookies_blocked_policy;
-    third_party_cookies_blocked_policy.Set(
-        policy::key::kBlockThirdPartyCookies, policy::POLICY_LEVEL_MANDATORY,
-        policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
-        base::Value(true),
-        /*external_data_fetcher=*/nullptr);
-    policy_provider()->UpdateChromePolicy(third_party_cookies_blocked_policy);
-  }
-
-  policy::MockConfigurationPolicyProvider* policy_provider() {
-    return &policy_provider_;
-  }
-
- protected:
-  testing::NiceMock<policy::MockConfigurationPolicyProvider> policy_provider_;
-};
-
-// Reconciliation should not run while 3P or all cookies are disabled by
-// policy, but should run if the policy is changed or removed.
-IN_PROC_BROWSER_TEST_F(PrivacySandboxSettingsBrowserPolicyTest,
-                       DelayedReconciliationCookieSettingsManaged) {
-  privacy_sandbox_settings();
-
-  // Policies set in the test constructor should have prevented reconciliation
-  // from running immediately.
-  EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // Check that applying a different policy which also results in 3P cookies
-  // being blocked does not result in reconciliation running.
-  policy::PolicyMap all_cookies_blocked_policy;
-  all_cookies_blocked_policy.Set(
-      policy::key::kDefaultCookiesSetting, policy::POLICY_LEVEL_MANDATORY,
-      policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
-      base::Value(CONTENT_SETTING_BLOCK),
-      /*external_data_fetcher=*/nullptr);
-  policy_provider()->UpdateChromePolicy(all_cookies_blocked_policy);
-  EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // Apply policy which allows third party cookies and ensure that
-  // reconciliation runs.
-  policy::PolicyMap third_party_cookies_allowed_policy;
-  third_party_cookies_allowed_policy.Set(
-      policy::key::kBlockThirdPartyCookies, policy::POLICY_LEVEL_MANDATORY,
-      policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
-      base::Value(false),
-      /*external_data_fetcher=*/nullptr);
-  policy_provider()->UpdateChromePolicy(third_party_cookies_allowed_policy);
-  EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc
index 7560ecc..99ea69f 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc
@@ -7,12 +7,9 @@
 #include "base/memory/singleton.h"
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
-#include "chrome/browser/policy/profile_policy_connector.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
 #include "chrome/browser/profiles/incognito_helpers.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/signin/identity_manager_factory.h"
-#include "chrome/browser/sync/sync_service_factory.h"
 #include "components/content_settings/core/browser/cookie_settings.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/keyed_service/core/keyed_service.h"
@@ -33,8 +30,6 @@
           BrowserContextDependencyManager::GetInstance()) {
   DependsOn(HostContentSettingsMapFactory::GetInstance());
   DependsOn(CookieSettingsFactory::GetInstance());
-  DependsOn(SyncServiceFactory::GetInstance());
-  DependsOn(IdentityManagerFactory::GetInstance());
 }
 
 KeyedService* PrivacySandboxSettingsFactory::BuildServiceInstanceFor(
@@ -43,10 +38,7 @@
 
   return new PrivacySandboxSettings(
       HostContentSettingsMapFactory::GetForProfile(profile),
-      CookieSettingsFactory::GetForProfile(profile).get(), profile->GetPrefs(),
-      profile->GetProfilePolicyConnector()->policy_service(),
-      SyncServiceFactory::GetForProfile(profile),
-      IdentityManagerFactory::GetForProfile(profile));
+      CookieSettingsFactory::GetForProfile(profile).get(), profile->GetPrefs());
 }
 
 content::BrowserContext* PrivacySandboxSettingsFactory::GetBrowserContextToUse(
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc
index 0897535..6649c14 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc
@@ -6,175 +6,63 @@
 
 #include "base/json/values_util.h"
 #include "base/test/gtest_util.h"
-#include "base/test/icu_test_util.h"
-#include "base/test/metrics/histogram_tester.h"
-#include "base/test/metrics/user_action_tester.h"
-#include "base/test/scoped_feature_list.h"
-#include "chrome/browser/content_settings/cookie_settings_factory.h"
-#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
-#include "chrome/browser/federated_learning/floc_id_provider.h"
-#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
-#include "chrome/browser/signin/identity_manager_factory.h"
-#include "chrome/browser/ui/webui/federated_learning/floc_internals.mojom.h"
-#include "chrome/common/chrome_features.h"
-#include "chrome/test/base/testing_profile.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h"
 #include "components/content_settings/core/browser/cookie_settings.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/content_settings/core/common/pref_names.h"
 #include "components/content_settings/core/test/content_settings_mock_provider.h"
 #include "components/content_settings/core/test/content_settings_test_utils.h"
-#include "components/federated_learning/features/features.h"
-#include "components/federated_learning/floc_id.h"
-#include "components/policy/core/common/mock_policy_service.h"
 #include "components/privacy_sandbox/privacy_sandbox_prefs.h"
-#include "components/signin/public/identity_manager/account_info.h"
-#include "components/signin/public/identity_manager/identity_test_environment.h"
-#include "components/strings/grit/components_strings.h"
-#include "components/sync/base/user_selectable_type.h"
-#include "components/sync/driver/test_sync_service.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
-#include "content/public/common/content_features.h"
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/blink/public/common/features.h"
-#include "third_party/blink/public/mojom/federated_learning/floc.mojom.h"
-#include "ui/base/l10n/l10n_util.h"
 #include "url/origin.h"
 
-namespace {
-
-class MockFlocIdProvider : public federated_learning::FlocIdProvider {
- public:
-  blink::mojom::InterestCohortPtr GetInterestCohortForJsApi(
-      const GURL& url,
-      const absl::optional<url::Origin>& top_frame_origin) const override {
-    return blink::mojom::InterestCohort::New();
-  }
-  MOCK_METHOD(federated_learning::mojom::WebUIFlocStatusPtr,
-              GetFlocStatusForWebUi,
-              (),
-              (const, override));
-  MOCK_METHOD(void, MaybeRecordFlocToUkm, (ukm::SourceId), (override));
-  MOCK_METHOD(base::Time, GetApproximateNextComputeTime, (), (const, override));
-};
-
-class MockPrivacySandboxObserver : public PrivacySandboxSettings::Observer {
- public:
-  MOCK_METHOD(void, OnFlocDataAccessibleSinceUpdated, (bool), (override));
-};
-
-// Define an additional content setting value to simulate an unmanaged default
-// content setting.
-const ContentSetting kNoSetting = static_cast<ContentSetting>(-1);
-
-struct CookieContentSettingException {
-  std::string primary_pattern;
-  std::string secondary_pattern;
-  ContentSetting content_setting;
-};
-
-}  // namespace
-
 class PrivacySandboxSettingsTest : public testing::Test {
  public:
   PrivacySandboxSettingsTest()
       : browser_task_environment_(
-            base::test::TaskEnvironment::TimeSource::MOCK_TIME) {}
+            base::test::TaskEnvironment::TimeSource::MOCK_TIME) {
+    content_settings::CookieSettings::RegisterProfilePrefs(prefs()->registry());
+    HostContentSettingsMap::RegisterProfilePrefs(prefs()->registry());
+    privacy_sandbox::RegisterProfilePrefs(prefs()->registry());
+
+    host_content_settings_map_ = new HostContentSettingsMap(
+        &prefs_, false /* is_off_the_record */, false /* store_last_modified */,
+        false /* restore_session */);
+    cookie_settings_ = new content_settings::CookieSettings(
+        host_content_settings_map_.get(), &prefs_, false, "chrome-extension");
+  }
+  ~PrivacySandboxSettingsTest() override {
+    host_content_settings_map()->ShutdownOnUIThread();
+  }
 
   void SetUp() override {
     InitializePrefsBeforeStart();
 
     privacy_sandbox_settings_ = std::make_unique<PrivacySandboxSettings>(
-        HostContentSettingsMapFactory::GetForProfile(profile()),
-        CookieSettingsFactory::GetForProfile(profile()).get(),
-        profile()->GetPrefs(), policy_service(), sync_service(),
-        identity_test_env()->identity_manager());
+        host_content_settings_map(), cookie_settings(), prefs());
   }
 
   virtual void InitializePrefsBeforeStart() {}
 
-  // Sets up preferences and content settings based on provided parameters.
-  void SetupTestState(
-      bool privacy_sandbox_enabled,
-      bool block_third_party_cookies,
-      ContentSetting default_cookie_setting,
-      std::vector<CookieContentSettingException> user_cookie_exceptions,
-      ContentSetting managed_cookie_setting,
-      std::vector<CookieContentSettingException> managed_cookie_exceptions) {
-    // Setup block-third-party-cookies settings.
-    profile()->GetTestingPrefService()->SetUserPref(
-        prefs::kCookieControlsMode,
-        std::make_unique<base::Value>(static_cast<int>(
-            block_third_party_cookies
-                ? content_settings::CookieControlsMode::kBlockThirdParty
-                : content_settings::CookieControlsMode::kOff)));
-
-    // Setup cookie content settings.
-    auto* map = HostContentSettingsMapFactory::GetForProfile(profile());
-    auto user_provider = std::make_unique<content_settings::MockProvider>();
-    auto managed_provider = std::make_unique<content_settings::MockProvider>();
-
-    if (default_cookie_setting != kNoSetting) {
-      user_provider->SetWebsiteSetting(
-          ContentSettingsPattern::Wildcard(),
-          ContentSettingsPattern::Wildcard(), ContentSettingsType::COOKIES,
-          std::make_unique<base::Value>(default_cookie_setting));
-    }
-
-    for (const auto& exception : user_cookie_exceptions) {
-      user_provider->SetWebsiteSetting(
-          ContentSettingsPattern::FromString(exception.primary_pattern),
-          ContentSettingsPattern::FromString(exception.secondary_pattern),
-          ContentSettingsType::COOKIES,
-          std::make_unique<base::Value>(exception.content_setting));
-    }
-
-    if (managed_cookie_setting != kNoSetting) {
-      managed_provider->SetWebsiteSetting(
-          ContentSettingsPattern::Wildcard(),
-          ContentSettingsPattern::Wildcard(), ContentSettingsType::COOKIES,
-          std::make_unique<base::Value>(managed_cookie_setting));
-    }
-
-    for (const auto& exception : managed_cookie_exceptions) {
-      managed_provider->SetWebsiteSetting(
-          ContentSettingsPattern::FromString(exception.primary_pattern),
-          ContentSettingsPattern::FromString(exception.secondary_pattern),
-          ContentSettingsType::COOKIES,
-          std::make_unique<base::Value>(exception.content_setting));
-    }
-
-    content_settings::TestUtils::OverrideProvider(
-        map, std::move(user_provider),
-        HostContentSettingsMap::DEFAULT_PROVIDER);
-    content_settings::TestUtils::OverrideProvider(
-        map, std::move(managed_provider),
-        HostContentSettingsMap::POLICY_PROVIDER);
-
-    profile()->GetTestingPrefService()->SetUserPref(
-        prefs::kPrivacySandboxApisEnabled,
-        std::make_unique<base::Value>(privacy_sandbox_enabled));
+  sync_preferences::TestingPrefServiceSyncable* prefs() { return &prefs_; }
+  HostContentSettingsMap* host_content_settings_map() {
+    return host_content_settings_map_.get();
+  }
+  content_settings::CookieSettings* cookie_settings() {
+    return cookie_settings_.get();
   }
 
-  TestingProfile* profile() { return &profile_; }
   PrivacySandboxSettings* privacy_sandbox_settings() {
     return privacy_sandbox_settings_.get();
   }
-  base::test::ScopedFeatureList* feature_list() { return &feature_list_; }
-  syncer::TestSyncService* sync_service() { return &sync_service_; }
-  policy::MockPolicyService* policy_service() { return &mock_policy_service_; }
-  signin::IdentityTestEnvironment* identity_test_env() {
-    return &identity_test_env_;
-  }
 
  private:
   content::BrowserTaskEnvironment browser_task_environment_;
-  signin::IdentityTestEnvironment identity_test_env_;
-  testing::NiceMock<policy::MockPolicyService> mock_policy_service_;
-
-  TestingProfile profile_;
-  base::test::ScopedFeatureList feature_list_;
-  syncer::TestSyncService sync_service_;
+  sync_preferences::TestingPrefServiceSyncable prefs_;
+  scoped_refptr<HostContentSettingsMap> host_content_settings_map_;
+  scoped_refptr<content_settings::CookieSettings> cookie_settings_;
 
   std::unique_ptr<PrivacySandboxSettings> privacy_sandbox_settings_;
 };
@@ -182,12 +70,13 @@
 TEST_F(PrivacySandboxSettingsTest, PreferenceOverridesDefaultContentSetting) {
   // When the Privacy Sandbox UI is available, the sandbox preference should
   // override the default cookie content setting.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
 
   EXPECT_TRUE(privacy_sandbox_settings()->IsFlocAllowedForContext(
@@ -212,7 +101,8 @@
                  GURL("https://another-embedded.com")}));
 
   // An allow exception should not override the preference value.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/false,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
@@ -223,7 +113,7 @@
         ContentSetting::CONTENT_SETTING_ALLOW},
        {"https://embedded.com", "https://another-test.com",
         ContentSetting::CONTENT_SETTING_ALLOW}},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
 
   EXPECT_FALSE(privacy_sandbox_settings()->IsFlocAllowedForContext(
@@ -251,7 +141,8 @@
 TEST_F(PrivacySandboxSettingsTest, CookieBlockExceptionsApply) {
   // When the Privacy Sandbox preference is enabled, targeted cookie block
   // exceptions should still apply.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
@@ -260,7 +151,7 @@
         ContentSetting::CONTENT_SETTING_BLOCK},
        {"https://another-embedded.com", "*",
         ContentSetting::CONTENT_SETTING_BLOCK}},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
 
   EXPECT_FALSE(privacy_sandbox_settings()->IsFlocAllowedForContext(
@@ -288,7 +179,8 @@
   // setting exists. What the managed default setting actually is should *not*
   // affect whether APIs are enabled. The cookie managed state is reflected in
   // the privacy sandbox preferences directly.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
@@ -324,7 +216,8 @@
 
   // Managed content setting exceptions should override both the privacy
   // sandbox pref and any user settings.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
@@ -373,7 +266,8 @@
   // A less specific block exception should not override a more specific allow
   // exception. The effective content setting in this scenario is still allow,
   // even though a block exception exists.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
@@ -386,7 +280,7 @@
         ContentSetting::CONTENT_SETTING_BLOCK},
        {"https://[*.]embedded.com", "https://[*.]another-test.com",
         ContentSetting::CONTENT_SETTING_BLOCK}},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
   EXPECT_TRUE(privacy_sandbox_settings()->IsFlocAllowedForContext(
       GURL("https://embedded.com"),
@@ -398,14 +292,15 @@
 
   // Exceptions which specify a top frame origin should not match against other
   // top frame origins, or an empty origin.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
       /*user_cookie_exceptions=*/
       {{"https://embedded.com", "https://test.com",
         ContentSetting::CONTENT_SETTING_BLOCK}},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/
       {{"https://embedded.com", "https://test.com",
         ContentSetting::CONTENT_SETTING_BLOCK}});
@@ -432,13 +327,14 @@
 
   // Exceptions which specify a wildcard top frame origin should match both
   // empty top frames and non empty top frames.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
       /*user_cookie_exceptions=*/
       {{"https://embedded.com", "*", ContentSetting::CONTENT_SETTING_BLOCK}},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
 
   EXPECT_FALSE(privacy_sandbox_settings()->IsFlocAllowedForContext(
@@ -467,12 +363,13 @@
 
 TEST_F(PrivacySandboxSettingsTest, IsFledgeAllowed) {
   // FLEDGE should be disabled if 3P cookies are blocked.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/true,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
 
   EXPECT_FALSE(privacy_sandbox_settings()->IsFledgeAllowed(
@@ -484,12 +381,13 @@
                 {GURL("https://embedded.com")}));
 
   // FLEDGE should be disabled if all cookies are blocked.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
 
   EXPECT_FALSE(privacy_sandbox_settings()->IsFledgeAllowed(
@@ -502,7 +400,8 @@
 
   // FLEDGE should be disabled if the privacy sandbox is disabled, regardless
   // of other cookie settings.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/false,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
@@ -524,7 +423,8 @@
 
   // The managed cookie content setting should not override a disabled privacy
   // sandbox setting.
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/false,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
@@ -542,77 +442,80 @@
 }
 
 TEST_F(PrivacySandboxSettingsTest, IsPrivacySandboxAllowed) {
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/false,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
   EXPECT_FALSE(privacy_sandbox_settings()->IsPrivacySandboxAllowed());
 
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/false,
       /*block_third_party_cookies=*/true,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
   EXPECT_FALSE(privacy_sandbox_settings()->IsPrivacySandboxAllowed());
 
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
   EXPECT_TRUE(privacy_sandbox_settings()->IsPrivacySandboxAllowed());
 }
 
 TEST_F(PrivacySandboxSettingsTest, IsFlocAllowed) {
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/true,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
+  prefs()->SetBoolean(prefs::kPrivacySandboxFlocEnabled, true);
   EXPECT_TRUE(privacy_sandbox_settings()->IsFlocAllowed());
 
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/false,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
+  prefs()->SetBoolean(prefs::kPrivacySandboxFlocEnabled, true);
   EXPECT_FALSE(privacy_sandbox_settings()->IsFlocAllowed());
 
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/true,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
+  prefs()->SetBoolean(prefs::kPrivacySandboxFlocEnabled, false);
   EXPECT_FALSE(privacy_sandbox_settings()->IsFlocAllowed());
 
-  SetupTestState(
+  privacy_sandbox_test_util::SetupTestState(
+      prefs(), host_content_settings_map(),
       /*privacy_sandbox_enabled=*/false,
       /*block_third_party_cookies=*/false,
       /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
       /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
+      /*managed_cookie_setting=*/privacy_sandbox_test_util::kNoSetting,
       /*managed_cookie_exceptions=*/{});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
+  prefs()->SetBoolean(prefs::kPrivacySandboxFlocEnabled, true);
   EXPECT_FALSE(privacy_sandbox_settings()->IsFlocAllowed());
 }
 
@@ -628,976 +531,13 @@
             privacy_sandbox_settings()->FlocDataAccessibleSince());
 }
 
-TEST_F(PrivacySandboxSettingsTest, GetFlocDescriptionForDisplay) {
-  // Check that the returned FLoC description correctly takes into account the
-  // time between FLoC recomputes.
-  std::map<std::string, std::u16string> param_to_expected_string = {
-      {"1h", l10n_util::GetPluralStringFUTF16(
-                 IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 0)},
-      {"23h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 0)},
-      {"24h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 1)},
-      {"25h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 1)},
-      {"60h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 3)},
-      {"167h", l10n_util::GetPluralStringFUTF16(
-                   IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 7)},
-      {"168h", l10n_util::GetPluralStringFUTF16(
-                   IDS_PRIVACY_SANDBOX_FLOC_DESCRIPTION, 7)}};
-
-  for (const auto& param_expected : param_to_expected_string) {
-    feature_list()->InitAndEnableFeatureWithParameters(
-        federated_learning::kFederatedLearningOfCohorts,
-        {{"update_interval", param_expected.first}});
-    EXPECT_EQ(param_expected.second,
-              privacy_sandbox_settings()->GetFlocDescriptionForDisplay());
-    feature_list()->Reset();
-  }
-}
-
-TEST_F(PrivacySandboxSettingsTest, GetFlocIdForDisplay) {
-  // Check that the cohort identifier is correctly converted to a string when
-  // available.
-  feature_list()->InitWithFeatures(
-      {blink::features::kInterestCohortAPIOriginTrial}, {});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, true);
-  federated_learning::FlocId floc_id = federated_learning::FlocId::CreateValid(
-      123456, base::Time(), base::Time::Now(),
-      /*sorting_lsh_version=*/0);
-  floc_id.SaveToPrefs(profile()->GetTestingPrefService());
-
-  EXPECT_EQ(std::u16string(u"123456"),
-            privacy_sandbox_settings()->GetFlocIdForDisplay());
-
-  // If the FLoC preference, the Sandbox Preference, or the feature is disabled,
-  // or the FLoC ID is invalid, the invalid string should be returned.
-  feature_list()->Reset();
-  feature_list()->InitWithFeatures(
-      {}, {blink::features::kInterestCohortAPIOriginTrial});
-  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
-            privacy_sandbox_settings()->GetFlocIdForDisplay());
-
-  feature_list()->Reset();
-  feature_list()->InitWithFeatures(
-      {blink::features::kInterestCohortAPIOriginTrial}, {});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, false);
-  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
-            privacy_sandbox_settings()->GetFlocIdForDisplay());
-
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, true);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
-            privacy_sandbox_settings()->GetFlocIdForDisplay());
-
-  floc_id.UpdateStatusAndSaveToPrefs(
-      profile()->GetTestingPrefService(),
-      federated_learning::FlocId::Status::kInvalidReset);
-  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_INVALID),
-            privacy_sandbox_settings()->GetFlocIdForDisplay());
-}
-
-TEST_F(PrivacySandboxSettingsTest, GetFlocIdNextUpdateForDisplay) {
-  // Check that date FLoC will be next updated is returned when available.
-  MockFlocIdProvider mock_floc_id_provider;
-  feature_list()->InitWithFeatures(
-      {blink::features::kInterestCohortAPIOriginTrial}, {});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, true);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-
-  std::map<base::TimeDelta, std::u16string> offsets_to_expected_string = {
-      {base::Hours(23), l10n_util::GetPluralStringFUTF16(
-                            IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 0)},
-      {base::Hours(25), l10n_util::GetPluralStringFUTF16(
-                            IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 1)},
-      {base::Days(2), l10n_util::GetPluralStringFUTF16(
-                          IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 2)},
-      {base::Hours(60), l10n_util::GetPluralStringFUTF16(
-                            IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 3)},
-      {base::Hours(167),  // 1 hour less than 7 days.
-       l10n_util::GetPluralStringFUTF16(
-           IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE, 7)}};
-
-  for (const auto& offset_expected : offsets_to_expected_string) {
-    EXPECT_CALL(mock_floc_id_provider, GetApproximateNextComputeTime)
-        .WillOnce(testing::Return(base::Time::Now() + offset_expected.first));
-    EXPECT_EQ(
-        offset_expected.second,
-        privacy_sandbox_settings()->GetFlocIdNextUpdateForDisplay(
-            &mock_floc_id_provider, profile()->GetPrefs(), base::Time::Now()));
-    testing::Mock::VerifyAndClearExpectations(&mock_floc_id_provider);
-  }
-
-  // Check that disabling FLoC is also reflected in the returned string.
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-  EXPECT_CALL(mock_floc_id_provider, GetApproximateNextComputeTime).Times(0);
-  EXPECT_EQ(
-      l10n_util::GetStringUTF16(
-          IDS_PRIVACY_SANDBOX_FLOC_TIME_TO_NEXT_COMPUTE_INVALID),
-      privacy_sandbox_settings()->GetFlocIdNextUpdateForDisplay(
-          &mock_floc_id_provider, profile()->GetPrefs(), base::Time::Now()));
-  testing::Mock::VerifyAndClearExpectations(&mock_floc_id_provider);
-
-  // Disabling the FLoC feature should also invalidate the next compute time.
-  feature_list()->Reset();
-  feature_list()->InitWithFeatures(
-      {}, {blink::features::kInterestCohortAPIOriginTrial});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  testing::Mock::VerifyAndClearExpectations(&mock_floc_id_provider);
-}
-
-TEST_F(PrivacySandboxSettingsTest, GetFlocResetExplanationForDisplay) {
-  // Check that the string description indicating what happens when the user
-  // resets the FLoC ID updates appropriately based on the feature parameter.
-  std::map<std::string, std::u16string> param_to_expected_string = {
-      {"1h", l10n_util::GetPluralStringFUTF16(
-                 IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 0)},
-      {"23h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 0)},
-      {"24h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 1)},
-      {"25h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 1)},
-      {"60h", l10n_util::GetPluralStringFUTF16(
-                  IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 3)},
-      {"167h", l10n_util::GetPluralStringFUTF16(
-                   IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 7)},
-      {"168h", l10n_util::GetPluralStringFUTF16(
-                   IDS_PRIVACY_SANDBOX_FLOC_RESET_EXPLANATION, 7)}};
-
-  for (const auto& param_expected : param_to_expected_string) {
-    feature_list()->InitAndEnableFeatureWithParameters(
-        federated_learning::kFederatedLearningOfCohorts,
-        {{"update_interval", param_expected.first}});
-    EXPECT_EQ(param_expected.second,
-              privacy_sandbox_settings()->GetFlocResetExplanationForDisplay());
-    feature_list()->Reset();
-  }
-}
-
-TEST_F(PrivacySandboxSettingsTest, GetFlocStatusForDisplay) {
-  // Check the status of the user's FLoC is correctly returned. This depends
-  // on whether the FLoC origin trial feature is enabled, and whether the user
-  // has FLoC enabled.
-  feature_list()->InitWithFeatures(
-      {blink::features::kInterestCohortAPIOriginTrial}, {});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, true);
-  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_ACTIVE),
-            privacy_sandbox_settings()->GetFlocStatusForDisplay());
-
-  // The Privacy Sandbox APIs pref & FLoC pref should disable the trial when
-  // either is disabled.
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, false);
-  EXPECT_EQ(
-      l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_NOT_ACTIVE),
-      privacy_sandbox_settings()->GetFlocStatusForDisplay());
-
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, true);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-  EXPECT_EQ(
-      l10n_util::GetStringUTF16(IDS_PRIVACY_SANDBOX_FLOC_STATUS_NOT_ACTIVE),
-      privacy_sandbox_settings()->GetFlocStatusForDisplay());
-
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  feature_list()->Reset();
-  feature_list()->InitWithFeatures(
-      {}, {blink::features::kInterestCohortAPIOriginTrial});
-  EXPECT_EQ(l10n_util::GetStringUTF16(
-                IDS_PRIVACY_SANDBOX_FLOC_STATUS_ELIGIBLE_NOT_ACTIVE),
-            privacy_sandbox_settings()->GetFlocStatusForDisplay());
-}
-
-TEST_F(PrivacySandboxSettingsTest, IsFlocIdResettable) {
-  // Check that if FLoC is functional the FLoC ID is resettable, regardless of
-  // whether the FLoC ID is currently valid.
-  feature_list()->InitWithFeatures(
-      {blink::features::kInterestCohortAPIOriginTrial}, {});
-  federated_learning::FlocId floc_id = federated_learning::FlocId::CreateValid(
-      123456, base::Time(), base::Time::Now(),
-      /*sorting_lsh_version=*/0);
-  floc_id.SaveToPrefs(profile()->GetTestingPrefService());
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, true);
-  EXPECT_TRUE(privacy_sandbox_settings()->IsFlocIdResettable());
-
-  feature_list()->Reset();
-  feature_list()->InitWithFeatures(
-      {}, {blink::features::kInterestCohortAPIOriginTrial});
-  EXPECT_FALSE(privacy_sandbox_settings()->IsFlocIdResettable());
-
-  feature_list()->Reset();
-  feature_list()->InitWithFeatures(
-      {blink::features::kInterestCohortAPIOriginTrial}, {});
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-  EXPECT_FALSE(privacy_sandbox_settings()->IsFlocIdResettable());
-
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-  EXPECT_FALSE(privacy_sandbox_settings()->IsFlocIdResettable());
-
-  floc_id.UpdateStatusAndSaveToPrefs(
-      profile()->GetTestingPrefService(),
-      federated_learning::FlocId::Status::kInvalidReset);
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  EXPECT_TRUE(privacy_sandbox_settings()->IsFlocIdResettable());
-}
-
-TEST_F(PrivacySandboxSettingsTest, IsFlocPrefEnabled) {
-  // IsFlocPrefEnabled should directly reflect the state of the FLoC pref.
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  EXPECT_TRUE(privacy_sandbox_settings()->IsFlocPrefEnabled());
-
-  // The Privacy Sandbox APIs pref should not impact the return value.
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, false);
-  EXPECT_TRUE(privacy_sandbox_settings()->IsFlocPrefEnabled());
-
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-  EXPECT_FALSE(privacy_sandbox_settings()->IsFlocPrefEnabled());
-}
-
-TEST_F(PrivacySandboxSettingsTest, SetFlocPrefEnabled) {
-  // The FLoc pref should always be updated by this function, regardless of
-  // other Sandbox State.
-  base::UserActionTester user_action_tester;
-  ASSERT_EQ(0, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.FlocEnabled"));
-  ASSERT_EQ(0, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.FlocDisabled"));
-
-  privacy_sandbox_settings()->SetFlocPrefEnabled(false);
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxFlocEnabled));
-  ASSERT_EQ(0, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.FlocEnabled"));
-  ASSERT_EQ(1, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.FlocDisabled"));
-
-  // Disabling the sandbox shouldn't prevent the pref from being updated. This
-  // state is not directly allowable by the UI, but the state itself is valid
-  // as far as the PrivacySandboxSettings service is concerned.
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, false);
-  privacy_sandbox_settings()->SetFlocPrefEnabled(true);
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxFlocEnabled));
-  ASSERT_EQ(1, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.FlocEnabled"));
-  ASSERT_EQ(1, user_action_tester.GetActionCount(
-                   "Settings.PrivacySandbox.FlocDisabled"));
-}
-
-TEST_F(PrivacySandboxSettingsTest, OnPrivacySandboxPrefChanged) {
-  // When either the main Privacy Sandbox pref, or the FLoC pref, are changed
-  // the FLoC ID should be reset.
-  MockPrivacySandboxObserver mock_privacy_sandbox_observer;
-  privacy_sandbox_settings()->AddObserver(&mock_privacy_sandbox_observer);
-  EXPECT_CALL(mock_privacy_sandbox_observer,
-              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
-
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, false);
-  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
-
-  EXPECT_CALL(mock_privacy_sandbox_observer,
-              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
-
-  EXPECT_CALL(mock_privacy_sandbox_observer,
-              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
-
-  EXPECT_CALL(mock_privacy_sandbox_observer,
-              OnFlocDataAccessibleSinceUpdated(/*reset_compute_timer=*/true));
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxApisEnabled, true);
-  testing::Mock::VerifyAndClearExpectations(&mock_privacy_sandbox_observer);
-}
-
-class PrivacySandboxSettingsTestReconciliationBlocked
-    : public PrivacySandboxSettingsTest {
- public:
-  void InitializePrefsBeforeStart() override {
-    // Set the reconciled preference to true here, so when the service is
-    // created prior to each test case running, it does not attempt to reconcile
-    // the preferences. Tests must call ResetReconciledPref before testing to
-    // reset the preference to it's default value.
-    profile()->GetTestingPrefService()->SetUserPref(
-        prefs::kPrivacySandboxPreferencesReconciled,
-        std::make_unique<base::Value>(true));
-  }
-
-  void ResetReconciledPref() {
-    profile()->GetTestingPrefService()->SetUserPref(
-        prefs::kPrivacySandboxPreferencesReconciled,
-        std::make_unique<base::Value>(false));
-  }
-};
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked, ReconciliationOutcome) {
-  // Check that reconciling preferences has the appropriate outcome based on
-  // the current user cookie settings.
-  ResetReconciledPref();
-
-  // Blocking 3P cookies should disable.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->ReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxApisEnabled));
-
-  // Blocking all cookies should disable.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->ReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxApisEnabled));
-
-  // Blocking cookies via content setting exceptions, now matter how broad,
-  // should not disable.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      // /*user_cookie_exceptions=*/
-      // {{"[*.]com", "*", ContentSetting::CONTENT_SETTING_BLOCK}},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->ReconcilePrivacySandboxPref();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxApisEnabled));
-
-  // If the user has already expressed control over the privacy sandbox, it
-  // should not be disabled.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-  profile()->GetTestingPrefService()->SetUserPref(
-      prefs::kPrivacySandboxManuallyControlled,
-      std::make_unique<base::Value>(true));
-
-  privacy_sandbox_settings()->ReconcilePrivacySandboxPref();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxApisEnabled));
-
-  // Allowing cookies should leave the sandbox enabled.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-  profile()->GetTestingPrefService()->SetUserPref(
-      prefs::kPrivacySandboxManuallyControlled,
-      std::make_unique<base::Value>(true));
-
-  privacy_sandbox_settings()->ReconcilePrivacySandboxPref();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxApisEnabled));
-
-  // Reconciliation should not enable the privacy sandbox.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/false,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-  profile()->GetTestingPrefService()->SetUserPref(
-      prefs::kPrivacySandboxManuallyControlled,
-      std::make_unique<base::Value>(false));
-
-  privacy_sandbox_settings()->ReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxApisEnabled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       ImmediateReconciliationNoSync) {
-  // Check that if the user is not syncing preferences, reconciliation occurs
-  // immediately.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  auto registered_types =
-      sync_service()->GetUserSettings()->GetRegisteredSelectableTypes();
-  registered_types.Remove(syncer::UserSelectableType::kPreferences);
-  sync_service()->GetUserSettings()->SetSelectedTypes(
-      /*sync_everything=*/false, registered_types);
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       ImmediateReconciliationSyncComplete) {
-  // Check that if sync has completed a cycle that reconciliation occurs
-  // immediately.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  sync_service()->SetNonEmptyLastCycleSnapshot();
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       ImmediateReconciliationPersistentSyncError) {
-  // Check that if sync has a persistent error that reconciliation occurs
-  // immediately.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  sync_service()->SetDisableReasons(
-      syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR);
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       ImmediateReconciliationNoDisable) {
-  // Check that if the local settings would not disable the privacy sandbox
-  // that reconciliation runs.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/false,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       DelayedReconciliationSyncSuccess) {
-  // Check that a sync service which has not yet started delays reconciliation
-  // until it has completed a sync cycle.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  sync_service()->SetEmptyLastCycleSnapshot();
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  sync_service()->SetNonEmptyLastCycleSnapshot();
-  sync_service()->FireSyncCycleCompleted();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       DelayedReconciliationSyncFailure) {
-  // Check that a sync service which has not yet started delays reconciliation
-  // until a persistent error has occurred.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  sync_service()->SetEmptyLastCycleSnapshot();
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // A transient sync startup state should not result in reconciliation.
-  sync_service()->SetTransportState(
-      syncer::SyncService::TransportState::START_DEFERRED);
-  sync_service()->FireStateChanged();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // A state update after an unrecoverable error should result in
-  // reconciliation.
-  sync_service()->SetDisableReasons(
-      syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR);
-  sync_service()->FireStateChanged();
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       DelayedReconciliationIdentityFailure) {
-  // Check that a sync service which has not yet started delays reconciliation
-  // until a persistent identity error has occurred.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  sync_service()->SetEmptyLastCycleSnapshot();
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // An account becoming available should not result in reconciliation.
-  identity_test_env()->MakePrimaryAccountAvailable("test@test.com",
-                                                   signin::ConsentLevel::kSync);
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // A successful update to refresh tokens should not result in reconciliation.
-  identity_test_env()->SetRefreshTokenForPrimaryAccount();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // A persistent authentication error for a non-primary account should not
-  // result in reconciliation.
-  auto non_primary_account =
-      identity_test_env()->MakeAccountAvailable("unrelated@unrelated.com");
-  identity_test_env()->SetRefreshTokenForAccount(
-      non_primary_account.account_id);
-  identity_test_env()->UpdatePersistentErrorOfRefreshTokenForAccount(
-      non_primary_account.account_id,
-      GoogleServiceAuthError(
-          GoogleServiceAuthError::State::INVALID_GAIA_CREDENTIALS));
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // A perisistent authentication error for the primary account should result
-  // in reconciliation.
-  identity_test_env()->UpdatePersistentErrorOfRefreshTokenForAccount(
-      identity_test_env()->identity_manager()->GetPrimaryAccountId(
-          signin::ConsentLevel::kSync),
-      GoogleServiceAuthError(
-          GoogleServiceAuthError::State::INVALID_GAIA_CREDENTIALS));
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       DelayedReconciliationSyncIssueThenManaged) {
-  // Check that if before an initial sync issue is resolved, the cookie settings
-  // are disabled by policy, that reconciliation does not run until the policy
-  // is removed.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  sync_service()->SetEmptyLastCycleSnapshot();
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // Apply a management state that is disabling cookies. This should result
-  // in the policy service being observed when the sync issue is resolved.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*managed_cookie_exceptions=*/{});
-
-  EXPECT_CALL(*policy_service(), AddObserver(policy::POLICY_DOMAIN_CHROME,
-                                             privacy_sandbox_settings()))
-      .Times(1);
-
-  sync_service()->SetNonEmptyLastCycleSnapshot();
-  sync_service()->FireSyncCycleCompleted();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  // Removing the management state and firing the policy update listener should
-  // result in reconciliation running.
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  // The HostContentSettingsMap & PrefService are inspected directly, and not
-  // the PolicyMap provided here. The associated browser tests confirm that this
-  // is a valid approach.
-  privacy_sandbox_settings()->OnPolicyUpdated(
-      policy::PolicyNamespace(), policy::PolicyMap(), policy::PolicyMap());
-
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       NoReconciliationAlreadyRun) {
-  // Reconciliation should not run if it is recorded as already occurring.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  profile()->GetTestingPrefService()->SetUserPref(
-      prefs::kPrivacySandboxPreferencesReconciled,
-      std::make_unique<base::Value>(true));
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  // If run, reconciliation would have disabled the sandbox.
-  EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxApisEnabled));
-}
-
-TEST_F(PrivacySandboxSettingsTestReconciliationBlocked,
-       MetricsLoggingOccursCorrectly) {
-  base::HistogramTester histograms;
-  const std::string histogram_name = "Settings.PrivacySandbox.Enabled";
-  ResetReconciledPref();
-
-  // The histogram should start off empty.
-  histograms.ExpectTotalCount(histogram_name, 0);
-
-  // For buckets that do not explicitly mention FLoC, it is assumed to be on,
-  // or its state is irrelevant, i.e. overriden by the Privacy Sandbox pref.
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, true);
-
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 1);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSEnabledAllowAll),
-      1);
-
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 2);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSEnabledBlock3P),
-      1);
-
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 3);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSEnabledBlockAll),
-      1);
-
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/false,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 4);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSDisabledAllowAll),
-      1);
-
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/false,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 5);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSDisabledBlock3P),
-      1);
-
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/false,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 6);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::PrivacySandboxSettings::
-                           SettingsPrivacySandboxEnabled::kPSDisabledBlockAll),
-      1);
-
-  // Verify that delayed reconciliation still logs properly.
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  sync_service()->SetEmptyLastCycleSnapshot();
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
-      prefs::kPrivacySandboxPreferencesReconciled));
-
-  histograms.ExpectTotalCount(histogram_name, 6);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSDisabledBlockAll),
-      1);
-
-  sync_service()->SetNonEmptyLastCycleSnapshot();
-  sync_service()->FireSyncCycleCompleted();
-
-  histograms.ExpectTotalCount(histogram_name, 7);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSDisabledBlockAll),
-      2);
-
-  ResetReconciledPref();
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/false,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 8);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSDisabledPolicyBlockAll),
-      1);
-
-  // Disable FLoC and test the buckets that reflect a disabled FLoC state.
-  ResetReconciledPref();
-  profile()->GetTestingPrefService()->SetBoolean(
-      prefs::kPrivacySandboxFlocEnabled, false);
-
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/false,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 9);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSEnabledFlocDisabledAllowAll),
-      1);
-
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_ALLOW,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 10);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSEnabledFlocDisabledBlock3P),
-      1);
-
-  SetupTestState(
-      /*privacy_sandbox_enabled=*/true,
-      /*block_third_party_cookies=*/true,
-      /*default_cookie_setting=*/ContentSetting::CONTENT_SETTING_BLOCK,
-      /*user_cookie_exceptions=*/{},
-      /*managed_cookie_setting=*/kNoSetting,
-      /*managed_cookie_exceptions=*/{});
-
-  privacy_sandbox_settings()->MaybeReconcilePrivacySandboxPref();
-
-  histograms.ExpectTotalCount(histogram_name, 11);
-  histograms.ExpectBucketCount(
-      histogram_name,
-      static_cast<int>(PrivacySandboxSettings::SettingsPrivacySandboxEnabled::
-                           kPSEnabledFlocDisabledBlockAll),
-      1);
-}
-
 class PrivacySandboxSettingsTestCookiesClearOnExitTurnedOff
     : public PrivacySandboxSettingsTest {
  public:
   void InitializePrefsBeforeStart() override {
-    profile()->GetTestingPrefService()->SetUserPref(
-        prefs::kPrivacySandboxFlocDataAccessibleSince,
-        std::make_unique<base::Value>(
-            ::base::TimeToValue(base::Time::FromTimeT(12345))));
+    prefs()->SetUserPref(prefs::kPrivacySandboxFlocDataAccessibleSince,
+                         std::make_unique<base::Value>(::base::TimeToValue(
+                             base::Time::FromTimeT(12345))));
   }
 };
 
@@ -1611,14 +551,13 @@
     : public PrivacySandboxSettingsTest {
  public:
   void InitializePrefsBeforeStart() override {
-    auto* map = HostContentSettingsMapFactory::GetForProfile(profile());
-    map->SetDefaultContentSetting(ContentSettingsType::COOKIES,
-                                  ContentSetting::CONTENT_SETTING_SESSION_ONLY);
+    host_content_settings_map()->SetDefaultContentSetting(
+        ContentSettingsType::COOKIES,
+        ContentSetting::CONTENT_SETTING_SESSION_ONLY);
 
-    profile()->GetTestingPrefService()->SetUserPref(
-        prefs::kPrivacySandboxFlocDataAccessibleSince,
-        std::make_unique<base::Value>(
-            ::base::TimeToValue(base::Time::FromTimeT(12345))));
+    prefs()->SetUserPref(prefs::kPrivacySandboxFlocDataAccessibleSince,
+                         std::make_unique<base::Value>(::base::TimeToValue(
+                             base::Time::FromTimeT(12345))));
   }
 };
 
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_test_util.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_test_util.cc
new file mode 100644
index 0000000..3ff8c7d
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_test_util.cc
@@ -0,0 +1,83 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h"
+
+#include "components/content_settings/core/browser/cookie_settings.h"
+#include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/content_settings/core/common/pref_names.h"
+#include "components/content_settings/core/test/content_settings_mock_provider.h"
+#include "components/content_settings/core/test/content_settings_test_utils.h"
+#include "components/privacy_sandbox/privacy_sandbox_prefs.h"
+#include "components/sync_preferences/testing_pref_service_syncable.h"
+
+namespace privacy_sandbox_test_util {
+
+MockPrivacySandboxObserver::MockPrivacySandboxObserver() = default;
+MockPrivacySandboxObserver::~MockPrivacySandboxObserver() = default;
+
+void SetupTestState(
+    sync_preferences::TestingPrefServiceSyncable* testing_pref_service,
+    HostContentSettingsMap* map,
+    bool privacy_sandbox_enabled,
+    bool block_third_party_cookies,
+    ContentSetting default_cookie_setting,
+    const std::vector<CookieContentSettingException>& user_cookie_exceptions,
+    ContentSetting managed_cookie_setting,
+    const std::vector<CookieContentSettingException>&
+        managed_cookie_exceptions) {
+  // Setup block-third-party-cookies settings.
+  testing_pref_service->SetUserPref(
+      prefs::kCookieControlsMode,
+      std::make_unique<base::Value>(static_cast<int>(
+          block_third_party_cookies
+              ? content_settings::CookieControlsMode::kBlockThirdParty
+              : content_settings::CookieControlsMode::kOff)));
+
+  // Setup cookie content settings.
+  auto user_provider = std::make_unique<content_settings::MockProvider>();
+  auto managed_provider = std::make_unique<content_settings::MockProvider>();
+
+  if (default_cookie_setting != kNoSetting) {
+    user_provider->SetWebsiteSetting(
+        ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(),
+        ContentSettingsType::COOKIES,
+        std::make_unique<base::Value>(default_cookie_setting));
+  }
+
+  for (const auto& exception : user_cookie_exceptions) {
+    user_provider->SetWebsiteSetting(
+        ContentSettingsPattern::FromString(exception.primary_pattern),
+        ContentSettingsPattern::FromString(exception.secondary_pattern),
+        ContentSettingsType::COOKIES,
+        std::make_unique<base::Value>(exception.content_setting));
+  }
+
+  if (managed_cookie_setting != kNoSetting) {
+    managed_provider->SetWebsiteSetting(
+        ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(),
+        ContentSettingsType::COOKIES,
+        std::make_unique<base::Value>(managed_cookie_setting));
+  }
+
+  for (const auto& exception : managed_cookie_exceptions) {
+    managed_provider->SetWebsiteSetting(
+        ContentSettingsPattern::FromString(exception.primary_pattern),
+        ContentSettingsPattern::FromString(exception.secondary_pattern),
+        ContentSettingsType::COOKIES,
+        std::make_unique<base::Value>(exception.content_setting));
+  }
+
+  content_settings::TestUtils::OverrideProvider(
+      map, std::move(user_provider), HostContentSettingsMap::DEFAULT_PROVIDER);
+  content_settings::TestUtils::OverrideProvider(
+      map, std::move(managed_provider),
+      HostContentSettingsMap::POLICY_PROVIDER);
+
+  testing_pref_service->SetUserPref(
+      prefs::kPrivacySandboxApisEnabled,
+      std::make_unique<base::Value>(privacy_sandbox_enabled));
+}
+
+}  // namespace privacy_sandbox_test_util
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h b/chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h
new file mode 100644
index 0000000..44048817
--- /dev/null
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h
@@ -0,0 +1,53 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_TEST_UTIL_H_
+#define CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_TEST_UTIL_H_
+
+#include <string>
+
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
+#include "components/content_settings/core/common/content_settings.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace sync_preferences {
+class TestingPrefServiceSyncable;
+}
+
+class HostContentSettingsMap;
+
+namespace privacy_sandbox_test_util {
+
+class MockPrivacySandboxObserver : public PrivacySandboxSettings::Observer {
+ public:
+  MockPrivacySandboxObserver();
+  ~MockPrivacySandboxObserver();
+  MOCK_METHOD1(OnFlocDataAccessibleSinceUpdated, void(bool));
+};
+
+// Define an additional content setting value to simulate an unmanaged default
+// content setting.
+const ContentSetting kNoSetting = static_cast<ContentSetting>(-1);
+
+struct CookieContentSettingException {
+  std::string primary_pattern;
+  std::string secondary_pattern;
+  ContentSetting content_setting;
+};
+
+// Sets up preferences and content settings based on provided parameters.
+void SetupTestState(
+    sync_preferences::TestingPrefServiceSyncable* testing_pref_service,
+    HostContentSettingsMap* map,
+    bool privacy_sandbox_enabled,
+    bool block_third_party_cookies,
+    ContentSetting default_cookie_setting,
+    const std::vector<CookieContentSettingException>& user_cookie_exceptions,
+    ContentSetting managed_cookie_setting,
+    const std::vector<CookieContentSettingException>&
+        managed_cookie_exceptions);
+
+}  // namespace privacy_sandbox_test_util
+
+#endif  // CHROME_BROWSER_PRIVACY_SANDBOX_PRIVACY_SANDBOX_TEST_UTIL_H_
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
index 977e1f2..c274527 100644
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -19,6 +19,7 @@
 #include "chrome/browser/background/background_contents_service_factory.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/breadcrumbs/breadcrumb_manager_keyed_service_factory.h"
+#include "chrome/browser/breadcrumbs/breadcrumbs_status.h"
 #include "chrome/browser/browsing_data/access_context_audit_service_factory.h"
 #include "chrome/browser/browsing_data/browsing_data_history_observer_service.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h"
@@ -73,6 +74,7 @@
 #include "chrome/browser/prefetch/no_state_prefetch/no_state_prefetch_manager_factory.h"
 #include "chrome/browser/prefs/pref_metrics_service.h"
 #include "chrome/browser/privacy/privacy_metrics_service_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
 #include "chrome/browser/profiles/renderer_updater_factory.h"
 #include "chrome/browser/safe_browsing/certificate_reporting_service_factory.h"
@@ -111,7 +113,6 @@
 #include "chrome/browser/web_data_service_factory.h"
 #include "chrome/common/buildflags.h"
 #include "chrome/common/chrome_features.h"
-#include "components/breadcrumbs/core/features.h"
 #include "components/captive_portal/core/buildflags.h"
 #include "components/optimization_guide/core/optimization_guide_switches.h"
 #include "components/permissions/features.h"
@@ -290,7 +291,7 @@
 #endif
   BookmarkModelFactory::GetInstance();
   BookmarkUndoServiceFactory::GetInstance();
-  if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs))
+  if (BreadcrumbsStatus::IsEnabled())
     BreadcrumbManagerKeyedServiceFactory::GetInstance();
   browser_sync::UserEventServiceFactory::GetInstance();
   BrowsingDataHistoryObserverService::Factory::GetInstance();
@@ -437,6 +438,7 @@
   prerender::NoStatePrefetchLinkManagerFactory::GetInstance();
   prerender::NoStatePrefetchManagerFactory::GetInstance();
   PrivacyMetricsServiceFactory::GetInstance();
+  PrivacySandboxServiceFactory::GetInstance();
   PrivacySandboxSettingsFactory::GetInstance();
 #if BUILDFLAG(IS_CHROMEOS_LACROS)
   ProfileAccountManagerFactory::GetInstance();
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index 98c0522..97eafbff 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -46,6 +46,7 @@
 #include "chrome/browser/background_sync/background_sync_controller_factory.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/breadcrumbs/breadcrumb_manager_keyed_service_factory.h"
+#include "chrome/browser/breadcrumbs/breadcrumbs_status.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
@@ -82,6 +83,7 @@
 #include "chrome/browser/prefs/pref_service_syncable_util.h"
 #include "chrome/browser/prefs/profile_pref_store_manager.h"
 #include "chrome/browser/privacy/privacy_metrics_service_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
 #include "chrome/browser/profiles/bookmark_model_loaded_observer.h"
 #include "chrome/browser/profiles/chrome_version_service.h"
 #include "chrome/browser/profiles/pref_service_builder_utils.h"
@@ -127,7 +129,6 @@
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h"
 #include "components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h"
-#include "components/breadcrumbs/core/features.h"
 #include "components/content_settings/core/browser/cookie_settings.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/content_settings/core/common/pref_names.h"
@@ -821,10 +822,14 @@
   // The Privacy Metrics service should start alongside each profile session.
   PrivacyMetricsServiceFactory::GetForProfile(this);
 
+  // The Privacy Sandbox service must be created with the profile to ensure that
+  // preference reconciliation occurs.
+  PrivacySandboxServiceFactory::GetForProfile(this);
+
   AnnouncementNotificationServiceFactory::GetForProfile(this)
       ->MaybeShowNotification();
 
-  if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs)) {
+  if (BreadcrumbsStatus::IsEnabled()) {
     breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
         BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(this);
     breadcrumbs::CrashReporterBreadcrumbObserver::GetInstance()
@@ -860,7 +865,7 @@
   StopCreateSessionServiceTimer();
 #endif
 
-  if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs)) {
+  if (BreadcrumbsStatus::IsEnabled()) {
     breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service =
         BreadcrumbManagerKeyedServiceFactory::GetForBrowserContext(this);
     breadcrumb_service->StopPersisting();
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fr-CA.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fr-CA.xtb
index 49584431..70edd51 100644
--- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fr-CA.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fr-CA.xtb
@@ -392,6 +392,7 @@
 <translation id="3497063866483065785">{COUNT,plural, =1{point d'interrogation}one{# point d'interrogation}other{# points d'interrogation}}</translation>
 <translation id="3505359110822747654">Réduction des menus ChromeVox</translation>
 <translation id="3514822174137761109">{COUNT,plural, =1{caret}one{# caret}other{# carets}}</translation>
+<translation id="3518600448524470129">{COUNT,plural, =1{puce blanche}one{# puce blanche}other{# puces blanches}}</translation>
 <translation id="352577523970648069">Un champ de texte modifiable</translation>
 <translation id="3538907380453898475">listededescript</translation>
 <translation id="3549141990712742152">couper <ph name="TEXT" />.</translation>
@@ -675,6 +676,7 @@
 <translation id="5597170376237141345">Case à cocher suivante</translation>
 <translation id="5598905979683743333">Case d'option <ph name="NAME" /> non sélectionnée</translation>
 <translation id="5601172225407283979">Effectuer l'action par défaut</translation>
+<translation id="5604302400025591178">{COUNT,plural, =1{puce carrée}one{# puce carrée}other{# puces carrées}}</translation>
 <translation id="5608798115546226984">Remplissage automatique de ligne</translation>
 <translation id="5616029807486814372">Prochaine leçon</translation>
 <translation id="561939826962581046">heure</translation>
@@ -1098,6 +1100,7 @@
 <translation id="8659501358298941449">Listes déroulantes</translation>
 <translation id="8666733765751421568"><ph name="TYPE" />, fin</translation>
 <translation id="867187640362843212">En-tête 5</translation>
+<translation id="8690400660839620419">{COUNT,plural, =1{}one{niveau d'emboîtement #}other{niveau d'emboîtement #}}</translation>
 <translation id="8693391540059827073">Ma saison préférée</translation>
 <translation id="8696284982970258155">Vert miel</translation>
 <translation id="8697111817566059991">{COUNT,plural, =1{barre verticale}one{# barre verticale}other{# barres verticales}}</translation>
diff --git a/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js b/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js
index 78f5f56..3781810a 100644
--- a/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js
+++ b/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_flow.js
@@ -125,8 +125,8 @@
    */
   reloadContent(data) {
     this.voiceMatchEnforcedOff = data['voiceMatchEnforcedOff'];
+    this.shouldSkipVoiceMatch = data['shouldSkipVoiceMatch'];
     this.voiceMatchDisabled = loadTimeData.getBoolean('voiceMatchDisabled');
-    this.shouldSkipVoiceMatch = loadTimeData.getBoolean('shouldSkipVoiceMatch');
     data['flowType'] = this.flowType;
     this.$.valueProp.reloadContent(data);
     this.$.relatedInfo.reloadContent(data);
diff --git a/chrome/browser/resources/settings/autofill_page/passwords_section.html b/chrome/browser/resources/settings/autofill_page/passwords_section.html
index 66d9808..2889aac 100644
--- a/chrome/browser/resources/settings/autofill_page/passwords_section.html
+++ b/chrome/browser/resources/settings/autofill_page/passwords_section.html
@@ -102,10 +102,11 @@
         label="$i18n{passwordsAutosigninLabel}"
         sub-label="$i18n{passwordsAutosigninDescription}">
     </settings-toggle-button>
-    <cr-link-row external on-click="onTrustedVaultOptInClick_"
-        hidden$="[[!shouldOfferTrustedVaultOptIn_]]"
-        label="$i18n{trustedVaultOptInLabel}"
-        sub-label="$i18n{trustedVaultOptInSubLabel}">
+    <cr-link-row id="trustedVaultBanner" label="$i18n{trustedVaultBannerLabel}"
+        sub-label="[[
+            getTrustedVaultBannerSubLabel_(trustedVaultBannerState_)]]"
+        hidden$="[[shouldHideTrustedVaultBanner_(trustedVaultBannerState_)]]"
+        on-click="onTrustedVaultBannerClick_" external>
     </cr-link-row>
     <div id="checkPasswordsBannerContainer" class="cr-row"
         hidden$="[[!shouldShowBanner_]]">
diff --git a/chrome/browser/resources/settings/autofill_page/passwords_section.ts b/chrome/browser/resources/settings/autofill_page/passwords_section.ts
index fd659ae3..3f6c820 100644
--- a/chrome/browser/resources/settings/autofill_page/passwords_section.ts
+++ b/chrome/browser/resources/settings/autofill_page/passwords_section.ts
@@ -31,7 +31,7 @@
 import './avatar_icon.js';
 
 import {CrActionMenuElement} from 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.js';
-import {assert} from 'chrome://resources/js/assert.m.js';
+import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js';
 import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js';
 import {I18nMixin} from 'chrome://resources/js/i18n_mixin.js';
 import {getDeepActiveElement} from 'chrome://resources/js/util.m.js';
@@ -43,7 +43,7 @@
 import {HatsBrowserProxyImpl, TrustSafetyInteraction} from '../hats_browser_proxy.js';
 import {loadTimeData} from '../i18n_setup.js';
 import {OpenWindowProxyImpl} from '../open_window_proxy.js';
-import {StoredAccount, SyncBrowserProxyImpl, SyncPrefs, SyncStatus} from '../people_page/sync_browser_proxy.js';
+import {StoredAccount, SyncBrowserProxyImpl, SyncPrefs, SyncStatus, TrustedVaultBannerState} from '../people_page/sync_browser_proxy.js';
 import {PrefsMixin} from '../prefs/prefs_mixin.js';
 import {routes} from '../route.js';
 import {Route, Router} from '../router.js';
@@ -206,13 +206,10 @@
             'isOptedInForAccountStorage_, numberOfDevicePasswords_)',
       },
 
-      /**
-       * Whether the entry point leading to enroll in trusted vault encryption
-       * should be shown.
-       */
-      shouldOfferTrustedVaultOptIn_: {
-        type: Boolean,
-        value: false,
+      /** The visibility state of the trusted vault banner. */
+      trustedVaultBannerState_: {
+        type: Object,
+        value: TrustedVaultBannerState.NOT_SHOWN,
       },
 
       hasLeakedCredentials_: {
@@ -284,7 +281,7 @@
   private shouldShowBanner_: boolean;
   private isAccountStoreUser_: boolean;
   private shouldShowDevicePasswordsLink_: boolean;
-  private shouldOfferTrustedVaultOptIn_: boolean;
+  private trustedVaultBannerState_: TrustedVaultBannerState;
   private hasLeakedCredentials_: boolean;
   private hidePasswordsLink_: boolean;
   private showImportPasswords_: boolean;
@@ -393,10 +390,11 @@
     this.addWebUIListener('stored-accounts-updated', storedAccountsChanged);
     // </if>
 
-    syncBrowserProxy.sendOfferTrustedVaultOptInChanged();
+    syncBrowserProxy.sendTrustedVaultBannerStateChanged();
     this.addWebUIListener(
-        'offer-trusted-vault-opt-in-changed', (offerOptIn: boolean) => {
-          this.shouldOfferTrustedVaultOptIn_ = offerOptIn;
+        'trusted-vault-banner-state-changed',
+        (state: TrustedVaultBannerState) => {
+          this.trustedVaultBannerState_ = state;
         });
 
     afterNextRender(this, function() {
@@ -493,12 +491,21 @@
         PasswordCheckReferrer.PASSWORD_SETTINGS);
   }
 
-  /**
-   * Shows the page to opt in to trusted vault encryption.
-   */
-  private onTrustedVaultOptInClick_() {
-    OpenWindowProxyImpl.getInstance().openURL(
-        loadTimeData.getString('trustedVaultOptInUrl'));
+  private onTrustedVaultBannerClick_() {
+    switch (this.trustedVaultBannerState_) {
+      case TrustedVaultBannerState.OPTED_IN:
+        // TODO(crbug.com/1202088): Use correct help center URL here.
+        OpenWindowProxyImpl.getInstance().openURL(
+            loadTimeData.getString('passwordManagerLearnMoreURL'));
+        break;
+      case TrustedVaultBannerState.OFFER_OPT_IN:
+        OpenWindowProxyImpl.getInstance().openURL(
+            loadTimeData.getString('trustedVaultOptInUrl'));
+        break;
+      case TrustedVaultBannerState.NOT_SHOWN:
+      default:
+        assertNotReached();
+    }
   }
 
   /**
@@ -699,6 +706,24 @@
       }));
     }, 0);
   }
+
+  private getTrustedVaultBannerSubLabel_(): string {
+    switch (this.trustedVaultBannerState_) {
+      case TrustedVaultBannerState.OPTED_IN:
+        return this.i18n('trustedVaultBannerSubLabelOptedIn');
+      case TrustedVaultBannerState.OFFER_OPT_IN:
+        return this.i18n('trustedVaultBannerSubLabelOfferOptIn');
+      case TrustedVaultBannerState.NOT_SHOWN:
+        return '';
+      default:
+        assertNotReached();
+        return '';
+    }
+  }
+
+  private shouldHideTrustedVaultBanner_(): boolean {
+    return this.trustedVaultBannerState_ === TrustedVaultBannerState.NOT_SHOWN;
+  }
 }
 
 declare global {
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn
index 1c7cc8974..bb43b3b9 100644
--- a/chrome/browser/resources/settings/chromeos/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -271,6 +271,8 @@
     "chromeos/os_languages_page/languages_browser_proxy.js",
     "chromeos/os_languages_page/languages.js",
     "chromeos/os_languages_page/languages_types.js",
+    "chromeos/os_languages_page/input_method_util.js",
+    "chromeos/os_languages_page/languages_metrics_proxy.js",
     "chromeos/os_printing_page/cups_printers_entry_list_behavior.js",
     "chromeos/os_printing_page/cups_printer_dialog_util.js",
     "chromeos/os_printing_page/cups_printer_types.js",
@@ -426,6 +428,7 @@
     "chromeos/keyboard_shortcut_banner/keyboard_shortcut_banner.js",
     "chromeos/metrics_recorder.m.js",
     "chromeos/multidevice_page/multidevice_browser_proxy.m.js",
+    "chromeos/multidevice_page/multidevice_camera_roll_item.m.js",
     "chromeos/multidevice_page/multidevice_constants.m.js",
     "chromeos/multidevice_page/multidevice_feature_behavior.m.js",
     "chromeos/multidevice_page/multidevice_feature_item.m.js",
@@ -505,21 +508,19 @@
     "chromeos/os_files_page/os_files_page.js",
     "chromeos/os_files_page/smb_shares_page.js",
     "chromeos/os_icons.m.js",
-    "chromeos/os_languages_page/add_input_methods_dialog.m.js",
+    "chromeos/os_languages_page/add_input_methods_dialog.js",
     "chromeos/os_languages_page/add_spellcheck_languages_dialog.js",
-    "chromeos/os_languages_page/change_device_language_dialog.m.js",
+    "chromeos/os_languages_page/change_device_language_dialog.js",
     "chromeos/os_languages_page/cr_checkbox_with_policy.js",
-    "chromeos/os_languages_page/input_method_options_page.m.js",
-    "chromeos/os_languages_page/input_method_util.m.js",
-    "chromeos/os_languages_page/input_page.m.js",
-    "chromeos/os_languages_page/languages_metrics_proxy.m.js",
-    "chromeos/os_languages_page/os_add_languages_dialog.m.js",
-    "chromeos/os_languages_page/os_edit_dictionary_page.m.js",
-    "chromeos/os_languages_page/os_languages_page_v2.m.js",
-    "chromeos/os_languages_page/os_languages_section.m.js",
-    "chromeos/os_languages_page/shared_style.m.js",
-    "chromeos/os_languages_page/shared_vars.m.js",
-    "chromeos/os_languages_page/smart_inputs_page.m.js",
+    "chromeos/os_languages_page/input_method_options_page.js",
+    "chromeos/os_languages_page/input_page.js",
+    "chromeos/os_languages_page/os_add_languages_dialog.js",
+    "chromeos/os_languages_page/os_edit_dictionary_page.js",
+    "chromeos/os_languages_page/os_languages_page_v2.js",
+    "chromeos/os_languages_page/os_languages_section.js",
+    "chromeos/os_languages_page/shared_style.js",
+    "chromeos/os_languages_page/shared_vars.js",
+    "chromeos/os_languages_page/smart_inputs_page.js",
     "chromeos/os_page_visibility.m.js",
     "chromeos/os_people_page/account_manager.m.js",
     "chromeos/os_people_page/fingerprint_browser_proxy.m.js",
@@ -783,7 +784,7 @@
     "os_apps_page/app_notifications_page:web_components",
     "os_bluetooth_page:web_components",
     "os_files_page:web_components",
-    "os_languages_page:polymer3_elements",
+    "os_languages_page:web_components",
     "os_people_page:polymer3_elements",
     "os_printing_page:web_components",
     "os_privacy_page:web_components",
diff --git a/chrome/browser/resources/settings/chromeos/lazy_load.js b/chrome/browser/resources/settings/chromeos/lazy_load.js
index cae0d09da..a1eb13b2 100644
--- a/chrome/browser/resources/settings/chromeos/lazy_load.js
+++ b/chrome/browser/resources/settings/chromeos/lazy_load.js
@@ -29,12 +29,12 @@
 import './os_a11y_page/switch_access_subpage.js';
 import './os_a11y_page/tts_subpage.js';
 import './os_files_page/os_files_page.js';
-import './os_languages_page/input_method_options_page.m.js';
-import './os_languages_page/input_page.m.js';
-import './os_languages_page/os_edit_dictionary_page.m.js';
-import './os_languages_page/os_languages_page_v2.m.js';
-import './os_languages_page/os_languages_section.m.js';
-import './os_languages_page/smart_inputs_page.m.js';
+import './os_languages_page/input_method_options_page.js';
+import './os_languages_page/input_page.js';
+import './os_languages_page/os_edit_dictionary_page.js';
+import './os_languages_page/os_languages_page_v2.js';
+import './os_languages_page/os_languages_section.js';
+import './os_languages_page/smart_inputs_page.js';
 import './os_printing_page/cups_add_print_server_dialog.js';
 import './os_printing_page/cups_add_printer_dialog.js';
 import './os_printing_page/cups_add_printer_manually_dialog.js';
@@ -66,7 +66,7 @@
 export {TimeZoneBrowserProxyImpl} from './date_time_page/timezone_browser_proxy.js';
 export {CROSTINI_TYPE, GuestOsBrowserProxy, GuestOsBrowserProxyImpl, GuestOsSharedUsbDevice, PLUGIN_VM_TYPE} from './guest_os/guest_os_browser_proxy.js';
 export {LanguagesBrowserProxy, LanguagesBrowserProxyImpl} from './os_languages_page/languages_browser_proxy.js';
-export {InputsShortcutReminderState, LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './os_languages_page/languages_metrics_proxy.m.js';
+export {InputsShortcutReminderState, LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './os_languages_page/languages_metrics_proxy.js';
 export {PrinterType} from './os_printing_page/cups_printer_types.js';
 export {CupsPrintersBrowserProxy, CupsPrintersBrowserProxyImpl, PrinterSetupResult, PrintServerResult} from './os_printing_page/cups_printers_browser_proxy.js';
 export {CupsPrintersEntryManager} from './os_printing_page/cups_printers_entry_manager.js';
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/multidevice_page/BUILD.gn
index 8f3ed502..70b5727 100644
--- a/chrome/browser/resources/settings/chromeos/multidevice_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/multidevice_page/BUILD.gn
@@ -13,6 +13,7 @@
   is_polymer3 = true
   deps = [
     ":multidevice_browser_proxy.m",
+    ":multidevice_camera_roll_item.m",
     ":multidevice_constants.m",
     ":multidevice_feature_behavior.m",
     ":multidevice_feature_item.m",
@@ -161,6 +162,7 @@
   sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_subpage.m.js" ]
   deps = [
     ":multidevice_browser_proxy.m",
+    ":multidevice_camera_roll_item.m",
     ":multidevice_constants.m",
     ":multidevice_task_continuation_item.m",
     ":multidevice_wifi_sync_item.m",
@@ -175,6 +177,19 @@
   extra_deps = [ ":multidevice_subpage_module" ]
 }
 
+js_library("multidevice_camera_roll_item.m") {
+  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_camera_roll_item.m.js" ]
+  deps = [
+    ":multidevice_constants.m",
+    ":multidevice_feature_behavior.m",
+    ":multidevice_feature_item.m",
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+    "//ui/webui/resources/js:web_ui_listener_behavior.m",
+  ]
+  extra_deps = [ ":multidevice_camera_roll_item_module" ]
+  externs_list = [ "../settings_controls_types.js" ]
+}
+
 js_library("multidevice_tether_item.m") {
   sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_tether_item.m.js" ]
   deps = [
@@ -281,6 +296,7 @@
 group("polymer3_elements") {
   public_deps = [
     ":modulize",
+    ":multidevice_camera_roll_item_module",
     ":multidevice_feature_item_module",
     ":multidevice_feature_toggle_module",
     ":multidevice_notification_access_setup_dialog_module",
@@ -390,6 +406,15 @@
   auto_imports = os_settings_auto_imports
 }
 
+polymer_modulizer("multidevice_camera_roll_item") {
+  js_file = "multidevice_camera_roll_item.js"
+  html_file = "multidevice_camera_roll_item.html"
+  html_type = "dom-module"
+  migrated_imports = os_settings_migrated_imports
+  namespace_rewrites = os_settings_namespace_rewrites
+  auto_imports = os_settings_auto_imports
+}
+
 polymer_modulizer("multidevice_tether_item") {
   js_file = "multidevice_tether_item.js"
   html_file = "multidevice_tether_item.html"
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_camera_roll_item.html b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_camera_roll_item.html
new file mode 100644
index 0000000..bf99974c
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_camera_roll_item.html
@@ -0,0 +1,34 @@
+<link rel="import" href="chrome://resources/html/polymer.html">
+
+<link rel="import" href="chrome://resources/cr_components/chromeos/localized_link/localized_link.html">
+<link rel="import" href="chrome://resources/cr_elements/cr_toggle/cr_toggle.html">
+<link rel="import" href="multidevice_constants.html">
+<link rel="import" href="multidevice_feature_behavior.html">
+<link rel="import" href="multidevice_feature_item.html">
+
+<dom-module id="settings-multidevice-camera-roll-item">
+  <template>
+    <style include="settings-shared"></style>
+    <settings-multidevice-feature-item id="phoneHubCameraRollItem"
+        feature="[[MultiDeviceFeature.PHONE_HUB_CAMERA_ROLL]]"
+        page-content-data="[[pageContentData]]" is-sub-feature>
+      <template is="dom-if"
+          if="[[!isCameraRollFilePermissionGranted_(pageContentData)]]" restamp>
+        <!-- Replace the standard feature-summary with a localized link
+          containing the string for when camera roll does not have file access
+          permissions on Android device. -->
+        <localized-link
+            class="secondary"
+            id="featureSecondary"
+            slot="feature-summary"
+            localized-string="[[getFeatureDisabledSummary_()]]">
+        </localized-link>
+        <!-- Replace the standard feature-controller with an always disabled and
+          off cr-toggle when Camera Roll does not have file access permission on
+          Android device. Otherwise the standard feature-controller is used. -->
+        <cr-toggle slot="feature-controller" disabled="true"></cr-toggle>
+      </template>
+    </settings-multidevice-feature-item>
+  </template>
+  <script src="multidevice_camera_roll_item.js"></script>
+</dom-module>
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_camera_roll_item.js b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_camera_roll_item.js
new file mode 100644
index 0000000..6f20471a
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_camera_roll_item.js
@@ -0,0 +1,41 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @fileoverview 'settings-multidevice-camera-roll-item' encapsulates
+ * special logic for the PhoneHub Camera Roll item used in the multidevice
+ * subpage.
+ *
+ * Camera Roll depends on file access permissions on the connected Android
+ * device.
+ *
+ * If permission is granted the multidevice feature item is used in the standard
+ * way, otherwise the feature-controller and feature-summary slots are
+ * overridden with a disabled toggle and the Camera Roll localized string
+ * component contains a learn more link.
+ */
+Polymer({
+  is: 'settings-multidevice-camera-roll-item',
+
+  behaviors: [
+    MultiDeviceFeatureBehavior,
+  ],
+
+  /**
+   * @return {boolean}
+   * @private
+   */
+  isCameraRollFilePermissionGranted_() {
+    return this.pageContentData.isCameraRollFilePermissionGranted;
+  },
+
+  /**
+   * @return {string}
+   * @private
+   */
+  getFeatureDisabledSummary_() {
+    return this.i18nAdvanced(
+        'multidevicePhoneHubCameraRollDisabledItemSummary');
+  },
+});
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.js b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.js
index 228bd70..1103e5f 100644
--- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.js
+++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.js
@@ -109,7 +109,8 @@
    *   notificationAccessStatus: !settings.PhoneHubNotificationAccessStatus,
    *   isNearbyShareDisallowedByPolicy: boolean,
    *   isPhoneHubAppsAccessGranted: boolean,
-   *   isPhoneHubPermissionsDialogSupported: boolean
+   *   isPhoneHubPermissionsDialogSupported: boolean,
+   *   isCameraRollFilePermissionGranted: boolean
    * }}
    */
   /* #export */ let MultiDevicePageContentData;
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_subpage.html b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_subpage.html
index 3c3d533..8451b63 100644
--- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_subpage.html
+++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_subpage.html
@@ -14,6 +14,7 @@
 <link rel="import" href="../route_observer_behavior.html">
 <link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="../../settings_vars_css.html">
+<link rel="import" href="multidevice_camera_roll_item.html">
 <link rel="import" href="multidevice_constants.html">
 <link rel="import" href="multidevice_browser_proxy.html">
 <link rel="import" href="multidevice_feature_behavior.html">
@@ -135,11 +136,10 @@
             if="[[isFeatureSupported(
                 MultiDeviceFeature.PHONE_HUB_CAMERA_ROLL, pageContentData)]]"
             restamp>
-          <settings-multidevice-feature-item id="phoneHubCameraRollItem"
-              feature="[[MultiDeviceFeature.PHONE_HUB_CAMERA_ROLL]]"
-              page-content-data="[[pageContentData]]" is-sub-feature
+          <settings-multidevice-camera-roll-item id="phoneHubCameraRollItem"
+              page-content-data="[[pageContentData]]"
               deep-link-focus-id$="[[Setting.kPhoneHubCameraRollOnOff]]">
-          </settings-multidevice-feature-item>
+          </settings-multidevice-camera-roll-item>
         </template>
         <template is="dom-if"
             if="[[isFeatureSupported(
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn
index 9f90871..1c19a40 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn
@@ -6,30 +6,29 @@
 # TODO(crbug.com/1226913): Add the missing deps.
 
 import("//third_party/closure_compiler/compile_js.gni")
-import("//tools/polymer/polymer.gni")
-import("//ui/webui/resources/tools/js_modulizer.gni")
+import("//tools/polymer/html_to_js.gni")
 import("../os_settings.gni")
 
 js_type_check("closure_compile_module") {
   closure_flags = os_settings_closure_flags
   is_polymer3 = true
   deps = [
-    ":add_input_methods_dialog.m",
+    ":add_input_methods_dialog",
     ":add_spellcheck_languages_dialog",
-    ":change_device_language_dialog.m",
+    ":change_device_language_dialog",
     ":cr_checkbox_with_policy",
-    ":input_method_options_page.m",
-    ":input_method_util.m",
-    ":input_page.m",
+    ":input_method_options_page",
+    ":input_method_util",
+    ":input_page",
     ":languages",
     ":languages_browser_proxy",
-    ":languages_metrics_proxy.m",
+    ":languages_metrics_proxy",
     ":languages_types",
-    ":os_add_languages_dialog.m",
-    ":os_edit_dictionary_page.m",
-    ":os_languages_page_v2.m",
-    ":os_languages_section.m",
-    ":smart_inputs_page.m",
+    ":os_add_languages_dialog",
+    ":os_edit_dictionary_page",
+    ":os_languages_page_v2",
+    ":os_languages_section",
+    ":smart_inputs_page",
   ]
 }
 
@@ -72,10 +71,8 @@
   ]
 }
 
-js_library("add_input_methods_dialog.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.m.js" ]
+js_library("add_input_methods_dialog") {
   deps = [ ":cr_checkbox_with_policy" ]
-  extra_deps = [ ":add_input_methods_dialog_module" ]
 }
 
 js_library("add_spellcheck_languages_dialog") {
@@ -95,8 +92,7 @@
   ]
 }
 
-js_library("change_device_language_dialog.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.m.js" ]
+js_library("change_device_language_dialog") {
   deps = [
     ":languages",
     "../..:lifetime_browser_proxy",
@@ -104,7 +100,6 @@
     "//ui/webui/resources/cr_elements:cr_scrollable_behavior.m",
     "//ui/webui/resources/cr_elements/cr_search_field:cr_search_field",
   ]
-  extra_deps = [ ":change_device_language_dialog_module" ]
 }
 
 js_library("cr_checkbox_with_policy") {
@@ -116,8 +111,7 @@
   ]
 }
 
-js_library("input_method_util.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_util.m.js" ]
+js_library("input_method_util") {
   deps = [
     ":input_method_settings",
     "..:os_route.m",
@@ -125,30 +119,26 @@
     "../..:router",
     "//ui/webui/resources/js:cr.m",
   ]
-  extra_deps = [ ":modulize" ]
 }
 
 js_library("input_method_settings") {
   deps = [ "//ui/webui/resources/js:cr.m" ]
 }
 
-js_library("input_method_options_page.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.m.js" ]
+js_library("input_method_options_page") {
   deps = [
-    ":input_method_util.m",
+    ":input_method_util",
     "//ui/webui/resources/js:i18n_behavior.m",
   ]
-  extra_deps = [ ":input_method_options_page_module" ]
 }
 
-js_library("input_page.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.m.js" ]
+js_library("input_page") {
   deps = [
-    ":add_input_methods_dialog.m",
+    ":add_input_methods_dialog",
     ":add_spellcheck_languages_dialog",
-    ":input_method_util.m",
-    ":languages_metrics_proxy.m",
-    ":os_edit_dictionary_page.m",
+    ":input_method_util",
+    ":languages_metrics_proxy",
+    ":os_edit_dictionary_page",
     "..:deep_linking_behavior.m",
     "..:os_route.m",
     "..:route_observer_behavior",
@@ -161,19 +151,15 @@
     "//ui/webui/resources/js:load_time_data.m",
     "//ui/webui/resources/js/cr/ui:focus_without_ink.m",
   ]
-  extra_deps = [ ":input_page_module" ]
   externs_list = [ "../settings_controls_types.js" ]
 }
 
-js_library("languages_metrics_proxy.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/languages_metrics_proxy.m.js" ]
+js_library("languages_metrics_proxy") {
   deps = [ "//ui/webui/resources/js:cr.m" ]
-  extra_deps = [ ":modulize" ]
   externs_list = [ "$externs_path/metrics_private.js" ]
 }
 
-js_library("os_add_languages_dialog.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.m.js" ]
+js_library("os_add_languages_dialog") {
   deps = [
     ":languages",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
@@ -181,11 +167,9 @@
     "//ui/webui/resources/cr_elements:find_shortcut_behavior",
     "//ui/webui/resources/cr_elements/cr_search_field:cr_search_field",
   ]
-  extra_deps = [ ":os_add_languages_dialog_module" ]
 }
 
-js_library("os_edit_dictionary_page.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.m.js" ]
+js_library("os_edit_dictionary_page") {
   deps = [
     ":languages_browser_proxy",
     "..:global_scroll_target_behavior",
@@ -195,14 +179,12 @@
     "//ui/webui/resources/cr_elements/cr_button:cr_button.m",
     "//ui/webui/resources/cr_elements/cr_input:cr_input.m",
   ]
-  extra_deps = [ ":os_edit_dictionary_page_module" ]
 }
 
-js_library("os_languages_page_v2.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.m.js" ]
+js_library("os_languages_page_v2") {
   deps = [
-    ":input_method_util.m",
-    ":languages_metrics_proxy.m",
+    ":input_method_util",
+    ":languages_metrics_proxy",
     "..:deep_linking_behavior.m",
     "..:metrics_recorder.m",
     "..:os_route.m",
@@ -219,16 +201,14 @@
     "//ui/webui/resources/js:cr.m",
     "//ui/webui/resources/js/cr/ui:focus_without_ink.m",
   ]
-  extra_deps = [ ":os_languages_page_v2_module" ]
 }
 
-js_library("os_languages_section.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.m.js" ]
+js_library("os_languages_section") {
   deps = [
-    ":input_method_options_page.m",
-    ":input_page.m",
+    ":input_method_options_page",
+    ":input_page",
     ":languages",
-    ":os_languages_page_v2.m",
+    ":os_languages_page_v2",
     "..:os_route.m",
     "../..:router",
     "//ui/webui/resources/js:assert.m",
@@ -237,11 +217,9 @@
     "//ui/webui/resources/js:load_time_data.m",
     "//ui/webui/resources/js/cr/ui:focus_without_ink.m",
   ]
-  extra_deps = [ ":os_languages_section_module" ]
 }
 
-js_library("smart_inputs_page.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.m.js" ]
+js_library("smart_inputs_page") {
   deps = [
     "..:deep_linking_behavior.m",
     "..:os_route.m",
@@ -250,137 +228,22 @@
     "../..:router",
     "//ui/webui/resources/js:load_time_data.m",
   ]
-  extra_deps = [ ":smart_inputs_page_module" ]
 }
 
-group("polymer3_elements") {
-  public_deps = [
-    ":add_input_methods_dialog_module",
-    ":add_spellcheck_languages_dialog_module",
-    ":change_device_language_dialog_module",
-    ":cr_checkbox_with_policy_module",
-    ":input_method_options_page_module",
-    ":input_page_module",
-    ":modulize",
-    ":os_add_languages_dialog_module",
-    ":os_edit_dictionary_page_module",
-    ":os_languages_page_v2_module",
-    ":os_languages_section_module",
-    ":shared_style_module",
-    ":shared_vars_module",
-    ":smart_inputs_page_module",
+html_to_js("web_components") {
+  js_files = [
+    "add_input_methods_dialog.js",
+    "add_spellcheck_languages_dialog.js",
+    "change_device_language_dialog.js",
+    "cr_checkbox_with_policy.js",
+    "input_method_options_page.js",
+    "input_page.js",
+    "os_add_languages_dialog.js",
+    "os_edit_dictionary_page.js",
+    "os_languages_page_v2.js",
+    "os_languages_section.js",
+    "shared_style.js",
+    "shared_vars.js",
+    "smart_inputs_page.js",
   ]
 }
-
-polymer_modulizer("add_input_methods_dialog") {
-  js_file = "add_input_methods_dialog.js"
-  html_file = "add_input_methods_dialog.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports + [ "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html|LanguageHelper,LanguagesModel" ]
-}
-
-polymer_modulizer("add_spellcheck_languages_dialog") {
-  js_file = "add_spellcheck_languages_dialog.js"
-  html_file = "add_spellcheck_languages_dialog.html"
-  html_type = "v3-ready"
-}
-
-polymer_modulizer("change_device_language_dialog") {
-  js_file = "change_device_language_dialog.js"
-  html_file = "change_device_language_dialog.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports + [ "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html|LanguageHelper,LanguagesModel" ]
-}
-
-polymer_modulizer("cr_checkbox_with_policy") {
-  js_file = "cr_checkbox_with_policy.js"
-  html_file = "cr_checkbox_with_policy.html"
-  html_type = "v3-ready"
-}
-
-polymer_modulizer("os_add_languages_dialog") {
-  js_file = "os_add_languages_dialog.js"
-  html_file = "os_add_languages_dialog.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports + [ "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html|LanguageHelper,LanguagesModel" ]
-}
-
-polymer_modulizer("os_edit_dictionary_page") {
-  js_file = "os_edit_dictionary_page.js"
-  html_file = "os_edit_dictionary_page.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports
-}
-
-polymer_modulizer("os_languages_page_v2") {
-  js_file = "os_languages_page_v2.js"
-  html_file = "os_languages_page_v2.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports + [ "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html|LanguageHelper,LanguagesModel,LanguageState" ]
-}
-
-polymer_modulizer("os_languages_section") {
-  js_file = "os_languages_section.js"
-  html_file = "os_languages_section.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports + [ "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html|LanguageHelper,LanguagesModel" ]
-}
-
-polymer_modulizer("input_method_options_page") {
-  js_file = "input_method_options_page.js"
-  html_file = "input_method_options_page.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports + [ "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html|LanguageHelper" ]
-}
-
-polymer_modulizer("input_page") {
-  js_file = "input_page.js"
-  html_file = "input_page.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports + [ "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html|LanguageHelper,LanguagesModel,LanguageState,SpellCheckLanguageState" ]
-}
-
-polymer_modulizer("shared_style") {
-  js_file = "shared_style.m.js"
-  html_file = "shared_style.html"
-  html_type = "style-module"
-}
-
-polymer_modulizer("shared_vars") {
-  js_file = "shared_vars.m.js"
-  html_file = "shared_vars.html"
-  html_type = "custom-style"
-}
-
-polymer_modulizer("smart_inputs_page") {
-  js_file = "smart_inputs_page.js"
-  html_file = "smart_inputs_page.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports
-}
-
-js_modulizer("modulize") {
-  input_files = [
-    "input_method_util.js",
-    "languages_metrics_proxy.js",
-  ]
-  namespace_rewrites = os_settings_namespace_rewrites
-}
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.html b/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.html
index 3928426..e8c4d8dd 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.html
@@ -1,122 +1,103 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared iron-flex shared-style">
+  #dialogBody {
+    display: flex;
+    flex-direction: column;
+    height: 336px;
+    overflow: auto;
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_search_field/cr_search_field.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
-<link rel="import" href="./cr_checkbox_with_policy.html">
-<link rel="import" href="../metrics_recorder.html">
-<link rel="import" href="shared_style.html">
-<link rel="import" href="languages.html">
-<link rel="import" href="languages_types.html">
-<link rel="import" href="../../settings_shared_css.html">
+  cr-search-field {
+    margin-bottom: 8px;
+  }
 
-<dom-module id="os-settings-add-input-methods-dialog">
-  <template>
-    <style include="settings-shared iron-flex shared-style">
-      #dialogBody {
-        display: flex;
-        flex-direction: column;
-        height: 336px;
-        overflow: auto;
-      }
+  .label {
+    padding-bottom: 4px;
+    padding-top: 8px;
+  }
 
-      cr-search-field {
-        margin-bottom: 8px;
-      }
+  .list-item {
+    color: var(--cros-text-color-primary);
+    left: 0;
+    min-height: 36px;
+    right: 0;
+    width: inherit;
+  }
 
-      .label {
-        padding-bottom: 4px;
-        padding-top: 8px;
-      }
+  /* Allows the first focused list-item's (of any iron-list) applied
+   * ink droplet to show entirely. */
+  .list-item:first-of-type {
+    margin-top: 4px;
+  }
 
-      .list-item {
-        color: var(--cros-text-color-primary);
-        left: 0;
-        min-height: 36px;
-        right: 0;
-        width: inherit;
-      }
+  cr-checkbox::part(label-container) {
+    white-space: nowrap;
+  }
 
-      /* Allows the first focused list-item's (of any iron-list) applied
-       * ink droplet to show entirely. */
-      .list-item:first-of-type {
-        margin-top: 4px;
-      }
+  cr-dialog [slot=body] {
+    padding-inline-end: 0;
+    padding-inline-start: 0;
+  }
 
-      cr-checkbox::part(label-container) {
-        white-space: nowrap;
-      }
+  /* Adds spacing to elements that have the same width as the dialog.
+   * This is added in lieu of adding padding to the cr-dialog to show
+   * the ink droplets applied on focused checkboxes entirely. */
+   cr-dialog [slot=body] .is-width-of-dialog {
+    margin-inline-end: var(--dialog-horizontal-padding);
+    margin-inline-start: var(--dialog-horizontal-padding);
+  }
+</style>
 
-      cr-dialog [slot=body] {
-        padding-inline-end: 0;
-        padding-inline-start: 0;
-      }
-
-      /* Adds spacing to elements that have the same width as the dialog.
-       * This is added in lieu of adding padding to the cr-dialog to show
-       * the ink droplets applied on focused checkboxes entirely. */
-       cr-dialog [slot=body] .is-width-of-dialog {
-        margin-inline-end: var(--dialog-horizontal-padding);
-        margin-inline-start: var(--dialog-horizontal-padding);
-      }
-    </style>
-
-    <cr-dialog id="dialog" close-text="$i18n{close}" show-on-attach>
-      <div slot="title">$i18n{addInputMethodLabel}</div>
-      <div id="dialogBody" slot="body" scrollable>
-        <cr-search-field label="$i18n{searchInputMethodsLabel}" id="search"
-            on-search-changed="onSearchChanged_" on-keydown="onKeydown_"
-            class="is-width-of-dialog"
-            clear-label="$i18n{clearSearch}" autofocus>
-        </cr-search-field>
-        <template is="dom-if" if="[[showSuggestedList_]]">
-          <div id="suggestedInputMethods">
-            <div class="label is-width-of-dialog">
-              $i18n{suggestedInputMethodsLabel}
-            </div>
-            <iron-list items="[[suggestedInputMethods_]]">
-              <template>
-                <cr-checkbox class="list-item no-outline is-width-of-dialog"
-                    checked="[[willAdd_(item.id, inputMethodsToAdd_.size)]]"
-                    tab-index="[[tabIndex]]" on-change="onCheckboxChange_">
-                  [[item.displayName]]
-                </cr-checkbox>
-              </template>
-            </iron-list>
-          </div>
-        </template>
-        <div id="allInputMethods">
-          <div id="allInputMethodsLabel" hidden="[[!showSuggestedList_]]"
-              class="label is-width-of-dialog">
-            $i18n{allInputMethodsLabel}
-          </div>
-          <iron-list items="[[getAllInputMethods_(languages.inputMethods,
-              lowercaseQueryString_)]]">
-            <template>
-              <cr-checkbox-with-policy
-                  class="list-item no-outline is-width-of-dialog"
-                  checked="[[willAdd_(item.id, inputMethodsToAdd_.size)]]"
-                  disabled="[[item.isProhibitedByPolicy]]"
-                  policy-tooltip="$i18n{inputMethodNotAllowed}"
-                  tab-index="[[tabIndex]]" on-change="onCheckboxChange_">
-                [[item.displayName]]
-              </cr-checkbox-with-policy>
-            </template>
-          </iron-list>
+<cr-dialog id="dialog" close-text="$i18n{close}" show-on-attach>
+  <div slot="title">$i18n{addInputMethodLabel}</div>
+  <div id="dialogBody" slot="body" scrollable>
+    <cr-search-field label="$i18n{searchInputMethodsLabel}" id="search"
+        on-search-changed="onSearchChanged_" on-keydown="onKeydown_"
+        class="is-width-of-dialog"
+        clear-label="$i18n{clearSearch}" autofocus>
+    </cr-search-field>
+    <template is="dom-if" if="[[showSuggestedList_]]">
+      <div id="suggestedInputMethods">
+        <div class="label is-width-of-dialog">
+          $i18n{suggestedInputMethodsLabel}
         </div>
+        <iron-list items="[[suggestedInputMethods_]]">
+          <template>
+            <cr-checkbox class="list-item no-outline is-width-of-dialog"
+                checked="[[willAdd_(item.id, inputMethodsToAdd_.size)]]"
+                tab-index="[[tabIndex]]" on-change="onCheckboxChange_">
+              [[item.displayName]]
+            </cr-checkbox>
+          </template>
+        </iron-list>
       </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelButtonTap_">
-          $i18n{cancel}
-        </cr-button>
-        <cr-button class="action-button" on-click="onActionButtonTap_"
-            disabled="[[disableActionButton_]]">
-          $i18n{add}
-        </cr-button>
+    </template>
+    <div id="allInputMethods">
+      <div id="allInputMethodsLabel" hidden="[[!showSuggestedList_]]"
+          class="label is-width-of-dialog">
+        $i18n{allInputMethodsLabel}
       </div>
-    </cr-dialog>
-  </template>
-  <script src="add_input_methods_dialog.js"></script>
-</dom-module>
+      <iron-list items="[[getAllInputMethods_(languages.inputMethods,
+          lowercaseQueryString_)]]">
+        <template>
+          <cr-checkbox-with-policy
+              class="list-item no-outline is-width-of-dialog"
+              checked="[[willAdd_(item.id, inputMethodsToAdd_.size)]]"
+              disabled="[[item.isProhibitedByPolicy]]"
+              policy-tooltip="$i18n{inputMethodNotAllowed}"
+              tab-index="[[tabIndex]]" on-change="onCheckboxChange_">
+            [[item.displayName]]
+          </cr-checkbox-with-policy>
+        </template>
+      </iron-list>
+    </div>
+  </div>
+  <div slot="button-container">
+    <cr-button class="cancel-button" on-click="onCancelButtonTap_">
+      $i18n{cancel}
+    </cr-button>
+    <cr-button class="action-button" on-click="onActionButtonTap_"
+        disabled="[[disableActionButton_]]">
+      $i18n{add}
+    </cr-button>
+  </div>
+</cr-dialog>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js b/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js
index d198d5cd..c9788561 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js
@@ -11,7 +11,22 @@
  * @fileoverview 'os-settings-add-input-methods-dialog' is a dialog for
  * adding input methods.
  */
+import {afterNextRender, Polymer, html, flush, Templatizer, TemplateInstanceBase} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_search_field/cr_search_field.js';
+import '//resources/cr_elements/cr_dialog/cr_dialog.m.js';
+import '//resources/polymer/v3_0/iron-flex-layout/iron-flex-layout-classes.js';
+import '//resources/polymer/v3_0/iron-list/iron-list.js';
+import './cr_checkbox_with_policy.js';
+import {recordSettingChange, recordSearch, setUserActionRecorderForTesting, recordPageFocus, recordPageBlur, recordClick, recordNavigation} from '../metrics_recorder.m.js';
+import './shared_style.js';
+import './languages.js';
+import {LanguageHelper, LanguagesModel} from './languages_types.js';
+import '../../settings_shared_css.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-add-input-methods-dialog',
 
   properties: {
@@ -165,7 +180,7 @@
     this.inputMethodsToAdd_.forEach(id => {
       this.languageHelper.addInputMethod(id);
     });
-    settings.recordSettingChange();
+    recordSettingChange();
     this.$.dialog.close();
   },
 
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js b/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js
index 3bf30af..3e10724 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js
@@ -12,7 +12,7 @@
 import '//resources/polymer/v3_0/iron-flex-layout/iron-flex-layout-classes.js';
 import '//resources/polymer/v3_0/iron-list/iron-list.js';
 import './cr_checkbox_with_policy.js';
-import './shared_style.m.js';
+import './shared_style.js';
 import '../../settings_shared_css.js';
 
 import {CrScrollableBehavior} from '//resources/cr_elements/cr_scrollable_behavior.m.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.html b/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.html
index a63ab1a..552de9e3 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.html
@@ -1,118 +1,93 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared iron-flex shared-style">
+  #dialogBody {
+    display: flex;
+    flex-direction: column;
+    height: 336px;
+    overflow: auto;
+    padding-inline-end: 0;
+    padding-inline-start: 0;
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_scrollable_behavior.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_search_field/cr_search_field.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-ripple/paper-ripple.html">
-<link rel="import" href="languages_metrics_proxy.html">
-<link rel="import" href="shared_style.html">
-<link rel="import" href="chrome://resources/cr_components/chromeos/localized_link/localized_link.html">
-<link rel="import" href="../metrics_recorder.html">
-<link rel="import" href="languages.html">
-<link rel="import" href="languages_types.html">
-<link rel="import" href="../../lifetime_browser_proxy.html">
-<link rel="import" href="../../settings_shared_css.html">
+  cr-search-field {
+    margin-bottom: 16px;
+    margin-inline-end: var(--dialog-horizontal-padding);
+    margin-inline-start: var(--dialog-horizontal-padding);
+    margin-top: 16px;
+  }
 
-<dom-module id="os-settings-change-device-language-dialog">
-  <template>
-    <style include="settings-shared iron-flex shared-style">
-      #dialogBody {
-        display: flex;
-        flex-direction: column;
-        height: 336px;
-        overflow: auto;
-        padding-inline-end: 0;
-        padding-inline-start: 0;
-      }
+  iron-icon[icon='settings:check-circle'] {
+    --iron-icon-fill-color: var(--cr-link-color);
+    margin-inline-end: 26px;
+  }
 
-      cr-search-field {
-        margin-bottom: 16px;
-        margin-inline-end: var(--dialog-horizontal-padding);
-        margin-inline-start: var(--dialog-horizontal-padding);
-        margin-top: 16px;
-      }
+  iron-list > div:not(.selected):hover {
+    background-color: var(--cros-menu-item-bg-color-focus);
+  }
 
-      iron-icon[icon='settings:check-circle'] {
-        --iron-icon-fill-color: var(--cr-link-color);
-        margin-inline-end: 26px;
-      }
+  [scrollable] iron-list > :not(.no-outline):focus {
+    background-color: var(--cros-menu-item-bg-color-focus);
+  }
 
-      iron-list > div:not(.selected):hover {
-        background-color: var(--cros-menu-item-bg-color-focus);
-      }
+  [scrollable] iron-list > .selected:not(.no-outline):focus {
+    background-color: transparent;
+  }
 
-      [scrollable] iron-list > :not(.no-outline):focus {
-        background-color: var(--cros-menu-item-bg-color-focus);
-      }
+  .list-item {
+    color: var(--cros-text-color-primary);
+    min-height: 36px;
+  }
 
-      [scrollable] iron-list > .selected:not(.no-outline):focus {
-        background-color: transparent;
-      }
+  .padded {
+    padding-inline-end: var(--dialog-horizontal-padding);
+    padding-inline-start: var(--dialog-horizontal-padding);
+  }
 
-      .list-item {
-        color: var(--cros-text-color-primary);
-        min-height: 36px;
-      }
+  paper-ripple {
+    color: var(--cros-menu-item-ripple-color);
+  }
+</style>
 
-      .padded {
-        padding-inline-end: var(--dialog-horizontal-padding);
-        padding-inline-start: var(--dialog-horizontal-padding);
-      }
-
-      paper-ripple {
-        color: var(--cros-menu-item-ripple-color);
-      }
-    </style>
-
-    <cr-dialog id="dialog" close-text="$i18n{close}" show-on-attach>
-      <div slot="title">$i18n{changeDeviceLanguageDialogTitle}</div>
-      <div id="dialogBody" slot="body" scrollable>
-        <localized-link class="padded"
-            localized-string="[[i18nAdvanced(
-                'changeDeviceLanguageDialogDescription')]]">
-        </localized-link>
-        <cr-search-field label="$i18n{searchLanguages}"
-            id="search" on-search-changed="onSearchChanged_"
-            clear-label="$i18n{clearSearch}" on-keydown="onKeydown_" autofocus>
-        </cr-search-field>
-        <iron-list scroll-target="[[$$('[slot=body]')]]"
-            items="[[displayedLanguages_]]" selection-enabled
-            selected-item="{{selectedLanguage_}}"
-            hidden$="[[displayedLanguagesEmpty_]]">
-          <template>
-            <!-- |selected| is a property of iron-list -->
-            <div class$="list-item [[getItemClass_(selected)]]"
-                tabindex$="[[tabIndex]]"
-                aria-label="[[getAriaLabelForItem_(item, selected)]]">
-              <paper-ripple></paper-ripple>
-              <div class="flex padded" aria-hidden="true">
-                [[getDisplayText_(item)]]
-              </div>
-              <iron-icon icon="settings:check-circle" hidden="[[!selected]]">
-              </iron-icon>
-            </div>
-          </template>
-        </iron-list>
-        <div id="no-search-results" class="centered-message"
-            hidden$="[[!displayedLanguagesEmpty_]]">
-          $i18n{noSearchResults}
+<cr-dialog id="dialog" close-text="$i18n{close}" show-on-attach>
+  <div slot="title">$i18n{changeDeviceLanguageDialogTitle}</div>
+  <div id="dialogBody" slot="body" scrollable>
+    <localized-link class="padded"
+        localized-string="[[i18nAdvanced(
+            'changeDeviceLanguageDialogDescription')]]">
+    </localized-link>
+    <cr-search-field label="$i18n{searchLanguages}"
+        id="search" on-search-changed="onSearchChanged_"
+        clear-label="$i18n{clearSearch}" on-keydown="onKeydown_" autofocus>
+    </cr-search-field>
+    <iron-list scroll-target="[[$$('[slot=body]')]]"
+        items="[[displayedLanguages_]]" selection-enabled
+        selected-item="{{selectedLanguage_}}"
+        hidden$="[[displayedLanguagesEmpty_]]">
+      <template>
+        <!-- |selected| is a property of iron-list -->
+        <div class$="list-item [[getItemClass_(selected)]]"
+            tabindex$="[[tabIndex]]"
+            aria-label="[[getAriaLabelForItem_(item, selected)]]">
+          <paper-ripple></paper-ripple>
+          <div class="flex padded" aria-hidden="true">
+            [[getDisplayText_(item)]]
+          </div>
+          <iron-icon icon="settings:check-circle" hidden="[[!selected]]">
+          </iron-icon>
         </div>
-      </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelButtonTap_">
-          $i18n{cancel}
-        </cr-button>
-        <cr-button class="action-button" on-click="onActionButtonTap_"
-            disabled="[[disableActionButton_]]">
-          $i18n{changeDeviceLanguageConfirmButtonLabel}
-        </cr-button>
-      </div>
-    </cr-dialog>
-  </template>
-  <script src="change_device_language_dialog.js"></script>
-</dom-module>
+      </template>
+    </iron-list>
+    <div id="no-search-results" class="centered-message"
+        hidden$="[[!displayedLanguagesEmpty_]]">
+      $i18n{noSearchResults}
+    </div>
+  </div>
+  <div slot="button-container">
+    <cr-button class="cancel-button" on-click="onCancelButtonTap_">
+      $i18n{cancel}
+    </cr-button>
+    <cr-button class="action-button" on-click="onActionButtonTap_"
+        disabled="[[disableActionButton_]]">
+      $i18n{changeDeviceLanguageConfirmButtonLabel}
+    </cr-button>
+  </div>
+</cr-dialog>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.js b/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.js
index c1c1127..49b520d2 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.js
@@ -6,7 +6,30 @@
  * @fileoverview 'os-settings-change-device-language-dialog' is a dialog for
  * changing device language.
  */
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_search_field/cr_search_field.js';
+import '//resources/cr_elements/cr_dialog/cr_dialog.m.js';
+import '//resources/polymer/v3_0/iron-flex-layout/iron-flex-layout-classes.js';
+import '//resources/polymer/v3_0/iron-list/iron-list.js';
+import '//resources/polymer/v3_0/paper-ripple/paper-ripple.js';
+import './shared_style.js';
+import '//resources/cr_components/chromeos/localized_link/localized_link.js';
+import './languages.js';
+import '../../settings_shared_css.js';
+
+import {CrScrollableBehavior} from '//resources/cr_elements/cr_scrollable_behavior.m.js';
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {LifetimeBrowserProxyImpl} from '../../lifetime_browser_proxy.js';
+import {recordClick, recordNavigation, recordPageBlur, recordPageFocus, recordSearch, recordSettingChange, setUserActionRecorderForTesting} from '../metrics_recorder.m.js';
+
+import {InputsShortcutReminderState, LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './languages_metrics_proxy.js';
+import {LanguageHelper, LanguagesModel} from './languages_types.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-change-device-language-dialog',
 
   behaviors: [
@@ -148,10 +171,10 @@
       this.languageHelper.enableLanguage(languageCode);
       this.languageHelper.moveLanguageToFront(languageCode);
     }
-    settings.recordSettingChange();
-    settings.LanguagesMetricsProxyImpl.getInstance().recordInteraction(
-        settings.LanguagesPageInteraction.RESTART);
-    settings.LifetimeBrowserProxyImpl.getInstance().signOutAndRestart();
+    recordSettingChange();
+    LanguagesMetricsProxyImpl.getInstance().recordInteraction(
+        LanguagesPageInteraction.RESTART);
+    LifetimeBrowserProxyImpl.getInstance().signOutAndRestart();
   },
 
   /**
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.html b/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.html
index 7935c4b6..a2d2b66 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.html
@@ -1,101 +1,82 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared md-select">
+  h2 {
+    padding-inline-start: var(--cr-section-padding);
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/md_select_css.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_toggle/cr_toggle.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="input_method_util.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="../../router.html">
-<link rel="import" href="../route_observer_behavior.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="../prefs_behavior.html">
-<link rel="import" href="languages_types.html">
+  .dependent {
+    padding-inline-start: var(--cr-section-indent-padding);
+  }
+</style>
 
-<dom-module id="settings-input-method-options-page">
-  <template>
-    <style include="settings-shared md-select">
-      h2 {
-        padding-inline-start: var(--cr-section-padding);
-      }
-
-      .dependent {
-        padding-inline-start: var(--cr-section-indent-padding);
-      }
-    </style>
-
-    <div route-path="default">
-      <template is="dom-repeat" items="[[optionSections_]]" as="section">
-        <h2>[[section.title]]</h2>
-        <div class="list-frame">
-          <template is="dom-repeat" items="[[section.options]]" as="option">
-            <div class="list-item" actionable>
-              <div class="start" id="option-label" aria-hidden="true">
-                [[option.label]]
-              </div>
-              <template is="dom-if" if="[[isToggleButton_(option.uiType)]]">
-                <cr-toggle checked="{{option.value}}"
-                    on-click="onToggleButtonOrDropdownChange_"
-                    aria-label="[[option.label]]">
-                </cr-toggle>
+<div route-path="default">
+  <template is="dom-repeat" items="[[optionSections_]]" as="section">
+    <h2>[[section.title]]</h2>
+    <div class="list-frame">
+      <template is="dom-repeat" items="[[section.options]]" as="option">
+        <div class="list-item" actionable>
+          <div class="start" id="option-label" aria-hidden="true">
+            [[option.label]]
+          </div>
+          <template is="dom-if" if="[[isToggleButton_(option.uiType)]]">
+            <cr-toggle checked="{{option.value}}"
+                on-click="onToggleButtonOrDropdownChange_"
+                aria-label="[[option.label]]">
+            </cr-toggle>
+          </template>
+          <template is="dom-if" if="[[isDropdown_(option.uiType)]]">
+            <select class="md-select" value="{{option.value::change}}"
+                on-change="onToggleButtonOrDropdownChange_"
+                aria-label="[[option.label]]">
+              <template is="dom-repeat" items="[[option.menuItems]]">
+                <option selected="[[item.selected]]" value="[[item.value]]">
+                  [[item.label]]
+                </option>
               </template>
-              <template is="dom-if" if="[[isDropdown_(option.uiType)]]">
-                <select class="md-select" value="{{option.value::change}}"
-                    on-change="onToggleButtonOrDropdownChange_"
-                    aria-label="[[option.label]]">
-                  <template is="dom-repeat" items="[[option.menuItems]]">
-                    <option selected="[[item.selected]]" value="[[item.value]]">
-                      [[item.label]]
-                    </option>
-                  </template>
-                </select>
-              </template>
-              <template is="dom-if" if="[[isLink_(option.uiType)]]">
-                <cr-icon-button iron-icon="cr:arrow-right"
-                    on-click="navigateToOtherPageInSettings_"
-                    aria-label="[[option.label]]" role="link">
-                </cr-icon-button>
-              </template>
-            </div>
-            <!--TODO(b/189280771): Reduce this duplication.-->
-            <template is="dom-repeat" items="[[option.dependentOptions]]"
-                as="dependant" id="dependent-settings">
-              <div class="list-item" actionable>
-                <div class="dependent start" aria-hidden="true">
-                  [[dependant.label]]
-                </div>
-                <template is="dom-if"
-                    if="[[isToggleButton_(dependant.uiType)]]">
-                  <cr-toggle checked="{{dependant.value}}"
-                      on-click="onToggleButtonOrDropdownChange_"
-                      aria-label="[[dependant.label]]"
-                      disabled="[[dependentOptionsDisabled_(option.value)]]">
-                  </cr-toggle>
-                </template>
-                <template is="dom-if" if="[[isDropdown_(dependant.uiType)]]">
-                  <select class="md-select" value="{{dependant.value::change}}"
-                      on-change="onToggleButtonOrDropdownChange_"
-                      aria-label="[[dependant.label]]"">
-                    <template is="dom-repeat" items="[[dependant.menuItems]]">
-                      <option selected="[[item.selected]]"
-                        value="[[item.value]]">
-                        [[item.label]]
-                      </option>
-                    </template>
-                  </select>
-                </template>
-                <template is="dom-if" if="[[isLink_(dependant.uiType)]]">
-                  <cr-icon-button class="icon-external"
-                      on-click="onExternalLinkClick_"
-                      aria-label="[[dependant.label]]">
-                  </cr-icon-button>
-                </template>
-              </div>
-            </template>
+            </select>
+          </template>
+          <template is="dom-if" if="[[isLink_(option.uiType)]]">
+            <cr-icon-button iron-icon="cr:arrow-right"
+                on-click="navigateToOtherPageInSettings_"
+                aria-label="[[option.label]]" role="link">
+            </cr-icon-button>
           </template>
         </div>
+        <!--TODO(b/189280771): Reduce this duplication.-->
+        <template is="dom-repeat" items="[[option.dependentOptions]]"
+            as="dependant" id="dependent-settings">
+          <div class="list-item" actionable>
+            <div class="dependent start" aria-hidden="true">
+              [[dependant.label]]
+            </div>
+            <template is="dom-if"
+                if="[[isToggleButton_(dependant.uiType)]]">
+              <cr-toggle checked="{{dependant.value}}"
+                  on-click="onToggleButtonOrDropdownChange_"
+                  aria-label="[[dependant.label]]"
+                  disabled="[[dependentOptionsDisabled_(option.value)]]">
+              </cr-toggle>
+            </template>
+            <template is="dom-if" if="[[isDropdown_(dependant.uiType)]]">
+              <select class="md-select" value="{{dependant.value::change}}"
+                  on-change="onToggleButtonOrDropdownChange_"
+                  aria-label="[[dependant.label]]"">
+                <template is="dom-repeat" items="[[dependant.menuItems]]">
+                  <option selected="[[item.selected]]"
+                    value="[[item.value]]">
+                    [[item.label]]
+                  </option>
+                </template>
+              </select>
+            </template>
+            <template is="dom-if" if="[[isLink_(dependant.uiType)]]">
+              <cr-icon-button class="icon-external"
+                  on-click="onExternalLinkClick_"
+                  aria-label="[[dependant.label]]">
+              </cr-icon-button>
+            </template>
+          </div>
+        </template>
       </template>
     </div>
   </template>
-  <script src="input_method_options_page.js"></script>
-</dom-module>
+</div>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.js b/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.js
index 1c6cee6..285d29a4 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.js
@@ -6,13 +6,30 @@
  * @fileoverview 'settings-input-method-options-page' is the settings sub-page
  * to allow users to change options for each input method.
  */
+import '//resources/cr_elements/md_select_css.m.js';
+import '//resources/cr_elements/cr_toggle/cr_toggle.m.js';
+import '../../settings_shared_css.js';
+
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {Route, Router} from '../../router.js';
+import {routes} from '../os_route.m.js';
+import {PrefsBehavior} from '../prefs_behavior.js';
+import {RouteObserverBehavior} from '../route_observer_behavior.js';
+
+import {generateOptions, getFirstPartyInputMethodEngineId, getOptionLabelName, getOptionMenuItems, getOptionUiType, getOptionUrl, getUntranslatedOptionLabelName, hasOptionsPageInSettings, isNumberValue, isOptionLabelTranslated, OPTION_DEFAULT, OptionType, UiType} from './input_method_util.js';
+import {LanguageHelper} from './languages_types.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'settings-input-method-options-page',
 
   behaviors: [
     I18nBehavior,
     PrefsBehavior,
-    settings.RouteObserverBehavior,
+    RouteObserverBehavior,
   ],
 
   properties: {
@@ -56,39 +73,38 @@
   PREFS_PATH: 'settings.language.input_method_specific_settings',
 
   /**
-   * settings.RouteObserverBehavior
-   * @param {!settings.Route} route
-   * @param {!settings.Route} oldRoute
+   * RouteObserverBehavior
+   * @param {!Route} route
+   * @param {!Route} oldRoute
    * @protected
    */
   currentRouteChanged(route, oldRoute) {
-    if (route !== settings.routes.OS_LANGUAGES_INPUT_METHOD_OPTIONS) {
+    if (route !== routes.OS_LANGUAGES_INPUT_METHOD_OPTIONS) {
       this.id_ = '';
       this.parentNode.pageTitle = '';
       this.optionSections_ = [];
       return;
     }
 
-    const queryParams = settings.Router.getInstance().getQueryParameters();
+    const queryParams = Router.getInstance().getQueryParameters();
     this.id_ = queryParams.get('id') || '';
     this.parentNode.pageTitle =
         this.languageHelper.getInputMethodDisplayName(this.id_);
     assert(
         this.parentNode.pageTitle !== '',
         `Input method ID '${this.id_}' is invalid`);
-    this.engineId_ =
-        settings.input_method_util.getFirstPartyInputMethodEngineId(this.id_);
+    this.engineId_ = getFirstPartyInputMethodEngineId(this.id_);
     this.populateOptionSections_();
   },
 
   /**
    * Get menu items for an option, and enrich the items with selected status and
    * i18n label.
-   * @param {settings.input_method_util.OptionType} name
+   * @param {OptionType} name
    * @param {*} value
    */
   getMenuItems(name, value) {
-    return settings.input_method_util.getOptionMenuItems(name).map(menuItem => {
+    return getOptionMenuItems(name).map(menuItem => {
       menuItem['selected'] = menuItem['value'] === value;
       menuItem['label'] =
           menuItem['name'] ? this.i18n(menuItem['name']) : menuItem['value'];
@@ -101,7 +117,7 @@
    * @private
    */
   populateOptionSections_() {
-    const options = settings.input_method_util.generateOptions(this.engineId_);
+    const options = generateOptions(this.engineId_);
 
     const prefValue = this.getPref(this.PREFS_PATH).value;
     const prefix = this.getPrefsPrefix_();
@@ -109,25 +125,24 @@
 
     const makeOption = (option) => {
       const name = option.name;
-      const uiType = settings.input_method_util.getOptionUiType(name);
-      let value = name in currentSettings ?
-          currentSettings[name] :
-          settings.input_method_util.OPTION_DEFAULT[name];
+      const uiType = getOptionUiType(name);
+      let value = name in currentSettings ? currentSettings[name] :
+                                            OPTION_DEFAULT[name];
       if (!this.isSettingValueValid_(name, value)) {
-        value = settings.input_method_util.OPTION_DEFAULT[name];
+        value = OPTION_DEFAULT[name];
         this.updatePref_(name, value);
       }
 
-      const label = settings.input_method_util.isOptionLabelTranslated(name) ?
-          this.i18n(settings.input_method_util.getOptionLabelName(name)) :
-          settings.input_method_util.getUntranslatedOptionLabelName(name);
+      const label = isOptionLabelTranslated(name) ?
+          this.i18n(getOptionLabelName(name)) :
+          getUntranslatedOptionLabelName(name);
       return {
         name: name,
         uiType: uiType,
         value: value,
         label: label,
         menuItems: this.getMenuItems(name, value),
-        url: settings.input_method_util.getOptionUrl(name),
+        url: getOptionUrl(name),
         dependentOptions: option.dependentOptions ?
             option.dependentOptions.map(t => makeOption({name: t})) :
             []
@@ -185,23 +200,23 @@
     // The value of dropdown is not updated immediately when the event is fired.
     // Wait for the polymer state to update to make sure we write the latest
     // to Cros Prefs.
-    Polymer.RenderStatus.afterNextRender(this, () => {
+    afterNextRender(this, () => {
       this.updatePref_(option.name, option.value);
     });
   },
 
   isSettingValueValid_(name, value) {
-    const uiType = settings.input_method_util.getOptionUiType(name);
+    const uiType = getOptionUiType(name);
     if (uiType !== UiType.DROPDOWN) {
       return true;
     }
-    const menuItems = settings.input_method_util.getOptionMenuItems(name);
+    const menuItems = getOptionMenuItems(name);
     return menuItems.find((item) => item.value === value);
   },
 
   /**
    * Update an input method pref.
-   * @param {!settings.input_method_util.OptionType} optionName
+   * @param {!OptionType} optionName
    * @param {*} newValue
    * @private
    */
@@ -219,7 +234,7 @@
     // The value of dropdown in html is always string, but some of the prefs
     // values are used as integer or enum by IME, so we need to store numbers
     // for them to function correctly.
-    if (settings.input_method_util.isNumberValue(optionName)) {
+    if (isNumberValue(optionName)) {
       newValue = parseInt(newValue, 10);
     }
     updatedSettings[prefix][optionName] = newValue;
@@ -228,11 +243,11 @@
 
   /**
    * Opens external link in Chrome.
-   * @param {!{model: !{option: !{url: !settings.Route}}}} e
+   * @param {!{model: !{option: !{url: !Route}}}} e
    * @private
    */
   navigateToOtherPageInSettings_(e) {
-    settings.Router.getInstance().navigateTo(e.model.option.url);
+    Router.getInstance().navigateTo(e.model.option.url);
   },
 
   /**
@@ -256,29 +271,29 @@
   },
 
   /**
-   * @param {!settings.input_method_util.UiType} item
+   * @param {!UiType} item
    * @return {boolean} true if |item| is a toggle button.
    * @private
    */
   isToggleButton_(item) {
-    return item === settings.input_method_util.UiType.TOGGLE_BUTTON;
+    return item === UiType.TOGGLE_BUTTON;
   },
 
   /**
-   * @param {!settings.input_method_util.UiType} item
+   * @param {!UiType} item
    * @return {boolean} true if |item| is a dropdown.
    * @private
    */
   isDropdown_(item) {
-    return item === settings.input_method_util.UiType.DROPDOWN;
+    return item === UiType.DROPDOWN;
   },
 
   /**
-   * @param {!settings.input_method_util.UiType} item
+   * @param {!UiType} item
    * @return {boolean} true if |item| is an external link.
    * @private
    */
   isLink_(item) {
-    return item === settings.input_method_util.UiType.LINK;
+    return item === UiType.LINK;
   },
 });
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_util.js b/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_util.js
index 16b842e..cf30a51 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_util.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/input_method_util.js
@@ -2,538 +2,538 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// #import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js';
-// #import {routes} from '../os_route.m.js';
+import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js';
+
+import {Route} from '../../router.js';
+import {routes} from '../os_route.m.js';
+
 import {inputMethodSettings, SettingsType} from './input_method_settings.js';
-// #import {Route} from '../../router.js';
+
 
 /**
  * @fileoverview constants related to input method options.
  */
-cr.define('settings.input_method_util', function() {
-  /**
-   * The prefix string shared by all first party input method ID.
-   * @private @const
-   */
-  /* #export */ const FIRST_PARTY_INPUT_METHOD_ID_PREFIX =
-      '_comp_ime_jkghodnilhceideoidjikpgommlajknk';
+/**
+ * The prefix string shared by all first party input method ID.
+ * @private @const
+ */
+export const FIRST_PARTY_INPUT_METHOD_ID_PREFIX =
+    '_comp_ime_jkghodnilhceideoidjikpgommlajknk';
 
-  /**
-   * All possible keyboard layouts. Should match Google3.
-   *
-   * @enum {string}
-   */
-  const KeyboardLayout = {
-    STANDARD: 'Default',
-    GINYIEH: 'Gin Yieh',
-    ETEN: 'Eten',
-    IBM: 'IBM',
-    HSU: 'Hsu',
-    ETEN26: 'Eten 26',
-    SET2: '2 Set / 두벌식',
-    SET2Y: '2 Set (Old Hangul) / 두벌식 (옛글)',
-    SET390: '3 Set (390) / 세벌식 (390)',
-    SET3_FINAL: '3 Set (Final) / 세벌식 (최종)',
-    SET3_SUN: '3 Set (No Shift) / 세벌식 (순아래)',
-    SET3_YET: '3 Set (Old Hangul) / 세벌식 (옛글)',
-    XKB_US: 'US',
-    XKB_DVORAK: 'Dvorak',
-    XKB_COLEMAK: 'Colemak'
-  };
+/**
+ * All possible keyboard layouts. Should match Google3.
+ *
+ * @enum {string}
+ */
+const KeyboardLayout = {
+  STANDARD: 'Default',
+  GINYIEH: 'Gin Yieh',
+  ETEN: 'Eten',
+  IBM: 'IBM',
+  HSU: 'Hsu',
+  ETEN26: 'Eten 26',
+  SET2: '2 Set / 두벌식',
+  SET2Y: '2 Set (Old Hangul) / 두벌식 (옛글)',
+  SET390: '3 Set (390) / 세벌식 (390)',
+  SET3_FINAL: '3 Set (Final) / 세벌식 (최종)',
+  SET3_SUN: '3 Set (No Shift) / 세벌식 (순아래)',
+  SET3_YET: '3 Set (Old Hangul) / 세벌식 (옛글)',
+  XKB_US: 'US',
+  XKB_DVORAK: 'Dvorak',
+  XKB_COLEMAK: 'Colemak'
+};
 
-  /**
-   * All possible options on options pages. Should match Gooogle3.
-   *
-   * @enum {string}
-   */
-  /* #export */ const OptionType = {
-    EDIT_USER_DICT: 'editUserDict',
-    ENABLE_COMPLETION: 'enableCompletion',
-    ENABLE_DOUBLE_SPACE_PERIOD: 'enableDoubleSpacePeriod',
-    ENABLE_GESTURE_TYPING: 'enableGestureTyping',
-    ENABLE_PREDICTION: 'enablePrediction',
-    ENABLE_SOUND_ON_KEYPRESS: 'enableSoundOnKeypress',
-    PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-        'physicalKeyboardAutoCorrectionLevel',
-    PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION:
-        'physicalKeyboardEnableCapitalization',
-    VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-        'virtualKeyboardAutoCorrectionLevel',
-    VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION:
-        'virtualKeyboardEnableCapitalization',
-    XKB_LAYOUT: 'xkbLayout',
-    // Options for Korean input method.
-    KOREAN_ENABLE_SYLLABLE_INPUT: 'koreanEnableSyllableInput',
-    KOREAN_KEYBOARD_LAYOUT: 'koreanKeyboardLayout',
-    // Options for pinyin input method.
-    PINYIN_CHINESE_PUNCTUATION: 'pinyinChinesePunctuation',
-    PINYIN_DEFAULT_CHINESE: 'pinyinDefaultChinese',
-    PINYIN_ENABLE_FUZZY: 'pinyinEnableFuzzy',
-    PINYIN_ENABLE_LOWER_PAGING: 'pinyinEnableLowerPaging',
-    PINYIN_ENABLE_UPPER_PAGING: 'pinyinEnableUpperPaging',
-    PINYIN_FULL_WIDTH_CHARACTER: 'pinyinFullWidthCharacter',
-    PINYIN_FUZZY_CONFIG: 'pinyinFuzzyConfig',
-    PINYIN_EN_ENG: 'en:eng',
-    PINYIN_AN_ANG: 'an:ang',
-    PINYIN_IAN_IANG: 'ian:iang',
-    PINYIN_K_G: 'k:g',
-    PINYIN_R_L: 'r:l',
-    PINYIN_UAN_UANG: 'uan:uang',
-    PINYIN_C_CH: 'c:ch',
-    PINYIN_F_H: 'f:h',
-    PINYIN_IN_ING: 'in:ing',
-    PINYIN_L_N: 'l:n',
-    PINYIN_S_SH: 's:sh',
-    PINYIN_Z_ZH: 'z:zh',
-    // Options for zhuyin input method.
-    ZHUYIN_KEYBOARD_LAYOUT: 'zhuyinKeyboardLayout',
-    ZHUYIN_PAGE_SIZE: 'zhuyinPageSize',
-    ZHUYIN_SELECT_KEYS: 'zhuyinSelectKeys',
-  };
+/**
+ * All possible options on options pages. Should match Gooogle3.
+ *
+ * @enum {string}
+ */
+export const OptionType = {
+  EDIT_USER_DICT: 'editUserDict',
+  ENABLE_COMPLETION: 'enableCompletion',
+  ENABLE_DOUBLE_SPACE_PERIOD: 'enableDoubleSpacePeriod',
+  ENABLE_GESTURE_TYPING: 'enableGestureTyping',
+  ENABLE_PREDICTION: 'enablePrediction',
+  ENABLE_SOUND_ON_KEYPRESS: 'enableSoundOnKeypress',
+  PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
+      'physicalKeyboardAutoCorrectionLevel',
+  PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION:
+      'physicalKeyboardEnableCapitalization',
+  VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL: 'virtualKeyboardAutoCorrectionLevel',
+  VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION: 'virtualKeyboardEnableCapitalization',
+  XKB_LAYOUT: 'xkbLayout',
+  // Options for Korean input method.
+  KOREAN_ENABLE_SYLLABLE_INPUT: 'koreanEnableSyllableInput',
+  KOREAN_KEYBOARD_LAYOUT: 'koreanKeyboardLayout',
+  // Options for pinyin input method.
+  PINYIN_CHINESE_PUNCTUATION: 'pinyinChinesePunctuation',
+  PINYIN_DEFAULT_CHINESE: 'pinyinDefaultChinese',
+  PINYIN_ENABLE_FUZZY: 'pinyinEnableFuzzy',
+  PINYIN_ENABLE_LOWER_PAGING: 'pinyinEnableLowerPaging',
+  PINYIN_ENABLE_UPPER_PAGING: 'pinyinEnableUpperPaging',
+  PINYIN_FULL_WIDTH_CHARACTER: 'pinyinFullWidthCharacter',
+  PINYIN_FUZZY_CONFIG: 'pinyinFuzzyConfig',
+  PINYIN_EN_ENG: 'en:eng',
+  PINYIN_AN_ANG: 'an:ang',
+  PINYIN_IAN_IANG: 'ian:iang',
+  PINYIN_K_G: 'k:g',
+  PINYIN_R_L: 'r:l',
+  PINYIN_UAN_UANG: 'uan:uang',
+  PINYIN_C_CH: 'c:ch',
+  PINYIN_F_H: 'f:h',
+  PINYIN_IN_ING: 'in:ing',
+  PINYIN_L_N: 'l:n',
+  PINYIN_S_SH: 's:sh',
+  PINYIN_Z_ZH: 'z:zh',
+  // Options for zhuyin input method.
+  ZHUYIN_KEYBOARD_LAYOUT: 'zhuyinKeyboardLayout',
+  ZHUYIN_PAGE_SIZE: 'zhuyinPageSize',
+  ZHUYIN_SELECT_KEYS: 'zhuyinSelectKeys',
+};
 
-  /**
-   * Default values for each option type.
-   *
-   * WARNING: Keep this in sync with corresponding Google3 file for extension.
-   *
-   * @type {Object<settings.input_method_util.OptionType, *>}
-   * @const
-   */
-  /* #export */ const OPTION_DEFAULT = {
-    [OptionType.ENABLE_COMPLETION]: false,
-    [OptionType.ENABLE_DOUBLE_SPACE_PERIOD]: true,
-    [OptionType.ENABLE_GESTURE_TYPING]: true,
-    [OptionType.ENABLE_PREDICTION]: false,
-    [OptionType.ENABLE_SOUND_ON_KEYPRESS]: false,
-    [OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL]: 0,
-    [OptionType.PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION]: true,
-    [OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL]: 1,
-    [OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION]: true,
-    [OptionType.XKB_LAYOUT]: 'US',
-    // Options for Korean input method.
-    [OptionType.KOREAN_ENABLE_SYLLABLE_INPUT]: true,
-    [OptionType.KOREAN_KEYBOARD_LAYOUT]: KeyboardLayout.SET2,
-    // Options for pinyin input method.
-    [OptionType.PINYIN_CHINESE_PUNCTUATION]: true,
-    [OptionType.PINYIN_DEFAULT_CHINESE]: true,
-    [OptionType.PINYIN_ENABLE_FUZZY]: false,
-    [OptionType.PINYIN_ENABLE_LOWER_PAGING]: true,
-    [OptionType.PINYIN_ENABLE_UPPER_PAGING]: true,
-    [OptionType.PINYIN_FULL_WIDTH_CHARACTER]: false,
-    [OptionType.PINYIN_FUZZY_CONFIG]: {
-      an_ang: undefined,
-      c_ch: undefined,
-      en_eng: undefined,
-      f_h: undefined,
-      ian_iang: undefined,
-      in_ing: undefined,
-      k_g: undefined,
-      l_n: undefined,
-      r_l: undefined,
-      s_sh: undefined,
-      uan_uang: undefined,
-      z_zh: undefined
-    },
-    // Options for zhuyin input method.
-    [OptionType.ZHUYIN_KEYBOARD_LAYOUT]: KeyboardLayout.STANDARD,
-    [OptionType.ZHUYIN_PAGE_SIZE]: 10,
-    [OptionType.ZHUYIN_SELECT_KEYS]: '1234567890',
-  };
+/**
+ * Default values for each option type.
+ *
+ * WARNING: Keep this in sync with corresponding Google3 file for extension.
+ *
+ * @type {Object<OptionType, *>}
+ * @const
+ */
+export const OPTION_DEFAULT = {
+  [OptionType.ENABLE_COMPLETION]: false,
+  [OptionType.ENABLE_DOUBLE_SPACE_PERIOD]: true,
+  [OptionType.ENABLE_GESTURE_TYPING]: true,
+  [OptionType.ENABLE_PREDICTION]: false,
+  [OptionType.ENABLE_SOUND_ON_KEYPRESS]: false,
+  [OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL]: 0,
+  [OptionType.PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION]: true,
+  [OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL]: 1,
+  [OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION]: true,
+  [OptionType.XKB_LAYOUT]: 'US',
+  // Options for Korean input method.
+  [OptionType.KOREAN_ENABLE_SYLLABLE_INPUT]: true,
+  [OptionType.KOREAN_KEYBOARD_LAYOUT]: KeyboardLayout.SET2,
+  // Options for pinyin input method.
+  [OptionType.PINYIN_CHINESE_PUNCTUATION]: true,
+  [OptionType.PINYIN_DEFAULT_CHINESE]: true,
+  [OptionType.PINYIN_ENABLE_FUZZY]: false,
+  [OptionType.PINYIN_ENABLE_LOWER_PAGING]: true,
+  [OptionType.PINYIN_ENABLE_UPPER_PAGING]: true,
+  [OptionType.PINYIN_FULL_WIDTH_CHARACTER]: false,
+  [OptionType.PINYIN_FUZZY_CONFIG]: {
+    an_ang: undefined,
+    c_ch: undefined,
+    en_eng: undefined,
+    f_h: undefined,
+    ian_iang: undefined,
+    in_ing: undefined,
+    k_g: undefined,
+    l_n: undefined,
+    r_l: undefined,
+    s_sh: undefined,
+    uan_uang: undefined,
+    z_zh: undefined
+  },
+  // Options for zhuyin input method.
+  [OptionType.ZHUYIN_KEYBOARD_LAYOUT]: KeyboardLayout.STANDARD,
+  [OptionType.ZHUYIN_PAGE_SIZE]: 10,
+  [OptionType.ZHUYIN_SELECT_KEYS]: '1234567890',
+};
 
-  /**
-   * All possible UI elements for options.
-   *
-   * @enum {string}
-   */
-  /* #export */ const UiType = {
-    TOGGLE_BUTTON: 'toggleButton',
-    DROPDOWN: 'dropdown',
-    LINK: 'link',
-  };
+/**
+ * All possible UI elements for options.
+ *
+ * @enum {string}
+ */
+export const UiType = {
+  TOGGLE_BUTTON: 'toggleButton',
+  DROPDOWN: 'dropdown',
+  LINK: 'link',
+};
 
-  const Settings = {
-    [SettingsType.LATIN_SETTINGS]: {
-      physicalKeyboard: [{
-        name: OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL,
-      }],
-      virtualKeyboard: [
-        {name: OptionType.ENABLE_SOUND_ON_KEYPRESS}, {
-          name: OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL,
-          dependentOptions: [
-            OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION,
-          ]
-        },
-        {name: OptionType.ENABLE_GESTURE_TYPING},
-        {name: OptionType.ENABLE_DOUBLE_SPACE_PERIOD},
-        {name: OptionType.EDIT_USER_DICT}
-      ],
-      basic: [],
-      advanced: [],
-    },
-    [SettingsType.ZHUYIN_SETTINGS]: {
-      physicalKeyboard: [
-        {name: OptionType.ZHUYIN_KEYBOARD_LAYOUT},
-        {name: OptionType.ZHUYIN_SELECT_KEYS},
-        {name: OptionType.ZHUYIN_PAGE_SIZE},
-      ],
-      virtualKeyboard: [],
-      basic: [],
-      advanced: [],
-    },
-    [SettingsType.KOREAN_SETTINGS]: {
-      basic: [
-        {name: OptionType.KOREAN_KEYBOARD_LAYOUT},
-        {name: OptionType.KOREAN_ENABLE_SYLLABLE_INPUT},
-      ],
-      virtualKeyboard: [],
-      advanced: [],
-      physicalKeyboard: [],
-    },
-    [SettingsType.PINYIN_FUZZY_SETTINGS]: {
-      advanced: [{
-        name: OptionType.PINYIN_ENABLE_FUZZY,
+const Settings = {
+  [SettingsType.LATIN_SETTINGS]: {
+    physicalKeyboard: [{
+      name: OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL,
+    }],
+    virtualKeyboard: [
+      {name: OptionType.ENABLE_SOUND_ON_KEYPRESS}, {
+        name: OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL,
         dependentOptions: [
-          OptionType.PINYIN_AN_ANG,
-          OptionType.PINYIN_EN_ENG,
-          OptionType.PINYIN_IAN_IANG,
-          OptionType.PINYIN_K_G,
-          OptionType.PINYIN_R_L,
-          OptionType.PINYIN_UAN_UANG,
-          OptionType.PINYIN_C_CH,
-          OptionType.PINYIN_F_H,
-          OptionType.PINYIN_IN_ING,
-          OptionType.PINYIN_L_N,
-          OptionType.PINYIN_S_SH,
-          OptionType.PINYIN_Z_ZH,
+          OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION,
         ]
-      }],
-      virtualKeyboard: [],
-      basic: [],
-      physicalKeyboard: [],
-    },
-    [SettingsType.PINYIN_SETTINGS]: {
-      physicalKeyboard: [
-        {name: OptionType.XKB_LAYOUT},
-        {name: OptionType.PINYIN_ENABLE_UPPER_PAGING},
-        {name: OptionType.PINYIN_ENABLE_LOWER_PAGING},
-        {name: OptionType.PINYIN_DEFAULT_CHINESE},
-        {name: OptionType.PINYIN_FULL_WIDTH_CHARACTER},
-        {name: OptionType.PINYIN_CHINESE_PUNCTUATION},
-      ],
-      advanced: [{name: OptionType.EDIT_USER_DICT}],
-      basic: [],
-      virtualKeyboard: [],
-    },
-    [SettingsType.BASIC_SETTINGS]: {
-      physicalKeyboard: [],
-      virtualKeyboard: [
-        {name: OptionType.ENABLE_SOUND_ON_KEYPRESS},
-      ],
-      basic: [],
-      advanced: [],
-    },
-    [SettingsType.ENGLISH_SOUTH_AFRICA_SETTINGS]: {
-      physicalKeyboard: [],
-      virtualKeyboard: [
-        {name: OptionType.ENABLE_SOUND_ON_KEYPRESS},
-        {name: OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION},
-      ],
-      basic: [],
-      advanced: [],
-    }
-  };
-  /**
-   * @param {string} id Input method ID.
-   * @return {string} The corresponding engind ID of the input method.
-   */
-  /* #export */ function getFirstPartyInputMethodEngineId(id) {
-    assert(isFirstPartyInputMethodId_(id));
-    return id.substring(FIRST_PARTY_INPUT_METHOD_ID_PREFIX.length);
+      },
+      {name: OptionType.ENABLE_GESTURE_TYPING},
+      {name: OptionType.ENABLE_DOUBLE_SPACE_PERIOD},
+      {name: OptionType.EDIT_USER_DICT}
+    ],
+    basic: [],
+    advanced: [],
+  },
+  [SettingsType.ZHUYIN_SETTINGS]: {
+    physicalKeyboard: [
+      {name: OptionType.ZHUYIN_KEYBOARD_LAYOUT},
+      {name: OptionType.ZHUYIN_SELECT_KEYS},
+      {name: OptionType.ZHUYIN_PAGE_SIZE},
+    ],
+    virtualKeyboard: [],
+    basic: [],
+    advanced: [],
+  },
+  [SettingsType.KOREAN_SETTINGS]: {
+    basic: [
+      {name: OptionType.KOREAN_KEYBOARD_LAYOUT},
+      {name: OptionType.KOREAN_ENABLE_SYLLABLE_INPUT},
+    ],
+    virtualKeyboard: [],
+    advanced: [],
+    physicalKeyboard: [],
+  },
+  [SettingsType.PINYIN_FUZZY_SETTINGS]: {
+    advanced: [{
+      name: OptionType.PINYIN_ENABLE_FUZZY,
+      dependentOptions: [
+        OptionType.PINYIN_AN_ANG,
+        OptionType.PINYIN_EN_ENG,
+        OptionType.PINYIN_IAN_IANG,
+        OptionType.PINYIN_K_G,
+        OptionType.PINYIN_R_L,
+        OptionType.PINYIN_UAN_UANG,
+        OptionType.PINYIN_C_CH,
+        OptionType.PINYIN_F_H,
+        OptionType.PINYIN_IN_ING,
+        OptionType.PINYIN_L_N,
+        OptionType.PINYIN_S_SH,
+        OptionType.PINYIN_Z_ZH,
+      ]
+    }],
+    virtualKeyboard: [],
+    basic: [],
+    physicalKeyboard: [],
+  },
+  [SettingsType.PINYIN_SETTINGS]: {
+    physicalKeyboard: [
+      {name: OptionType.XKB_LAYOUT},
+      {name: OptionType.PINYIN_ENABLE_UPPER_PAGING},
+      {name: OptionType.PINYIN_ENABLE_LOWER_PAGING},
+      {name: OptionType.PINYIN_DEFAULT_CHINESE},
+      {name: OptionType.PINYIN_FULL_WIDTH_CHARACTER},
+      {name: OptionType.PINYIN_CHINESE_PUNCTUATION},
+    ],
+    advanced: [{name: OptionType.EDIT_USER_DICT}],
+    basic: [],
+    virtualKeyboard: [],
+  },
+  [SettingsType.BASIC_SETTINGS]: {
+    physicalKeyboard: [],
+    virtualKeyboard: [
+      {name: OptionType.ENABLE_SOUND_ON_KEYPRESS},
+    ],
+    basic: [],
+    advanced: [],
+  },
+  [SettingsType.ENGLISH_SOUTH_AFRICA_SETTINGS]: {
+    physicalKeyboard: [],
+    virtualKeyboard: [
+      {name: OptionType.ENABLE_SOUND_ON_KEYPRESS},
+      {name: OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION},
+    ],
+    basic: [],
+    advanced: [],
   }
+};
+/**
+ * @param {string} id Input method ID.
+ * @return {string} The corresponding engind ID of the input method.
+ */
+export function getFirstPartyInputMethodEngineId(id) {
+  assert(isFirstPartyInputMethodId_(id));
+  return id.substring(FIRST_PARTY_INPUT_METHOD_ID_PREFIX.length);
+}
 
   /**
    * @param {string} id Input method ID.
    * @return {boolean} true if the input method's options page is implemented.
    */
-  /* #export */ function hasOptionsPageInSettings(id) {
-    if (!isFirstPartyInputMethodId_(id)) {
+export function hasOptionsPageInSettings(id) {
+  if (!isFirstPartyInputMethodId_(id)) {
+    return false;
+  }
+  const engineId = getFirstPartyInputMethodEngineId(id);
+
+  return !!inputMethodSettings[engineId];
+}
+
+/**
+ * Generates options to be displayed in the options page, grouped by sections.
+ * @param {string} engineId Input method engine ID.
+ * @return {!Array<!{title: string, optionNames:
+ *     !Array<OptionType>}>} the options to be
+ *     displayed.
+ */
+export function generateOptions(engineId) {
+  const options =
+      {basic: [], advanced: [], physicalKeyboard: [], virtualKeyboard: []};
+  const engineSettings = inputMethodSettings[engineId];
+  if (engineSettings) {
+    engineSettings.forEach((settingType) => {
+      const settings = Settings[settingType];
+      options.basic.push(...settings.basic);
+      options.advanced.push(...settings.advanced);
+      options.physicalKeyboard.push(...settings.physicalKeyboard);
+      options.virtualKeyboard.push(...settings.virtualKeyboard);
+    });
+  }
+
+  return [
+    {
+      title: 'basic',
+      optionNames: options.basic,
+    },
+    {
+      title: 'advanced',
+      optionNames: options.advanced,
+    },
+    {
+      title: 'physicalKeyboard',
+      optionNames: options.physicalKeyboard,
+    },
+    {
+      title: 'virtualKeyboard',
+      optionNames: options.virtualKeyboard,
+    },
+  ];
+}
+
+/**
+ * @param {!OptionType} option The option type.
+ * @return {UiType} The UI type of |option|.
+ */
+export function getOptionUiType(option) {
+  switch (option) {
+    // TODO(b/191608723): Clean up switch statements.
+    case OptionType.ENABLE_COMPLETION:
+    case OptionType.ENABLE_DOUBLE_SPACE_PERIOD:
+    case OptionType.ENABLE_GESTURE_TYPING:
+    case OptionType.ENABLE_PREDICTION:
+    case OptionType.ENABLE_SOUND_ON_KEYPRESS:
+    case OptionType.PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION:
+    case OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION:
+    case OptionType.KOREAN_ENABLE_SYLLABLE_INPUT:
+    case OptionType.PINYIN_CHINESE_PUNCTUATION:
+    case OptionType.PINYIN_DEFAULT_CHINESE:
+    case OptionType.PINYIN_ENABLE_FUZZY:
+    case OptionType.PINYIN_ENABLE_LOWER_PAGING:
+    case OptionType.PINYIN_ENABLE_UPPER_PAGING:
+    case OptionType.PINYIN_FULL_WIDTH_CHARACTER:
+    case OptionType.PINYIN_AN_ANG:
+    case OptionType.PINYIN_EN_ENG:
+    case OptionType.PINYIN_IAN_IANG:
+    case OptionType.PINYIN_K_G:
+    case OptionType.PINYIN_R_L:
+    case OptionType.PINYIN_UAN_UANG:
+    case OptionType.PINYIN_C_CH:
+    case OptionType.PINYIN_F_H:
+    case OptionType.PINYIN_IN_ING:
+    case OptionType.PINYIN_L_N:
+    case OptionType.PINYIN_S_SH:
+    case OptionType.PINYIN_Z_ZH:
+      return UiType.TOGGLE_BUTTON;
+    case OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
+    case OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
+    case OptionType.XKB_LAYOUT:
+    case OptionType.KOREAN_KEYBOARD_LAYOUT:
+    case OptionType.ZHUYIN_KEYBOARD_LAYOUT:
+    case OptionType.ZHUYIN_SELECT_KEYS:
+    case OptionType.ZHUYIN_PAGE_SIZE:
+      return UiType.DROPDOWN;
+    case OptionType.EDIT_USER_DICT:
+      return UiType.LINK;
+    default:
+      assertNotReached();
+  }
+}
+export function isOptionLabelTranslated(option) {
+  switch (option) {
+    // TODO(b/191608723): Clean up switch statements.
+    case OptionType.PINYIN_AN_ANG:
+    case OptionType.PINYIN_EN_ENG:
+    case OptionType.PINYIN_IAN_IANG:
+    case OptionType.PINYIN_K_G:
+    case OptionType.PINYIN_R_L:
+    case OptionType.PINYIN_UAN_UANG:
+    case OptionType.PINYIN_C_CH:
+    case OptionType.PINYIN_F_H:
+    case OptionType.PINYIN_IN_ING:
+    case OptionType.PINYIN_L_N:
+    case OptionType.PINYIN_S_SH:
+    case OptionType.PINYIN_Z_ZH:
       return false;
-    }
-    const engineId = getFirstPartyInputMethodEngineId(id);
+    default:
+      return true;
+  }
+}
 
-    return !!inputMethodSettings[engineId];
+/**
+ * @param {!OptionType} option The option type.
+ * @return {string} The name of the i18n string for the label of |option|.
+ */
+export function getOptionLabelName(option) {
+  switch (option) {
+    case OptionType.ENABLE_DOUBLE_SPACE_PERIOD:
+      return 'inputMethodOptionsEnableDoubleSpacePeriod';
+    case OptionType.ENABLE_GESTURE_TYPING:
+      return 'inputMethodOptionsEnableGestureTyping';
+    case OptionType.ENABLE_PREDICTION:
+      return 'inputMethodOptionsEnablePrediction';
+    case OptionType.ENABLE_SOUND_ON_KEYPRESS:
+      return 'inputMethodOptionsEnableSoundOnKeypress';
+    case OptionType.PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION:
+    case OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION:
+      return 'inputMethodOptionsEnableCapitalization';
+    case OptionType.PINYIN_CHINESE_PUNCTUATION:
+      return 'inputMethodOptionsPinyinChinesePunctuation';
+    case OptionType.PINYIN_DEFAULT_CHINESE:
+      return 'inputMethodOptionsPinyinDefaultChinese';
+    case OptionType.PINYIN_ENABLE_FUZZY:
+      return 'inputMethodOptionsPinyinEnableFuzzy';
+    case OptionType.PINYIN_ENABLE_LOWER_PAGING:
+      return 'inputMethodOptionsPinyinEnableLowerPaging';
+    case OptionType.PINYIN_ENABLE_UPPER_PAGING:
+      return 'inputMethodOptionsPinyinEnableUpperPaging';
+    case OptionType.PINYIN_FULL_WIDTH_CHARACTER:
+      return 'inputMethodOptionsPinyinFullWidthCharacter';
+    case OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
+    case OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
+      return 'inputMethodOptionsAutoCorrection';
+    case OptionType.XKB_LAYOUT:
+      return 'inputMethodOptionsXkbLayout';
+    case OptionType.EDIT_USER_DICT:
+      return 'inputMethodOptionsEditUserDict';
+    case OptionType.ZHUYIN_KEYBOARD_LAYOUT:
+      return 'inputMethodOptionsZhuyinKeyboardLayout';
+    case OptionType.ZHUYIN_SELECT_KEYS:
+      return 'inputMethodOptionsZhuyinSelectKeys';
+    case OptionType.ZHUYIN_PAGE_SIZE:
+      return 'inputMethodOptionsZhuyinPageSize';
+    case OptionType.KOREAN_KEYBOARD_LAYOUT:
+      return 'inputMethodOptionsKoreanLayout';
+    case OptionType.KOREAN_ENABLE_SYLLABLE_INPUT:
+      return 'inputMethodOptionsKoreanSyllableInput';
+    default:
+      assertNotReached();
   }
+}
+export function getUntranslatedOptionLabelName(option) {
+  switch (option) {
+    case OptionType.PINYIN_AN_ANG:
+      return 'an_ang';
+    case OptionType.PINYIN_EN_ENG:
+      return 'en_eng';
+    case OptionType.PINYIN_IAN_IANG:
+      return 'ian_iang';
+    case OptionType.PINYIN_K_G:
+      return 'k_g';
+    case OptionType.PINYIN_R_L:
+      return 'r_l';
+    case OptionType.PINYIN_UAN_UANG:
+      return 'uan_uang';
+    case OptionType.PINYIN_C_CH:
+      return 'c_ch';
+    case OptionType.PINYIN_F_H:
+      return 'f_h';
+    case OptionType.PINYIN_IN_ING:
+      return 'in_ing';
+    case OptionType.PINYIN_L_N:
+      return 'l_n';
+    case OptionType.PINYIN_S_SH:
+      return 's_sh';
+    case OptionType.PINYIN_Z_ZH:
+      return 'z_zh';
+    default:
+      assertNotReached();
+  }
+}
 
-  /**
-   * Generates options to be displayed in the options page, grouped by sections.
-   * @param {string} engineId Input method engine ID.
-   * @return {!Array<!{title: string, optionNames:
-   *     !Array<settings.input_method_util.OptionType>}>} the options to be
-   *     displayed.
-   */
-  /* #export */ function generateOptions(engineId) {
-    const options =
-        {basic: [], advanced: [], physicalKeyboard: [], virtualKeyboard: []};
-      const engineSettings = inputMethodSettings[engineId];
-      if (engineSettings) {
-        engineSettings.forEach((settingType) => {
-          const settings = Settings[settingType];
-          options.basic.push(...settings.basic);
-          options.advanced.push(...settings.advanced);
-          options.physicalKeyboard.push(...settings.physicalKeyboard);
-          options.virtualKeyboard.push(...settings.virtualKeyboard);
-        });
-    }
+/**
+ * @param {!OptionType} option The option type.
+ * @return {!Array<!{value: *, name: string}>} The list of items to be
+ *     displayed in the dropdown for |option|.
+ */
+export function getOptionMenuItems(option) {
+  switch (option) {
+    case OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
+    case OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
+      return [
+        {value: 0, name: 'inputMethodOptionsAutoCorrectionOff'},
+        {value: 1, name: 'inputMethodOptionsAutoCorrectionModest'},
+        {value: 2, name: 'inputMethodOptionsAutoCorrectionAggressive'}
+      ];
+    case OptionType.XKB_LAYOUT:
+      return [
+        {value: 'US', name: 'inputMethodOptionsUsKeyboard'},
+        {value: 'Dvorak', name: 'inputMethodOptionsDvorakKeyboard'},
+        {value: 'Colemak', name: 'inputMethodOptionsColemakKeyboard'}
+      ];
+    case OptionType.ZHUYIN_KEYBOARD_LAYOUT:
+      return [
+        {value: 'Default', name: 'inputMethodOptionsZhuyinLayoutDefault'},
+        {value: 'IBM', name: 'inputMethodOptionsZhuyinLayoutIBM'},
+        {value: 'Eten', name: 'inputMethodOptionsZhuyinLayoutEten'},
+      ];
+    case OptionType.ZHUYIN_SELECT_KEYS:
+      // Zhuyin select keys correspond to physical keys so are not
+      // translated.
+      return [
+        {value: '1234567890'},
+        {value: 'asdfghjkl;'},
+        {value: 'asdfzxcv89'},
+        {value: 'asdfjkl789'},
+        {value: '1234qweras'},
+      ];
+    case OptionType.ZHUYIN_PAGE_SIZE:
+      // Zhuyin page size is just a number, so is not translated.
+      return [
+        {value: '10'},
+        {value: '9'},
+        {value: '8'},
+      ];
+    case OptionType.KOREAN_KEYBOARD_LAYOUT:
+      // Korean layout strings are already Korean / English, so not
+      // translated. The literal values of these strings are critical.
+      return [
+        {value: '2 Set / 두벌식'},
+        {value: '3 Set (390) / 세벌식 (390)'},
+        {value: '3 Set (Final) / 세벌식 (최종)'},
+        {value: '3 Set (No Shift) / 세벌식 (순아래)'},
+        {value: '2 Set (Old Hangul) / 두벌식 (옛글)'},
+        {value: '3 Set (Old Hangul) / 세벌식 (옛글)'},
+      ];
+    default:
+      return [];
+  }
+}
 
-    return [
-      {
-        title: 'basic',
-        optionNames: options.basic,
-      },
-      {
-        title: 'advanced',
-        optionNames: options.advanced,
-      },
-      {
-        title: 'physicalKeyboard',
-        optionNames: options.physicalKeyboard,
-      },
-      {
-        title: 'virtualKeyboard',
-        optionNames: options.virtualKeyboard,
-      },
-    ];
-  }
+/**
+ * @param {!OptionType} option The option type.
+ * @return {boolean} true if the value for |option| is a number.
+ */
+export function isNumberValue(option) {
+  return option === OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL ||
+      option === OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL;
+}
 
-  /**
-   * @param {!settings.input_method_util.OptionType} option The option type.
-   * @return {settings.input_method_util.UiType} The UI type of |option|.
-   */
-  /* #export */ function getOptionUiType(option) {
-    switch (option) {
-      // TODO(b/191608723): Clean up switch statements.
-      case OptionType.ENABLE_COMPLETION:
-      case OptionType.ENABLE_DOUBLE_SPACE_PERIOD:
-      case OptionType.ENABLE_GESTURE_TYPING:
-      case OptionType.ENABLE_PREDICTION:
-      case OptionType.ENABLE_SOUND_ON_KEYPRESS:
-      case OptionType.PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION:
-      case OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION:
-      case OptionType.KOREAN_ENABLE_SYLLABLE_INPUT:
-      case OptionType.PINYIN_CHINESE_PUNCTUATION:
-      case OptionType.PINYIN_DEFAULT_CHINESE:
-      case OptionType.PINYIN_ENABLE_FUZZY:
-      case OptionType.PINYIN_ENABLE_LOWER_PAGING:
-      case OptionType.PINYIN_ENABLE_UPPER_PAGING:
-      case OptionType.PINYIN_FULL_WIDTH_CHARACTER:
-      case OptionType.PINYIN_AN_ANG:
-      case OptionType.PINYIN_EN_ENG:
-      case OptionType.PINYIN_IAN_IANG:
-      case OptionType.PINYIN_K_G:
-      case OptionType.PINYIN_R_L:
-      case OptionType.PINYIN_UAN_UANG:
-      case OptionType.PINYIN_C_CH:
-      case OptionType.PINYIN_F_H:
-      case OptionType.PINYIN_IN_ING:
-      case OptionType.PINYIN_L_N:
-      case OptionType.PINYIN_S_SH:
-      case OptionType.PINYIN_Z_ZH:
-        return UiType.TOGGLE_BUTTON;
-      case OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-      case OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-      case OptionType.XKB_LAYOUT:
-      case OptionType.KOREAN_KEYBOARD_LAYOUT:
-      case OptionType.ZHUYIN_KEYBOARD_LAYOUT:
-      case OptionType.ZHUYIN_SELECT_KEYS:
-      case OptionType.ZHUYIN_PAGE_SIZE:
-        return UiType.DROPDOWN;
-      case OptionType.EDIT_USER_DICT:
-        return UiType.LINK;
-      default:
-        assertNotReached();
-    }
+/**
+ * @param {!OptionType} option The option type.
+ * @return {Route|undefined} The url to open for |option|, returns
+ *     undefined if |option| does not have a url.
+ */
+export function getOptionUrl(option) {
+  if (option === OptionType.EDIT_USER_DICT) {
+    return routes.OS_LANGUAGES_EDIT_DICTIONARY;
   }
-  /* #export */ function isOptionLabelTranslated(option) {
-    switch (option) {
-      // TODO(b/191608723): Clean up switch statements.
-      case OptionType.PINYIN_AN_ANG:
-      case OptionType.PINYIN_EN_ENG:
-      case OptionType.PINYIN_IAN_IANG:
-      case OptionType.PINYIN_K_G:
-      case OptionType.PINYIN_R_L:
-      case OptionType.PINYIN_UAN_UANG:
-      case OptionType.PINYIN_C_CH:
-      case OptionType.PINYIN_F_H:
-      case OptionType.PINYIN_IN_ING:
-      case OptionType.PINYIN_L_N:
-      case OptionType.PINYIN_S_SH:
-      case OptionType.PINYIN_Z_ZH:
-        return false;
-      default:
-        return true;
-    }
-  }
-
-  /**
-   * @param {!settings.input_method_util.OptionType} option The option type.
-   * @return {string} The name of the i18n string for the label of |option|.
-   */
-  /* #export */ function getOptionLabelName(option) {
-    switch (option) {
-      case OptionType.ENABLE_DOUBLE_SPACE_PERIOD:
-        return 'inputMethodOptionsEnableDoubleSpacePeriod';
-      case OptionType.ENABLE_GESTURE_TYPING:
-        return 'inputMethodOptionsEnableGestureTyping';
-      case OptionType.ENABLE_PREDICTION:
-        return 'inputMethodOptionsEnablePrediction';
-      case OptionType.ENABLE_SOUND_ON_KEYPRESS:
-        return 'inputMethodOptionsEnableSoundOnKeypress';
-      case OptionType.PHYSICAL_KEYBOARD_ENABLE_CAPITALIZATION:
-      case OptionType.VIRTUAL_KEYBOARD_ENABLE_CAPITALIZATION:
-        return 'inputMethodOptionsEnableCapitalization';
-      case OptionType.PINYIN_CHINESE_PUNCTUATION:
-        return 'inputMethodOptionsPinyinChinesePunctuation';
-      case OptionType.PINYIN_DEFAULT_CHINESE:
-        return 'inputMethodOptionsPinyinDefaultChinese';
-      case OptionType.PINYIN_ENABLE_FUZZY:
-        return 'inputMethodOptionsPinyinEnableFuzzy';
-      case OptionType.PINYIN_ENABLE_LOWER_PAGING:
-        return 'inputMethodOptionsPinyinEnableLowerPaging';
-      case OptionType.PINYIN_ENABLE_UPPER_PAGING:
-        return 'inputMethodOptionsPinyinEnableUpperPaging';
-      case OptionType.PINYIN_FULL_WIDTH_CHARACTER:
-        return 'inputMethodOptionsPinyinFullWidthCharacter';
-      case OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-      case OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-        return 'inputMethodOptionsAutoCorrection';
-      case OptionType.XKB_LAYOUT:
-        return 'inputMethodOptionsXkbLayout';
-      case OptionType.EDIT_USER_DICT:
-        return 'inputMethodOptionsEditUserDict';
-      case OptionType.ZHUYIN_KEYBOARD_LAYOUT:
-        return 'inputMethodOptionsZhuyinKeyboardLayout';
-      case OptionType.ZHUYIN_SELECT_KEYS:
-        return 'inputMethodOptionsZhuyinSelectKeys';
-      case OptionType.ZHUYIN_PAGE_SIZE:
-        return 'inputMethodOptionsZhuyinPageSize';
-      case OptionType.KOREAN_KEYBOARD_LAYOUT:
-        return 'inputMethodOptionsKoreanLayout';
-      case OptionType.KOREAN_ENABLE_SYLLABLE_INPUT:
-        return 'inputMethodOptionsKoreanSyllableInput';
-      default:
-        assertNotReached();
-    }
-  }
-  /* #export */ function getUntranslatedOptionLabelName(option) {
-    switch (option) {
-      case OptionType.PINYIN_AN_ANG:
-        return 'an_ang';
-      case OptionType.PINYIN_EN_ENG:
-        return 'en_eng';
-      case OptionType.PINYIN_IAN_IANG:
-        return 'ian_iang';
-      case OptionType.PINYIN_K_G:
-        return 'k_g';
-      case OptionType.PINYIN_R_L:
-        return 'r_l';
-      case OptionType.PINYIN_UAN_UANG:
-        return 'uan_uang';
-      case OptionType.PINYIN_C_CH:
-        return 'c_ch';
-      case OptionType.PINYIN_F_H:
-        return 'f_h';
-      case OptionType.PINYIN_IN_ING:
-        return 'in_ing';
-      case OptionType.PINYIN_L_N:
-        return 'l_n';
-      case OptionType.PINYIN_S_SH:
-        return 's_sh';
-      case OptionType.PINYIN_Z_ZH:
-        return 'z_zh';
-      default:
-        assertNotReached();
-    }
-  }
-
-  /**
-   * @param {!settings.input_method_util.OptionType} option The option type.
-   * @return {!Array<!{value: *, name: string}>} The list of items to be
-   *     displayed in the dropdown for |option|.
-   */
-  /* #export */ function getOptionMenuItems(option) {
-    switch (option) {
-      case OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-      case OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL:
-        return [
-          {value: 0, name: 'inputMethodOptionsAutoCorrectionOff'},
-          {value: 1, name: 'inputMethodOptionsAutoCorrectionModest'},
-          {value: 2, name: 'inputMethodOptionsAutoCorrectionAggressive'}
-        ];
-      case OptionType.XKB_LAYOUT:
-        return [
-          {value: 'US', name: 'inputMethodOptionsUsKeyboard'},
-          {value: 'Dvorak', name: 'inputMethodOptionsDvorakKeyboard'},
-          {value: 'Colemak', name: 'inputMethodOptionsColemakKeyboard'}
-        ];
-      case OptionType.ZHUYIN_KEYBOARD_LAYOUT:
-        return [
-          {value: 'Default', name: 'inputMethodOptionsZhuyinLayoutDefault'},
-          {value: 'IBM', name: 'inputMethodOptionsZhuyinLayoutIBM'},
-          {value: 'Eten', name: 'inputMethodOptionsZhuyinLayoutEten'},
-        ];
-      case OptionType.ZHUYIN_SELECT_KEYS:
-        // Zhuyin select keys correspond to physical keys so are not
-        // translated.
-        return [
-          {value: '1234567890'},
-          {value: 'asdfghjkl;'},
-          {value: 'asdfzxcv89'},
-          {value: 'asdfjkl789'},
-          {value: '1234qweras'},
-        ];
-      case OptionType.ZHUYIN_PAGE_SIZE:
-        // Zhuyin page size is just a number, so is not translated.
-        return [
-          {value: '10'},
-          {value: '9'},
-          {value: '8'},
-        ];
-      case OptionType.KOREAN_KEYBOARD_LAYOUT:
-        // Korean layout strings are already Korean / English, so not
-        // translated. The literal values of these strings are critical.
-        return [
-          {value: '2 Set / 두벌식'},
-          {value: '3 Set (390) / 세벌식 (390)'},
-          {value: '3 Set (Final) / 세벌식 (최종)'},
-          {value: '3 Set (No Shift) / 세벌식 (순아래)'},
-          {value: '2 Set (Old Hangul) / 두벌식 (옛글)'},
-          {value: '3 Set (Old Hangul) / 세벌식 (옛글)'},
-        ];
-      default:
-        return [];
-    }
-  }
-
-  /**
-   * @param {!settings.input_method_util.OptionType} option The option type.
-   * @return {boolean} true if the value for |option| is a number.
-   */
-  /* #export */ function isNumberValue(option) {
-    return option === OptionType.PHYSICAL_KEYBOARD_AUTO_CORRECTION_LEVEL ||
-        option === OptionType.VIRTUAL_KEYBOARD_AUTO_CORRECTION_LEVEL;
-  }
-
-  /**
-   * @param {!settings.input_method_util.OptionType} option The option type.
-   * @return {settings.Route|undefined} The url to open for |option|, returns
-   *     undefined if |option| does not have a url.
-   */
-  /* #export */ function getOptionUrl(option) {
-    if (option === OptionType.EDIT_USER_DICT) {
-      return settings.routes.OS_LANGUAGES_EDIT_DICTIONARY;
-    }
-    return undefined;
-  }
+  return undefined;
+}
 
   /**
    * @param {string} id Input method ID.
@@ -543,21 +543,3 @@
   function isFirstPartyInputMethodId_(id) {
     return id.startsWith(FIRST_PARTY_INPUT_METHOD_ID_PREFIX);
   }
-
-  // #cr_define_end
-  return {
-    OptionType,
-    OPTION_DEFAULT,
-    UiType,
-    getFirstPartyInputMethodEngineId,
-    hasOptionsPageInSettings,
-    generateOptions,
-    getOptionUiType,
-    getOptionLabelName,
-    getOptionMenuItems,
-    getOptionUrl,
-    isNumberValue,
-    isOptionLabelTranslated,
-    getUntranslatedOptionLabelName,
-  };
-});
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.html b/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.html
index ebc3f1b..e5e8f192 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.html
@@ -1,406 +1,373 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared iron-flex">
+  h2 {
+    padding-inline-start: var(--cr-section-padding);
+  }
 
-<link rel="import" href="chrome://resources/cr_components/chromeos/localized_link/localized_link.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
-<link rel="import" href="add_input_methods_dialog.html">
-<link rel="import" href="add_spellcheck_languages_dialog.html">
-<link rel="import" href="input_method_util.html">
-<link rel="import" href="languages_metrics_proxy.html">
-<link rel="import" href="os_edit_dictionary_page.html">
-<link rel="import" href="../deep_linking_behavior.html">
-<link rel="import" href="../metrics_recorder.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="../keyboard_shortcut_banner/keyboard_shortcut_banner.html">
-<link rel="import" href="../../controls/settings_toggle_button.html">
-<link rel="import" href="../prefs_behavior.html">
-<link rel="import" href="../../i18n_setup.html">
-<link rel="import" href="../../router.html">
-<link rel="import" href="../route_observer_behavior.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="../../settings_page/settings_animated_pages.html">
-<link rel="import" href="languages_types.html">
+  cr-policy-pref-indicator {
+    margin-inline-end: var(--settings-controlled-by-spacing);
+  }
 
-<dom-module id="os-settings-input-page">
-  <template>
-    <style include="settings-shared iron-flex">
-      h2 {
-        padding-inline-start: var(--cr-section-padding);
-      }
+  cr-policy-pref-indicator + cr-icon-button {
+    margin-inline-start: 0;
+  }
 
-      cr-policy-pref-indicator {
-        margin-inline-end: var(--settings-controlled-by-spacing);
-      }
+  .bottom-margin {
+    margin-bottom: var(--cr-section-vertical-margin);
+  }
 
-      cr-policy-pref-indicator + cr-icon-button {
-        margin-inline-start: 0;
-      }
+  .explain-selected {
+    color: var(--cros-text-color-positive);
+    font-weight: initial;
+    margin-top: 4px;
+  }
 
-      .bottom-margin {
-        margin-bottom: var(--cr-section-vertical-margin);
-      }
+  .icon-external {
+    margin-inline-end: 0;
+  }
 
-      .explain-selected {
-        color: var(--cros-text-color-positive);
-        font-weight: initial;
-        margin-top: 4px;
-      }
+  .name-with-error[disabled] {
+    pointer-events: none;
+  }
 
-      .icon-external {
-        margin-inline-end: 0;
-      }
+  /* Paddings when showing download error */
+  .name-with-error {
+    padding: 14px 0;
+  }
 
-      .name-with-error[disabled] {
-        pointer-events: none;
-      }
+  .name-with-error div {
+    color: var(--cros-text-color-alert);
+    margin-top: 8px;
+  }
 
-      /* Paddings when showing download error */
-      .name-with-error {
-        padding: 14px 0;
-      }
+  iron-icon[icon='cr:error'] {
+    --iron-icon-fill-color: var(--cros-icon-color-alert);
+    height: var(--cr-icon-size);
+    margin-inline-end: 4px;
+    width: var(--cr-icon-size);
+  }
 
-      .name-with-error div {
-        color: var(--cros-text-color-alert);
-        margin-top: 8px;
-      }
+  iron-icon[icon='cr20:domain'] {
+    margin-inline-end: 10px;
+  }
 
-      iron-icon[icon='cr:error'] {
-        --iron-icon-fill-color: var(--cros-icon-color-alert);
-        height: var(--cr-icon-size);
-        margin-inline-end: 4px;
-        width: var(--cr-icon-size);
-      }
+  iron-icon[icon='cr:add'] {
+    margin-inline-end: 8px;
+  }
 
-      iron-icon[icon='cr20:domain'] {
-        margin-inline-end: 10px;
-      }
+  /* Used to maintain vertical alignment for the error icon. */
+  iron-icon + span {
+    vertical-align: middle;
+  }
 
-      iron-icon[icon='cr:add'] {
-        margin-inline-end: 8px;
-      }
+  /* The default implementation of the actionable list item makes the
+    * entire list item row a button such that clicking anywhere will
+    * activate the action of the list item. The input method list behaves
+    * differently in that clicking the list item sets that item as the input
+    * method, and the selected list item should not react to selection after
+    * being selected. Sets the cursor to auto to override the default
+    * implementation which would otherwise make the entire row appear
+    * clickable when it is not.
+    */
+  .selected[actionable] {
+    cursor: auto;
+  }
 
-      /* Used to maintain vertical alignment for the error icon. */
-      iron-icon + span {
-        vertical-align: middle;
-      }
+  .subsection {
+    padding-inline-end: var(--cr-section-padding);
+    padding-inline-start: var(--cr-section-indent-padding);
+  }
 
-      /* The default implementation of the actionable list item makes the
-       * entire list item row a button such that clicking anywhere will
-       * activate the action of the list item. The input method list behaves
-       * differently in that clicking the list item sets that item as the input
-       * method, and the selected list item should not react to selection after
-       * being selected. Sets the cursor to auto to override the default
-       * implementation which would otherwise make the entire row appear
-       * clickable when it is not.
-       */
-      .selected[actionable] {
-        cursor: auto;
-      }
+  .subsection .list-frame {
+    padding-inline-end: 0;
+    padding-inline-start: 40px;
+  }
 
-      .subsection {
-        padding-inline-end: var(--cr-section-padding);
-        padding-inline-start: var(--cr-section-indent-padding);
-      }
+  .subsection > settings-toggle-button,
+  .subsection > cr-link-row,
+  #spellCheckLanguagesListV2 > .cr-row {
+    padding-inline-end: 0;
+    padding-inline-start: 0;
+  }
 
-      .subsection .list-frame {
-        padding-inline-end: 0;
-        padding-inline-start: 40px;
-      }
+  .internal-wrapper,
+  .external-wrapper {
+    display: flex;
+  }
 
-      .subsection > settings-toggle-button,
-      .subsection > cr-link-row,
-      #spellCheckLanguagesListV2 > .cr-row {
-        padding-inline-end: 0;
-        padding-inline-start: 0;
-      }
+  #addInputMethod,
+  #addSpellcheckLanguages {
+    --iron-icon-fill-color: var(--cr-link-color);
+    margin-top: 16px;
+  }
 
-      .internal-wrapper,
-      .external-wrapper {
-        display: flex;
-      }
+  cr-button[disabled] iron-icon {
+    --iron-icon-fill-color: var(--cros-button-icon-color-primary-disabled);
+  }
+</style>
 
-      #addInputMethod,
-      #addSpellcheckLanguages {
-        --iron-icon-fill-color: var(--cr-link-color);
-        margin-top: 16px;
-      }
+<div route-path="default">
+  <template is="dom-if" if="[[shouldShowLanguagePacksNotice_]]">
+    <localized-link id="languagePacksNotice"
+        class="cr-row first bottom-margin cr-secondary-text"
+        localized-string="$i18n{languagePacksNotice}"
+        on-link-clicked="onLanguagePackNoticeLinkClick_">
+    </localized-link>
+  </template>
+  <settings-toggle-button
+      class="first" id="showImeMenu"
+      pref="{{prefs.settings.language.ime_menu_activated}}"
+      label="$i18n{showImeMenu}"
+      on-settings-boolean-control-change="onShowImeMenuChange_"
+      deep-link-focus-id$="[[Setting.kShowInputOptionsInShelf]]">
+  </settings-toggle-button>
 
-      cr-button[disabled] iron-icon {
-        --iron-icon-fill-color: var(--cros-button-icon-color-primary-disabled);
-      }
-    </style>
-
-    <div route-path="default">
-      <template is="dom-if" if="[[shouldShowLanguagePacksNotice_]]">
-        <localized-link id="languagePacksNotice"
-            class="cr-row first bottom-margin cr-secondary-text"
-            localized-string="$i18n{languagePacksNotice}"
-            on-link-clicked="onLanguagePackNoticeLinkClick_">
-        </localized-link>
-      </template>
-      <settings-toggle-button
-          class="first" id="showImeMenu"
-          pref="{{prefs.settings.language.ime_menu_activated}}"
-          label="$i18n{showImeMenu}"
-          on-settings-boolean-control-change="onShowImeMenuChange_"
-          deep-link-focus-id$="[[Setting.kShowInputOptionsInShelf]]">
-      </settings-toggle-button>
-
-      <div class="hr bottom-margin">
-        <template is="dom-if" if="[[shouldShowShortcutReminder_(
-            languageSettingsV2Update2Enabled_, shortcutReminderBody_.length)]]">
-          <keyboard-shortcut-banner header="$i18n{imeShortcutReminderTitle}"
-              body="[[shortcutReminderBody_]]"
-              on-dismiss="onShortcutReminderDismiss_">
-          </keyboard-shortcut-banner>
-        </template>
-        <h2>$i18n{inputMethodListTitle}</h2>
-        <template is="dom-if" if="[[inputMethodsLimitedByPolicy_(
-            prefs.settings.language.allowed_input_methods.*)]]">
-          <div class="cr-row continuation" id="inputMethodsManagedbyPolicy">
-            <iron-icon icon="cr20:domain"></iron-icon>
-            <div class="secondary">$i18n{inputMethodsManagedbyPolicy}</div>
-          </div>
-        </template>
-        <div class="list-frame vertical-list" id="inputMethodsList">
-          <template is="dom-repeat"
-              items="[[languages.inputMethods.enabled]]">
-            <div class$="list-item [[getInputMethodItemClass_(
+  <div class="hr bottom-margin">
+    <template is="dom-if" if="[[shouldShowShortcutReminder_(
+        languageSettingsV2Update2Enabled_, shortcutReminderBody_.length)]]">
+      <keyboard-shortcut-banner header="$i18n{imeShortcutReminderTitle}"
+          body="[[shortcutReminderBody_]]"
+          on-dismiss="onShortcutReminderDismiss_">
+      </keyboard-shortcut-banner>
+    </template>
+    <h2>$i18n{inputMethodListTitle}</h2>
+    <template is="dom-if" if="[[inputMethodsLimitedByPolicy_(
+        prefs.settings.language.allowed_input_methods.*)]]">
+      <div class="cr-row continuation" id="inputMethodsManagedbyPolicy">
+        <iron-icon icon="cr20:domain"></iron-icon>
+        <div class="secondary">$i18n{inputMethodsManagedbyPolicy}</div>
+      </div>
+    </template>
+    <div class="list-frame vertical-list" id="inputMethodsList">
+      <template is="dom-repeat"
+          items="[[languages.inputMethods.enabled]]">
+        <div class$="list-item [[getInputMethodItemClass_(
+            item.id, languages.inputMethods.currentId)]]"
+            actionable on-click="onInputMethodClick_"
+            on-keypress="onInputMethodKeyPress_"
+            tabindex$="[[getInputMethodTabIndex_(
                 item.id, languages.inputMethods.currentId)]]"
-                actionable on-click="onInputMethodClick_"
-                on-keypress="onInputMethodKeyPress_"
-                tabindex$="[[getInputMethodTabIndex_(
-                    item.id, languages.inputMethods.currentId)]]"
-                aria-labelledby$="language-[[index]]" role="button">
-              <div class="start" id="language-[[index]]" aria-hidden="true">
-                <div class="display-name">[[item.displayName]]</div>
-                <div class="explain-selected"
-                    hidden="[[!isCurrentInputMethod_(
-                        item.id, languages.inputMethods.currentId)]]">
-                  $i18n{inputMethodEnabled}
-                </div>
-              </div>
-              <template is="dom-if"
-                  if="[[hasOptionsPageInSettings_(item.id)]]">
-                <div class="internal-wrapper"
-                    hidden="[[!item.hasOptionsPage]]">
-                  <cr-icon-button class="subpage-arrow"
-                      aria-label$="[[getOpenOptionsPageLabel_(
-                      item.displayName)]]"
-                      on-click="navigateToOptionsPageInSettings_">
-                  </cr-icon-button>
-                </div>
-              </template>
-              <template is="dom-if"
-                  if="[[!hasOptionsPageInSettings_(item.id)]]">
-                <div class="external-wrapper"
-                    hidden="[[!item.hasOptionsPage]]">
-                  <cr-icon-button class="icon-external"
-                      aria-label$="[[getOpenOptionsPageLabel_(
-                      item.displayName)]]"
-                      on-click="openExtensionOptionsPage_">
-                  </cr-icon-button>
-                </div>
-              </template>
-              <div class="separator"></div>
-              <cr-icon-button class="icon-clear"
-                  disabled$="[[disableRemoveInputMethod_(item,
-                      languages.inputMethods.enabled.*)]]"
-                  on-click="onRemoveInputMethodClick_"
-                  title="[[getRemoveInputMethodTooltip_(item)]]">
+            aria-labelledby$="language-[[index]]" role="button">
+          <div class="start" id="language-[[index]]" aria-hidden="true">
+            <div class="display-name">[[item.displayName]]</div>
+            <div class="explain-selected"
+                hidden="[[!isCurrentInputMethod_(
+                    item.id, languages.inputMethods.currentId)]]">
+              $i18n{inputMethodEnabled}
+            </div>
+          </div>
+          <template is="dom-if"
+              if="[[hasOptionsPageInSettings_(item.id)]]">
+            <div class="internal-wrapper"
+                hidden="[[!item.hasOptionsPage]]">
+              <cr-icon-button class="subpage-arrow"
+                  aria-label$="[[getOpenOptionsPageLabel_(
+                  item.displayName)]]"
+                  on-click="navigateToOptionsPageInSettings_">
               </cr-icon-button>
             </div>
           </template>
+          <template is="dom-if"
+              if="[[!hasOptionsPageInSettings_(item.id)]]">
+            <div class="external-wrapper"
+                hidden="[[!item.hasOptionsPage]]">
+              <cr-icon-button class="icon-external"
+                  aria-label$="[[getOpenOptionsPageLabel_(
+                  item.displayName)]]"
+                  on-click="openExtensionOptionsPage_">
+              </cr-icon-button>
+            </div>
+          </template>
+          <div class="separator"></div>
+          <cr-icon-button class="icon-clear"
+              disabled$="[[disableRemoveInputMethod_(item,
+                  languages.inputMethods.enabled.*)]]"
+              on-click="onRemoveInputMethodClick_"
+              title="[[getRemoveInputMethodTooltip_(item)]]">
+          </cr-icon-button>
+        </div>
+      </template>
+      <div class="list-item">
+        <cr-button id="addInputMethod" on-click="onAddInputMethodClick_"
+            deep-link-focus-id$="[[Setting.kAddInputMethod]]">
+          <iron-icon icon="cr:add"></iron-icon>
+          $i18n{addInputMethodLabel}
+        </cr-button>
+      </div>
+    </div>
+  </div>
+  <template is="dom-if" if="[[onDeviceGrammarCheckEnabled_]]">
+    <settings-toggle-button id="enableSpellcheckingToggle" class="hr"
+        label="$i18n{spellAndGrammarCheckTitle}"
+        sub-label="$i18n{spellAndGrammarCheckDescription}"
+        pref="{{prefs.browser.enable_spellchecking}}" no-set-pref
+        disabled="[[isEnableSpellcheckingDisabled_(
+            languageSettingsV2Update2Enabled_,
+            spellCheckLanguages_.length)]]"
+        on-settings-boolean-control-change="onSpellcheckToggleChange_"
+        deep-link-focus-id$="[[Setting.kSpellCheck]]"
+        aria-describedby="spellAndGrammarCheckDescription">
+    </settings-toggle-button>
+  </template>
+  <template is="dom-if" if="[[!onDeviceGrammarCheckEnabled_]]">
+    <settings-toggle-button id="enableSpellcheckingToggle" class="hr"
+        label="$i18n{spellCheckTitle}"
+        pref="{{prefs.browser.enable_spellchecking}}" no-set-pref
+        disabled="[[isEnableSpellcheckingDisabled_(
+            languageSettingsV2Update2Enabled_,
+            spellCheckLanguages_.length)]]"
+        on-settings-boolean-control-change="onSpellcheckToggleChange_"
+        deep-link-focus-id$="[[Setting.kSpellCheck]]">
+    </settings-toggle-button>
+  </template>
+  <iron-collapse class="subsection" opened="[[isCollapseOpened_(
+      languageSettingsV2Update2Enabled_,
+      prefs.browser.enable_spellchecking.value)]]">
+    <template is="dom-if" if="[[!languageSettingsV2Update2Enabled_]]">
+      <div id="spellCheckLanguagesList">
+        <div class="single-column">
+          <div aria-describedby="spellChecklanguagesListDescription">
+            $i18n{spellCheckLanguagesListTitle}
+          </div>
+          <div class="secondary" id="spellChecklanguagesListDescription"
+              aria-hidden="true">
+            $i18n{spellCheckLanguagesListDescription}
+          </div>
+        </div>
+        <div class="list-frame vertical-list" role="list">
+          <template is="dom-repeat" items="[[spellCheckLanguages_]]"
+              mutable-data>
+            <div class="list-item">
+              <div class="flex name-with-error" aria-hidden="true"
+                  on-click="onSpellCheckNameClick_" actionable
+                  disabled$="[[isSpellCheckNameClickDisabled_(item, item.*,
+                      prefs.browser.enable_spellchecking.*)]]">
+                [[item.language.displayName]]
+                <div hidden="[[!item.downloadDictionaryFailureCount]]"
+                    aria-hidden="true">
+                  <iron-icon icon="cr:error"></iron-icon>
+                  <span>$i18n{languagesDictionaryDownloadError}</span>
+                </div>
+              </div>
+              <cr-button on-click="onRetryDictionaryDownloadClick_"
+                  hidden="[[!item.downloadDictionaryFailureCount]]"
+                  disabled="[[!prefs.browser.enable_spellchecking.value]]"
+                  aria-label$="[[getDictionaryDownloadRetryAriaLabel_(
+                      item)]]">
+                $i18n{languagesDictionaryDownloadRetryLabel}
+              </cr-button>
+              <template is="dom-if" if="[[!
+                  item.downloadDictionaryFailureCount]]">
+                <template is="dom-if" if="[[!item.isManaged]]">
+                  <cr-toggle on-change="onSpellCheckLanguageChange_"
+                      disabled="[[
+                          !prefs.browser.enable_spellchecking.value]]"
+                      checked="[[item.spellCheckEnabled]]"
+                      aria-label="[[item.language.displayName]]">
+                  </cr-toggle>
+                </template>
+                <template is="dom-if" if="[[item.isManaged]]">
+                  <cr-policy-pref-indicator
+                      pref="[[getIndicatorPrefForManagedSpellcheckLanguage_(
+                          item.spellCheckEnabled)]]">
+                  </cr-policy-pref-indicator>
+                  <cr-toggle disabled="true" class="managed-toggle"
+                      checked="[[item.spellCheckEnabled]]"
+                      aria-label="[[item.language.displayName]]">
+                  </cr-toggle>
+                </template>
+              </template>
+            </div>
+          </template>
+        </div>
+      </div>
+    </template>
+    <template is="dom-if" if="[[!onDeviceGrammarCheckEnabled_]]">
+      <settings-toggle-button id="enhancedSpellCheckToggle"
+          class="[[getEnhancedSpellCheckClass_(
+              languageSettingsV2Update2Enabled_)]]"
+          label="$i18n{spellCheckEnhancedLabel}"
+          pref="{{prefs.spellcheck.use_spelling_service}}"
+          disabled="[[!prefs.browser.enable_spellchecking.value]]">
+      </settings-toggle-button>
+    </template>
+    <cr-link-row class="hr" label="$i18n{editDictionaryLabel}"
+        on-click="onEditDictionaryClick_"
+        id="editDictionarySubpageTrigger"
+        disabled="[[!prefs.browser.enable_spellchecking.value]]"
+        role-description="$i18n{subpageArrowRoleDescription}">
+    </cr-link-row>
+    <template is="dom-if" if="[[languageSettingsV2Update2Enabled_]]">
+      <div id="spellCheckLanguagesListV2">
+        <div class="cr-row hr">
+          <div>
+            $i18n{spellCheckLanguagesListTitle}
+          </div>
+        </div>
+        <div class="list-frame vertical-list" role="list">
+          <template is="dom-repeat"
+              items="[[spellCheckLanguages_]]"
+              mutable-data>
+            <div class="list-item">
+              <div class="flex name-with-error" aria-hidden="true"
+                  disabled$="[[isSpellCheckNameClickDisabled_(item, item.*,
+                      prefs.browser.enable_spellchecking.*)]]">
+                [[item.language.displayName]]
+                <div hidden="[[!item.downloadDictionaryFailureCount]]"
+                    aria-hidden="true">
+                  <iron-icon icon="cr:error"></iron-icon>
+                  <span>$i18n{languagesDictionaryDownloadError}</span>
+                </div>
+              </div>
+              <cr-button on-click="onRetryDictionaryDownloadClick_"
+                  hidden="[[!item.downloadDictionaryFailureCount]]"
+                  disabled="[[!prefs.browser.enable_spellchecking.value]]"
+                  aria-label$="[[getDictionaryDownloadRetryAriaLabel_(
+                      item)]]">
+                $i18n{languagesDictionaryDownloadRetryLabel}
+              </cr-button>
+              <template is="dom-if" if="[[!item.isManaged]]">
+                <cr-icon-button class="icon-clear"
+                    disabled="[[!prefs.browser.enable_spellchecking.value]]"
+                    on-click="onRemoveSpellcheckLanguageClick_"
+                    title="[[getRemoveSpellcheckLanguageTooltip_(item)]]">
+                </cr-icon-button>
+              </template>
+              <template is="dom-if" if="[[item.isManaged]]">
+                <cr-policy-pref-indicator
+                    pref="[[getIndicatorPrefForManagedSpellcheckLanguage_(
+                        item.spellCheckEnabled)]]">
+                </cr-policy-pref-indicator>
+                <cr-icon-button class="icon-clear managed-button"
+                    disabled="true"
+                    title="[[getRemoveSpellcheckLanguageTooltip_(item)]]">
+                </cr-icon-button>
+              </template>
+            </div>
+          </template>
           <div class="list-item">
-            <cr-button id="addInputMethod" on-click="onAddInputMethodClick_"
-                deep-link-focus-id$="[[Setting.kAddInputMethod]]">
+            <cr-button id="addSpellcheckLanguages"
+                on-click="onAddSpellcheckLanguagesClick_"
+                disabled="[[!prefs.browser.enable_spellchecking.value]]">
               <iron-icon icon="cr:add"></iron-icon>
-              $i18n{addInputMethodLabel}
+              $i18n{addLanguages}
             </cr-button>
           </div>
         </div>
       </div>
-      <template is="dom-if" if="[[onDeviceGrammarCheckEnabled_]]">
-        <settings-toggle-button id="enableSpellcheckingToggle" class="hr"
-            label="$i18n{spellAndGrammarCheckTitle}"
-            sub-label="$i18n{spellAndGrammarCheckDescription}"
-            pref="{{prefs.browser.enable_spellchecking}}" no-set-pref
-            disabled="[[isEnableSpellcheckingDisabled_(
-                languageSettingsV2Update2Enabled_,
-                spellCheckLanguages_.length)]]"
-            on-settings-boolean-control-change="onSpellcheckToggleChange_"
-            deep-link-focus-id$="[[Setting.kSpellCheck]]"
-            aria-describedby="spellAndGrammarCheckDescription">
-        </settings-toggle-button>
-      </template>
-      <template is="dom-if" if="[[!onDeviceGrammarCheckEnabled_]]">
-        <settings-toggle-button id="enableSpellcheckingToggle" class="hr"
-            label="$i18n{spellCheckTitle}"
-            pref="{{prefs.browser.enable_spellchecking}}" no-set-pref
-            disabled="[[isEnableSpellcheckingDisabled_(
-                languageSettingsV2Update2Enabled_,
-                spellCheckLanguages_.length)]]"
-            on-settings-boolean-control-change="onSpellcheckToggleChange_"
-            deep-link-focus-id$="[[Setting.kSpellCheck]]">
-        </settings-toggle-button>
-      </template>
-      <iron-collapse class="subsection" opened="[[isCollapseOpened_(
-          languageSettingsV2Update2Enabled_,
-          prefs.browser.enable_spellchecking.value)]]">
-        <template is="dom-if" if="[[!languageSettingsV2Update2Enabled_]]">
-          <div id="spellCheckLanguagesList">
-            <div class="single-column">
-              <div aria-describedby="spellChecklanguagesListDescription">
-                $i18n{spellCheckLanguagesListTitle}
-              </div>
-              <div class="secondary" id="spellChecklanguagesListDescription"
-                  aria-hidden="true">
-                $i18n{spellCheckLanguagesListDescription}
-              </div>
-            </div>
-            <div class="list-frame vertical-list" role="list">
-              <template is="dom-repeat" items="[[spellCheckLanguages_]]"
-                  mutable-data>
-                <div class="list-item">
-                  <div class="flex name-with-error" aria-hidden="true"
-                      on-click="onSpellCheckNameClick_" actionable
-                      disabled$="[[isSpellCheckNameClickDisabled_(item, item.*,
-                          prefs.browser.enable_spellchecking.*)]]">
-                    [[item.language.displayName]]
-                    <div hidden="[[!item.downloadDictionaryFailureCount]]"
-                        aria-hidden="true">
-                      <iron-icon icon="cr:error"></iron-icon>
-                      <span>$i18n{languagesDictionaryDownloadError}</span>
-                    </div>
-                  </div>
-                  <cr-button on-click="onRetryDictionaryDownloadClick_"
-                      hidden="[[!item.downloadDictionaryFailureCount]]"
-                      disabled="[[!prefs.browser.enable_spellchecking.value]]"
-                      aria-label$="[[getDictionaryDownloadRetryAriaLabel_(
-                          item)]]">
-                    $i18n{languagesDictionaryDownloadRetryLabel}
-                  </cr-button>
-                  <template is="dom-if" if="[[!
-                      item.downloadDictionaryFailureCount]]">
-                    <template is="dom-if" if="[[!item.isManaged]]">
-                      <cr-toggle on-change="onSpellCheckLanguageChange_"
-                          disabled="[[
-                              !prefs.browser.enable_spellchecking.value]]"
-                          checked="[[item.spellCheckEnabled]]"
-                          aria-label="[[item.language.displayName]]">
-                      </cr-toggle>
-                    </template>
-                    <template is="dom-if" if="[[item.isManaged]]">
-                      <cr-policy-pref-indicator
-                          pref="[[getIndicatorPrefForManagedSpellcheckLanguage_(
-                              item.spellCheckEnabled)]]">
-                      </cr-policy-pref-indicator>
-                      <cr-toggle disabled="true" class="managed-toggle"
-                          checked="[[item.spellCheckEnabled]]"
-                          aria-label="[[item.language.displayName]]">
-                      </cr-toggle>
-                    </template>
-                  </template>
-                </div>
-              </template>
-            </div>
-          </div>
-        </template>
-        <template is="dom-if" if="[[!onDeviceGrammarCheckEnabled_]]">
-          <settings-toggle-button id="enhancedSpellCheckToggle"
-              class="[[getEnhancedSpellCheckClass_(
-                  languageSettingsV2Update2Enabled_)]]"
-              label="$i18n{spellCheckEnhancedLabel}"
-              pref="{{prefs.spellcheck.use_spelling_service}}"
-              disabled="[[!prefs.browser.enable_spellchecking.value]]">
-          </settings-toggle-button>
-        </template>
-        <cr-link-row class="hr" label="$i18n{editDictionaryLabel}"
-            on-click="onEditDictionaryClick_"
-            id="editDictionarySubpageTrigger"
-            disabled="[[!prefs.browser.enable_spellchecking.value]]"
-            role-description="$i18n{subpageArrowRoleDescription}">
-        </cr-link-row>
-        <template is="dom-if" if="[[languageSettingsV2Update2Enabled_]]">
-          <div id="spellCheckLanguagesListV2">
-            <div class="cr-row hr">
-              <div>
-                $i18n{spellCheckLanguagesListTitle}
-              </div>
-            </div>
-            <div class="list-frame vertical-list" role="list">
-              <template is="dom-repeat"
-                  items="[[spellCheckLanguages_]]"
-                  mutable-data>
-                <div class="list-item">
-                  <div class="flex name-with-error" aria-hidden="true"
-                      disabled$="[[isSpellCheckNameClickDisabled_(item, item.*,
-                          prefs.browser.enable_spellchecking.*)]]">
-                    [[item.language.displayName]]
-                    <div hidden="[[!item.downloadDictionaryFailureCount]]"
-                        aria-hidden="true">
-                      <iron-icon icon="cr:error"></iron-icon>
-                      <span>$i18n{languagesDictionaryDownloadError}</span>
-                    </div>
-                  </div>
-                  <cr-button on-click="onRetryDictionaryDownloadClick_"
-                      hidden="[[!item.downloadDictionaryFailureCount]]"
-                      disabled="[[!prefs.browser.enable_spellchecking.value]]"
-                      aria-label$="[[getDictionaryDownloadRetryAriaLabel_(
-                          item)]]">
-                    $i18n{languagesDictionaryDownloadRetryLabel}
-                  </cr-button>
-                  <template is="dom-if" if="[[!item.isManaged]]">
-                    <cr-icon-button class="icon-clear"
-                        disabled="[[!prefs.browser.enable_spellchecking.value]]"
-                        on-click="onRemoveSpellcheckLanguageClick_"
-                        title="[[getRemoveSpellcheckLanguageTooltip_(item)]]">
-                    </cr-icon-button>
-                  </template>
-                  <template is="dom-if" if="[[item.isManaged]]">
-                    <cr-policy-pref-indicator
-                        pref="[[getIndicatorPrefForManagedSpellcheckLanguage_(
-                            item.spellCheckEnabled)]]">
-                    </cr-policy-pref-indicator>
-                    <cr-icon-button class="icon-clear managed-button"
-                        disabled="true"
-                        title="[[getRemoveSpellcheckLanguageTooltip_(item)]]">
-                    </cr-icon-button>
-                  </template>
-                </div>
-              </template>
-              <div class="list-item">
-                <cr-button id="addSpellcheckLanguages"
-                    on-click="onAddSpellcheckLanguagesClick_"
-                    disabled="[[!prefs.browser.enable_spellchecking.value]]">
-                  <iron-icon icon="cr:add"></iron-icon>
-                  $i18n{addLanguages}
-                </cr-button>
-              </div>
-            </div>
-          </div>
-        </template>
-      </iron-collapse>
-    </div>
-
-    <template is="dom-if" if="[[showAddInputMethodsDialog_]]" restamp>
-      <os-settings-add-input-methods-dialog languages="[[languages]]"
-          language-helper="[[languageHelper]]"
-          on-close="onAddInputMethodsDialogClose_">
-      </os-settings-add-input-methods-dialog>
     </template>
+  </iron-collapse>
+</div>
 
-    <template is="dom-if" if="[[showAddSpellcheckLanguagesDialog_]]" restamp>
-      <os-settings-add-spellcheck-languages-dialog languages="[[languages]]"
-          language-helper="[[languageHelper]]" prefs="{{prefs}}"
-          on-close="onAddSpellcheckLanguagesDialogClose_">
-      </os-settings-add-spellcheck-languages-dialog>
-    </template>
-  </template>
-  <script src="input_page.js"></script>
-</dom-module>
+<template is="dom-if" if="[[showAddInputMethodsDialog_]]" restamp>
+  <os-settings-add-input-methods-dialog languages="[[languages]]"
+      language-helper="[[languageHelper]]"
+      on-close="onAddInputMethodsDialogClose_">
+  </os-settings-add-input-methods-dialog>
+</template>
+
+<template is="dom-if" if="[[showAddSpellcheckLanguagesDialog_]]" restamp>
+  <os-settings-add-spellcheck-languages-dialog languages="[[languages]]"
+      language-helper="[[languageHelper]]" prefs="{{prefs}}"
+      on-close="onAddSpellcheckLanguagesDialogClose_">
+  </os-settings-add-spellcheck-languages-dialog>
+</template>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.js b/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.js
index 65eeb71..e3ec8ca 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/input_page.js
@@ -6,14 +6,45 @@
  * @fileoverview 'os-settings-input-page' is the input sub-page
  * for language and input method settings.
  */
+import '//resources/cr_components/chromeos/localized_link/localized_link.js';
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
+import '//resources/polymer/v3_0/iron-flex-layout/iron-flex-layout-classes.js';
+import '//resources/polymer/v3_0/iron-icon/iron-icon.js';
+import './add_input_methods_dialog.js';
+import './add_spellcheck_languages_dialog.js';
+import './os_edit_dictionary_page.js';
+import '../keyboard_shortcut_banner/keyboard_shortcut_banner.js';
+import '../../controls/settings_toggle_button.js';
+import '../../settings_shared_css.js';
+import '../../settings_page/settings_animated_pages.js';
+
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {focusWithoutInk} from '//resources/js/cr/ui/focus_without_ink.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {loadTimeData} from '../../i18n_setup.js';
+import {Route, Router} from '../../router.js';
+import {DeepLinkingBehavior} from '../deep_linking_behavior.m.js';
+import {recordClick, recordNavigation, recordPageBlur, recordPageFocus, recordSearch, recordSettingChange, setUserActionRecorderForTesting} from '../metrics_recorder.m.js';
+import {routes} from '../os_route.m.js';
+import {PrefsBehavior} from '../prefs_behavior.js';
+import {RouteObserverBehavior} from '../route_observer_behavior.js';
+
+import {generateOptions, getFirstPartyInputMethodEngineId, getOptionLabelName, getOptionMenuItems, getOptionUiType, getOptionUrl, getUntranslatedOptionLabelName, hasOptionsPageInSettings, isNumberValue, isOptionLabelTranslated, OPTION_DEFAULT, OptionType, UiType} from './input_method_util.js';
+import {InputsShortcutReminderState, LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './languages_metrics_proxy.js';
+import {LanguageHelper, LanguagesModel, LanguageState, SpellCheckLanguageState} from './languages_types.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-input-page',
 
   behaviors: [
     DeepLinkingBehavior,
     I18nBehavior,
     PrefsBehavior,
-    settings.RouteObserverBehavior,
+    RouteObserverBehavior,
   ],
 
   properties: {
@@ -130,22 +161,21 @@
     },
   },
 
-  /** @private {?settings.LanguagesMetricsProxy} */
+  /** @private {?LanguagesMetricsProxy} */
   languagesMetricsProxy_: null,
 
   /** @override */
   created() {
-    this.languagesMetricsProxy_ =
-        settings.LanguagesMetricsProxyImpl.getInstance();
+    this.languagesMetricsProxy_ = LanguagesMetricsProxyImpl.getInstance();
   },
 
   /**
-   * @param {!settings.Route} route
-   * @param {!settings.Route} oldRoute
+   * @param {!Route} route
+   * @param {!Route} oldRoute
    */
   currentRouteChanged(route, oldRoute) {
     // Does not apply to this page.
-    if (route !== settings.routes.OS_LANGUAGES_INPUT) {
+    if (route !== routes.OS_LANGUAGES_INPUT) {
       return;
     }
 
@@ -162,8 +192,8 @@
     // only fire once.
     assert(!oldConfig);
     this.focusConfig.set(
-        settings.routes.OS_LANGUAGES_EDIT_DICTIONARY.path,
-        () => cr.ui.focusWithoutInk(this.$.editDictionarySubpageTrigger));
+        routes.OS_LANGUAGES_EDIT_DICTIONARY.path,
+        () => focusWithoutInk(this.$.editDictionarySubpageTrigger));
   },
 
   /**
@@ -200,8 +230,8 @@
 
     this.languageHelper.setCurrentInputMethod(e.model.item.id);
     this.languagesMetricsProxy_.recordInteraction(
-        settings.LanguagesPageInteraction.SWITCH_INPUT_METHOD);
-    settings.recordSettingChange();
+        LanguagesPageInteraction.SWITCH_INPUT_METHOD);
+    recordSettingChange();
   },
 
   /**
@@ -239,7 +269,7 @@
    */
   hasOptionsPageInSettings_(id) {
     return loadTimeData.getBoolean('imeOptionsInSettings') &&
-        settings.input_method_util.hasOptionsPageInSettings(id);
+        hasOptionsPageInSettings(id);
   },
 
   /**
@@ -249,8 +279,8 @@
   navigateToOptionsPageInSettings_(e) {
     const params = new URLSearchParams;
     params.append('id', e.model.item.id);
-    settings.Router.getInstance().navigateTo(
-        settings.routes.OS_LANGUAGES_INPUT_METHOD_OPTIONS, params);
+    Router.getInstance().navigateTo(
+        routes.OS_LANGUAGES_INPUT_METHOD_OPTIONS, params);
   },
 
   /**
@@ -303,7 +333,7 @@
   /** @private */
   onAddInputMethodsDialogClose_() {
     this.showAddInputMethodsDialog_ = false;
-    cr.ui.focusWithoutInk(assert(this.$.addInputMethod));
+    focusWithoutInk(assert(this.$.addInputMethod));
   },
 
   /** @private */
@@ -325,7 +355,7 @@
     // within a <template is="dom-if">), we need to use
     // this.$$("#addSpellcheckLanguages") instead of
     // this.$.addSpellCheckLanguages.
-    cr.ui.focusWithoutInk(assert(this.$$('#addSpellcheckLanguages')));
+    focusWithoutInk(assert(this.$$('#addSpellcheckLanguages')));
   },
 
   /**
@@ -359,7 +389,7 @@
    */
   onRemoveInputMethodClick_(e) {
     this.languageHelper.removeInputMethod(e.model.item.id);
-    settings.recordSettingChange();
+    recordSettingChange();
   },
 
   /**
@@ -377,7 +407,7 @@
    */
   onRemoveSpellcheckLanguageClick_(e) {
     this.languageHelper.toggleSpellCheck(e.model.item.language.code, false);
-    settings.recordSettingChange();
+    recordSettingChange();
   },
 
   /**
@@ -540,9 +570,8 @@
    */
   onEditDictionaryClick_() {
     this.languagesMetricsProxy_.recordInteraction(
-        settings.LanguagesPageInteraction.OPEN_CUSTOM_SPELL_CHECK);
-    settings.Router.getInstance().navigateTo(
-        settings.routes.OS_LANGUAGES_EDIT_DICTIONARY);
+        LanguagesPageInteraction.OPEN_CUSTOM_SPELL_CHECK);
+    Router.getInstance().navigateTo(routes.OS_LANGUAGES_EDIT_DICTIONARY);
   },
 
   /**
@@ -574,7 +603,7 @@
   /** @private */
   onLanguagePackNoticeLinkClick_() {
     this.languagesMetricsProxy_.recordInteraction(
-        settings.LanguagesPageInteraction.OPEN_LANGUAGE_PACKS_LEARN_MORE);
+        LanguagesPageInteraction.OPEN_LANGUAGE_PACKS_LEARN_MORE);
   },
 
   /**
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/languages_metrics_proxy.js b/chrome/browser/resources/settings/chromeos/os_languages_page/languages_metrics_proxy.js
index 951f149..2b935664 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/languages_metrics_proxy.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/languages_metrics_proxy.js
@@ -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 {addSingletonGetter} from 'chrome://resources/js/cr.m.js';
+import {addSingletonGetter} from 'chrome://resources/js/cr.m.js';
 
 /**
  * @fileoverview
@@ -10,151 +10,141 @@
  * TODO(crbug/1109431): Remove these metrics when languages settings migration
  * is completed and data analysed.
  */
-cr.define('settings', function() {
+/**
+ * Keeps in sync with SettingsLanguagesPageInteraction
+ * in tools/metrics/histograms/enums.xml.
+ * @enum {number}
+ */
+export const LanguagesPageInteraction = {
+  SWITCH_SYSTEM_LANGUAGE: 0,
+  RESTART: 1,
+  SWITCH_INPUT_METHOD: 2,
+  RESTART_LATER: 3,
+  OPEN_CUSTOM_SPELL_CHECK: 4,
+  OPEN_MANAGE_GOOGLE_ACCOUNT_LANGUAGE: 5,
+  OPEN_WEB_LANGUAGES_LEARN_MORE: 6,
+  OPEN_LANGUAGE_PACKS_LEARN_MORE: 7,
+};
+
+/**
+ * Keeps in sync with SettingsInputsShortcutReminderState
+ * in tools/metrics/histograms/enums.xml.
+ * @enum {number}
+ */
+export const InputsShortcutReminderState = {
+  NONE: 0,
+  LAST_USED_IME: 1,
+  NEXT_IME: 2,
+  LAST_USED_IME_AND_NEXT_IME: 3,
+};
+
+/** @interface */
+export class LanguagesMetricsProxy {
   /**
-   * Keeps in sync with SettingsLanguagesPageInteraction
-   * in tools/metrics/histograms/enums.xml.
-   * @enum {number}
+   * Records the interaction to enumerated histogram.
+   * @param {!LanguagesPageInteraction} interaction
    */
-  /* #export */ const LanguagesPageInteraction = {
-    SWITCH_SYSTEM_LANGUAGE: 0,
-    RESTART: 1,
-    SWITCH_INPUT_METHOD: 2,
-    RESTART_LATER: 3,
-    OPEN_CUSTOM_SPELL_CHECK: 4,
-    OPEN_MANAGE_GOOGLE_ACCOUNT_LANGUAGE: 5,
-    OPEN_WEB_LANGUAGES_LEARN_MORE: 6,
-    OPEN_LANGUAGE_PACKS_LEARN_MORE: 7,
-  };
+  recordInteraction(interaction) {}
+
+  /** Records when users select "Add input method". */
+  recordAddInputMethod() {}
+
+  /** Records when users select "Add languages". */
+  recordAddLanguages() {}
+
+  /** Records when users select "Manage input methods". */
+  recordManageInputMethods() {}
 
   /**
-   * Keeps in sync with SettingsInputsShortcutReminderState
-   * in tools/metrics/histograms/enums.xml.
-   * @enum {number}
+   * Records when users toggle "Show Input Options On Shelf" option.
+   * @param {boolean} value
    */
-  /* #export */ const InputsShortcutReminderState = {
-    NONE: 0,
-    LAST_USED_IME: 1,
-    NEXT_IME: 2,
-    LAST_USED_IME_AND_NEXT_IME: 3,
-  };
+  recordToggleShowInputOptionsOnShelf(value) {}
 
-  /** @interface */
-  /* #export */ class LanguagesMetricsProxy {
-    /**
-     * Records the interaction to enumerated histogram.
-     * @param {!settings.LanguagesPageInteraction} interaction
-     */
-    recordInteraction(interaction) {}
+  /**
+   * Records when users toggle "Spell check" option.
+   * @param {boolean} value
+   */
+  recordToggleSpellCheck(value) {}
 
-    /** Records when users select "Add input method". */
-    recordAddInputMethod() {}
+  /**
+   * Records when users toggle "Offer to translate languages you don't read"
+   * option.
+   * @param {boolean} value
+   */
+  recordToggleTranslate(value) {}
 
-    /** Records when users select "Add languages". */
-    recordAddLanguages() {}
+  /**
+   * Records when users check/uncheck "Offer to translate pages in this
+   * language" checkbox.
+   * @param {boolean} value
+   */
+  recordTranslateCheckboxChanged(value) {}
 
-    /** Records when users select "Manage input methods". */
-    recordManageInputMethods() {}
+  /**
+   * Records when users dismiss the shortcut reminder.
+   * @param {InputsShortcutReminderState} value
+   */
+  recordShortcutReminderDismissed(value) {}
+}
 
-    /**
-     * Records when users toggle "Show Input Options On Shelf" option.
-     * @param {boolean} value
-     */
-    recordToggleShowInputOptionsOnShelf(value) {}
-
-    /**
-     * Records when users toggle "Spell check" option.
-     * @param {boolean} value
-     */
-    recordToggleSpellCheck(value) {}
-
-    /**
-     * Records when users toggle "Offer to translate languages you don't read"
-     * option.
-     * @param {boolean} value
-     */
-    recordToggleTranslate(value) {}
-
-    /**
-     * Records when users check/uncheck "Offer to translate pages in this
-     * language" checkbox.
-     * @param {boolean} value
-     */
-    recordTranslateCheckboxChanged(value) {}
-
-    /**
-     * Records when users dismiss the shortcut reminder.
-     * @param {InputsShortcutReminderState} value
-     */
-    recordShortcutReminderDismissed(value) {}
+/** @implements {LanguagesMetricsProxy} */
+export class LanguagesMetricsProxyImpl {
+  /** @override */
+  recordInteraction(interaction) {
+    chrome.metricsPrivate.recordEnumerationValue(
+        'ChromeOS.Settings.Languages.Interaction', interaction,
+        Object.keys(LanguagesPageInteraction).length);
   }
 
-  /** @implements {settings.LanguagesMetricsProxy} */
-  /* #export */ class LanguagesMetricsProxyImpl {
-    /** @override */
-    recordInteraction(interaction) {
-      chrome.metricsPrivate.recordEnumerationValue(
-          'ChromeOS.Settings.Languages.Interaction', interaction,
-          Object.keys(LanguagesPageInteraction).length);
-    }
-
-    /** @override */
-    recordAddInputMethod() {
-      chrome.metricsPrivate.recordUserAction(
-          'ChromeOS.Settings.Languages.AddInputMethod');
-    }
-
-    /** @override */
-    recordAddLanguages() {
-      chrome.metricsPrivate.recordUserAction(
-          'ChromeOS.Settings.Languages.AddLanguages');
-    }
-
-    /** @override */
-    recordManageInputMethods() {
-      chrome.metricsPrivate.recordUserAction(
-          'ChromeOS.Settings.Languages.ManageInputMethods');
-    }
-
-    /** @override */
-    recordToggleShowInputOptionsOnShelf(value) {
-      chrome.metricsPrivate.recordBoolean(
-          'ChromeOS.Settings.Languages.Toggle.ShowInputOptionsOnShelf', value);
-    }
-
-    /** @override */
-    recordToggleSpellCheck(value) {
-      chrome.metricsPrivate.recordBoolean(
-          'ChromeOS.Settings.Languages.Toggle.SpellCheck', value);
-    }
-
-    /** @override */
-    recordToggleTranslate(value) {
-      chrome.metricsPrivate.recordBoolean(
-          'ChromeOS.Settings.Languages.Toggle.Translate', value);
-    }
-
-    /** @override */
-    recordTranslateCheckboxChanged(value) {
-      chrome.metricsPrivate.recordBoolean(
-          'ChromeOS.Settings.Languages.OfferToTranslateCheckbox', value);
-    }
-
-    /** @override */
-    recordShortcutReminderDismissed(value) {
-      chrome.metricsPrivate.recordEnumerationValue(
-          'ChromeOS.Settings.Inputs.ShortcutReminderDismissed', value,
-          Object.keys(InputsShortcutReminderState).length);
-    }
+  /** @override */
+  recordAddInputMethod() {
+    chrome.metricsPrivate.recordUserAction(
+        'ChromeOS.Settings.Languages.AddInputMethod');
   }
 
-  cr.addSingletonGetter(LanguagesMetricsProxyImpl);
+  /** @override */
+  recordAddLanguages() {
+    chrome.metricsPrivate.recordUserAction(
+        'ChromeOS.Settings.Languages.AddLanguages');
+  }
 
-  // #cr_define_end
-  return {
-    LanguagesMetricsProxy,
-    LanguagesMetricsProxyImpl,
-    LanguagesPageInteraction,
-    InputsShortcutReminderState,
-  };
-});
+  /** @override */
+  recordManageInputMethods() {
+    chrome.metricsPrivate.recordUserAction(
+        'ChromeOS.Settings.Languages.ManageInputMethods');
+  }
+
+  /** @override */
+  recordToggleShowInputOptionsOnShelf(value) {
+    chrome.metricsPrivate.recordBoolean(
+        'ChromeOS.Settings.Languages.Toggle.ShowInputOptionsOnShelf', value);
+  }
+
+  /** @override */
+  recordToggleSpellCheck(value) {
+    chrome.metricsPrivate.recordBoolean(
+        'ChromeOS.Settings.Languages.Toggle.SpellCheck', value);
+  }
+
+  /** @override */
+  recordToggleTranslate(value) {
+    chrome.metricsPrivate.recordBoolean(
+        'ChromeOS.Settings.Languages.Toggle.Translate', value);
+  }
+
+  /** @override */
+  recordTranslateCheckboxChanged(value) {
+    chrome.metricsPrivate.recordBoolean(
+        'ChromeOS.Settings.Languages.OfferToTranslateCheckbox', value);
+  }
+
+  /** @override */
+  recordShortcutReminderDismissed(value) {
+    chrome.metricsPrivate.recordEnumerationValue(
+        'ChromeOS.Settings.Inputs.ShortcutReminderDismissed', value,
+        Object.keys(InputsShortcutReminderState).length);
+  }
+}
+
+addSingletonGetter(LanguagesMetricsProxyImpl);
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.html b/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.html
index 3231a25..f425308b 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.html
@@ -1,79 +1,58 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared shared-style">
+  #dialog-body {
+    display: flex;
+    flex-direction: column;
+    height: 350px;
+    overflow: auto;
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_checkbox/cr_checkbox.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_scrollable_behavior.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_search_field/cr_search_field.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
-<link rel="import" href="chrome://resources/cr_elements/find_shortcut_behavior.html">
-<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
-<link rel="import" href="chrome://resources/html/load_time_data.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
-<link rel="import" href="shared_style.html">
-<link rel="import" href="languages.html">
-<link rel="import" href="languages_types.html">
-<link rel="import" href="../../settings_shared_css.html">
+  cr-search-field {
+    margin-bottom: 16px;
+  }
 
-<dom-module id="os-settings-add-languages-dialog">
-  <template>
-    <style include="settings-shared shared-style">
-      #dialog-body {
-        display: flex;
-        flex-direction: column;
-        height: 350px;
-        overflow: auto;
-      }
+  iron-list {
+    flex: 1;
+  }
 
-      cr-search-field {
-        margin-bottom: 16px;
-      }
+  cr-checkbox::part(label-container) {
+    white-space: nowrap;
+  }
 
-      iron-list {
-        flex: 1;
-      }
-
-      cr-checkbox::part(label-container) {
-        white-space: nowrap;
-      }
-
-      .list-item {
-        min-height: 36px;
-      }
-    </style>
-    <cr-dialog id="dialog" close-text="$i18n{close}">
-      <div slot="title">$i18n{addLanguagesDialogTitle}</div>
-      <div id="dialog-body" slot="body" scrollable>
-        <cr-search-field label="$i18n{searchLanguages}" id="search"
-            on-search-changed="onSearchChanged_" on-keydown="onKeydown_"
-            clear-label="$i18n{clearSearch}" autofocus>
-        </cr-search-field>
-        <iron-list scroll-target="[[$$('[slot=body]')]]"
-            items="[[displayedLanguages_]]"
-            hidden$="[[displayedLanguagesEmpty_]]">
-          <template>
-            <cr-checkbox class="list-item no-outline"
-                checked="[[willAdd_(item.code)]]" tab-index="[[tabIndex]]"
-                title$="[[item.nativeDisplayName]]"
-                on-change="onLanguageCheckboxChange_">
-              [[getDisplayText_(item)]]
-            </cr-checkbox>
-          </template>
-        </iron-list>
-        <div id="no-search-results" class="centered-message"
-            hidden$="[[!displayedLanguagesEmpty_]]">
-          $i18n{noSearchResults}
-        </div>
-      </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelButtonTap_">
-          $i18n{cancel}
-        </cr-button>
-        <cr-button class="action-button" on-click="onActionButtonTap_"
-            disabled="[[disableActionButton_]]">
-          $i18n{add}
-        </cr-button>
-      </div>
-    </cr-dialog>
-  </template>
-  <script src="os_add_languages_dialog.js"></script>
-</dom-module>
+  .list-item {
+    min-height: 36px;
+  }
+</style>
+<cr-dialog id="dialog" close-text="$i18n{close}">
+  <div slot="title">$i18n{addLanguagesDialogTitle}</div>
+  <div id="dialog-body" slot="body" scrollable>
+    <cr-search-field label="$i18n{searchLanguages}" id="search"
+        on-search-changed="onSearchChanged_" on-keydown="onKeydown_"
+        clear-label="$i18n{clearSearch}" autofocus>
+    </cr-search-field>
+    <iron-list scroll-target="[[$$('[slot=body]')]]"
+        items="[[displayedLanguages_]]"
+        hidden$="[[displayedLanguagesEmpty_]]">
+      <template>
+        <cr-checkbox class="list-item no-outline"
+            checked="[[willAdd_(item.code)]]" tab-index="[[tabIndex]]"
+            title$="[[item.nativeDisplayName]]"
+            on-change="onLanguageCheckboxChange_">
+          [[getDisplayText_(item)]]
+        </cr-checkbox>
+      </template>
+    </iron-list>
+    <div id="no-search-results" class="centered-message"
+        hidden$="[[!displayedLanguagesEmpty_]]">
+      $i18n{noSearchResults}
+    </div>
+  </div>
+  <div slot="button-container">
+    <cr-button class="cancel-button" on-click="onCancelButtonTap_">
+      $i18n{cancel}
+    </cr-button>
+    <cr-button class="action-button" on-click="onActionButtonTap_"
+        disabled="[[disableActionButton_]]">
+      $i18n{add}
+    </cr-button>
+  </div>
+</cr-dialog>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js b/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js
index c4bb563d..9ec0958f 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js
@@ -6,7 +6,25 @@
  * @fileoverview 'os-settings-add-languages-dialog' is a dialog for enabling
  * languages.
  */
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_checkbox/cr_checkbox.m.js';
+import '//resources/cr_elements/cr_search_field/cr_search_field.js';
+import '//resources/cr_elements/cr_dialog/cr_dialog.m.js';
+import '//resources/cr_elements/shared_vars_css.m.js';
+import '//resources/polymer/v3_0/iron-list/iron-list.js';
+import './shared_style.js';
+import './languages.js';
+import '../../settings_shared_css.js';
+
+import {CrScrollableBehavior} from '//resources/cr_elements/cr_scrollable_behavior.m.js';
+import {FindShortcutBehavior} from '//resources/cr_elements/find_shortcut_behavior.js';
+import {loadTimeData} from '//resources/js/load_time_data.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {LanguageHelper, LanguagesModel} from './languages_types.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-add-languages-dialog',
 
   behaviors: [
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.html b/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.html
index 16984a7..f6b740d 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.html
@@ -1,89 +1,69 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared">
+  :host {
+    display: flex;
+    flex-direction: column;
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html">
-<link rel="import" href="chrome://resources/cr_elements/icons.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-a11y-keys/iron-a11y-keys.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
-<link rel="import" href="../metrics_recorder.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="../global_scroll_target_behavior.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="languages_browser_proxy.html">
+  #newWord {
+    width: 100%;
+    --cr-input-width: 216px;
+  }
 
-<dom-module id="os-settings-edit-dictionary-page">
+  #newWord::part(row-container) {
+    justify-content: normal;
+  }
+
+  iron-list .word {
+    flex: 1;
+    padding-inline-start: 10px;
+  }
+
+  #list {
+    padding: 0 var(--cr-section-padding);
+  }
+
+  .list-item {
+    border-bottom: var(--cr-separator-line);
+  }
+
+  #noWordsLabel {
+    padding-top: 39px;
+    text-align: center;
+  }
+</style>
+<div class="cr-row continuation">
+  $i18n{editDictionaryDescription}
+</div>
+<div class="cr-row first">
+  <iron-a11y-keys id="keys" keys="enter esc"
+      on-keys-pressed="onKeysPress_">
+  </iron-a11y-keys>
+  <cr-input id="newWord" value="{{newWordValue_}}"
+      invalid="[[isNewWordInvalid_(newWordState_)]]"
+      error-message="[[getErrorMessage_(newWordState_)]]"
+      spellcheck="false"
+      aria-label="$i18n{editDictionaryDescription}">
+    <cr-button on-click="onAddWordTap_" id="addWord" slot="suffix"
+        disabled="[[disableAddButton_]]">
+      $i18n{addDictionaryWordButtonLabel}
+    </cr-button>
+  </cr-input>
+</div>
+<iron-list id="list" items="[[words_]]" preserve-focus
+    scroll-target="[[subpageScrollTarget]]" risk-selection>
   <template>
-    <style include="settings-shared">
-      :host {
-        display: flex;
-        flex-direction: column;
-      }
-
-      #newWord {
-        width: 100%;
-        --cr-input-width: 216px;
-      }
-
-      #newWord::part(row-container) {
-        justify-content: normal;
-      }
-
-      iron-list .word {
-        flex: 1;
-        padding-inline-start: 10px;
-      }
-
-      #list {
-        padding: 0 var(--cr-section-padding);
-      }
-
-      .list-item {
-        border-bottom: var(--cr-separator-line);
-      }
-
-      #noWordsLabel {
-        padding-top: 39px;
-        text-align: center;
-      }
-    </style>
-    <div class="cr-row continuation">
-      $i18n{editDictionaryDescription}
-    </div>
-    <div class="cr-row first">
-      <iron-a11y-keys id="keys" keys="enter esc"
-          on-keys-pressed="onKeysPress_">
-      </iron-a11y-keys>
-      <cr-input id="newWord" value="{{newWordValue_}}"
-          invalid="[[isNewWordInvalid_(newWordState_)]]"
-          error-message="[[getErrorMessage_(newWordState_)]]"
-          spellcheck="false"
-          aria-label="$i18n{editDictionaryDescription}">
-        <cr-button on-click="onAddWordTap_" id="addWord" slot="suffix"
-            disabled="[[disableAddButton_]]">
-          $i18n{addDictionaryWordButtonLabel}
-        </cr-button>
-      </cr-input>
-    </div>
-    <iron-list id="list" items="[[words_]]" preserve-focus
-        scroll-target="[[subpageScrollTarget]]" risk-selection>
-      <template>
-        <div class="list-item">
-          <div id$="word[[index]]" class="word text-elide" aria-hidden="true">
-            [[item]]
-          </div>
-          <cr-icon-button class="icon-clear" on-click="onRemoveWordTap_"
-              tabindex$="[[tabIndex]]"
-              title="$i18n{deleteDictionaryWordTooltip}"
-              aria-describedby$="word[[index]]">
-          </cr-icon-button>
-        </div>
-      </template>
-    </iron-list>
-    <div id="noWordsLabel" class="secondary" hidden="[[hasWords_]]">
-      $i18n{noDictionaryWordsLabel}
+    <div class="list-item">
+      <div id$="word[[index]]" class="word text-elide" aria-hidden="true">
+        [[item]]
+      </div>
+      <cr-icon-button class="icon-clear" on-click="onRemoveWordTap_"
+          tabindex$="[[tabIndex]]"
+          title="$i18n{deleteDictionaryWordTooltip}"
+          aria-describedby$="word[[index]]">
+      </cr-icon-button>
     </div>
   </template>
-  <script src="os_edit_dictionary_page.js"></script>
-</dom-module>
+</iron-list>
+<div id="noWordsLabel" class="secondary" hidden="[[hasWords_]]">
+  $i18n{noDictionaryWordsLabel}
+</div>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.js b/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.js
index 36043a659..28b25f6 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.js
@@ -19,12 +19,28 @@
   WORD_TOO_LONG: 3,
 };
 
+import {afterNextRender, Polymer, html, flush, Templatizer, TemplateInstanceBase} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
+import '//resources/cr_elements/cr_input/cr_input.m.js';
+import '//resources/cr_elements/icons.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import '//resources/polymer/v3_0/iron-a11y-keys/iron-a11y-keys.js';
+import '//resources/polymer/v3_0/iron-list/iron-list.js';
+import {recordSettingChange, recordSearch, setUserActionRecorderForTesting, recordPageFocus, recordPageBlur, recordClick, recordNavigation} from '../metrics_recorder.m.js';
+import {routes} from '../os_route.m.js';
+import {GlobalScrollTargetBehavior, setGlobalScrollTarget} from '../global_scroll_target_behavior.js';
+import '../../settings_shared_css.js';
+import {LanguagesBrowserProxy, LanguagesBrowserProxyImpl} from './languages_browser_proxy.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-edit-dictionary-page',
 
   behaviors: [
     I18nBehavior,
-    settings.GlobalScrollTargetBehavior,
+    GlobalScrollTargetBehavior,
   ],
 
   properties: {
@@ -40,7 +56,7 @@
      */
     subpageRoute: {
       type: Object,
-      value: settings.routes.OS_LANGUAGES_EDIT_DICTIONARY,
+      value: routes.OS_LANGUAGES_EDIT_DICTIONARY,
     },
 
     /** @private {!Array<string>} */
@@ -77,8 +93,7 @@
   /** @override */
   created() {
     this.languageSettingsPrivate_ =
-        settings.LanguagesBrowserProxyImpl.getInstance()
-            .getLanguageSettingsPrivate();
+        LanguagesBrowserProxyImpl.getInstance().getLanguageSettingsPrivate();
   },
 
   /** @override */
@@ -112,7 +127,7 @@
     this.newWordValue_ = '';
     if (word) {
       this.languageSettingsPrivate_.addSpellcheckWord(word);
-      settings.recordSettingChange();
+      recordSettingChange();
     }
   },
 
@@ -222,6 +237,6 @@
    */
   onRemoveWordTap_(e) {
     this.languageSettingsPrivate_.removeSpellcheckWord(e.model.item);
-    settings.recordSettingChange();
+    recordSettingChange();
   }
 });
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html
index d2cb864..04458cbf 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html
@@ -1,241 +1,206 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared action-link iron-flex">
+  h2 {
+    padding-inline-start: var(--cr-section-padding);
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/html/action_link.html">
-<link rel="import" href="chrome://resources/cr_elements/action_link_css.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/cr.html">
-<link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_lazy_render/cr_lazy_render.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html">
-<link rel="import" href="change_device_language_dialog.html">
-<link rel="import" href="languages_metrics_proxy.html">
-<link rel="import" href="os_add_languages_dialog.html">
-<link rel="import" href="chrome://resources/cr_components/chromeos/localized_link/localized_link.html">
-<link rel="import" href="../../controls/settings_toggle_button.html">
-<link rel="import" href="../prefs_behavior.html">
-<link rel="import" href="../deep_linking_behavior.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="../../i18n_setup.html">
-<link rel="import" href="../../router.html">
-<link rel="import" href="../route_observer_behavior.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="../metrics_recorder.html">
-<link rel="import" href="languages_types.html">
+  .subsection {
+    padding-inline-end: var(--cr-section-padding);
+    padding-inline-start: var(--cr-section-indent-padding);
+  }
 
-<dom-module id="os-settings-languages-page-v2">
-  <template>
-    <style include="settings-shared action-link iron-flex">
-      h2 {
-        padding-inline-start: var(--cr-section-padding);
-      }
+  .subsection > cr-link-row {
+    padding-inline-end: 0;
+    padding-inline-start: 0;
+  }
 
-      .subsection {
-        padding-inline-end: var(--cr-section-padding);
-        padding-inline-start: var(--cr-section-indent-padding);
-      }
+  cr-action-menu.complex .dropdown-item {
+    min-height: 36px;
+  }
 
-      .subsection > cr-link-row {
-        padding-inline-end: 0;
-        padding-inline-start: 0;
-      }
+  cr-action-menu.complex .dropdown-item:focus {
+    background-color: var(--cros-menu-item-bg-color-focus);
+  }
 
-      cr-action-menu.complex .dropdown-item {
-        min-height: 36px;
-      }
+  cr-policy-indicator {
+    margin-inline-end: 8px;
+  }
 
-      cr-action-menu.complex .dropdown-item:focus {
-        background-color: var(--cros-menu-item-bg-color-focus);
-      }
+  .bottom-margin {
+    margin-bottom: var(--cr-section-vertical-margin);
+  }
 
-      cr-policy-indicator {
-        margin-inline-end: 8px;
-      }
+  .list-item.non-translate-target .target-info {
+    display: none;
+  }
 
-      .bottom-margin {
-        margin-bottom: var(--cr-section-vertical-margin);
-      }
+  /* There can be more than 1 translate target in the language list.
+    * This hides the label for all except the first one, a way to do
+    * a :first-of-class selector.
+    */
+  .list-item.translate-target ~ .list-item.translate-target .target-info {
+    display: none;
+  }
 
-      .list-item.non-translate-target .target-info {
-        display: none;
-      }
+  #addLanguages {
+    --iron-icon-fill-color: var(--cr-link-color);
+    margin-top: 16px;
+  }
 
-      /* There can be more than 1 translate target in the language list.
-       * This hides the label for all except the first one, a way to do
-       * a :first-of-class selector.
-       */
-      .list-item.translate-target ~ .list-item.translate-target .target-info {
-        display: none;
-      }
+  #addLanguages[disabled] {
+    --iron-icon-fill-color: var(--cros-icon-color-disabled);
+  }
 
-      #addLanguages {
-        --iron-icon-fill-color: var(--cr-link-color);
-        margin-top: 16px;
-      }
+  #addLanguagesIcon {
+    margin-inline-end: 8px;
+  }
 
-      #addLanguages[disabled] {
-        --iron-icon-fill-color: var(--cros-icon-color-disabled);
-      }
+  cr-checkbox {
+    --cr-checkbox-label-padding-start: 8px;
+  }
+</style>
 
-      #addLanguagesIcon {
-        margin-inline-end: 8px;
-      }
-
-      cr-checkbox {
-        --cr-checkbox-label-padding-start: 8px;
-      }
-    </style>
-
-    <div route-path="default">
-      <div class="cr-row first">
-        <div class="flex cr-padded-text" aria-hidden="true">
-          $i18n{deviceLanguageTitle}
-          <div class="secondary">
-            [[getLanguageDisplayName_(languages.prospectiveUILanguage)]]
-          </div>
-        </div>
-        <template is="dom-if" if="[[isSecondaryUser_]]">
-          <cr-policy-indicator id="changeDeviceLanguagePolicyIndicator"
-              indicator-type="primary_user"
-              indicator-source-name="[[primaryUserEmail_]]">
-          </cr-policy-indicator>
-        </template>
-        <template is="dom-if" if="[[!isGuest_]]">
-          <cr-button id="changeDeviceLanguage"
-              on-click="onChangeDeviceLanguageClick_"
-              disabled="[[isSecondaryUser_]]"
-              aria-label="[[getChangeDeviceLanguageButtonDescription_(
-                languages.prospectiveUILanguage)]]"
-              deep-link-focus-id$="[[Setting.kChangeDeviceLanguage]]">
-            $i18n{changeDeviceLanguageLabel}
-          </cr-button>
-        </template>
-
+<div route-path="default">
+  <div class="cr-row first">
+    <div class="flex cr-padded-text" aria-hidden="true">
+      $i18n{deviceLanguageTitle}
+      <div class="secondary">
+        [[getLanguageDisplayName_(languages.prospectiveUILanguage)]]
       </div>
+    </div>
+    <template is="dom-if" if="[[isSecondaryUser_]]">
+      <cr-policy-indicator id="changeDeviceLanguagePolicyIndicator"
+          indicator-type="primary_user"
+          indicator-source-name="[[primaryUserEmail_]]">
+      </cr-policy-indicator>
+    </template>
+    <template is="dom-if" if="[[!isGuest_]]">
+      <cr-button id="changeDeviceLanguage"
+          on-click="onChangeDeviceLanguageClick_"
+          disabled="[[isSecondaryUser_]]"
+          aria-label="[[getChangeDeviceLanguageButtonDescription_(
+            languages.prospectiveUILanguage)]]"
+          deep-link-focus-id$="[[Setting.kChangeDeviceLanguage]]">
+        $i18n{changeDeviceLanguageLabel}
+      </cr-button>
+    </template>
 
-      <div class="hr bottom-margin">
-        <h2 aria-hidden="true">
-          [[getLanguagePreferenceTitle_(languageSettingsV2Update2Enabled_)]]
-        </h2>
-        <localized-link id="webLanguagesDescription"
-            class="cr-row first bottom-margin"
-            localized-string="[[getLanguagePreferenceDescription_(
-                languageSettingsV2Update2Enabled_)]]"
-            on-link-clicked="onLanguagePreferenceDescriptionLinkClick_">
-        </localized-link>
-        <div class="list-frame vertical-list" id="languagesList">
-          <template is="dom-repeat" items="[[languages.enabled]]">
-            <div class$="list-item [[getTranslationTargetClass_(
-                item.language.code, languages.translateTarget)]]">
-              <div class="flex" id="displayText-[[index]]"
-                  aria-hidden="true">
-                <div title="[[item.language.nativeDisplayName]]">
-                  [[item.language.displayName]]
-                </div>
-                <div class="target-info secondary">
-                  $i18n{translateTargetLabel}
-                </div>
-              </div>
-              <cr-icon-button class="icon-more-vert"
-                  title="$i18n{moreActions}" id="more-[[item.language.code]]"
-                  on-click="onDotsClick_"
-                  aria-labelledby$="displayText-[[index]]">
-              </cr-icon-button>
+  </div>
+
+  <div class="hr bottom-margin">
+    <h2 aria-hidden="true">
+      [[getLanguagePreferenceTitle_(languageSettingsV2Update2Enabled_)]]
+    </h2>
+    <localized-link id="webLanguagesDescription"
+        class="cr-row first bottom-margin"
+        localized-string="[[getLanguagePreferenceDescription_(
+            languageSettingsV2Update2Enabled_)]]"
+        on-link-clicked="onLanguagePreferenceDescriptionLinkClick_">
+    </localized-link>
+    <div class="list-frame vertical-list" id="languagesList">
+      <template is="dom-repeat" items="[[languages.enabled]]">
+        <div class$="list-item [[getTranslationTargetClass_(
+            item.language.code, languages.translateTarget)]]">
+          <div class="flex" id="displayText-[[index]]"
+              aria-hidden="true">
+            <div title="[[item.language.nativeDisplayName]]">
+              [[item.language.displayName]]
             </div>
-          </template>
-          <div class="list-item">
-            <cr-button id="addLanguages"
-                disabled="[[!canEnableSomeSupportedLanguage_(languages)]]"
-                on-click="onAddLanguagesClick_"
-                deep-link-focus-id$="[[Setting.kAddLanguage]]">
-              <iron-icon id="addLanguagesIcon" icon="cr:add"></iron-icon>
-              $i18n{addLanguages}
-            </cr-button>
+            <div class="target-info secondary">
+              $i18n{translateTargetLabel}
+            </div>
           </div>
-        </div>
-      </div>
-
-      <template is="dom-if" if="[[languageSettingsV2Update2Enabled_]]">
-        <div class="hr">
-          <h2 aria-hidden="true">$i18n{googleAccountLanguageTitle}</h2>
-          <div class="cr-row first">
-            $i18n{googleAccountLanguageDescription}
-          </div>
-          <div class="subsection cr-padded-text">
-            <cr-link-row id="manageGoogleAccountLanguage"
-                label="$i18n{manageGoogleAccountLanguageLabel}"
-                external on-click="openManageGoogleAccountLanguage_">
-            </cr-link-row>
-          </div>
+          <cr-icon-button class="icon-more-vert"
+              title="$i18n{moreActions}" id="more-[[item.language.code]]"
+              on-click="onDotsClick_"
+              aria-labelledby$="displayText-[[index]]">
+          </cr-icon-button>
         </div>
       </template>
-
-      <settings-toggle-button id="offerTranslation" class="hr"
-          pref="{{prefs.translate.enabled}}"
-          label="[[getOfferTranslationLabel_(
-              languageSettingsV2Update2Enabled_)]]"
-          sub-label="[[getOfferTranslationSublabel_(
-              languageSettingsV2Update2Enabled_)]]"
-          on-settings-boolean-control-change="onTranslateToggleChange_"
-          deep-link-focus-id$="[[Setting.kOfferTranslation]]">
-      </settings-toggle-button>
-
-      <cr-lazy-render id="menu">
-        <template>
-          <cr-action-menu class="complex"
-              role-description="$i18n{menu}">
-            <cr-checkbox id="offerTranslations"
-                class="dropdown-item"
-                checked="[[detailLanguage_.state.translateEnabled]]"
-                on-change="onTranslateCheckboxChange_"
-                hidden="[[!prefs.translate.enabled.value]]"
-                disabled="[[disableTranslateCheckbox_(
-                    detailLanguage_.state, languages.translateTarget)]]">
-              $i18n{offerToTranslateThisLanguage}
-            </cr-checkbox>
-            <button class="dropdown-item" role="menuitem"
-                on-click="onMoveToTopClick_"
-                hidden="[[showMoveToTop_(detailLanguage_)]]">
-              $i18n{moveToTop}
-            </button>
-            <button class="dropdown-item" role="menuitem"
-                on-click="onMoveUpClick_"
-                hidden="[[!showMoveUp_(detailLanguage_)]]">
-              $i18n{moveUp}
-            </button>
-            <button class="dropdown-item" role="menuitem"
-                on-click="onMoveDownClick_"
-                hidden="[[!showMoveDown_(detailLanguage_)]]">
-              $i18n{moveDown}
-            </button>
-            <button class="dropdown-item" role="menuitem"
-                on-click="onRemoveLanguageClick_"
-                disabled="[[!detailLanguage_.state.removable]]">
-              $i18n{removeLanguage}
-            </button>
-          </cr-action-menu>
-        </template>
-      </cr-lazy-render>
+      <div class="list-item">
+        <cr-button id="addLanguages"
+            disabled="[[!canEnableSomeSupportedLanguage_(languages)]]"
+            on-click="onAddLanguagesClick_"
+            deep-link-focus-id$="[[Setting.kAddLanguage]]">
+          <iron-icon id="addLanguagesIcon" icon="cr:add"></iron-icon>
+          $i18n{addLanguages}
+        </cr-button>
+      </div>
     </div>
+  </div>
 
-    <template is="dom-if" if="[[showChangeDeviceLanguageDialog_]]" restamp>
-      <os-settings-change-device-language-dialog languages="[[languages]]"
-          language-helper="[[languageHelper]]"
-          on-close="onChangeDeviceLanguageDialogClose_">
-      </os-settings-change-device-language-dialog>
-    </template>
-
-    <template is="dom-if" if="[[showAddLanguagesDialog_]]" restamp>
-      <os-settings-add-languages-dialog languages="{{languages}}"
-          language-helper="[[languageHelper]]"
-          on-close="onAddLanguagesDialogClose_">
-      </os-settings-add-languages-dialog>
-    </template>
+  <template is="dom-if" if="[[languageSettingsV2Update2Enabled_]]">
+    <div class="hr">
+      <h2 aria-hidden="true">$i18n{googleAccountLanguageTitle}</h2>
+      <div class="cr-row first">
+        $i18n{googleAccountLanguageDescription}
+      </div>
+      <div class="subsection cr-padded-text">
+        <cr-link-row id="manageGoogleAccountLanguage"
+            label="$i18n{manageGoogleAccountLanguageLabel}"
+            external on-click="openManageGoogleAccountLanguage_">
+        </cr-link-row>
+      </div>
+    </div>
   </template>
-  <script src="os_languages_page_v2.js"></script>
-</dom-module>
+
+  <settings-toggle-button id="offerTranslation" class="hr"
+      pref="{{prefs.translate.enabled}}"
+      label="[[getOfferTranslationLabel_(
+          languageSettingsV2Update2Enabled_)]]"
+      sub-label="[[getOfferTranslationSublabel_(
+          languageSettingsV2Update2Enabled_)]]"
+      on-settings-boolean-control-change="onTranslateToggleChange_"
+      deep-link-focus-id$="[[Setting.kOfferTranslation]]">
+  </settings-toggle-button>
+
+  <cr-lazy-render id="menu">
+    <template>
+      <cr-action-menu class="complex"
+          role-description="$i18n{menu}">
+        <cr-checkbox id="offerTranslations"
+            class="dropdown-item"
+            checked="[[detailLanguage_.state.translateEnabled]]"
+            on-change="onTranslateCheckboxChange_"
+            hidden="[[!prefs.translate.enabled.value]]"
+            disabled="[[disableTranslateCheckbox_(
+                detailLanguage_.state, languages.translateTarget)]]">
+          $i18n{offerToTranslateThisLanguage}
+        </cr-checkbox>
+        <button class="dropdown-item" role="menuitem"
+            on-click="onMoveToTopClick_"
+            hidden="[[showMoveToTop_(detailLanguage_)]]">
+          $i18n{moveToTop}
+        </button>
+        <button class="dropdown-item" role="menuitem"
+            on-click="onMoveUpClick_"
+            hidden="[[!showMoveUp_(detailLanguage_)]]">
+          $i18n{moveUp}
+        </button>
+        <button class="dropdown-item" role="menuitem"
+            on-click="onMoveDownClick_"
+            hidden="[[!showMoveDown_(detailLanguage_)]]">
+          $i18n{moveDown}
+        </button>
+        <button class="dropdown-item" role="menuitem"
+            on-click="onRemoveLanguageClick_"
+            disabled="[[!detailLanguage_.state.removable]]">
+          $i18n{removeLanguage}
+        </button>
+      </cr-action-menu>
+    </template>
+  </cr-lazy-render>
+</div>
+
+<template is="dom-if" if="[[showChangeDeviceLanguageDialog_]]" restamp>
+  <os-settings-change-device-language-dialog languages="[[languages]]"
+      language-helper="[[languageHelper]]"
+      on-close="onChangeDeviceLanguageDialogClose_">
+  </os-settings-change-device-language-dialog>
+</template>
+
+<template is="dom-if" if="[[showAddLanguagesDialog_]]" restamp>
+  <os-settings-add-languages-dialog languages="{{languages}}"
+      language-helper="[[languageHelper]]"
+      on-close="onAddLanguagesDialogClose_">
+  </os-settings-add-languages-dialog>
+</template>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js
index d0a6956..4d897ca3 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js
@@ -13,14 +13,45 @@
  */
 const kMenuCloseDelay = 100;
 
+import {afterNextRender, Polymer, html, flush, Templatizer, TemplateInstanceBase} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
+import '//resources/js/action_link.js';
+import '//resources/cr_elements/action_link_css.m.js';
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {sendWithPromise, removeWebUIListener, addWebUIListener, WebUIListener} from '//resources/js/cr.m.js';
+import {focusWithoutInk} from '//resources/js/cr/ui/focus_without_ink.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import '//resources/polymer/v3_0/iron-flex-layout/iron-flex-layout-classes.js';
+import '//resources/polymer/v3_0/iron-icon/iron-icon.js';
+import {CrActionMenuElement} from '//resources/cr_elements/cr_action_menu/cr_action_menu.js';
+import '//resources/cr_elements/cr_lazy_render/cr_lazy_render.m.js';
+import '//resources/cr_elements/cr_link_row/cr_link_row.js';
+import './change_device_language_dialog.js';
+import {LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction, InputsShortcutReminderState} from './languages_metrics_proxy.js';
+import './os_add_languages_dialog.js';
+import '//resources/cr_components/chromeos/localized_link/localized_link.js';
+import '../../controls/settings_toggle_button.js';
+import {PrefsBehavior} from '../prefs_behavior.js';
+import {DeepLinkingBehavior} from '../deep_linking_behavior.m.js';
+import {routes} from '../os_route.m.js';
+import {loadTimeData} from '../../i18n_setup.js';
+import {Router, Route} from '../../router.js';
+import {RouteObserverBehavior} from '../route_observer_behavior.js';
+import '../../settings_shared_css.js';
+import {recordSettingChange, recordSearch, setUserActionRecorderForTesting, recordPageFocus, recordPageBlur, recordClick, recordNavigation} from '../metrics_recorder.m.js';
+import {LanguageHelper, LanguagesModel, LanguageState} from './languages_types.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-languages-page-v2',
 
   behaviors: [
     DeepLinkingBehavior,
     I18nBehavior,
     PrefsBehavior,
-    settings.RouteObserverBehavior,
+    RouteObserverBehavior,
   ],
 
   properties: {
@@ -107,22 +138,21 @@
     },
   },
 
-  /** @private {?settings.LanguagesMetricsProxy} */
+  /** @private {?LanguagesMetricsProxy} */
   languagesMetricsProxy_: null,
 
   /** @override */
   created() {
-    this.languagesMetricsProxy_ =
-        settings.LanguagesMetricsProxyImpl.getInstance();
+    this.languagesMetricsProxy_ = LanguagesMetricsProxyImpl.getInstance();
   },
 
   /**
-   * @param {!settings.Route} route
-   * @param {!settings.Route} oldRoute
+   * @param {!Route} route
+   * @param {!Route} oldRoute
    */
   currentRouteChanged(route, oldRoute) {
     // Does not apply to this page.
-    if (route !== settings.routes.OS_LANGUAGES_LANGUAGES) {
+    if (route !== routes.OS_LANGUAGES_LANGUAGES) {
       return;
     }
 
@@ -146,7 +176,7 @@
   /** @private */
   onChangeDeviceLanguageDialogClose_() {
     this.showChangeDeviceLanguageDialog_ = false;
-    cr.ui.focusWithoutInk(assert(this.$$('#changeDeviceLanguage')));
+    focusWithoutInk(assert(this.$$('#changeDeviceLanguage')));
   },
 
   /**
@@ -175,7 +205,7 @@
   /** @private */
   onAddLanguagesDialogClose_() {
     this.showAddLanguagesDialog_ = false;
-    cr.ui.focusWithoutInk(assert(this.$.addLanguages));
+    focusWithoutInk(assert(this.$.addLanguages));
   },
 
   /**
@@ -228,7 +258,7 @@
     }
     this.languagesMetricsProxy_.recordTranslateCheckboxChanged(
         e.target.checked);
-    settings.recordSettingChange();
+    recordSettingChange();
     this.closeMenuSoon_();
   },
 
@@ -287,7 +317,7 @@
     /** @type {!CrActionMenuElement} */ (this.$.menu.get()).close();
     this.languageHelper.moveLanguageToFront(
         this.detailLanguage_.state.language.code);
-    settings.recordSettingChange();
+    recordSettingChange();
   },
 
   /**
@@ -298,7 +328,7 @@
     /** @type {!CrActionMenuElement} */ (this.$.menu.get()).close();
     this.languageHelper.moveLanguage(
         this.detailLanguage_.state.language.code, /*upDirection=*/ true);
-    settings.recordSettingChange();
+    recordSettingChange();
   },
 
   /**
@@ -309,7 +339,7 @@
     /** @type {!CrActionMenuElement} */ (this.$.menu.get()).close();
     this.languageHelper.moveLanguage(
         this.detailLanguage_.state.language.code, /*upDirection=*/ false);
-    settings.recordSettingChange();
+    recordSettingChange();
   },
 
   /**
@@ -320,7 +350,7 @@
     /** @type {!CrActionMenuElement} */ (this.$.menu.get()).close();
     this.languageHelper.disableLanguage(
         this.detailLanguage_.state.language.code);
-    settings.recordSettingChange();
+    recordSettingChange();
   },
 
   /**
@@ -404,13 +434,13 @@
   /** @private */
   openManageGoogleAccountLanguage_() {
     this.languagesMetricsProxy_.recordInteraction(
-        settings.LanguagesPageInteraction.OPEN_MANAGE_GOOGLE_ACCOUNT_LANGUAGE);
+        LanguagesPageInteraction.OPEN_MANAGE_GOOGLE_ACCOUNT_LANGUAGE);
     window.open(loadTimeData.getString('googleAccountLanguagesURL'));
   },
 
   /** @private */
   onLanguagePreferenceDescriptionLinkClick_() {
     this.languagesMetricsProxy_.recordInteraction(
-        settings.LanguagesPageInteraction.OPEN_WEB_LANGUAGES_LEARN_MORE);
+        LanguagesPageInteraction.OPEN_WEB_LANGUAGES_LEARN_MORE);
   },
 });
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.html b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.html
index 3fae712..8aef9ab5 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.html
@@ -1,109 +1,85 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared"></style>
 
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="input_page.html">
-<link rel="import" href="os_languages_page_v2.html">
-<link rel="import" href="smart_inputs_page.html">
-<link rel="import" href="input_method_options_page.html">
-<link rel="import" href="../../i18n_setup.html">
-<link rel="import" href="languages.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="../../router.html">
-<link rel="import" href="../../settings_page/settings_animated_pages.html">
-<link rel="import" href="../../settings_page/settings_subpage.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="../../settings_vars_css.html">
-<link rel="import" href="languages_types.html">
+<!-- Data model. -->
+<settings-languages languages="{{languages}}" prefs="{{prefs}}"
+    language-helper="{{languageHelper}}">
+</settings-languages>
 
-<dom-module id="os-settings-languages-section">
-  <template>
-    <style include="settings-shared"></style>
+<!-- Top-level settings section. -->
+<settings-animated-pages id="pages" section="osLanguages"
+    focus-config="[[focusConfig_]]">
+  <div route-path="default">
+    <cr-link-row
+        id="languagesPageTrigger"
+        label="$i18n{languagesPageTitle}"
+        sub-label="[[getLanguageDisplayName_(
+            languages.prospectiveUILanguage, languageHelper)]]"
+        on-click="onLanguagesV2Click_"
+        role-description="$i18n{subpageArrowRoleDescription}">
+    </cr-link-row>
+    <cr-link-row
+        class="hr"
+        id="inputPageTrigger"
+        label="[[inputPageTitle_]]"
+        sub-label="[[getInputMethodDisplayName_(
+          languages.inputMethods.currentId, languageHelper)]]"
+        on-click="onInputClick_"
+        role-description="$i18n{subpageArrowRoleDescription}">
+    </cr-link-row>
+    <template is="dom-if" if="[[smartInputsEnabled_]]">
+      <cr-link-row
+          class="hr"
+          id="smartInputsSubpageTrigger"
+          label="$i18n{smartInputsTitle}"
+          on-click="onSmartInputsClick_"
+          role-description="$i18n{subpageArrowRoleDescription}">
+      </cr-link-row>
+    </template>
+  </div>
 
-    <!-- Data model. -->
-    <settings-languages languages="{{languages}}" prefs="{{prefs}}"
-        language-helper="{{languageHelper}}">
-    </settings-languages>
-
-    <!-- Top-level settings section. -->
-    <settings-animated-pages id="pages" section="osLanguages"
-        focus-config="[[focusConfig_]]">
-      <div route-path="default">
-        <cr-link-row
-            id="languagesPageTrigger"
-            label="$i18n{languagesPageTitle}"
-            sub-label="[[getLanguageDisplayName_(
-                languages.prospectiveUILanguage, languageHelper)]]"
-            on-click="onLanguagesV2Click_"
-            role-description="$i18n{subpageArrowRoleDescription}">
-        </cr-link-row>
-        <cr-link-row
-            class="hr"
-            id="inputPageTrigger"
-            label="[[inputPageTitle_]]"
-            sub-label="[[getInputMethodDisplayName_(
-              languages.inputMethods.currentId, languageHelper)]]"
-            on-click="onInputClick_"
-            role-description="$i18n{subpageArrowRoleDescription}">
-        </cr-link-row>
-        <template is="dom-if" if="[[smartInputsEnabled_]]">
-          <cr-link-row
-              class="hr"
-              id="smartInputsSubpageTrigger"
-              label="$i18n{smartInputsTitle}"
-              on-click="onSmartInputsClick_"
-              role-description="$i18n{subpageArrowRoleDescription}">
-          </cr-link-row>
-        </template>
-      </div>
-
-      <!-- "Languages" page. -->
-      <template is="dom-if" route-path="/osLanguages/languages">
-        <settings-subpage page-title="$i18n{languagesPageTitle}">
-          <os-settings-languages-page-v2
-              language-helper="[[languageHelper]]"
-              languages="[[languages]]"
-              prefs="{{prefs}}">
-          </os-settings-languages-page-v2>
-        </settings-subpage>
-      </template>
-
-      <!-- "Input" page. -->
-      <template is="dom-if" route-path="/osLanguages/input">
-        <settings-subpage page-title="[[inputPageTitle_]]">
-          <os-settings-input-page language-helper="[[languageHelper]]"
-              languages="[[languages]]" prefs="{{prefs}}"
-              focus-config="[[focusConfig_]]">
-          </os-settings-input-page>
-        </settings-subpage>
-      </template>
-
-      <!-- "Smart inputs" sub-page. -->
-      <template is="dom-if" route-path="/osLanguages/smartInputs">
-        <settings-subpage page-title="$i18n{smartInputsTitle}">
-          <os-settings-smart-inputs-page prefs="{{prefs}}">
-          </os-settings-smart-inputs-page>
-        </settings-subpage>
-      </template>
-
-      <!-- "Input method settings" sub-sub-page. -->
-      <template is="dom-if" route-path="/osLanguages/inputMethodOptions">
-        <settings-subpage>
-          <settings-input-method-options-page
-              language-helper="[[languageHelper]]"
-              prefs="{{prefs}}">
-          </settings-input-method-options-page>
-        </settings-subpage>
-      </template>
-
-      <!-- "Customize spell check" sub-sub-page. -->
-      <template is="dom-if" route-path="/osLanguages/editDictionary">
-        <settings-subpage page-title="$i18n{editDictionaryLabel}">
-          <os-settings-edit-dictionary-page></os-settings-edit-dictionary-page>
-        </settings-subpage>
-      </template>
-    </settings-animated-pages>
+  <!-- "Languages" page. -->
+  <template is="dom-if" route-path="/osLanguages/languages">
+    <settings-subpage page-title="$i18n{languagesPageTitle}">
+      <os-settings-languages-page-v2
+          language-helper="[[languageHelper]]"
+          languages="[[languages]]"
+          prefs="{{prefs}}">
+      </os-settings-languages-page-v2>
+    </settings-subpage>
   </template>
-  <script src="os_languages_section.js"></script>
-</dom-module>
+
+  <!-- "Input" page. -->
+  <template is="dom-if" route-path="/osLanguages/input">
+    <settings-subpage page-title="[[inputPageTitle_]]">
+      <os-settings-input-page language-helper="[[languageHelper]]"
+          languages="[[languages]]" prefs="{{prefs}}"
+          focus-config="[[focusConfig_]]">
+      </os-settings-input-page>
+    </settings-subpage>
+  </template>
+
+  <!-- "Smart inputs" sub-page. -->
+  <template is="dom-if" route-path="/osLanguages/smartInputs">
+    <settings-subpage page-title="$i18n{smartInputsTitle}">
+      <os-settings-smart-inputs-page prefs="{{prefs}}">
+      </os-settings-smart-inputs-page>
+    </settings-subpage>
+  </template>
+
+  <!-- "Input method settings" sub-sub-page. -->
+  <template is="dom-if" route-path="/osLanguages/inputMethodOptions">
+    <settings-subpage>
+      <settings-input-method-options-page
+          language-helper="[[languageHelper]]"
+          prefs="{{prefs}}">
+      </settings-input-method-options-page>
+    </settings-subpage>
+  </template>
+
+  <!-- "Customize spell check" sub-sub-page. -->
+  <template is="dom-if" route-path="/osLanguages/editDictionary">
+    <settings-subpage page-title="$i18n{editDictionaryLabel}">
+      <os-settings-edit-dictionary-page></os-settings-edit-dictionary-page>
+    </settings-subpage>
+  </template>
+</settings-animated-pages>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.js b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.js
index dd1e11e..14b3e0e 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.js
@@ -12,7 +12,27 @@
  * 'os-settings-languages-section' is the top-level settings section for
  * languages.
  */
+import {afterNextRender, Polymer, html, flush, Templatizer, TemplateInstanceBase} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import '//resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
+import '//resources/cr_elements/shared_vars_css.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import './input_page.js';
+import './os_languages_page_v2.js';
+import './smart_inputs_page.js';
+import './input_method_options_page.js';
+import {loadTimeData} from '../../i18n_setup.js';
+import './languages.js';
+import {routes} from '../os_route.m.js';
+import {Router, Route} from '../../router.js';
+import '../../settings_page/settings_animated_pages.js';
+import '../../settings_page/settings_subpage.js';
+import '../../settings_shared_css.js';
+import '../../settings_vars_css.js';
+import {LanguageHelper, LanguagesModel} from './languages_types.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-languages-section',
 
   behaviors: [
@@ -36,9 +56,9 @@
       type: Object,
       value() {
         const map = new Map();
-        if (settings.routes.OS_LANGUAGES_SMART_INPUTS) {
+        if (routes.OS_LANGUAGES_SMART_INPUTS) {
           map.set(
-              settings.routes.OS_LANGUAGES_SMART_INPUTS.path,
+              routes.OS_LANGUAGES_SMART_INPUTS.path,
               '#smartInputsSubpageTrigger');
         }
         return map;
@@ -71,20 +91,17 @@
 
   /** @private */
   onLanguagesV2Click_() {
-    settings.Router.getInstance().navigateTo(
-        settings.routes.OS_LANGUAGES_LANGUAGES);
+    Router.getInstance().navigateTo(routes.OS_LANGUAGES_LANGUAGES);
   },
 
   /** @private */
   onInputClick_() {
-    settings.Router.getInstance().navigateTo(
-        settings.routes.OS_LANGUAGES_INPUT);
+    Router.getInstance().navigateTo(routes.OS_LANGUAGES_INPUT);
   },
 
   /** @private */
   onSmartInputsClick_() {
-    settings.Router.getInstance().navigateTo(
-        settings.routes.OS_LANGUAGES_SMART_INPUTS);
+    Router.getInstance().navigateTo(routes.OS_LANGUAGES_SMART_INPUTS);
   },
 
   /**
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/shared_style.html b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_style.html
index 3741d74..40a677f 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/shared_style.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_style.html
@@ -1,57 +1,52 @@
-<link rel="import" href="shared_vars.html">
+<template>
+  <style>
+    cr-search-field {
+      --cr-search-field-clear-icon-fill: var(--cros-icon-color-primary);
+      --cr-search-field-clear-icon-margin-end: 8px;
+      --cr-search-field-clear-icon-size: 18px;
+      --cr-search-field-input-border-bottom: none;
+      --cr-search-field-input-min-height: 32px;
+      --cr-search-field-input-padding-bottom: 0;
+      --cr-search-field-input-padding-start: 8px;
+      --cr-search-field-input-padding-top: 0;
+      --cr-search-field-input-underline-border-radius: 4px;
+      --cr-search-field-input-underline-height: 4px;
+      --cr-search-field-input-width: 100%;
+      --cr-search-field-search-icon-display: none;
+      --cr-search-field-search-icon-fill: var(--cros-icon-color-primary);
+      --cr-search-field-search-icon-inline-display: block;
+      --cr-search-field-search-icon-inline-margin-start: 6px;
+      background-color: var(--cros-textfield-background-color);
+      border-radius: 4px;
+    }
 
-<!-- Common styles for 'Languages and inputs' section. -->
-<dom-module id="shared-style">
-  <template>
-    <style>
-      cr-search-field {
-        --cr-search-field-clear-icon-fill: var(--cros-icon-color-primary);
-        --cr-search-field-clear-icon-margin-end: 8px;
-        --cr-search-field-clear-icon-size: 18px;
-        --cr-search-field-input-border-bottom: none;
-        --cr-search-field-input-min-height: 32px;
-        --cr-search-field-input-padding-bottom: 0;
-        --cr-search-field-input-padding-start: 8px;
-        --cr-search-field-input-padding-top: 0;
-        --cr-search-field-input-underline-border-radius: 4px;
-        --cr-search-field-input-underline-height: 4px;
-        --cr-search-field-input-width: 100%;
-        --cr-search-field-search-icon-display: none;
-        --cr-search-field-search-icon-fill: var(--cros-icon-color-primary);
-        --cr-search-field-search-icon-inline-display: block;
-        --cr-search-field-search-icon-inline-margin-start: 6px;
-        background-color: var(--cros-textfield-background-color);
-        border-radius: 4px;
-      }
+    cr-dialog [slot=title] {
+      padding-inline-end: var(--dialog-horizontal-padding);
+      padding-inline-start: var(--dialog-horizontal-padding);
+      padding-top: var(--dialog-horizontal-padding);
+    }
 
-      cr-dialog [slot=title] {
-        padding-inline-end: var(--dialog-horizontal-padding);
-        padding-inline-start: var(--dialog-horizontal-padding);
-        padding-top: var(--dialog-horizontal-padding);
-      }
+    cr-dialog [slot=body] {
+      padding-inline-end: var(--dialog-horizontal-padding);
+      padding-inline-start: var(--dialog-horizontal-padding);
+    }
 
-      cr-dialog [slot=body] {
-        padding-inline-end: var(--dialog-horizontal-padding);
-        padding-inline-start: var(--dialog-horizontal-padding);
-      }
+    cr-dialog [slot=button-container] {
+      padding-bottom: 20px;
+      padding-inline-end: var(--dialog-horizontal-padding);
+      padding-inline-start: var(--dialog-horizontal-padding);
+      padding-top: 20px;
+    }
 
-      cr-dialog [slot=button-container] {
-        padding-bottom: 20px;
-        padding-inline-end: var(--dialog-horizontal-padding);
-        padding-inline-start: var(--dialog-horizontal-padding);
-        padding-top: 20px;
-      }
-
-      .centered-message {
-        align-items: center;
-        color: var(--md-loading-message-color);
-        display: flex;
-        flex: 1;
-        font-size: 108%;
-        font-weight: 500;
-        height: 100%;
-        justify-content: center;
-      }
-    </style>
-  </template>
-</dom-module>
+    .centered-message {
+      align-items: center;
+      color: var(--md-loading-message-color);
+      display: flex;
+      flex: 1;
+      font-size: 108%;
+      font-weight: 500;
+      height: 100%;
+      justify-content: center;
+    }
+  </style>
+</template>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/shared_style.js b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_style.js
new file mode 100644
index 0000000..7b7e1a4
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_style.js
@@ -0,0 +1,10 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import './shared_vars.js';
+const template = document.createElement('template');
+template.innerHTML = `
+<dom-module id="shared-style" assetpath="chrome://resources/">{__html_template__}</dom-module>
+`;
+document.body.appendChild(template.content.cloneNode(true));
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/shared_vars.html b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_vars.html
index a3ec82e..9a75264 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/shared_vars.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_vars.html
@@ -1,11 +1,7 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
-
 <custom-style>
 <style>
   html {
     --dialog-horizontal-padding: 24px;
   }
 </style>
-</custom-style>
\ No newline at end of file
+</custom-style>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/shared_vars.js b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_vars.js
new file mode 100644
index 0000000..d4a68b9
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/shared_vars.js
@@ -0,0 +1,10 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import '//resources/cr_elements/shared_vars_css.m.js';
+const template = document.createElement('template');
+template.innerHTML = `{__html_template__}`;
+document.head.appendChild(template.content);
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.html b/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.html
index db79bbeb..9f6e617e 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.html
@@ -1,89 +1,71 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared">
+  .bottom-pad {
+    padding: 0 0 var(--cr-section-vertical-padding) 0;
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_toggle/cr_toggle.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../../controls/settings_toggle_button.html">
-<link rel="import" href="../../i18n_setup.html">
-<link rel="import" href="../prefs_behavior.html">
-<link rel="import" href="../deep_linking_behavior.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="../../router.html">
-<link rel="import" href="../route_observer_behavior.html">
-<link rel="import" href="../../settings_shared_css.html">
+  .horizontal-align {
+    align-items: center;
+    display: flex;
+    justify-content: space-between;
+  }
 
-<dom-module id="os-settings-smart-inputs-page">
-  <template>
-    <style include="settings-shared">
-      .bottom-pad {
-        padding: 0 0 var(--cr-section-vertical-padding) 0;
-      }
+  iron-icon {
+    --iron-icon-fill-color: var(--cros-icon-color-secondary);
+  }
 
-      .horizontal-align {
-        align-items: center;
-        display: flex;
-        justify-content: space-between;
-      }
+  .padded-section {
+    margin-top: var(--cr-section-vertical-margin);
+    padding: 0 var(--cr-section-padding);
+  }
 
-      iron-icon {
-        --iron-icon-fill-color: var(--cros-icon-color-secondary);
-      }
+</style>
 
-      .padded-section {
-        margin-top: var(--cr-section-vertical-margin);
-        padding: 0 var(--cr-section-padding);
-      }
-
-    </style>
-
-    <div route-path="default">
-      <template is="dom-if" if="[[allowAssistivePersonalInfo_]]">
-        <div id="assistPersonalInfo" class="padded-section">
-          <div aria-hidden="true">
-            $i18n{personalInfoSuggestionTitle}
-            <iron-icon id="help-icon" icon="cr:help-outline"></iron-icon>
-            <paper-tooltip for="help-icon" position="top"
-                fit-to-visible-bounds>
-              $i18n{personalInfoSuggestionHelpTooltip}
-            </paper-tooltip>
-          </div>
-          <div class="horizontal-align bottom-pad">
-            <div class="secondary" aria-hidden="true"
-                id="personalInfoSuggestionDescription">
-              $i18n{personalInfoSuggestionDescription}
-            </div>
-            <cr-toggle
-                checked="[[allowAssistivePersonalInfo_]]"
-                on-change="onPersonalInfoSuggestionToggled_"
-                aria-describedby="personalInfoSuggestionDescription"
-                deep-link-focus-id$=
-                    "[[Setting.kShowPersonalInformationSuggestions]]">
-            </cr-toggle>
-          </div>
-          <cr-link-row class="hr list-item"
-              label="$i18n{managePersonalInfo}"
-              on-click="onManagePersonalInfoClick_" external>
-          </cr-link-row>
+<div route-path="default">
+  <template is="dom-if" if="[[allowAssistivePersonalInfo_]]">
+    <div id="assistPersonalInfo" class="padded-section">
+      <div aria-hidden="true">
+        $i18n{personalInfoSuggestionTitle}
+        <iron-icon id="help-icon" icon="cr:help-outline"></iron-icon>
+        <paper-tooltip for="help-icon" position="top"
+            fit-to-visible-bounds>
+          $i18n{personalInfoSuggestionHelpTooltip}
+        </paper-tooltip>
+      </div>
+      <div class="horizontal-align bottom-pad">
+        <div class="secondary" aria-hidden="true"
+            id="personalInfoSuggestionDescription">
+          $i18n{personalInfoSuggestionDescription}
         </div>
-      </template>
-      <template is="dom-if" if="[[allowEmojiSuggestion_]]">
-        <settings-toggle-button id="emojiSuggestion" class="hr"
-            pref="{{prefs.assistive_input.emoji_suggestion_enabled}}"
-            label="$i18n{emojiSuggestionTitle}"
-            sub-label="$i18n{emojiSuggestionDescription}"
-            aria-label="$i18n{emojiSuggestionTitle}"
-            deep-link-focus-id$="[[Setting.kShowEmojiSuggestions]]">
-        </settings-toggle-button>
-      </template>
-      <template is="dom-if" if="[[allowPredictiveWriting_]]">
-        <settings-toggle-button id="predictiveWriting" class="hr"
-            pref="{{prefs.assistive_input.predictive_writing_enabled}}"
-            label="$i18n{predictiveWritingTitle}"
-            sub-label="$i18n{predictiveWritingDescription}"
-            aria-label="$i18n{predictiveWritingTitle}"
-            deep-link-focus-id$="[[Setting.kShowPredictiveWriting]]">
-        </settings-toggle-button>
-      </template>
+        <cr-toggle
+            checked="[[allowAssistivePersonalInfo_]]"
+            on-change="onPersonalInfoSuggestionToggled_"
+            aria-describedby="personalInfoSuggestionDescription"
+            deep-link-focus-id$=
+                "[[Setting.kShowPersonalInformationSuggestions]]">
+        </cr-toggle>
+      </div>
+      <cr-link-row class="hr list-item"
+          label="$i18n{managePersonalInfo}"
+          on-click="onManagePersonalInfoClick_" external>
+      </cr-link-row>
     </div>
   </template>
-  <script src="smart_inputs_page.js"></script>
-</dom-module>
+  <template is="dom-if" if="[[allowEmojiSuggestion_]]">
+    <settings-toggle-button id="emojiSuggestion" class="hr"
+        pref="{{prefs.assistive_input.emoji_suggestion_enabled}}"
+        label="$i18n{emojiSuggestionTitle}"
+        sub-label="$i18n{emojiSuggestionDescription}"
+        aria-label="$i18n{emojiSuggestionTitle}"
+        deep-link-focus-id$="[[Setting.kShowEmojiSuggestions]]">
+    </settings-toggle-button>
+  </template>
+  <template is="dom-if" if="[[allowPredictiveWriting_]]">
+    <settings-toggle-button id="predictiveWriting" class="hr"
+        pref="{{prefs.assistive_input.predictive_writing_enabled}}"
+        label="$i18n{predictiveWritingTitle}"
+        sub-label="$i18n{predictiveWritingDescription}"
+        aria-label="$i18n{predictiveWritingTitle}"
+        deep-link-focus-id$="[[Setting.kShowPredictiveWriting]]">
+    </settings-toggle-button>
+  </template>
+</div>
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.js b/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.js
index b3a0e82..47c68352 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.js
@@ -7,14 +7,29 @@
  * to provide users with assistive or expressive input options.
  */
 
+import '//resources/cr_elements/cr_toggle/cr_toggle.m.js';
+import '../../controls/settings_toggle_button.js';
+import '../../settings_shared_css.js';
+
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {loadTimeData} from '../../i18n_setup.js';
+import {Route, Router} from '../../router.js';
+import {DeepLinkingBehavior} from '../deep_linking_behavior.m.js';
+import {routes} from '../os_route.m.js';
+import {PrefsBehavior} from '../prefs_behavior.js';
+import {RouteObserverBehavior} from '../route_observer_behavior.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-smart-inputs-page',
 
   behaviors: [
     DeepLinkingBehavior,
     I18nBehavior,
     PrefsBehavior,
-    settings.RouteObserverBehavior,
+    RouteObserverBehavior,
   ],
 
   properties: {
@@ -63,12 +78,12 @@
   },
 
   /**
-   * @param {!settings.Route} route
-   * @param {!settings.Route} oldRoute
+   * @param {!Route} route
+   * @param {!Route} oldRoute
    */
   currentRouteChanged(route, oldRoute) {
     // Does not apply to this page.
-    if (route !== settings.routes.OS_LANGUAGES_SMART_INPUTS) {
+    if (route !== routes.OS_LANGUAGES_SMART_INPUTS) {
       return;
     }
 
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.html b/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.html
index 2d5ec40..826b243 100644
--- a/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.html
+++ b/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.html
@@ -329,7 +329,7 @@
     <!-- Secondary Accounts list -->
     <div id="outer" class="layout vertical nowrap" role="list">
       <template is="dom-repeat" id="account-list"
-          items="[[getAccounts_(accounts_)]]">
+          items="[[getSecondaryAccounts_(accounts_)]]">
         <div class="settings-box account-list-item" role="listitem">
 
           <div class="profile-icon"
@@ -367,31 +367,15 @@
             </cr-button>
           </template>
 
-          <!-- If this is the Device Account, display the management status -->
-          <template is="dom-if" if="[[item.isDeviceAccount]]">
-            <cr-tooltip-icon id="primaryAccountTooltip" aria-hidden="true"
-                icon-class="[[getPrimaryAccountTooltipIcon_(isChildUser_)]]"
-                class="tooltip-primary-account"
-                tooltip-text="[[getPrimaryAccountTooltip_(isChildUser_)]]"
-                icon-aria-label="[[getPrimaryAccountTooltip_(isChildUser_)]]">
-            </cr-tooltip-icon>
-            <span class="management-status"
-                aria-labelledby$="fullName-[[index]] email-[[index]]"
-                aria-describedby="primaryAccountTooltip">
-              [[getManagementLabel_(item)]]
-            </span>
-          </template>
-          <!-- Else, display a hamburger menu for removing the account -->
-          <template is="dom-if" if="[[!item.isDeviceAccount]]">
-            <cr-icon-button class="icon-more-vert"
-                title="[[getMoreActionsTitle_(item)]]"
-                aria-label="[[getMoreActionsTitle_(item)]]"
-                aria-describedby$="fullName-[[index]]
-                                   edu-account-label-[[index]]"
-                on-click="onAccountActionsMenuButtonTap_"
-                deep-link-focus-id$="[[Setting.kRemoveAccount]]">
-            </cr-icon-button>
-          </template>
+          <!-- Display a hamburger menu for removing the account -->
+          <cr-icon-button class="icon-more-vert"
+              title="[[getMoreActionsTitle_(item)]]"
+              aria-label="[[getMoreActionsTitle_(item)]]"
+              aria-describedby$="fullName-[[index]]
+                                  edu-account-label-[[index]]"
+              on-click="onAccountActionsMenuButtonTap_"
+              deep-link-focus-id$="[[Setting.kRemoveAccount]]">
+          </cr-icon-button>
         </div>
       </template>
 
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.js b/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.js
index 668793b..327f7fd 100644
--- a/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.js
+++ b/chrome/browser/resources/settings/chromeos/os_people_page/account_manager.js
@@ -169,24 +169,6 @@
   },
 
   /**
-   * @return {string} cr icon name.
-   * @private
-   */
-  getPrimaryAccountTooltipIcon_() {
-    return this.isChildUser_ ? 'cr20:kite' : 'cr:info-outline';
-  },
-
-  /**
-   * @return {string} tooltip text
-   * @private
-   */
-  getPrimaryAccountTooltip_() {
-    return this.isChildUser_ ?
-        this.i18n('accountManagerPrimaryAccountChildManagedTooltip') :
-        this.i18n('accountManagerPrimaryAccountTooltip');
-  },
-
-  /**
    * @param {string} iconUrl
    * @return {string} A CSS image-set for multiple scale factors.
    * @private
@@ -230,21 +212,6 @@
   },
 
   /**
-   * @param {!settings.Account} account
-   * @return {string} An appropriate management status label. e.g.
-   *    "Primary account" for unmanaged accounts, "Managed by <Domain>"
-   *    for Enterprise managed accounts etc.
-   * @private
-   */
-  getManagementLabel_(account) {
-    if (account.organization) {
-      return this.i18n('accountManagerManagedLabel', account.organization);
-    }
-
-    return this.i18n('accountManagerUnmanagedLabel');
-  },
-
-  /**
    * @return {string} icon
    * @private
    */
@@ -326,8 +293,7 @@
    * @return {!Array<settings.Account>} list of accounts.
    * @private
    */
-  getAccounts_() {
-    // TODO(crbug.com/1152711): rename the method to `getSecondaryAccounts_`.
+  getSecondaryAccounts_() {
     return this.accounts_.filter(account => !account.isDeviceAccount);
   },
 
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.gni b/chrome/browser/resources/settings/chromeos/os_settings.gni
index 73b3061..c0615ddf 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings.gni
+++ b/chrome/browser/resources/settings/chromeos/os_settings.gni
@@ -446,6 +446,16 @@
                                  "chrome/browser/resources/settings/chromeos/os_languages_page/languages_browser_proxy.html",
                                  "chrome/browser/resources/settings/chromeos/os_languages_page/languages.html",
                                  "chrome/browser/resources/settings/chromeos/os_languages_page/languages_types.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/input_method_options_page.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/input_method_util.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/languages_metrics_proxy.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/os_edit_dictionary_page.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_section.html",
+                                 "chrome/browser/resources/settings/chromeos/os_languages_page/smart_inputs_page.html",
                                  "chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_print_server_dialog.html",
                                  "chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_dialog.html",
                                  "chrome/browser/resources/settings/chromeos/os_printing_page/cups_add_printer_manually_dialog.html",
diff --git a/chrome/browser/resources/settings/people_page/sync_browser_proxy.ts b/chrome/browser/resources/settings/people_page/sync_browser_proxy.ts
index 2994e9d..0405153 100644
--- a/chrome/browser/resources/settings/people_page/sync_browser_proxy.ts
+++ b/chrome/browser/resources/settings/people_page/sync_browser_proxy.ts
@@ -118,6 +118,13 @@
   PASSPHRASE_FAILED = 'passphraseFailed',  // Error in the passphrase.
 }
 
+// WARNING: Keep synced with chrome/browser/ui/webui/settings/people_handler.cc.
+export enum TrustedVaultBannerState {
+  NOT_SHOWN = 0,
+  OFFER_OPT_IN = 1,
+  OPTED_IN = 2,
+}
+
 /**
  * Key to be used with localStorage.
  */
@@ -237,9 +244,9 @@
   sendSyncPrefsChanged(): void;
 
   /**
-   * Forces an offer-trusted-vault-opt-in-changed event to be fired.
+   * Forces a trusted-vault-banner-state-changed event to be fired.
    */
-  sendOfferTrustedVaultOptInChanged(): void;
+  sendTrustedVaultBannerStateChanged(): void;
 }
 
 export class SyncBrowserProxyImpl implements SyncBrowserProxy {
@@ -329,8 +336,8 @@
     chrome.send('SyncPrefsDispatch');
   }
 
-  sendOfferTrustedVaultOptInChanged() {
-    chrome.send('SyncOfferTrustedVaultOptInDispatch');
+  sendTrustedVaultBannerStateChanged() {
+    chrome.send('SyncTrustedVaultBannerStateDispatch');
   }
 
   static getInstance(): SyncBrowserProxy {
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.html b/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.html
index 6d3c80b..915043d 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.html
+++ b/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.html
@@ -6,6 +6,29 @@
     padding: 16px 24px;
   }
 
+  .managed-fragment {
+    /* Override cr-view-manager's default styling for view. */
+    bottom: initial;
+    grid-column-start: 1;
+    grid-row-start: 1;
+    left: initial;
+    position: unset;
+    right: initial;
+    top: initial;
+  }
+
+  #viewManager {
+    position: relative;
+  }
+
+  #viewManager > :not(.active) {
+    /* Restore cr-view-manager's absolute positioning for non-active elements,
+       so they overlap the active element. */
+    left: 0;
+    position: absolute;
+    top: 0;
+  }
+
   .visibility-hidden {
     visibility: hidden;
   }
@@ -18,63 +41,37 @@
     flex-flow: column;
     min-height: 432px;
   }
-
-  picture {
-    align-items: center;
-    display: flex;
-  }
 </style>
 <div class="privacy-review-card">
-  <template is="dom-if"
-      if="[[showFragment_(
-             privacyReviewStepEnum_.WELCOME, privacyReviewStep_)]]">
+  <cr-view-manager id="viewManager">
     <privacy-review-welcome-fragment id="[[privacyReviewStepEnum_.WELCOME]]"
-        prefs="{{prefs}}" on-start-button-click="onNextButtonClick_">
+        class="managed-fragment" prefs="{{prefs}}"
+        on-start-button-click="onNextButtonClick_" slot="view">
     </privacy-review-welcome-fragment>
-  </template>
-  <template is="dom-if"
-      if="[[showFragment_(privacyReviewStepEnum_.MSBB, privacyReviewStep_)]]">
     <privacy-review-msbb-fragment id="[[privacyReviewStepEnum_.MSBB]]"
-        prefs="{{prefs}}">
+        class="managed-fragment" prefs="{{prefs}}" slot="view">
     </privacy-review-msbb-fragment>
-  </template>
-  <template is="dom-if"
-      if="[[showFragment_(
-             privacyReviewStepEnum_.CLEAR_ON_EXIT, privacyReviewStep_)]]">
     <privacy-review-clear-on-exit-fragment
-        id="[[privacyReviewStepEnum_.CLEAR_ON_EXIT]]" prefs="{{prefs}}">
+        id="[[privacyReviewStepEnum_.CLEAR_ON_EXIT]]" class="managed-fragment"
+        prefs="{{prefs}}" slot="view">
     </privacy-review-clear-on-exit-fragment>
-  </template>
-  <template is="dom-if"
-      if="[[showFragment_(
-             privacyReviewStepEnum_.HISTORY_SYNC, privacyReviewStep_)]]">
     <privacy-review-history-sync-fragment
-        id="[[privacyReviewStepEnum_.HISTORY_SYNC]]" prefs="{{prefs}}">
+        id="[[privacyReviewStepEnum_.HISTORY_SYNC]]" class="managed-fragment"
+        prefs="{{prefs}}" slot="view">
     </privacy-review-history-sync-fragment>
-  </template>
-  <template is="dom-if"
-      if="[[showFragment_(
-             privacyReviewStepEnum_.SAFE_BROWSING, privacyReviewStep_)]]">
     <privacy-review-safe-browsing-fragment
-        id="[[privacyReviewStepEnum_.SAFE_BROWSING]]" prefs="{{prefs}}">
+        id="[[privacyReviewStepEnum_.SAFE_BROWSING]]" class="managed-fragment"
+        prefs="{{prefs}}" slot="view">
     </privacy-review-safe-browsing-fragment>
-  </template>
-  <template is="dom-if"
-      if="[[showFragment_(
-             privacyReviewStepEnum_.COOKIES, privacyReviewStep_)]]">
-    <privacy-review-cookies-fragment
-        id="[[privacyReviewStepEnum_.COOKIES]]" prefs="{{prefs}}">
+    <privacy-review-cookies-fragment id="[[privacyReviewStepEnum_.COOKIES]]"
+        class="managed-fragment" prefs="{{prefs}}" slot="view">
     </privacy-review-cookies-fragment>
-  </template>
-  <template is="dom-if"
-      if="[[showFragment_(
-             privacyReviewStepEnum_.COMPLETION, privacyReviewStep_)]]">
     <privacy-review-completion-fragment
-        id="[[privacyReviewStepEnum_.COMPLETION]]"
-        on-back-button-click="onBackButtonClick_"
-        on-leave-button-click="onNextButtonClick_">
+        id="[[privacyReviewStepEnum_.COMPLETION]]" class="managed-fragment"
+        on-leave-button-click="onNextButtonClick_"
+        on-back-button-click="onBackButtonClick_" slot="view">
     </privacy-review-completion-fragment>
-  </template>
+  </cr-view-manager>
   <template is="dom-if" if="[[showAnySettingFragment_(privacyReviewStep_)]]">
     <div id="settingFooter" class="footer hr">
       <cr-button id="backButton" role="button" on-click="onBackButtonClick_"
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.ts
index 056e25ca..c5bc2a4 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.ts
+++ b/chrome/browser/resources/settings/privacy_page/privacy_review/privacy_review_page.ts
@@ -11,6 +11,7 @@
 import 'chrome://resources/cr_elements/shared_style_css.m.js';
 import '../../prefs/prefs.js';
 import '../../settings_shared_css.js';
+import 'chrome://resources/cr_elements/cr_view_manager/cr_view_manager.js';
 import './privacy_review_clear_on_exit_fragment.js';
 import './privacy_review_completion_fragment.js';
 import './privacy_review_cookies_fragment.js';
@@ -20,6 +21,7 @@
 import './privacy_review_welcome_fragment.js';
 import './step_indicator.js';
 
+import {CrViewManagerElement} from 'chrome://resources/cr_elements/cr_view_manager/cr_view_manager.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {I18nMixin, I18nMixinInterface} from 'chrome://resources/js/i18n_mixin.js';
 import {WebUIListenerMixin, WebUIListenerMixinInterface} from 'chrome://resources/js/web_ui_listener_mixin.js';
@@ -37,11 +39,18 @@
 import {StepIndicatorModel} from './step_indicator.js';
 
 interface PrivacyReviewStepComponents {
-  onForwardNavigation(): void;
-  onBackNavigation?(): void;
+  nextStep?: PrivacyReviewStep;
+  onForwardNavigation?(): void;
+  previousStep?: PrivacyReviewStep;
   isAvailable(): boolean;
 }
 
+export interface SettingsPrivacyReviewPageElement {
+  $: {
+    viewManager: CrViewManagerElement,
+  },
+}
+
 const PrivacyReviewBase = RouteObserverMixin(WebUIListenerMixin(
                               I18nMixin(PrefsMixin(PolymerElement)))) as {
   new (): PolymerElement & I18nMixinInterface & WebUIListenerMixinInterface &
@@ -76,11 +85,12 @@
       },
 
       /**
-       * The current step in the privacy review flow.
+       * The current step in the privacy review flow, or `undefined` if the flow
+       * has not yet been initialized from query parameters.
        */
       privacyReviewStep_: {
         type: String,
-        value: PrivacyReviewStep.WELCOME,
+        value: undefined,
       },
 
       /**
@@ -107,6 +117,7 @@
   private syncBrowserProxy_: SyncBrowserProxy =
       SyncBrowserProxyImpl.getInstance();
   private syncStatus_: SyncStatus;
+  private animationsEnabled_: boolean = true;
 
   constructor() {
     super();
@@ -125,6 +136,10 @@
         (syncStatus: SyncStatus) => this.onSyncStatusChange_(syncStatus));
   }
 
+  disableAnimationsForTesting() {
+    this.animationsEnabled_ = false;
+  }
+
   /** RouteObserverBehavior */
   currentRouteChanged(newRoute: Route) {
     if (newRoute === routes.PRIVACY_REVIEW) {
@@ -144,9 +159,7 @@
       [
         PrivacyReviewStep.WELCOME,
         {
-          onForwardNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.MSBB);
-          },
+          nextStep: PrivacyReviewStep.MSBB,
           isAvailable: () => this.shouldShowWelcomeCard_(),
         },
       ],
@@ -156,30 +169,22 @@
           onForwardNavigation: () => {
             Router.getInstance().navigateToPreviousRoute();
           },
-          onBackNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.COOKIES, true);
-          },
+          previousStep: PrivacyReviewStep.COOKIES,
           isAvailable: () => true,
         },
       ],
       [
         PrivacyReviewStep.MSBB,
         {
-          onForwardNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.CLEAR_ON_EXIT);
-          },
+          nextStep: PrivacyReviewStep.CLEAR_ON_EXIT,
           isAvailable: () => true,
         },
       ],
       [
         PrivacyReviewStep.CLEAR_ON_EXIT,
         {
-          onForwardNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.HISTORY_SYNC);
-          },
-          onBackNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.MSBB, true);
-          },
+          nextStep: PrivacyReviewStep.HISTORY_SYNC,
+          previousStep: PrivacyReviewStep.MSBB,
           // TODO(crbug/1215630): Enable the CoE step when it's ready.
           isAvailable: () => false,
         },
@@ -187,38 +192,32 @@
       [
         PrivacyReviewStep.HISTORY_SYNC,
         {
-          onForwardNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.SAFE_BROWSING);
-          },
-          onBackNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.CLEAR_ON_EXIT, true);
-          },
-          isAvailable: () => this.isSyncOn_(),
+          nextStep: PrivacyReviewStep.SAFE_BROWSING,
+          previousStep: PrivacyReviewStep.CLEAR_ON_EXIT,
+          // Allow the history sync card to be shown while `syncStatus_` is
+          // unavailable. Otherwise we would skip it in
+          // `navigateForwardIfCurrentCardNoLongerAvailable` before
+          // `onSyncStatusChange_` is called asynchronously.
+          isAvailable: () => !this.syncStatus_ || this.isSyncOn_(),
         },
       ],
       [
         PrivacyReviewStep.SAFE_BROWSING,
         {
-          onForwardNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.COOKIES);
-          },
-          onBackNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.HISTORY_SYNC, true);
-          },
+          nextStep: PrivacyReviewStep.COOKIES,
+          previousStep: PrivacyReviewStep.HISTORY_SYNC,
           isAvailable: () => this.shouldShowSafeBrowsingCard_(),
         },
       ],
       [
         PrivacyReviewStep.COOKIES,
         {
+          nextStep: PrivacyReviewStep.COMPLETION,
           onForwardNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.COMPLETION);
             HatsBrowserProxyImpl.getInstance().trustSafetyInteractionOccurred(
                 TrustSafetyInteraction.COMPLETED_PRIVACY_GUIDE);
           },
-          onBackNavigation: () => {
-            this.navigateToCard_(PrivacyReviewStep.SAFE_BROWSING, true);
-          },
+          previousStep: PrivacyReviewStep.SAFE_BROWSING,
           isAvailable: () => this.shouldShowCookiesCard_(),
         },
       ],
@@ -228,23 +227,26 @@
   /** Handler for when the sync state is pushed from the browser. */
   private onSyncStatusChange_(syncStatus: SyncStatus) {
     this.syncStatus_ = syncStatus;
-    this.navigateToNextCardIfCurrentCardNoLongerAvailable();
+    this.navigateForwardIfCurrentCardNoLongerAvailable();
   }
 
   /** Update the privacy review state based on changed prefs. */
   private onPrefsChanged_() {
     // If this change resulted in the user no longer being in one of the
     // available states for the given card, we need to skip it.
-    this.navigateToNextCardIfCurrentCardNoLongerAvailable();
+    this.navigateForwardIfCurrentCardNoLongerAvailable();
   }
 
-  private navigateToNextCardIfCurrentCardNoLongerAvailable() {
+  private navigateForwardIfCurrentCardNoLongerAvailable() {
+    if (!this.privacyReviewStep_) {
+      // Not initialized.
+      return;
+    }
     if (!this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!
              .isAvailable()) {
       // This card is currently shown but is no longer available. Navigate to
       // the next card in the flow.
-      this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!
-          .onForwardNavigation();
+      this.navigateForward_(true);
     }
   }
 
@@ -256,27 +258,62 @@
     // to skip the welcome card in a previous flow, then navigate to the first
     // settings card instead
     if (Object.values(PrivacyReviewStep).includes(step as PrivacyReviewStep)) {
-      this.privacyReviewStep_ = step as PrivacyReviewStep;
+      this.navigateToCard_(step as PrivacyReviewStep, false, true);
     } else {
       // If no step has been specified, then navigate to the welcome step.
-      this.navigateToCard_(PrivacyReviewStep.WELCOME);
+      this.navigateToCard_(PrivacyReviewStep.WELCOME, false, false);
     }
   }
 
+  private onNextButtonClick_() {
+    this.navigateForward_(true);
+  }
+
+  private navigateForward_(playAnimation: boolean) {
+    const components =
+        this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!;
+    assert(components.onForwardNavigation || components.nextStep);
+    if (components.onForwardNavigation) {
+      components.onForwardNavigation();
+    }
+    if (components.nextStep) {
+      this.navigateToCard_(components.nextStep, false, playAnimation);
+    }
+  }
+
+  private onBackButtonClick_() {
+    this.navigateBackward_(true);
+  }
+
+  private navigateBackward_(playAnimation: boolean) {
+    this.navigateToCard_(
+        this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!
+            .previousStep!,
+        true, playAnimation);
+  }
+
   private navigateToCard_(
-      step: PrivacyReviewStep, isBackwardNavigation?: boolean) {
-    const nextState = this.privacyReviewStepToComponentsMap_.get(step)!;
-    if (!nextState.isAvailable()) {
+      step: PrivacyReviewStep, isBackwardNavigation: boolean,
+      playAnimation: boolean) {
+    if (step === this.privacyReviewStep_) {
+      return;
+    }
+    this.privacyReviewStep_ = step;
+    if (!this.privacyReviewStepToComponentsMap_.get(step)!.isAvailable()) {
       // This card is currently not available. Navigate to the next one, or
       // the previous one if this was a back navigation.
       if (isBackwardNavigation) {
-        if (nextState.onBackNavigation) {
-          nextState.onBackNavigation();
-        }
+        this.navigateBackward_(playAnimation);
       } else {
-        nextState.onForwardNavigation();
+        this.navigateForward_(playAnimation);
       }
     } else {
+      if (this.animationsEnabled_ && playAnimation) {
+        this.$.viewManager.switchView(this.privacyReviewStep_);
+      } else {
+        this.$.viewManager.switchView(
+            this.privacyReviewStep_, 'no-animation', 'no-animation');
+      }
       Router.getInstance().updateRouteParams(
           new URLSearchParams('step=' + step));
       // TODO(crbug/1215630): Programmatically put the focus to the
@@ -284,22 +321,14 @@
     }
   }
 
-  private onNextButtonClick_() {
-    this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!
-        .onForwardNavigation();
-  }
-
   private computeBackButtonClass_(): string {
-    return (
-        this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!
-                    .onBackNavigation === undefined ?
-            'visibility-hidden' :
-            '');
-  }
-
-  private onBackButtonClick_() {
-    this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!
-        .onBackNavigation!();
+    if (!this.privacyReviewStep_) {
+      // Not initialized.
+      return '';
+    }
+    const components =
+        this.privacyReviewStepToComponentsMap_.get(this.privacyReviewStep_)!;
+    return (components.previousStep === undefined ? 'visibility-hidden' : '');
   }
 
   // TODO(rainhard): This is made public only because it is accessed by tests.
@@ -327,8 +356,8 @@
   }
 
   private isSyncOn_(): boolean {
-    return !!this.syncStatus_ && !!this.syncStatus_.signedIn &&
-        !this.syncStatus_.hasError;
+    assert(this.syncStatus_);
+    return !!this.syncStatus_.signedIn && !this.syncStatus_.hasError;
   }
 
   private shouldShowWelcomeCard_(): boolean {
@@ -350,10 +379,6 @@
         currentSafeBrowsingSetting === SafeBrowsingSetting.STANDARD;
   }
 
-  private showFragment_(step: PrivacyReviewStep): boolean {
-    return this.privacyReviewStep_ === step;
-  }
-
   private showAnySettingFragment_(): boolean {
     return this.privacyReviewStep_ !== PrivacyReviewStep.WELCOME &&
         this.privacyReviewStep_ !== PrivacyReviewStep.COMPLETION;
diff --git a/chrome/browser/resources/settings/settings.ts b/chrome/browser/resources/settings/settings.ts
index 336de67..b0ec606 100644
--- a/chrome/browser/resources/settings/settings.ts
+++ b/chrome/browser/resources/settings/settings.ts
@@ -55,7 +55,7 @@
 export {SettingsPeoplePageElement} from './people_page/people_page.js';
 export {ProfileInfoBrowserProxyImpl} from './people_page/profile_info_browser_proxy.js';
 export {MAX_SIGNIN_PROMO_IMPRESSION, SettingsSyncAccountControlElement} from './people_page/sync_account_control.js';
-export {PageStatus, StatusAction, StoredAccount, SyncBrowserProxy, SyncBrowserProxyImpl, SyncPrefs, syncPrefsIndividualDataTypes, SyncStatus} from './people_page/sync_browser_proxy.js';
+export {PageStatus, StatusAction, StoredAccount, SyncBrowserProxy, SyncBrowserProxyImpl, SyncPrefs, syncPrefsIndividualDataTypes, SyncStatus, TrustedVaultBannerState} from './people_page/sync_browser_proxy.js';
 export {prefToString, stringToPrefValue} from './prefs/pref_util.js';
 export {SettingsPrefsElement} from './prefs/prefs.js';
 export {PrefsMixin, PrefsMixinInterface} from './prefs/prefs_mixin.js';
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 0d95cd4..e621e553 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -3150,6 +3150,7 @@
       "//chrome/app:generated_resources",
       "//chromeos/strings",
       "//components/account_manager_core:account_manager_core",
+      "//ui/chromeos/styles:cros_styles_views",
     ]
   }
 
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
index 609ecb5..48806cf 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -55,6 +55,7 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
 import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.theme.ThemeUtils;
 import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
@@ -72,7 +73,6 @@
 import org.chromium.ui.base.PageTransition;
 import org.chromium.ui.base.WindowAndroid;
 import org.chromium.ui.interpolators.BakedBezierInterpolator;
-import org.chromium.ui.util.ColorUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -928,22 +928,18 @@
      */
     @VisibleForTesting
     /* package */ void updateBrandedColorScheme() {
-        // TODO(crbug.com/1114183): Unify light and dark color logic in chrome and make it clear
-        // whether the foreground or background color is dark.
-        final boolean useDarkForegroundColors =
-                !ColorUtils.shouldUseLightForegroundOnBackground(getPrimaryBackgroundColor());
         final @BrandedColorScheme int brandedColorScheme =
                 OmniboxResourceProvider.getBrandedColorScheme(mContext,
                         mLocationBarDataProvider.isIncognito(), getPrimaryBackgroundColor());
 
         mLocationBarLayout.setDeleteButtonTint(
-                ChromeColors.getPrimaryIconTint(mContext, !useDarkForegroundColors));
+                ThemeUtils.getThemedToolbarIconTint(mContext, brandedColorScheme));
         // If the URL changed colors and is not focused, update the URL to account for the new
         // color scheme.
         if (mUrlCoordinator.setBrandedColorScheme(brandedColorScheme) && !isUrlBarFocused()) {
             updateUrl();
         }
-        mStatusCoordinator.setUseDarkForegroundColors(useDarkForegroundColors);
+        mStatusCoordinator.setBrandedColorScheme(brandedColorScheme);
         if (mAutocompleteCoordinator != null) {
             mAutocompleteCoordinator.updateVisualsForState(brandedColorScheme);
         }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java
index 4635ff0..0748d771 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java
@@ -666,7 +666,7 @@
         mMediator.updateBrandedColorScheme();
 
         verify(mLocationBarLayout).setDeleteButtonTint(any(ColorStateList.class));
-        verify(mStatusCoordinator).setUseDarkForegroundColors(true);
+        verify(mStatusCoordinator).setBrandedColorScheme(BrandedColorScheme.LIGHT_BRANDED_THEME);
         verify(mAutocompleteCoordinator)
                 .updateVisualsForState(BrandedColorScheme.LIGHT_BRANDED_THEME);
     }
@@ -679,7 +679,7 @@
         mMediator.updateBrandedColorScheme();
 
         verify(mLocationBarLayout).setDeleteButtonTint(any(ColorStateList.class));
-        verify(mStatusCoordinator).setUseDarkForegroundColors(false);
+        verify(mStatusCoordinator).setBrandedColorScheme(BrandedColorScheme.DARK_BRANDED_THEME);
         verify(mAutocompleteCoordinator)
                 .updateVisualsForState(BrandedColorScheme.DARK_BRANDED_THEME);
     }
@@ -693,7 +693,7 @@
         mMediator.updateBrandedColorScheme();
 
         verify(mLocationBarLayout).setDeleteButtonTint(any(ColorStateList.class));
-        verify(mStatusCoordinator).setUseDarkForegroundColors(false);
+        verify(mStatusCoordinator).setBrandedColorScheme(BrandedColorScheme.INCOGNITO);
         verify(mAutocompleteCoordinator).updateVisualsForState(BrandedColorScheme.INCOGNITO);
     }
 
@@ -706,7 +706,7 @@
         mMediator.updateBrandedColorScheme();
 
         verify(mLocationBarLayout).setDeleteButtonTint(any(ColorStateList.class));
-        verify(mStatusCoordinator).setUseDarkForegroundColors(true);
+        verify(mStatusCoordinator).setBrandedColorScheme(BrandedColorScheme.APP_DEFAULT);
         verify(mAutocompleteCoordinator).updateVisualsForState(BrandedColorScheme.APP_DEFAULT);
     }
 
@@ -723,7 +723,7 @@
         verify(mUrlCoordinator)
                 .setUrlBarData(
                         urlBarData, UrlBar.ScrollType.SCROLL_TO_TLD, SelectionState.SELECT_ALL);
-        verify(mStatusCoordinator).setUseDarkForegroundColors(false);
+        verify(mStatusCoordinator).setBrandedColorScheme(BrandedColorScheme.DARK_BRANDED_THEME);
         verify(mAutocompleteCoordinator)
                 .updateVisualsForState(BrandedColorScheme.DARK_BRANDED_THEME);
     }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtils.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtils.java
index b7c95de..5dc42d1 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtils.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtils.java
@@ -23,6 +23,7 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.theme.ThemeUtils;
 import org.chromium.chrome.browser.ui.favicon.FaviconHelper;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
 import org.chromium.components.embedder_support.util.UrlUtilities;
 import org.chromium.components.search_engines.TemplateUrlService;
@@ -145,14 +146,15 @@
      * circumstances, such as: no logo url found, network/cache error, etc.
      *
      * @param resources Provides access to Android resources.
-     * @param inNightMode Whether the device is currently in night mode, used to tint icons.
+     * @param brandedColorScheme The {@link BrandedColorScheme}, used to tint icons.
      * @param profile The current profile. When null, falls back to locally-provided icons.
      * @param templateUrlService The current templateUrlService. When null, falls back to
      *         locally-provided icons.
      * @param callback How the bitmap will be returned to the caller.
      */
-    public void getSearchEngineLogo(@NonNull Resources resources, boolean inNightMode,
-            @Nullable Profile profile, @Nullable TemplateUrlService templateUrlService,
+    public void getSearchEngineLogo(@NonNull Resources resources,
+            @BrandedColorScheme int brandedColorScheme, @Nullable Profile profile,
+            @Nullable TemplateUrlService templateUrlService,
             @NonNull Callback<StatusIconResource> callback) {
         // In the following cases, we fallback to the search loupe:
         // - Either of the nullable dependencies are null.
@@ -162,7 +164,7 @@
         // then we serve the Google icon we have locally.
         // Otherwise, the search engine is non-Google and we go to the network to fetch it.
         if (profile == null || templateUrlService == null || needToCheckForSearchEnginePromo()) {
-            callback.onResult(getSearchLoupeResource(inNightMode));
+            callback.onResult(getSearchLoupeResource(brandedColorScheme));
             return;
         } else if (templateUrlService.isDefaultSearchEngineGoogle()) {
             callback.onResult(new StatusIconResource(R.drawable.ic_logo_googleg_20dp, 0));
@@ -176,7 +178,7 @@
 
         String logoUrl = getSearchLogoUrl(templateUrlService);
         if (logoUrl == null) {
-            callback.onResult(getSearchLoupeResource(inNightMode));
+            callback.onResult(getSearchLoupeResource(brandedColorScheme));
             recordEvent(Events.FETCH_FAILED_NULL_URL);
             return;
         }
@@ -192,7 +194,7 @@
         boolean willCallbackBeCalled = mFaviconHelper.getLocalFaviconImageForURL(
                 profile, logoUrl, logoSizePixels, (image, iconUrl) -> {
                     if (image == null) {
-                        callback.onResult(getSearchLoupeResource(inNightMode));
+                        callback.onResult(getSearchLoupeResource(brandedColorScheme));
                         recordEvent(Events.FETCH_FAILED_RETURNED_BITMAP_NULL);
                         return;
                     }
@@ -201,16 +203,15 @@
                     recordEvent(Events.FETCH_SUCCESS);
                 });
         if (!willCallbackBeCalled) {
-            callback.onResult(getSearchLoupeResource(inNightMode));
+            callback.onResult(getSearchLoupeResource(brandedColorScheme));
             recordEvent(Events.FETCH_FAILED_FAVICON_HELPER_ERROR);
         }
     }
 
     @VisibleForTesting
-    StatusIconResource getSearchLoupeResource(boolean inNightMode) {
-        return new StatusIconResource(R.drawable.ic_search,
-                inNightMode ? R.color.default_icon_color_secondary_tint_list
-                            : ThemeUtils.getThemedToolbarIconTintRes(/* useLight= */ true));
+    StatusIconResource getSearchLoupeResource(@BrandedColorScheme int brandedColorScheme) {
+        return new StatusIconResource(
+                R.drawable.ic_search, ThemeUtils.getThemedToolbarIconTintRes(brandedColorScheme));
     }
 
     /** Returns whether the search engine promo is complete. */
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java
index 21d28d3..719b406 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java
@@ -48,6 +48,7 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.theme.ThemeUtils;
 import org.chromium.chrome.browser.ui.favicon.FaviconHelper;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
 import org.chromium.components.search_engines.TemplateUrlService;
@@ -135,7 +136,7 @@
         StatusIconResource expected = new StatusIconResource(LOGO_URL, mBitmap, 0);
 
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
         verify(mFaviconHelper)
                 .getLocalFaviconImageForURL(
@@ -155,12 +156,12 @@
     @Test
     public void getSearchEngineLogo_nullProfileOrTemplateUrlService() {
         StatusIconResource expected =
-                mSearchEngineLogoUtils.getSearchLoupeResource(/* inNightMode= */ false);
+                mSearchEngineLogoUtils.getSearchLoupeResource(BrandedColorScheme.APP_DEFAULT);
 
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, null, mTemplateUrlService, mCallback);
+                BrandedColorScheme.APP_DEFAULT, null, mTemplateUrlService, mCallback);
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), null, mCallback);
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), null, mCallback);
 
         verify(mCallback, times(2)).onResult(expected);
     }
@@ -171,7 +172,7 @@
         doReturn(true).when(mTemplateUrlService).isDefaultSearchEngineGoogle();
 
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
         verify(mCallback).onResult(expected);
     }
@@ -181,7 +182,7 @@
         StatusIconResource expected = new StatusIconResource(LOGO_URL, mBitmap, 0);
 
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
         verify(mFaviconHelper)
                 .getLocalFaviconImageForURL(
@@ -189,7 +190,7 @@
         FaviconHelper.FaviconImageCallback faviconCallback = mCallbackCaptor.getValue();
         faviconCallback.onFaviconAvailable(mBitmap, JUnitTestGURLs.getGURL(LOGO_URL));
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
 
         verify(mCallback, times(2)).onResult(expected);
@@ -207,11 +208,11 @@
     @Test
     public void getSearchEngineLogo_nullUrl() {
         StatusIconResource expected =
-                mSearchEngineLogoUtils.getSearchLoupeResource(/* inNightMode= */ false);
+                mSearchEngineLogoUtils.getSearchLoupeResource(BrandedColorScheme.APP_DEFAULT);
 
         doReturn(null).when(mTemplateUrlService).getUrlForSearchQuery(any());
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
 
         verify(mCallback).onResult(eq(expected));
@@ -226,14 +227,14 @@
     @Test
     public void getSearchEngineLogo_faviconHelperError() {
         StatusIconResource expected =
-                mSearchEngineLogoUtils.getSearchLoupeResource(/* inNightMode= */ false);
+                mSearchEngineLogoUtils.getSearchLoupeResource(BrandedColorScheme.APP_DEFAULT);
 
         when(mFaviconHelper.getLocalFaviconImageForURL(
                      any(), anyString(), anyInt(), mCallbackCaptor.capture()))
                 .thenReturn(false);
 
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
 
         verify(mCallback).onResult(expected);
@@ -248,10 +249,10 @@
     @Test
     public void getSearchEngineLogo_returnedBitmapNull() {
         StatusIconResource expected =
-                mSearchEngineLogoUtils.getSearchLoupeResource(/* inNightMode= */ false);
+                mSearchEngineLogoUtils.getSearchLoupeResource(BrandedColorScheme.APP_DEFAULT);
 
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
-                /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
+                BrandedColorScheme.APP_DEFAULT, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
         verify(mFaviconHelper)
                 .getLocalFaviconImageForURL(
@@ -271,14 +272,15 @@
     @Test
     public void getSearchLoupeResource() {
         StatusIconResource expected = new StatusIconResource(
-                R.drawable.ic_search, R.color.default_icon_color_secondary_tint_list);
-        Assert.assertEquals(
-                expected, mSearchEngineLogoUtils.getSearchLoupeResource(/* inNightMode= */ true));
+                R.drawable.ic_search, R.color.default_icon_color_white_tint_list);
+        Assert.assertEquals(expected,
+                mSearchEngineLogoUtils.getSearchLoupeResource(
+                        BrandedColorScheme.DARK_BRANDED_THEME));
 
         expected = new StatusIconResource(
                 R.drawable.ic_search, ThemeUtils.getThemedToolbarIconTintRes(/* useLight */ true));
-        Assert.assertEquals(
-                expected, mSearchEngineLogoUtils.getSearchLoupeResource(/* inNightMode= */ false));
+        Assert.assertEquals(expected,
+                mSearchEngineLogoUtils.getSearchLoupeResource(BrandedColorScheme.INCOGNITO));
     }
 
     @Test
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java
index 6e94f520..9d807ef 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java
@@ -26,6 +26,7 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.IncognitoStateProvider;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.chrome.browser.user_education.IPHCommandBuilder;
 import org.chromium.chrome.browser.user_education.UserEducationHelper;
 import org.chromium.components.embedder_support.util.UrlConstants;
@@ -170,11 +171,10 @@
     }
 
     /**
-     * @param useDarkForegroundColors Whether dark foreground colors should be for the status icon
-     *                                and text.
+     * @param brandedColorScheme The {@link BrandedColorScheme} to use for the status icon and text.
      */
-    public void setUseDarkForegroundColors(boolean useDarkForegroundColors) {
-        mMediator.setUseDarkColors(useDarkForegroundColors);
+    public void setBrandedColorScheme(@BrandedColorScheme int brandedColorScheme) {
+        mMediator.setBrandedColorScheme(brandedColorScheme);
 
         // TODO(ender): remove this once icon selection has complete set of
         // corresponding properties (for tinting etc).
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
index bc9800f..b656a95 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
@@ -29,9 +29,11 @@
 import org.chromium.chrome.browser.omnibox.status.StatusProperties.PermissionIconResource;
 import org.chromium.chrome.browser.omnibox.status.StatusProperties.StatusIconResource;
 import org.chromium.chrome.browser.omnibox.status.StatusView.IconTransitionType;
+import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider;
 import org.chromium.chrome.browser.page_info.ChromePageInfoHighlight;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.theme.ThemeUtils;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
 import org.chromium.components.browser_ui.site_settings.SiteSettingsUtil;
 import org.chromium.components.content_settings.ContentSettingValues;
@@ -61,7 +63,6 @@
     private final Supplier<Profile> mProfileSupplier;
     private final Supplier<MerchantTrustSignalsCoordinator>
             mMerchantTrustSignalsCoordinatorSupplier;
-    private boolean mDarkTheme;
     private boolean mUrlHasFocus;
     private boolean mVerboseStatusSpaceAvailable;
     private boolean mPageIsPaintPreview;
@@ -78,6 +79,7 @@
 
     private @ConnectionSecurityLevel int mPageSecurityLevel;
 
+    private @BrandedColorScheme int mBrandedColorScheme;
     private @DrawableRes int mSecurityIconRes;
     private @DrawableRes int mSecurityIconTintRes;
     private @StringRes int mSecurityIconDescriptionRes;
@@ -389,11 +391,11 @@
     }
 
     /**
-     * Toggle between dark and light UI color theme.
+     * Set the {@link BrandedColorScheme}.
      */
-    void setUseDarkColors(boolean useDarkColors) {
-        if (mDarkTheme != useDarkColors) {
-            mDarkTheme = useDarkColors;
+    void setBrandedColorScheme(@BrandedColorScheme int brandedColorScheme) {
+        if (mBrandedColorScheme != brandedColorScheme) {
+            mBrandedColorScheme = brandedColorScheme;
             updateColorTheme();
         }
     }
@@ -435,22 +437,24 @@
      * Update color theme for all status components.
      */
     private void updateColorTheme() {
+        // TODO(https://crbug.com/1275726): Update the colors here once we have the specs.
+        final boolean isDark = !OmniboxResourceProvider.isDarkMode(mBrandedColorScheme);
         @ColorRes
-        int separatorColor = mDarkTheme ? R.color.divider_line_bg_color_dark
-                                        : R.color.divider_line_bg_color_light;
+        int separatorColor =
+                isDark ? R.color.divider_line_bg_color_dark : R.color.divider_line_bg_color_light;
 
         @ColorRes
         int textColor = 0;
         if (mPageIsPaintPreview) {
-            textColor = mDarkTheme ? R.color.locationbar_status_preview_color
-                                   : R.color.locationbar_status_preview_color_light;
+            textColor = isDark ? R.color.locationbar_status_preview_color
+                               : R.color.locationbar_status_preview_color_light;
         } else if (mPageIsOffline) {
-            textColor = mDarkTheme ? R.color.locationbar_status_offline_color
-                                   : R.color.locationbar_status_offline_color_light;
+            textColor = isDark ? R.color.locationbar_status_offline_color
+                               : R.color.locationbar_status_offline_color_light;
         }
 
         @ColorRes
-        int tintColor = ThemeUtils.getThemedToolbarIconTintRes(!mDarkTheme);
+        int tintColor = ThemeUtils.getThemedToolbarIconTintRes(mBrandedColorScheme);
 
         mModel.set(StatusProperties.SEPARATOR_COLOR_RES, separatorColor);
         mNavigationIconTintRes = tintColor;
@@ -577,9 +581,9 @@
         // If the current url text is a valid url, then swap the dse icon for a globe.
         if (!mUrlBarTextIsSearch) {
             resourceCallback.onResult(new StatusIconResource(R.drawable.ic_globe_24dp,
-                    ThemeUtils.getThemedToolbarIconTintRes(/* useLight= */ !mDarkTheme)));
+                    ThemeUtils.getThemedToolbarIconTintRes(mBrandedColorScheme)));
         } else {
-            mSearchEngineLogoUtils.getSearchEngineLogo(mResources, mDarkTheme,
+            mSearchEngineLogoUtils.getSearchEngineLogo(mResources, mBrandedColorScheme,
                     mProfileSupplier.get(), mTemplateUrlServiceSupplier.get(), resourceCallback);
         }
     }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
index d986081c7..bf2c89ee 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
@@ -300,8 +300,8 @@
      * Update the visuals of the autocomplete UI.
      * @param brandedColorScheme The {@link @BrandedColorScheme}.
      */
-    public void updateVisualsForState(@BrandedColorScheme int colorScheme) {
-        mMediator.updateVisualsForState(colorScheme);
+    public void updateVisualsForState(@BrandedColorScheme int brandedColorScheme) {
+        mMediator.updateVisualsForState(brandedColorScheme);
     }
 
     /**
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
index e0c5c72..d496e38 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">نسخ اسم المستخدم</translation>
 <translation id="1592864538817356322">الحماية العادية:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{إزالة عنصر واحد محدد}zero{إزالة # عنصر محدد}two{إزالة عنصرين (#) محددين}few{إزالة # عناصر محددة}many{إزالة # عنصرًا محددًا}other{إزالة # عنصر محدد}}</translation>
+<translation id="1633659023549081553">‏يمكنك الاطّلاع على المحتوى الجديد في صفحة Chrome الرئيسية.</translation>
 <translation id="1641113438599504367">التصفح الآمن</translation>
 <translation id="164269334534774161">أنت تعرض نسخة بلا اتصال لهذه الصفحة من <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">السجل</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">اسحب شريط التمرير إلى أن تتمكّن من قراءة هذا النص بسهولة. يجب أن يظهر النص بهذا الحجم على الأقل بعد النقر مرّتين على أي فقرة.</translation>
 <translation id="2323763861024343754">مساحة تخزين الموقع</translation>
 <translation id="2328985652426384049">تعذر تسجيل الدخول</translation>
+<translation id="2342601525305963189">‏معلومات بشأن استخدام متصفّح Chrome:</translation>
 <translation id="234265804618409743">تعذّر فتح الكاميرا. حدث خطأ ما.</translation>
 <translation id="2345671828921229300">للبحث، انقر مع الاستمرار على كلمة معيّنة.</translation>
 <translation id="2349710944427398404">‏إجمالي البيانات المُستخدَمة من قِبل Chrome، بما في ذلك الحسابات والإشارات المرجعية والإعدادات المحفوظة</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">‏يتم إرسال عناوين URL التي تزورها إلى Google</translation>
 <translation id="2536728043171574184">عرض نسخة بلا اتصال من هذه الصفحة</translation>
 <translation id="2546283357679194313">ملفات تعريف الارتباط وبيانات المواقع</translation>
+<translation id="2558692642259318568">لتصفُّح الويب بدون حفظ أي نشاط على جهازك، يمكنك استخدام وضع التصفُّح المتخفي.</translation>
 <translation id="2561519700418191927">معاينات الفيديوهات</translation>
 <translation id="2567385386134582609">صورة</translation>
 <translation id="2567545343356994513">يوفّر لك هذا الخيار حماية استباقية سريعة من الإضافات وعمليات التنزيل والمواقع الإلكترونية الضارة.</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">رقم البطاقة</translation>
 <translation id="2625189173221582860">تم نسخ كلمة المرور</translation>
 <translation id="2631006050119455616">تم توفيرها</translation>
+<translation id="2634905176438867146">‏تعرَّف على طريقة ضبط Chrome كمتصفِّح تلقائي.</translation>
 <translation id="2645657967708199252">قد يؤدي اتصالك بالإنترنت من خلال <ph name="CONNECTION_TYPE" /> إلى بطء عمليّة التنزيل</translation>
 <translation id="2647434099613338025">إضافة لغة</translation>
 <translation id="2649068648233607930">إدارة متصفِّحك من خلال <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">يتم حاليًا تتبُّع السعر</translation>
 <translation id="3037517125981011456">‏عرض رسائل مطالبة تسجيل الدخول إلى Chrome</translation>
 <translation id="3046945242843292318">الوصول إلى هذا الموقع الإلكتروني بسرعة أكبر في المرة القادمة</translation>
+<translation id="3055259925215945098">تم نقل الإشارة المرجعية</translation>
 <translation id="305593374596241526">‏تحديد الموقع الجغرافي متوقف، يمكنك تفعيله من <ph name="BEGIN_LINK" />إعدادات Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{إشارة مرجعية <ph name="BOOKMARKS_COUNT_ONE" />}zero{<ph name="BOOKMARKS_COUNT_MANY" /> إشارات مرجعية}two{إشارتان مرجعيتان (<ph name="BOOKMARKS_COUNT_MANY" />)}few{<ph name="BOOKMARKS_COUNT_MANY" /> إشارات مرجعية}many{<ph name="BOOKMARKS_COUNT_MANY" /> إشارةً مرجعيةً}other{<ph name="BOOKMARKS_COUNT_MANY" /> إشارة مرجعية}}</translation>
 <translation id="3062802207422175757">‏اقرأ مقالات حول مواضيع تهمّك على متصفِّح Chrome.</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">حفظ على الجهاز</translation>
 <translation id="3236059992281584593">يتبقى دقيقة واحدة</translation>
 <translation id="3237087289225714896">التحميل المُسبق العادي:</translation>
+<translation id="3237433641417325993">انتقِل إلى الأسفل للاطّلاع على المقالات المقتَرحة.</translation>
 <translation id="3244271242291266297">الشهر</translation>
 <translation id="3245429137663807393">‏في حال مشاركة تقارير استخدام Chrome أيضًا، ستتضمّن هذه التقارير عناوين URL التي تزورها</translation>
 <translation id="3250563604907490871">‏ستظهر أوصاف الصور عند الاتصال بشبكة Wi‑Fi.</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">‏لا تتوفر لمتصفح Chrome إمكانية الوصول إلى المورد المطلوب.</translation>
 <translation id="4837753911714442426">فتح الخيارات لطباعة الصفحة</translation>
 <translation id="4842092870884894799">عرض نافذة إنشاء كلمة المرور المنبثقة</translation>
+<translation id="4842515939542199281">للبحث باستخدام صوتك، انقر على رمز الميكروفون.</translation>
 <translation id="4850886885716139402">عرض</translation>
 <translation id="4860895144060829044">اتصال</translation>
 <translation id="4864369630010738180">جارٍ تسجيل الدخول...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">بيانات الاستخدام الموسَّعة</translation>
 <translation id="509429900233858213">حدث خطأ.</translation>
 <translation id="510275257476243843">يتبقى ساعة واحدة</translation>
+<translation id="5115811374190515607">إلى "<ph name="PRODUCT_NAME" />"</translation>
 <translation id="5118713593561876160">الاهتمامات</translation>
 <translation id="5123685120097942451">علامة تبويب "التصفُّح المتخفي"</translation>
 <translation id="5126510351761255129">التحقق من بطاقتك</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">‏يحتاج Chrome للوصول إلى مساحة التخزين لتنزيل الملفات.</translation>
 <translation id="5749237766298580851">غير مفعّل <ph name="SEPARATOR" /> (غير مستحسَن)</translation>
 <translation id="5752232708629533680">‏مشاركة ملف GIF فقط</translation>
+<translation id="5753139477036638699">‏يمكنك استخدام صوتك للبحث في متصفِّح Chrome.</translation>
 <translation id="5754350196967618083">يتعذّر إعادة تحميل ميزة "اقتراحات"</translation>
 <translation id="5763382633136178763">علامات تبويب التصفح المتخفي</translation>
 <translation id="5763514718066511291">‏النقر لنسخ عنوان URL لهذا التطبيق</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">‏تسجيل الدخول إلى Chrome، تم فتح البطاقة السفلية.</translation>
 <translation id="6814033694018386318">‏المعلومات التي تتم مشاركتها مع Google</translation>
 <translation id="6817747507826986771">يتيح لك هذا الزر مشاركة هذه الصفحة بسرعة. ولتعديل هذا الاختصار، انقر مع الاستمرار.</translation>
+<translation id="6819199143469632133">‏للوصول إلى منتجات Google على جميع أجهزتك، ما عليك سوى تسجيل الدخول.</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">تم اختيار علامة التبويب <ph name="TAB_TITLE" />.</translation>
 <translation id="6828070228333235514">إيقاف ميزة تتبُّع السعر</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">تمّت استعادة <ph name="ITEM_TITLE" />.</translation>
 <translation id="7029390216614421513">ضَع رمز الاستجابة السريعة أو الرمز الشريطي في هذا الإطار.</translation>
 <translation id="7029809446516969842">كلمات المرور</translation>
+<translation id="7037830628447527439">‏سجِّل الدخول إلى Chrome باستخدام حسابك على Google.</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">هل تريد عرض أوصاف الصور؟</translation>
 <translation id="7055152154916055070">تم حظر إعادة توجيه:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188">تعذَّر تنزيل حزمة اللغة <ph name="LANG" />. يُرجى إعادة المحاولة لاحقًا.</translation>
 <translation id="8951232171465285730">‏لقد وفر Chrome لك <ph name="MEGABYTES" /> ميغابايت</translation>
 <translation id="8955719471735800169">الرجوع إلى أعلى</translation>
+<translation id="8964479563882643397">انقر على القائمة لفتح علامة تبويب جديدة في وضع التصفّح المتخفي.</translation>
 <translation id="8965591936373831584">في الانتظار</translation>
 <translation id="8967427617812342790">إضافة إلى قائمة القراءة</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{سيتم إغلاق <ph name="INCOGNITO_TAB_COUNT" /> علامة تبويب في وضع التصفّح المتخفي وعلامة تبويب واحدة (<ph name="TAB_COUNT_ONE" />) أخرى.}zero{سيتم إغلاق <ph name="INCOGNITO_TAB_COUNT" /> علامة تبويب في وضع التصفّح المتخفي و<ph name="TAB_COUNT_MANY" /> علامة تبويب أخرى.}two{سيتم إغلاق <ph name="INCOGNITO_TAB_COUNT" /> علامة تبويب في وضع التصفّح المتخفي و علامتَي تبويب (<ph name="TAB_COUNT_MANY" />) أُخريان.}few{سيتم إغلاق <ph name="INCOGNITO_TAB_COUNT" /> علامة تبويب في وضع التصفّح المتخفي و<ph name="TAB_COUNT_MANY" /> علامات تبويب أخرى.}many{سيتم إغلاق <ph name="INCOGNITO_TAB_COUNT" /> علامة تبويب في وضع التصفّح المتخفي و<ph name="TAB_COUNT_MANY" /> علامة تبويب أخرى.}other{سيتم إغلاق <ph name="INCOGNITO_TAB_COUNT" /> علامة تبويب في وضع التصفّح المتخفي و<ph name="TAB_COUNT_MANY" /> علامة تبويب أخرى.}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
index 9800fa7..935cf333f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Капіраваць імя карыстальніка</translation>
 <translation id="1592864538817356322">Стандартная абарона:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Выдаліць 1 выбраны элемент}one{Выдаліць # выбраны элемент}few{Выдаліць # выбраныя элементы}many{Выдаліць # выбраных элементаў}other{Выдаліць # выбранага элемента}}</translation>
+<translation id="1633659023549081553">Праглядайце рэкамендацыі новага змесціва на галоўнай старонцы Chrome</translation>
 <translation id="1641113438599504367">Бяспечны прагляд</translation>
 <translation id="164269334534774161">Вы праглядаеце пазасеткавую копію гэтай старонкі ад <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Гісторыя</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Перацягвайце паўзунок, пакуль гэты тэкст не будзе зручна чытаць. Пасля падвойнага націскання на абзац тэкст павінен быць як мінімум такім вялікім.</translation>
 <translation id="2323763861024343754">Сховішча сайта</translation>
 <translation id="2328985652426384049">Не ўдалося ўвайсці ў сістэму</translation>
+<translation id="2342601525305963189">Парады адносна Chrome:</translation>
 <translation id="234265804618409743">Не ўдалося адкрыць камеру. Нешта пайшло не так.</translation>
 <translation id="2345671828921229300">Каб выканаць пошук, дакраніцеся да слова і ўтрымлівайце яго</translation>
 <translation id="2349710944427398404">Агульны аб'ём даных Chrome, у тым ліку закладкі, уліковыя запісы і захаваныя налады</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL-адрасы старонак, якія вы наведваеце, адпраўляюцца ў Google.</translation>
 <translation id="2536728043171574184">Вы праглядаеце пазасеткавую копію гэтай старонкі</translation>
 <translation id="2546283357679194313">Файлы сookie і даныя сайтаў</translation>
+<translation id="2558692642259318568">Каб звесткі пра вашы дзеянні не захоўваліся на прыладзе пры праглядзе старонак, уключыце рэжым інкогніта</translation>
 <translation id="2561519700418191927">Перадпрагляд відэа</translation>
 <translation id="2567385386134582609">ВІДАРЫС</translation>
 <translation id="2567545343356994513">Больш хуткая актыўная абарона ад небяспечных вэб-сайтаў, спамповак і пашырэнняў</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Нумар карткі</translation>
 <translation id="2625189173221582860">Пароль скапіраваны</translation>
 <translation id="2631006050119455616">Сэканомлена</translation>
+<translation id="2634905176438867146">Даведайцеся, як зрабіць Chrome стандартным браўзерам</translation>
 <translation id="2645657967708199252">Спампоўванне праз падключэнне <ph name="CONNECTION_TYPE" /> можа быць маруднейшым</translation>
 <translation id="2647434099613338025">Дадаць мову</translation>
 <translation id="2649068648233607930">Браўзерам кіруе <ph name="DOMAIN" />.</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Цана адсочваецца</translation>
 <translation id="3037517125981011456">Будуць паказвацца запыты ўваходу ў Chrome</translation>
 <translation id="3046945242843292318">У наступны раз вы зможаце перайсці на гэты сайт хутчэй</translation>
+<translation id="3055259925215945098">Закладка перамешчана</translation>
 <translation id="305593374596241526">Вызначэнне месцазнаходжання выключана. Уключыце яго ў <ph name="BEGIN_LINK" />наладах Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> закладка}one{<ph name="BOOKMARKS_COUNT_MANY" /> закладка}few{<ph name="BOOKMARKS_COUNT_MANY" /> закладкі}many{<ph name="BOOKMARKS_COUNT_MANY" /> закладак}other{<ph name="BOOKMARKS_COUNT_MANY" /> закладкі}}</translation>
 <translation id="3062802207422175757">Цікавыя для вас артыкулы ў Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Захаваць на прыладзе</translation>
 <translation id="3236059992281584593">Засталася 1 хвіліна</translation>
 <translation id="3237087289225714896">Стандартная перадзагрузка:</translation>
+<translation id="3237433641417325993">Каб паглядзець прапанаваныя артыкулы, прагартайце ўніз</translation>
 <translation id="3244271242291266297">ММ</translation>
 <translation id="3245429137663807393">Калі вы абагульваеце справаздачы пра выкарыстанне браўзера Chrome, у іх уключаюцца URL-адрасы наведаных вамі старонак.</translation>
 <translation id="3250563604907490871">Апісанні відарысаў стануць даступнымі пры падключэнні да Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome не мае доступу да запытанай крыніцы.</translation>
 <translation id="4837753911714442426">Адкрыць параметры друку старонкі</translation>
 <translation id="4842092870884894799">Паказана выплыўное акно для стварэння пароля</translation>
+<translation id="4842515939542199281">Каб выканаць галасавы пошук, націсніце значок мікрафона</translation>
 <translation id="4850886885716139402">Праглядзець</translation>
 <translation id="4860895144060829044">Выклік</translation>
 <translation id="4864369630010738180">Уваход...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Пашыраныя даныя пра выкарыстанне</translation>
 <translation id="509429900233858213">Адбылася памылка.</translation>
 <translation id="510275257476243843">Засталася 1 гадзіна</translation>
+<translation id="5115811374190515607">куды: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Інтарэсы</translation>
 <translation id="5123685120097942451">Укладка інкогніта</translation>
 <translation id="5126510351761255129">Спраўджанне карткі</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Для спампоўвання файлаў Chrome патрабуецца доступ да сховішча.</translation>
 <translation id="5749237766298580851">Выключана <ph name="SEPARATOR" /> Не рэкамендуецца</translation>
 <translation id="5752232708629533680">Абагуліць толькі файл GIF</translation>
+<translation id="5753139477036638699">Вы можаце выкарыстоўваць галасавыя каманды для пошуку ў Chrome</translation>
 <translation id="5754350196967618083">Не ўдаецца абнавіць рэкамендацыі</translation>
 <translation id="5763382633136178763">Укладкі інкогніта</translation>
 <translation id="5763514718066511291">Дакраніцеся, каб скапіраваць URL-адрас гэтай праграмы</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Аркуш "Увайсці ў Chrome" адкрыты.</translation>
 <translation id="6814033694018386318">Даныя, якія абагульваюцца з Google</translation>
 <translation id="6817747507826986771">Хуткае абагульванне гэтай старонкі. Каб змяніць функцыю гэтай кнопкі, націсніце на яе і ўтрымлівайце.</translation>
+<translation id="6819199143469632133">Увайдзіце ва ўліковы запіс, каб карыстацца прадуктамі Google на некалькіх прыладах</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, укладка, выбрана</translation>
 <translation id="6828070228333235514">Спыніць адсочванне цаны</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Адноўлена: <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Змясціце QR-код або штрыхкод у гэтай рамцы.</translation>
 <translation id="7029809446516969842">Паролі</translation>
+<translation id="7037830628447527439">Увайдзіце ў Chrome праз свой Уліковы запіс Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Атрымліваць апісанні відарысаў?</translation>
 <translation id="7055152154916055070">Перанакіраванне заблакіравана:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – не ўдалося спампаваць гэты моўны пакет. Паўтарыце спробу пазней.</translation>
 <translation id="8951232171465285730">Chrome сэканоміў вам <ph name="MEGABYTES" /> МБ</translation>
 <translation id="8955719471735800169">Наверх</translation>
+<translation id="8964479563882643397">Каб адкрыць новую ўкладку ў рэжыме інкогніта, адкрыйце меню</translation>
 <translation id="8965591936373831584">у стане чакання</translation>
 <translation id="8967427617812342790">Дадаць у спіс чытання</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Будуць закрыты ўкладкі: <ph name="INCOGNITO_TAB_COUNT" /> у рэжыме інкогніта і яшчэ <ph name="TAB_COUNT_ONE" />}one{Будуць закрыты ўкладкі: <ph name="INCOGNITO_TAB_COUNT" /> у рэжыме інкогніта і яшчэ <ph name="TAB_COUNT_MANY" />}few{Будуць закрыты ўкладкі: <ph name="INCOGNITO_TAB_COUNT" /> у рэжыме інкогніта і яшчэ <ph name="TAB_COUNT_MANY" />}many{Будуць закрыты ўкладкі: <ph name="INCOGNITO_TAB_COUNT" /> у рэжыме інкогніта і яшчэ <ph name="TAB_COUNT_MANY" />}other{Будуць закрыты ўкладкі: <ph name="INCOGNITO_TAB_COUNT" /> у рэжыме інкогніта і яшчэ <ph name="TAB_COUNT_MANY" />}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
index 840e8234..bbd8f74 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Копиране на потребителското име</translation>
 <translation id="1592864538817356322">Стандартна защита:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Премахване на 1 избран елемент}other{Премахване на # избрани елемента}}</translation>
+<translation id="1633659023549081553">Открийте ново съдържание на началната страница на Chrome</translation>
 <translation id="1641113438599504367">Безопасно сърфиране</translation>
 <translation id="164269334534774161">Преглеждате офлайн копие на тази страница, създадено на <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">История</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Преместете плъзгача, докато можете да четете удобно това. Текстът трябва да изглежда поне толкова голям след двукратно докосване на абзац.</translation>
 <translation id="2323763861024343754">Данни от сайтове</translation>
 <translation id="2328985652426384049">Влизането в профила не е възможно</translation>
+<translation id="2342601525305963189">Съвети за Chrome:</translation>
 <translation id="234265804618409743">Камерата не може да се отвори. Нещо се обърка.</translation>
 <translation id="2345671828921229300">За да търсите, докоснете и задръжте дума</translation>
 <translation id="2349710944427398404">Общо място в хранилището, което се използва от Chrome, включително за профили, отметки и запазени настройки</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Посещаваните от вас URL адреси се изпращат до Google</translation>
 <translation id="2536728043171574184">Преглеждате офлайн копие на страницата</translation>
 <translation id="2546283357679194313">„Бисквитки“ и данни за сайтове</translation>
+<translation id="2558692642259318568">За да сърфирате, без активността да се запазва на устройството ви, изпробвайте режим „инкогнито“</translation>
 <translation id="2561519700418191927">Визуализиране на видеоклипове</translation>
 <translation id="2567385386134582609">ИЗОБРАЖЕНИЕ</translation>
 <translation id="2567545343356994513">По-бърза, изпреварваща защита срещу опасни уебсайтове, изтеглени файлове и разширения</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Номер на картата</translation>
 <translation id="2625189173221582860">Паролата е копирана</translation>
 <translation id="2631006050119455616">Спестени</translation>
+<translation id="2634905176438867146">Научете как да зададете Chrome като браузър по подразбиране</translation>
 <translation id="2645657967708199252">Вашата <ph name="CONNECTION_TYPE" /> връзка може да забавя изтеглянето</translation>
 <translation id="2647434099613338025">Добавяне на език</translation>
 <translation id="2649068648233607930">Браузърът ви се управлява от <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Цената се проследява</translation>
 <translation id="3037517125981011456">Показва подкани за влизане в Chrome</translation>
 <translation id="3046945242843292318">Стигнете до този сайт по-бързо следващия път</translation>
+<translation id="3055259925215945098">Отметката бе преместена</translation>
 <translation id="305593374596241526">Местоположението е изключено. Включете го от <ph name="BEGIN_LINK" />настройките на Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> отметка}other{<ph name="BOOKMARKS_COUNT_MANY" /> отметки}}</translation>
 <translation id="3062802207422175757">Статии, свързани с интересите ви, в Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Запазване в устройството</translation>
 <translation id="3236059992281584593">Остава 1 мин</translation>
 <translation id="3237087289225714896">Стандартно предварително зареждане:</translation>
+<translation id="3237433641417325993">Превъртете надолу, за да видите предложени статии</translation>
 <translation id="3244271242291266297">ММ</translation>
 <translation id="3245429137663807393">Ако споделяте и отчети за употребата на Chrome, те ще включват посещаваните от вас URL адреси</translation>
 <translation id="3250563604907490871">Описанията на изображенията ще продължат да се изтеглят, когато се свържете с Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome няма достъп до заявения ресурс.</translation>
 <translation id="4837753911714442426">Отваряне на опциите за отпечатване на страницата</translation>
 <translation id="4842092870884894799">Изскачащият прозорец за генериране на пароли е показан</translation>
+<translation id="4842515939542199281">За да търсите с гласа си, докоснете иконата на микрофон</translation>
 <translation id="4850886885716139402">Изглед</translation>
 <translation id="4860895144060829044">Обаждане</translation>
 <translation id="4864369630010738180">Извършва се влизане...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Разширени данни за употребата</translation>
 <translation id="509429900233858213">Възникна грешка.</translation>
 <translation id="510275257476243843">Остава 1 час</translation>
+<translation id="5115811374190515607">до <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Интереси</translation>
 <translation id="5123685120097942451">Раздел в режим „инкогнито“</translation>
 <translation id="5126510351761255129">Потвърдете картата</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome се нуждае от достъп до хранилището, за да изтегля файлове.</translation>
 <translation id="5749237766298580851">Изключено <ph name="SEPARATOR" /> Не се препоръчва</translation>
 <translation id="5752232708629533680">Споделяне само на GIF файла</translation>
+<translation id="5753139477036638699">Можете да използвате гласа си, за да търсите в Chrome</translation>
 <translation id="5754350196967618083">Не може да се опресни Discover</translation>
 <translation id="5763382633136178763">Раздели в режим „инкогнито“</translation>
 <translation id="5763514718066511291">Докоснете, за да копирате URL адреса за това приложение</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Вход в Chrome – отворено.</translation>
 <translation id="6814033694018386318">Какво споделяте с Google</translation>
 <translation id="6817747507826986771">Бързо споделяне на страницата. За да редактирате този пряк път, докоснете и задръжте.</translation>
+<translation id="6819199143469632133">За да получите достъп до нещата си в Google на всички устройства, влезте в профила си</translation>
 <translation id="6820686453637990663">Код за сигурност</translation>
 <translation id="6824899148643461612">Избрахте раздела <ph name="TAB_TITLE" /></translation>
 <translation id="6828070228333235514">Проследяване на цената: Спиране</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Файлът „<ph name="ITEM_TITLE" />“ бе възстановен</translation>
 <translation id="7029390216614421513">Разположете QR кода или баркода в тази рамка</translation>
 <translation id="7029809446516969842">Пароли</translation>
+<translation id="7037830628447527439">Влезте в Chrome с профила си в Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Искате ли да получавате описания на изображенията?</translation>
 <translation id="7055152154916055070">Блокирано бе пренасочване:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – този език не бе изтеглен. Опитайте отново по-късно.</translation>
 <translation id="8951232171465285730">Chrome ви спести <ph name="MEGABYTES" /> МБ</translation>
 <translation id="8955719471735800169">Обратно в началото</translation>
+<translation id="8964479563882643397">За да отворите нов раздел в режим „инкогнито“, използвайте менюто</translation>
 <translation id="8965591936373831584">изчаква</translation>
 <translation id="8967427617812342790">Добавяне към списъка за четене</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Следните раздели ще бъдат затворени: <ph name="INCOGNITO_TAB_COUNT" /> в режим „инкогнито“ и още <ph name="TAB_COUNT_ONE" />}other{Следните раздели ще бъдат затворени: <ph name="INCOGNITO_TAB_COUNT" /> в режим „инкогнито“ и още <ph name="TAB_COUNT_MANY" />}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
index 7eeeb9cd..5301b75 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Copia el nom d'usuari</translation>
 <translation id="1592864538817356322">Protecció estàndard:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Suprimeix 1 element seleccionat}other{Suprimeix # elements seleccionats}}</translation>
+<translation id="1633659023549081553">Descobreix contingut nou a la pàgina d'inici de Chrome</translation>
 <translation id="1641113438599504367">Navegació segura</translation>
 <translation id="164269334534774161">Es mostra una còpia sense connexió d'aquesta pàgina creada el dia <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historial</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Arrossega el control lliscant fins que puguis llegir aquest text còmodament. El text ha de ser almenys així de gran després de tocar dos cops un paràgraf.</translation>
 <translation id="2323763861024343754">Emmagatzematge del lloc web</translation>
 <translation id="2328985652426384049">No es pot iniciar la sessió</translation>
+<translation id="2342601525305963189">Consells de Chrome:</translation>
 <translation id="234265804618409743">No es pot obrir la càmera. S'ha produït un error.</translation>
 <translation id="2345671828921229300">Per fer una cerca, mantén premuda una paraula</translation>
 <translation id="2349710944427398404">Dades totals utilitzades per Chrome, com ara comptes, adreces d'interès i opcions de configuració desades</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Els URL que visites s'envien a Google</translation>
 <translation id="2536728043171574184">S'està mostrant una còpia sense connexió d'aquesta pàgina</translation>
 <translation id="2546283357679194313">Dades de llocs web i galetes</translation>
+<translation id="2558692642259318568">Per navegar sense desar l'activitat al teu dispositiu, prova el mode d'incògnit</translation>
 <translation id="2561519700418191927">Previsualitzacions de vídeo</translation>
 <translation id="2567385386134582609">IMATGE</translation>
 <translation id="2567545343356994513">Protecció més ràpida i proactiva contra llocs web, baixades i extensions perillosos</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Número de targeta</translation>
 <translation id="2625189173221582860">S'ha copiat la contrasenya</translation>
 <translation id="2631006050119455616">Dades estalviades</translation>
+<translation id="2634905176438867146">Informació sobre com pots configurar Chrome com a navegador predeterminat</translation>
 <translation id="2645657967708199252">La connexió <ph name="CONNECTION_TYPE" /> pot alentir la baixada</translation>
 <translation id="2647434099613338025">Afegeix un idioma</translation>
 <translation id="2649068648233607930">El navegador està gestionat per <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Estàs fent un seguiment del preu</translation>
 <translation id="3037517125981011456">Mostra sol·licituds per iniciar la sessió a Chrome</translation>
 <translation id="3046945242843292318">Arriba a aquest lloc web més ràpidament la propera vegada</translation>
+<translation id="3055259925215945098">S'ha mogut l'adreça d'interès</translation>
 <translation id="305593374596241526">La ubicació està desactivada; activa-la a la <ph name="BEGIN_LINK" />configuració d'Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> adreça d'interès}other{<ph name="BOOKMARKS_COUNT_MANY" /> adreces d'interès}}</translation>
 <translation id="3062802207422175757">Articles relacionats amb els teus interessos a Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Desa al dispositiu</translation>
 <translation id="3236059992281584593">Queda 1 minut</translation>
 <translation id="3237087289225714896">Càrrega prèvia estàndard:</translation>
+<translation id="3237433641417325993">Desplaça't cap avall per veure els articles suggerits</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Si també comparteixes els informes d'ús de Chrome, aquests informes inclouen els URL que visites</translation>
 <translation id="3250563604907490871">Les descripcions de les imatges es reprendran quan et connectis a la Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome no té accés al recurs sol·licitat.</translation>
 <translation id="4837753911714442426">Obre les opcions per imprimir la pàgina</translation>
 <translation id="4842092870884894799">Es mostra la finestra emergent de generació de contrasenyes</translation>
+<translation id="4842515939542199281">Per fer cerques amb la veu, toca el micròfon</translation>
 <translation id="4850886885716139402">Mostra</translation>
 <translation id="4860895144060829044">Truca</translation>
 <translation id="4864369630010738180">S'està iniciant la sessió...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Dades d'ús ampliades</translation>
 <translation id="509429900233858213">S'ha produït un error.</translation>
 <translation id="510275257476243843">Queda 1 hora</translation>
+<translation id="5115811374190515607">a <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Interessos</translation>
 <translation id="5123685120097942451">Pestanya d'incògnit</translation>
 <translation id="5126510351761255129">Verifica la targeta</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome necessita accedir a l'emmagatzematge per poder baixar fitxers.</translation>
 <translation id="5749237766298580851">Desactivada <ph name="SEPARATOR" /> Opció no recomanada</translation>
 <translation id="5752232708629533680">Comparteix només el GIF</translation>
+<translation id="5753139477036638699">Pots utilitzar la veu per fer cerques a Chrome</translation>
 <translation id="5754350196967618083">Discover no est pot actualitzar</translation>
 <translation id="5763382633136178763">Pestanyes d'incògnit</translation>
 <translation id="5763514718066511291">Toca per copiar l'URL d'aquesta aplicació</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">S'ha obert Inicia la sessió a Chrome.</translation>
 <translation id="6814033694018386318">Què comparteixes amb Google</translation>
 <translation id="6817747507826986771">Comparteix ràpidament aquesta pàgina. Mantingues premuda aquesta drecera per editar-la.</translation>
+<translation id="6819199143469632133">Per accedir al teu contingut de Google en diferents dispositius, inicia la sessió</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">Pestanya <ph name="TAB_TITLE" /> seleccionada</translation>
 <translation id="6828070228333235514">Atura el seguiment del preu</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> s'ha restaurat</translation>
 <translation id="7029390216614421513">Situa el codi QR o el codi de barres dins d'aquest marc.</translation>
 <translation id="7029809446516969842">Contrasenyes</translation>
+<translation id="7037830628447527439">Inicia la sessió a Chrome amb el teu Compte de Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Vols obtenir descripcions de les imatges?</translation>
 <translation id="7055152154916055070">S'ha bloquejat la redirecció:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" />: no s'ha pogut baixar aquest idioma. Torna-ho a provar més tard.</translation>
 <translation id="8951232171465285730">Chrome t'ha estalviat <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Torna a dalt</translation>
+<translation id="8964479563882643397">Per obrir una pestanya d'incògnit nova, obre el menú</translation>
 <translation id="8965591936373831584">pendent</translation>
 <translation id="8967427617812342790">Afegeix a la llista de lectura</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Es tancaran <ph name="INCOGNITO_TAB_COUNT" /> pestanya d'incògnit i <ph name="TAB_COUNT_ONE" /> de normal.}other{Es tancaran <ph name="INCOGNITO_TAB_COUNT" /> pestanyes d'incògnit i <ph name="TAB_COUNT_MANY" /> de normals.}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
index 37f1d383..11ba4a0a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopírovat uživatelské jméno</translation>
 <translation id="1592864538817356322">Standardní ochrana:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Odstranit jednu vybranou položku}few{Odstranit # vybrané položky}many{Odstranit # vybrané položky}other{Odstranit # vybraných položek}}</translation>
+<translation id="1633659023549081553">Objevte nový obsah na domovské stránce Chromu</translation>
 <translation id="1641113438599504367">Bezpečné prohlížení</translation>
 <translation id="164269334534774161">Prohlížíte si offline kopii této stránky z <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historie</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Přetahujte posuvník tak dlouho, dokud nebudete moci pohodlně přečíst tento text. Po dvojitém klepnutí na odstavec by měl být text alespoň takto velký.</translation>
 <translation id="2323763861024343754">Úložiště webů</translation>
 <translation id="2328985652426384049">Přihlášení se nezdařilo</translation>
+<translation id="2342601525305963189">Tipy k Chromu:</translation>
 <translation id="234265804618409743">Kameru nelze otevřít. Něco se pokazilo.</translation>
 <translation id="2345671828921229300">Chcete-li vyhledávat, přidržte slovo</translation>
 <translation id="2349710944427398404">Celkové množství dat využívané prohlížečem Chrome, včetně účtů, záložek a uložených nastavení</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Do Googlu se odesílají adresy URL, které navštěvujete</translation>
 <translation id="2536728043171574184">Prohlížíte offline kopii stránky</translation>
 <translation id="2546283357679194313">Soubory cookie a data webových stránek</translation>
+<translation id="2558692642259318568">Pokud nechcete, aby se vaše aktivita při procházení ukládala do zařízení, vyzkoušejte anonymní režim</translation>
 <translation id="2561519700418191927">Náhledy videí</translation>
 <translation id="2567385386134582609">OBRÁZEK</translation>
 <translation id="2567545343356994513">Rychlejší, proaktivní ochrana před nebezpečnými weby, soubory ke stažení a rozšířeními</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Číslo karty</translation>
 <translation id="2625189173221582860">Heslo bylo zkopírováno</translation>
 <translation id="2631006050119455616">Uloženo</translation>
+<translation id="2634905176438867146">Přečtěte si, jak Chrome nastavit jako výchozí prohlížeč</translation>
 <translation id="2645657967708199252">Vaše připojení <ph name="CONNECTION_TYPE" /> může zpomalovat stahování</translation>
 <translation id="2647434099613338025">Přidat jazyk</translation>
 <translation id="2649068648233607930">Prohlížeč je spravován doménou <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Cena sledována</translation>
 <translation id="3037517125981011456">Zobrazuje výzvy k přihlášení do Chromu</translation>
 <translation id="3046945242843292318">Příště tento web můžete mít při ruce</translation>
+<translation id="3055259925215945098">Záložka byla přesunuta</translation>
 <translation id="305593374596241526">Určování polohy je vypnuté, zapnete jej v <ph name="BEGIN_LINK" />nastavení zařízení Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> záložka}few{<ph name="BOOKMARKS_COUNT_MANY" /> záložky}many{<ph name="BOOKMARKS_COUNT_MANY" /> záložky}other{<ph name="BOOKMARKS_COUNT_MANY" /> záložek}}</translation>
 <translation id="3062802207422175757">Články o vašich zájmech v Chromu</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Uložit do zařízení</translation>
 <translation id="3236059992281584593">Zbývá: 1 min</translation>
 <translation id="3237087289225714896">Standardní předběžné načítání:</translation>
+<translation id="3237433641417325993">Pokud chcete zobrazit navrhované články, přejděte dolů</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Pokud také sdílíte přehledy využití Chromu, budou zahrnovat adresy URL, které navštěvujete</translation>
 <translation id="3250563604907490871">Práce s popisy obrázků bude pokračovat, až se připojíte k Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome k požadovanému zdroji nemá přístup.</translation>
 <translation id="4837753911714442426">Otevřít možnosti tisku stránky</translation>
 <translation id="4842092870884894799">Je zobrazeno vyskakovací okno generování hesla</translation>
+<translation id="4842515939542199281">Pokud chcete vyhledávat hlasově, klepněte na mikrofon</translation>
 <translation id="4850886885716139402">Zobrazit</translation>
 <translation id="4860895144060829044">Volat</translation>
 <translation id="4864369630010738180">Přihlašování...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Rozšířené údaje o využití</translation>
 <translation id="509429900233858213">Došlo k chybě.</translation>
 <translation id="510275257476243843">Zbývá: 1 h</translation>
+<translation id="5115811374190515607">do: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Zájmy</translation>
 <translation id="5123685120097942451">Anonymní karta</translation>
 <translation id="5126510351761255129">Ověřte svou kartu</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Aby bylo možné stahovat soubory, Chrome potřebuje přístup k úložišti.</translation>
 <translation id="5749237766298580851">Vypnuto <ph name="SEPARATOR" /> Nedoporučuje se</translation>
 <translation id="5752232708629533680">Sdílet pouze GIF</translation>
+<translation id="5753139477036638699">V Chromu můžete vyhledávat hlasově</translation>
 <translation id="5754350196967618083">Kanál Objevit nelze obnovit</translation>
 <translation id="5763382633136178763">Anonymní karty</translation>
 <translation id="5763514718066511291">Klepnutím zkopírujete adresu URL této aplikace</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Přihlášení do Chromu, otevřeno.</translation>
 <translation id="6814033694018386318">Co sdílíte s Googlem</translation>
 <translation id="6817747507826986771">Rychle tuto stránku sdílet. Pokud tuto zkratku chcete upravit, podržte ji.</translation>
+<translation id="6819199143469632133">Pokud své věci ve službách Google chcete mít na všech zařízeních, přihlaste se</translation>
 <translation id="6820686453637990663">Bezpečnostní kód platební karty (CVC)</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, karta, vybráno</translation>
 <translation id="6828070228333235514">Ukončit sledování ceny</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Obnoveno: <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Do tohoto rámce umístěte QR kód nebo čárový kód.</translation>
 <translation id="7029809446516969842">Hesla</translation>
+<translation id="7037830628447527439">Přihlaste se do Chromu pomocí svého účtu Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Zobrazovat popisy obrázků?</translation>
 <translation id="7055152154916055070">Bylo zablokováno přesměrování:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – Tento jazyk se nepodařilo stáhnout. Zkuste to znovu později.</translation>
 <translation id="8951232171465285730">Chrome vám ušetřil <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Zpět na začátek</translation>
+<translation id="8964479563882643397">Pokud chcete otevřít novou anonymní kartu, otevřete nabídku</translation>
 <translation id="8965591936373831584">nevyřízeno</translation>
 <translation id="8967427617812342790">Přidat do seznamu četby</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Zavře se <ph name="INCOGNITO_TAB_COUNT" /> anonymní a <ph name="TAB_COUNT_ONE" /> další karta}few{Zavřou se <ph name="INCOGNITO_TAB_COUNT" /> anonymní a <ph name="TAB_COUNT_MANY" /> další karty}many{Zavře se <ph name="INCOGNITO_TAB_COUNT" /> anonymní a <ph name="TAB_COUNT_MANY" /> další karty}other{Zavře se <ph name="INCOGNITO_TAB_COUNT" /> anonymních a <ph name="TAB_COUNT_MANY" /> dalších karet}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
index 09e5676..1eacc75f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopiér brugernavnet</translation>
 <translation id="1592864538817356322">Standardbeskyttelse:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Fjern 1 valgt element}one{Fjern # valgt element}other{Fjern # valgte elementer}}</translation>
+<translation id="1633659023549081553">Find nyt indhold via Chromes startside</translation>
 <translation id="1641113438599504367">Beskyttet browsing</translation>
 <translation id="164269334534774161">Du ser en offlinekopi af denne side fra <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historik</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Træk i skyderen, indtil du kan nemt læse dette. Teksten som minimum have denne størrelse, når du har trykket to gange på et afsnit.</translation>
 <translation id="2323763861024343754">Websitelagerplads</translation>
 <translation id="2328985652426384049">Det er ikke muligt at logge ind</translation>
+<translation id="2342601525305963189">Tips til Chrome:</translation>
 <translation id="234265804618409743">Dit kamera kan ikke åbnes. Noget gik galt.</translation>
 <translation id="2345671828921229300">Hold et ord nede for at søge</translation>
 <translation id="2349710944427398404">Samlet mængde data, som Chrome anvender, herunder konti, bogmærker og gemte indstillinger</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Webadresser, du besøger, sendes til Google</translation>
 <translation id="2536728043171574184">Du ser en offlinekopi af denne side</translation>
 <translation id="2546283357679194313">Cookies og websitedata</translation>
+<translation id="2558692642259318568">Prøv inkognitotilstand, hvis du vil surfe, uden at din aktivitet gemmes på enheden</translation>
 <translation id="2561519700418191927">Forhåndsvisning af videoer</translation>
 <translation id="2567385386134582609">BILLEDE</translation>
 <translation id="2567545343356994513">Hurtigere proaktiv beskyttelse mod skadelige websites, downloads og udvidelser</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kortnummer</translation>
 <translation id="2625189173221582860">Adgangskoden er kopieret</translation>
 <translation id="2631006050119455616">Sparet</translation>
+<translation id="2634905176438867146">Se, hvordan du angiver Chrome som standardbrowser</translation>
 <translation id="2645657967708199252">Din <ph name="CONNECTION_TYPE" />-forbindelse kan gøre downloadprocessen langsommere</translation>
 <translation id="2647434099613338025">Tilføj sprog</translation>
 <translation id="2649068648233607930">Din browser administreres af <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Der holdes øje med prisen</translation>
 <translation id="3037517125981011456">Viser anmodninger om at logge ind i Chrome</translation>
 <translation id="3046945242843292318">Nå hurtigere frem til dette website næste gang</translation>
+<translation id="3055259925215945098">Bogmærket blev flyttet</translation>
 <translation id="305593374596241526">Placering er slået fra. Du kan aktivere den i <ph name="BEGIN_LINK" />Android-indstillingerne<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> bogmærke}one{<ph name="BOOKMARKS_COUNT_MANY" /> bogmærke}other{<ph name="BOOKMARKS_COUNT_MANY" /> bogmærker}}</translation>
 <translation id="3062802207422175757">Artikler om dine interesser i Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Gem på enheden</translation>
 <translation id="3236059992281584593">1 minut tilbage</translation>
 <translation id="3237087289225714896">Standardforudindlæsning:</translation>
+<translation id="3237433641417325993">Rul ned for at se foreslåede artikler</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Hvis du også deler Chrome-brugsrapporter, omfatter de pågældende rapporter de webadresser, du besøger</translation>
 <translation id="3250563604907490871">Billedbeskrivelserne genoptages, når du opretter forbindelse til Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome har ikke adgang til den ressource, du anmoder om.</translation>
 <translation id="4837753911714442426">Åbn valgmuligheder for udskrivning af siden</translation>
 <translation id="4842092870884894799">Viser pop op for generering af adgangskoder</translation>
+<translation id="4842515939542199281">Tryk på mikrofonen for at søge ved hjælp af stemmen</translation>
 <translation id="4850886885716139402">Vis</translation>
 <translation id="4860895144060829044">Ring op</translation>
 <translation id="4864369630010738180">Logger ind...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Udvidede brugsdata</translation>
 <translation id="509429900233858213">Der opstod en fejl.</translation>
 <translation id="510275257476243843">1 time tilbage</translation>
+<translation id="5115811374190515607">til <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Interesser</translation>
 <translation id="5123685120097942451">Inkognitofane</translation>
 <translation id="5126510351761255129">Bekræft dit kort</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome skal have lageradgang for at kunne downloade filer.</translation>
 <translation id="5749237766298580851">Fra <ph name="SEPARATOR" /> Anbefales ikke</translation>
 <translation id="5752232708629533680">Del kun gif</translation>
+<translation id="5753139477036638699">Du kan søge ved hjælp af stemmen i Chrome</translation>
 <translation id="5754350196967618083">Discover kan ikke opdateres</translation>
 <translation id="5763382633136178763">Inkognitofaner</translation>
 <translation id="5763514718066511291">Tryk for at kopiere webadressen til denne app</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Log ind i Chrome, åben.</translation>
 <translation id="6814033694018386318">Det deler du med Google</translation>
 <translation id="6817747507826986771">Del hurtigt denne side. Hold fingeren nede for at redigere denne genvej.</translation>
+<translation id="6819199143469632133">Log ind for at få adgang til dine Google-ting på alle enheder</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, fane, valgt</translation>
 <translation id="6828070228333235514">Stop med at holde øje med prisen</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Gendannet den <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Placer QR-koden eller stregkoden i denne ramme.</translation>
 <translation id="7029809446516969842">Adgangskoder</translation>
+<translation id="7037830628447527439">Log ind på Chrome med din Google-konto</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Vil du have billedbeskrivelser?</translation>
 <translation id="7055152154916055070">Omdirigeringen blev blokeret:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – Dette sprog kunne ikke downloades. Prøv igen senere.</translation>
 <translation id="8951232171465285730">Chrome har sparet dig <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Tilbage til toppen</translation>
+<translation id="8964479563882643397">Åbn menuen for at åbne en ny inkognitofane</translation>
 <translation id="8965591936373831584">afventer</translation>
 <translation id="8967427617812342790">Føj til læseliste</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> inkognitofane og <ph name="TAB_COUNT_ONE" /> anden fane lukkes}one{<ph name="INCOGNITO_TAB_COUNT" /> inkognitofane og <ph name="TAB_COUNT_MANY" /> anden fane lukkes}other{<ph name="INCOGNITO_TAB_COUNT" /> inkognitofane og <ph name="TAB_COUNT_MANY" /> andre faner lukkes}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
index 54661c1..5fbb185c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Copiar el nombre de usuario</translation>
 <translation id="1592864538817356322">Protección estándar:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Quitar 1 elemento seleccionado}other{Quitar # elementos seleccionados}}</translation>
+<translation id="1633659023549081553">Descubre nuevo contenido en la página principal de Chrome</translation>
 <translation id="1641113438599504367">Navegación segura</translation>
 <translation id="164269334534774161">Estás viendo una copia sin conexión de esta página del <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historial</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Arrastra el control deslizante hasta que puedas leer esto cómodamente. El texto debería verse, al menos, de este tamaño al tocar dos veces un párrafo.</translation>
 <translation id="2323763861024343754">Almacenamiento del sitio</translation>
 <translation id="2328985652426384049">No puedes acceder</translation>
+<translation id="2342601525305963189">Sugerencias de Chrome:</translation>
 <translation id="234265804618409743">No se puede abrir la cámara. Se produjo un error.</translation>
 <translation id="2345671828921229300">Para realizar una búsqueda, mantén presionada una palabra</translation>
 <translation id="2349710944427398404">Cantidad total de datos que usa Chrome, lo que incluye las cuentas, favoritos y opciones de configuración guardadas</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Se enviarán a Google las URL que visites.</translation>
 <translation id="2536728043171574184">Visualizando una copia sin conexión de la página</translation>
 <translation id="2546283357679194313">Datos de sitios y cookies</translation>
+<translation id="2558692642259318568">Prueba el modo Incógnito para navegar sin guardar la actividad en el dispositivo</translation>
 <translation id="2561519700418191927">Vistas previas de los videos</translation>
 <translation id="2567385386134582609">IMAGEN</translation>
 <translation id="2567545343356994513">Protección más rápida y proactiva contra descargas, extensiones y sitios web peligrosos</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Número de tarjeta</translation>
 <translation id="2625189173221582860">Se copió la contraseña</translation>
 <translation id="2631006050119455616">Ahorrados</translation>
+<translation id="2634905176438867146">Aprende a configurar Chrome como tu navegador predeterminado</translation>
 <translation id="2645657967708199252">Es posible que la descarga sea más lenta por tu conexión de <ph name="CONNECTION_TYPE" />.</translation>
 <translation id="2647434099613338025">Agregar idioma</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> administra tu navegador</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Se está haciendo el seguimiento de precios</translation>
 <translation id="3037517125981011456">Muestra mensajes para acceder a Chrome.</translation>
 <translation id="3046945242843292318">Vuelve a acceder a este sitio más rápido</translation>
+<translation id="3055259925215945098">Se movió el favorito</translation>
 <translation id="305593374596241526">La ubicación está desactivada; actívala en <ph name="BEGIN_LINK" />Configuración de Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> favorito}other{<ph name="BOOKMARKS_COUNT_MANY" /> favoritos}}</translation>
 <translation id="3062802207422175757">Artículos de Chrome relacionados con tus intereses</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Guardar en el dispositivo</translation>
 <translation id="3236059992281584593">1 minuto restante</translation>
 <translation id="3237087289225714896">Precarga estándar:</translation>
+<translation id="3237433641417325993">Desplázate hacia abajo para ver los artículos sugeridos</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Si también compartes los informes de uso de Chrome, estos incluirán las URL que visites.</translation>
 <translation id="3250563604907490871">Se reanudarán las descripciones de imágenes cuando te conectes a una red Wi-Fi.</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome no tiene acceso al recurso solicitado.</translation>
 <translation id="4837753911714442426">Abrir opciones para imprimir la página</translation>
 <translation id="4842092870884894799">Mostrando mensaje emergente de generación de contraseña</translation>
+<translation id="4842515939542199281">Para realizar búsquedas por voz, presiona el micrófono</translation>
 <translation id="4850886885716139402">Ver</translation>
 <translation id="4860895144060829044">Llamar</translation>
 <translation id="4864369630010738180">Accediendo</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Datos de uso extendidos</translation>
 <translation id="509429900233858213">Se ha producido un error.</translation>
 <translation id="510275257476243843">1 hora restante</translation>
+<translation id="5115811374190515607">a <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Intereses</translation>
 <translation id="5123685120097942451">Pestaña de incógnito</translation>
 <translation id="5126510351761255129">Verifica tu tarjeta</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome necesita acceder al almacenamiento para descargar archivos.</translation>
 <translation id="5749237766298580851">Desactivada <ph name="SEPARATOR" /> No se recomienda</translation>
 <translation id="5752232708629533680">Compartir solo el archivo GIF</translation>
+<translation id="5753139477036638699">Puedes usar la voz para realizar búsquedas en Chrome</translation>
 <translation id="5754350196967618083">No se puede actualizar Descubre</translation>
 <translation id="5763382633136178763">Pestañas en modo de incógnito</translation>
 <translation id="5763514718066511291">Presiona para copiar la URL para esta app</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Acceder a Chrome, abierto.</translation>
 <translation id="6814033694018386318">Lo que compartes con Google</translation>
 <translation id="6817747507826986771">Comparte esta página de forma rápida. Para editar este atajo, mantenlo presionado.</translation>
+<translation id="6819199143469632133">Accede para ver tu contenido de Google en distintos dispositivos</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, pestaña, seleccionada</translation>
 <translation id="6828070228333235514">Dejar de seguir el precio</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Se restableció <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Coloca el código QR o de barras en este recuadro.</translation>
 <translation id="7029809446516969842">Contraseñas</translation>
+<translation id="7037830628447527439">Accede a Chrome con tu Cuenta de Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">¿Deseas obtener la descripción de las imágenes?</translation>
 <translation id="7055152154916055070">Se bloqueó el redireccionamiento:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" />: no se pudo descargar este idioma. Vuelve a intentarlo más tarde.</translation>
 <translation id="8951232171465285730">Chrome te permitió ahorrar <ph name="MEGABYTES" /> megabytes</translation>
 <translation id="8955719471735800169">Volver al principio</translation>
+<translation id="8964479563882643397">Para abrir una nueva pestaña de incógnito, abre el menú</translation>
 <translation id="8965591936373831584">pendiente</translation>
 <translation id="8967427617812342790">Agregar a la lista de lectura</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Se cerrarán <ph name="INCOGNITO_TAB_COUNT" /> pestaña de incógnito y <ph name="TAB_COUNT_ONE" /> pestaña más.}other{Se cerrarán <ph name="INCOGNITO_TAB_COUNT" /> pestaña de incógnito y <ph name="TAB_COUNT_MANY" /> pestañas más.}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
index b49919f7..c9f38ec 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Copiar nombre de usuario</translation>
 <translation id="1592864538817356322">Protección estándar:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Quitar 1 elemento seleccionado}other{Quitar # elementos seleccionados}}</translation>
+<translation id="1633659023549081553">Descubre contenido nuevo en la página principal de Chrome</translation>
 <translation id="1641113438599504367">Navegación segura</translation>
 <translation id="164269334534774161">Estás viendo una copia sin conexión de esta página del <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historial</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Arrastra el control deslizante hasta que puedas leer cómodamente. El texto debe tener al menos este tamaño después de tocar un párrafo dos veces.</translation>
 <translation id="2323763861024343754">Almacenamiento del sitio web</translation>
 <translation id="2328985652426384049">No se puede iniciar sesión</translation>
+<translation id="2342601525305963189">Consejos de Chrome:</translation>
 <translation id="234265804618409743">No se ha podido abrir la cámara. Se ha producido un error.</translation>
 <translation id="2345671828921229300">Para buscar, mantén pulsada una palabra.</translation>
 <translation id="2349710944427398404">Datos totales utilizados por Chrome, incluidos los marcadores, las cuentas y la configuración guardada</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Las URLs que visites se enviarán a Google.</translation>
 <translation id="2536728043171574184">Viendo una copia sin conexión de esta página</translation>
 <translation id="2546283357679194313">Cookies y datos de sitios</translation>
+<translation id="2558692642259318568">Para navegar sin guardar la actividad en tu dispositivo, prueba incógnito</translation>
 <translation id="2561519700418191927">Vistas previas de vídeos</translation>
 <translation id="2567385386134582609">IMAGEN</translation>
 <translation id="2567545343356994513">Protección más rápida y proactiva frente a sitios web, descargas y extensiones peligrosos.</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Número de la tarjeta</translation>
 <translation id="2625189173221582860">Se ha copiado la contraseña</translation>
 <translation id="2631006050119455616">Ahorrados</translation>
+<translation id="2634905176438867146">Descubre cómo establecer Chrome como predeterminado</translation>
 <translation id="2645657967708199252">Tu conexión <ph name="CONNECTION_TYPE" /> puede hacer que la descarga vaya más lenta.</translation>
 <translation id="2647434099613338025">Añadir idioma</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> gestiona tu navegador</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Siguiendo precio</translation>
 <translation id="3037517125981011456">Muestra solicitudes para iniciar sesión en Chrome</translation>
 <translation id="3046945242843292318">Llega más rápido a este sitio la próxima vez</translation>
+<translation id="3055259925215945098">Marcador movido</translation>
 <translation id="305593374596241526">La ubicación está desactivada. Actívala en los <ph name="BEGIN_LINK" />ajustes de Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> marcador}other{<ph name="BOOKMARKS_COUNT_MANY" /> marcadores}}</translation>
 <translation id="3062802207422175757">Artículos sobre tus intereses en Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Guardar en el dispositivo</translation>
 <translation id="3236059992281584593">Queda 1 minuto</translation>
 <translation id="3237087289225714896">Precarga estándar:</translation>
+<translation id="3237433641417325993">Desplázate hacia abajo para ver artículos sugeridos</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Si también compartes informes de uso de Chrome, esos informes incluirán las URLs que visites.</translation>
 <translation id="3250563604907490871">Las descripciones de imágenes se reanudarán cuando te conectes a una red Wi‑Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome no tiene acceso al recurso solicitado.</translation>
 <translation id="4837753911714442426">Abre las opciones para imprimir la página</translation>
 <translation id="4842092870884894799">Mostrando la ventana emergente de generación de contraseña</translation>
+<translation id="4842515939542199281">Para buscar con la voz, toca el micrófono</translation>
 <translation id="4850886885716139402">Ver</translation>
 <translation id="4860895144060829044">Llamar</translation>
 <translation id="4864369630010738180">Iniciando sesión...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Datos de uso ampliados</translation>
 <translation id="509429900233858213">Se ha producido un error.</translation>
 <translation id="510275257476243843">Queda 1 hora</translation>
+<translation id="5115811374190515607">a <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Intereses</translation>
 <translation id="5123685120097942451">Pestaña de incógnito</translation>
 <translation id="5126510351761255129">Verifica tu tarjeta</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome necesita acceso de almacenamiento para descargar archivos.</translation>
 <translation id="5749237766298580851">Desactivada <ph name="SEPARATOR" /> No recomendado</translation>
 <translation id="5752232708629533680">Compartir solo el GIF</translation>
+<translation id="5753139477036638699">Puedes usar la voz para buscar en Chrome</translation>
 <translation id="5754350196967618083">No se ha podido actualizar Discover</translation>
 <translation id="5763382633136178763">Pestañas de incógnito</translation>
 <translation id="5763514718066511291">Toca para copiar la URL de esta aplicación</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Inicia sesión en Chrome, abierto.</translation>
 <translation id="6814033694018386318">Lo que compartes con Google</translation>
 <translation id="6817747507826986771">Comparte esta página rápidamente. Para editar este acceso directo, mantenlo pulsado.</translation>
+<translation id="6819199143469632133">Para acceder a tus cosas de Google en diferentes dispositivos, inicia sesión</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">Pestaña <ph name="TAB_TITLE" /> seleccionada</translation>
 <translation id="6828070228333235514">Dejar de seguir precio</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Se ha restaurado <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Coloca el código QR o de barras en este marco.</translation>
 <translation id="7029809446516969842">Contraseñas</translation>
+<translation id="7037830628447527439">Inicia sesión en Chrome con tu cuenta de Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">¿Obtener descripciones de imágenes?</translation>
 <translation id="7055152154916055070">Redirección bloqueada:</translation>
@@ -1199,7 +1210,7 @@
 <translation id="7859988229622350291">No traducir nunca</translation>
 <translation id="78707286264420418"><ph name="PRODUCT_NAME" /> necesita el permiso de detección de dispositivos cercanos para conectarse a tu dispositivo</translation>
 <translation id="7875915731392087153">Crear correo electrónico</translation>
-<translation id="7876243839304621966">Eliminar todo</translation>
+<translation id="7876243839304621966">Quitar todo</translation>
 <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Te queda <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> página sin leer.}other{Te quedan <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> páginas sin leer.}}</translation>
 <translation id="7882131421121961860">No se ha encontrado el elemento buscado en el historial</translation>
 <translation id="7886917304091689118">Se está ejecutando en Chrome</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" />: este idioma no se ha podido descargar. Inténtalo de nuevo más tarde.</translation>
 <translation id="8951232171465285730">Chrome te ha permitido ahorrar <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Volver al principio</translation>
+<translation id="8964479563882643397">Para abrir una nueva pestaña de incógnito, abre el menú</translation>
 <translation id="8965591936373831584">pendiente</translation>
 <translation id="8967427617812342790">Añadir a lista de lectura</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Se cerrarán <ph name="INCOGNITO_TAB_COUNT" /> pestaña de incógnito y <ph name="TAB_COUNT_ONE" /> pestaña más}other{Se cerrarán <ph name="INCOGNITO_TAB_COUNT" /> pestaña de incógnito y <ph name="TAB_COUNT_MANY" /> pestañas más}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
index 5408b1a0..7b996ee 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kasutajanime kopeerimine</translation>
 <translation id="1592864538817356322">Standardne kaitse:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Eemalda 1 valitud üksus}other{Eemalda # valitud üksust}}</translation>
+<translation id="1633659023549081553">Avastage Chrome'i avalehel uut sisu</translation>
 <translation id="1641113438599504367">Ohutu sirvimine</translation>
 <translation id="164269334534774161">Vaatate selle lehe võrguühenduseta koopiat kuupäevast <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Ajalugu</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Lohistage liugurit, kuni saate seda mugavalt lugeda. Lõigu topeltkoputamisel peab tekst olema vähemalt nii suur.</translation>
 <translation id="2323763861024343754">Saidi salvestusruum</translation>
 <translation id="2328985652426384049">Ei saa sisse logida</translation>
+<translation id="2342601525305963189">Chrome’i nõuanded</translation>
 <translation id="234265804618409743">Kaamerat ei saa avada. Midagi läks valesti.</translation>
 <translation id="2345671828921229300">Otsimiseks puudutage sõna pikalt</translation>
 <translation id="2349710944427398404">Chrome'i kasutatav andmemaht kokku, sh kontod, järjehoidjad ja salvestatud seaded</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Teie külastatavad URL-id saadetakse Google'ile</translation>
 <translation id="2536728043171574184">Kuvatakse on lehe võrguühenduseta koopia</translation>
 <translation id="2546283357679194313">Küpsised ja saidiandmed</translation>
+<translation id="2558692642259318568">Ilma tegevusi seadmesse salvestamata sirvimiseks proovige inkognito režiimi</translation>
 <translation id="2561519700418191927">Video eelvaated</translation>
 <translation id="2567385386134582609">KUJUTIS</translation>
 <translation id="2567545343356994513">Kiirem ennetav kaitse ohtlike veebisaitide, allalaadimiste ja laienduste vastu</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kaardi number</translation>
 <translation id="2625189173221582860">Parool on kopeeritud</translation>
 <translation id="2631006050119455616">Säästetud</translation>
+<translation id="2634905176438867146">Vaadake, kuidas Chrome vaikevalikuks määrata</translation>
 <translation id="2645657967708199252">Teie <ph name="CONNECTION_TYPE" />-ühendus võib allalaadimist aeglustada</translation>
 <translation id="2647434099613338025">Lisa keel</translation>
 <translation id="2649068648233607930">Teie brauserit haldab <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Jälgite hinda</translation>
 <translation id="3037517125981011456">Kuvatakse viibad Chrome'i sisselogimiseks</translation>
 <translation id="3046945242843292318">Liikuge järgmine kord sellele saidile kiiremini</translation>
+<translation id="3055259925215945098">Järjehoidja teisaldati</translation>
 <translation id="305593374596241526">Asukoht on välja lülitatud. Lülitage see sisse <ph name="BEGIN_LINK" />Androidi seadetes<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> järjehoidja}other{<ph name="BOOKMARKS_COUNT_MANY" /> järjehoidjat}}</translation>
 <translation id="3062802207422175757">Teie huvidega seotud artiklid Chrome'is</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Salvesta seadmesse</translation>
 <translation id="3236059992281584593">Jäänud on 1 minut</translation>
 <translation id="3237087289225714896">Standardne eellaadimine:</translation>
+<translation id="3237433641417325993">Kerige alla, et näha soovitatud artikleid</translation>
 <translation id="3244271242291266297">kk</translation>
 <translation id="3245429137663807393">Kui jagate ka Chrome'i kasutusaruandeid, hõlmavad need teie külastatavaid URL-e</translation>
 <translation id="3250563604907490871">Pildikirjeldused jätkuvad, kui loote WiFi-ühenduse</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome'il pole soovitud allikale juurdepääsu.</translation>
 <translation id="4837753911714442426">Valikute avamine lehe printimiseks</translation>
 <translation id="4842092870884894799">Parooli loomise hüpikakna kuvamine</translation>
+<translation id="4842515939542199281">Hääle abil otsimiseks puudutage mikrofoni</translation>
 <translation id="4850886885716139402">Kuva</translation>
 <translation id="4860895144060829044">Helistage</translation>
 <translation id="4864369630010738180">Sisselogimine ...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Laiendatud kasutusandmed</translation>
 <translation id="509429900233858213">Tekkis viga.</translation>
 <translation id="510275257476243843">Jäänud on 1 tund</translation>
+<translation id="5115811374190515607">teenusesse <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Huvid</translation>
 <translation id="5123685120097942451">Inkognito vaheleht</translation>
 <translation id="5126510351761255129">Kaardi kinnitamine</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome vajab failide allalaadimiseks juurdepääsu salvestusruumile.</translation>
 <translation id="5749237766298580851">Väljas <ph name="SEPARATOR" /> Ei soovitata</translation>
 <translation id="5752232708629533680">Jagatakse vaid GIF-i</translation>
+<translation id="5753139477036638699">Saate Chrome'is otsimiseks kasutada oma häält</translation>
 <translation id="5754350196967618083">Jaotist Discover ei saa värskendada</translation>
 <translation id="5763382633136178763">Inkognito režiimi vahekaardid</translation>
 <translation id="5763514718066511291">Puudutage URL-i kopeerimiseks selle rakenduse jaoks</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chrome'i sisselogimine, avatud.</translation>
 <translation id="6814033694018386318">Mida te Google'iga jagate?</translation>
 <translation id="6817747507826986771">Jagage kiirelt seda lehte. Selle otsetee muutmiseks puudutage pikalt.</translation>
+<translation id="6819199143469632133">Selleks et oma Google'i sisule eri seadmetes juurde pääseda, logige sisse</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, vaheleht, valitud</translation>
 <translation id="6828070228333235514">Peata hinna jälgimine</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Taastati <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Paigutage QR-kood või ribakood sellesse kaadrisse</translation>
 <translation id="7029809446516969842">Paroolid</translation>
+<translation id="7037830628447527439">Logige Chrome’i oma Google’i kontoga sisse</translation>
 <translation id="7038956721828960940">Chrome'i_pilt_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Kas saada piltide kirjeldusi?</translation>
 <translation id="7055152154916055070">Ümbersuunamine blokeeriti:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – seda keelt ei saanud alla laadida. Proovige hiljem uuesti.</translation>
 <translation id="8951232171465285730">Chrome aitas teil säästa <ph name="MEGABYTES" /> MB andmemahtu</translation>
 <translation id="8955719471735800169">Tagasi üles</translation>
+<translation id="8964479563882643397">Uue inkognito vahelehe avamiseks avage menüü</translation>
 <translation id="8965591936373831584">ootel</translation>
 <translation id="8967427617812342790">Lisa lugemisloendisse</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> inkognito ja veel <ph name="TAB_COUNT_ONE" /> vaheleht suletakse}other{<ph name="INCOGNITO_TAB_COUNT" /> inkognito ja veel <ph name="TAB_COUNT_MANY" /> vahelehte suletakse}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
index 95809b2..bfc87f95 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopioi käyttäjänimi</translation>
 <translation id="1592864538817356322">Perustason suojaus:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Poista 1 valittu kohde}other{Poista # valittua kohdetta}}</translation>
+<translation id="1633659023549081553">Löydä uutta sisältöä Chromen etusivulta</translation>
 <translation id="1641113438599504367">Selaussuoja</translation>
 <translation id="164269334534774161">Katselet sivun offline-kopiota, joka luotiin <ph name="CREATION_TIME" />.</translation>
 <translation id="1644574205037202324">Historia</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Vedä liukusäädintä, kunnes voit lukea tämän mukavasti. Tekstin tulisi olla vähintään näin suurta kaksoisnapautettuasi kappaletta.</translation>
 <translation id="2323763861024343754">Sivustotietoja tallennettu</translation>
 <translation id="2328985652426384049">Kirjautuminen epäonnistui</translation>
+<translation id="2342601525305963189">Vinkit Chromen käyttöön:</translation>
 <translation id="234265804618409743">Kameraa ei voi avata. Jotain meni pieleen.</translation>
 <translation id="2345671828921229300">Hae koskettamalla sanaa pitkään</translation>
 <translation id="2349710944427398404">Chromen käyttämän tallennustilan kokonaismäärä, mukaan lukien tilit, kirjanmerkit ja tallennetut asetukset.</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Avaamasi URL-osoitteet lähetetään Googlelle</translation>
 <translation id="2536728043171574184">Näkyvissä on sivun offline-versio.</translation>
 <translation id="2546283357679194313">Evästeet ja sivustotiedot</translation>
+<translation id="2558692642259318568">Kokeile incognito-tilaa, jos haluat selata tallentamatta toimintaa laitteellesi</translation>
 <translation id="2561519700418191927">Videon esikatselut</translation>
 <translation id="2567385386134582609">KUVA</translation>
 <translation id="2567545343356994513">Nopeampi, proaktiivinen suojaus vaarallisia sivustoja, latauksia ja laajennuksia vastaan</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kortin numero</translation>
 <translation id="2625189173221582860">Salasana kopioitu</translation>
 <translation id="2631006050119455616">Säästetty</translation>
+<translation id="2634905176438867146">Katso, miten voit valita Chromen oletusselaimeksi</translation>
 <translation id="2645657967708199252">Yhteytesi (<ph name="CONNECTION_TYPE" />) saattaa hidastaa lataamista</translation>
 <translation id="2647434099613338025">Lisää kieli</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> ylläpitää selaintasi</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Hintaa seurataan</translation>
 <translation id="3037517125981011456">Näytä kehotteet kirjautua Chromeen</translation>
 <translation id="3046945242843292318">Siirry ensi kerralla tälle sivustolle nopeammin</translation>
+<translation id="3055259925215945098">Kirjanmerkki siirretty</translation>
 <translation id="305593374596241526">Sijainti on pois päältä. Voit laittaa sen päälle <ph name="BEGIN_LINK" />Android-asetuksista<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> kirjanmerkki}other{<ph name="BOOKMARKS_COUNT_MANY" /> kirjanmerkkiä}}</translation>
 <translation id="3062802207422175757">Artikkeleita kiinnostuksen kohteistasi Chromessa</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Tallenna laitteelle</translation>
 <translation id="3236059992281584593">1 minuutti jäljellä</translation>
 <translation id="3237087289225714896">Vakioesilataus:</translation>
+<translation id="3237433641417325993">Vieritä alaspäin, niin näet artikkeliehdotuksia</translation>
 <translation id="3244271242291266297">KK</translation>
 <translation id="3245429137663807393">Jos jaat myös Chromen käyttöraportteja, avaamasi URL-osoitteet näkyvät niissä</translation>
 <translation id="3250563604907490871">Kuvaselityksiä jatketaan, kun muodostat Wi-Fi-yhteyden</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chromella ei ole pyydetyn resurssin käyttöoikeutta.</translation>
 <translation id="4837753911714442426">Avaa sivun tulostusvaihtoehdot</translation>
 <translation id="4842092870884894799">Salasanojen luomisen ponnahdusikkuna on näkyvissä.</translation>
+<translation id="4842515939542199281">Napauta mikrofonia, niin voit käyttää puhehakua</translation>
 <translation id="4850886885716139402">Näytä</translation>
 <translation id="4860895144060829044">Soita</translation>
 <translation id="4864369630010738180">Kirjaudutaan...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Laajennettu käyttödata</translation>
 <translation id="509429900233858213">Tapahtui virhe.</translation>
 <translation id="510275257476243843">1 tunti jäljellä</translation>
+<translation id="5115811374190515607">kohde: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Kiinnostuksen kohteet</translation>
 <translation id="5123685120097942451">Incognito-välilehti</translation>
 <translation id="5126510351761255129">Vahvista kortti</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome tarvitsee tallennustilan käyttöoikeuden tiedostojen lataamiseen.</translation>
 <translation id="5749237766298580851">Pois päältä <ph name="SEPARATOR" /> Ei suositeltu</translation>
 <translation id="5752232708629533680">Jaa vain GIF</translation>
+<translation id="5753139477036638699">Voit hakea Chromessa äänikomennoilla</translation>
 <translation id="5754350196967618083">Discoveria ei voi päivittää</translation>
 <translation id="5763382633136178763">Incognito-välilehdet</translation>
 <translation id="5763514718066511291">Kosketa kopioidaksesi tämän sovelluksen URL-osoite</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Kirjaudu Chromeen, avattu.</translation>
 <translation id="6814033694018386318">Mitä jaat Googlen kanssa</translation>
 <translation id="6817747507826986771">Jaa sivu nopeasti. Kosketa pikakuvaketta pitkään, niin voit muokata sitä.</translation>
+<translation id="6819199143469632133">Kirjaudu sisään, jos haluat nähdä Google-sisältösi eri laitteilla</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, välilehti, valittu</translation>
 <translation id="6828070228333235514">Lopeta hinnan seuranta</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> palautettu</translation>
 <translation id="7029390216614421513">Aseta QR- tai viivakoodi tämän kehyksen sisälle.</translation>
 <translation id="7029809446516969842">Salasanat</translation>
+<translation id="7037830628447527439">Kirjaudu Chromeen Google-tililläsi</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Muodostetaanko kuvaselitykset?</translation>
 <translation id="7055152154916055070">Uudelleenohjaus estetty:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – Kieltä ei voitu ladata. Yritä myöhemmin uudelleen.</translation>
 <translation id="8951232171465285730">Chrome on säästänyt <ph name="MEGABYTES" /> Mt tilaa</translation>
 <translation id="8955719471735800169">Sivun alkuun</translation>
+<translation id="8964479563882643397">Avaa valikko, niin voit avata uuden incognito-välilehden</translation>
 <translation id="8965591936373831584">odottaa</translation>
 <translation id="8967427617812342790">Lisää lukulistalle</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> incognito-välilehti ja <ph name="TAB_COUNT_ONE" /> muu välilehti suljetaan}other{<ph name="INCOGNITO_TAB_COUNT" /> incognito-välilehteä ja <ph name="TAB_COUNT_MANY" /> muuta välilehteä suljetaan}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
index ee813bf..decc91b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopyahin ang username</translation>
 <translation id="1592864538817356322">Karaniwang proteksyon:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Alisin ang 1 piniling item}one{Alisin ang # piniling item}other{Alisin ang # na piniling item}}</translation>
+<translation id="1633659023549081553">Tumuklas ng bagong content sa homepage ng Chrome</translation>
 <translation id="1641113438599504367">Ligtas na Pagba-browse</translation>
 <translation id="164269334534774161">Tinitingnan mo ang offline na kopya ng page na ito mula sa <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">History</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">I-drag ang slider hanggang sa mabasa mo ito nang kumportable. Dapat ay halos ganito kalaki ang text pagkatapos mag-double tap sa isang talata.</translation>
 <translation id="2323763861024343754">Storage ng site</translation>
 <translation id="2328985652426384049">Hindi makapag-sign in</translation>
+<translation id="2342601525305963189">Mga tip sa Chrome:</translation>
 <translation id="234265804618409743">Hindi mabuksan ang iyong camera. Nagkaproblema.</translation>
 <translation id="2345671828921229300">Para maghanap, pindutin nang matagal ang isang salita</translation>
 <translation id="2349710944427398404">Kabuuang data na ginagamit ng Chrome, kabilang ang mga account, bookmark at naka-save na setting</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Ipinapadala sa Google ang mga URL na binibisita mo</translation>
 <translation id="2536728043171574184">Tinitingnan ang isang offline na kopya ng page na ito</translation>
 <translation id="2546283357679194313">Cookies at data ng site</translation>
+<translation id="2558692642259318568">Para mag-browse nang hindi nagse-save ng aktibidad sa iyong device, subukan ang Incognito</translation>
 <translation id="2561519700418191927">Mga preview ng video</translation>
 <translation id="2567385386134582609">LARAWAN</translation>
 <translation id="2567545343356994513">Mas mabilis at proactive na proteksyon laban sa mga mapanganib na website, download, at extension</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Numero ng card</translation>
 <translation id="2625189173221582860">Nakopya ang password</translation>
 <translation id="2631006050119455616">Na-save</translation>
+<translation id="2634905176438867146">Alamin kung paano itakda ang chrome bilang iyong default</translation>
 <translation id="2645657967708199252">Posibleng mapabagal ng <ph name="CONNECTION_TYPE" /> na koneksyon mo ang iyong pag-download</translation>
 <translation id="2647434099613338025">Magdagdag ng wika</translation>
 <translation id="2649068648233607930">Pinapamahalaan ng <ph name="DOMAIN" /> ang iyong browser</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Sinusubaybayan ang presyo</translation>
 <translation id="3037517125981011456">Nagpapakita ng mga prompt na mag-sign in sa Chrome</translation>
 <translation id="3046945242843292318">Mas mabilis na makapunta sa site na ito sa ibang pagkakataon</translation>
+<translation id="3055259925215945098">Inilipat ang bookmark</translation>
 <translation id="305593374596241526">Naka-off ang lokasyon; i-on ito sa <ph name="BEGIN_LINK" />Mga Setting ng Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> bookmark}one{<ph name="BOOKMARKS_COUNT_MANY" /> bookmark}other{<ph name="BOOKMARKS_COUNT_MANY" /> na bookmark}}</translation>
 <translation id="3062802207422175757">Mga artikulo tungkol sa iyong mga interes sa Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">I-save sa device</translation>
 <translation id="3236059992281584593">1 minuto na lang ang natitira</translation>
 <translation id="3237087289225714896">Karaniwang pag-preload:</translation>
+<translation id="3237433641417325993">Mag-scroll pababa para makakita ng mga iminumungkahing artikulo</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Kung nagbabahagi ka rin ng mga ulat ng paggamit sa Chrome, isasama sa mga ulat na iyon ang mga URL na binibisita mo</translation>
 <translation id="3250563604907490871">Magpapatuloy ang mga paglalarawan ng larawan kapag kumonekta ka sa Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Walang access ang Chrome sa hiniling na mapagkukunan.</translation>
 <translation id="4837753911714442426">Buksan ang mga opsyon sa pag-print ng page</translation>
 <translation id="4842092870884894799">Ipinapakita ang popup para sa pagbuo ng password</translation>
+<translation id="4842515939542199281">Para maghanap gamit ang iyong boses, i-tap ang mikropono</translation>
 <translation id="4850886885716139402">View</translation>
 <translation id="4860895144060829044">Tawagan</translation>
 <translation id="4864369630010738180">Nagsa-sign in...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Pinalawak na data ng paggamit</translation>
 <translation id="509429900233858213">May naganap na error.</translation>
 <translation id="510275257476243843">1 oras na lang ang natitira</translation>
+<translation id="5115811374190515607">sa <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Mga Interes</translation>
 <translation id="5123685120097942451">Tab na incognito</translation>
 <translation id="5126510351761255129">I-verify ang iyong card</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Kailangan ng Chrome ng access sa storage para mag-download ng mga file.</translation>
 <translation id="5749237766298580851">Naka-off <ph name="SEPARATOR" /> Hindi inirerekomenda</translation>
 <translation id="5752232708629533680">Ibahagi lang ang GIF</translation>
+<translation id="5753139477036638699">Puwede mong gamitin ang iyong boses para maghanap sa Chrome</translation>
 <translation id="5754350196967618083">Hindi ma-refresh ang Discover</translation>
 <translation id="5763382633136178763">Mga tab na incognito</translation>
 <translation id="5763514718066511291">I-tap upang kopyahin ang URL para sa app na ito</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Nakabukas ang pag-sign in sa Chrome.</translation>
 <translation id="6814033694018386318">Ang binabahagi mo sa Google</translation>
 <translation id="6817747507826986771">Mabilis na ibahagi ang page na ito. Para i-edit ang shortcut na ito, pindutin ito nang matagal.</translation>
+<translation id="6819199143469632133">Mag-sign in para ma-sync sa lahat ng device ang iyong content ng Google</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, tab, napili</translation>
 <translation id="6828070228333235514">Ihinto ang pagsubaybay ng presyo</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Na-restore noong <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Itapat ang QR Code/barcode sa loob ng frame na ito.</translation>
 <translation id="7029809446516969842">Mga Password</translation>
+<translation id="7037830628447527439">Mag-sign in sa Chrome gamit ang iyong Google Account</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Makakuha ng mga paglalarawan ng larawan?</translation>
 <translation id="7055152154916055070">Na-block ang pag-redirect:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Hindi ma-download ang wikang ito. Subukan ulit sa ibang pagkakataon.</translation>
 <translation id="8951232171465285730">Nag-save ang Chrome ng <ph name="MEGABYTES" /> MB para sa iyo</translation>
 <translation id="8955719471735800169">Bumalik sa tuktok</translation>
+<translation id="8964479563882643397">Para magbukas ng bagong tab na Incognito, buksan ang menu</translation>
 <translation id="8965591936373831584">nakabinbin</translation>
 <translation id="8967427617812342790">Idagdag sa listahan ng babasahin</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Isasara ang <ph name="INCOGNITO_TAB_COUNT" /> tab na incognito at <ph name="TAB_COUNT_ONE" /> pang tab}one{Isasara ang <ph name="INCOGNITO_TAB_COUNT" /> tab na incognito at <ph name="TAB_COUNT_MANY" /> pang tab}other{Isasara ang <ph name="INCOGNITO_TAB_COUNT" /> na tab na incognito at <ph name="TAB_COUNT_MANY" /> pang tab}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
index 25a1d9b..9b5ffb3 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Copier le nom d'utilisateur</translation>
 <translation id="1592864538817356322">Protection standard :</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Supprimer 1 élément sélectionné}one{Supprimer # élément sélectionné}other{Supprimer # éléments sélectionnés}}</translation>
+<translation id="1633659023549081553">Découvrez de nouveaux contenus sur la page d'accueil de Chrome</translation>
 <translation id="1641113438599504367">Navigation sécurisée</translation>
 <translation id="164269334534774161">Vous consultez une copie hors ligne de cette page qui a été créée le <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historique</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Faites glisser le curseur pour lire le texte aisément. Sa taille doit être similaire à celle-ci lorsque vous appuyez deux fois sur un paragraphe.</translation>
 <translation id="2323763861024343754">Stockage des sites</translation>
 <translation id="2328985652426384049">Impossible de se connecter</translation>
+<translation id="2342601525305963189">Conseils Chrome :</translation>
 <translation id="234265804618409743">Impossible d'ouvrir votre appareil photo. Un problème s'est produit.</translation>
 <translation id="2345671828921229300">Pour effectuer une recherche, maintenez le doigt sur un mot</translation>
 <translation id="2349710944427398404">Le total des données utilisées par Chrome, comprenant les comptes, les favoris et les paramètres enregistrés</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Les URL des pages que vous visitez sont envoyées à Google</translation>
 <translation id="2536728043171574184">Affichage d’une copie hors ligne de cette page en cours</translation>
 <translation id="2546283357679194313">Témoins et données de site</translation>
+<translation id="2558692642259318568">Pour parcourir sans enregistrer d'activité sur votre appareil, essayez le mode de navigation privée</translation>
 <translation id="2561519700418191927">Aperçus de vidéos</translation>
 <translation id="2567385386134582609">IMAGE</translation>
 <translation id="2567545343356994513">Ce mode offre une protection proactive et plus rapide contre les extensions, les sites Web et les téléchargements dangereux</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Numéro de la carte</translation>
 <translation id="2625189173221582860">Mot de passe copié</translation>
 <translation id="2631006050119455616">Enregistrées</translation>
+<translation id="2634905176438867146">Découvrez comment définir Chrome par défaut</translation>
 <translation id="2645657967708199252">Votre connexion <ph name="CONNECTION_TYPE" /> pourrait ralentir votre téléchargement</translation>
 <translation id="2647434099613338025">Ajouter une langue</translation>
 <translation id="2649068648233607930">Votre navigateur est géré par <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Suivi du prix en cours…</translation>
 <translation id="3037517125981011456">Affiche l'invite de connexion dans Chrome</translation>
 <translation id="3046945242843292318">Accédez plus rapidement à ce site la prochaine fois</translation>
+<translation id="3055259925215945098">Favori déplacé</translation>
 <translation id="305593374596241526">Le paramètre Position est désactivé, activez-le dans les <ph name="BEGIN_LINK" />paramètres Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> favori}one{<ph name="BOOKMARKS_COUNT_MANY" /> favori}other{<ph name="BOOKMARKS_COUNT_MANY" /> favoris}}</translation>
 <translation id="3062802207422175757">Articles portant sur vos centres d'intérêt dans Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Enregistrer sur l'appareil</translation>
 <translation id="3236059992281584593">Il reste 1 min</translation>
 <translation id="3237087289225714896">Préchargement standard :</translation>
+<translation id="3237433641417325993">Faites défiler la page vers le bas pour afficher les articles suggérés</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Si vous partagez aussi les rapports d'utilisation de Chrome, ceux-ci incluent les URL que vous consultez</translation>
 <translation id="3250563604907490871">Les descriptions d'images reprendront lorsque vous serez connecté au Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome n'a pas accès à la ressource demandée.</translation>
 <translation id="4837753911714442426">Ouvrir les options d'impression de la page</translation>
 <translation id="4842092870884894799">Affichage de la fenêtre contextuelle de génération de mot de passe</translation>
+<translation id="4842515939542199281">Pour rechercher avec des commandes vocales, touchez le microphone</translation>
 <translation id="4850886885716139402">Affichage</translation>
 <translation id="4860895144060829044">Appeler</translation>
 <translation id="4864369630010738180">Connexion en cours…</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Données d'utilisation étendues</translation>
 <translation id="509429900233858213">Une erreur s'est produite.</translation>
 <translation id="510275257476243843">Il reste 1 heure</translation>
+<translation id="5115811374190515607">à <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Centres d'intérêt</translation>
 <translation id="5123685120097942451">Onglet de navigation privée</translation>
 <translation id="5126510351761255129">Vérifier votre carte</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome a besoin d'accéder au stockage pour télécharger des fichiers.</translation>
 <translation id="5749237766298580851">Désactivée <ph name="SEPARATOR" /> Option non recommandée</translation>
 <translation id="5752232708629533680">Partager le fichier GIF uniquement</translation>
+<translation id="5753139477036638699">Vous pouvez utiliser des commandes vocales pour rechercher dans Chrome</translation>
 <translation id="5754350196967618083">Impossible d'actualiser Découvertes</translation>
 <translation id="5763382633136178763">Onglets de navigation privée</translation>
 <translation id="5763514718066511291">Touchez pour copier l'URL pour cette application</translation>
@@ -826,6 +835,7 @@
 <translation id="5854512288214985237">Aucune statistique ni aucun rapport de plantage ne sont envoyés à Google</translation>
 <translation id="5855546874025048181">Affiner : <ph name="REFINE_TEXT" /></translation>
 <translation id="5857447844686706637">Un problème est survenu. Impossible de mettre à jour le prix suivi.</translation>
+<translation id="5859968346865909126">Vous pouvez activer ou désactiver cette fonctionnalité dans les paramètres</translation>
 <translation id="5860033963881614850">Désactivé</translation>
 <translation id="5860491529813859533">Activer</translation>
 <translation id="5862731021271217234">Pour synchroniser vos onglets sur vos autres appareils, activez la synchronisation</translation>
@@ -1011,6 +1021,7 @@
 <translation id="6813446258015311409">Se connecter à Chrome, ouvert.</translation>
 <translation id="6814033694018386318">Ce que vous partagez avec Google</translation>
 <translation id="6817747507826986771">Partagez rapidement cette page. Pour modifier ce raccourci, maintenez le doigt sur celui-ci.</translation>
+<translation id="6819199143469632133">Pour diffuser vos données Google sur tous les appareils, connectez-vous</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, onglet, sélectionné</translation>
 <translation id="6828070228333235514">Arrêter de suivre le prix</translation>
@@ -1049,6 +1060,7 @@
 <translation id="7027549951530753705">Élément restauré : <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Placer le code QR ou le code à barres dans ce cadre.</translation>
 <translation id="7029809446516969842">Mots de passe</translation>
+<translation id="7037830628447527439">Connectez-vous à Chrome au moyen de votre compte Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Obtenir les descriptions d'images?</translation>
 <translation id="7055152154916055070">Redirection bloquée :</translation>
@@ -1100,6 +1112,7 @@
 <translation id="7359002509206457351">Accéder aux modes de paiement</translation>
 <translation id="7375125077091615385">Type :</translation>
 <translation id="7376560087009844242">En ajoutant plus de texte d'une page, vous pourriez obtenir de meilleurs résultats lorsque vous utilisez la fonctionnalité Toucher pour rechercher. Vous pouvez toujours accéder aux <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" /> pour modifier cette option.</translation>
+<translation id="7379900596734708416">Le thème sombre pour les sites est accessible</translation>
 <translation id="7386842512861524348">La connexion du site est sécuritaire, à moins que Chrome vous indique le contraire.</translation>
 <translation id="7396940094317457632"><ph name="FILE_NAME" />.</translation>
 <translation id="7400418766976504921">URL</translation>
@@ -1402,6 +1415,7 @@
 <translation id="8945143127965743188">Impossible de télécharger cette langue : <ph name="LANG" />. Réessayez plus tard.</translation>
 <translation id="8951232171465285730">Chrome vous a fait économiser <ph name="MEGABYTES" /> Mo</translation>
 <translation id="8955719471735800169">Retour en haut de la page</translation>
+<translation id="8964479563882643397">Pour ouvrir un nouvel onglet de navigation privée, ouvrez le menu</translation>
 <translation id="8965591936373831584">en attente</translation>
 <translation id="8967427617812342790">Ajouter à liste lecture</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> onglet de navigation privée et <ph name="TAB_COUNT_ONE" /> autre onglet seront fermés}one{<ph name="INCOGNITO_TAB_COUNT" /> onglet de navigation privée et <ph name="TAB_COUNT_MANY" /> autre onglet seront fermés}other{<ph name="INCOGNITO_TAB_COUNT" /> onglet de navigation privée et <ph name="TAB_COUNT_MANY" /> autres onglets seront fermés}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
index 91ffb75..ffe4026 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Copier le nom d'utilisateur</translation>
 <translation id="1592864538817356322">Protection standard :</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Supprimer 1 élément sélectionné}one{Supprimer # élément sélectionné}other{Supprimer # éléments sélectionnés}}</translation>
+<translation id="1633659023549081553">Découvrez de nouveaux contenus sur la page d'accueil de Chrome</translation>
 <translation id="1641113438599504367">Navigation sécurisée</translation>
 <translation id="164269334534774161">Vous regardez une copie hors connexion de cette page depuis le <ph name="CREATION_TIME" />.</translation>
 <translation id="1644574205037202324">Historique</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Faites glisser le curseur pour lire le texte aisément. Sa taille doit être similaire à celle-ci lorsque vous appuyez deux fois sur un paragraphe.</translation>
 <translation id="2323763861024343754">Données de site stockées</translation>
 <translation id="2328985652426384049">Impossible de se connecter</translation>
+<translation id="2342601525305963189">Astuces Chrome :</translation>
 <translation id="234265804618409743">Impossible d'ouvrir l'appareil photo. Un problème est survenu.</translation>
 <translation id="2345671828921229300">Pour faire une recherche, appuyez de manière prolongée sur un mot</translation>
 <translation id="2349710944427398404">Espace de stockage utilisé pour l'ensemble des données Chrome, y compris les comptes, favoris et paramètres enregistrés</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Les URL que vous consultez sont envoyées à Google</translation>
 <translation id="2536728043171574184">Affichage d'une copie hors connexion de la page</translation>
 <translation id="2546283357679194313">Cookies et données des sites</translation>
+<translation id="2558692642259318568">Pour naviguer sans enregistrer votre activité sur l'appareil, passez en mode navigation privée</translation>
 <translation id="2561519700418191927">Aperçus vidéo</translation>
 <translation id="2567385386134582609">IMAGE</translation>
 <translation id="2567545343356994513">Protection proactive et plus rapide contre les téléchargements, les extensions et les sites Web dangereux</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Numéro de carte</translation>
 <translation id="2625189173221582860">Mot de passe copié</translation>
 <translation id="2631006050119455616">Économisées</translation>
+<translation id="2634905176438867146">Découvrez comment définir Chrome comme navigateur par défaut</translation>
 <translation id="2645657967708199252">Votre connexion <ph name="CONNECTION_TYPE" /> risque de ralentir votre téléchargement</translation>
 <translation id="2647434099613338025">Ajouter une langue</translation>
 <translation id="2649068648233607930">Votre navigateur est géré par <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Suivi du prix activé</translation>
 <translation id="3037517125981011456">Permet d'afficher des invites de connexion à Chrome</translation>
 <translation id="3046945242843292318">Accédez plus vite à ce site la prochaine fois</translation>
+<translation id="3055259925215945098">Favori déplacé</translation>
 <translation id="305593374596241526">La localisation est désactivée. Activez-la dans les <ph name="BEGIN_LINK" />paramètres Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> favori}one{<ph name="BOOKMARKS_COUNT_MANY" /> favori}other{<ph name="BOOKMARKS_COUNT_MANY" /> favoris}}</translation>
 <translation id="3062802207422175757">Articles sur vos centres d'intérêt dans Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Enregistrer sur l'appareil</translation>
 <translation id="3236059992281584593">1 minute restante</translation>
 <translation id="3237087289225714896">Préchargement standard :</translation>
+<translation id="3237433641417325993">Faire défiler la page vers le bas pour voir les suggestions d'articles</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Si vous partagez aussi les rapports d'utilisation Chrome, ceux-ci incluent les URL que vous consultez</translation>
 <translation id="3250563604907490871">Les descriptions d'images seront réactivées lorsque vous vous connecterez au Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome n'a pas accès à la ressource demandée.</translation>
 <translation id="4837753911714442426">Afficher les options d'impression de la page</translation>
 <translation id="4842092870884894799">Affichage de la fenêtre contextuelle de génération de mot de passe</translation>
+<translation id="4842515939542199281">Pour lancer une recherche vocale, appuyer sur le micro</translation>
 <translation id="4850886885716139402">Afficher</translation>
 <translation id="4860895144060829044">Appeler</translation>
 <translation id="4864369630010738180">Connexion...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Données d'utilisation avancées</translation>
 <translation id="509429900233858213">Une erreur s'est produite.</translation>
 <translation id="510275257476243843">1 heure restante</translation>
+<translation id="5115811374190515607">vers <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Centres d'intérêt</translation>
 <translation id="5123685120097942451">Onglet de navigation privée</translation>
 <translation id="5126510351761255129">Valider votre carte</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Pour télécharger des fichiers, Chrome a besoin d'accéder à l'espace de stockage.</translation>
 <translation id="5749237766298580851">Désactivée <ph name="SEPARATOR" /> Non recommandé</translation>
 <translation id="5752232708629533680">Partager uniquement le GIF</translation>
+<translation id="5753139477036638699">Vous pouvez lancer une recherche vocale dans Chrome</translation>
 <translation id="5754350196967618083">Impossible d'actualiser Discover</translation>
 <translation id="5763382633136178763">Onglets de navigation privée</translation>
 <translation id="5763514718066511291">Appuyez pour copier l'URL pour cette application</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Se connecter à Chrome, ouvert.</translation>
 <translation id="6814033694018386318">Ce que vous partagez avec Google</translation>
 <translation id="6817747507826986771">Partagez rapidement cette page. Pour modifier ce raccourci, appuyez dessus de manière prolongée.</translation>
+<translation id="6819199143469632133">Pour récupérer vos contenus Google sur tous les appareils, connectez-vous</translation>
 <translation id="6820686453637990663">Code CVC :</translation>
 <translation id="6824899148643461612">"<ph name="TAB_TITLE" />", onglet, sélectionné</translation>
 <translation id="6828070228333235514">Arrêter le suivi du prix</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Téléchargement <ph name="ITEM_TITLE" /> restauré</translation>
 <translation id="7029390216614421513">Positionnez le code-barres/code QR dans ce cadre.</translation>
 <translation id="7029809446516969842">Mots de passe</translation>
+<translation id="7037830628447527439">Se connecter à Chrome avec votre compte Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Obtenir les descriptions d'images ?</translation>
 <translation id="7055152154916055070">Redirection bloquée :</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Impossible de télécharger cette langue. Réessayez plus tard.</translation>
 <translation id="8951232171465285730">Chrome vous a permis de gagner <ph name="MEGABYTES" /> Mo</translation>
 <translation id="8955719471735800169">Haut de page</translation>
+<translation id="8964479563882643397">Pour ouvrir un nouvel onglet de navigation privée, ouvrir le menu</translation>
 <translation id="8965591936373831584">en attente</translation>
 <translation id="8967427617812342790">Ajouter à liste lecture</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> onglet de navigation privée et <ph name="TAB_COUNT_ONE" /> autre onglet seront supprimés}one{<ph name="INCOGNITO_TAB_COUNT" /> onglet de navigation privée et <ph name="TAB_COUNT_MANY" /> autre onglet seront supprimés}other{<ph name="INCOGNITO_TAB_COUNT" /> onglet de navigation privée et <ph name="TAB_COUNT_MANY" /> autres onglets seront supprimés}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
index ef35faa..b012266 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Copia o nome de usuario</translation>
 <translation id="1592864538817356322">Protección estándar:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Quitar 1 elemento seleccionado}other{Quitar # elementos seleccionados}}</translation>
+<translation id="1633659023549081553">Descubre novo contido na páxina de inicio de Chrome</translation>
 <translation id="1641113438599504367">Navegación segura</translation>
 <translation id="164269334534774161">Estás vendo unha copia sen conexión desta páxina creada o <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historial</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Arrastra o control desprazable ata que poidas ler con comodidade. O texto debe ter polo menos este tamaño despois de facer dobre clic nun parágrafo.</translation>
 <translation id="2323763861024343754">Almacenamento do sitio</translation>
 <translation id="2328985652426384049">Non se puido iniciar sesión</translation>
+<translation id="2342601525305963189">Consellos de Chrome:</translation>
 <translation id="234265804618409743">Non se puido abrir a cámara. Produciuse un erro.</translation>
 <translation id="2345671828921229300">Para realizar buscas, mantén premida unha palabra</translation>
 <translation id="2349710944427398404">Datos totais usados por Chrome, incluídas as contas, os marcadores e a configuración gardada</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Os URL que visitas envíanselle a Google</translation>
 <translation id="2536728043171574184">Visualización dunha copia sen conexión desta páxina</translation>
 <translation id="2546283357679194313">Cookies e datos dos sitios</translation>
+<translation id="2558692642259318568">Se queres navegar sen que se garde a actividade no dispositivo, proba o modo de incógnito</translation>
 <translation id="2561519700418191927">Vistas previas de vídeos</translation>
 <translation id="2567385386134582609">IMAXE</translation>
 <translation id="2567545343356994513">Unha protección máis rápida e proactiva contra sitios web, descargas e extensións perigosos</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Número da tarxeta</translation>
 <translation id="2625189173221582860">Copiouse o contrasinal</translation>
 <translation id="2631006050119455616">Gardados</translation>
+<translation id="2634905176438867146">Descubre como configurar Chrome como navegador predeterminado</translation>
 <translation id="2645657967708199252">A túa conexión (<ph name="CONNECTION_TYPE" />) podería reducir a velocidade da descarga</translation>
 <translation id="2647434099613338025">Engadir idioma</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> xestiona o teu navegador</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Estase facendo un seguimento do prezo</translation>
 <translation id="3037517125981011456">Mostra solicitudes para iniciar sesión en Chrome</translation>
 <translation id="3046945242843292318">Accede a este sitio de forma máis rápida a próxima vez</translation>
+<translation id="3055259925215945098">Moveuse o marcador</translation>
 <translation id="305593374596241526">A localización está desactivada. Actívaa na <ph name="BEGIN_LINK" />configuración de Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> marcador}other{<ph name="BOOKMARKS_COUNT_MANY" /> marcadores}}</translation>
 <translation id="3062802207422175757">Artigos sobre os teus intereses en Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Gardar no dispositivo</translation>
 <translation id="3236059992281584593">Queda 1 minuto</translation>
 <translation id="3237087289225714896">Precarga estándar:</translation>
+<translation id="3237433641417325993">Desprázate cara abaixo para ver artigos suxeridos</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Se, ademais, compartes os informes de uso de Chrome, neles inclúense os URL que visitas</translation>
 <translation id="3250563604907490871">As descricións das imaxes retomaranse cando te conectes á wifi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome non ten acceso ao recurso solicitado.</translation>
 <translation id="4837753911714442426">Abrir opcións para imprimir a páxina</translation>
 <translation id="4842092870884894799">Mostrando ventá emerxente de xeración de contrasinais</translation>
+<translation id="4842515939542199281">Para facer buscas coa voz, toca o micrófono</translation>
 <translation id="4850886885716139402">Vista</translation>
 <translation id="4860895144060829044">Chamar</translation>
 <translation id="4864369630010738180">Iniciando sesión...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Datos de uso ampliados</translation>
 <translation id="509429900233858213">Produciuse un erro.</translation>
 <translation id="510275257476243843">Queda 1 hora</translation>
+<translation id="5115811374190515607">á seguinte localización: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Intereses</translation>
 <translation id="5123685120097942451">Pestana do modo de incógnito</translation>
 <translation id="5126510351761255129">Verificar a túa tarxeta</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome precisa acceder ao almacenamento para descargar ficheiros.</translation>
 <translation id="5749237766298580851">Desactivada <ph name="SEPARATOR" /> Non recomendado</translation>
 <translation id="5752232708629533680">Compartir só GIF</translation>
+<translation id="5753139477036638699">Podes utilizar a voz para facer buscas en Chrome</translation>
 <translation id="5754350196967618083">Non se puido actualizar Discover</translation>
 <translation id="5763382633136178763">Pestanas do modo de incógnito</translation>
 <translation id="5763514718066511291">Tocar para copiar o URL para esta aplicación</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Panel Iniciar sesión en Chrome (aberto).</translation>
 <translation id="6814033694018386318">Que compartes con Google?</translation>
 <translation id="6817747507826986771">Compartir rapidamente esta páxina. Para editar este atallo, mantén premido o botón.</translation>
+<translation id="6819199143469632133">Para acceder aos teus servizos de Google desde calquera dispositivo, inicia sesión</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, pestana, seleccionada</translation>
 <translation id="6828070228333235514">Deter seguimento do prezo</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Restaurouse <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Coloca o código QR ou o código de barras neste marco.</translation>
 <translation id="7029809446516969842">Contrasinais</translation>
+<translation id="7037830628447527439">Inicia sesión en Chrome coa túa Conta de Google</translation>
 <translation id="7038956721828960940">chrome_imaxe_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Queres obter descricións de imaxes?</translation>
 <translation id="7055152154916055070">Bloqueouse unha redirección:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" />: non se puido descargar este idioma. Téntao de novo máis tarde.</translation>
 <translation id="8951232171465285730">Chrome permitiuche aforrar <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Volver ao principio</translation>
+<translation id="8964479563882643397">Para abrir unha nova pestana do modo de incógnito, abre o menú</translation>
 <translation id="8965591936373831584">pendente</translation>
 <translation id="8967427617812342790">Engadir á lista de lectura</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Pecharanse <ph name="INCOGNITO_TAB_COUNT" /> pestanas de incógnito e <ph name="TAB_COUNT_ONE" /> pestana máis}other{Pecharanse <ph name="INCOGNITO_TAB_COUNT" /> pestanas de incógnito e <ph name="TAB_COUNT_MANY" /> pestanas máis}}</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 da5dd24d..7af7d12 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
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">વપરાશકર્તાનામ કૉપિ કરો</translation>
 <translation id="1592864538817356322">માનક સંરક્ષણ:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{પસંદ કરેલ 1 આઇટમ દૂર કરો}one{પસંદ કરેલ # આઇટમ દૂર કરો}other{પસંદ કરેલ # આઇટમ દૂર કરો}}</translation>
+<translation id="1633659023549081553">Chromeના હોમપેજ પર જઈને નવું કન્ટેન્ટ શોધો</translation>
 <translation id="1641113438599504367">સલામત બ્રાઉઝિંગ</translation>
 <translation id="164269334534774161">તમે <ph name="CREATION_TIME" />માંથી આ પેજની ઑફલાઇન કૉપિ જોઈ રહ્યા છો</translation>
 <translation id="1644574205037202324">ઇતિહાસ</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">જ્યાં સુધી તમે આ અનુકૂળ રીતે વાંચી ન શકો ત્યાં સુધી સ્લાઇડર ખેંચો. ફકરા પર ડબલ-ટેપિંગ પછી ટેક્સ્ટ ઓછામાં ઓછી આટલી મોટી દેખાવી જોઈએ.</translation>
 <translation id="2323763861024343754">સાઇટ સ્ટોરેજ</translation>
 <translation id="2328985652426384049">સાઇન ઇન કરી શકાતું નથી</translation>
+<translation id="2342601525305963189">Chrome વિશે ટિપ:</translation>
 <translation id="234265804618409743">તમારો કૅમેરા ખોલી શકતાં નથી. કંઈક ખોટું થયું.</translation>
 <translation id="2345671828921229300">કોઈ શબ્દને શોધવા માટે, ટચ કરીને થોડીવાર દબાવી રાખો</translation>
 <translation id="2349710944427398404">Chrome દ્વારા ઉપયોગમાં લેવાયેલી કુલ સ્ટોરેજ, એકાઉન્ટ, બુકમાર્ક અને સાચવેલા સેટિંગ સહિત</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">તમે જેની મુલાકાત લો તે URLs Googleને મોકલવામાં આવે છે</translation>
 <translation id="2536728043171574184">આ પેજની ઓફલાઇન કૉપિ જોઈ રહ્યા છે</translation>
 <translation id="2546283357679194313">કૂકીઝ અને સાઇટ ડેટા</translation>
+<translation id="2558692642259318568">તમારા ડિવાઇસ પર પ્રવૃત્તિ સાચવ્યા વિના બ્રાઉઝ કરવા માટે, છૂપો મોડ અજમાવી જુઓ</translation>
 <translation id="2561519700418191927">વીડિયોના પ્રીવ્યૂ</translation>
 <translation id="2567385386134582609">છબી</translation>
 <translation id="2567545343356994513">જોખમકારક વેબસાઇટ, ડાઉનલોડ અને એક્સ્ટેન્શન સામે વધુ ઝડપી તેમજ સક્રિય સંરક્ષણ</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">કાર્ડ નંબર</translation>
 <translation id="2625189173221582860">પાસવર્ડ કૉપિ કર્યો</translation>
 <translation id="2631006050119455616">બચાવેલ</translation>
+<translation id="2634905176438867146">Chromeને તમારા ડિફૉલ્ટ બ્રાઉઝર તરીકે સેટ કરવાની રીત જાણો</translation>
 <translation id="2645657967708199252">તમારું <ph name="CONNECTION_TYPE" /> કનેક્શન કદાચ ડાઉનલોડ કરવાની તમારી પ્રક્રિયાને ધીમી કરી શકે છે</translation>
 <translation id="2647434099613338025">ભાષા ઉમેરો</translation>
 <translation id="2649068648233607930">તમારું બ્રાઉઝર <ph name="DOMAIN" /> દ્વારા મેનેજ કરવામાં આવે છે</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">કિંમત ટ્રૅક કરી રહ્યાં છીએ</translation>
 <translation id="3037517125981011456">Chromeમાં સાઇન ઇન કરવા માટે સંકેતો બતાવે છે</translation>
 <translation id="3046945242843292318">આગલી વખતે આ સાઇટ પર ઝડપથી ઍક્સેસ મેળવો</translation>
+<translation id="3055259925215945098">બુકમાર્ક ખસેડ્યું</translation>
 <translation id="305593374596241526">સ્થાન બંધ છે, તેને <ph name="BEGIN_LINK" />Android સેટિંગ<ph name="END_LINK" />માં ચાલુ કરો.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> બુકમાર્ક}one{<ph name="BOOKMARKS_COUNT_MANY" /> બુકમાર્ક}other{<ph name="BOOKMARKS_COUNT_MANY" /> બુકમાર્ક}}</translation>
 <translation id="3062802207422175757">Chrome પર તમારી રુચિ વિશેના લેખ</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">ડિવાઇસમાં સાચવો</translation>
 <translation id="3236059992281584593">1 મિનિટ બાકી</translation>
 <translation id="3237087289225714896">પહેલેથી લોડ કરવાનો માનક મોડ:</translation>
+<translation id="3237433641417325993">સૂચવેલા લેખો જોવા માટે નીચેની તરફ સ્ક્રોલ કરો</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">જો તમે Chromeના વપરાશના રિપોર્ટ પણ શેર કરતા હો, તો તે રિપોર્ટમાં તમે મુલાકાત લો છો તે URLs શામેલ હોય છે</translation>
 <translation id="3250563604907490871">તમે વાઇ-ફાઇથી કનેક્ટ થશો ત્યારે છબીના વર્ણનોની સુવિધા ફરીથી કાર્ય કરશે</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome ને વિનંતી કરેલ સંસાધનની ઍક્સેસ નથી.</translation>
 <translation id="4837753911714442426">પેજને પ્રિન્ટ કરવાના વિકલ્પો ખોલો</translation>
 <translation id="4842092870884894799">પાસવર્ડ જનરેશન પોપઅપ દર્શાવે છે</translation>
+<translation id="4842515939542199281">તમારા વૉઇસ વડે શોધવા માટે, માઇક્રોફોન પર ટૅપ કરો</translation>
 <translation id="4850886885716139402">જુઓ</translation>
 <translation id="4860895144060829044">કૉલ કરો</translation>
 <translation id="4864369630010738180">સાઇન ઇન થઈ રહ્યું છે...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">વપરાશનો વધારાનો ડેટા</translation>
 <translation id="509429900233858213">કોઈ ભૂલ આવી છે.</translation>
 <translation id="510275257476243843">1 કલાક બાકી</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> પર</translation>
 <translation id="5118713593561876160">રુચિઓ</translation>
 <translation id="5123685120097942451">છૂપા મોડમાંની ટૅબ</translation>
 <translation id="5126510351761255129">તમારું કાર્ડ ચકાસો</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">ફાઇલો ડાઉનલોડ કરવા માટે Chromeને સ્ટોરેજ ઍક્સેસની જરૂર છે.</translation>
 <translation id="5749237766298580851">બંધ <ph name="SEPARATOR" /> આનો સુઝાવ આપવામાં આવતો નથી</translation>
 <translation id="5752232708629533680">માત્ર GIF શેર કરો</translation>
+<translation id="5753139477036638699">તમે Chromeમાં શોધવા માટે તમારા વૉઇસનો ઉપયોગ કરી શકો છો</translation>
 <translation id="5754350196967618083">Discover રિફ્રેશ કરી શકાતું નથી</translation>
 <translation id="5763382633136178763">છૂપા ટેબ્સ</translation>
 <translation id="5763514718066511291">આ ઍપ માટેની URL કૉપિ કરવા માટે ટૅપ કરો</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chromeમાં સાઇન ઇન કરવાની શીટ ખોલવામાં આવી.</translation>
 <translation id="6814033694018386318">તમે Google સાથે આ શેર કરો છો</translation>
 <translation id="6817747507826986771">આ પેજ ઝડપથી શેર કરો. આ શૉર્ટકટમાં ફેરફાર કરવા માટે, ટચ કરીને થોડીવાર દબાવી રાખો.</translation>
+<translation id="6819199143469632133">બધા ડિવાઇસ પર તમારી Google સામગ્રી મેળવવા માટે, સાઇન ઇન કરો</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, ટૅબ, પસંદ કરી</translation>
 <translation id="6828070228333235514">કિંમત ટ્રૅક કરવાનું બંધ કરો</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> રિસ્ટોર કર્યું</translation>
 <translation id="7029390216614421513">QR કોડ/બારકોડને આ ફ્રેમમાં મૂકો.</translation>
 <translation id="7029809446516969842">પાસવર્ડ</translation>
+<translation id="7037830628447527439">તમારા Google એકાઉન્ટ વડે Chromeમાં સાઇન ઇન કરો</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">છબીના વર્ણનો મેળવીએ?</translation>
 <translation id="7055152154916055070">રીડાયરેક્ટ કરવાનું બ્લૉક કરવામાં આવ્યું છે:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - આ ભાષા ડાઉનલોડ કરી શકાઈ નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation>
 <translation id="8951232171465285730">Chrome એ તમારો <ph name="MEGABYTES" /> MB ડેટા બચાવ્યો</translation>
 <translation id="8955719471735800169">સૌથી ઉપર પાછા જાઓ</translation>
+<translation id="8964479563882643397">કોઈ નવી છૂપી ટૅબ ખોલવા માટે, મેનૂ ખોલો</translation>
 <translation id="8965591936373831584">બાકી</translation>
 <translation id="8967427617812342790">વાંચન સૂચિમાં ઉમેરો</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> છૂપું અને વધુ <ph name="TAB_COUNT_ONE" /> ટૅબ બંધ કરવામાં આવશે}one{<ph name="INCOGNITO_TAB_COUNT" /> છૂપું અને વધુ <ph name="TAB_COUNT_MANY" /> ટૅબ બંધ કરવામાં આવશે}other{<ph name="INCOGNITO_TAB_COUNT" /> છૂપા અને વધુ <ph name="TAB_COUNT_MANY" /> ટૅબ બંધ કરવામાં આવશે}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
index b5b94601..b6801db 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Felhasználónév másolása</translation>
 <translation id="1592864538817356322">Normál védelem:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{1 kijelölt elem eltávolítása}other{# kijelölt elem eltávolítása}}</translation>
+<translation id="1633659023549081553">Fedezzen fel új tartalmakat a Chrome kezdőlapján</translation>
 <translation id="1641113438599504367">Biztonságos Böngészés</translation>
 <translation id="164269334534774161">Jelenleg az oldal <ph name="CREATION_TIME" />-i dátummal mentett offline példányát tekinti meg</translation>
 <translation id="1644574205037202324">Előzmények</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Húzza a csúszkát, amíg kényelmesen nem tudja olvasni a szöveget. A szövegnek legalább ekkorának kell lennie, miután duplán koppint egy bekezdésre.</translation>
 <translation id="2323763861024343754">Webhely tárhelye</translation>
 <translation id="2328985652426384049">Nem sikerült a bejelentkezés</translation>
+<translation id="2342601525305963189">Chrome-tippek:</translation>
 <translation id="234265804618409743">Nem lehet megnyitni a kamerát. Hiba történt.</translation>
 <translation id="2345671828921229300">A kereséshez tartsa lenyomva a kívánt szót</translation>
 <translation id="2349710944427398404">A Chrome által használt teljes adatmennyiség, beleértve a fiókokat, könyvjelzőket és mentett beállításokat is</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Az Ön által felkeresett URL-ek el lesznek küldve a Google-nak.</translation>
 <translation id="2536728043171574184">Az oldal offline példányának megtekintése</translation>
 <translation id="2546283357679194313">Cookie-k és webhelyadatok</translation>
+<translation id="2558692642259318568">Ha a tevékenységek eszközre való mentése nélkül szeretne böngészni, próbálja ki az inkognitó módot</translation>
 <translation id="2561519700418191927">Videó-előnézetek</translation>
 <translation id="2567385386134582609">KÉP</translation>
 <translation id="2567545343356994513">Gyorsabb, proaktív védelem a veszélyes webhelyek, letöltések és bővítmények ellen</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kártyaszám</translation>
 <translation id="2625189173221582860">Jelszó vágólapra másolva</translation>
 <translation id="2631006050119455616">Megtakarított</translation>
+<translation id="2634905176438867146">További információ arról, hogy miként állíthatja be a Chrome-ot alapértelmezett böngészőként</translation>
 <translation id="2645657967708199252">A(z) <ph name="CONNECTION_TYPE" /> kapcsolat lassíthatja a letöltést.</translation>
 <translation id="2647434099613338025">Nyelv hozzáadása</translation>
 <translation id="2649068648233607930">Böngészőjét a(z) <ph name="DOMAIN" /> kezeli</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Ár nyomon követése…</translation>
 <translation id="3037517125981011456">Értesítéseket jelenít meg a Chrome-ba való bejelentkezéshez</translation>
 <translation id="3046945242843292318">Következő alkalommal gyorsabban juthat el erre a webhelyre</translation>
+<translation id="3055259925215945098">Könyvjelző áthelyezve</translation>
 <translation id="305593374596241526">A Helyadatok szolgáltatás ki van kapcsolva; bekapcsolhatja az <ph name="BEGIN_LINK" />Android-beállításokban<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> könyvjelző}other{<ph name="BOOKMARKS_COUNT_MANY" /> könyvjelző}}</translation>
 <translation id="3062802207422175757">Az érdeklődési köreihez kapcsolódó cikkek a Chrome-ban</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Mentés az eszközre</translation>
 <translation id="3236059992281584593">1 perc van hátra</translation>
 <translation id="3237087289225714896">Normál előtöltés:</translation>
+<translation id="3237433641417325993">Görgessen le a javasolt cikkek megtekintéséhez</translation>
 <translation id="3244271242291266297">HH</translation>
 <translation id="3245429137663807393">Ha a Chrome használati jelentéseit is megosztja, ezek a jelentések tartalmazzák az Ön által felkeresett URL-eket.</translation>
 <translation id="3250563604907490871">A képleírások megjelenítése akkor folytatódik, ha csatlakozik Wi-Fi-hálózathoz</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">A Chrome nem fér hozzá a kért forráshoz.</translation>
 <translation id="4837753911714442426">Oldalnyomtatási lehetőségek megnyitása</translation>
 <translation id="4842092870884894799">Jelszógenerálás előugró ablakának megjelenítése</translation>
+<translation id="4842515939542199281">Ha hangalapú keresést szeretnél használni, koppintson a mikrofonra</translation>
 <translation id="4850886885716139402">Nézet</translation>
 <translation id="4860895144060829044">Hívás</translation>
 <translation id="4864369630010738180">Bejelentkezés...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Bővített használati adatok</translation>
 <translation id="509429900233858213">Hiba történt.</translation>
 <translation id="510275257476243843">1 óra van hátra</translation>
+<translation id="5115811374190515607">ide: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Érdeklődési körök</translation>
 <translation id="5123685120097942451">Inkognitó lap</translation>
 <translation id="5126510351761255129">Kártya ellenőrzése</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">A Chrome-nak tárhelyhozzáférésre van szüksége a fájlok letöltéséhez.</translation>
 <translation id="5749237766298580851">Ki <ph name="SEPARATOR" /> Nem javasolt</translation>
 <translation id="5752232708629533680">Csak GIF megosztása</translation>
+<translation id="5753139477036638699">A Chrome-ban hangja segítségével is kereshet</translation>
 <translation id="5754350196967618083">A Discover nem frissíthető</translation>
 <translation id="5763382633136178763">Inkognitó lapok</translation>
 <translation id="5763514718066511291">Koppintson az alkalmazás URL-jének másolásához</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Bejelentkezés a Chrome-ba, megnyitva.</translation>
 <translation id="6814033694018386318">Mik lesznek megosztva a Google-lal?</translation>
 <translation id="6817747507826986771">Az oldal gyors megosztása. A gyorsparancs szerkesztéséhez tartsa lenyomva.</translation>
+<translation id="6819199143469632133">Ha szeretné átvinni eszközei között Google-tartalmait, jelentkezzen be</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, lap, kiválasztva</translation>
 <translation id="6828070228333235514">Árkövetés leállítása</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Visszaállítás dátuma: <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Igazítsa a QR-kódot vagy vonalkódot ehhez a kerethez</translation>
 <translation id="7029809446516969842">Jelszavak</translation>
+<translation id="7037830628447527439">Jelentkezzen be a Chrome-ba Google-fiókjával</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Lekéri a képleírásokat?</translation>
 <translation id="7055152154916055070">Átirányítás letiltva:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – Ezt a nyelvet nem lehetett letölteni. Próbálja újra később.</translation>
 <translation id="8951232171465285730">A Chrome <ph name="MEGABYTES" /> MB-ot spórolt meg Önnek</translation>
 <translation id="8955719471735800169">Vissza az oldal tetejére</translation>
+<translation id="8964479563882643397">Új inkognitó lap megnyitásához nyissa meg a menüt</translation>
 <translation id="8965591936373831584">függőben</translation>
 <translation id="8967427617812342790">Hozzáadás olvasási listához</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> inkognitó és <ph name="TAB_COUNT_ONE" /> további lap lesz bezárva}other{<ph name="INCOGNITO_TAB_COUNT" /> inkognitó és <ph name="TAB_COUNT_MANY" /> további lap lesz bezárva}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
index ea8d7295..95051ca 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Salin nama pengguna</translation>
 <translation id="1592864538817356322">Perlindungan standar:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Hapus 1 item yang dipilih}other{Hapus # item yang dipilih}}</translation>
+<translation id="1633659023549081553">Temukan konten baru di halaman beranda Chrome</translation>
 <translation id="1641113438599504367">Safe Browsing</translation>
 <translation id="164269334534774161">Anda melihat salinan offline halaman ini dari <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Histori</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Geser ukuran teks sampai Anda dapat membacanya dengan nyaman. Teks akan terlihat setidaknya sebesar ini setelah Anda mengetuk sebuah paragraf dua kali.</translation>
 <translation id="2323763861024343754">Penyimpanan situs</translation>
 <translation id="2328985652426384049">Tidak dapat login</translation>
+<translation id="2342601525305963189">Tips Chrome:</translation>
 <translation id="234265804618409743">Tidak dapat membuka kamera Anda. Terjadi error.</translation>
 <translation id="2345671828921229300">Untuk menelusuri, sentuh lama sebuah kata</translation>
 <translation id="2349710944427398404">Total data yang digunakan oleh Chrome, termasuk akun, bookmark, dan setelan yang tersimpan</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL yang Anda buka akan dikirim ke Google</translation>
 <translation id="2536728043171574184">Melihat salinan offline halaman ini</translation>
 <translation id="2546283357679194313">Cookie dan data situs</translation>
+<translation id="2558692642259318568">Untuk menjelajah tanpa menyimpan aktivitas ke perangkat, coba tab Samaran</translation>
 <translation id="2561519700418191927">Pratinjau video</translation>
 <translation id="2567385386134582609">GAMBAR</translation>
 <translation id="2567545343356994513">Perlindungan lebih cepat dan lebih proaktif terhadap situs, download, dan ekstensi berbahaya</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Nomor kartu kredit</translation>
 <translation id="2625189173221582860">Sandi disalin</translation>
 <translation id="2631006050119455616">Dihemat</translation>
+<translation id="2634905176438867146">Pelajari cara menyetel chrome sebagai browser default</translation>
 <translation id="2645657967708199252">Koneksi <ph name="CONNECTION_TYPE" /> dapat memperlambat download</translation>
 <translation id="2647434099613338025">Tambah bahasa</translation>
 <translation id="2649068648233607930">Browser Anda dikelola oleh <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Memantau harga</translation>
 <translation id="3037517125981011456">Menampilkan perintah untuk login ke Chrome</translation>
 <translation id="3046945242843292318">Buka situs ini lebih cepat pada waktu berikutnya</translation>
+<translation id="3055259925215945098">Bookmark dipindahkan</translation>
 <translation id="305593374596241526">Lokasi nonaktif, aktifkan di <ph name="BEGIN_LINK" />Setelan Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> bookmark}other{<ph name="BOOKMARKS_COUNT_MANY" /> bookmark}}</translation>
 <translation id="3062802207422175757">Artikel di Chrome terkait minat Anda</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Simpan ke perangkat</translation>
 <translation id="3236059992281584593">1 menit lagi</translation>
 <translation id="3237087289225714896">Pramuat standar:</translation>
+<translation id="3237433641417325993">Scroll ke bawah untuk melihat artikel yang disarankan</translation>
 <translation id="3244271242291266297">BB</translation>
 <translation id="3245429137663807393">Jika Anda juga membagikan laporan penggunaan Chrome, laporan tersebut akan menyertakan URL yang Anda buka</translation>
 <translation id="3250563604907490871">Deskripsi gambar akan dilanjutkan saat Anda terhubung ke Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome tidak memiliki akses ke sumber daya yang diminta.</translation>
 <translation id="4837753911714442426">Membuka opsi untuk mencetak halaman</translation>
 <translation id="4842092870884894799">Menampilkan pop-up pembuatan sandi</translation>
+<translation id="4842515939542199281">Untuk menelusuri dengan suara, ketuk mikrofon</translation>
 <translation id="4850886885716139402">Lihat</translation>
 <translation id="4860895144060829044">Telepon</translation>
 <translation id="4864369630010738180">Login...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Data penggunaan yang diperluas</translation>
 <translation id="509429900233858213">Terjadi kesalahan.</translation>
 <translation id="510275257476243843">1 jam lagi</translation>
+<translation id="5115811374190515607">ke <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Minat</translation>
 <translation id="5123685120097942451">Tab samaran</translation>
 <translation id="5126510351761255129">Verifikasi kartu</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome memerlukan akses penyimpanan untuk mendownload file.</translation>
 <translation id="5749237766298580851">Nonaktif <ph name="SEPARATOR" /> Tidak direkomendasikan</translation>
 <translation id="5752232708629533680">Hanya bagikan GIF</translation>
+<translation id="5753139477036638699">Anda dapat menggunakan suara untuk menelusuri di Chrome</translation>
 <translation id="5754350196967618083">Tidak dapat memuat ulang Discover</translation>
 <translation id="5763382633136178763">Tab samaran</translation>
 <translation id="5763514718066511291">Ketuk untuk menyalin URL aplikasi ini</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Login ke Chrome, dibuka.</translation>
 <translation id="6814033694018386318">Yang Anda bagikan kepada Google</translation>
 <translation id="6817747507826986771">Bagikan halaman ini dengan cepat. Sentuh lama untuk mengedit pintasan ini.</translation>
+<translation id="6819199143469632133">Login untuk mendapatkan produk dan layanan Google di seluruh perangkat</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">Tab <ph name="TAB_TITLE" /> dipilih</translation>
 <translation id="6828070228333235514">Berhenti memantau harga</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Memulihkan <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Letakkan Kode batang/QR dalam bingkai ini.</translation>
 <translation id="7029809446516969842">Sandi</translation>
+<translation id="7037830628447527439">Login ke Chrome dengan Akun Google Anda</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Dapatkan deskripsi gambar?</translation>
 <translation id="7055152154916055070">Pengalihan diblokir:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Bahasa ini tidak dapat didownload. Coba lagi nanti.</translation>
 <translation id="8951232171465285730">Chrome telah menghemat <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Kembali ke atas</translation>
+<translation id="8964479563882643397">Untuk membuka tab Samaran baru, buka menu</translation>
 <translation id="8965591936373831584">ditunda</translation>
 <translation id="8967427617812342790">Tambahkan ke daftar bacaan</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> tab samaran dan <ph name="TAB_COUNT_ONE" /> tab lainnya akan ditutup}other{<ph name="INCOGNITO_TAB_COUNT" /> tab samaran dan <ph name="TAB_COUNT_MANY" /> tab lainnya akan ditutup}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
index 4fb87a0..ee0316b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Afrita notandanafn</translation>
 <translation id="1592864538817356322">Hefðbundin vörn:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Fjarlægja 1 valið atriði}one{Fjarlægja # valið atriði}other{Fjarlægja # valin atriði}}</translation>
+<translation id="1633659023549081553">Uppgötvaðu nýtt efni á heimasíðu Chrome</translation>
 <translation id="1641113438599504367">Örugg vefnotkun</translation>
 <translation id="164269334534774161">Þú ert að skoða ónettengt afrit af þessari síðu frá <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Ferill</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Dragðu sleðann þangað til þú getur lesið þetta áreynslulaust. Texti ætti að vera að minnsta kosti svona stór eftir að ýtt hefur verið tvisvar á efnisgrein.</translation>
 <translation id="2323763861024343754">Geymsla vefsvæða</translation>
 <translation id="2328985652426384049">Innskráning mistókst</translation>
+<translation id="2342601525305963189">Ábendingar fyrir Chrome:</translation>
 <translation id="234265804618409743">Ekki tókst að opna myndavélina. Eitthvað fór úrskeiðis.</translation>
 <translation id="2345671828921229300">Haltu fingri á orði til að leita</translation>
 <translation id="2349710944427398404">Gögn sem Chrome notar alls, þ.m.t. reikningar, bókamerki og vistaðar stillingar</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Vefslóðir sem þú opnar eru sendar til Google</translation>
 <translation id="2536728043171574184">Skoðar ótengt afrit af þessari síðu</translation>
 <translation id="2546283357679194313">Fótspor og gögn vefsvæða</translation>
+<translation id="2558692642259318568">Prófaðu að nota huliðsstillinguna til að vafra án þess að vista virkni í tækinu</translation>
 <translation id="2561519700418191927">Forskoðun myndskeiða</translation>
 <translation id="2567385386134582609">MYND</translation>
 <translation id="2567545343356994513">Hraðari forvirk vörn gegn hættulegum vefsvæðum, niðurhali og viðbótum</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kortanúmer</translation>
 <translation id="2625189173221582860">Aðgangsorð afritað</translation>
 <translation id="2631006050119455616">Vistað</translation>
+<translation id="2634905176438867146">Kynntu þér hvernig þú gerir Chrome að sjálfgefnum vafra</translation>
 <translation id="2645657967708199252"><ph name="CONNECTION_TYPE" /> tengingin þín gæti hægt á niðurhalinu</translation>
 <translation id="2647434099613338025">Bæta tungumáli við</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> hefur umsjón með vafranum þínum</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Vaktar verð</translation>
 <translation id="3037517125981011456">Sýnir innskráningartilkynningar í Chrome</translation>
 <translation id="3046945242843292318">Opna þetta vefsvæði hraðar í næsta sinn</translation>
+<translation id="3055259925215945098">Bókamerki fært</translation>
 <translation id="305593374596241526">Slökkt er á staðsetningum. Kveiktu á þeim í <ph name="BEGIN_LINK" />stillingum Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> bókamerki}one{<ph name="BOOKMARKS_COUNT_MANY" /> bókamerki}other{<ph name="BOOKMARKS_COUNT_MANY" /> bókamerki}}</translation>
 <translation id="3062802207422175757">Greinar sem tengjast áhugamálum þínum í Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Vista í tæki</translation>
 <translation id="3236059992281584593">Ein mín. eftir</translation>
 <translation id="3237087289225714896">Hefðbundin forhleðsla:</translation>
+<translation id="3237433641417325993">Flettu niður til að sjá tillögur að greinum</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Ef þú deilir einnig Chrome notkunarskýrslum innihalda þær skýrslur vefslóðirnar sem þú opnar</translation>
 <translation id="3250563604907490871">Lýsingar á myndum birtast á ný þegar tengst er Wi-Fi neti</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome hefur ekki aðgang að umbeðnu tilfangi.</translation>
 <translation id="4837753911714442426">Opna valkosti fyrir prentun síðunnar</translation>
 <translation id="4842092870884894799">Sýnir sprettiglugga fyrir myndun aðgangsorðs</translation>
+<translation id="4842515939542199281">Ýttu á hljóðnemann til að leita með röddinni</translation>
 <translation id="4850886885716139402">Yfirlit</translation>
 <translation id="4860895144060829044">Hringja</translation>
 <translation id="4864369630010738180">Skráir inn...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Ítarleg notkunargögn</translation>
 <translation id="509429900233858213">Villa kom upp.</translation>
 <translation id="510275257476243843">Ein klst. eftir</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Áhugasvið</translation>
 <translation id="5123685120097942451">Huliðsflipi</translation>
 <translation id="5126510351761255129">Staðfestu kortið þitt</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome þarf aðgang að geymslu til að geta sótt skrár.</translation>
 <translation id="5749237766298580851">Slökkt <ph name="SEPARATOR" /> Ekki mælt með</translation>
 <translation id="5752232708629533680">Aðeins deila GIF</translation>
+<translation id="5753139477036638699">Þú getur notað röddina til að leita í Chrome</translation>
 <translation id="5754350196967618083">Ekki er hægt að endurnýja Tillögur</translation>
 <translation id="5763382633136178763">Huliðsflipar</translation>
 <translation id="5763514718066511291">Ýttu til að afrita vefslóðina fyrir þetta forrit</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Skrá inn á Chrome, opnað.</translation>
 <translation id="6814033694018386318">Eftirfarandi deilir þú með Google</translation>
 <translation id="6817747507826986771">Deildu þessari síðu á skjótan hátt. Haltu fingri á þessari flýtileið til að breyta henni.</translation>
+<translation id="6819199143469632133">Skráðu þig inn til að fá aðgang að Google efninu þínu í öllum tækjum</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, flipi, valinn</translation>
 <translation id="6828070228333235514">Hætta að vakta verð</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Endurheimti <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Staðsettu QR-kóðann eða strikamerkið innan rammans.</translation>
 <translation id="7029809446516969842">Aðgangsorð</translation>
+<translation id="7037830628447527439">Skráðu þig inn á Chrome með Google reikningnum þínum</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Fá myndlýsingar?</translation>
 <translation id="7055152154916055070">Lokað á framsendingu:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Ekki tókst að hlaða þessu tungumáli niður. Reyndu aftur síðar.</translation>
 <translation id="8951232171465285730">Chrome hefur sparað þér <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Efst á síðu</translation>
+<translation id="8964479563882643397">Opnaðu valmyndina til að opna nýjan huliðsflipa</translation>
 <translation id="8965591936373831584">bíður</translation>
 <translation id="8967427617812342790">Bæta við leslista</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> huliðsflipa og <ph name="TAB_COUNT_ONE" /> flipa til viðbótar verður lokað}one{<ph name="INCOGNITO_TAB_COUNT" /> huliðsflipa og <ph name="TAB_COUNT_MANY" /> flipa til viðbótar verður lokað}other{<ph name="INCOGNITO_TAB_COUNT" /> huliðsflipa og <ph name="TAB_COUNT_MANY" /> flipum til viðbótar verður lokað}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
index ef06faa..dd7750c4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">העתקת שם משתמש</translation>
 <translation id="1592864538817356322">הגנה רגילה:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{הסרת פריט אחד שנבחר}two{הסרת # פריטים שנבחרו}many{הסרת # פריטים שנבחרו}other{הסרת # פריטים שנבחרו}}</translation>
+<translation id="1633659023549081553">‏מגלים תוכן חדש בדף הבית של Chrome</translation>
 <translation id="1641113438599504367">גלישה בטוחה</translation>
 <translation id="164269334534774161">זהו עותק אופליין של הדף הזה מ-<ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">היסטוריה</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">יש לגרור את המחוון עד שאפשר יהיה לקרוא את הקטע הזה בצורה נוחה. לאחר הקשה פעמיים על פיסקה, הטקסט אמור להיות מוצג בגודל הזה לפחות.</translation>
 <translation id="2323763861024343754">נתוני אתר מאוחסנים</translation>
 <translation id="2328985652426384049">אי אפשר להיכנס לחשבון</translation>
+<translation id="2342601525305963189">‏טיפים של Chrome:</translation>
 <translation id="234265804618409743">לא ניתן לפתוח את המצלמה. משהו השתבש.</translation>
 <translation id="2345671828921229300">כדי לבצע חיפוש, יש ללחוץ לחיצה ארוכה על מילה</translation>
 <translation id="2349710944427398404">‏סך כל הנתונים שבהם משתמש Chrome, כולל חשבונות, סימניות והגדרות שמורות</translation>
@@ -263,9 +265,10 @@
 <translation id="2534582914273493287">‏כתובות URL שבהן ביקרת יישלחו אל Google</translation>
 <translation id="2536728043171574184">מוצג העתק לא מקוון של עמוד זה</translation>
 <translation id="2546283357679194313">‏נתוני אתר וקובצי Cookie</translation>
+<translation id="2558692642259318568">אם לא רוצים שפעילות הגלישה תישמר במכשיר, אפשר לנסות את המצב הפרטי</translation>
 <translation id="2561519700418191927">תצוגות מקדימות של סרטונים</translation>
 <translation id="2567385386134582609">תמונה</translation>
-<translation id="2567545343356994513">הגנה פרואקטיבית ומהירה יותר מפני אתרים, הורדות ותוספים מסוכנים</translation>
+<translation id="2567545343356994513">הגנה מהירה יותר ואקטיבית מפני אתרים, הורדות ותוספים מסוכנים</translation>
 <translation id="2571711316400087311">‏הצעה לשלוח דפים בשפות אחרות ל-Google Translate</translation>
 <translation id="2581165646603367611">‏פעולה זו תמחק את קובצי ה-Cookie, את המטמון ונתונים אחרים של אתרים ש-Chrome לא מחשיב כחשובים.</translation>
 <translation id="2587052924345400782">יש גרסה חדשה יותר</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">מספר הכרטיס</translation>
 <translation id="2625189173221582860">הסיסמה הועתקה</translation>
 <translation id="2631006050119455616">חסכת</translation>
+<translation id="2634905176438867146">‏כך מגדירים את Chrome כדפדפן ברירת המחדל</translation>
 <translation id="2645657967708199252">חיבור ה-<ph name="CONNECTION_TYPE" /> עשוי להאט את ההורדה</translation>
 <translation id="2647434099613338025">להוספת שפה</translation>
 <translation id="2649068648233607930">הדפדפן שלך מנוהל על ידי <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">המחיר במעקב</translation>
 <translation id="3037517125981011456">‏יוצגו הודעות לצורך כניסה אל Chrome</translation>
 <translation id="3046945242843292318">בפעם הבאה ניתן יהיה להיכנס לאתר מהר יותר</translation>
+<translation id="3055259925215945098">הסימניה הועברה</translation>
 <translation id="305593374596241526">‏הגישה למיקום כבויה. יש להפעיל אותה ב<ph name="BEGIN_LINK" />הגדרות Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{סימנייה אחת (<ph name="BOOKMARKS_COUNT_ONE" />)}two{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}many{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}other{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}}</translation>
 <translation id="3062802207422175757">‏ב-Chrome מחכים לך מאמרים בנושאים שמעניינים אותך</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">שמירה במכשיר</translation>
 <translation id="3236059992281584593">נותרה דקה אחת</translation>
 <translation id="3237087289225714896">טעינה רגילה מראש:</translation>
+<translation id="3237433641417325993">גוללים למטה כדי להציג את המאמרים המומלצים</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">‏אם בנוסף ישותפו דוחות שימוש ב-Chrome, הדוחות האלה יכללו את כתובות ה-URL שבהן ביקרת</translation>
 <translation id="3250563604907490871">‏תיאורי תמונות יופיעו כשיהיה חיבור ל-Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">‏ל-Chrome אין גישה למשאב המבוקש.</translation>
 <translation id="4837753911714442426">פתיחת אפשרויות להדפסת דפים</translation>
 <translation id="4842092870884894799">הצגת החלון הקופץ של יצירת סיסמה</translation>
+<translation id="4842515939542199281">כדי לחפש באמצעות הקול, מקישים על המיקרופון</translation>
 <translation id="4850886885716139402">הצגה</translation>
 <translation id="4860895144060829044">תרימו טלפון</translation>
 <translation id="4864369630010738180">מתבצעת כניסה...</translation>
@@ -678,7 +685,7 @@
 <translation id="4943872375798546930">אין תוצאות</translation>
 <translation id="4957722034734105353">למידע נוסף...</translation>
 <translation id="4961107849584082341">אפשר לתרגם את הדף הזה לשפה כלשהי</translation>
-<translation id="4971735654804503942">‏הגנה פרואקטיבית ומהירה יותר מפני אתרים, הורדות ותוספים מסוכנים. המערכת מזהירה אותך בנוגע לחשיפה של סיסמאות. כשמצב ההגנה הזה בשימוש, נתוני גלישה נשלחים אל Google.</translation>
+<translation id="4971735654804503942">‏הגנה מהירה יותר ואקטיבית מפני אתרים, הורדות ותוספים מסוכנים. המערכת מזהירה אותך בנוגע לחשיפה של סיסמאות. כשמצב ההגנה הזה בשימוש, נתוני גלישה נשלחים אל Google.</translation>
 <translation id="497421865427891073">ניווט קדימה</translation>
 <translation id="4988210275050210843">מתבצעת הורדה של קובץ (<ph name="MEGABYTES" />).</translation>
 <translation id="4988526792673242964">דפים</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">נתונים נוספים על השימוש במכשיר</translation>
 <translation id="509429900233858213">אירעה שגיאה.</translation>
 <translation id="510275257476243843">נותרה שעה אחת</translation>
+<translation id="5115811374190515607">אל <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">תחומי עניין</translation>
 <translation id="5123685120097942451">כרטיסייה אנונימית</translation>
 <translation id="5126510351761255129">אימות הכרטיס</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">‏לצורך הורדת קבצים, Chrome זקוק לגישה לאחסון.</translation>
 <translation id="5749237766298580851">כבויה <ph name="SEPARATOR" /> לא מומלץ</translation>
 <translation id="5752232708629533680">‏שיתוף קובץ GIF בלבד</translation>
+<translation id="5753139477036638699">‏יש לך אפשרות להשתמש בקול כדי לחפש ב-Chrome</translation>
 <translation id="5754350196967618083">‏לא ניתן לרענן את Discover</translation>
 <translation id="5763382633136178763">כרטיסיות אנונימיות</translation>
 <translation id="5763514718066511291">הקשה מעתיקה את כתובת האתר של האפליקציה הזו</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">‏כניסה ל-Chrome, פתוח.</translation>
 <translation id="6814033694018386318">‏מה משתפים עם Google</translation>
 <translation id="6817747507826986771">שיתוף הדף הזה במהירות. ניתן לערוך את קיצור הדרך הזה בלחיצה ארוכה.</translation>
+<translation id="6819199143469632133">‏כדי לגשת לדברים שלך ב-Google מכל מיני מכשירים, עליך להיכנס לחשבון</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">הכרטיסייה, <ph name="TAB_TITLE" />, נבחרה</translation>
 <translation id="6828070228333235514">הפסקת המעקב אחר מחירים</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">בוצע שחזור של <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">‏ממקמים את קוד ה-QR או הברקוד במסגרת הזו.</translation>
 <translation id="7029809446516969842">סיסמאות</translation>
+<translation id="7037830628447527439">‏אפשר להיכנס לחשבון Google ב-Chrome</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">רוצה לקבל תיאורי תמונות?</translation>
 <translation id="7055152154916055070">הפניה אוטומטית נחסמה:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - לא ניתן היה להוריד את השפה הזו. יש לנסות שוב מאוחר יותר.</translation>
 <translation id="8951232171465285730">‏Chrome חסך לך ‎<ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">חזרה למעלה</translation>
+<translation id="8964479563882643397">כדי לפתוח כרטיסייה פרטית חדשה, פותחים את התפריט</translation>
 <translation id="8965591936373831584">בהמתנה</translation>
 <translation id="8967427617812342790">הוסף לרשימת הקריאה</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{כרטיסיית מצב אנונימי אחת (<ph name="INCOGNITO_TAB_COUNT" />) וכרטיסייה אחת (<ph name="TAB_COUNT_ONE" />) נוספת ייסגרו}two{כרטיסיית מצב אנונימי אחת (<ph name="INCOGNITO_TAB_COUNT" />) ו-<ph name="TAB_COUNT_MANY" /> כרטיסיות נוספות ייסגרו}many{כרטיסיית מצב אנונימי אחת (<ph name="INCOGNITO_TAB_COUNT" />) ו-<ph name="TAB_COUNT_MANY" /> כרטיסיות נוספות ייסגרו}other{כרטיסיית מצב אנונימי אחת (<ph name="INCOGNITO_TAB_COUNT" />) ו-<ph name="TAB_COUNT_MANY" /> כרטיסיות נוספות ייסגרו}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
index a8e56870..0a57bf28 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">მომხმარებლის სახელის კოპირება</translation>
 <translation id="1592864538817356322">სტანდარტული დაცვა:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{1 არჩეული ერთეულის ამოშლა}other{# არჩეული ერთეულის ამოშლა}}</translation>
+<translation id="1633659023549081553">აღმოაჩინეთ ახალი კონტენტი Chrome-ის მთავარ გვერდზე</translation>
 <translation id="1641113438599504367">Safe Browsing</translation>
 <translation id="164269334534774161">თქვენ ამ გვერდის ხაზგარეშე ასლს ნახულობთ, რომლის შექმნის თარიღია: <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">ისტორია</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">გადაათრიეთ ცოცია, რათა აირჩიოთ კითხვისთვის ყველაზე მოსახერხებელი შრიფტის ზომა. აბზაცზე ორჯერ შეხების შედეგად ტექსტი უნდა გადიდდეს ამ ზომამდე.</translation>
 <translation id="2323763861024343754">საიტების მეხსიერება</translation>
 <translation id="2328985652426384049">სისტემაში შესვლა ვერ მოხერხდა</translation>
+<translation id="2342601525305963189">Chrome-ის მინიშნებები:</translation>
 <translation id="234265804618409743">კამერის გახსნა ვერ მოხერხდა. წარმოიქმნა შეფერხება.</translation>
 <translation id="2345671828921229300">ძიებისთვის ხანგრძლივად შეეხეთ სიტყვას</translation>
 <translation id="2349710944427398404">Chrome-ის მიერ გამოყენებული მეხსიერების საერთო მოცულობა, რომელშიც ინახება ანგარიშები, სანიშნეები და შენახული პარამეტრები</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">თქვენ მიერ მონახულებული URL-ები ეგზავნება Google-ს</translation>
 <translation id="2536728043171574184">თქვენ ამ გვერდის ხაზგარეშე ასლს ნახულობთ</translation>
 <translation id="2546283357679194313">ქუქი-ფაილები და საიტის მონაცემები</translation>
+<translation id="2558692642259318568">ვები მოწყობილობაზე თქვენი აქტივობის შენახვის გარეშე რომ დაათვალიეროთ, ცადეთ ინკოგნიტო რეჟიმი</translation>
 <translation id="2561519700418191927">ვიდეოების გადასახედი ვერსიები</translation>
 <translation id="2567385386134582609">სურათი</translation>
 <translation id="2567545343356994513">უფრო სწრაფი, პროაქტიული დაცვა სახიფათო ვებსაიტებისგან, ჩამოტვირთვებისა და გაფართოებებისგან</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">ბარათის ნომერი</translation>
 <translation id="2625189173221582860">პაროლი დაკოპირდა</translation>
 <translation id="2631006050119455616">დაზოგილი</translation>
+<translation id="2634905176438867146">შეიტყვეთ, როგორ დააყენოთ Chrome ნაგულისხმევად</translation>
 <translation id="2645657967708199252">თქვენმა <ph name="CONNECTION_TYPE" /> კავშირმა, შესაძლოა, შეანელოს ჩამოტვირთვა</translation>
 <translation id="2647434099613338025">დაამატე ენა</translation>
 <translation id="2649068648233607930">თქვენს ბრაუზერს მართავს <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">ფასისთვის თვალის მიდევნება</translation>
 <translation id="3037517125981011456">გამოაჩენს Chrome-ში შესვლის მოთხოვნებს</translation>
 <translation id="3046945242843292318">შემდეგში ეწვიეთ ამ საიტს უფრო სწრაფად</translation>
+<translation id="3055259925215945098">სანიშნე გადატანილია</translation>
 <translation id="305593374596241526">მდებარეობა გამორთულია, ჩართეთ ის <ph name="BEGIN_LINK" />Android-ის პარამეტრებიდან<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> სანიშნე}other{<ph name="BOOKMARKS_COUNT_MANY" /> სანიშნე}}</translation>
 <translation id="3062802207422175757">თქვენს ინტერესებთან დაკავშირებული სტატიები Chrome-ში</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">მოწყობილობაში შენახვა</translation>
 <translation id="3236059992281584593">დარჩენილია 1 წთ</translation>
 <translation id="3237087289225714896">სტანდარტული წინაწარი ჩატვირთვა:</translation>
+<translation id="3237433641417325993">შემოთავაზებული სტატიების სანახავად გადადით ქვემოთ</translation>
 <translation id="3244271242291266297">თთ</translation>
 <translation id="3245429137663807393">თუ თქვენ აზიარებთ Chrome-ის მოხმარების ანგარიშებსაც, ეს ანგარიშები ასევე მოიცავს თქვენ მიერ მონახულებულ URL-ებს</translation>
 <translation id="3250563604907490871">სურათების აღწერა გაგრძელდება, როცა Wi-Fi ქსელს დაუკავშირდებით</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome-ს მოთხოვნილ რესურსზე წვდომა არ აქვს.</translation>
 <translation id="4837753911714442426">გვერდის ბეჭდვის ვარიანტების გახსნა</translation>
 <translation id="4842092870884894799">პაროლების გენერირების კონტექსტური ფანჯრის ჩვენება</translation>
+<translation id="4842515939542199281">ხმის მეშვეობით ძიებისთვის შეეხეთ მიკროფონს</translation>
 <translation id="4850886885716139402">გადახედვა</translation>
 <translation id="4860895144060829044">დარეკვა</translation>
 <translation id="4864369630010738180">მიმდინარეობს შესვლა…</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">გამოყენების გაფართოებული მონაცემები</translation>
 <translation id="509429900233858213">შეცდომა მოხდა.</translation>
 <translation id="510275257476243843">დარჩენილია 1 საათი</translation>
+<translation id="5115811374190515607">აქ: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">ინტერესები</translation>
 <translation id="5123685120097942451">ინკოგნიტო ჩანართი</translation>
 <translation id="5126510351761255129">დაადასტურეთ თქვენი ბარათი</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">ფაილების ჩამოსატვირთად Chrome საცავზე წვდომას საჭიროებს.</translation>
 <translation id="5749237766298580851">გამორთული <ph name="SEPARATOR" /> არ არის რეკომენდებული</translation>
 <translation id="5752232708629533680">მხოლოდ GIF-ის გაზიარება</translation>
+<translation id="5753139477036638699">Chrome-ში ძიება ხმის მეშვეობითაც შეგიძლიათ</translation>
 <translation id="5754350196967618083">Discover-ის განახლება ვერ ხერხდება</translation>
 <translation id="5763382633136178763">ინკოგნიტო ჩანართები</translation>
 <translation id="5763514718066511291">შეეხეთ ამ აპის URL-ის კოპირებისთვის</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chrome-ში შესვლა, გახსნილია.</translation>
 <translation id="6814033694018386318">თქვენ მიერ Google-თან გაზიარებული კონტენტი</translation>
 <translation id="6817747507826986771">სწრაფად გააზიარეთ ეს გვერდი. ამ მალსახმობის რედაქტირებისთვის შეეხეთ ხანგრძლივად.</translation>
+<translation id="6819199143469632133">თქვენი Google კონტენტით თქვენს ყველა მოწყობილობაზე რომ ისარგებლოთ, შედით სისტემაში</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, ჩანართი, არჩეულია</translation>
 <translation id="6828070228333235514">თვალის მიდევნების შეწყვეტა</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">აღდგენის თარიღი: <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">მოათავსეთ QR კოდი ან შტრიხკოდი ამ ჩარჩოში.</translation>
 <translation id="7029809446516969842">პაროლები</translation>
+<translation id="7037830628447527439">შედით Chrome-ში თქვენი Google ანგარიშით</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">გსურთ სურათების აღწერილობების მიღება?</translation>
 <translation id="7055152154916055070">გადამისამართება დაიბლოკა:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> — ამ ენის ჩამოტვირთვა ვერ მოხერხდა. ცადეთ მოგვიანებით.</translation>
 <translation id="8951232171465285730">Chrome-ის მეშვეობით თქვენ <ph name="MEGABYTES" /> მბაიტი დაზოგეთ</translation>
 <translation id="8955719471735800169">გვერდის დასაწყისში</translation>
+<translation id="8964479563882643397">ახალი ინკოგნიტო ჩანართის გასახსნელად გახსენით მენიუ</translation>
 <translation id="8965591936373831584">მომლოდინე</translation>
 <translation id="8967427617812342790">საკითხავ სიაში დამატება</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> ინკოგნიტო და <ph name="TAB_COUNT_ONE" /> სხვა ჩანართი დაიხურება}other{<ph name="INCOGNITO_TAB_COUNT" /> ინკოგნიტო და <ph name="TAB_COUNT_MANY" /> სხვა ჩანართი დაიხურება}}</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 24c7fd9..6844464 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
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Пайдаланушы атын көшіру</translation>
 <translation id="1592864538817356322">Стандартты қорғау:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Таңдалған 1 элементті өшіру}other{Таңдалған # элементті өшіру}}</translation>
+<translation id="1633659023549081553">Chrome-ның негізгі бетінен жаңа мазмұнды көріңіз.</translation>
 <translation id="1641113438599504367">Қауіпсіз шолу</translation>
 <translation id="164269334534774161">Осы беттің <ph name="CREATION_TIME" /> күнгі офлайн көшірмесі шығарылды</translation>
 <translation id="1644574205037202324">Тарих</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Сырғытпаны оқу ыңғайлы болғанға дейін сүйреңіз. Абзацты екі рет басқан кезде, мәтіннің үлкендігі осындай болуы керек.</translation>
 <translation id="2323763861024343754">Сайт деректері</translation>
 <translation id="2328985652426384049">Кіру мүмкін емес</translation>
+<translation id="2342601525305963189">Chrome браузеріне қатысты кеңестер:</translation>
 <translation id="234265804618409743">Камера ашылмайды. Бірдеңе дұрыс болмады.</translation>
 <translation id="2345671828921229300">Іздеу үшін сөзді басып тұрыңыз.</translation>
 <translation id="2349710944427398404">Chrome пайдаланатын жалпы деректер, соның ішінде аккаунттар, бетбелгілер және сақталған параметрлер</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Сіз кірген URL мекенжайлары Google-ға жіберіледі.</translation>
 <translation id="2536728043171574184">Бұл беттің желіден тыс күйдегі көшірмесі көрсетілуде</translation>
 <translation id="2546283357679194313">Cookie файлдары және торап деректері</translation>
+<translation id="2558692642259318568">Әрекетті құрылғыға сақтамай іздеу үшін Инкогнито режимін пайдаланып көріңіз.</translation>
 <translation id="2561519700418191927">Бейнені алдын ала қарау</translation>
 <translation id="2567385386134582609">КЕСКІН</translation>
 <translation id="2567545343356994513">Қауіпті веб-сайттардан, жүктеп алынған файлдардан және кеңейтімдерден жылдам әрі белсенді қорғаныс.</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Карта нөмірі</translation>
 <translation id="2625189173221582860">Құпия сөз көшірілді</translation>
 <translation id="2631006050119455616">Сақталған</translation>
+<translation id="2634905176438867146">Chrome браузерін әдепкі етіп орнату жолын біліңіз.</translation>
 <translation id="2645657967708199252"><ph name="CONNECTION_TYPE" /> байланысы жүктеп алуды баяулатуы мүмкін.</translation>
 <translation id="2647434099613338025">Тіл қосу</translation>
 <translation id="2649068648233607930">Браузерді <ph name="DOMAIN" /> басқарады</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Баға бақылануда</translation>
 <translation id="3037517125981011456">Chrome-ға кіру нұсқауларын көрсетеді.</translation>
 <translation id="3046945242843292318">Келесіде бұл сайтқа жылдам кіріңіз.</translation>
+<translation id="3055259925215945098">Бетбелгі жылжытылды</translation>
 <translation id="305593374596241526">Орынды анықтау қызметі өшірулі; оны <ph name="BEGIN_LINK" />Android параметрлері<ph name="END_LINK" /> ішінен қосыңыз.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> бетбелгі}other{<ph name="BOOKMARKS_COUNT_MANY" /> бетбелгі}}</translation>
 <translation id="3062802207422175757">Chrome браузеріндегі қызығушылықтарыңызға сай мақалалар</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Құрылғыға сақтау</translation>
 <translation id="3236059992281584593">1 мин қалды</translation>
 <translation id="3237087289225714896">Стандартты алдын ала жүктеу:</translation>
+<translation id="3237433641417325993">Ұсынылатын мақалаларды көру үшін төменге айналдырыңыз.</translation>
 <translation id="3244271242291266297">АА</translation>
 <translation id="3245429137663807393">Chrome пайдалану есептерін де бөліссеңіз, бұл есептерде сіз кірген URL мекенжайлары қамтылады.</translation>
 <translation id="3250563604907490871">Cурет сипаттамалары Wi-Fi желісіне қосылған кезде қайтадан жүктеледі.</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome браузері сұралған ресурсқа кіре алмайды.</translation>
 <translation id="4837753911714442426">Бетті басып шығару үшін опцияларды ашу</translation>
 <translation id="4842092870884894799">Құпия сөз жасау қалқымалы терезесін көрсету</translation>
+<translation id="4842515939542199281">Дауыс арқылы іздеу үшін микрофонды түртіңіз.</translation>
 <translation id="4850886885716139402">Көрініс</translation>
 <translation id="4860895144060829044">Қоңырау шалу</translation>
 <translation id="4864369630010738180">Жүйеге кіруде…</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Пайдаланылуы туралы толығырақ дерек</translation>
 <translation id="509429900233858213">Қате орын алды.</translation>
 <translation id="510275257476243843">1 сағат қалды</translation>
+<translation id="5115811374190515607">жаңа орны: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Қызығушылықтар</translation>
 <translation id="5123685120097942451">Инкогнито қойындысы</translation>
 <translation id="5126510351761255129">Картаңызды растаңыз</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Файлдарды жүктеп алу үшін, Chrome-ға сақтау орнын пайдалану құқығы қажет.</translation>
 <translation id="5749237766298580851">Өшірулі <ph name="SEPARATOR" /> Ұсынылмайды</translation>
 <translation id="5752232708629533680">Тек GIF бөлісу</translation>
+<translation id="5753139477036638699">Chrome браузерінен дауыс арқылы іздеуге болады.</translation>
 <translation id="5754350196967618083">Discover жаңартылмады</translation>
 <translation id="5763382633136178763">Инкогнито қойындылары</translation>
 <translation id="5763514718066511291">Бұл қолданбаның URL мекенжайын көшіру үшін түртіңіз</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chrome-ға кіру, ашық.</translation>
 <translation id="6814033694018386318">Google-ға қандай ақпарат жіберіледі</translation>
 <translation id="6817747507826986771">Осы бетті жылдам бөлісу. Бұл жылдам пәрменді өзгерту үшін оны басып тұрыңыз.</translation>
+<translation id="6819199143469632133">Google-дағы материалдарды әртүрлі құрылғыдан пайдалану үшін аккаунтқа кіріңіз.</translation>
 <translation id="6820686453637990663">CVC коды</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, қойынды, таңдалды</translation>
 <translation id="6828070228333235514">Бағаны бақылауды тоқтату</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Қалпына келтірілген <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">QR кодын не штрих-кодты осы кадрға қойыңыз.</translation>
 <translation id="7029809446516969842">Құпия сөздер</translation>
+<translation id="7037830628447527439">Chrome-ға Google аккаунтыңызбен кіріңіз.</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Сурет сипаттамаларын аласыз ба?</translation>
 <translation id="7055152154916055070">Бағыттау функциясына тыйым салынды.</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – бұл тіл жүктеп алынбады. Кейінірек қайталап көріңіз.</translation>
 <translation id="8951232171465285730">Chrome браузері <ph name="MEGABYTES" /> МБ деректі сақтады</translation>
 <translation id="8955719471735800169">Басына қайту</translation>
+<translation id="8964479563882643397">Жаңа инкогнито қойындысын ашу үшін мәзірге кіріңіз.</translation>
 <translation id="8965591936373831584">күтілуде</translation>
 <translation id="8967427617812342790">Оқу тізіміне қосу</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> инкогнито қойындысы және тағы <ph name="TAB_COUNT_ONE" /> қойынды жабылады.}other{<ph name="INCOGNITO_TAB_COUNT" /> инкогнито қойындысы және тағы <ph name="TAB_COUNT_MANY" /> қойынды жабылады.}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
index 80a8cab..f4663d94 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">사용자 이름 복사</translation>
 <translation id="1592864538817356322">표준 보호 모드:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{선택한 1개 항목 삭제}other{선택한 #개 항목 삭제}}</translation>
+<translation id="1633659023549081553">Chrome 홈페이지에서 새로운 콘텐츠를 발견하세요.</translation>
 <translation id="1641113438599504367">세이프 브라우징</translation>
 <translation id="164269334534774161"><ph name="CREATION_TIME" />에 작성된 이 페이지의 오프라인 사본을 보는 중입니다.</translation>
 <translation id="1644574205037202324">방문 기록</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">편하게 읽을 수 있을 때까지 슬라이더를 드래그하세요. 단락을 두 번 탭하면 텍스트가 이 이상의 크기로 표시됩니다.</translation>
 <translation id="2323763861024343754">사이트 저장공간</translation>
 <translation id="2328985652426384049">로그인할 수 없음</translation>
+<translation id="2342601525305963189">Chrome 사용 팁:</translation>
 <translation id="234265804618409743">카메라를 열 수 없습니다. 문제가 발생했습니다.</translation>
 <translation id="2345671828921229300">검색하려면 단어를 길게 터치하세요.</translation>
 <translation id="2349710944427398404">계정, 북마크, 저장된 설정 등 Chrome에서 사용한 전체 데이터</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">내가 방문한 URL이 Google에 전송됩니다.</translation>
 <translation id="2536728043171574184">이 페이지의 오프라인 사본 보는 중</translation>
 <translation id="2546283357679194313">쿠키 및 사이트 데이터</translation>
+<translation id="2558692642259318568">기기에 활동을 저장하지 않고 탐색하려면 시크릿 모드를 사용해 보세요.</translation>
 <translation id="2561519700418191927">동영상 미리보기</translation>
 <translation id="2567385386134582609">이미지</translation>
 <translation id="2567545343356994513">위험한 웹사이트, 다운로드 항목 및 확장 프로그램에 더 빠르게 대응하여 선제적 보호 조치를 취합니다.</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">카드번호</translation>
 <translation id="2625189173221582860">비밀번호 복사됨</translation>
 <translation id="2631006050119455616">절약</translation>
+<translation id="2634905176438867146">Chrome을 기본 브라우저로 설정하는 방법을 알아보세요.</translation>
 <translation id="2645657967708199252"><ph name="CONNECTION_TYPE" /> 연결로 인해 다운로드가 느려질 수 있습니다</translation>
 <translation id="2647434099613338025">언어 추가</translation>
 <translation id="2649068648233607930">내 브라우저는 <ph name="DOMAIN" />에서 관리합니다</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">가격 추적 중</translation>
 <translation id="3037517125981011456">Chrome에 로그인하기 위한 메시지를 표시합니다.</translation>
 <translation id="3046945242843292318">다음번에 이 사이트로 빠르게 이동합니다.</translation>
+<translation id="3055259925215945098">북마크 이동됨</translation>
 <translation id="305593374596241526">위치가 사용 중지되었습니다. <ph name="BEGIN_LINK" />Android 설정<ph name="END_LINK" />에서 사용 설정하세요.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{북마크 <ph name="BOOKMARKS_COUNT_ONE" />개}other{북마크 <ph name="BOOKMARKS_COUNT_MANY" />개}}</translation>
 <translation id="3062802207422175757">Chrome에서 관심분야 기사를 읽어보세요.</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">기기에 저장</translation>
 <translation id="3236059992281584593">1분 남음</translation>
 <translation id="3237087289225714896">표준 미리 로드:</translation>
+<translation id="3237433641417325993">아래로 스크롤하여 추천 기사 확인하기</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Chrome 사용 보고서를 공유하면, 내가 방문한 URL이 이 보고서에 포함됩니다.</translation>
 <translation id="3250563604907490871">이미지 설명은 Wi-Fi에 연결되면 재개됩니다.</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome에서 요청된 리소스에 액세스할 권한이 없습니다.</translation>
 <translation id="4837753911714442426">옵션을 열어 페이지 인쇄</translation>
 <translation id="4842092870884894799">비밀번호 생성 팝업 표시</translation>
+<translation id="4842515939542199281">음성으로 검색하려면 마이크 탭하기</translation>
 <translation id="4850886885716139402">보기</translation>
 <translation id="4860895144060829044">전화걸기</translation>
 <translation id="4864369630010738180">로그인 중...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">확장된 사용 데이터</translation>
 <translation id="509429900233858213">오류가 발생했습니다.</translation>
 <translation id="510275257476243843">1시간 남음</translation>
+<translation id="5115811374190515607">이동 위치: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">관심분야</translation>
 <translation id="5123685120097942451">시크릿 탭</translation>
 <translation id="5126510351761255129">카드 인증</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome에서 파일을 다운로드하려면 저장소 액세스 권한이 있어야 합니다.</translation>
 <translation id="5749237766298580851">사용 안함 <ph name="SEPARATOR" /> 권장하지 않음</translation>
 <translation id="5752232708629533680">GIF만 공유</translation>
+<translation id="5753139477036638699">Chrome에서 음성으로 검색할 수 있습니다.</translation>
 <translation id="5754350196967618083">디스커버를 새로고침할 수 없음</translation>
 <translation id="5763382633136178763">시크릿 탭</translation>
 <translation id="5763514718066511291">탭하여 이 앱의 URL 복사하기</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chrome에 로그인, 계정 선택 도구가 열렸습니다.</translation>
 <translation id="6814033694018386318">Google과 공유되는 정보</translation>
 <translation id="6817747507826986771">이 페이지를 빠르게 공유합니다. 바로가기를 수정하려면 길게 터치하세요.</translation>
+<translation id="6819199143469632133">여러 기기에서 Google 서비스를 사용하려면 로그인하세요.</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, 탭, 선택됨</translation>
 <translation id="6828070228333235514">가격 추적 중지</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> 복원됨</translation>
 <translation id="7029390216614421513">프레임 안에 QR 코드나 바코드를 위치시키세요.</translation>
 <translation id="7029809446516969842">비밀번호</translation>
+<translation id="7037830628447527439">Google 계정으로 Chrome에 로그인하기</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">이미지 설명을 표시하시겠습니까?</translation>
 <translation id="7055152154916055070">다음 주소로의 리디렉션이 차단됨:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" />: 다운로드할 수 없는 언어입니다. 나중에 다시 시도해 보세요.</translation>
 <translation id="8951232171465285730">Chrome을 통해 <ph name="MEGABYTES" />MB를 절약했습니다.</translation>
 <translation id="8955719471735800169">맨위로</translation>
+<translation id="8964479563882643397">새 시크릿 탭을 열려면 메뉴 열기</translation>
 <translation id="8965591936373831584">보류 중</translation>
 <translation id="8967427617812342790">읽기 목록에 추가</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{시크릿 탭 <ph name="INCOGNITO_TAB_COUNT" />개와 일반 탭 <ph name="TAB_COUNT_ONE" />개가 닫힙니다.}other{시크릿 탭 <ph name="INCOGNITO_TAB_COUNT" />개와 일반 탭 <ph name="TAB_COUNT_MANY" />개가 닫힙니다.}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
index 52e2a09..bfb8817 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">ສຳເນົາຊື່ຜູ້ໃຊ້</translation>
 <translation id="1592864538817356322">ການປົກປ້ອງມາດຕະຖານ:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{ລຶບ 1 ລາຍການທີ່ເລືອກອອກ}other{ລຶບ # ລາຍການທີ່ເລືອກອອກ}}</translation>
+<translation id="1633659023549081553">ຄົ້ນພົບເນື້ອຫາໃໝ່ຢູ່ໜ້າຫຼັກຂອງ Chrome</translation>
 <translation id="1641113438599504367">Safe Browsing</translation>
 <translation id="164269334534774161">ທ່ານກຳລັງເບິ່ງສຳເນົາອອບລາຍຂອງໜ້ານີ້ຈາກ <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">ປະຫວັດ</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">ລາກ​ບ່ອນ​ເລື່ອນ​ໄປ​ຈົນ​ກວ່າ​ທ່ານ​ຈະ​ຮູ້​ສຶກ​ວ່າ​ອ່ານ​ໄດ້​ສະບາຍ​ຕາ. ຂໍ້ຄວາມ​ໃນ​ໜ້າເວັບ​​ຈະ​ມີ​ຂະໜາດ​ໃຫຍ່​ເທົ່າ​ນີ້​ເປັນ​ຢ່າງ​ໜ້ອຍ​ເມື່ອ​ທຳການ​ແຕະ​ໃສ່​ຫຍໍ້​ໜ້າ​ຂໍ້ຄວາມ​ໃດ​ນຶ່ງ​ສອງ​ເທື່ອ.</translation>
 <translation id="2323763861024343754">ບ່ອນເກັບຂໍ້ມູນຂອງເວັບໄຊ</translation>
 <translation id="2328985652426384049">ບໍ່ສາມາດເຂົ້າສູ່ລະບົບໄດ້</translation>
+<translation id="2342601525305963189">ເຄັດລັບ Chrome:</translation>
 <translation id="234265804618409743">ບໍ່ສາມາດເປີດກ້ອງຂອງທ່ານໄດ້. ມີບາງຢ່າງຜິດພາດ.</translation>
 <translation id="2345671828921229300">ເພື່ອຊອກຫາ, ກະລຸນາແຕະຄຳໃດໜຶ່ງຄ້າງໄວ້</translation>
 <translation id="2349710944427398404">ຂໍ້ມູນທັງໝົດທີ່ໃຊ້ໂດຍ Chrome, ລວມທັງບັນຊີ, ບຸກມາກ ແລະ ການຕັ້ງຄ່າທີ່ບັນທຶກໄວ້</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL ທີ່ທ່ານເຂົ້າຈະຖືກສົ່ງໄປໃຫ້ Google</translation>
 <translation id="2536728043171574184">ກຳ​ລັງ​ເຂົ້າ​ເບິ່ງ​ສຳ​ເນົາ​ອັອບ​ລາຍ​ຂອງ​ໜ້າ​ນີ້</translation>
 <translation id="2546283357679194313">ຄຸກກີ້ ແລະຂໍ້ມູນເວັບໄຊທ໌...</translation>
+<translation id="2558692642259318568">ເພື່ອທ່ອງເວັບໂດຍບໍ່ບັນທຶກການເຄື່ອນໄຫວໄປໃສ່ອຸປະກອນຂອງທ່ານ, ໃຫ້ລອງໃຊ້ໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ</translation>
 <translation id="2561519700418191927">ຕົວຢ່າງວິດີໂອ</translation>
 <translation id="2567385386134582609">ຮູບ</translation>
 <translation id="2567545343356994513">ການປົກປ້ອງແບບເຊີງບຸກທີ່ໄວກວ່າຕໍ່ກັບເວັບໄຊ, ການດາວໂຫຼດ ແລະ ສ່ວນຂະຫຍາຍທີ່ເປັນອັນຕະລາຍ</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">ເລກບັດ</translation>
 <translation id="2625189173221582860">ສຳເນົາລະຫັດຜ່ານແລ້ວ</translation>
 <translation id="2631006050119455616">ບັນທຶກແລ້ວ</translation>
+<translation id="2634905176438867146">ສຶກສາວິທີຕັ້ງ Chrome ເປັນຄ່າເລີ່ມຕົ້ນຂອງທ່ານ</translation>
 <translation id="2645657967708199252">ການເຊື່ອມຕໍ່ <ph name="CONNECTION_TYPE" /> ຂອງທ່ານອາດເຮັດໃຫ້ການດາວໂຫຼດຂອງທ່ານຊ້າລົງ</translation>
 <translation id="2647434099613338025">ເພີ່ມພາສາ</translation>
 <translation id="2649068648233607930">ໂປຣແກຣມທ່ອງເວັບຂອງທ່ານຖືກຈັດການໂດຍ <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">ກຳລັງຕິດຕາມລາຄາ</translation>
 <translation id="3037517125981011456">ສະແດງຂໍ້ຄວາມເພື່ອເຂົ້າສູ່ລະບົບຫາ Chrome</translation>
 <translation id="3046945242843292318">ເຂົ້າເວັບໄຊນີ້ໄດ້ໄວຂຶ້ນໃນເທື່ອຕໍ່ໄປ</translation>
+<translation id="3055259925215945098">ຍ້າຍບຸກມາກແລ້ວ</translation>
 <translation id="305593374596241526">ສະຖານທີ່ປິດຢູ່, ກະລຸນາເປີດມັນໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າ Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> ບຸກມາກ}other{<ph name="BOOKMARKS_COUNT_MANY" /> ບຸກມາກ}}</translation>
 <translation id="3062802207422175757">ບົດຄວາມທີ່ທ່ານສົນໃຈໃນ Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">ບັນທຶກໃສ່ອຸປະກອນ</translation>
 <translation id="3236059992281584593">ຍັງເຫຼືອ 1 ນາທີ</translation>
 <translation id="3237087289225714896">ການໂຫຼດກ່ອນລ່ວງໜ້າແບບມາດຕະຖານ:</translation>
+<translation id="3237433641417325993">ເລື່ອນລົງເພື່ອເບິ່ງບົດຄວາມທີ່ແນະນຳ</translation>
 <translation id="3244271242291266297">ດດ</translation>
 <translation id="3245429137663807393">ຫາກທ່ານແບ່ງປັນລາຍງານການນຳໃຊ້ Chrome ນຳ, ລາຍງານເຫຼົ່ານັ້ນຈະຮວມເອົາ URL ທີ່ທ່ານເຂົ້າໄວ້ພ້ອມ</translation>
 <translation id="3250563604907490871">ຄຳອະທິບາຍຮູບພາບຈະສືບຕໍ່ເມື່ອທ່ານເຊື່ອມຕໍ່ກັບ Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome ບໍ່ມີການເຂົ້າເຖິງຊັບພະຍາກອນທີ່ຮ້ອງຂໍ.</translation>
 <translation id="4837753911714442426">ເປີດຕົວເລືອກຕໍ່ກັບໜ້າການພິມ</translation>
 <translation id="4842092870884894799">ກຳ​ລັງ​ສະ​ແດງ​ປັອບ​ອັບການສ້າງລະ​ຫັດ​ຜ່ານ​</translation>
+<translation id="4842515939542199281">ເພື່ອຊອກຫາດ້ວຍສຽງຂອງທ່ານ, ໃຫ້ແຕະໃສ່ໄມໂຄຣໂຟນ</translation>
 <translation id="4850886885716139402">ເບິ່ງ</translation>
 <translation id="4860895144060829044">ໂທ</translation>
 <translation id="4864369630010738180">ກຳລັງເຂົ້າສູ່ລະບົບ...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">ຂໍ້ມູນການນຳໃຊ້ເພີ່ມເຕີມ</translation>
 <translation id="509429900233858213">ເກີດຄວາມຜິດພາດຂຶ້ນ.</translation>
 <translation id="510275257476243843">ຍັງເຫຼືອ 1 ຊົ່ວໂມງ</translation>
+<translation id="5115811374190515607">ຫາ <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">ຄວາມສົນໃຈ</translation>
 <translation id="5123685120097942451">ແຖບທີ່ບໍ່ເຜີຍຕົວຕົນ</translation>
 <translation id="5126510351761255129">ຢືນຢັນບັດຂອງທ່ານ</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome ຕ້ອງ​ການ​ໃຫ້​ມີ​ການ​ເຂົ້າ​ຫາ​ບ່ອນ​ຈັດ​ເກັບ​ຂໍ້​ມູນ​ເພື່ອ​ດາວ​ໂຫຼດ​ໄຟ​ລ໌.</translation>
 <translation id="5749237766298580851">ປິດ <ph name="SEPARATOR" /> ບໍ່ແນະນຳ</translation>
 <translation id="5752232708629533680">ແບ່ງປັນ GIF ເທົ່ານັ້ນ</translation>
+<translation id="5753139477036638699">ທ່ານສາມາດໃຊ້ສຽງຂອງທ່ານເພື່ອຊອກຫາໃນ Chrome ໄດ້</translation>
 <translation id="5754350196967618083">ບໍ່ສາມາດໂຫຼດຂໍ້ມູນ Discover ຄືນໃໝ່ໄດ້</translation>
 <translation id="5763382633136178763">ແຖບບໍ່ເຜີຍຕົນຕົວ</translation>
 <translation id="5763514718066511291">ແຕະເພື່ອສຳເນົາ URL ສຳລັບແອັບນີ້</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">ເຂົ້າສູ່ລະບົບ Chrome, ເປີດແລ້ວ.</translation>
 <translation id="6814033694018386318">ສິ່ງທີ່ທ່ານແບ່ງປັນກັບ Google</translation>
 <translation id="6817747507826986771">ແບ່ງປັນໜ້ານີ້ແບບໄວໆ. ເພື່ອແກ້ໄຂທາງລັດນີ້, ໃຫ້ແຕະຄ້າງໄວ້.</translation>
+<translation id="6819199143469632133">ເພື່ອໃຊ້ຂໍ້ມູນ Google ຂອງທ່ານໃນອຸປະກອນຕ່າງໆ, ກະລຸນາເຂົ້າສູ່ລະບົບ</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, ແຖບ, ເລືອກແລ້ວ</translation>
 <translation id="6828070228333235514">ຢຸດການຕິດຕາມລາຄາ</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">ກູ້ຂໍ້ມູນເມື່ອ <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">ປັບຕຳແໜ່ງລະຫັດ QR ຫຼື ບາໂຄດໃນເຟຣມນີ້.</translation>
 <translation id="7029809446516969842">ລະ​ຫັດ​ຜ່ານ</translation>
+<translation id="7037830628447527439">ເຂົ້າສູ່ລະບົບຫາ Chrome ດ້ວຍບັນຊີ Google ຂອງທ່ານ</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">ຮັບຄຳອະທິບາຍຮູບບໍ?</translation>
 <translation id="7055152154916055070">ບລັອກການປ່ຽນເສັ້ນທາງແລ້ວ:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - ບໍ່ສາມາດດາວໂຫຼດພາສານີ້ໄດ້. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ.</translation>
 <translation id="8951232171465285730">Chrome ຊ່ວຍທ່ານປະຢັດໄດ້ <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">ກັບຄືນໄປດ້ານເທິງ</translation>
+<translation id="8964479563882643397">ເພື່ອເປີດແຖບ​ບໍ່ເປີດເຜີຍຕົວຕົນໃໝ່, ໃຫ້ເປີດເມນູ</translation>
 <translation id="8965591936373831584">ຄ້າງຢູ່</translation>
 <translation id="8967427617812342790">ເພີ່ມໃສ່ລາຍການທີ່ຈະອ່ານ</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{ແຖບບໍ່ເປີດເຜີຍຕົວຕົນ <ph name="INCOGNITO_TAB_COUNT" /> ແລະ ແຖບອື່ນໆ <ph name="TAB_COUNT_ONE" /> ແຖບຈະຖືກປິດ}other{ແຖບບໍ່ເປີດເຜີຍຕົວຕົນ <ph name="INCOGNITO_TAB_COUNT" /> ແລະ ແຖບອື່ນໆ <ph name="TAB_COUNT_MANY" /> ແຖບຈະຖືກປິດ}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
index ebc3220..ce2a038 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopēt lietotājvārdu</translation>
 <translation id="1592864538817356322">Standarta aizsardzība:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Noņemt 1 atlasīto vienumu}zero{Noņemt # atlasītos vienumus}one{Noņemt # atlasīto vienumu}other{Noņemt # atlasītos vienumus}}</translation>
+<translation id="1633659023549081553">Atklājiet jaunu saturu, izmantojot Chrome sākumlapu.</translation>
 <translation id="1641113438599504367">Droša pārlūkošana</translation>
 <translation id="164269334534774161">Jūs skatāt šīs lapas bezsaistes kopiju, kas tika izveidota šādā datumā: <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Vēsture</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Velciet slīdni, kamēr varat ērti lasīt. Pēc dubultskāriena rindkopai tekstam ir jābūt vismaz šādā lielumā.</translation>
 <translation id="2323763861024343754">Vietnes krātuve</translation>
 <translation id="2328985652426384049">Nevar pierakstīties</translation>
+<translation id="2342601525305963189">Chrome padomi:</translation>
 <translation id="234265804618409743">Nevar atvērt kameru. Radās kļūda.</translation>
 <translation id="2345671828921229300">Lai meklētu, pieskarieties vārdam un turiet to</translation>
 <translation id="2349710944427398404">Kopējais pārlūkā Chrome izmantoto datu apjoms, ieskaitot kontus, grāmatzīmes un saglabātos iestatījumus</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Uzņēmumam Google tiek sūtīti jūsu apmeklētie vietrāži URL.</translation>
 <translation id="2536728043171574184">Skata šīs lapas kopiju bezsaistē</translation>
 <translation id="2546283357679194313">Sīkfaili un vietņu dati</translation>
+<translation id="2558692642259318568">Izmēģiniet inkognito režīmu, lai pārlūkošanas darbības nesaglabātu savā ierīcē.</translation>
 <translation id="2561519700418191927">Videoklipu priekšskatījumi</translation>
 <translation id="2567385386134582609">ATTĒLS</translation>
 <translation id="2567545343356994513">Ātrāka, aktīva aizsardzība pret bīstamām tīmekļa vietnēm, lejupielādēm un paplašinājumiem.</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kartes numurs</translation>
 <translation id="2625189173221582860">Parole ir nokopēta.</translation>
 <translation id="2631006050119455616">Saglabāts</translation>
+<translation id="2634905176438867146">Uzziniet, kā iestatīt Chrome par noklusējuma pārlūku.</translation>
 <translation id="2645657967708199252">Jūsu <ph name="CONNECTION_TYPE" /> savienojums var palēnināt lejupielādi.</translation>
 <translation id="2647434099613338025">Pievienot valodu</translation>
 <translation id="2649068648233607930">Jūsu pārlūku pārvalda <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Notiek cenas izsekošana</translation>
 <translation id="3037517125981011456">Tiek rādīti aicinājumi pierakstīties pārlūkā Chrome.</translation>
 <translation id="3046945242843292318">Nākamreiz uz šo vietni varat pāriet ātrāk</translation>
+<translation id="3055259925215945098">Grāmatzīme ir pārvietota</translation>
 <translation id="305593374596241526">Atrašanās vietu noteikšana ir izslēgta. Ieslēdziet to <ph name="BEGIN_LINK" />Android iestatījumos<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> grāmatzīme}zero{<ph name="BOOKMARKS_COUNT_MANY" /> grāmatzīmju}one{<ph name="BOOKMARKS_COUNT_MANY" /> grāmatzīme}other{<ph name="BOOKMARKS_COUNT_MANY" /> grāmatzīmes}}</translation>
 <translation id="3062802207422175757">Ar jūsu interesēm saistīti raksti pārlūkā Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Saglabāt ierīcē</translation>
 <translation id="3236059992281584593">Atlikusi 1 min</translation>
 <translation id="3237087289225714896">Standarta iepriekšēja ielāde:</translation>
+<translation id="3237433641417325993">Ritiniet lejup, lai skatītu ieteiktos rakstus.</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Ja kopīgojat arī Chrome lietojuma pārskatus, šajos pārskatos tiek iekļauti jūsu apmeklētie vietrāži URL.</translation>
 <translation id="3250563604907490871">Attēlu aprakstu pievienošana tiks atsākta, kad izveidosiet savienojumu ar Wi-Fi tīklu</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome nevar piekļūt pieprasītajam resursam.</translation>
 <translation id="4837753911714442426">Atvērt iespējas, lai izdrukātu lapu</translation>
 <translation id="4842092870884894799">Tiek rādīts paroles ģenerēšanas uznirstošais logs</translation>
+<translation id="4842515939542199281">Lai meklētu ar balsi, pieskarieties mikrofonam.</translation>
 <translation id="4850886885716139402">Skatīt</translation>
 <translation id="4860895144060829044">Zvanīt</translation>
 <translation id="4864369630010738180">Pierakstīšanās...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Detalizēti lietojuma dati</translation>
 <translation id="509429900233858213">Radās kļūda.</translation>
 <translation id="510275257476243843">Atlikusi 1 h</translation>
+<translation id="5115811374190515607">uz: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Intereses</translation>
 <translation id="5123685120097942451">Inkognito cilne</translation>
 <translation id="5126510351761255129">Kartes verificēšana</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome ir nepieciešama piekļuve krātuvei, lai varētu lejupielādēt failus.</translation>
 <translation id="5749237766298580851">Izslēgta <ph name="SEPARATOR" /> Nav ieteicams</translation>
 <translation id="5752232708629533680">Kopīgot tikai GIF failu</translation>
+<translation id="5753139477036638699">Varat izmantot meklēšanu ar balsi pārlūkā Chrome.</translation>
 <translation id="5754350196967618083">Nevar atsvaidzināt Discover</translation>
 <translation id="5763382633136178763">Inkognito režīma cilnes</translation>
 <translation id="5763514718066511291">Pieskarieties, lai kopētu šīs lietotnes URL.</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Lapa “Pierakstīšanās pārlūkā Chrome”, atvērta.</translation>
 <translation id="6814033694018386318">Saturs, kas tiek kopīgots ar Google</translation>
 <translation id="6817747507826986771">Ātra lapas kopīgošana. Lai rediģētu šo īsinājumtaustiņu, pieskarieties un turiet.</translation>
+<translation id="6819199143469632133">Pierakstieties, lai izmantotu savu Google saturu vairākās ierīcēs.</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, cilne, atlasīta</translation>
 <translation id="6828070228333235514">Apturēt cenas izsekošanu</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Atjaunots vienums <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Novietojiet QR kodu vai svītrkodu šajā ietvarā.</translation>
 <translation id="7029809446516969842">Paroles</translation>
+<translation id="7037830628447527439">Pierakstieties pārlūkā Chrome, izmantojot savu Google kontu.</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Vai vēlaties iespējot attēlu aprakstus?</translation>
 <translation id="7055152154916055070">Novirzīšana ir bloķēta:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> — šo valodu nevarēja lejupielādēt. Vēlāk mēģiniet vēlreiz.</translation>
 <translation id="8951232171465285730">Pārlūkā Chrome esat ietaupījis <ph name="MEGABYTES" /> MB.</translation>
 <translation id="8955719471735800169">Augšup</translation>
+<translation id="8964479563882643397">Lai atvērtu jaunu inkognito cilni, atveriet izvēlni.</translation>
 <translation id="8965591936373831584">gaida</translation>
 <translation id="8967427617812342790">Pievienot sarakstam</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Tiks aizvērta <ph name="INCOGNITO_TAB_COUNT" /> inkognito cilne un vēl <ph name="TAB_COUNT_ONE" /> cilne.}zero{Tiks aizvērta <ph name="INCOGNITO_TAB_COUNT" /> inkognito cilne un vēl <ph name="TAB_COUNT_MANY" /> cilnes.}one{Tiks aizvērta <ph name="INCOGNITO_TAB_COUNT" /> inkognito cilne un vēl <ph name="TAB_COUNT_MANY" /> cilne.}other{Tiks aizvērta <ph name="INCOGNITO_TAB_COUNT" /> inkognito cilne un vēl <ph name="TAB_COUNT_MANY" /> cilnes.}}</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 eabdc71..f9da52e 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
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Копирај го корисничкото име</translation>
 <translation id="1592864538817356322">Стандардна заштита:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Отстрани 1 избрана ставка}one{Отстрани # избрана ставка}other{Отстрани # избрани ставки}}</translation>
+<translation id="1633659023549081553">Откривајте нови содржини на почетната страница на Chrome</translation>
 <translation id="1641113438599504367">Безбедно прелистување</translation>
 <translation id="164269334534774161">Гледате офлајн копија на страницата од <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Историја</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Влечете го лизгачот сѐ додека не го читате ова удобно. Текстот треба да изгледа барем олку голем по двојно допирање на пасусот.</translation>
 <translation id="2323763861024343754">Достапен простор на сајтот</translation>
 <translation id="2328985652426384049">Не може да се најавите</translation>
+<translation id="2342601525305963189">Совети за Chrome:</translation>
 <translation id="234265804618409743">Камерата не може да се отвори. Нешто не е во ред.</translation>
 <translation id="2345671828921229300">За пребарување, допрете и задржете збор</translation>
 <translation id="2349710944427398404">Вкупен сообраќај искористен од Chrome, вклучувајќи сметки, обележувачи и зачувани поставки</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL-адресите што ги посетувате се испраќаат во Google</translation>
 <translation id="2536728043171574184">Се прикажува офлајн копија на страницата</translation>
 <translation id="2546283357679194313">Колачиња и податоци од сајтот</translation>
+<translation id="2558692642259318568">За да прелистувате без зачувување активност на вашиот уред, обидете се со „Инкогнито“</translation>
 <translation id="2561519700418191927">Прегледи на видео</translation>
 <translation id="2567385386134582609">СЛИКА</translation>
 <translation id="2567545343356994513">Побрза и проактивна заштита од опасни веб-сајтови, преземања и екстензии</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Број на картичка</translation>
 <translation id="2625189173221582860">Лозинката е копирана</translation>
 <translation id="2631006050119455616">Заштедено</translation>
+<translation id="2634905176438867146">Дознајте како да го поставите Chrome како стандарден прелистувач</translation>
 <translation id="2645657967708199252">Вашата <ph name="CONNECTION_TYPE" /> врска може да го забави преземањето</translation>
 <translation id="2647434099613338025">Додајте јазик</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> управува со прелистувачот</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Цената се следи</translation>
 <translation id="3037517125981011456">Прикажува prompt за најава на Chrome</translation>
 <translation id="3046945242843292318">Стигнете на сајтов побрзо следниот пат</translation>
+<translation id="3055259925215945098">Обележувачот е преместен</translation>
 <translation id="305593374596241526">Локацијата е исклучена, вклучете ја во <ph name="BEGIN_LINK" />Поставки за Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> обележувач}one{<ph name="BOOKMARKS_COUNT_MANY" /> обележувач}other{<ph name="BOOKMARKS_COUNT_MANY" /> обележувачи}}</translation>
 <translation id="3062802207422175757">Статии за она што ве интересира на Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Зачувај на уредот</translation>
 <translation id="3236059992281584593">Остана 1 минута</translation>
 <translation id="3237087289225714896">Стандардно вчитување однапред:</translation>
+<translation id="3237433641417325993">Лизгајте надолу за да ги видите предложените статии</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Ако ги споделувате и извештаите за користењето на Chrome, тие ги содржат URL-адресите што ги посетувате</translation>
 <translation id="3250563604907490871">Описите на сликите ќе продолжат кога ќе се поврзете на Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome нема пристап до бараниот ресурс.</translation>
 <translation id="4837753911714442426">Отворете опции за печатење страница</translation>
 <translation id="4842092870884894799">Се прикажува појавен прозорец за генерирање лозинки</translation>
+<translation id="4842515939542199281">За да пребарувате со гласот, допрете го микрофонот</translation>
 <translation id="4850886885716139402">Приказ</translation>
 <translation id="4860895144060829044">Повикајте</translation>
 <translation id="4864369630010738180">Се најавува…</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Проширени податоци за користењето</translation>
 <translation id="509429900233858213">Настана грешка.</translation>
 <translation id="510275257476243843">Остана 1 час</translation>
+<translation id="5115811374190515607">до <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Интереси</translation>
 <translation id="5123685120097942451">Картичка инкогнито</translation>
 <translation id="5126510351761255129">Потврдете ја картичката</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">На Chrome му треба пристап до меморијата за да презема датотеки.</translation>
 <translation id="5749237766298580851">Исклучено <ph name="SEPARATOR" /> Не се препорачува</translation>
 <translation id="5752232708629533680">Сподели само GIF</translation>
+<translation id="5753139477036638699">Може да го користите својот глас за да пребарувате во Chrome</translation>
 <translation id="5754350196967618083">Не може да се освежи Discover</translation>
 <translation id="5763382633136178763">Инкогнито картички</translation>
 <translation id="5763514718066511291">Допрете за да ја копирате URL-адресата за апликацијава</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Најавете се на Chrome, отворено.</translation>
 <translation id="6814033694018386318">Што споделувате со Google</translation>
 <translation id="6817747507826986771">Брзо споделете ја страницава. За да ја измените сликава од екранот, допрете и задржете.</translation>
+<translation id="6819199143469632133">Најавете се за да ги пренесете вашите работи на Google на повеќе уреди</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">Избрана е картичката <ph name="TAB_TITLE" /></translation>
 <translation id="6828070228333235514">Запри го следењето цени</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Преземањето на <ph name="ITEM_TITLE" /> е вратено</translation>
 <translation id="7029390216614421513">Ставете го QR-кодот/бар-кодот во оваа рамка.</translation>
 <translation id="7029809446516969842">Лозинки</translation>
+<translation id="7037830628447527439">Најавете се на Chrome со вашата сметка на Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Сакате ли да добивате описи на слики?</translation>
 <translation id="7055152154916055070">Пренасочувањето е блокирано:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Овој јазик не можеше да се преземе. Обидете се повторно подоцна.</translation>
 <translation id="8951232171465285730">Chrome ви заштеди <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Назад на почеток</translation>
+<translation id="8964479563882643397">За да отворите нова картичка „Инкогнито“, отворете го менито</translation>
 <translation id="8965591936373831584">чека на ред</translation>
 <translation id="8967427617812342790">Додај во списокот за читање</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> картичка „Инкогнито“ и уште <ph name="TAB_COUNT_ONE" /> картичка ќе се затворат}one{<ph name="INCOGNITO_TAB_COUNT" /> картичка „Инкогнито“ и уште <ph name="TAB_COUNT_MANY" /> картичка ќе се затворат}other{<ph name="INCOGNITO_TAB_COUNT" /> картичка „Инкогнито“ и уште <ph name="TAB_COUNT_MANY" /> картички ќе се затворат}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
index bfe12f7..0d6551c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Salin nama pengguna</translation>
 <translation id="1592864538817356322">Perlindungan standard:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Alih keluar 1 item yang dipilih}other{Alih keluar # item yang dipilih}}</translation>
+<translation id="1633659023549081553">Temukan kandungan baharu pada halaman utama Chrome</translation>
 <translation id="1641113438599504367">Penyemakan Imbas Selamat</translation>
 <translation id="164269334534774161">Anda sedang melihat salinan luar talian halaman ini dari <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Sejarah</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Seret gelangsar sehingga anda selesa membaca teks ini. Teks harus kelihatan sekurang-kurangnya sebesar ini selepas mengetik dua kali pada perenggan.</translation>
 <translation id="2323763861024343754">Storan tapak</translation>
 <translation id="2328985652426384049">Tidak dapat log masuk</translation>
+<translation id="2342601525305963189">Petua Chrome:</translation>
 <translation id="234265804618409743">Tidak dapat membuka kamera anda. Kesilapan telah berlaku.</translation>
 <translation id="2345671828921229300">Untuk membuat carian, sentuh &amp; tahan perkataan</translation>
 <translation id="2349710944427398404">Jumlah data yang digunakan oleh Chrome, termasuk akaun, penanda halaman dan tetapan yang disimpan</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL yang anda lawati dihantar kepada Google</translation>
 <translation id="2536728043171574184">Melihat salinan luar talian halaman ini</translation>
 <translation id="2546283357679194313">Kuki dan data tapak</translation>
+<translation id="2558692642259318568">Untuk menyemak imbas tanpa menyimpan aktiviti pada peranti anda, cubalah Inkognito</translation>
 <translation id="2561519700418191927">Pratonton video</translation>
 <translation id="2567385386134582609">IMEJ</translation>
 <translation id="2567545343356994513">Perlindungan proaktif yang lebih pantas terhadap laman web, muat turun dan sambungan yang berbahaya</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Nombor kad</translation>
 <translation id="2625189173221582860">Kata laluan disalin</translation>
 <translation id="2631006050119455616">Disimpan</translation>
+<translation id="2634905176438867146">Ketahui cara menetapkan Chrome sebagai penyemak imbas lalai anda</translation>
 <translation id="2645657967708199252">Sambungan <ph name="CONNECTION_TYPE" /> anda mungkin memperlahankan muat turun anda</translation>
 <translation id="2647434099613338025">Tambah bahasa</translation>
 <translation id="2649068648233607930">Penyemak imbas anda diurus oleh <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Menjejaki harga</translation>
 <translation id="3037517125981011456">Memaparkan gesaan untuk log masuk ke Chrome</translation>
 <translation id="3046945242843292318">Lawati laman ini dengan lebih pantas selepas ini</translation>
+<translation id="3055259925215945098">Penanda halaman dialihkan</translation>
 <translation id="305593374596241526">Lokasi dimatikan, hidupkannya dalam <ph name="BEGIN_LINK" />Tetapan Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> penanda halaman}other{<ph name="BOOKMARKS_COUNT_MANY" /> penanda halaman}}</translation>
 <translation id="3062802207422175757">Artikel tentang minat anda di Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Simpan pada peranti</translation>
 <translation id="3236059992281584593">1 minit lagi</translation>
 <translation id="3237087289225714896">Pramuat standard:</translation>
+<translation id="3237433641417325993">Tatal ke bawah untuk melihat artikel yang dicadangkan</translation>
 <translation id="3244271242291266297">BB</translation>
 <translation id="3245429137663807393">Jika anda turut berkongsi laporan penggunaan Chrome, laporan tersebut menyertakan URL yang anda lawati</translation>
 <translation id="3250563604907490871">Perihalan imej akan disambung semula apabila peranti anda disambungkan kepada Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome tidak boleh mengakses sumber yang diminta.</translation>
 <translation id="4837753911714442426">Buka pilihan untuk mencetak halaman</translation>
 <translation id="4842092870884894799">Menunjukkan tetingkap timbul penjanaan kata laluan</translation>
+<translation id="4842515939542199281">Untuk mencari menggunakan suara anda, ketik mikrofon</translation>
 <translation id="4850886885716139402">Lihat</translation>
 <translation id="4860895144060829044">Hubungi</translation>
 <translation id="4864369630010738180">Sedang log masuk...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Data penggunaan lanjutan</translation>
 <translation id="509429900233858213">Ralat telah berlaku.</translation>
 <translation id="510275257476243843">1 jam lagi</translation>
+<translation id="5115811374190515607">ke <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Minat</translation>
 <translation id="5123685120097942451">Tab Inkognito</translation>
 <translation id="5126510351761255129">Sahkan kad anda</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome memerlukan akses storan untuk memuat turun fail.</translation>
 <translation id="5749237766298580851">Dimatikan <ph name="SEPARATOR" /> Tidak disyorkan</translation>
 <translation id="5752232708629533680">Kongsi GIF sahaja</translation>
+<translation id="5753139477036638699">Anda boleh menggunakan suara anda untuk mencari dalam Chrome</translation>
 <translation id="5754350196967618083">Tidak dapat memuatkan semula Discover</translation>
 <translation id="5763382633136178763">Tab inkognito</translation>
 <translation id="5763514718066511291">Ketik untuk menyalin URL apl ini</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Log masuk ke Chrome, dibuka.</translation>
 <translation id="6814033694018386318">Perkara yang anda kongsi dengan Google</translation>
 <translation id="6817747507826986771">Kongsi halaman ini dengan pantas. Untuk mengedit pintasan ini, sentuh dan tahan.</translation>
+<translation id="6819199143469632133">Untuk mendapatkan data Google anda pada berbilang peranti, log masuk</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, tab, dipilih</translation>
 <translation id="6828070228333235514">Berhenti menjejaki harga</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> dipulihkan</translation>
 <translation id="7029390216614421513">Letakkan Kod QR/kod bar dalam bingkai ini.</translation>
 <translation id="7029809446516969842">Kata laluan</translation>
+<translation id="7037830628447527439">Log masuk ke Chrome menggunakan Google Account anda</translation>
 <translation id="7038956721828960940">imej_chrome_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Dapatkan perihalan imej?</translation>
 <translation id="7055152154916055070">Ubah hala disekat:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Bahasa ini tidak dapat dimuat turun. Cuba lagi nanti.</translation>
 <translation id="8951232171465285730">Chrome telah menjimatkan data anda sebanyak <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Kembali ke atas</translation>
+<translation id="8964479563882643397">Untuk membuka tab Inkognito baharu, buka menu</translation>
 <translation id="8965591936373831584">belum selesai</translation>
 <translation id="8967427617812342790">Tambahkan pada senarai bacaan</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> inkognito dan <ph name="TAB_COUNT_ONE" /> lagi tab akan ditutup}other{<ph name="INCOGNITO_TAB_COUNT" /> inkognito and <ph name="TAB_COUNT_MANY" /> lagi tab akan ditutup}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
index 146ad12..7b6bd44 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">အသုံးပြုသူအမည်ကို ကူးယူပါ</translation>
 <translation id="1592864538817356322">ပုံမှန်ကာကွယ်မှု -</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{ရွေးချယ်ထားသည့် အကြောင်းအရာ ၁ ခုကို ဖယ်ရှားရန်}other{ရွေးချယ်ထားသည့် အကြောင်းအရာ # ခုကို ဖယ်ရှားရန်}}</translation>
+<translation id="1633659023549081553">Chrome ပင်မစာမျက်နှာတွင် အကြောင်းအရာသစ်များ စူးစမ်းရှာဖွေပါ</translation>
 <translation id="1641113438599504367">လုံခြုံစွာ ရှာကြည့်မှု</translation>
 <translation id="164269334534774161">ဤစာမျက်နှာ၏ အော့ဖ်လိုင်းမိတ္တူကို <ph name="CREATION_TIME" /> မှသင်ကြည့်ရှုနေခြင်းဖြစ်သည်</translation>
 <translation id="1644574205037202324">မှတ်တမ်း</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">သင်က ယင်းကို ဖတ်ရအဆင်ပြေသည့် အထိ ဆွဲတန်းကို ဆွဲယူပါ။ စာသားတွင် စာပိုဒ် တစ်ခုကို နှစ်ကြိမ် ပုတ်လိုက်သည့် နောက်မှာ ဤမျှလောက် ကြီးလျက် မြင်ရသင့်သည်။</translation>
 <translation id="2323763861024343754">ဆိုက် သိုလှောင်ခန်း</translation>
 <translation id="2328985652426384049">လက်မှတ်ထိုးဝင်၍ မရပါ</translation>
+<translation id="2342601525305963189">Chrome အကြံပြုချက်များ-</translation>
 <translation id="234265804618409743">သင့်ကင်မရာကို ဖွင့်၍မရပါ။ တစ်ခုခုမှားသွားသည်။</translation>
 <translation id="2345671828921229300">ရှာဖွေရန် စကားလုံးကို တို့ထိ၍ဖိထားပါ</translation>
 <translation id="2349710944427398404">အကောင့်များ၊ ဝဘ်လိပ်စာများနှင့် သိမ်းဆည်းထားသည့် ဆက်တင်များအပါအဝင် Chrome မှ သိမ်းဆည်းထားသည့် စုစုပေါင်းဒေတာများ ပါဝင်ပါသည်</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">သင်ဝင်ကြည့်သော URL များကို Google သို့ ပို့သည်</translation>
 <translation id="2536728043171574184">ဤစာမျက်နှာ၏ အော့ဖ်လိုင်း မိတ္တူကို ကြည့်ရှုနေ</translation>
 <translation id="2546283357679194313">ကူကီးများ နှင့် ဆိုက် ဒေတာ</translation>
+<translation id="2558692642259318568">သင်၏စက်တွင် လုပ်ဆောင်ချက်မသိမ်းဘဲ ကြည့်ရှုရန် ရုပ်ဖျက်မုဒ်သုံးပါ</translation>
 <translation id="2561519700418191927">ဗီဒီယို အစမ်းကြည့်ရှုခြင်းများ</translation>
 <translation id="2567385386134582609">ဓာတ်ပုံ</translation>
 <translation id="2567545343356994513">အန္တရာယ်ရှိသည့် ဝဘ်ဆိုက်၊ ဒေါင်းလုဒ်နှင့် နောက်ဆက်တွဲများအတွက် ပိုမြန်ပြီး အလိုအလျောက်ဖြစ်သော ကာကွယ်မှုပေးသည်</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">ကဒ်နံပါတ်</translation>
 <translation id="2625189173221582860">စကားဝှက်ကို ကူးပြီးပါပြီ</translation>
 <translation id="2631006050119455616">ချွေတာ</translation>
+<translation id="2634905176438867146">Chrome ကို သင်၏မူရင်းအဖြစ် သတ်မှတ်နည်း လေ့လာပါ</translation>
 <translation id="2645657967708199252">သင်၏ <ph name="CONNECTION_TYPE" /> ချိတ်ဆက်မှုက ဒေါင်းလုဒ်ကို နှေးကွေးစေနိုင်သည်</translation>
 <translation id="2647434099613338025">ဘာသာစကား ထည့်ရန်</translation>
 <translation id="2649068648233607930">သင်၏ဘရောင်ဇာကို <ph name="DOMAIN" /> က စီမံခန့်ခွဲသည်</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">ဈေးနှုန်း စောင့်ကြည့်နေသည်</translation>
 <translation id="3037517125981011456">Chrome သို့ လက်မှတ်ထိုးဝင်ရန် အတည်ပြုခြင်းစနစ်များ ပြသည်</translation>
 <translation id="3046945242843292318">နောက်တစ်ကြိမ်တွင် ဤဝဘ်ဆိုက်သို့ ပိုမြန်မြန်သွားနိုင်သည်</translation>
+<translation id="3055259925215945098">လိပ်စာ ရွှေ့လိုက်သည်</translation>
 <translation id="305593374596241526">တည်နေရာကို ပိတ်ထားသည်၊ ၎င်းကို <ph name="BEGIN_LINK" />Android ဆက်တင်များ<ph name="END_LINK" /> တွင် ဖွင့်ပါ။</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{လိပ်စာ <ph name="BOOKMARKS_COUNT_ONE" /> ခု}other{လိပ်စာ <ph name="BOOKMARKS_COUNT_MANY" /> ခု}}</translation>
 <translation id="3062802207422175757">Chrome ရှိ သင်စိတ်ဝင်စားသော ဆောင်းပါးများ</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">စက်တွင်သိမ်းရန်</translation>
 <translation id="3236059992281584593">၁ မိနစ် ကျန်သည်</translation>
 <translation id="3237087289225714896">ပုံမှန် ကြိုဖွင့်မှု-</translation>
+<translation id="3237433641417325993">အကြံပြုထားသောဆောင်းပါးများ ကြည့်ရန် အောက်သို့လှိမ့်ပါ</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Chrome အသုံးပြမှုအစီရင်ခံစာများ မျှဝေပါကလည်း ထိုအစီရင်ခံစာများတွင် သင်ဝင်ကြည့်သော URL များ ပါဝင်သည်</translation>
 <translation id="3250563604907490871">Wi-Fi သို့ ချိတ်ဆက်လိုက်သောအခါ ပုံအကြောင်းအရာများကို ဆက်ပြပါမည်</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">တောင်းဆိုထားသည့် အရင်းမြစ်ကို Chrome သည် အသုံးပြုခွင့်မရှိပါ။</translation>
 <translation id="4837753911714442426">စာမျက်နှာကို ပုံနှိပ်ဖို့ နည်းလမ်း အားဖွင့်ရန်</translation>
 <translation id="4842092870884894799">စကားဝှက် ထုတ်လုပ်ခြင်း ပေါ့ပ်အပ် ပြနေစဉ်</translation>
+<translation id="4842515939542199281">သင့်အသံဖြင့်ရှာရန် မိုက်ခရိုဖုန်းကို တို့ပါ</translation>
 <translation id="4850886885716139402">မြင်ကွင်း</translation>
 <translation id="4860895144060829044">ဖုန်းခေါ်ရန်</translation>
 <translation id="4864369630010738180">လက်မှတ်ထိုးဝင်နေသည်...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">နောက်ဆက်တွဲ သုံးစွဲမှုဒေတာ</translation>
 <translation id="509429900233858213">အမှား တစ်ခု ကြုံခဲ့ရသည်။</translation>
 <translation id="510275257476243843">၁ နာရီ ကျန်သည်</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> သို့</translation>
 <translation id="5118713593561876160">စိတ်ဝင်စားမှုများ</translation>
 <translation id="5123685120097942451">ရုပ်ဖျက်တဘ်</translation>
 <translation id="5126510351761255129">သင့်ကတ်ကို အတည်ပြုပါ</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome သည် ဖိုင်များကို ဒေါင်းလုဒ် လုပ်ရန် သိုလှောင်ခန်းကို သုံးရန် လိုအပ်သည်။</translation>
 <translation id="5749237766298580851">ပိတ်ထားသည် <ph name="SEPARATOR" /> အကြံပြုမထားပါ</translation>
 <translation id="5752232708629533680">GIF သီးသန့် မျှဝေပါ</translation>
+<translation id="5753139477036638699">Chrome တွင် ရှာဖွေရန် သင့်အသံကို သုံးနိုင်သည်</translation>
 <translation id="5754350196967618083">Discover ပြန်လည် စတင်၍မရပါ</translation>
 <translation id="5763382633136178763">ရုပ်ဖျက် တဲဘ်များ</translation>
 <translation id="5763514718066511291">ဤအက်ပ်အတွက် URL ကို မိတ္တူကူးရန် တို့ပါ</translation>
@@ -1011,6 +1020,7 @@
 <translation id="6813446258015311409">Chrome သို့ လက်မှတ်ထိုးဝင်ရန်၊ ဖွင့်ထားသည်။</translation>
 <translation id="6814033694018386318">Google နှင့် သင် မျှဝေထားသည်များ</translation>
 <translation id="6817747507826986771">ဤစာမျက်နှာကို အမြန်မျှဝေပါ။ ဤဖြတ်လမ်းလင့်ခ်ကို ပြင်ဆင်ရန် တို့ထိ၍ဖိထားပါ။</translation>
+<translation id="6819199143469632133">စက်အားလုံးတွင် သင်၏ Google ဝန်ဆောင်မှုများ ရယူရန် လက်မှတ်ထိုးဝင်ပါ</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />၊ တဘ်၊ ရွေးထားသည်</translation>
 <translation id="6828070228333235514">ဈေးနှုန်းစောင့်ကြည့်ခြင်း ရပ်ရန်</translation>
@@ -1049,6 +1059,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> ကို ပြန်ယူပြီးပြီ</translation>
 <translation id="7029390216614421513">QR ကုဒ်/ဘားကုဒ်ကို ဤဖရိမ်အတွင်း နေရာချပါ။</translation>
 <translation id="7029809446516969842">စကားဝှက်များ</translation>
+<translation id="7037830628447527439">သင်၏ Google Account ဖြင့် Chrome တွင် လက်မှတ်ထိုးဝင်ပါ</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">ပုံရှင်းလင်းချက်များ ရယူမလား။</translation>
 <translation id="7055152154916055070">တစ်ဆင့်ပြန်ညွှန်ခြင်းကို ပိတ်ထားသည်−</translation>
@@ -1403,6 +1414,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - ဤဘာသာစကားကို ဒေါင်းလုဒ်လုပ်၍ မရပါ။ နောက်မှ ထပ်စမ်းပါ။</translation>
 <translation id="8951232171465285730">Chrome သည် သင့်အတွက် <ph name="MEGABYTES" /> မီဂါဘိုက် ချွေတာပေးထားပါသည်</translation>
 <translation id="8955719471735800169">ထိပ်သို့ ပြန်သွားရန်</translation>
+<translation id="8964479563882643397">ရုပ်ဖျက်တဘ်အသစ် ဖွင့်ရန် မီနူးကို ဖွင့်ပါ</translation>
 <translation id="8965591936373831584">ဆိုင်းငံ့ထားသည်</translation>
 <translation id="8967427617812342790">ဖတ်ရန်စာရင်းသို့ ထည့်ပါ</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{ရုပ်ဖျက်တဘ် <ph name="INCOGNITO_TAB_COUNT" /> ခုနှင့် နောက်ထပ်တဘ် <ph name="TAB_COUNT_ONE" /> ခုကို ပိတ်ပါမည်}other{ရုပ်ဖျက်တဘ် <ph name="INCOGNITO_TAB_COUNT" /> ခုနှင့် နောက်ထပ်တဘ် <ph name="TAB_COUNT_MANY" /> ခုကို ပိတ်ပါမည်}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
index 8c2b10a..52cfd6b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">प्रयोगकर्ता नामको कपी गर्नुहोस्</translation>
 <translation id="1592864538817356322">मानक सुरक्षा:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{चयन गरिएको १ वस्तु हटाउनुहोस्}other{चयन गरिएका # वस्तुहरू हटाउनुहोस्}}</translation>
+<translation id="1633659023549081553">Chrome को होमपेजमा नयाँ नयाँ सामग्री भेट्टाउनुहोस्</translation>
 <translation id="1641113438599504367">सुरक्षित ब्राउजिङ</translation>
 <translation id="164269334534774161">तपाईं यस पृष्ठको <ph name="CREATION_TIME" /> को अफलाइन प्रतिलिपि हेर्दै हुनुहुन्छ</translation>
 <translation id="1644574205037202324">इतिहास</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">तपाईंले आरामसँग पढ्न सक्दासम्म स्लाइडरलाई तान्नुहोस्। अनुच्छेदमा दोहोरो ट्याप गरेपछि पाठ कम्तीमा पनि यतिको ठुलो देखिनुपर्छ।</translation>
 <translation id="2323763861024343754">साइटको भण्डारण</translation>
 <translation id="2328985652426384049">साइन इन गर्न सकिएन</translation>
+<translation id="2342601525305963189">Chrome का सुझावहरू:</translation>
 <translation id="234265804618409743">तपाईंको क्यामेरा खोल्न सकिएन। केही चिज गडबड भयो।</translation>
 <translation id="2345671828921229300">कुनै शब्दबारे जानकारी खोज्न त्यसलाई टच एण्ड होल्ड गर्नुहोस्</translation>
 <translation id="2349710944427398404">खाता, पुस्तक चिन्ह र सुरक्षित गरिएका सेटिङहरू सहित Chrome ले प्रयोग गरेको कुल डेटा</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">तपाईंले खोल्ने URL हरू Google मा पठाइन्छन्</translation>
 <translation id="2536728043171574184">यो पृष्ठको एक अफलाइन प्रतिलिपि हेर्दै</translation>
 <translation id="2546283357679194313">कुकीहरू र साइट डाटा</translation>
+<translation id="2558692642259318568">तपाईं आफ्नो डिभाइसमा कुनै क्रियाकलाप सेभ नहुने गरी ब्राउज गर्न चाहनुहुन्छ भने इन्कोग्निटो मोड प्रयोग गरी हेर्नुहोस्</translation>
 <translation id="2561519700418191927">भिडियोका प्रभ्युहरू</translation>
 <translation id="2567385386134582609">छवि</translation>
 <translation id="2567545343356994513">खतरनाक वेबसाइट, डाउनलोड र एक्स्टेन्सनहरूबाट अझ छिटो र सक्रिय सुरक्षा</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">कार्ड नम्बर</translation>
 <translation id="2625189173221582860">पासवर्ड प्रतिलिपि गरियो</translation>
 <translation id="2631006050119455616">बचत गरिएको डेटा</translation>
+<translation id="2634905176438867146">Chrome लाई डिफल्ट ब्राउजरका रूपमा तय गर्ने तरिका सिक्नुहोस्</translation>
 <translation id="2645657967708199252">तपाईंले अहिले <ph name="CONNECTION_TYPE" /> नेटवर्क चलाइरहनुभएको हुनाले डाउनलोडको गति सुस्त हुन सक्छ</translation>
 <translation id="2647434099613338025">भाषा थप्नुहोस्</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> ले तपाईंको ब्राउजर व्यवस्थापन गर्छ</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">यो उत्पादनको मूल्य ट्र्याक गरिँदै छ</translation>
 <translation id="3037517125981011456">Chrome मा साइन इन गर्ने निर्देशन देखाउँछ</translation>
 <translation id="3046945242843292318">अर्को पटक यो साइट अझ छिटो खोल्नुहोस्</translation>
+<translation id="3055259925215945098">बुकमार्क सारियो</translation>
 <translation id="305593374596241526">स्थानसम्बन्धी सुविधा निष्क्रिय छ; <ph name="BEGIN_LINK" />Android का सेटिङहरू<ph name="END_LINK" /> मा गई यसलाई सक्रिय गर्नुहोस्।</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> पुस्तक चिन्ह}other{<ph name="BOOKMARKS_COUNT_MANY" /> पुस्तक चिन्हहरू}}</translation>
 <translation id="3062802207422175757">Chrome मा तपाईंको रुचिका विषयसँग सम्बन्धित लेखहरू पढ्नुहोस्</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">डिभाइसमा सेभ गर्नुहोस्</translation>
 <translation id="3236059992281584593">१ मिनेट बाँकी छ</translation>
 <translation id="3237087289225714896">पेज प्रिलोड गर्ने डिफल्ट मोड:</translation>
+<translation id="3237433641417325993">तपाईं सिफारिस गरिएका लेखहरू हेर्न चाहनुहुन्छ भने तलतिर स्क्रोल गर्नुहोस्</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">तपाईंले Chrome को प्रयोगसम्बन्धी रिपोर्टहरू पनि सेयर गर्नुभयो भने ती रिपोर्टमा तपाईंले खोलेका URL हरू समावेश हुन्छन्</translation>
 <translation id="3250563604907490871">Wi-Fi मा कनेक्ट हुँदा 'फोटो वर्णन गर्ने' सुविधा सुचारु हुने छ</translation>
@@ -650,6 +656,7 @@
 <translation id="4835385943915508971">Chrome सँग अनुरोध गरिएको स्रोत माथिको पहुँच छैन।</translation>
 <translation id="4837753911714442426">पृष्ठ छाप्ने सम्बन्धी विकल्पहरू खोल्नुहोस्</translation>
 <translation id="4842092870884894799">पासवर्ड उत्पादन पपअप देखाउँदै</translation>
+<translation id="4842515939542199281">तपाईं बोलेर खोज्न चाहनुहुन्छ भने माइक्रोफोन जनाउने आइकनमा ट्याप गर्नुहोस्</translation>
 <translation id="4850886885716139402">हेर्नुहोस्</translation>
 <translation id="4860895144060829044">कल गर्नुहोस्</translation>
 <translation id="4864369630010738180">साइन इन गरिँदै...</translation>
@@ -696,6 +703,7 @@
 <translation id="5091249083535528968">प्रयोगसम्बन्धी थप डेटा</translation>
 <translation id="509429900233858213">त्रुटि भयो।</translation>
 <translation id="510275257476243843">१ घन्टा बाँकी छ</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> मा</translation>
 <translation id="5118713593561876160">रूचिहरू</translation>
 <translation id="5123685120097942451">इन्कोग्निटो ट्याब</translation>
 <translation id="5126510351761255129">आफ्नो कार्ड पुष्टि गर्नुहोस्</translation>
@@ -800,6 +808,7 @@
 <translation id="5749068826913805084">Chromeलाई फाइलहरु डाउनलोड गर्न भण्डारणको पहुँच आवश्यक छ ।</translation>
 <translation id="5749237766298580851">अफ छ <ph name="SEPARATOR" /> सिफारिस गरिँदैन</translation>
 <translation id="5752232708629533680">GIF मात्र सेयर गरियोस्</translation>
+<translation id="5753139477036638699">तपाईं Chrome मा बोलेर खोज्न सक्नुहुन्छ</translation>
 <translation id="5754350196967618083">Discover पुनः ताजा गर्न सकिएन</translation>
 <translation id="5763382633136178763">इनकग्निटो ट्याबहरू</translation>
 <translation id="5763514718066511291">यस एपको URL प्रतिलिपि गर्न ट्याप गर्नुहोस्</translation>
@@ -1011,6 +1020,7 @@
 <translation id="6813446258015311409">Chrome मा साइन इन गर्ने पेज खोलियो।</translation>
 <translation id="6814033694018386318">Google मा पठाइने कुराहरू</translation>
 <translation id="6817747507826986771">यो पेज छिटोछरितो रूपमा सेयर गर्नुहोस्। यो सर्टकट सम्पादन गर्न टच एण्ड होल्ड गर्नुहोस्।</translation>
+<translation id="6819199143469632133">तपाईं आफूले चलाइरहेका Google का सेवाहरू विभिन्न डिभाइसमा चलाउन चाहनुहुन्छ भने साइन इन गर्नुहोस्</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, ट्याब, चयन गरियो</translation>
 <translation id="6828070228333235514">मूल्य ट्रयाक गर्ने सुविधा अफ गर्नुहोस्</translation>
@@ -1049,6 +1059,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> रिस्टोर गरियो</translation>
 <translation id="7029390216614421513">QR कोड/बारकोडलाई यस फ्रेमभित्र पार्नुहोस्।</translation>
 <translation id="7029809446516969842">पासवर्डहरू</translation>
+<translation id="7037830628447527439">आफ्नो Google खाता प्रयोग गरी Chrome मा साइन इन गर्नुहोस्</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">फोटोका विवरणहरू प्राप्त गर्न चाहनुहुन्छ?</translation>
 <translation id="7055152154916055070">रिडिरेक्ट नामक सुविधामाथि रोक लगाइयो:</translation>
@@ -1403,6 +1414,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - यो भाषा डाउनलोड गर्न सकिएन। पछि फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="8951232171465285730">Chrome ले तपाईंको <ph name="MEGABYTES" /> एम.बि. बचाएको छ</translation>
 <translation id="8955719471735800169">सबैभन्दा माथि फर्कनुहोस्</translation>
+<translation id="8964479563882643397">तपाईं नयाँ इन्कोग्निटो ट्याब खोल्न चाहनुहुन्छ भने मेनु खोल्नुहोस्</translation>
 <translation id="8965591936373831584">विचाराधीन</translation>
 <translation id="8967427617812342790">पाठ्य सूचीमा थप्नुहोस्</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> वटा इन्कोग्निटो ट्याबका साथै अर्को <ph name="TAB_COUNT_ONE" /> ट्याब बन्द गरिने छन्}other{<ph name="INCOGNITO_TAB_COUNT" /> वटा इन्कोग्निटो ट्याबका साथै अरू <ph name="TAB_COUNT_MANY" /> वटा ट्याब बन्द गरिने छन्}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
index 7f9761d..1c36733 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">ଉପଯୋଗକର୍ତ୍ତାନାମ କପି କରନ୍ତୁ</translation>
 <translation id="1592864538817356322">ଷ୍ଟାଣ୍ଡାର୍ଡ ସୁରକ୍ଷା:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{1 ଚୟନ କରାଯାଇଥିବା ଆଇଟମ୍‌ କାଢ଼ନ୍ତୁ}other{#ଟି ଚୟନ କରାଯାଇଥିବା ଆଇଟମ୍‌ କାଢ଼ନ୍ତୁ}}</translation>
+<translation id="1633659023549081553">Chromeର ମୂଳପୃଷ୍ଠାରେ ନୂଆ ବିଷୟବସ୍ତୁ ଖୋଜି ପାଆନ୍ତୁ</translation>
 <translation id="1641113438599504367">ସେଫ୍ ବ୍ରାଉଜିଂ</translation>
 <translation id="164269334534774161"><ph name="CREATION_TIME" />ରୁ ଆପଣ ଏହି ପୃଷ୍ଠାର ଏକ ଅଫ୍‍ଲାଇନ୍‍ କପି ଦେଖୁଛନ୍ତି</translation>
 <translation id="1644574205037202324">ଇତିବୃତ୍ତି</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">ସ୍ଲାଇଡର୍‍କୁ ସେପର୍ଯ୍ୟନ୍ତ ଟାଣନ୍ତୁ, ଯେପର୍ଯ୍ୟନ୍ତ ଆପଣ ଏହାକୁ ଭଲ ଭାବରେ ପଢ଼ିନାହାନ୍ତି। ପାରାଗ୍ରାଫ୍‍‍ରେ ଦୁଇଥର ଟାପ୍ କରିବା ପରେ ଟେକ୍ସଟ୍ ଅତି କମ୍‍‍ରେ ଏତେ ବଡ଼ ଦେଖାଯିବା ଆବଶ୍ୟକ।</translation>
 <translation id="2323763861024343754">ସାଇଟ୍ ଷ୍ଟୋରେଜ୍</translation>
 <translation id="2328985652426384049">ସାଇନ୍ ଇନ୍ କରିପାରିବେ ନାହିଁ</translation>
+<translation id="2342601525305963189">Chrome ଟିପ୍ସ:</translation>
 <translation id="234265804618409743">ଆପଣଙ୍କ କ୍ୟାମେରାକୁ ଖୋଲାଯାଇ ପାରିବ ନାହିଁ। କିଛି ତ୍ରୁଟି ହୋଇଗଲା।</translation>
 <translation id="2345671828921229300">ସନ୍ଧାନ କରିବାକୁ, କୌଣସି ଏକ ଶବ୍ଦକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ</translation>
 <translation id="2349710944427398404">ଆକାଉଣ୍ଟ, ବୁକ୍‌ମାର୍କ୍ସ ତଥା ସେଭ୍ କରାଯାଇଥିବା ସେଟିଂସ୍ ସମେତ Chrome ଦ୍ୱାରା ବ୍ୟବହୃତ ସମୁଦାୟ ଡାଟା</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">ଆପଣ ଭିଜିଟ କରିଥିବା URLଗୁଡ଼ିକ Googleକୁ ପଠାଯାଇଥାଏ</translation>
 <translation id="2536728043171574184">ଏହି ପୃଷ୍ଠାର ଏକ ଅଫ୍‌ଲାଇନ୍‌ କପି ଦେଖୁଛି</translation>
 <translation id="2546283357679194313">କୁକିସ୍ ଏବଂ ସାଇଟ୍ ଡାଟା</translation>
+<translation id="2558692642259318568">ଆପଣଙ୍କ ଡିଭାଇସରେ କାର୍ଯ୍ୟକଳାପ ସେଭ ନକରି ବ୍ରାଉଜ କରିବା ପାଇଁ, ଇନକଗ୍ନିଟୋ ମୋଡ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ</translation>
 <translation id="2561519700418191927">ଭିଡିଓ ପ୍ରିଭ୍ୟୁଗୁଡ଼ିକ</translation>
 <translation id="2567385386134582609">ଛବି</translation>
 <translation id="2567545343356994513">ବିପଦଜନକ ୱେବସାଇଟ, ଡାଉନଲୋଡ ଏବଂ ଏକ୍ସଟେନସନଗୁଡ଼ିକ ବିରୁଦ୍ଧରେ ଅତି ଶୀଘ୍ର, ସକ୍ରିୟ ସୁରକ୍ଷା</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">କାର୍ଡ ସଂଖ୍ୟା</translation>
 <translation id="2625189173221582860">ପାସ୍‍ୱର୍ଡ କପି ହୋଇଛି</translation>
 <translation id="2631006050119455616">ସେଭ୍‌ ହୋଇଗଲା</translation>
+<translation id="2634905176438867146">Chromeକୁ ଆପଣଙ୍କ ଡିଫଲ୍ଟ ବ୍ରାଉଜର ଭାବେ କିପରି ସେଟ କରିବେ ତାହା ଜାଣନ୍ତୁ</translation>
 <translation id="2645657967708199252">ଆପଣଙ୍କ <ph name="CONNECTION_TYPE" /> ସଂଯୋଗ ଆପଣଙ୍କର ଡାଉନଲୋଡକୁ ସ୍ଲୋ କରିପାରେ</translation>
 <translation id="2647434099613338025">ଭାଷା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="2649068648233607930">ଆପଣଙ୍କ ବ୍ରାଉଜର <ph name="DOMAIN" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">ମୂଲ୍ୟ ଟ୍ରାକ କରାଯାଉଛି</translation>
 <translation id="3037517125981011456">Chromeରେ ସାଇନ୍ ଇନ୍ କରିବାକୁ ପ୍ରମ୍ପ୍ଟ ଦେଖାଏ</translation>
 <translation id="3046945242843292318">ପରବର୍ତ୍ତୀ ସମୟରେ ଏହି ସାଇଟକୁ ଶୀଘ୍ର ଯାଆନ୍ତୁ</translation>
+<translation id="3055259925215945098">ବୁକମାର୍କ ମୁଭ କରାଯାଇଛି</translation>
 <translation id="305593374596241526">ଲୋକେସନ୍‍ ବନ୍ଦ ଅଛି; ଏହାକୁ <ph name="BEGIN_LINK" />Android ସେଟିଂସ୍‌<ph name="END_LINK" />ରେ ଚାଲୁ କରନ୍ତୁ।</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" />ଟି ବୁକ୍‌ମାର୍କ}other{<ph name="BOOKMARKS_COUNT_MANY" />ଟି ବୁକ୍‌ମାର୍କ}}</translation>
 <translation id="3062802207422175757">Chromeରେ ଆପଣଙ୍କ ଆଗ୍ରହଗୁଡ଼ିକ ବିଷୟରେ ଆର୍ଟିକିଲ୍</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">ଡିଭାଇସରେ ସେଭ୍ କରନ୍ତୁ</translation>
 <translation id="3236059992281584593">ଅବଶିଷ୍ଟ 1 ମିନଟ୍‌ ଅଛି</translation>
 <translation id="3237087289225714896">ଷ୍ଟାଣ୍ଡାର୍ଡ ପ୍ରିଲୋଡିଂ:</translation>
+<translation id="3237433641417325993">ପ୍ରସ୍ତାବିତ ଆର୍ଟିକିଲଗୁଡ଼ିକୁ ଦେଖିବା ପାଇଁ ତଳକୁ ସ୍କ୍ରୋଲ କରନ୍ତୁ</translation>
 <translation id="3244271242291266297">ମାସ</translation>
 <translation id="3245429137663807393">ଯଦି ଆପଣ Chrome ବ୍ୟବହାର ରିପୋର୍ଟଗୁଡ଼ିକ ମଧ୍ୟ ସେୟାର କରନ୍ତି, ତେବେ ସେହି ରିପୋର୍ଟଗୁଡ଼ିକ ଆପଣ ଭିଜିଟ କରିଥିବା URLଗୁଡ଼ିକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରିବ</translation>
 <translation id="3250563604907490871">ଯେତେବେଳେ ଆପଣ ୱାଇ-ଫାଇ ସହ ସଂଯୋଗ କରନ୍ତି ଛବିର ବର୍ଣ୍ଣନା ପୁଣି ଆରମ୍ଭ ହେବ</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome ପାଖରେ ଅନୁରୋଧ କରାଯାଇଥିବା ସମ୍ବଳକୁ ଆକ୍ସେସ୍‌ ନାହିଁ।</translation>
 <translation id="4837753911714442426">ପୃଷ୍ଠା ପ୍ରିଣ୍ଟ କରିବାକୁ ବିକଳ୍ପଗୁଡ଼ିକ ଖୋଲନ୍ତୁ</translation>
 <translation id="4842092870884894799">ପାସ୍‌ୱର୍ଡ ତିଆରି ପପ୍-ଅପ୍ ଦେଖାଉଛି</translation>
+<translation id="4842515939542199281">ଆପଣଙ୍କ ଭଏସ ମାଧ୍ୟମରେ ସନ୍ଧାନ କରିବାକୁ, ମାଇକ୍ରୋଫୋନରେ ଟାପ କରନ୍ତୁ</translation>
 <translation id="4850886885716139402">ଦେଖନ୍ତୁ</translation>
 <translation id="4860895144060829044">କଲ୍ କରନ୍ତୁ</translation>
 <translation id="4864369630010738180">ସାଇନ୍ ଇନ୍ ହେଉଛି…</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">ବିସ୍ତାରିତ ବ୍ୟବହାର ଡାଟା</translation>
 <translation id="509429900233858213">ଏକ ତ୍ରୁଟି ଦେଖାଦେଲା।</translation>
 <translation id="510275257476243843">1 ଘଣ୍ଟା ବାକି ଅଛି</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" />କୁ</translation>
 <translation id="5118713593561876160">ଆଗ୍ରହ</translation>
 <translation id="5123685120097942451">ଇନ୍‌କଗ୍ନିଟୋ ଟାବ୍</translation>
 <translation id="5126510351761255129">ଆପଣଙ୍କର କାର୍ଡ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">ଫାଇଲ୍‌ଗୁଡ଼ିକ ଡାଉନ୍‌ଲୋଡ୍ କରିବାକୁ Chrome ଷ୍ଟୋରେଜ୍ ଆକ୍ସେସ୍ ଆବଶ୍ୟକ କରେ।</translation>
 <translation id="5749237766298580851">ବନ୍ଦ ଥିବା <ph name="SEPARATOR" />ର ସୁପାରିଶ କରାଯାଇନାହିଁ</translation>
 <translation id="5752232708629533680">କେବଳ GIF ସେୟାର୍ କରନ୍ତୁ</translation>
+<translation id="5753139477036638699">Chromeରେ ସନ୍ଧାନ କରିବା ପାଇଁ ଆପଣ ଆପଣଙ୍କ ଭଏସକୁ ବ୍ୟବହାର କରିପାରିବେ</translation>
 <translation id="5754350196967618083">Discoverକୁ ରିଫ୍ରେସ୍ କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="5763382633136178763">ଇନ୍‍କଗ୍ନିଟୋ ଟାବ୍‍</translation>
 <translation id="5763514718066511291">ଏହି ଆପ୍ ପାଇଁ URL କପି କରିବାକୁ ଟାପ୍ କରନ୍ତୁ</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chromeରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ, ଖୋଲା ଅଛି।</translation>
 <translation id="6814033694018386318">ଆପଣ Google ସହିତ କ’ଣ ସେୟାର୍ କରନ୍ତି</translation>
 <translation id="6817747507826986771">ଏହି ପୃଷ୍ଠାକୁ ଶୀଘ୍ର ସେୟାର୍ କରନ୍ତୁ। ଏହି ସର୍ଟକଟକୁ ଏଡିଟ୍ କରିବା ପାଇଁ, ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।</translation>
+<translation id="6819199143469632133">ସମସ୍ତ ଡିଭାଇସରେ ଆପଣଙ୍କ Google ଷ୍ଟଫକୁ ପାଇବା ପାଇଁ, ସାଇନ ଇନ କରନ୍ତୁ</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" /> ଟାବ୍ ଚୟନ କରାଯାଇଛି</translation>
 <translation id="6828070228333235514">ମୂଲ୍ୟ ଟ୍ରାକ କରିବା ବନ୍ଦ କରନ୍ତୁ</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> ରିଷ୍ଟୋର୍ କରାଯାଇଛି</translation>
 <translation id="7029390216614421513">ଏହି ଫ୍ରେମରେ QR କୋଡ୍/ବାରକୋଡକୁ ରଖନ୍ତୁ।</translation>
 <translation id="7029809446516969842">ପାସୱାର୍ଡଗୁଡିକ</translation>
+<translation id="7037830628447527439">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ ମାଧ୍ୟମରେ Chromeରେ ସାଇନ ଇନ କରନ୍ତୁ</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">ଛବିର ବର୍ଣ୍ଣନା ପାଇବାକୁ ଚାହାଁନ୍ତି କି?</translation>
 <translation id="7055152154916055070">ରିଡାଇରେକ୍ଟକୁ ଅବରୋଧ କରାଯାଇଛି:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - ଏହି ଭାଷାକୁ ଡାଉନଲୋଡ୍ କରାଯାଇପାରିଲା ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="8951232171465285730">Chrome ଆପଣଙ୍କର <ph name="MEGABYTES" /> MB ସେଭ୍ କରିଛି</translation>
 <translation id="8955719471735800169">ଉପରକୁ ଫେରି ଯାଆନ୍ତୁ</translation>
+<translation id="8964479563882643397">ଏକ ନୂଆ ଇନକଗ୍ନିଟୋ ଟାବ ଖୋଲିବା ପାଇଁ, ମେନୁ ଖୋଲନ୍ତୁ</translation>
 <translation id="8965591936373831584">ବାକି ଅଛି</translation>
 <translation id="8967427617812342790">ପଢ଼ିବା ତାଲିକାରେ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" />ଟି ଇନକଗ୍ନିଟୋ ଏବଂ <ph name="TAB_COUNT_ONE" />ଟି ଅଧିକ ଟାବ୍ ବନ୍ଦ ହୋଇଯିବ}other{<ph name="INCOGNITO_TAB_COUNT" />ଟି ଇନକଗ୍ନିଟୋ ଏବଂ <ph name="TAB_COUNT_MANY" />ଟି ଅଧିକ ଟାବ୍ ବନ୍ଦ ହୋଇଯିବ}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
index 2602cb8..65dffd34 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">ਵਰਤੋਂਕਾਰ ਨਾਮ ਕਾਪੀ ਕਰੋ</translation>
 <translation id="1592864538817356322">ਮਿਆਰੀ ਸੁਰੱਖਿਆ:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{1 ਚੁਣੀ ਗਈ ਆਈਟਮ ਹਟਾਓ}one{# ਚੁਣੀਆਂ ਗਈਆਂ ਆਈਟਮਾਂ ਹਟਾਓ}other{# ਚੁਣੀਆਂ ਗਈਆਂ ਆਈਟਮਾਂ ਹਟਾਓ}}</translation>
+<translation id="1633659023549081553">Chrome ਦੇ ਹੋਮਪੇਜ 'ਤੇ ਨਵੀਂ ਸਮੱਗਰੀ ਲੱਭੋ</translation>
 <translation id="1641113438599504367">ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ</translation>
 <translation id="164269334534774161">ਤੁਸੀਂ <ph name="CREATION_TIME" /> ਤੋਂ ਇਸ ਪੰਨੇ ਦੀ ਇੱਕ ਆਫ਼ਲਾਈਨ ਕਾਪੀ ਦੇਖ ਰਹੇ ਹੋ</translation>
 <translation id="1644574205037202324">ਇਤਿਹਾਸ</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">ਸਲਾਈਡਰ ਨੂੰ ਡ੍ਰੈਗ ਕਰੋ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਇਸਨੂੰ ਆਸਾਨੀ ਨਾਲ ਪੜ੍ਹ ਨਾ ਲਓ। ਲਿਖਤ ਇੱਕ ਪੈਰਾਗ੍ਰਾਫ 'ਤੇ ਡਬਲ-ਟੈਪ ਕਰਨ ਤੋਂ ਬਾਅਦ ਘੱਟੋ-ਘੱਟ ਇੰਨਾ ਵੱਡਾ ਦਿਖਾਈ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।</translation>
 <translation id="2323763861024343754">ਸਾਈਟ ਸਟੋਰੇਜ</translation>
 <translation id="2328985652426384049">ਸਾਈਨ-ਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation>
+<translation id="2342601525305963189">Chrome ਸੰਬੰਧੀ ਨੁਕਤੇ:</translation>
 <translation id="234265804618409743">ਤੁਹਾਡੇ ਕੈਮਰੇ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਕੋਈ ਗੜਬੜ ਹੋਈ।</translation>
 <translation id="2345671828921229300">ਖੋਜਣ ਲਈ, ਕਿਸੇ ਸ਼ਬਦ ਨੂੰ ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ</translation>
 <translation id="2349710944427398404">Chrome ਵੱਲੋਂ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਕੁੱਲ ਡਾਟਾ, ਜਿਸ ਵਿੱਚ ਖਾਤੇ, ਬੁੱਕਮਾਰਕ, ਅਤੇ ਰੱਖਿਅਤ ਕੀਤੀਆਂ ਸੈਟਿੰਗਾਂ ਸ਼ਾਮਲ ਹਨ</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">ਤੁਹਾਡੇ ਵੱਲੋਂ ਖੋਲ੍ਹੇ ਜਾਣ ਵਾਲੇ URL Google ਨੂੰ ਭੇਜੇ ਜਾਂਦੇ ਹਨ</translation>
 <translation id="2536728043171574184">ਇਸ ਪੰਨੇ ਦੀ ਇੱਕ ਆਫ਼ਲਾਈਨ ਕਾਪੀ ਦੇਖ ਰਿਹਾ ਹੈ</translation>
 <translation id="2546283357679194313">ਕੁਕੀਜ਼ ਅਤੇ ਸਾਈਟ ਡਾਟਾ</translation>
+<translation id="2558692642259318568">ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਸਰਗਰਮੀ ਨੂੰ ਰੱਖਿਅਤ ਕੀਤੇ ਬਿਨਾਂ ਬ੍ਰਾਊਜ਼ ਕਰਨ ਲਈ, ਇਨਕੋਗਨਿਟੋ ਨੂੰ ਅਜ਼ਮਾਓ</translation>
 <translation id="2561519700418191927">ਵੀਡੀਓ ਦੀਆਂ ਪੂਰਵ-ਝਲਕਾਂ</translation>
 <translation id="2567385386134582609">ਇਮੇਜ</translation>
 <translation id="2567545343356994513">ਖਤਰਨਾਕ ਵੈੱਬਸਾਈਟਾਂ, ਡਾਊਨਲੋਡਾਂ ਅਤੇ ਐਕਸਟੈਂਸ਼ਨਾਂ ਤੋਂ ਜ਼ਿਆਦਾ ਤੇਜ਼ ਅਤੇ ਚੁਸਤ ਸੁਰੱਖਿਆ</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">ਕਾਰਡ ਨੰਬਰ</translation>
 <translation id="2625189173221582860">ਪਾਸਵਰਡ ਕਾਪੀ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="2631006050119455616">ਬਚਾਇਆ ਗਿਆ</translation>
+<translation id="2634905176438867146">Chrome ਨੂੰ ਆਪਣੇ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਵਜੋਂ ਸੈੱਟ ਕਰਨ ਬਾਰੇ ਜਾਣੋ</translation>
 <translation id="2645657967708199252">ਤੁਹਾਡਾ <ph name="CONNECTION_TYPE" /> ਕਨੈਕਸ਼ਨ ਤੁਹਾਡੇ ਡਾਊਨਲੋਡ ਨੂੰ ਹੌਲੀ ਕਰ ਸਕਦਾ ਹੈ</translation>
 <translation id="2647434099613338025">ਭਾਸ਼ਾ ਜੋੜੋ</translation>
 <translation id="2649068648233607930">ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਪ੍ਰਬੰਧਨ <ph name="DOMAIN" /> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">ਕੀਮਤ 'ਤੇ ਨਜ਼ਰ ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ</translation>
 <translation id="3037517125981011456">Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰਨ ਲਈ ਉਤਪ੍ਰੇਰਕਾਂ ਨੂੰ ਦਿਖਾਉਂਦਾ ਹੈ</translation>
 <translation id="3046945242843292318">ਅਗਲੀ ਵਾਰ ਇਸ ਸਾਈਟ 'ਤੇ ਵਧੇਰੇ ਤੇਜ਼ੀ ਨਾਲ ਪਹੁੰਚੋ</translation>
+<translation id="3055259925215945098">ਬੁੱਕਮਾਰਕ ਨੂੰ ਲਿਜਾਇਆ ਗਿਆ</translation>
 <translation id="305593374596241526">ਟਿਕਾਣਾ ਸੇਵਾ ਬੰਦ ਹੈ; ਇਸਨੂੰ <ph name="BEGIN_LINK" />Android ਸੈਟਿੰਗਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਚਾਲੂ ਕਰੋ।</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> ਬੁੱਕਮਾਰਕ}one{<ph name="BOOKMARKS_COUNT_MANY" /> ਬੁੱਕਮਾਰਕ}other{<ph name="BOOKMARKS_COUNT_MANY" /> ਬੁੱਕਮਾਰਕ}}</translation>
 <translation id="3062802207422175757">Chrome 'ਤੇ ਤੁਹਾਡੀਆਂ ਦਿਲਚਸਪੀਆਂ ਬਾਰੇ ਲੇਖ</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">ਡੀਵਾਈਸ ਵਿੱਚ ਰੱਖਿਅਤ ਕਰੋ</translation>
 <translation id="3236059992281584593">1 ਮਿੰਟ ਬਾਕੀ</translation>
 <translation id="3237087289225714896">ਮਿਆਰੀ ਪ੍ਰੀਲੋਡਿੰਗ:</translation>
+<translation id="3237433641417325993">ਸੁਝਾਏ ਗਏ ਲੇਖਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਹੇਠਾਂ ਸਕ੍ਰੋਲ ਕਰੋ</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">ਜੇ ਤੁਸੀਂ Chrome ਵਰਤੋਂ ਸੰਬੰਧੀ ਰਿਪੋਰਟਾਂ ਨੂੰ ਵੀ ਸਾਂਝਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਨ੍ਹਾਂ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਤੁਹਾਡੇ ਵੱਲੋਂ ਖੋਲ੍ਹੇ ਜਾਣ ਵਾਲੇ URL ਵੀ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ</translation>
 <translation id="3250563604907490871">ਜਦੋਂ ਤੁਸੀਂ ਵਾਈ-ਫਾਈ ਨਾਲ ਕਨੈਕਟ ਕਰੋਗੇ ਤਾਂ ਚਿੱਤਰ ਵਰਣਨ ਮੁੜ-ਚਾਲੂ ਹੋਵੇਗਾ</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome ਦੀ ਬੇਨਤੀ ਕੀਤੇ ਸਰੋਤ 'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਹੈ।</translation>
 <translation id="4837753911714442426">ਪੰਨਾ ਪ੍ਰਿੰਟ ਕਰਨ ਲਈ ਵਿਕਲਪਾਂ ਨੂੰ ਖੋਲ੍ਹੋ</translation>
 <translation id="4842092870884894799">ਪਾਸਵਰਡ ਜੈਨਰੇਸ਼ਨ ਪੌਪਅੱਪ  ਦਿਖਾ ਰਿਹਾ ਹੈ</translation>
+<translation id="4842515939542199281">ਆਪਣੀ ਅਵਾਜ਼ ਨਾਲ ਖੋਜ ਕਰਨ ਲਈ, ਮਾਈਕ੍ਰੋਫ਼ੋਨ 'ਤੇ ਟੈਪ ਕਰੋ</translation>
 <translation id="4850886885716139402">ਦੇਖੋ</translation>
 <translation id="4860895144060829044">ਕਾਲ ਕਰੋ</translation>
 <translation id="4864369630010738180">ਸਾਈਨ ਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">ਵਿਸਤ੍ਰਿਤ ਵਰਤੋਂ ਡਾਟਾ</translation>
 <translation id="509429900233858213">ਇੱਕ ਗੜਬੜ ਹੋਈ</translation>
 <translation id="510275257476243843">1 ਘੰਟਾ ਬਾਕੀ</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> ਵੱਲ</translation>
 <translation id="5118713593561876160">ਦਿਲਚਸਪੀਆਂ</translation>
 <translation id="5123685120097942451">ਇਨਕੋਗਨਿਟੋ ਟੈਬ</translation>
 <translation id="5126510351761255129">ਆਪਣੇ ਕਾਰਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">ਫ਼ਾਈਲਾਂ ਡਾਉਨਲੋਡ ਕਰਨ ਲਈ Chrome ਨੂੰ ਸਟੋਰੋਜ ਤੱਕ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।</translation>
 <translation id="5749237766298580851">ਬੰਦ ਹੈ <ph name="SEPARATOR" /> ਇਸਦੀ ਸਿਫ਼ਾਰਸ਼ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ</translation>
 <translation id="5752232708629533680">ਸਿਰਫ਼ GIF ਨੂੰ ਸਾਂਝਾ ਕਰੋ</translation>
+<translation id="5753139477036638699">ਤੁਸੀਂ Chrome ਵਿੱਚ ਖੋਜ ਕਰਨ ਲਈ ਆਪਣੀ ਅਵਾਜ਼ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ</translation>
 <translation id="5754350196967618083">Discover ਨੂੰ ਰਿਫ੍ਰੈਸ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation>
 <translation id="5763382633136178763">ਗੁਮਨਾਮ ਟੈਬਸ</translation>
 <translation id="5763514718066511291">ਇਸ ਐਪ ਲਈ URL ਕਾਪੀ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ, ਖੋਲ੍ਹਿਆ ਗਿਆ।</translation>
 <translation id="6814033694018386318">ਤੁਸੀਂ Google ਨਾਲ ਕੀ ਸਾਂਝਾ ਕਰਦੇ ਹੋ</translation>
 <translation id="6817747507826986771">ਇਸ ਪੰਨੇ ਨੂੰ ਤੁਰੰਤ ਸਾਂਝਾ ਕਰੋ। ਇਸ ਸ਼ਾਰਟਕੱਟ ਦਾ ਸੰਪਾਦਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।</translation>
+<translation id="6819199143469632133">ਸਾਰੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਆਪਣੀ Google ਸਮੱਗਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" /> ਟੈਬ ਨੂੰ ਚੁਣਿਆ ਗਿਆ</translation>
 <translation id="6828070228333235514">ਕੀਮਤ ਨੂੰ ਟਰੈਕ ਕਰਨਾ ਬੰਦ ਕਰੋ</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="7029390216614421513">QR ਕੋਡ/ਬਾਰ ਕੋਡ ਨੂੰ ਇਸ ਫ੍ਰੇਮ ਵਿੱਚ ਰੱਖੋ।</translation>
 <translation id="7029809446516969842">ਪਾਸਵਰਡ</translation>
+<translation id="7037830628447527439">ਆਪਣੇ Google ਖਾਤੇ ਨਾਲ Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">ਕੀ ਚਿੱਤਰ ਵਰਣਨ ਪ੍ਰਾਪਤ ਕਰਨੇ ਹਨ?</translation>
 <translation id="7055152154916055070">ਇਸ ਰੀਡਾਇਰੈਕਟ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - ਇਹ ਭਾਸ਼ਾ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="8951232171465285730">Chrome ਨੇ ਤੁਹਾਡੀ <ph name="MEGABYTES" /> MB ਦੀ ਬਚਤ ਕੀਤੀ ਹੈ</translation>
 <translation id="8955719471735800169">ਸਿਖਰ 'ਤੇ ਵਾਪਸ ਜਾਓ</translation>
+<translation id="8964479563882643397">ਨਵੀਂ ਇਨਕੋਗਨਿਟੋ ਟੈਬ ਖੋਲ੍ਹਣ ਲਈ, ਮੀਨੂ ਖੋਲ੍ਹੋ</translation>
 <translation id="8965591936373831584">ਵਿਚਾਰ-ਅਧੀਨ</translation>
 <translation id="8967427617812342790">ਵਾਚਣ ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> ਇਨਕੋਗਨਿਟੋ ਅਤੇ <ph name="TAB_COUNT_ONE" /> ਹੋਰ ਟੈਬ ਨੂੰ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ}one{<ph name="INCOGNITO_TAB_COUNT" /> ਇਨਕੋਗਨਿਟੋ ਅਤੇ <ph name="TAB_COUNT_MANY" /> ਹੋਰ ਟੈਬ ਨੂੰ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ}other{<ph name="INCOGNITO_TAB_COUNT" /> ਇਨਕੋਗਨਿਟੋ ਅਤੇ <ph name="TAB_COUNT_MANY" /> ਹੋਰ ਟੈਬਾਂ ਨੂੰ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
index c045bdb..b3ccfb22 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopiranje uporabniškega imena</translation>
 <translation id="1592864538817356322">Standardna zaščita:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Odstranitev 1 izbranega elementa}one{Odstranitev # izbranega elementa}two{Odstranitev # izbranih elementov}few{Odstranitev # izbranih elementov}other{Odstranitev # izbranih elementov}}</translation>
+<translation id="1633659023549081553">Odkrijte novo vsebino na Chromovi domači strani.</translation>
 <translation id="1641113438599504367">Varno brskanje</translation>
 <translation id="164269334534774161">Ogledujete si kopijo te strani brez povezave z dne <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Zgodovina</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Drsnik povlecite tako daleč, da boste lahko to besedilo brez težave prebrali. Besedilo bo po dvakratnem dotiku odstavka vsaj tako veliko.</translation>
 <translation id="2323763861024343754">Shranjeni podatki splet. mesta</translation>
 <translation id="2328985652426384049">Ne morem se prijaviti</translation>
+<translation id="2342601525305963189">Nasveti za Chrome:</translation>
 <translation id="234265804618409743">Kamere ni mogoče odpreti. Prišlo je do napake.</translation>
 <translation id="2345671828921229300">Če želite iskati, pridržite besedo</translation>
 <translation id="2349710944427398404">Skupna količina podatkov, ki jih uporablja Chrome, vključno z računi, zaznamki in shranjenimi nastavitvami.</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL-ji, ki jih obiščete, se pošljejo Googlu.</translation>
 <translation id="2536728043171574184">Ogled kopije te strani za način brez povezave.</translation>
 <translation id="2546283357679194313">Piškotki in podatki o spletnih mestih</translation>
+<translation id="2558692642259318568">Če želite brskati brez shranjevanja dejavnosti v napravi, poskusite anonimni način.</translation>
 <translation id="2561519700418191927">Predogledi videoposnetkov</translation>
 <translation id="2567385386134582609">SLIKA</translation>
 <translation id="2567545343356994513">Hitrejša, še boljša zaščita proti nevarnim spletnim mestom, prenosom in razširitvam.</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Številka kartice</translation>
 <translation id="2625189173221582860">Geslo kopirano</translation>
 <translation id="2631006050119455616">Prihranjeno</translation>
+<translation id="2634905176438867146">Preberite, kako Chrome nastavite kot privzetega.</translation>
 <translation id="2645657967708199252">Zaradi povezave <ph name="CONNECTION_TYPE" /> je prenos morda nekoliko počasnejši.</translation>
 <translation id="2647434099613338025">Dodaj jezik</translation>
 <translation id="2649068648233607930">Brskalnik upravlja domena <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Spremljanje cene</translation>
 <translation id="3037517125981011456">Pokaže pozive za prijavo v Chrome.</translation>
 <translation id="3046945242843292318">Naslednjič hitreje odprite to spletno mesto.</translation>
+<translation id="3055259925215945098">Zaznamek je bil premaknjen</translation>
 <translation id="305593374596241526">Lokacija je izklopljena. Vklopite jo lahko v <ph name="BEGIN_LINK" />nastavitvah za Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> zaznamek}one{<ph name="BOOKMARKS_COUNT_MANY" /> zaznamek}two{<ph name="BOOKMARKS_COUNT_MANY" /> zaznamka}few{<ph name="BOOKMARKS_COUNT_MANY" /> zaznamki}other{<ph name="BOOKMARKS_COUNT_MANY" /> zaznamkov}}</translation>
 <translation id="3062802207422175757">Članki na temo vaših zanimanj v Chromu</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Shrani v napravo</translation>
 <translation id="3236059992281584593">Še 1 min</translation>
 <translation id="3237087289225714896">Standardno vnaprejšnje nalaganje:</translation>
+<translation id="3237433641417325993">Pomaknite se navzdol, če si želite ogledati predlagane članke.</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Če delite tudi poročila o uporabi Chroma, so v teh poročilih vključeni URL-ji, ki jih obiščete.</translation>
 <translation id="3250563604907490871">Opisi slik se bodo nadaljevali, ko vzpostavite povezavo z omrežjem Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome nima dostopa do zahtevanega vira</translation>
 <translation id="4837753911714442426">Odpiranje možnosti za tiskanje strani</translation>
 <translation id="4842092870884894799">Prikaz pojavnega okna za ustvarjanje gesel</translation>
+<translation id="4842515939542199281">Če želite iskati z glasom, se dotaknite mikrofona.</translation>
 <translation id="4850886885716139402">Pogled</translation>
 <translation id="4860895144060829044">Pokličite</translation>
 <translation id="4864369630010738180">Prijavljanje ...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Razširjeni podatki o uporabi</translation>
 <translation id="509429900233858213">Napaka.</translation>
 <translation id="510275257476243843">Še 1 h</translation>
+<translation id="5115811374190515607">za <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Zanimanja</translation>
 <translation id="5123685120097942451">Anonimni zavihek</translation>
 <translation id="5126510351761255129">Preverjanje kartice</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome za prenos datotek potrebuje dostop do shrambe.</translation>
 <translation id="5749237766298580851">Izklopljeno <ph name="SEPARATOR" /> Ni priporočljivo</translation>
 <translation id="5752232708629533680">Deli samo sliko GIF</translation>
+<translation id="5753139477036638699">V Chromu lahko iščete z glasom.</translation>
 <translation id="5754350196967618083">Odkrivanja ni mogoče osvežiti</translation>
 <translation id="5763382633136178763">Anonimni zavihki</translation>
 <translation id="5763514718066511291">Dotaknite se, če želite kopirati URL za to aplikacijo</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Prijava v Chrome, odprto.</translation>
 <translation id="6814033694018386318">Kaj delite z Googlom</translation>
 <translation id="6817747507826986771">Hitro delite to stran. Če želite urediti to bližnjico, pridržite.</translation>
+<translation id="6819199143469632133">Če želite imeti Googlove stvari v svojih napravah, se prijavite.</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, zavihek, izbran</translation>
 <translation id="6828070228333235514">Ustavi spremljanje cene</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Obnovljeno: <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Kodo QR ali črtno kodo postavite v ta okvir.</translation>
 <translation id="7029809446516969842">Gesla</translation>
+<translation id="7037830628447527439">Prijavite se v Chrome z računom Google.</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Želite pridobiti opise slik?</translation>
 <translation id="7055152154916055070">Preusmeritev je preprečena:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – tega jezika ni bilo mogoče prenesti. Poskusite pozneje.</translation>
 <translation id="8951232171465285730">S Chromom ste prihranili <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Nazaj na vrh</translation>
+<translation id="8964479563882643397">Če želite odpreti nov anonimni zavihek, odprite meni.</translation>
 <translation id="8965591936373831584">poteka</translation>
 <translation id="8967427617812342790">Add to reading list</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Zaprt bo <ph name="INCOGNITO_TAB_COUNT" /> anonimni zavihek in še <ph name="TAB_COUNT_ONE" />.}one{Zaprt bo <ph name="INCOGNITO_TAB_COUNT" /> anonimni zavihek in še <ph name="TAB_COUNT_MANY" />.}two{Zaprta bosta <ph name="INCOGNITO_TAB_COUNT" /> anonimna zavihka in še <ph name="TAB_COUNT_MANY" />.}few{Zaprti bodo <ph name="INCOGNITO_TAB_COUNT" /> anonimni zavihki in še <ph name="TAB_COUNT_MANY" />.}other{Zaprtih bo <ph name="INCOGNITO_TAB_COUNT" /> anonimnih zavihkov in še <ph name="TAB_COUNT_MANY" />.}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
index 0239eab..3ce25955 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopjo emrin e përdoruesit</translation>
 <translation id="1592864538817356322">Mbrojtja standarde:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Hiq 1 artikull të zgjedhur}other{Hiq # artikuj të zgjedhur}}</translation>
+<translation id="1633659023549081553">Zbulo përmbajtje të reja në faqen kryesore të Chrome</translation>
 <translation id="1641113438599504367">Shfletimi i sigurt</translation>
 <translation id="164269334534774161">Po shikon një kopje jashtë linje të kësaj faqeje nga <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historiku</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Zvarrit rrëshqitësin derisa të arrish ta lexosh këtë pa u munduar. Teksti duhet të duket të paktën kaq i madh pas trokitjes dy herë mbi një paragraf.</translation>
 <translation id="2323763861024343754">Hapësira ruajtëse e sajtit</translation>
 <translation id="2328985652426384049">Nuk mund të identifikohet</translation>
+<translation id="2342601525305963189">Këshilla për Chrome:</translation>
 <translation id="234265804618409743">Kamera nuk mund të hapet. Ndodhi një gabim.</translation>
 <translation id="2345671828921229300">Për të kërkuar, mbaj shtypur një fjalë</translation>
 <translation id="2349710944427398404">Të dhënat gjithsej të përdorura nga Chrome, duke përfshirë llogaritë, faqeshënuesit dhe cilësimet e ruajtura</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL-të që viziton dërgohen te Google</translation>
 <translation id="2536728043171574184">Po shikon një kopje jashtë linje të kësaj faqeje</translation>
 <translation id="2546283357679194313">Kukit dhe të dhënat e faqes</translation>
+<translation id="2558692642259318568">Provo modalitetin "E fshehtë" për të shfletuar pa e ruajtur aktivitetin në pajisje</translation>
 <translation id="2561519700418191927">Pamjet paraprake të videove</translation>
 <translation id="2567385386134582609">IMAZHI</translation>
 <translation id="2567545343356994513">Mbrojtje më e shpejtë dhe proaktive ndaj sajteve të uebit, shkarkimeve dhe shtesave të rrezikshme</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Numri i kartës</translation>
 <translation id="2625189173221582860">Fjalëkalimi u kopjua</translation>
 <translation id="2631006050119455616">TË KURSYERA</translation>
+<translation id="2634905176438867146">Mëso se si ta caktosh Chrome si të parazgjedhur</translation>
 <translation id="2645657967708199252">Lidhja jote <ph name="CONNECTION_TYPE" /> mund ta ngadalësojë shkarkimin tënd</translation>
 <translation id="2647434099613338025">Shto gjuhën</translation>
 <translation id="2649068648233607930">Shfletuesi yt menaxhohet nga <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Çmimi po monitorohet</translation>
 <translation id="3037517125981011456">Shfaq kërkesa për t'u identifikuar në Chrome</translation>
 <translation id="3046945242843292318">Shko më shpejt te ky sajt herën tjetër</translation>
+<translation id="3055259925215945098">Faqeshënuesi u zhvendos</translation>
 <translation id="305593374596241526">Vendndodhja është joaktive. Aktivizoje te <ph name="BEGIN_LINK" />Cilësimet e Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> faqeshënues}other{<ph name="BOOKMARKS_COUNT_MANY" /> faqeshënues}}</translation>
 <translation id="3062802207422175757">Artikuj rreth interesave të tua në Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Ruaj te pajisja</translation>
 <translation id="3236059992281584593">1 minutë e mbetur</translation>
 <translation id="3237087289225714896">Ngarkimi paraprak standard:</translation>
+<translation id="3237433641417325993">Lëviz poshtë për të parë artikujt e sugjeruar</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Nëse ndan edhe raportet e përdorimit të Chrome, ato raporte përfshijnë URL-të që viziton</translation>
 <translation id="3250563604907490871">Përshkrimet e imazheve do të vazhdojnë kur të lidhesh me Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome nuk ka qasje te burimi i kërkuar.</translation>
 <translation id="4837753911714442426">Hap opsionet për të printuar faqen</translation>
 <translation id="4842092870884894799">Po shfaq dritaren kërcyese të krijimit të fjalëkalimit</translation>
+<translation id="4842515939542199281">Trokit te mikrofoni për të kërkuar me zë</translation>
 <translation id="4850886885716139402">Pamja</translation>
 <translation id="4860895144060829044">Telefono</translation>
 <translation id="4864369630010738180">Po identifikohet...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Të dhënat e zgjeruara të përdorimit</translation>
 <translation id="509429900233858213">Ndodhi një gabim.</translation>
 <translation id="510275257476243843">1 orë e mbetur</translation>
+<translation id="5115811374190515607">te <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Interesat</translation>
 <translation id="5123685120097942451">Skeda "e fshehtë"</translation>
 <translation id="5126510351761255129">Verifiko kartën tënde</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome ka nevojë për qasje te hapësira ruajtëse për të shkarkuar skedarë.</translation>
 <translation id="5749237766298580851">Joaktiv <ph name="SEPARATOR" /> Nuk rekomandohet</translation>
 <translation id="5752232708629533680">Ndaj vetëm imazhin GIF</translation>
+<translation id="5753139477036638699">Në Chrome mund të përdorësh zërin për të kërkuar</translation>
 <translation id="5754350196967618083">"Zbulo" nuk mund të rifreskohet</translation>
 <translation id="5763382633136178763">Skedat "e fshehura"</translation>
 <translation id="5763514718066511291">Trokit për të kopjuar URL-në për këtë aplikacion</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">"Identifikohu në Chrome", i hapur.</translation>
 <translation id="6814033694018386318">Çfarë ndan me Google</translation>
 <translation id="6817747507826986771">Ndaje me shpejtësi këtë faqe. Për ta modifikuar këtë shkurtore, preke dhe mbaje të prekur.</translation>
+<translation id="6819199143469632133">Identifikohu për të marrë gjërat e Google në pajisje të ndryshme</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">Skeda <ph name="TAB_TITLE" /> është zgjedhur</translation>
 <translation id="6828070228333235514">Ndalo monitorimin e çmimit</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Restauruar në datën <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Pozicionoje kodin QR ose barkodin në këtë kornizë.</translation>
 <translation id="7029809446516969842">Fjalëkalimet</translation>
+<translation id="7037830628447527439">Identifikohu në Chrome me "Llogarinë tënde të Google"</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Të merren përshkrimet e imazheve?</translation>
 <translation id="7055152154916055070">Ridrejtimi u bllokua:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Kjo gjuhë nuk mund të shkarkohet. Provo përsëri më vonë.</translation>
 <translation id="8951232171465285730">Chrome të ka kursyer <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Kthehu në krye</translation>
+<translation id="8964479563882643397">Për të hapur një skedë të re "të fshehtë", hap menynë</translation>
 <translation id="8965591936373831584">në pritje</translation>
 <translation id="8967427617812342790">Shto te lista e leximit</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> skedë "e fshehtë" dhe <ph name="TAB_COUNT_ONE" /> skedë tjetër do të mbyllen}other{<ph name="INCOGNITO_TAB_COUNT" /> skeda "të fshehta" dhe <ph name="TAB_COUNT_MANY" /> skeda të tjera do të mbyllen}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
index 338c151c..da60e3c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopiera användarnamn</translation>
 <translation id="1592864538817356322">Standardskydd:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Ta bort 1 markerat objekt}other{Ta bort # markerade objekt}}</translation>
+<translation id="1633659023549081553">Upptäck nytt innehåll på startsidan i Chrome</translation>
 <translation id="1641113438599504367">Säker webbsökning</translation>
 <translation id="164269334534774161">Det som visas är en offlinekopia av den här sidan från <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historik</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Flytta reglaget tills du kan läsa texten ordentligt. Texten bör bli åtminstone så här stor när du trycker två gånger på ett stycke.</translation>
 <translation id="2323763861024343754">Webbplatslagring</translation>
 <translation id="2328985652426384049">Det gick inte att logga in</translation>
+<translation id="2342601525305963189">Chrome-tips:</translation>
 <translation id="234265804618409743">Det gick inte att öppna kameran. Något gick fel.</translation>
 <translation id="2345671828921229300">Om du vill söka trycker du länge på ett ord</translation>
 <translation id="2349710944427398404">Total data som används av Chrome, inklusive konton, bokmärken och sparade inställningar</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Webbadresser som du besöker skickas till Google</translation>
 <translation id="2536728043171574184">En offlinekopia av sidan visas</translation>
 <translation id="2546283357679194313">Cookies och webbplatsdata</translation>
+<translation id="2558692642259318568">Testa inkognitoläget om du vill surfa utan att aktivitet sparas på enheten</translation>
 <translation id="2561519700418191927">Förhandsgranskningar av video</translation>
 <translation id="2567385386134582609">BILD</translation>
 <translation id="2567545343356994513">Snabbare och förebyggande skydd mot farliga webbplatser, nedladdningar och tillägg</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kortnummer</translation>
 <translation id="2625189173221582860">Lösenordet har kopierats</translation>
 <translation id="2631006050119455616">Sparat</translation>
+<translation id="2634905176438867146">Läs mer om hur du ställer in Chrome som standardwebbläsare</translation>
 <translation id="2645657967708199252">Nedladdningen kan gå långsammare på grund av <ph name="CONNECTION_TYPE" />-anslutningen</translation>
 <translation id="2647434099613338025">Lägg till språk</translation>
 <translation id="2649068648233607930">Webbläsaren hanteras av <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Bevakar pris</translation>
 <translation id="3037517125981011456">Visar meddelanden om att logga in i Chrome</translation>
 <translation id="3046945242843292318">Besök den här webbplatsen snabbare nästa gång</translation>
+<translation id="3055259925215945098">Bokmärket har flyttats</translation>
 <translation id="305593374596241526">Plats har inaktiverats. Aktivera det i <ph name="BEGIN_LINK" />Android-inställningarna<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> bokmärke}other{<ph name="BOOKMARKS_COUNT_MANY" /> bokmärken}}</translation>
 <translation id="3062802207422175757">Artiklar om dina intressen i Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Spara på enhet</translation>
 <translation id="3236059992281584593">1 minut kvar</translation>
 <translation id="3237087289225714896">Standardförinläsning:</translation>
+<translation id="3237433641417325993">Du hittar artikelförslag om du scrollar ned</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Om du även delar Chrome-användningsrapporter ingår webbadresserna du besöker i dessa rapporter</translation>
 <translation id="3250563604907490871">Hämtningen av bildbeskrivningar fortsätter när enheten är ansluten till wifi</translation>
@@ -652,6 +658,7 @@
 <translation id="4835385943915508971">Chrome har inte tillgång till den begärda resursen.</translation>
 <translation id="4837753911714442426">Öppna utskriftsalternativ</translation>
 <translation id="4842092870884894799">Visar popupfönster för lösenordsgenerering</translation>
+<translation id="4842515939542199281">Tryck på mikrofonen om du vill söka med rösten</translation>
 <translation id="4850886885716139402">Visa</translation>
 <translation id="4860895144060829044">Ring</translation>
 <translation id="4864369630010738180">Loggar in ...</translation>
@@ -698,6 +705,7 @@
 <translation id="5091249083535528968">Utökad data om användning</translation>
 <translation id="509429900233858213">Det har uppstått ett fel.</translation>
 <translation id="510275257476243843">1 timme kvar</translation>
+<translation id="5115811374190515607">i <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Intressen</translation>
 <translation id="5123685120097942451">Inkognitoflik</translation>
 <translation id="5126510351761255129">Verifiera kortet</translation>
@@ -802,6 +810,7 @@
 <translation id="5749068826913805084">Chrome måste ha åtkomst till lagringsutrymmet om det ska gå att ladda ned filer.</translation>
 <translation id="5749237766298580851">Av <ph name="SEPARATOR" /> Rekommenderas inte</translation>
 <translation id="5752232708629533680">Dela endast GIF</translation>
+<translation id="5753139477036638699">Du kan söka med rösten i Chrome</translation>
 <translation id="5754350196967618083">Det går inte att uppdatera Förslag</translation>
 <translation id="5763382633136178763">Inkognitoflikar</translation>
 <translation id="5763514718066511291">Tryck om du vill kopiera webbadressen till appen</translation>
@@ -1013,6 +1022,7 @@
 <translation id="6813446258015311409">Logga in i Chrome, öppet.</translation>
 <translation id="6814033694018386318">Det här delar du med Google</translation>
 <translation id="6817747507826986771">Dela den här sidan snabbt. Tryck länge om du vill ändra genvägen.</translation>
+<translation id="6819199143469632133">Logga in och ta Google med dig på alla dina enheter</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, flik, vald</translation>
 <translation id="6828070228333235514">Avbryt bevakningen av priset</translation>
@@ -1051,6 +1061,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> återställdes</translation>
 <translation id="7029390216614421513">Passa in QR-koden eller streckkoden i den här rutan</translation>
 <translation id="7029809446516969842">Lösenord</translation>
+<translation id="7037830628447527439">Logga in i Chrome med ditt Google-konto</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Vill du få bildbeskrivningar?</translation>
 <translation id="7055152154916055070">Omdirigeringen blockerades:</translation>
@@ -1405,6 +1416,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – Det gick inte att ladda ned språket. Försök igen senare.</translation>
 <translation id="8951232171465285730">Du har sparat <ph name="MEGABYTES" /> MB med Chrome</translation>
 <translation id="8955719471735800169">Tillbaka till början</translation>
+<translation id="8964479563882643397">Öppna menyn om du vill öppna en ny inkognitoflik</translation>
 <translation id="8965591936373831584">väntar</translation>
 <translation id="8967427617812342790">Lägg till i läslistan</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> inkognitoflik och <ph name="TAB_COUNT_ONE" /> flik till stängs}other{<ph name="INCOGNITO_TAB_COUNT" /> inkognitoflik och <ph name="TAB_COUNT_MANY" /> flikar till stängs}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
index 628b26c..d408620 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Nakili jina la mtumiaji</translation>
 <translation id="1592864538817356322">Ulinzi wa kawaida:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Ondoa kipengee 1 kilichochaguliwa}other{Ondoa vipengee # vilivyochaguliwa}}</translation>
+<translation id="1633659023549081553">Gundua maudhui mapya kwenye ukurasa wa kwanza wa Chrome</translation>
 <translation id="1641113438599504367">Kuvinjari Salama</translation>
 <translation id="164269334534774161">Hii ni nakala ya nje ya mtandao ya ukurasa huu ya terehe <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Historia</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Buruta kitelezi hadi uweze kusoma haya kwa starehe. Maandishi yanapaswa kuonekana angalau kwa ukubwa huu baada ya kugonga mara mbili kwenye aya.</translation>
 <translation id="2323763861024343754">Hifadhi ya tovuti</translation>
 <translation id="2328985652426384049">Imeshindwa kuingia katika akaunti</translation>
+<translation id="2342601525305963189">Vidokezo vya Chrome:</translation>
 <translation id="234265804618409743">Imeshindwa kufungua kamera yako. Hitilafu fulani imetokea.</translation>
 <translation id="2345671828921229300">Ili utafute, gusa na ushikilie neno</translation>
 <translation id="2349710944427398404">Jumla ya data iliyotumiwa na Chrome, ikiwa ni pamoja na akaunti, alamisho na mipangilio iliyohifadhiwa</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">URL unazotembelea hutumwa kwa Google</translation>
 <translation id="2536728043171574184">Unaangalia nakala ya nje ya mtandao ya ukurasa huu</translation>
 <translation id="2546283357679194313">Data ya vidakuzi na tovuti</translation>
+<translation id="2558692642259318568">Ili uvinjari bila shughuli zako kuhifadhiwa kwenye kifaa chako, jaribu hali fiche</translation>
 <translation id="2561519700418191927">Maonyesho ya kukagua video</translation>
 <translation id="2567385386134582609">PICHA</translation>
 <translation id="2567545343356994513">Ulinzi wa haraka na wa mapema dhidi ya tovuti, vipakuliwa na viendelezi hatari</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Nambari ya kadi</translation>
 <translation id="2625189173221582860">Nenosiri limenakiliwa</translation>
 <translation id="2631006050119455616">Iliyookolewa</translation>
+<translation id="2634905176438867146">Pata maelezo kuhusu jinsi ya kuweka Chrome iwe kivinjari chako chaguomsingi</translation>
 <translation id="2645657967708199252">Huenda muunganisho wako wa <ph name="CONNECTION_TYPE" /> ukapunguza kasi ya upakuaji wako</translation>
 <translation id="2647434099613338025">Ongeza lugha</translation>
 <translation id="2649068648233607930">Kivinjari chako kinadhibitiwa na <ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Unafuatilia bei</translation>
 <translation id="3037517125981011456">Huonyesha vidokezo vya kuingia katika akaunti kwenye Chrome</translation>
 <translation id="3046945242843292318">Fikia tovuti hii kwa haraka zaidi wakati mwingine</translation>
+<translation id="3055259925215945098">Alamisho imehamishwa</translation>
 <translation id="305593374596241526">Kipengele cha mahali kimezimwa; kiwashe katika <ph name="BEGIN_LINK" />Mipangilio ya Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{Alamisho <ph name="BOOKMARKS_COUNT_ONE" />}other{Alamisho <ph name="BOOKMARKS_COUNT_MANY" />}}</translation>
 <translation id="3062802207422175757">Makala ya yanayokuvutia kwenye Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Hifadhi kwenye kifaa</translation>
 <translation id="3236059992281584593">Imesalia dakika 1</translation>
 <translation id="3237087289225714896">Upakiaji mapema wa kawaida:</translation>
+<translation id="3237433641417325993">Sogeza chini ili uone makala yanayopendekezwa</translation>
 <translation id="3244271242291266297">MW</translation>
 <translation id="3245429137663807393">Ikiwa pia unashiriki ripoti za matumizi ya Chrome, ripoti hizo zinajumuisha URL unazotembelea</translation>
 <translation id="3250563604907490871">Maelezo ya picha yataendelea kuonyeshwa ukiunganisha kwenye Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome haina idhini ya kufikia rasilimali uliyoomba.</translation>
 <translation id="4837753911714442426">Fungua chaguo za kuchapisha ukurasa</translation>
 <translation id="4842092870884894799">Inaonyesha dirisha ibukizi la uundaji wa nenosiri</translation>
+<translation id="4842515939542199281">Ili utafute kwa kutumia sauti yako, gusa maikrofoni</translation>
 <translation id="4850886885716139402">Mwonekano</translation>
 <translation id="4860895144060829044">Piga simu</translation>
 <translation id="4864369630010738180">Unaingia katika akaunti...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Data ya ziada ya matumizi</translation>
 <translation id="509429900233858213">Hitilafu fulani imetokea.</translation>
 <translation id="510275257476243843">Imesalia saa 1</translation>
+<translation id="5115811374190515607">kwenye <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Mambo yanayokuvutia</translation>
 <translation id="5123685120097942451">Kichupo fiche</translation>
 <translation id="5126510351761255129">Thibitisha kadi yako</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome inahitaji idhini ya kufikia hifadhi ili ipakue faili.</translation>
 <translation id="5749237766298580851">Imezimwa <ph name="SEPARATOR" /> Haipendekezwi</translation>
 <translation id="5752232708629533680">Shiriki GIF pekee</translation>
+<translation id="5753139477036638699">Unaweza kutumia sauti yako kutafuta katika Chrome</translation>
 <translation id="5754350196967618083">Imeshindwa kuonyesha upya kipengele cha Dokezo</translation>
 <translation id="5763382633136178763">Vichupo fiche</translation>
 <translation id="5763514718066511291">Gusa ili unakili URL ya programu hii</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Ingia katika akaunti kwenye Chrome, imefunguliwa.</translation>
 <translation id="6814033694018386318">Data unayoshiriki na Google</translation>
 <translation id="6817747507826986771">Shiriki ukurasa huu kwa haraka. Ili ubadilishe njia hii ya mkato, gusa na ushikilie.</translation>
+<translation id="6819199143469632133">Ili upate vitu vyako vya Google kwenye vifaa mbalimbali, ingia katika akaunti</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">Umechagua kichupo cha <ph name="TAB_TITLE" /></translation>
 <translation id="6828070228333235514">Acha kufuatilia bei</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Umerejesha <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Weka Msimbo wa QR au msimbopau katika fremu hii.</translation>
 <translation id="7029809446516969842">Manenosiri</translation>
+<translation id="7037830628447527439">Ingia kwenye Chrome ukitumia Akaunti yako ya Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Ungependa kupata maelezo ya picha?</translation>
 <translation id="7055152154916055070">Imezuiwa kuelekeza kwingine:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Imeshindwa kupakua lugha hii. Jaribu tena baadaye.</translation>
 <translation id="8951232171465285730">Chrome imekuokolea MB <ph name="MEGABYTES" /></translation>
 <translation id="8955719471735800169">Rudi juu</translation>
+<translation id="8964479563882643397">Ili ufungue kichupo kipya fiche, fungua menyu</translation>
 <translation id="8965591936373831584">inasubiri</translation>
 <translation id="8967427617812342790">Ongeza kwenye orodha ya kusoma</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Kichupo <ph name="INCOGNITO_TAB_COUNT" /> fiche na kichupo kingine <ph name="TAB_COUNT_ONE" /> vitafungwa}other{Kichupo <ph name="INCOGNITO_TAB_COUNT" /> fiche na vichupo vingine <ph name="TAB_COUNT_MANY" /> vitafungwa}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
index 02fc7be..b3024ea8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">பயனர்பெயரை நகலெடுக்கும்</translation>
 <translation id="1592864538817356322">நிலையான பாதுகாப்பு:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{தேர்ந்தெடுத்த 1 உருப்படியை அகற்றும்}other{தேர்ந்தெடுத்த # உருப்படிகளை அகற்றும்}}</translation>
+<translation id="1633659023549081553">Chromeமின் முகப்புப் பக்கத்தில் புதிய உள்ளடக்கத்தைக் கண்டறியலாம்</translation>
 <translation id="1641113438599504367">பாதுகாப்பாக உலாவுதல்</translation>
 <translation id="164269334534774161"><ph name="CREATION_TIME" /> அன்றைக்கான இந்தப் பக்கத்தின் ஆஃப்லைன் நகலைப் பார்க்கிறீர்கள்</translation>
 <translation id="1644574205037202324">வரலாறு</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">இதை வசதியாக படிப்பதற்கு, ஸ்லைடரை இழுக்கவும். பத்தியில் இரு முறை தட்டிய பிறகு, உரையானது குறைந்தது இந்த அளவு பெரியதாக தோன்ற வேண்டும்.</translation>
 <translation id="2323763861024343754">தளச் சேமிப்பகம்</translation>
 <translation id="2328985652426384049">உள்நுழைய முடியவில்லை</translation>
+<translation id="2342601525305963189">Chrome உதவிக்குறிப்புகள்:</translation>
 <translation id="234265804618409743">கேமராவைத் திறக்க முடியவில்லை. ஏதோ தவறாகிவிட்டது.</translation>
 <translation id="2345671828921229300">தேட, சொல்லைத் தொட்டுப் பிடிக்கவும்</translation>
 <translation id="2349710944427398404">கணக்குகள், புக்மார்க்குகள், சேமித்த அமைப்புகள் உள்பட Chrome பயன்படுத்தும் மொத்தத் தரவு</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">நீங்கள் பார்வையிடும் URLகள் Googleளுக்கு அனுப்பப்படும்</translation>
 <translation id="2536728043171574184">இந்தப் பக்கத்தின் ஆஃப்லைன் நகலைப் பார்க்கிறீர்கள்</translation>
 <translation id="2546283357679194313">குக்கீகளும் தள தரவும்</translation>
+<translation id="2558692642259318568">உங்கள் செயல்பாடுகளைச் சாதனத்தில் சேமிக்காமலேயே உலாவ, மறைநிலைப் பயன்முறையைப் பயன்படுத்துங்கள்</translation>
 <translation id="2561519700418191927">வீடியோ மாதிரிகாட்சிகள்</translation>
 <translation id="2567385386134582609">படம்</translation>
 <translation id="2567545343356994513">ஆபத்தான இணையதளங்கள், பதிவிறக்கங்கள், நீட்டிப்புகள் ஆகியவற்றுக்கு எதிராக வேகமான, முன்கூட்டிய பாதுகாப்பை வழங்கும்</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">கார்டு எண்</translation>
 <translation id="2625189173221582860">கடவுச்சொல் நகலெடுக்கப்பட்டது</translation>
 <translation id="2631006050119455616">சேமிக்கப்பட்டது</translation>
+<translation id="2634905176438867146">Chromeமை இயல்பு உலாவியாக அமைப்பது எப்படி என அறிக</translation>
 <translation id="2645657967708199252">உங்கள் <ph name="CONNECTION_TYPE" /> இணைப்பு காரணமாகப் பதிவிறக்கத்தின் வேகம் குறையக்கூடும்</translation>
 <translation id="2647434099613338025">மொழியைச் சேர்</translation>
 <translation id="2649068648233607930">உங்கள் உலாவியை <ph name="DOMAIN" /> நிர்வகிக்கிறது</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">விலையைக் கண்காணிக்கிறது</translation>
 <translation id="3037517125981011456">Chromeமில் உள்நுழைவதற்கான அறிவிப்புகளைக் காட்டும்</translation>
 <translation id="3046945242843292318">அடுத்த முறை இந்தத் தளத்தை விரைவாக அணுகலாம்</translation>
+<translation id="3055259925215945098">புக்மார்க் நகர்த்தப்பட்டது</translation>
 <translation id="305593374596241526">இருப்பிடம் முடக்கப்பட்டுள்ளது; அதை <ph name="BEGIN_LINK" />Android அமைப்புகளில்<ph name="END_LINK" /> இயக்கவும்.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> புக்மார்க்}other{<ph name="BOOKMARKS_COUNT_MANY" /> புக்மார்க்குகள்}}</translation>
 <translation id="3062802207422175757">உங்களுக்குப் பிடித்த கட்டுரைகளை Chromeமில் படிக்கலாம்</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">சாதனத்தில் சேமி</translation>
 <translation id="3236059992281584593">1 நிமிடம் மீதமுள்ளது</translation>
 <translation id="3237087289225714896">இயல்பான முன்கூட்டிய ஏற்றுதல்:</translation>
+<translation id="3237433641417325993">பரிந்துரைக்கப்படும் செய்திக் கட்டுரைகளைப் பார்க்க, கீழே செல்லவும்</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Chrome உபயோக அறிக்கைகளைப் பகிர்ந்தாலும் நீங்கள் பார்வையிட்ட URLகள் அவற்றில் இருக்கும்</translation>
 <translation id="3250563604907490871">வைஃபையுடன் இணைத்ததும் பட விளக்கங்கள் மீண்டும் தொடங்கும்</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chromeமிடம் நீங்கள் கோரியதற்கான அணுகல் இல்லை.</translation>
 <translation id="4837753911714442426">பக்கத்தை அச்சிடுவதற்கான விருப்பங்களைத் திறக்கும்</translation>
 <translation id="4842092870884894799">கடவுச்சொல் உருவாக்க பாப்-அப்பைக் காட்டுகிறது</translation>
+<translation id="4842515939542199281">குரல் மூலம் தேட, மைக்ரோஃபோனைத் தட்டவும்</translation>
 <translation id="4850886885716139402">காட்சி</translation>
 <translation id="4860895144060829044">அழை</translation>
 <translation id="4864369630010738180">உள்நுழைகிறீர்கள்...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">கூடுதல் உபயோகத் தரவு</translation>
 <translation id="509429900233858213">பிழை ஏற்பட்டது.</translation>
 <translation id="510275257476243843">1 மணிநேரம் மீதமுள்ளது</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> இல்</translation>
 <translation id="5118713593561876160">ஆர்வங்கள்</translation>
 <translation id="5123685120097942451">மறைநிலைத் தாவல்</translation>
 <translation id="5126510351761255129">உங்கள் கார்டு விவரங்களைச் சரிபார்த்தல்</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">ஃபைல்களைப் பதிவிறக்க Chromeக்கு சேமிப்பிட அணுகல் தேவை.</translation>
 <translation id="5749237766298580851">முடக்கப்பட்டுள்ளது <ph name="SEPARATOR" /> பரிந்துரைக்கப்படவில்லை</translation>
 <translation id="5752232708629533680">GIF படங்களை மட்டும் பகிரும்</translation>
+<translation id="5753139477036638699">Chromeமில் உங்கள் குரல் மூலம் தேடலாம்</translation>
 <translation id="5754350196967618083">Discoverரைப் புதுப்பிக்க முடியவில்லை</translation>
 <translation id="5763382633136178763">மறைநிலைத் தாவல்கள்</translation>
 <translation id="5763514718066511291">இந்த ஆப்ஸின் URLஐ நகலெடுக்க, தட்டவும்</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chromeமில் உள்நுழைக, திறக்கப்பட்டுள்ளது.</translation>
 <translation id="6814033694018386318">Googleளுடன் பகிரப்படுபவை</translation>
 <translation id="6817747507826986771">இந்தப் பக்கத்தை உடனடியாகப் பகிரலாம். இந்த ஷார்ட்கட்டை மாற்ற தொட்டுப் பிடித்திருக்கவும்.</translation>
+<translation id="6819199143469632133">அனைத்துச் சாதனங்களிலும் உங்கள் Google தயாரிப்புகளையும் சேவைகளையும் பெற உள்நுழையுங்கள்</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" /> தாவல் தேர்ந்தெடுக்கப்பட்டது</translation>
 <translation id="6828070228333235514">விலையைக் கண்காணிப்பதை நிறுத்து</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> மீட்டெடுக்கப்பட்டது</translation>
 <translation id="7029390216614421513">இந்த ஃபிரேமில் QR/பார் குறியீடு தெரியும்படி வைக்கவும்.</translation>
 <translation id="7029809446516969842">கடவுச்சொற்கள்</translation>
+<translation id="7037830628447527439">உங்கள் Google கணக்கைப் பயன்படுத்தி Chromeமில் உள்நுழையவும்</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">பட விளக்கங்களைப் பெற வேண்டுமா?</translation>
 <translation id="7055152154916055070">திசைதிருப்புதல் தடுக்கப்பட்டது:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - இந்த மொழித் தொகுப்பைப் பதிவிறக்க முடியவில்லை. பிறகு முயலவும்.</translation>
 <translation id="8951232171465285730">Chrome உங்கள் <ph name="MEGABYTES" /> மெ.பை. அளவைச் சேமித்தது</translation>
 <translation id="8955719471735800169">மேலே செல்க</translation>
+<translation id="8964479563882643397">புதிய மறைநிலைப் பக்கத்தைத் திறக்க, மெனுவைத் திறக்கவும்</translation>
 <translation id="8965591936373831584">நிலுவையிலுள்ளது</translation>
 <translation id="8967427617812342790">வாசிப்புப் பட்டியலில் சேர்</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> மறைநிலைப் பக்கமும் மேலும் <ph name="TAB_COUNT_ONE" /> பக்கமும் மூடப்படும்}other{<ph name="INCOGNITO_TAB_COUNT" /> மறைநிலைப் பக்கமும் மேலும் <ph name="TAB_COUNT_MANY" /> பக்கங்களும் மூடப்படும்}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
index c9b7096..4d46395 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kullanıcı adını kopyala</translation>
 <translation id="1592864538817356322">Standart koruma:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{1 seçili öğeyi kaldır}other{# seçili öğeyi kaldır}}</translation>
+<translation id="1633659023549081553">Chrome ana sayfasındaki yeni içerikleri keşfedin</translation>
 <translation id="1641113438599504367">Güvenli Tarama</translation>
 <translation id="164269334534774161">Bu sayfanın <ph name="CREATION_TIME" /> tarihinde oluşturulan bir çevrimdışı kopyasını görüntülüyorsunuz</translation>
 <translation id="1644574205037202324">Geçmiş</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Bu yazıyı rahatça okuyana kadar kaydırma çubuğunu sürükleyin. Bir paragrafa iki kez hafifçe dokunduğunuzda metin en az bunun kadar büyük görünmelidir.</translation>
 <translation id="2323763861024343754">Site depolama alanı</translation>
 <translation id="2328985652426384049">Oturum açılamıyor</translation>
+<translation id="2342601525305963189">Chrome ipuçları:</translation>
 <translation id="234265804618409743">Kameranız açılamıyor. Bir sorun oldu.</translation>
 <translation id="2345671828921229300">Arama yapmak için bir kelimeye dokunup basılı tutun</translation>
 <translation id="2349710944427398404">Hesaplar, yer işaretleri ve kayıtlı ayarlar da dahil olmak üzere Chrome tarafından kullanılan tüm veriler</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Ziyaret ettiğiniz URL'ler Google'a gönderilir</translation>
 <translation id="2536728043171574184">Bu sayfanın çevrimdışı bir kopyası görüntüleniyor</translation>
 <translation id="2546283357679194313">Çerezler ve site verileri</translation>
+<translation id="2558692642259318568">Etkinlikleri cihazınıza kaydetmeden göz atmak için Gizli modu deneyin</translation>
 <translation id="2561519700418191927">Video önizlemeleri</translation>
 <translation id="2567385386134582609">IMAGE</translation>
 <translation id="2567545343356994513">Tehlikeli web siteleri, indirmeler ve uzantılara karşı daha hızlı, proaktif koruma</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Kart numarası</translation>
 <translation id="2625189173221582860">Şifre kopyalandı</translation>
 <translation id="2631006050119455616">Tasarruf Edilen</translation>
+<translation id="2634905176438867146">Chrome'u varsayılan tarayıcı olarak nasıl ayarlayacağınızı öğrenin</translation>
 <translation id="2645657967708199252"><ph name="CONNECTION_TYPE" /> bağlantınız, indirme işleminizi yavaşlatabilir</translation>
 <translation id="2647434099613338025">Dil ekle</translation>
 <translation id="2649068648233607930">Tarayıcınız, <ph name="DOMAIN" /> tarafından yönetilmektedir</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Fiyat takip ediliyor</translation>
 <translation id="3037517125981011456">Chrome'da oturum açmak için istekleri gösterir</translation>
 <translation id="3046945242843292318">Gelecek sefer bu siteye daha hızlı ulaşın</translation>
+<translation id="3055259925215945098">Yer işareti taşındı</translation>
 <translation id="305593374596241526">Konum özelliği kapalı. <ph name="BEGIN_LINK" />Android Ayarları<ph name="END_LINK" />'ndan açın.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> yer işareti}other{<ph name="BOOKMARKS_COUNT_MANY" /> yer işareti}}</translation>
 <translation id="3062802207422175757">İlgilendiğiniz makaleler Chrome'da</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Cihaza kaydet</translation>
 <translation id="3236059992281584593">1 dk. kaldı</translation>
 <translation id="3237087289225714896">Standart önceden yükleme:</translation>
+<translation id="3237433641417325993">Önerilen makaleleri görmek için aşağı kaydırın</translation>
 <translation id="3244271242291266297">AA</translation>
 <translation id="3245429137663807393">Chrome kullanım raporlarını da paylaşıyorsanız, ziyaret ettiğiniz URL'ler de bu raporlar kapsamında paylaşılır</translation>
 <translation id="3250563604907490871">Resim açıklamaları özelliği, kablosuz ağa bağlandığınızda devam ettirilecek</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome, istenen kaynağa erişemiyor.</translation>
 <translation id="4837753911714442426">Sayfayı yazdırma seçeneklerini açar</translation>
 <translation id="4842092870884894799">Şifre oluşturma pop-up'ı gösteriliyor</translation>
+<translation id="4842515939542199281">Sesinizle arama yapmak için mikrofona dokunun</translation>
 <translation id="4850886885716139402">Görüntüle</translation>
 <translation id="4860895144060829044">Telefon et</translation>
 <translation id="4864369630010738180">Oturum açılıyor...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Genişletilmiş kullanım verileri</translation>
 <translation id="509429900233858213">Bir hata oluştu.</translation>
 <translation id="510275257476243843">1 saat kaldı</translation>
+<translation id="5115811374190515607">Hedef: <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">İlgi alanları</translation>
 <translation id="5123685120097942451">Gizli sekme</translation>
 <translation id="5126510351761255129">Kartınızı doğrulayın</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Dosya indirmek için Chrome'un depolama alanına erişmesi gerekiyor.</translation>
 <translation id="5749237766298580851">Kapalı <ph name="SEPARATOR" /> Önerilmez</translation>
 <translation id="5752232708629533680">Yalnızca GIF paylaşılıyor</translation>
+<translation id="5753139477036638699">Chrome'da arama yapmak için sesinizi kullanabilirsiniz</translation>
 <translation id="5754350196967618083">Keşfet yenilenemiyor</translation>
 <translation id="5763382633136178763">Gizli mod sekmeleri</translation>
 <translation id="5763514718066511291">Bu uygulamanın URL'sini kopyalamak için dokunun</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Chrome'da oturum açma sayfası açıldı.</translation>
 <translation id="6814033694018386318">Google ile paylaştıklarınız</translation>
 <translation id="6817747507826986771">Bu sayfayı hızlıca paylaşın. Bu kısayolu düzenlemek için dokunup basılı tutun.</translation>
+<translation id="6819199143469632133">Google'daki öğelerinizi cihazlar arasında paylaşmak için oturum açın</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" /> sekmesi seçildi</translation>
 <translation id="6828070228333235514">Fiyat takibini durdur</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> tarihinde geri yüklendi</translation>
 <translation id="7029390216614421513">QR Kodunu veya barkodu bu çerçeveye yerleştirin</translation>
 <translation id="7029809446516969842">Şifreler</translation>
+<translation id="7037830628447527439">Chrome'da Google Hesabınızla oturum açın</translation>
 <translation id="7038956721828960940">chrome_resim_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Resim açıklaması almak istiyor musunuz?</translation>
 <translation id="7055152154916055070">Yönlendirme engellendi:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Bu dil indirilemedi. Daha sonra tekrar deneyin.</translation>
 <translation id="8951232171465285730">Chrome <ph name="MEGABYTES" /> MB tasarruf sağladı</translation>
 <translation id="8955719471735800169">Başa dön</translation>
+<translation id="8964479563882643397">Yeni gizli sekme açmak için menüyü açın</translation>
 <translation id="8965591936373831584">beklemede</translation>
 <translation id="8967427617812342790">Okuma listesine ekle</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> gizli sekme ve <ph name="TAB_COUNT_ONE" /> sekme daha kapatılacak}other{<ph name="INCOGNITO_TAB_COUNT" /> gizli sekme ve <ph name="TAB_COUNT_MANY" /> sekme daha kapatılacak}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
index 0f2dff1..2bd6a93 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">صارف نام کاپی کریں</translation>
 <translation id="1592864538817356322">معیاری تحفظ:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{1 منتخب آئٹم کو ہٹائیں}other{# منتخب آئٹمز کو ہٹائیں}}</translation>
+<translation id="1633659023549081553">‏Chrome کے ہوم پیج پر نیا مواد دریافت کریں</translation>
 <translation id="1641113438599504367">محفوظ براؤزنگ</translation>
 <translation id="164269334534774161">آپ <ph name="CREATION_TIME" /> سے اس صفحہ کی ایک آف لائن کاپی دیکھ رہے ہیں</translation>
 <translation id="1644574205037202324">سرگزشت</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">سلائیڈر کو اس وقت تک گھسیٹیں جب اسے آرام سے پڑھ سکتے ہوں۔ کسی پیراگراف پر دوبار تھپتھپانے کے بعد متن کم از کم اتنا بڑا دکھائی دینا چاہیے۔</translation>
 <translation id="2323763861024343754">سائٹ اسٹوریج</translation>
 <translation id="2328985652426384049">سائن نہیں کیا جا سکتا ہے</translation>
+<translation id="2342601525305963189">‏Chrome کی تجاویز:</translation>
 <translation id="234265804618409743">اپنا کیمرا نہیں کھول سکتے۔ کچھ غلط ہو گیا۔</translation>
 <translation id="2345671828921229300">تلاش کرنے کیلئے کسی لفظ کو ٹچ کریں اور دبائے رکھیں</translation>
 <translation id="2349710944427398404">‏اکاؤنٹس، بُک مارکس اور محفوظ کردہ ترتیبات سمیت، Chrome کے ذریعے استعمال کردہ کُل ڈیٹا</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">‏آپ کے ملاحظہ کردہ URLs ‏Google کو بھیجے جاتے ہیں</translation>
 <translation id="2536728043171574184">اس صفحہ کی ایک آف لائن کاپی دیکھی جا رہی ہے</translation>
 <translation id="2546283357679194313">کوکیز اور سائٹ ڈیٹا</translation>
+<translation id="2558692642259318568">اپنے آلے پر سرگرمی کو محفوظ کیے بغیر براؤز کرنے کے لیے پوشیدگی کو آزمائیں</translation>
 <translation id="2561519700418191927">ویڈیو کے پیش مناظر</translation>
 <translation id="2567385386134582609">تصویر</translation>
 <translation id="2567545343356994513">ویب سائٹس، ڈاؤن لوڈز اور ایکسٹینشنز سے تیز، فعال حفاظت</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">کارڈ نمبر</translation>
 <translation id="2625189173221582860">پاس ورڈ کاپی ہو گیا</translation>
 <translation id="2631006050119455616">بچت ہوئی</translation>
+<translation id="2634905176438867146">‏Chrome کو اپنے ڈیفالٹ کے طور پر سیٹ کرنے کا طریقہ جانیں</translation>
 <translation id="2645657967708199252">آپ کے <ph name="CONNECTION_TYPE" /> کنکشن سے آپ کا ڈاؤن لوڈ سست ہو سکتا ہے</translation>
 <translation id="2647434099613338025">زبان شامل کریں</translation>
 <translation id="2649068648233607930">آپ کا براؤزر <ph name="DOMAIN" /> کے زیر انتظام ہے</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">قیمت ٹریک کی جا رہی ہے</translation>
 <translation id="3037517125981011456">‏Chrome میں سائن ان کرنے کے لیے پرامپٹس دکھاتا ہے</translation>
 <translation id="3046945242843292318">اگلی بار اس سائٹ تک زیادہ تیزی سے رسائی حاصل کریں</translation>
+<translation id="3055259925215945098">بُک مارک منتقل کیا گیا</translation>
 <translation id="305593374596241526">‏مقام آف ہے، <ph name="BEGIN_LINK" />Android کی ترتیبات<ph name="END_LINK" /> میں اسے آن کریں۔</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> بُک مارک}other{<ph name="BOOKMARKS_COUNT_MANY" /> بُک مارکس}}</translation>
 <translation id="3062802207422175757">‏Chrome پر آپ کی دلچسپیوں سے متعلق مضامین</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">آلہ پر محفوظ کریں</translation>
 <translation id="3236059992281584593">1 منٹ باقی</translation>
 <translation id="3237087289225714896">معیاری پیشگی لوڈنگ:</translation>
+<translation id="3237433641417325993">تجویز کردہ مضامین دیکھنے کے لیے نیچے اسکرول کریں</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">‏اگر آپ Chrome کے استعمال کی رپورٹس کا بھی اشتراک کرتے ہیں تو ان رپورٹس میں آپ کے ملاحظہ کردہ URLs شامل ہوں گے</translation>
 <translation id="3250563604907490871">‏آپ کے Wi-Fi سے منسلک ہونے پر تصویر کی تفصیلات دوبارہ شروع ہو جائیں گی</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">‏Chrome کو درخواست کردہ وسیلہ تک رسائی حاصل نہیں ہے۔</translation>
 <translation id="4837753911714442426">صفحہ پرنٹ کرنے کیلئے اختیارات کھولیں</translation>
 <translation id="4842092870884894799">پاس ورڈ بنانے کے پاپ اپ کو دکھا رہا ہے</translation>
+<translation id="4842515939542199281">اپنی آواز سے تلاش کرنے کے لیے مائیکروفون پر تھپتھپائیں</translation>
 <translation id="4850886885716139402">دیکھیں</translation>
 <translation id="4860895144060829044">کال کریں</translation>
 <translation id="4864369630010738180">سائن ان کر رہا ہے…</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">توسیع کردہ استعمال کا ڈیٹا</translation>
 <translation id="509429900233858213">ایک خرابی پیش آگئی۔</translation>
 <translation id="510275257476243843">1 گھنٹہ باقی</translation>
+<translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> تک</translation>
 <translation id="5118713593561876160">دلچسپیاں</translation>
 <translation id="5123685120097942451">پوشیدگی ٹیب</translation>
 <translation id="5126510351761255129">اپنے کارڈ کی توثیق کریں</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">‏Chrome کو فائلیں ڈاؤن لوڈ کرنے کیلئے اسٹوریج تک رسائی درکار ہے۔</translation>
 <translation id="5749237766298580851">آف <ph name="SEPARATOR" /> تجاویز کردہ نہیں ہے</translation>
 <translation id="5752232708629533680">‏صرف GIF کا اشتراک کریں</translation>
+<translation id="5753139477036638699">‏آپ Chrome میں تلاش کرنے کے لیے اپنی آواز کا استعمال کر سکتے ہیں</translation>
 <translation id="5754350196967618083">‏Discover کو ریفریش نہیں کر سکتے</translation>
 <translation id="5763382633136178763">پوشیدگی ٹیبز</translation>
 <translation id="5763514718066511291">‏اس ایپ کے لیے URL کاپی کرنے کی خاطر تھپتھپائیں</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">‏کھولے گئے Chrome میں سائن ان کریں۔</translation>
 <translation id="6814033694018386318">‏آپ Google کے ساتھ کیا اشتراک کرتے ہیں</translation>
 <translation id="6817747507826986771">فوری طور پر اس صفحے کا اشتراک کریں۔ اس شارٹ کٹ میں ترمیم کرنے کے لیے، ٹچ کریں اور دبائے رکھیں۔</translation>
+<translation id="6819199143469632133">‏تمام آلات پر اپنی Google کی چیزیں حاصل کرنے کے لیے سائن ان کریں</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />، ٹیب منتخب ہو گیا</translation>
 <translation id="6828070228333235514">قیمت کو ٹریک کرنا بند کریں</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705"><ph name="ITEM_TITLE" /> کو بحال کیا گیا</translation>
 <translation id="7029390216614421513">‏QR کوڈ/بار کوڈ کو اس فریم میں رکھیں۔</translation>
 <translation id="7029809446516969842">پاس ورڈز</translation>
+<translation id="7037830628447527439">‏اپنے Google اکاؤنٹ سے Chrome میں سائن ان کریں</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">تصویری تفصیلات حاصل کریں؟</translation>
 <translation id="7055152154916055070">ری ڈائریکٹ مسدود کیا گیا:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - اس زبان کو ڈاؤن لوڈ نہیں کیا جا سکا۔ بعد میں دوبارہ کوشش کریں۔</translation>
 <translation id="8951232171465285730">‏Chrome نے آپ کا <ph name="MEGABYTES" /> MB بچایا ہے</translation>
 <translation id="8955719471735800169">واپس اوپر جائیں</translation>
+<translation id="8964479563882643397">ایک نیا پوشیدگی ٹیب کھولنے کے لیے مینو کھولیں</translation>
 <translation id="8965591936373831584">زیر التوا</translation>
 <translation id="8967427617812342790">پڑھنے کی فہرست میں شامل کریں</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> پوشیدگی اور <ph name="TAB_COUNT_ONE" /> مزید ٹیب کو بند کر دیا جائے گا}other{<ph name="INCOGNITO_TAB_COUNT" /> پوشیدگی اور <ph name="TAB_COUNT_MANY" /> مزید ٹیبز کو بند کر دیا جائے گا}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
index ce8cc05..2156506 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Sao chép tên người dùng</translation>
 <translation id="1592864538817356322">Chế độ bảo vệ thông thường:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Xóa 1 mục đã chọn}other{Xóa # mục đã chọn}}</translation>
+<translation id="1633659023549081553">Khám phá nội dung mới trên trang chủ của Chrome</translation>
 <translation id="1641113438599504367">Duyệt web an toàn</translation>
 <translation id="164269334534774161">Bạn đang xem bản sao ngoại tuyến của trang này từ <ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Nhật ký</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Kéo thanh trượt cho đến khi bạn có thể đọc nội dung này thoải mái. Chữ tối thiểu phải to như này sau khi bấm đúp vào một đoạn.</translation>
 <translation id="2323763861024343754">Bộ nhớ trang web</translation>
 <translation id="2328985652426384049">Không thể đăng nhập</translation>
+<translation id="2342601525305963189">Mẹo khi dùng Chrome:</translation>
 <translation id="234265804618409743">Không thể mở máy ảnh. Đã xảy ra lỗi.</translation>
 <translation id="2345671828921229300">Để tìm kiếm, hãy chạm và giữ một từ</translation>
 <translation id="2349710944427398404">Tổng số dữ liệu mà Chrome sử dụng, bao gồm tài khoản, dấu trang và cài đặt đã lưu</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Những URL bạn truy cập được gửi cho Google</translation>
 <translation id="2536728043171574184">Xem bản sao ngoại tuyến của trang này</translation>
 <translation id="2546283357679194313">Cookie và dữ liệu trang web</translation>
+<translation id="2558692642259318568">Để duyệt web mà không lưu hoạt động vào thiết bị, hãy thử chế độ Ẩn danh</translation>
 <translation id="2561519700418191927">Bản xem trước video</translation>
 <translation id="2567385386134582609">HÌNH ẢNH</translation>
 <translation id="2567545343356994513">Chủ động và nhanh chóng bảo vệ bạn khỏi các trang web, tệp đã tải xuống và tiện ích nguy hiểm</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Số thẻ</translation>
 <translation id="2625189173221582860">Đã sao chép mật khẩu</translation>
 <translation id="2631006050119455616">Đã tiết kiệm</translation>
+<translation id="2634905176438867146">Tìm hiểu cách đặt Chrome làm trình duyệt mặc định</translation>
 <translation id="2645657967708199252">Kết nối <ph name="CONNECTION_TYPE" /> của bạn có thể làm chậm quá trình tải xuống</translation>
 <translation id="2647434099613338025">Thêm ngôn ngữ</translation>
 <translation id="2649068648233607930"><ph name="DOMAIN" /> quản lý trình duyệt của bạn</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Đang theo dõi giá</translation>
 <translation id="3037517125981011456">Hiển thị lời nhắc đăng nhập vào Chrome</translation>
 <translation id="3046945242843292318">Truy cập trang web này nhanh hơn vào lần tới</translation>
+<translation id="3055259925215945098">Đã di chuyển dấu trang</translation>
 <translation id="305593374596241526">Đã tắt vị trí; hãy bật vị trí trong mục <ph name="BEGIN_LINK" />Cài đặt Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> dấu trang}other{<ph name="BOOKMARKS_COUNT_MANY" /> dấu trang}}</translation>
 <translation id="3062802207422175757">Các bài viết về chủ đề mà bạn quan tâm trên Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Lưu vào thiết bị</translation>
 <translation id="3236059992281584593">Còn 1 phút</translation>
 <translation id="3237087289225714896">Chế độ tải trước tiêu chuẩn:</translation>
+<translation id="3237433641417325993">Di chuyển xuống để xem các bài viết được đề xuất</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Nếu bạn cũng chia sẻ báo cáo sử dụng của Chrome, các báo cáo đó sẽ bao gồm cả những URL bạn truy cập</translation>
 <translation id="3250563604907490871">Nội dung mô tả hình ảnh sẽ tiếp tục hiển thị khi bạn kết nối Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome không có quyền truy cập vào tài nguyên đã yêu cầu.</translation>
 <translation id="4837753911714442426">Mở tùy chọn để in trang</translation>
 <translation id="4842092870884894799">Hiển thị cửa sổ bật lên tạo mật khẩu</translation>
+<translation id="4842515939542199281">Để tìm kiếm bằng giọng nói, hãy nhấn vào micrô</translation>
 <translation id="4850886885716139402">Xem</translation>
 <translation id="4860895144060829044">Gọi</translation>
 <translation id="4864369630010738180">Đang đăng nhập...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Dữ liệu sử dụng mở rộng</translation>
 <translation id="509429900233858213">Đã xảy ra lỗi.</translation>
 <translation id="510275257476243843">Còn 1 giờ</translation>
+<translation id="5115811374190515607">đến <ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Sở thích</translation>
 <translation id="5123685120097942451">Thẻ ẩn danh</translation>
 <translation id="5126510351761255129">Xác minh thẻ của bạn</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome cần quyền truy cập vào bộ nhớ để tải tệp xuống.</translation>
 <translation id="5749237766298580851">Tắt <ph name="SEPARATOR" /> Không khuyến nghị</translation>
 <translation id="5752232708629533680">Chỉ chia sẻ ảnh GIF</translation>
+<translation id="5753139477036638699">Bạn có thể dùng giọng nói để tìm kiếm trên Chrome</translation>
 <translation id="5754350196967618083">Không thể làm mới tính năng Khám phá</translation>
 <translation id="5763382633136178763">Thẻ ẩn danh</translation>
 <translation id="5763514718066511291">Nhấn để sao chép URL cho ứng dụng này</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Đã mở trang Đăng nhập vào Chrome.</translation>
 <translation id="6814033694018386318">Những gì bạn chia sẻ với Google</translation>
 <translation id="6817747507826986771">Chia sẻ nhanh trang này. Để chỉnh sửa lối tắt này, hãy chạm và giữ.</translation>
+<translation id="6819199143469632133">Để nhận dữ liệu của bạn trên Google trên nhiều thiết bị, hãy đăng nhập</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, thẻ, đã chọn</translation>
 <translation id="6828070228333235514">Dừng theo dõi giá</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Đã khôi phục <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Đặt mã QR hoặc mã vạch vào khung này.</translation>
 <translation id="7029809446516969842">Mật khẩu</translation>
+<translation id="7037830628447527439">Đăng nhập vào Chrome bằng Tài khoản Google</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Tải nội dung mô tả hình ảnh?</translation>
 <translation id="7055152154916055070">Liên kết chuyển hướng đã chặn:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> – Không thể tải ngôn ngữ này xuống. Hãy thử lại sau.</translation>
 <translation id="8951232171465285730">Chrome đã tiết kiệm <ph name="MEGABYTES" /> MB cho bạn</translation>
 <translation id="8955719471735800169">Quay lại đầu trang</translation>
+<translation id="8964479563882643397">Để mở một thẻ Ẩn danh mới, hãy mở trình đơn</translation>
 <translation id="8965591936373831584">đang chờ xử lý</translation>
 <translation id="8967427617812342790">Thêm vào danh sách đọc</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> thẻ ẩn danh và <ph name="TAB_COUNT_ONE" /> thẻ nữa sẽ đóng}other{<ph name="INCOGNITO_TAB_COUNT" /> thẻ ẩn danh và <ph name="TAB_COUNT_MANY" /> thẻ nữa sẽ đóng}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
index f6461eb..3de2029 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">复制用户名</translation>
 <translation id="1592864538817356322">标准保护:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{移除 1 个所选项}other{移除 # 个所选项}}</translation>
+<translation id="1633659023549081553">在 Chrome 主页上发现新内容</translation>
 <translation id="1641113438599504367">安全浏览</translation>
 <translation id="164269334534774161">您目前浏览的是此网页的离线副本(创建时间:<ph name="CREATION_TIME" />)</translation>
 <translation id="1644574205037202324">历史记录</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">拖动该滑块,将文字调整到适合您阅读的大小。点按两次某段落后,显示的文字至少应是这么大。</translation>
 <translation id="2323763861024343754">网站存储数据</translation>
 <translation id="2328985652426384049">无法登录</translation>
+<translation id="2342601525305963189">Chrome 提示:</translation>
 <translation id="234265804618409743">无法打开您的摄像头。出了点问题。</translation>
 <translation id="2345671828921229300">若要执行搜索,请轻触并按住某个字词</translation>
 <translation id="2349710944427398404">Chrome 所使用的数据总量,包括帐号、书签和已保存的设置</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">您访问过的网址会被发送给 Google</translation>
 <translation id="2536728043171574184">正在查看此网页的离线副本</translation>
 <translation id="2546283357679194313">Cookie 和网站数据</translation>
+<translation id="2558692642259318568">若要浏览网页但不将活动记录保存到您的设备,请试试无痕模式</translation>
 <translation id="2561519700418191927">视频预览</translation>
 <translation id="2567385386134582609">图片</translation>
 <translation id="2567545343356994513">针对危险网站、下载内容和扩展程序提供更快速的主动保护</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">卡号</translation>
 <translation id="2625189173221582860">已复制密码</translation>
 <translation id="2631006050119455616">已节省</translation>
+<translation id="2634905176438867146">了解如何将 Chrome 设为默认浏览器</translation>
 <translation id="2645657967708199252">您的 <ph name="CONNECTION_TYPE" /> 连接可能会拖慢您的下载速度</translation>
 <translation id="2647434099613338025">添加语言</translation>
 <translation id="2649068648233607930">您的浏览器由 <ph name="DOMAIN" /> 管理</translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">正在跟踪价格</translation>
 <translation id="3037517125981011456">显示意在引导用户登录 Chrome 的提示</translation>
 <translation id="3046945242843292318">下次可更快速地转到此网站</translation>
+<translation id="3055259925215945098">已移动书签</translation>
 <translation id="305593374596241526">位置信息功能现处于关闭状态;请在 <ph name="BEGIN_LINK" />Android 设置<ph name="END_LINK" />中开启此项功能。</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> 个书签}other{<ph name="BOOKMARKS_COUNT_MANY" /> 个书签}}</translation>
 <translation id="3062802207422175757">Chrome 可提供您感兴趣的报道</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">保存到设备</translation>
 <translation id="3236059992281584593">还剩 1 分钟</translation>
 <translation id="3237087289225714896">标准预加载:</translation>
+<translation id="3237433641417325993">向下滚动即可查看推荐的文章</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">如果您还共享了 Chrome 使用情况报告,这些报告会包含您访问过的网址</translation>
 <translation id="3250563604907490871">当您连接到 Wi-Fi 后,“图片说明”功能将会恢复运作</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">Chrome 无权访问请求的资源。</translation>
 <translation id="4837753911714442426">打开选项以打印网页</translation>
 <translation id="4842092870884894799">目前显示的是密码生成弹出式窗口</translation>
+<translation id="4842515939542199281">若要使用语音进行搜索,请点按麦克风图标</translation>
 <translation id="4850886885716139402">视图</translation>
 <translation id="4860895144060829044">拨打</translation>
 <translation id="4864369630010738180">正在登录…</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">扩展的使用情况数据</translation>
 <translation id="509429900233858213">出现错误。</translation>
 <translation id="510275257476243843">还剩 1 小时</translation>
+<translation id="5115811374190515607">已移至<ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">兴趣</translation>
 <translation id="5123685120097942451">无痕式标签页</translation>
 <translation id="5126510351761255129">验证您的银行卡</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">Chrome 需要具备存储空间使用权限,才能下载文件。</translation>
 <translation id="5749237766298580851">已关闭 <ph name="SEPARATOR" /> 不推荐</translation>
 <translation id="5752232708629533680">仅分享 GIF 图片</translation>
+<translation id="5753139477036638699">您可在 Chrome 中使用语音进行搜索</translation>
 <translation id="5754350196967618083">无法刷新“探索”</translation>
 <translation id="5763382633136178763">无痕模式标签页</translation>
 <translation id="5763514718066511291">点按即可复制该应用的网址</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">登录 Chrome,已打开。</translation>
 <translation id="6814033694018386318">您要与 Google 分享哪些信息</translation>
 <translation id="6817747507826986771">快速分享此页面。若要修改此快捷方式,请轻触并按住这里。</translation>
+<translation id="6819199143469632133">如需跨设备获取您的 Google 信息,请登录</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612">已选择标签页“<ph name="TAB_TITLE" />”</translation>
 <translation id="6828070228333235514">停止跟踪价格</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">“<ph name="ITEM_TITLE" />”已恢复</translation>
 <translation id="7029390216614421513">请将此框对准二维码/条形码。</translation>
 <translation id="7029809446516969842">密码</translation>
+<translation id="7037830628447527439">使用您的 Google 帐号登录 Chrome</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">获取图片说明?</translation>
 <translation id="7055152154916055070">已禁止重定向:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - 无法下载此语言。请稍后再试。</translation>
 <translation id="8951232171465285730">Chrome 已为您保存的数据量:<ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">返回页首</translation>
+<translation id="8964479563882643397">若要打开一个新的无痕式标签页,请先打开菜单</translation>
 <translation id="8965591936373831584">待下载</translation>
 <translation id="8967427617812342790">添加到阅读清单</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{系统将会关闭 <ph name="INCOGNITO_TAB_COUNT" /> 个无痕式标签页以及另外 <ph name="TAB_COUNT_ONE" /> 个标签页}other{系统将会关闭 <ph name="INCOGNITO_TAB_COUNT" /> 个无痕式标签页以及另外 <ph name="TAB_COUNT_MANY" /> 个标签页}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
index 34676d1de..3928a0da 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -265,7 +265,7 @@
 <translation id="2534582914273493287">系統會將您瀏覽的網址傳送至 Google</translation>
 <translation id="2536728043171574184">正在瀏覽此網頁的離線版本</translation>
 <translation id="2546283357679194313">Cookie 和網站數據</translation>
-<translation id="2558692642259318568">如果不要將瀏覽活動儲存到裝置上,請使用無痕模式</translation>
+<translation id="2558692642259318568">如果不要將瀏覽活動儲存至裝置上,請使用無痕模式</translation>
 <translation id="2561519700418191927">影片預覽</translation>
 <translation id="2567385386134582609">圖片</translation>
 <translation id="2567545343356994513">對危險網站、下載檔案及擴充程式提供更快速的主動式保護功能</translation>
@@ -391,7 +391,7 @@
 <translation id="3234978181857588512">儲存至裝置</translation>
 <translation id="3236059992281584593">尚餘 1 分鐘</translation>
 <translation id="3237087289225714896">標準預先載入模式:</translation>
-<translation id="3237433641417325993">向下捲動以查看推薦文章</translation>
+<translation id="3237433641417325993">向下捲動以查看建議的文章</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">如果您同時分享 Chrome 使用情況報告,這些報告將會包含您瀏覽的網址</translation>
 <translation id="3250563604907490871">圖片描述功能將會在連線至 Wi-Fi 時恢復運作</translation>
@@ -657,7 +657,7 @@
 <translation id="4835385943915508971">Chrome 沒有要求資源的存取權。</translation>
 <translation id="4837753911714442426">開啟列印網頁選項</translation>
 <translation id="4842092870884894799">正在顯示密碼產生彈出式視窗</translation>
-<translation id="4842515939542199281">如要透過語音進行搜尋,請輕觸「麥克風」圖示</translation>
+<translation id="4842515939542199281">如要透過語音進行搜尋,請輕按「麥克風」圖示</translation>
 <translation id="4850886885716139402">檢視</translation>
 <translation id="4860895144060829044">撥號</translation>
 <translation id="4864369630010738180">正在登入…</translation>
@@ -809,7 +809,7 @@
 <translation id="5749068826913805084">Chrome 需要儲存空間的存取權才能下載檔案。</translation>
 <translation id="5749237766298580851">關閉 <ph name="SEPARATOR" /> 不建議</translation>
 <translation id="5752232708629533680">只分享 GIF</translation>
-<translation id="5753139477036638699">你可以使用語音在 Chrome 中搜尋</translation>
+<translation id="5753139477036638699">您可使用語音在 Chrome 中搜尋</translation>
 <translation id="5754350196967618083">無法重新整理「探索」</translation>
 <translation id="5763382633136178763">無痕式分頁</translation>
 <translation id="5763514718066511291">輕按即可複製此應用程式的網址</translation>
@@ -1021,7 +1021,7 @@
 <translation id="6813446258015311409">登入 Chrome,開咗。</translation>
 <translation id="6814033694018386318">您與 Google 分享的資料</translation>
 <translation id="6817747507826986771">快速分享此頁面。如要編輯此捷徑,請按住捷徑按鈕。</translation>
-<translation id="6819199143469632133">如要在所有裝置上取得你的 Google 設定,請登入帳戶</translation>
+<translation id="6819199143469632133">如要在所有裝置上取得您的 Google 設定,請登入帳戶</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />,分頁,已選取</translation>
 <translation id="6828070228333235514">停止追蹤價格</translation>
@@ -1415,7 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - 無法下載此語言套件,請稍後再試。</translation>
 <translation id="8951232171465285730">Chrome 已為您節省 <ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">返回頁首</translation>
-<translation id="8964479563882643397">如要開啟新的無痕分頁,請按一下「選單」圖示</translation>
+<translation id="8964479563882643397">如要開啟新的無痕式分頁,請按一下「選單」圖示</translation>
 <translation id="8965591936373831584">正在等待下載</translation>
 <translation id="8967427617812342790">加入閱讀清單</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{即將關閉 <ph name="INCOGNITO_TAB_COUNT" /> 個無痕式分頁和另外 <ph name="TAB_COUNT_ONE" /> 個分頁}other{即將關閉 <ph name="INCOGNITO_TAB_COUNT" /> 個無痕式分頁和另外 <ph name="TAB_COUNT_MANY" /> 個分頁}}</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
index 449e01a..bc088a5 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -104,6 +104,7 @@
 <translation id="1571304935088121812">Kopisha igama lomsebenzisi</translation>
 <translation id="1592864538817356322">Ukuvikelwa okuvamile:</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Susa into engu-1 ekhethiwe}one{Susa izinto ezingu-# ezikhethiwe}other{Susa izinto ezingu-# ezikhethiwe}}</translation>
+<translation id="1633659023549081553">Zitholele okuqukethwe okusha ekhasini eliyisiqalo le-Chrome</translation>
 <translation id="1641113438599504367">Ukuphequlula okuphephile</translation>
 <translation id="164269334534774161">Ubuka ikhophi engaxhunyiwe ku-inthanethi yaleli khasi kusuka ku-<ph name="CREATION_TIME" /></translation>
 <translation id="1644574205037202324">Umlando</translation>
@@ -220,6 +221,7 @@
 <translation id="2321958826496381788">Hudula isilayida uze ufunde lokhu unelisekile. Umbhalo kumele ubukeke okungenani umkhulu ngale ndlela ngemuva kokuthepha kabili kupharagrafu.</translation>
 <translation id="2323763861024343754">Isitoreji sesayithi</translation>
 <translation id="2328985652426384049">Ayikwazi ukungena ngemvume</translation>
+<translation id="2342601525305963189">Amathiphu e-Chrome:</translation>
 <translation id="234265804618409743">Ayikwazi ukuvula ikhamera yakho. Okuthile akuhambanga kahle.</translation>
 <translation id="2345671828921229300">Ukuze useshe, thinta uphinde ubambe igama</translation>
 <translation id="2349710944427398404">Idatha ephelele esetshenziswe i-Chrome, kufaka phakathi ama-akhawunti, amabhukhimakhi, nezilungiselelo ezilondoloziwe</translation>
@@ -263,6 +265,7 @@
 <translation id="2534582914273493287">Ama-URL owavakashelayo athunyelwa ku-Google</translation>
 <translation id="2536728043171574184">Kubukwa ikhophi engaxhunyiwe kwi-inthanethi yaleli khasi</translation>
 <translation id="2546283357679194313">Amakhukhi nedatha yesayithi</translation>
+<translation id="2558692642259318568">Ukuze uphequlule ngaphandle kokulondoloza umsebenzi kudivayisi yakho, zama i-Incognito</translation>
 <translation id="2561519700418191927">Ukubuka kuqala kwevidiyo</translation>
 <translation id="2567385386134582609">ISITHOMBE</translation>
 <translation id="2567545343356994513">Isivikelo esisheshayo, nesisebenzayo ngokumelene namawebhusayithi ayingozi, okudawunilodwayo, kanye nezandiso</translation>
@@ -274,6 +277,7 @@
 <translation id="2612676031748830579">Inombolo yekhadi</translation>
 <translation id="2625189173221582860">Iphasiwedi ikopishiwe</translation>
 <translation id="2631006050119455616">Kulondoloziwe</translation>
+<translation id="2634905176438867146">Funda ukuthi ungayisetha kanjani i-chrome njengokuzenzakalelayo kwakho</translation>
 <translation id="2645657967708199252">Uxhumo lwakho lwe-<ph name="CONNECTION_TYPE" /> lungahle lubambezele ukudawuniloda kwakho</translation>
 <translation id="2647434099613338025">Engeza ulimi</translation>
 <translation id="2649068648233607930">I-browser yakho iphethwe i-<ph name="DOMAIN" /></translation>
@@ -358,6 +362,7 @@
 <translation id="3037177537145227281">Ukulandelela intengo</translation>
 <translation id="3037517125981011456">Ibonisa izexwayiso zokungena ngemvume ku-Chrome</translation>
 <translation id="3046945242843292318">Fika kule sayithi ngokushesha esikhathini esizayo</translation>
+<translation id="3055259925215945098">Ibhukhimakhi ihanjisiwe</translation>
 <translation id="305593374596241526">Indawo ivaliwe; ivule <ph name="BEGIN_LINK" />kuzilungiselelo ze-Android<ph name="END_LINK" />.</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> ibhukhimakhi}one{<ph name="BOOKMARKS_COUNT_MANY" /> amabhukhimakhi}other{<ph name="BOOKMARKS_COUNT_MANY" /> amabhukhimakhi}}</translation>
 <translation id="3062802207422175757">Ama-athikili akho wongaba nentshisekelo kukho ku-Chrome</translation>
@@ -386,6 +391,7 @@
 <translation id="3234978181857588512">Londoloza kudivayisi</translation>
 <translation id="3236059992281584593">1 iminithi elisele</translation>
 <translation id="3237087289225714896">Ukulayisha kusengaphambili okujwayelekile:</translation>
+<translation id="3237433641417325993">Skrolela phansi ukuze ubone izindaba eziphakanyisiwe</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Uma futhi wabelana ngemibiko yokusetshenziswa kwe-Chrome, leyo mibiko ihlanganisa nama-URL owavakashelayo</translation>
 <translation id="3250563604907490871">Izincazelo zesithombe zizoqhubeka lapho uxhuma ku-Wi-Fi</translation>
@@ -651,6 +657,7 @@
 <translation id="4835385943915508971">I-Chrome ayinakho ukufinyelela kusisetshenziswa esiceliwe.</translation>
 <translation id="4837753911714442426">Vula izinketho ukuze uphrinte ikhasi</translation>
 <translation id="4842092870884894799">Kuboniswa okuzivelelayo okukhiqiza iphasiwedi</translation>
+<translation id="4842515939542199281">Ukuze useshe ngezwi lakho, thepha imakrofoni</translation>
 <translation id="4850886885716139402">Buka</translation>
 <translation id="4860895144060829044">Shaya</translation>
 <translation id="4864369630010738180">Iyangena ngemvume...</translation>
@@ -697,6 +704,7 @@
 <translation id="5091249083535528968">Idatha yokusetshenziswa enwetshiwe</translation>
 <translation id="509429900233858213">Kuvele iphutha.</translation>
 <translation id="510275257476243843">1 ihora elisele</translation>
+<translation id="5115811374190515607">ku-<ph name="PRODUCT_NAME" /></translation>
 <translation id="5118713593561876160">Ongaba nentshisekelo kukho</translation>
 <translation id="5123685120097942451">Ithebhu ye-Incognito</translation>
 <translation id="5126510351761255129">Qinisekisa ikhadi lakho</translation>
@@ -801,6 +809,7 @@
 <translation id="5749068826913805084">I-Chrome idinga ukufinyelela kwesitoreji ukuze ilande amafayela.</translation>
 <translation id="5749237766298580851">Valiwe <ph name="SEPARATOR" /> Akunconywa</translation>
 <translation id="5752232708629533680">Yabelana i-GIF kuphela</translation>
+<translation id="5753139477036638699">Ungasebenzisa izwi lakho ukusesha ku-Chrome</translation>
 <translation id="5754350196967618083">Ayikwazi ukuvuselela i-Discover</translation>
 <translation id="5763382633136178763">Amathebhu we-Incognito</translation>
 <translation id="5763514718066511291">Thepha ukuze ukopishe i-URL yalolu hlelo lokusebenza</translation>
@@ -1012,6 +1021,7 @@
 <translation id="6813446258015311409">Ukungena ngemvume ku-Chrome, kuvuliwe.</translation>
 <translation id="6814033694018386318">Okwabelana ne-Google</translation>
 <translation id="6817747507826986771">Yaba leli khasi ngokushesha. Ukuze uhlele lesi sinqamuleli, thinta uphinde ubambe.</translation>
+<translation id="6819199143469632133">Ukuze uthole izinto zakho ze-Google kuwo wonke amadivayisi, ngena ngemvume</translation>
 <translation id="6820686453637990663">I-CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, ithebhu, okukhethiwe</translation>
 <translation id="6828070228333235514">Misa ukulandelela intengo</translation>
@@ -1050,6 +1060,7 @@
 <translation id="7027549951530753705">Kubuyisiwe <ph name="ITEM_TITLE" /></translation>
 <translation id="7029390216614421513">Misa ikhodi ye-QR/ibhakhodi kulolu hlaka.</translation>
 <translation id="7029809446516969842">Amaphasiwedi</translation>
+<translation id="7037830628447527439">Ngena ngemvume ku-Chrome nge-Google Account yakho.</translation>
 <translation id="7038956721828960940">chrome_image_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="7054588988317389591">Thola incazelo yesithombe?</translation>
 <translation id="7055152154916055070">Ukuqondiswa kabusha kuvinjiwe:</translation>
@@ -1404,6 +1415,7 @@
 <translation id="8945143127965743188"><ph name="LANG" /> - Lolu limi alukwazanga ukudawunilodiwa. Zama futhi emuva kwesikhathi.</translation>
 <translation id="8951232171465285730">I-Chrome ikulondolozele okungu-<ph name="MEGABYTES" /> MB</translation>
 <translation id="8955719471735800169">Buyela phezulu</translation>
+<translation id="8964479563882643397">Ukuze uvule ithebhu entsha ye-Incognito, vula imenyu</translation>
 <translation id="8965591936373831584">kulindile</translation>
 <translation id="8967427617812342790">Engeza kuhlu lokufunda</translation>
 <translation id="8968085728801125376">{TAB_COUNT,plural, =1{I-incognito engu-<ph name="INCOGNITO_TAB_COUNT" /> kanye nethebhu engu-<ph name="TAB_COUNT_ONE" /> ngaphezulu izovalwa}one{I-incognito engu-<ph name="INCOGNITO_TAB_COUNT" /> kanye namathebhu angu-<ph name="TAB_COUNT_MANY" /> ngaphezulu azovalwa}other{I-incognito engu-<ph name="INCOGNITO_TAB_COUNT" /> kanye namathebhu angu-<ph name="TAB_COUNT_MANY" /> ngaphezulu azovalwa}}</translation>
diff --git a/chrome/browser/ui/android/theme/BUILD.gn b/chrome/browser/ui/android/theme/BUILD.gn
index 36e61e78..226babee 100644
--- a/chrome/browser/ui/android/theme/BUILD.gn
+++ b/chrome/browser/ui/android/theme/BUILD.gn
@@ -50,7 +50,6 @@
 
 android_resources("java_resources") {
   sources = [
-    "java/res/color/toolbar_icon_tint_dark.xml",
     "java/res/values/colors.xml",
     "java/res/values/values.xml",
   ]
diff --git a/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeColorProvider.java b/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeColorProvider.java
index 1da27f1..e799b13 100644
--- a/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeColorProvider.java
+++ b/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeColorProvider.java
@@ -8,10 +8,11 @@
 import android.content.res.ColorStateList;
 
 import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import org.chromium.base.ObserverList;
-import org.chromium.ui.util.ColorUtils;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 
 /**
  * An abstract class that provides the current theme color.
@@ -34,25 +35,19 @@
     public interface TintObserver {
         /**
          * @param tint The new tint the observer should use.
-         * @param useLight Whether the observer should use light mode.
+         * @param brandedColorScheme The {@link BrandedColorScheme} the observer should use.
          */
-        void onTintChanged(ColorStateList tint, boolean useLight);
+        void onTintChanged(ColorStateList tint, @BrandedColorScheme int brandedColorScheme);
     }
 
-    /** Light mode tint (used when color is dark). */
-    private final ColorStateList mLightModeTint;
-
-    /** Dark mode tint (used when color is light). */
-    private final ColorStateList mDarkModeTint;
-
     /** Current primary color. */
     private int mPrimaryColor;
 
-    /**
-     * Whether should use light tint (corresponds to dark color). If null, the state is not
-     * initialized.
-     */
-    private @Nullable Boolean mUseLightTint;
+    /** The current {@link BrandedColorScheme}. */
+    private @Nullable @BrandedColorScheme Integer mBrandedColorScheme;
+
+    /** The current tint. */
+    private ColorStateList mTint;
 
     /** List of {@link ThemeColorObserver}s. These are used to broadcast events to listeners. */
     private final ObserverList<ThemeColorObserver> mThemeColorObservers;
@@ -66,8 +61,7 @@
     public ThemeColorProvider(Context context) {
         mThemeColorObservers = new ObserverList<ThemeColorObserver>();
         mTintObservers = new ObserverList<TintObserver>();
-        mLightModeTint = ThemeUtils.getThemedToolbarIconTint(context, true);
-        mDarkModeTint = ThemeUtils.getThemedToolbarIconTint(context, false);
+        mTint = ThemeUtils.getThemedToolbarIconTint(context, BrandedColorScheme.APP_DEFAULT);
     }
 
     /**
@@ -112,14 +106,14 @@
      * @return The current tint of this provider.
      */
     public ColorStateList getTint() {
-        return useLight() ? mLightModeTint : mDarkModeTint;
+        return mTint;
     }
 
     /**
-     * @return Whether or not this provider is using light tints.
+     * @return The current {@link BrandedColorScheme} of this provider.
      */
-    public boolean useLight() {
-        return mUseLightTint != null ? mUseLightTint : false;
+    public @BrandedColorScheme int getBrandedColorScheme() {
+        return mBrandedColorScheme != null ? mBrandedColorScheme : BrandedColorScheme.APP_DEFAULT;
     }
 
     /**
@@ -136,16 +130,16 @@
         for (ThemeColorObserver observer : mThemeColorObservers) {
             observer.onThemeColorChanged(color, shouldAnimate);
         }
-        updateTint();
     }
 
-    private void updateTint() {
-        final boolean useLight = ColorUtils.shouldUseLightForegroundOnBackground(mPrimaryColor);
-        if (mUseLightTint != null && useLight == mUseLightTint) return;
-        mUseLightTint = useLight;
-        final ColorStateList tint = useLight ? mLightModeTint : mDarkModeTint;
+    protected void updateTint(
+            @NonNull ColorStateList tint, @BrandedColorScheme int brandedColorScheme) {
+        if (tint == mTint) return;
+        mTint = tint;
+        mBrandedColorScheme = brandedColorScheme;
+
         for (TintObserver observer : mTintObservers) {
-            observer.onTintChanged(tint, useLight);
+            observer.onTintChanged(tint, brandedColorScheme);
         }
     }
 }
diff --git a/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeUtils.java b/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeUtils.java
index 8ef7b43..a2ba90a 100644
--- a/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeUtils.java
+++ b/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/ThemeUtils.java
@@ -22,6 +22,7 @@
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.ui.native_page.NativePage;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.content_public.browser.RenderWidgetHostView;
 import org.chromium.content_public.browser.WebContents;
@@ -129,7 +130,40 @@
         // Light toolbar theme colors may be used in night mode, so use toolbar_icon_tint_dark which
         // is not overridden in night- resources.
         return useLight ? R.color.default_icon_color_light_tint_list
-                        : R.color.toolbar_icon_tint_dark;
+                        : R.color.default_icon_color_dark_tint_list;
+    }
+
+    /**
+     * Returns the themed toolbar icon tint list.
+     *
+     * @param context The context to retrieve the resources from.
+     * @param brandedColorScheme The {@link BrandedColorScheme}.
+     * @return Primary icon tint list.
+     */
+    public static ColorStateList getThemedToolbarIconTint(
+            Context context, @BrandedColorScheme int brandedColorScheme) {
+        return AppCompatResources.getColorStateList(
+                context, getThemedToolbarIconTintRes(brandedColorScheme));
+    }
+
+    /**
+     * Returns the themed toolbar icon tint resource.
+     *
+     * @param brandedColorScheme The {@link BrandedColorScheme}.
+     * @return Primary icon tint resource.
+     */
+    public static @ColorRes int getThemedToolbarIconTintRes(
+            @BrandedColorScheme int brandedColorScheme) {
+        @ColorRes
+        int colorId = R.color.default_icon_color_tint_list;
+        if (brandedColorScheme == BrandedColorScheme.INCOGNITO) {
+            colorId = R.color.default_icon_color_light_tint_list;
+        } else if (brandedColorScheme == BrandedColorScheme.LIGHT_BRANDED_THEME) {
+            colorId = R.color.default_icon_color_dark_tint_list;
+        } else if (brandedColorScheme == BrandedColorScheme.DARK_BRANDED_THEME) {
+            colorId = R.color.default_icon_color_white_tint_list;
+        }
+        return colorId;
     }
 
     /**
diff --git a/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/TopUiThemeColorProvider.java b/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/TopUiThemeColorProvider.java
index 60d506a..d6481ba 100644
--- a/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/TopUiThemeColorProvider.java
+++ b/chrome/browser/ui/android/theme/java/src/org/chromium/chrome/browser/theme/TopUiThemeColorProvider.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.theme;
 
 import android.content.Context;
+import android.content.res.ColorStateList;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
@@ -17,6 +18,7 @@
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabState;
 import org.chromium.chrome.browser.ui.native_page.NativePage;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.components.embedder_support.util.UrlUtilities;
 import org.chromium.ui.util.ColorUtils;
@@ -103,6 +105,21 @@
     private void updateColor(Tab tab, int themeColor, boolean shouldAnimate) {
         updatePrimaryColor(calculateColor(tab, themeColor), shouldAnimate);
         mIsDefaultColorUsed = isUsingDefaultColor(tab, themeColor);
+        final @BrandedColorScheme int brandedColorScheme =
+                calculateBrandedColorScheme(tab.isIncognito(), mIsDefaultColorUsed);
+        final ColorStateList iconTint =
+                ThemeUtils.getThemedToolbarIconTint(mContext, brandedColorScheme);
+        updateTint(iconTint, brandedColorScheme);
+    }
+
+    private int calculateBrandedColorScheme(boolean isIncognito, boolean isDefaultColor) {
+        if (isIncognito) return BrandedColorScheme.INCOGNITO;
+        if (isDefaultColor) return BrandedColorScheme.APP_DEFAULT;
+
+        final boolean isDarkTheme =
+                ColorUtils.shouldUseLightForegroundOnBackground(getThemeColor());
+        return isDarkTheme ? BrandedColorScheme.DARK_BRANDED_THEME
+                           : BrandedColorScheme.LIGHT_BRANDED_THEME;
     }
 
     /**
diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn
index 8d56518..0231a777 100644
--- a/chrome/browser/ui/android/toolbar/BUILD.gn
+++ b/chrome/browser/ui/android/toolbar/BUILD.gn
@@ -237,8 +237,10 @@
     "java/res/layout/tab_switcher_toolbar.xml",
     "java/res/layout/toolbar_phone.xml",
     "java/res/layout/toolbar_tablet.xml",
+    "java/res/values-night/drawables.xml",
     "java/res/values-sw600dp/dimens.xml",
     "java/res/values/dimens.xml",
+    "java/res/values/drawables.xml",
     "java/res/values/ids.xml",
     "java/res/values/styles.xml",
     "java/res/values/values.xml",
diff --git a/chrome/browser/ui/android/toolbar/java/res/values-night/drawables.xml b/chrome/browser/ui/android/toolbar/java/res/values-night/drawables.xml
new file mode 100644
index 0000000..5b4031d
--- /dev/null
+++ b/chrome/browser/ui/android/toolbar/java/res/values-night/drawables.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2021 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<resources>
+    <drawable name="badge_update">@drawable/badge_update_light</drawable>
+    <drawable name="ic_error_24dp_filled">@drawable/ic_error_white_24dp_filled</drawable>
+</resources>
diff --git a/chrome/browser/ui/android/toolbar/java/res/values/drawables.xml b/chrome/browser/ui/android/toolbar/java/res/values/drawables.xml
new file mode 100644
index 0000000..4539df5
--- /dev/null
+++ b/chrome/browser/ui/android/toolbar/java/res/values/drawables.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2021 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<resources>
+    <drawable name="badge_update">@drawable/badge_update_dark</drawable>
+    <drawable name="ic_error_24dp_filled">@drawable/ic_error_grey800_24dp_filled</drawable>
+</resources>
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/SettableThemeColorProvider.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/SettableThemeColorProvider.java
index d0cdbfc..4784bb4 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/SettableThemeColorProvider.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/SettableThemeColorProvider.java
@@ -5,8 +5,10 @@
 package org.chromium.chrome.browser.toolbar;
 
 import android.content.Context;
+import android.content.res.ColorStateList;
 
 import org.chromium.chrome.browser.theme.ThemeColorProvider;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 
 /**
  * {@link ThemeColorProvider} that blindly tracks whatever primary color it's set to.
@@ -28,4 +30,11 @@
     public void setPrimaryColor(int color, boolean shouldAnimate) {
         updatePrimaryColor(color, shouldAnimate);
     }
+
+    /**
+     * Sets the tint to the specified value.
+     */
+    public void setTint(ColorStateList tint, @BrandedColorScheme int brandedColorScheme) {
+        updateTint(tint, brandedColorScheme);
+    }
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonCoordinator.java
index 2479bc7..2f3eb0f 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonCoordinator.java
@@ -10,6 +10,7 @@
 import org.chromium.chrome.browser.theme.ThemeColorProvider;
 import org.chromium.chrome.browser.theme.ThemeColorProvider.TintObserver;
 import org.chromium.chrome.browser.toolbar.TabCountProvider.TabCountObserver;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
 
@@ -53,7 +54,8 @@
         mThemeColorProvider = themeColorProvider;
         mTintObserver = new TintObserver() {
             @Override
-            public void onTintChanged(ColorStateList tint, boolean useLight) {
+            public void onTintChanged(
+                    ColorStateList tint, @BrandedColorScheme int brandedColorScheme) {
                 mTabSwitcherButtonModel.set(TabSwitcherButtonProperties.TINT, tint);
             }
         };
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButton.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButton.java
index 1d43cc5..0a74b322 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButton.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButton.java
@@ -31,6 +31,7 @@
 import org.chromium.chrome.browser.theme.ThemeUtils;
 import org.chromium.chrome.browser.toolbar.R;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.components.browser_ui.widget.animation.Interpolators;
 import org.chromium.components.browser_ui.widget.highlight.PulseDrawable;
 import org.chromium.ui.interpolators.BakedBezierInterpolator;
@@ -44,7 +45,7 @@
 
     /** The view for the update badge. */
     private ImageView mUpdateBadgeView;
-    private boolean mUseLightDrawables;
+    private @BrandedColorScheme int mBrandedColorScheme;
 
     private AppMenuButtonHelper mAppMenuButtonHelper;
 
@@ -121,7 +122,7 @@
                 mMenuImageButton.getWidth() - mMenuImageButton.getPaddingRight(),
                 mMenuImageButton.getHeight() - mMenuImageButton.getPaddingBottom());
         mMenuImageButtonAnimationDrawable.setGravity(Gravity.CENTER);
-        int color = ThemeUtils.getThemedToolbarIconTint(getContext(), mUseLightDrawables)
+        int color = ThemeUtils.getThemedToolbarIconTint(getContext(), mBrandedColorScheme)
                             .getDefaultColor();
         mMenuImageButtonAnimationDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
 
@@ -130,7 +131,7 @@
         MenuButtonState buttonState = mStateSupplier.get();
         if (buttonState == null || mUpdateBadgeView == null) return;
         @DrawableRes
-        int drawable = mUseLightDrawables ? buttonState.lightBadgeIcon : buttonState.darkBadgeIcon;
+        int drawable = getUpdateBadgeIcon(buttonState, mBrandedColorScheme);
         mUpdateBadgeView.setImageDrawable(
                 ApiCompatibilityUtils.getDrawable(getResources(), drawable));
         mUpdateBadgeAnimationDrawable = (BitmapDrawable) mUpdateBadgeView.getDrawable()
@@ -144,6 +145,19 @@
         mUpdateBadgeAnimationDrawable.setGravity(Gravity.CENTER);
     }
 
+    private @DrawableRes int getUpdateBadgeIcon(
+            MenuButtonState buttonState, @BrandedColorScheme int brandedColorScheme) {
+        @DrawableRes
+        int drawable = buttonState.adaptiveBadgeIcon;
+        if (brandedColorScheme == BrandedColorScheme.DARK_BRANDED_THEME
+                || brandedColorScheme == BrandedColorScheme.INCOGNITO) {
+            drawable = buttonState.lightBadgeIcon;
+        } else if (brandedColorScheme == BrandedColorScheme.LIGHT_BRANDED_THEME) {
+            drawable = buttonState.darkBadgeIcon;
+        }
+        return drawable;
+    }
+
     /**
      * Set the supplier of menu button state.
      * @param supplier Supplier of menu button state.
@@ -261,7 +275,10 @@
                         ViewCompat.getPaddingEnd(mMenuImageButton),
                         mMenuImageButton.getPaddingBottom());
             }
-            mHighlightDrawable.setUseLightPulseColor(getContext(), mUseLightDrawables);
+            // TODO(https://crbug.com/1233703) This doesn't work well with website themes.
+            boolean isLightPulseColor = mBrandedColorScheme == BrandedColorScheme.DARK_BRANDED_THEME
+                    || mBrandedColorScheme == BrandedColorScheme.INCOGNITO;
+            mHighlightDrawable.setUseLightPulseColor(getContext(), isLightPulseColor);
             setBackground(mHighlightDrawable);
             mHighlightDrawable.start();
         } else {
@@ -287,14 +304,14 @@
     }
 
     @VisibleForTesting
-    public boolean getUseLightDrawablesForTesting() {
-        return mUseLightDrawables;
+    public @BrandedColorScheme int getBrandedColorSchemeForTesting() {
+        return mBrandedColorScheme;
     }
 
     @Override
-    public void onTintChanged(ColorStateList tintList, boolean useLight) {
+    public void onTintChanged(ColorStateList tintList, @BrandedColorScheme int brandedColorScheme) {
         ApiCompatibilityUtils.setImageTintList(mMenuImageButton, tintList);
-        mUseLightDrawables = useLight;
+        mBrandedColorScheme = brandedColorScheme;
         updateImageResources();
         updateMenuButtonHighlightDrawable();
     }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator.java
index 105fdd29..de7646d 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator.java
@@ -77,7 +77,7 @@
                                          new ShowBadgeProperty(false, false))
                                  .with(MenuButtonProperties.THEME,
                                          new ThemeProperty(themeColorProvider.getTint(),
-                                                 themeColorProvider.useLight()))
+                                                 themeColorProvider.getBrandedColorScheme()))
                                  .with(MenuButtonProperties.IS_VISIBLE, true)
                                  .with(MenuButtonProperties.STATE_SUPPLIER, menuButtonStateSupplier)
                                  .build();
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator.java
index 4c13daaf..46094d76 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator.java
@@ -32,6 +32,7 @@
 import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuObserver;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.ui.KeyboardVisibilityDelegate;
 import org.chromium.ui.base.WindowAndroid;
 import org.chromium.ui.modelutil.PropertyModel;
@@ -231,8 +232,10 @@
         updateContentDescription(false, 0);
     }
 
-    private void onTintChanged(ColorStateList tintList, boolean useLight) {
-        mPropertyModel.set(MenuButtonProperties.THEME, new ThemeProperty(tintList, useLight));
+    private void onTintChanged(
+            ColorStateList tintList, @BrandedColorScheme int brandedColorScheme) {
+        mPropertyModel.set(
+                MenuButtonProperties.THEME, new ThemeProperty(tintList, brandedColorScheme));
     }
 
     /**
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediatorTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediatorTest.java
index f8f5d61..504a8c81 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediatorTest.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediatorTest.java
@@ -88,7 +88,7 @@
                                          new ShowBadgeProperty(false, false))
                                  .with(MenuButtonProperties.THEME,
                                          new ThemeProperty(mThemeColorProvider.getTint(),
-                                                 mThemeColorProvider.useLight()))
+                                                 mThemeColorProvider.getBrandedColorScheme()))
                                  .with(MenuButtonProperties.IS_VISIBLE, true)
                                  .build();
         doReturn(mAppMenuHandler).when(mAppMenuCoordinator).getAppMenuHandler();
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties.java
index 5c652127..de41381 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties.java
@@ -10,6 +10,7 @@
 
 import org.chromium.base.supplier.Supplier;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableFloatPropertyKey;
@@ -19,11 +20,12 @@
     static class ThemeProperty {
         @NonNull
         public ColorStateList mColorStateList;
-        public boolean mUseLightColors;
+        public @BrandedColorScheme int mBrandedColorScheme;
 
-        public ThemeProperty(@NonNull ColorStateList colorStateList, boolean useLight) {
+        public ThemeProperty(@NonNull ColorStateList colorStateList,
+                @BrandedColorScheme int brandedColorScheme) {
             mColorStateList = colorStateList;
-            mUseLightColors = useLight;
+            mBrandedColorScheme = brandedColorScheme;
         }
     }
 
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonState.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonState.java
index ca15f97..e9d2803 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonState.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonState.java
@@ -26,4 +26,10 @@
      * this object is not {@code null}.
      */
     public @DrawableRes int lightBadgeIcon;
+
+    /**
+     * An icon resource for the badge for the menu button that adapts to light and dark modes.
+     * Always set (not {@code 0}) if this object is not {@code null}.
+     */
+    public @DrawableRes int adaptiveBadgeIcon;
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonTest.java
index a336e62..17174622 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonTest.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonTest.java
@@ -35,6 +35,7 @@
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.browser.toolbar.R;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 
 /**
  * Unit tests for MenuButton.
@@ -64,6 +65,7 @@
                 R.string.accessibility_toolbar_btn_menu_update;
         mMenuUiState.buttonState.darkBadgeIcon = R.drawable.badge_update_dark;
         mMenuUiState.buttonState.lightBadgeIcon = R.drawable.badge_update_light;
+        mMenuUiState.buttonState.adaptiveBadgeIcon = R.drawable.badge_update;
         mMenuButton.setStateSupplier(() -> mMenuUiState.buttonState);
     }
 
@@ -94,7 +96,7 @@
         assertEquals(drawnDrawable.getCreatedFromResId(), darkDrawable.getCreatedFromResId());
         assertNotEquals(drawnDrawable.getCreatedFromResId(), lightDrawable.getCreatedFromResId());
 
-        mMenuButton.onTintChanged(mColorStateList, true);
+        mMenuButton.onTintChanged(mColorStateList, BrandedColorScheme.DARK_BRANDED_THEME);
         drawnDrawable = shadowOf(mMenuButton.getTabSwitcherAnimationDrawable());
         assertEquals(drawnDrawable.getCreatedFromResId(), lightDrawable.getCreatedFromResId());
         assertNotEquals(drawnDrawable.getCreatedFromResId(), darkDrawable.getCreatedFromResId());
@@ -114,7 +116,7 @@
     @Test
     public void testDrawTabSwitcherAnimationOverlay_correctBoundsAfterThemeChange() {
         mMenuButton.removeAppMenuUpdateBadge(false);
-        mMenuButton.onTintChanged(mColorStateList, true);
+        mMenuButton.onTintChanged(mColorStateList, BrandedColorScheme.DARK_BRANDED_THEME);
 
         // Run a manual layout pass so that mMenuButton's children get assigned sizes.
         mMenuButton.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder.java
index 000c4d9..556e4ff 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder.java
@@ -47,7 +47,7 @@
         } else if (propertyKey == MenuButtonProperties.THEME) {
             bind(model, view, MenuButtonProperties.STATE_SUPPLIER);
             ThemeProperty themeProperty = model.get(MenuButtonProperties.THEME);
-            view.onTintChanged(themeProperty.mColorStateList, themeProperty.mUseLightColors);
+            view.onTintChanged(themeProperty.mColorStateList, themeProperty.mBrandedColorScheme);
         } else if (propertyKey == MenuButtonProperties.TRANSLATION_X) {
             view.setTranslationX(model.get(MenuButtonProperties.TRANSLATION_X));
         }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
index be5de17..f62e567 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
@@ -55,6 +55,7 @@
 import org.chromium.chrome.browser.toolbar.top.ToolbarTablet.OfflineDownloader;
 import org.chromium.chrome.browser.toolbar.top.TopToolbarCoordinator.UrlExpansionObserver;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.ui.UiUtils;
 import org.chromium.ui.base.ViewUtils;
 
@@ -206,15 +207,8 @@
         return mThemeColorProvider == null ? mDefaultTint : mThemeColorProvider.getTint();
     }
 
-    /**
-     * @return Whether to use light assets.
-     */
-    protected boolean useLight() {
-        return mThemeColorProvider != null && mThemeColorProvider.useLight();
-    }
-
     @Override
-    public void onTintChanged(ColorStateList tint, boolean useLight) {}
+    public void onTintChanged(ColorStateList tint, @BrandedColorScheme int brandedColorScheme) {}
 
     @Override
     public void onThemeColorChanged(int color, boolean shouldAnimate) {}
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
index ef28d03f..1e47554 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
@@ -66,6 +66,7 @@
 import org.chromium.chrome.browser.toolbar.TabSwitcherDrawable;
 import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator;
 import org.chromium.chrome.browser.toolbar.top.TopToolbarCoordinator.UrlExpansionObserver;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.components.browser_ui.widget.animation.CancelAwareAnimatorListener;
 import org.chromium.components.browser_ui.widget.animation.Interpolators;
@@ -147,7 +148,7 @@
     @ViewDebug.ExportedProperty(category = "chrome")
     protected boolean mTextureCaptureMode;
     private boolean mForceTextureCapture;
-    private boolean mLightDrawablesUsedForLastTextureCapture;
+    private int mTintUsedForLastTextureCapture;
     private int mTabCountForLastTextureCapture;
 
     @ViewDebug.ExportedProperty(category = "chrome")
@@ -1326,7 +1327,7 @@
                     mToolbarButtonsContainer, canvas, rgbAlpha);
         }
 
-        mLightDrawablesUsedForLastTextureCapture = useLight();
+        mTintUsedForLastTextureCapture = getTint().getDefaultColor();
 
         if (mTabSwitcherAnimationTabStackDrawable != null && mToggleTabStackButton != null) {
             mTabCountForLastTextureCapture = mTabSwitcherAnimationTabStackDrawable.getTabCount();
@@ -1557,7 +1558,7 @@
         if (forceTextureCapture) {
             // Only force a texture capture if the tint for the toolbar drawables is changing or
             // if the tab count has changed since the last texture capture.
-            mForceTextureCapture = mLightDrawablesUsedForLastTextureCapture != useLight();
+            mForceTextureCapture = mTintUsedForLastTextureCapture != getTint().getDefaultColor();
 
             if (mTabSwitcherAnimationTabStackDrawable != null && mToggleTabStackButton != null) {
                 mForceTextureCapture = mForceTextureCapture
@@ -1635,16 +1636,21 @@
     }
 
     @Override
-    public void onTintChanged(ColorStateList tint, boolean useLight) {
+    public void onThemeColorChanged(int color, boolean shouldAnimate) {
+        if (mToggleTabStackButton != null) {
+            final boolean useLight = ColorUtils.shouldUseLightForegroundOnBackground(color);
+            mToggleTabStackButton.setUseLightDrawables(useLight);
+        }
+    }
+
+    @Override
+    public void onTintChanged(ColorStateList tint, @BrandedColorScheme int brandedColorScheme) {
         if (mHomeButton != null) {
             ApiCompatibilityUtils.setImageTintList(mHomeButton, tint);
         }
 
-        if (mToggleTabStackButton != null) {
-            mToggleTabStackButton.setUseLightDrawables(useLight);
-            if (mTabSwitcherAnimationTabStackDrawable != null) {
-                mTabSwitcherAnimationTabStackDrawable.setTint(tint);
-            }
+        if (mToggleTabStackButton != null && mTabSwitcherAnimationTabStackDrawable != null) {
+            mTabSwitcherAnimationTabStackDrawable.setTint(tint);
         }
 
         if (mOptionalButton != null && mOptionalButtonUsesTint) {
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java
index c8024bbb1..15395d2 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java
@@ -48,10 +48,12 @@
 import org.chromium.chrome.browser.toolbar.ToolbarTabController;
 import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator;
 import org.chromium.chrome.browser.toolbar.top.NavigationPopup.HistoryDelegate;
+import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
 import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
 import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.ui.UiUtils;
 import org.chromium.ui.base.DeviceFormFactor;
+import org.chromium.ui.util.ColorUtils;
 import org.chromium.ui.widget.Toast;
 
 import java.util.ArrayList;
@@ -378,13 +380,12 @@
     }
 
     @Override
-    public void onTintChanged(ColorStateList tint, boolean useLight) {
+    public void onTintChanged(ColorStateList tint, @BrandedColorScheme int brandedColorScheme) {
         ApiCompatibilityUtils.setImageTintList(mHomeButton, tint);
         ApiCompatibilityUtils.setImageTintList(mBackButton, tint);
         ApiCompatibilityUtils.setImageTintList(mForwardButton, tint);
         ApiCompatibilityUtils.setImageTintList(mSaveOfflineButton, tint);
         ApiCompatibilityUtils.setImageTintList(mReloadButton, tint);
-        mAccessibilitySwitcherButton.setUseLightDrawables(useLight);
 
         if (mOptionalButton != null && mOptionalButtonUsesTint) {
             ApiCompatibilityUtils.setImageTintList(mOptionalButton, tint);
@@ -399,6 +400,8 @@
         mLocationBar.getTabletCoordinator().getBackground().setTint(textBoxColor);
         mLocationBar.updateVisualsForState();
         setToolbarHairlineColor(color);
+        final boolean useLight = ColorUtils.shouldUseLightForegroundOnBackground(color);
+        mAccessibilitySwitcherButton.setUseLightDrawables(useLight);
     }
 
     /**
diff --git a/chrome/browser/ui/app_list/app_context_menu.cc b/chrome/browser/ui/app_list/app_context_menu.cc
index 581268b..d0bfea92 100644
--- a/chrome/browser/ui/app_list/app_context_menu.cc
+++ b/chrome/browser/ui/app_list/app_context_menu.cc
@@ -118,6 +118,10 @@
       return gfx::kNoneIcon;
     case ash::REORDER_SUBMENU:
       return ash::kReorderIcon;
+    case ash::REORDER_BY_NAME_ALPHABETICAL:
+      return ash::kSortAlphabeticalIcon;
+    case ash::REORDER_BY_COLOR:
+      return ash::kSortColorIcon;
     case ash::NOTIFICATION_CONTAINER:
       NOTREACHED() << "NOTIFICATION_CONTAINER does not have an icon, and it is "
                       "added to the model by NotificationMenuController.";
diff --git a/chrome/browser/ui/app_list/app_list_sort_browsertest.cc b/chrome/browser/ui/app_list/app_list_sort_browsertest.cc
index aa3a0630..da364e6e 100644
--- a/chrome/browser/ui/app_list/app_list_sort_browsertest.cc
+++ b/chrome/browser/ui/app_list/app_list_sort_browsertest.cc
@@ -117,7 +117,6 @@
     views::MenuItemView* reorder_option = nullptr;
     switch (order) {
       case ash::AppListSortOrder::kNameAlphabetical:
-      case ash::AppListSortOrder::kNameReverseAlphabetical:
         reorder_option = root_menu->GetSubmenu()->GetMenuItemAt(1);
         EXPECT_TRUE(reorder_option->title() == u"Name");
         break;
@@ -125,6 +124,7 @@
         reorder_option = root_menu->GetSubmenu()->GetMenuItemAt(2);
         EXPECT_TRUE(reorder_option->title() == u"Color");
         break;
+      case ash::AppListSortOrder::kNameReverseAlphabetical:
       case ash::AppListSortOrder::kCustom:
         NOTREACHED();
         return nullptr;
@@ -136,32 +136,20 @@
   views::MenuItemView* GetReorderOptionForNonFolderItemMenu(
       const views::MenuItemView* root_menu,
       ash::AppListSortOrder order) {
-    views::MenuItemView* reorder_option = nullptr;
-    switch (order) {
-      case ash::AppListSortOrder::kNameAlphabetical:
-      case ash::AppListSortOrder::kNameReverseAlphabetical: {
-        // Get the second to last menu item index.
-        views::SubmenuView* sub_menu = root_menu->GetSubmenu();
-        int index = sub_menu->GetRowCount() - 2;
-        reorder_option = sub_menu->GetMenuItemAt(index);
-        EXPECT_TRUE(reorder_option->title() == u"Reorder by name");
-        break;
-      }
-      case ash::AppListSortOrder::kColor:
-        reorder_option = root_menu->GetSubmenu()->GetLastItem();
-        EXPECT_TRUE(reorder_option->title() == u"Color");
-        break;
-      case ash::AppListSortOrder::kCustom:
-        NOTREACHED();
-        return nullptr;
-    }
-    return reorder_option;
+    // Get the last menu item index where the reorder submenu is.
+    views::MenuItemView* reorder_item_view =
+        root_menu->GetSubmenu()->GetLastItem();
+    DCHECK_EQ(reorder_item_view->title(), u"Reorder by");
+    return reorder_item_view;
   }
 
   // Reorders the app list items through the specified context menu indicated by
   // `menu_type`.
   void ReorderByMouseClickAtContextMenu(ash::AppListSortOrder order,
                                         MenuType menu_type) {
+    // Custom order is not a menu option.
+    ASSERT_NE(order, ash::AppListSortOrder::kCustom);
+
     views::MenuItemView* root_menu = ShowRootMenuAndReturn(menu_type);
 
     // Get the "Name" or "Color" option.
@@ -172,35 +160,24 @@
         reorder_option =
             GetReorderOptionForAppListOrFolderItemMenu(root_menu, order);
         break;
-      case MenuType::kAppListNonFolderItemMenu:
-        reorder_option = GetReorderOptionForNonFolderItemMenu(root_menu, order);
+      case MenuType::kAppListNonFolderItemMenu: {
+        // The `reorder_option` cached here is the submenu of the options.
+        views::MenuItemView* reorder_submenu =
+            GetReorderOptionForNonFolderItemMenu(root_menu, order);
+        event_generator_->MoveMouseTo(
+            reorder_submenu->GetBoundsInScreen().CenterPoint());
+        event_generator_->ClickLeftButton();
+        reorder_option = reorder_submenu->GetSubmenu()->GetMenuItemAt(
+            GetMenuIndexOfSortingOrder(order));
         break;
+      }
     }
 
-    gfx::Point sorting_option;
-    switch (order) {
-      case ash::AppListSortOrder::kNameAlphabetical:
-      case ash::AppListSortOrder::kNameReverseAlphabetical:
-        // Open the Reorder by mouse clicking at the Name submenu.
-        event_generator_->MoveMouseTo(
-            reorder_option->GetBoundsInScreen().CenterPoint());
-        event_generator_->ClickLeftButton();
-        ASSERT_TRUE(reorder_option->SubmenuIsShowing());
-        sorting_option = reorder_option->GetSubmenu()
-                             ->GetMenuItemAt(GetMenuIndexOfSortingOrder(order))
-                             ->GetBoundsInScreen()
-                             .CenterPoint();
-        break;
-      case ash::AppListSortOrder::kColor:
-        sorting_option = reorder_option->GetBoundsInScreen().CenterPoint();
-        break;
-      case ash::AppListSortOrder::kCustom:
-        NOTREACHED();
-        return;
-    }
+    gfx::Point point_on_option =
+        reorder_option->GetBoundsInScreen().CenterPoint();
 
     // Click at the sorting option.
-    event_generator_->MoveMouseTo(sorting_option);
+    event_generator_->MoveMouseTo(point_on_option);
     event_generator_->ClickLeftButton();
   }
 
@@ -209,9 +186,9 @@
     switch (order) {
       case ash::AppListSortOrder::kNameAlphabetical:
         return 0;
-      case ash::AppListSortOrder::kNameReverseAlphabetical:
-        return 1;
       case ash::AppListSortOrder::kColor:
+        return 1;
+      case ash::AppListSortOrder::kNameReverseAlphabetical:
       case ash::AppListSortOrder::kCustom:
         NOTREACHED();
         return 0;
@@ -303,7 +280,8 @@
 };
 
 // Verifies that the apps in the top level apps grid can be arranged in the
-// (reverse) alphabetical order using the context menu in apps grid view.
+// alphabetical order or sorted by the apps' icon colors using the context menu
+// in apps grid view.
 // TODO(crbug.com/1267369): Also add a test that verifies the behavior in tablet
 // mode.
 IN_PROC_BROWSER_TEST_F(AppListSortBrowserTest, ContextMenuSortItemsInTopLevel) {
@@ -317,20 +295,14 @@
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app1_id_, app2_id_, app3_id_}));
 
-  ReorderByMouseClickAtContextMenu(
-      ash::AppListSortOrder::kNameReverseAlphabetical,
-      MenuType::kAppListPageMenu);
-  EXPECT_EQ(GetAppIdsInOrdinalOrder(),
-            std::vector<std::string>({app3_id_, app2_id_, app1_id_}));
-
   ReorderByMouseClickAtContextMenu(ash::AppListSortOrder::kColor,
                                    MenuType::kAppListPageMenu);
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app2_id_, app3_id_, app1_id_}));
 }
 
-// Verifies that the apps in a folder can be arranged in the (reverse)
-// alphabetical order using the context menu in apps grid view.
+// Verifies that the apps in a folder can be arranged in the alphabetical order
+// or sorted by the apps' icon colors using the context menu in apps grid view.
 // TODO(crbug.com/1267369): Also add a test that verifies the behavior in tablet
 // mode.
 IN_PROC_BROWSER_TEST_F(AppListSortBrowserTest, ContextMenuSortItemsInFolder) {
@@ -348,12 +320,6 @@
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app1_id_, app2_id_, app3_id_}));
 
-  ReorderByMouseClickAtContextMenu(
-      ash::AppListSortOrder::kNameReverseAlphabetical,
-      MenuType::kAppListPageMenu);
-  EXPECT_EQ(GetAppIdsInOrdinalOrder(),
-            std::vector<std::string>({app3_id_, app2_id_, app1_id_}));
-
   ReorderByMouseClickAtContextMenu(ash::AppListSortOrder::kColor,
                                    MenuType::kAppListPageMenu);
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
@@ -361,7 +327,8 @@
 }
 
 // Verifies that the apps in the top level apps grid can be arranged in the
-// (reverse) alphabetical order using the context menu in app list item view.
+// alphabetical order or sorted by the apps' icon colors using the context menu
+// in app list item view.
 // TODO(crbug.com/1267369): Also add a test that verifies the behavior in tablet
 // mode.
 IN_PROC_BROWSER_TEST_F(AppListSortBrowserTest,
@@ -376,20 +343,15 @@
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app1_id_, app2_id_, app3_id_}));
 
-  ReorderByMouseClickAtContextMenu(
-      ash::AppListSortOrder::kNameReverseAlphabetical,
-      MenuType::kAppListNonFolderItemMenu);
-  EXPECT_EQ(GetAppIdsInOrdinalOrder(),
-            std::vector<std::string>({app3_id_, app2_id_, app1_id_}));
-
   ReorderByMouseClickAtContextMenu(ash::AppListSortOrder::kColor,
                                    MenuType::kAppListNonFolderItemMenu);
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app2_id_, app3_id_, app1_id_}));
 }
 
-// Verifies that the apps in a folder can be arranged in the (reverse)
-// alphabetical order using the context menu in app list item view.
+// Verifies that the apps in a folder can be arranged in the alphabetical order
+// or sorted by the apps' icon colors using the context menu in app list item
+// view.
 // TODO(crbug.com/1267369): Also add a test that verifies the behavior in tablet
 // mode.
 IN_PROC_BROWSER_TEST_F(AppListSortBrowserTest,
@@ -410,20 +372,14 @@
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app1_id_, app2_id_, app3_id_}));
 
-  ReorderByMouseClickAtContextMenu(
-      ash::AppListSortOrder::kNameReverseAlphabetical,
-      MenuType::kAppListNonFolderItemMenu);
-  EXPECT_EQ(GetAppIdsInOrdinalOrder(),
-            std::vector<std::string>({app3_id_, app2_id_, app1_id_}));
-
   ReorderByMouseClickAtContextMenu(ash::AppListSortOrder::kColor,
                                    MenuType::kAppListNonFolderItemMenu);
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app2_id_, app3_id_, app1_id_}));
 }
 
-// Verifies that the apps can be arranged in the (reverse)
-// alphabetical order using the context menu on folder item view.
+// Verifies that the apps can be arranged in the alphabetical order or sorted by
+// the apps' icon colors using the context menu on folder item view.
 // TODO(crbug.com/1267369): Also add a test that verifies the behavior in tablet
 // mode.
 IN_PROC_BROWSER_TEST_F(AppListSortBrowserTest,
@@ -442,12 +398,6 @@
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
             std::vector<std::string>({app1_id_, app2_id_, app3_id_}));
 
-  ReorderByMouseClickAtContextMenu(
-      ash::AppListSortOrder::kNameReverseAlphabetical,
-      MenuType::kAppListFolderItemMenu);
-  EXPECT_EQ(GetAppIdsInOrdinalOrder(),
-            std::vector<std::string>({app3_id_, app2_id_, app1_id_}));
-
   ReorderByMouseClickAtContextMenu(ash::AppListSortOrder::kColor,
                                    MenuType::kAppListFolderItemMenu);
   EXPECT_EQ(GetAppIdsInOrdinalOrder(),
diff --git a/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc b/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc
index db7d178..dc820b4 100644
--- a/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc
+++ b/chrome/browser/ui/app_list/app_service/app_service_context_menu.cc
@@ -40,6 +40,7 @@
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/context_menu_params.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/display/scoped_display_for_new_windows.h"
 #include "ui/gfx/vector_icon_types.h"
 
@@ -391,21 +392,23 @@
     reorder_submenu_ = std::make_unique<ui::SimpleMenuModel>(this);
     // As all the options below are only for tests and are expected to change in
     // the future, the strings are directly written as the parameters.
-    // TODO(crbug.com/1269386): Change the testing strings to the strings we
-    // want when the feature is enabled by default and use string ids to
-    // interpret them.
-    reorder_submenu_->AddItem(ash::REORDER_BY_NAME_ALPHABETICAL,
-                              u"Alphabetical");
-    reorder_submenu_->AddItem(ash::REORDER_BY_NAME_REVERSE_ALPHABETICAL,
-                              u"Reverse alphabetical");
+    reorder_submenu_->AddItemWithIcon(
+        ash::REORDER_BY_NAME_ALPHABETICAL,
+        l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_NAME),
+        ui::ImageModel::FromVectorIcon(GetMenuItemVectorIcon(
+            ash::REORDER_BY_NAME_ALPHABETICAL, /*string_id=*/-1)));
+    reorder_submenu_->AddItemWithIcon(
+        ash::REORDER_BY_COLOR,
+        l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_COLOR),
+        ui::ImageModel::FromVectorIcon(
+            GetMenuItemVectorIcon(ash::REORDER_BY_COLOR, /*string_id=*/-1)));
     menu_model->AddSeparator(ui::NORMAL_SEPARATOR);
     menu_model->AddSubMenuWithIcon(
-        ash::REORDER_SUBMENU, u"Reorder by name", reorder_submenu_.get(),
+        ash::REORDER_SUBMENU,
+        l10n_util::GetStringUTF16(IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE),
+        reorder_submenu_.get(),
         ui::ImageModel::FromVectorIcon(
             GetMenuItemVectorIcon(ash::REORDER_SUBMENU, /*string_id=*/-1)));
-    // TODO(crbug.com/1276230): Move reorder by color item to proper location
-    // and add a vector icon.
-    menu_model->AddItem(ash::REORDER_BY_COLOR, u"Color");
   }
 
   std::move(callback).Run(std::move(menu_model));
diff --git a/chrome/browser/ui/breadcrumb_manager_browser_agent_unittest.cc b/chrome/browser/ui/breadcrumb_manager_browser_agent_unittest.cc
index cc92782..31f1155 100644
--- a/chrome/browser/ui/breadcrumb_manager_browser_agent_unittest.cc
+++ b/chrome/browser/ui/breadcrumb_manager_browser_agent_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/feature_list.h"
 #include "chrome/browser/breadcrumbs/breadcrumb_manager_keyed_service_factory.h"
+#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/test/base/browser_with_test_window_test.h"
 #include "components/breadcrumbs/core/breadcrumb_manager_keyed_service.h"
@@ -19,6 +20,13 @@
  protected:
   BreadcrumbManagerBrowserAgentTest() {
     scoped_feature_list_.InitWithFeatures({breadcrumbs::kLogBreadcrumbs}, {});
+    ChromeMetricsServiceAccessor::SetMetricsAndCrashReportingForTesting(
+        &are_metrics_enabled_);
+  }
+
+  ~BreadcrumbManagerBrowserAgentTest() override {
+    ChromeMetricsServiceAccessor::SetMetricsAndCrashReportingForTesting(
+        nullptr);
   }
 
   void SetUp() override {
@@ -43,6 +51,7 @@
  private:
   base::test::ScopedFeatureList scoped_feature_list_;
   breadcrumbs::BreadcrumbManagerKeyedService* breadcrumb_service_ = nullptr;
+  const bool are_metrics_enabled_ = true;
 };
 
 // Tests that an event logged by the BrowserAgent is returned with events for
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index da521ddb..a3066ac 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -38,6 +38,7 @@
 #include "chrome/browser/background/background_contents.h"
 #include "chrome/browser/background/background_contents_service.h"
 #include "chrome/browser/background/background_contents_service_factory.h"
+#include "chrome/browser/breadcrumbs/breadcrumbs_status.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/buildflags.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
@@ -161,7 +162,6 @@
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/browser/bookmark_utils.h"
 #include "components/bookmarks/common/bookmark_pref_names.h"
-#include "components/breadcrumbs/core/features.h"
 #include "components/captive_portal/core/buildflags.h"
 #include "components/content_settings/browser/page_specific_content_settings.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -483,7 +483,7 @@
       user_title_(params.user_title),
       signin_view_controller_(this),
       breadcrumb_manager_browser_agent_(
-          base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs)
+          BreadcrumbsStatus::IsEnabled()
               ? std::make_unique<BreadcrumbManagerBrowserAgent>(this)
               : nullptr)
 #if BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/ui/search/ntp_user_data_logger.cc b/chrome/browser/ui/search/ntp_user_data_logger.cc
index 66ac34aa..a226ab7 100644
--- a/chrome/browser/ui/search/ntp_user_data_logger.cc
+++ b/chrome/browser/ui/search/ntp_user_data_logger.cc
@@ -286,7 +286,7 @@
       ntp_url_(ntp_url),
       profile_(profile),
       // TODO(https://crbug.com/1280310): Migrate NTP navigation startup time
-      // from base::Time to base::TimeTicks top avoid time glitches.
+      // from base::Time to base::TimeTicks to avoid time glitches.
       ntp_navigation_start_time_(
           base::TimeTicks::UnixEpoch() +
           (ntp_navigation_start_time - base::Time::UnixEpoch())) {}
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
index dc640758..51874c3ec 100644
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -15,6 +15,7 @@
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/breadcrumbs/breadcrumb_manager_tab_helper.h"
+#include "chrome/browser/breadcrumbs/breadcrumbs_status.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/buildflags.h"
 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
@@ -100,7 +101,6 @@
 #include "components/autofill/core/browser/browser_autofill_manager.h"
 #include "components/blocked_content/popup_blocker_tab_helper.h"
 #include "components/blocked_content/popup_opener_tab_helper.h"
-#include "components/breadcrumbs/core/features.h"
 #include "components/captive_portal/core/buildflags.h"
 #include "components/content_settings/browser/page_specific_content_settings.h"
 #include "components/dom_distiller/core/dom_distiller_features.h"
@@ -278,7 +278,7 @@
       autofill::ChromeAutofillClient::FromWebContents(web_contents),
       g_browser_process->GetApplicationLocale(),
       autofill::BrowserAutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER);
-  if (base::FeatureList::IsEnabled(breadcrumbs::kLogBreadcrumbs))
+  if (BreadcrumbsStatus::IsEnabled())
     BreadcrumbManagerTabHelper::CreateForWebContents(web_contents);
   chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents);
   ChromePasswordManagerClient::CreateForWebContentsWithAutofillClient(
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
index 6e850aa..90b6f24 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
@@ -177,7 +177,8 @@
   // The vertical tab separator might show through the stroke if the stroke
   // color is translucent.  To prevent this, always use an opaque stroke color.
   return color_utils::GetResultingPaintColor(
-      GetFrameThemeProvider()->GetColor(color_id), GetFrameColor());
+      GetFrameThemeProvider()->GetColor(color_id),
+      GetFrameColor(BrowserFrameActiveState::kUseCurrent));
 }
 
 absl::optional<int> BrowserNonClientFrameView::GetCustomBackgroundId(
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view.h b/chrome/browser/ui/views/frame/browser_non_client_frame_view.h
index a7ac74ef..84b05d1 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view.h
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view.h
@@ -103,8 +103,7 @@
 
   // Returns the color of the browser frame, which is also the color of the
   // tabstrip background.
-  SkColor GetFrameColor(BrowserFrameActiveState active_state =
-                            BrowserFrameActiveState::kUseCurrent) const;
+  virtual SkColor GetFrameColor(BrowserFrameActiveState active_state) const;
 
   // Called by BrowserView to signal the frame color has changed and needs
   // to be repainted.
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc
index a1610083..adc5edc8 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc
@@ -132,13 +132,13 @@
 // app itself having no theme color.
 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewBrowserTest,
                        BookmarkAppFrameColorCustomThemeNoThemeColor) {
-  InstallExtension(test_data_dir_.AppendASCII("theme"), 1);
-  app_theme_color_.reset();
   InstallAndLaunchBookmarkApp();
+  const SkColor color_without_theme =
+      app_frame_view_->GetFrameColor(BrowserFrameActiveState::kActive);
+
+  InstallExtension(test_data_dir_.AppendASCII("theme"), 1);
   // Bookmark apps are not affected by browser themes.
-  EXPECT_EQ(ThemeProperties::GetDefaultColor(
-                ThemeProperties::COLOR_FRAME_ACTIVE, false,
-                app_frame_view_->GetNativeTheme()->ShouldUseDarkColors()),
+  EXPECT_EQ(color_without_theme,
             app_frame_view_->GetFrameColor(BrowserFrameActiveState::kActive));
 }
 
@@ -168,9 +168,7 @@
   ASSERT_TRUE(theme_service->UsingSystemTheme());
 
   InstallAndLaunchBookmarkApp();
-// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
-// of lacros-chrome is complete.
-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
+#if defined(OS_LINUX)
   // On Linux, the system theme is the GTK theme and should change the frame
   // color to the system color (not the app theme color); otherwise the title
   // and border would clash horribly with the GTK title bar.
@@ -229,7 +227,9 @@
 
   InstallAndLaunchBookmarkApp();
   ASSERT_EQ(*app_theme_color_, SK_ColorBLUE);
-  EXPECT_EQ(app_frame_view_->GetFrameColor(), *app_theme_color_);
+  EXPECT_EQ(
+      app_frame_view_->GetFrameColor(BrowserFrameActiveState::kUseCurrent),
+      *app_theme_color_);
 
   {
     // Add two meta theme color elements. The first element's color should be
@@ -244,7 +244,8 @@
 
     // Frame view may get reset after theme change.
     // TODO(crbug.com/1020050): Make it not do this and only refresh the Widget.
-    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(),
+    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(
+                  BrowserFrameActiveState::kUseCurrent),
               SK_ColorRED);
   }
   {
@@ -255,7 +256,8 @@
         "document.getElementById('first').setAttribute('content', 'yellow')"));
     waiter.Wait();
 
-    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(),
+    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(
+                  BrowserFrameActiveState::kUseCurrent),
               SK_ColorYELLOW);
   }
   {
@@ -267,7 +269,8 @@
                                 "setAttribute('media', '(max-width: 0px)')"));
     waiter.Wait();
 
-    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(),
+    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(
+                  BrowserFrameActiveState::kUseCurrent),
               SK_ColorGREEN);
   }
   {
@@ -278,7 +281,8 @@
                                 "document.getElementById('second').remove()"));
     waiter.Wait();
 
-    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(),
+    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(
+                  BrowserFrameActiveState::kUseCurrent),
               SK_ColorBLUE);
   }
   {
@@ -294,7 +298,8 @@
                                     width + "px')"));
     waiter.Wait();
 
-    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(),
+    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(
+                  BrowserFrameActiveState::kUseCurrent),
               SK_ColorYELLOW);
   }
   {
@@ -304,7 +309,8 @@
     EXPECT_TRUE(content::ExecJs(web_contents_.get(), "window.resizeBy(24, 0)"));
     waiter.Wait();
 
-    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(),
+    EXPECT_EQ(app_browser_view_->frame()->GetFrameView()->GetFrameColor(
+                  BrowserFrameActiveState::kUseCurrent),
               SK_ColorBLUE);
   }
 }
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc
index f60142a..2265184 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc
@@ -48,6 +48,7 @@
 #include "ui/base/metadata/metadata_impl_macros.h"
 #include "ui/base/models/image_model.h"
 #include "ui/base/ui_base_types.h"
+#include "ui/chromeos/styles/cros_styles.h"
 #include "ui/events/gestures/gesture_recognizer.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/geometry/rect.h"
@@ -65,6 +66,7 @@
 #endif  // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "ash/constants/ash_features.h"
 #include "ash/wm/window_util.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_helper.h"
 #include "chrome/browser/ui/ash/session_util.h"
@@ -238,25 +240,46 @@
 
 SkColor BrowserNonClientFrameViewChromeOS::GetCaptionColor(
     BrowserFrameActiveState active_state) const {
-  bool active = ShouldPaintAsActive(active_state);
+  // Web apps apply a theme color if specified by the extension/manifest.
+  absl::optional<SkColor> frame_theme_color =
+      browser_view()->browser()->app_controller()->GetThemeColor();
+  const SkColor frame_color =
+      frame_theme_color.value_or(GetFrameColor(active_state));
+  const SkColor active_caption_color =
+      views::FrameCaptionButton::GetButtonColor(frame_color);
 
-  SkColor active_color =
-      views::FrameCaptionButton::GetButtonColor(chromeos::kDefaultFrameColor);
+  if (ShouldPaintAsActive(active_state))
+    return active_caption_color;
 
-  // Web apps apply a theme color if specified by the extension.
-  Browser* browser = browser_view()->browser();
-  absl::optional<SkColor> theme_color =
-      browser->app_controller()->GetThemeColor();
-  if (theme_color)
-    active_color = views::FrameCaptionButton::GetButtonColor(*theme_color);
-
-  if (active)
-    return active_color;
-
-  // Add the container for extra web-app buttons (e.g app menu button).
   const float inactive_alpha_ratio =
       views::FrameCaptionButton::GetInactiveButtonColorAlphaRatio();
-  return SkColorSetA(active_color, inactive_alpha_ratio * SK_AlphaOPAQUE);
+  return SkColorSetA(active_caption_color,
+                     inactive_alpha_ratio * SK_AlphaOPAQUE);
+}
+
+SkColor BrowserNonClientFrameViewChromeOS::GetFrameColor(
+    BrowserFrameActiveState active_state) const {
+  if (!UsePackagedAppHeaderStyle(browser_view()->browser()))
+    return BrowserNonClientFrameView::GetFrameColor(active_state);
+
+  absl::optional<SkColor> color;
+  if (browser_view()->GetIsWebAppType())
+    color = browser_view()->browser()->app_controller()->GetThemeColor();
+
+  SkColor fallback_color = chromeos::kDefaultFrameColor;
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  // TODO(crbug.com/1278862): make these features available in Lacros.
+  if (ash::features::IsDarkLightModeEnabled() && GetWidget()) {
+    fallback_color = cros_styles::ResolveColor(
+        cros_styles::ColorName::kBgColor,
+        GetNativeTheme()->ShouldUseDarkColors(),
+        base::FeatureList::IsEnabled(
+            ash::features::kSemanticColorsDebugOverride));
+  }
+#endif
+
+  return color.value_or(fallback_color);
 }
 
 TabSearchBubbleHost*
@@ -890,27 +913,10 @@
 
 void BrowserNonClientFrameViewChromeOS::OnUpdateFrameColor() {
   aura::Window* window = frame()->GetNativeWindow();
-  absl::optional<SkColor> active_color, inactive_color;
-  if (!UsePackagedAppHeaderStyle(browser_view()->browser())) {
-    active_color = GetFrameColor(BrowserFrameActiveState::kActive);
-    inactive_color = GetFrameColor(BrowserFrameActiveState::kInactive);
-  } else if (browser_view()->GetIsWebAppType()) {
-    active_color = browser_view()->browser()->app_controller()->GetThemeColor();
-  } else if (!browser_view()->browser()->is_type_app() &&
-             !browser_view()->browser()->is_type_app_popup()) {
-    // TODO(crbug.com/836128): Remove when System Web Apps flag is removed, as
-    // the above web-app branch will render the theme color.
-    active_color = SK_ColorWHITE;
-  }
-
-  if (active_color) {
-    window->SetProperty(chromeos::kFrameActiveColorKey, *active_color);
-    window->SetProperty(chromeos::kFrameInactiveColorKey,
-                        inactive_color.value_or(*active_color));
-  } else {
-    window->ClearProperty(chromeos::kFrameActiveColorKey);
-    window->ClearProperty(chromeos::kFrameInactiveColorKey);
-  }
+  window->SetProperty(chromeos::kFrameActiveColorKey,
+                      GetFrameColor(BrowserFrameActiveState::kActive));
+  window->SetProperty(chromeos::kFrameInactiveColorKey,
+                      GetFrameColor(BrowserFrameActiveState::kInactive));
 
   if (frame_header_)
     frame_header_->UpdateFrameColors();
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.h b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.h
index 9bdc979d7..f9afef3 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.h
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.h
@@ -60,6 +60,7 @@
   void UpdateThrobber(bool running) override;
   bool CanUserExitFullscreen() const override;
   SkColor GetCaptionColor(BrowserFrameActiveState active_state) const override;
+  SkColor GetFrameColor(BrowserFrameActiveState active_state) const override;
   TabSearchBubbleHost* GetTabSearchBubbleHost() override;
   void UpdateMinimumSize() override;
 
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
index 75404cf..b3a6c27 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_mac.mm
@@ -384,7 +384,7 @@
     return;
   }
 
-  SkColor frame_color = GetFrameColor();
+  SkColor frame_color = GetFrameColor(BrowserFrameActiveState::kUseCurrent);
   canvas->DrawColor(frame_color);
 
   if (window_title_) {
@@ -586,7 +586,8 @@
     UpdateCaptionButtonPlaceholderContainerBackground() {
   if (caption_button_placeholder_container_) {
     caption_button_placeholder_container_->SetBackground(
-        views::CreateSolidBackground(GetFrameColor()));
+        views::CreateSolidBackground(
+            GetFrameColor(BrowserFrameActiveState::kUseCurrent)));
   }
 }
 
diff --git a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
index eed28b5..84417ae 100644
--- a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
+++ b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
@@ -587,7 +587,7 @@
 }
 
 SkColor GlassBrowserFrameView::GetTitlebarColor() const {
-  return GetFrameColor();
+  return GetFrameColor(BrowserFrameActiveState::kUseCurrent);
 }
 
 void GlassBrowserFrameView::PaintTitlebar(gfx::Canvas* canvas) const {
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
index 6610961..845f59a 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
@@ -574,7 +574,7 @@
     return;  // Nothing is visible, so don't bother to paint.
 
   const bool active = ShouldPaintAsActive();
-  SkColor frame_color = GetFrameColor();
+  SkColor frame_color = GetFrameColor(BrowserFrameActiveState::kUseCurrent);
   window_title_->SetEnabledColor(
       GetCaptionColor(BrowserFrameActiveState::kUseCurrent));
   window_title_->SetBackgroundColor(frame_color);
@@ -837,7 +837,8 @@
     UpdateCaptionButtonPlaceholderContainerBackground() {
   if (caption_button_placeholder_container_) {
     caption_button_placeholder_container_->SetBackground(
-        views::CreateSolidBackground(GetFrameColor()));
+        views::CreateSolidBackground(
+            GetFrameColor(BrowserFrameActiveState::kUseCurrent)));
   }
 }
 
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc
index 9198a95..98f23f0d 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc
@@ -20,14 +20,24 @@
 const char kFirstTestFeatureId[] = "feature-1";
 const base::Feature kTestFeature1{"FeatureName1",
                                   base::FEATURE_ENABLED_BY_DEFAULT};
+
+// Experiment platform to use for feature flags.
+unsigned short GetPlatformToUse() {
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+  return flags_ui::FlagsState::GetCurrentPlatform() | flags_ui::kOsCrOS;
+#else
+  return flags_ui::FlagsState::GetCurrentPlatform();
+#endif
+}
+
 }  // namespace
 
 class ChromeLabsUiTest : public DialogBrowserTest {
  public:
   ChromeLabsUiTest()
-      : scoped_feature_entries_({{kFirstTestFeatureId, "", "",
-                                  flags_ui::FlagsState::GetCurrentPlatform(),
-                                  FEATURE_VALUE_TYPE(kTestFeature1)}}) {
+      : scoped_feature_entries_(
+            {{kFirstTestFeatureId, "", "", GetPlatformToUse(),
+              FEATURE_VALUE_TYPE(kTestFeature1)}}) {
     scoped_feature_list_.InitAndEnableFeature(features::kChromeLabs);
 
     std::vector<LabInfo> test_feature_info = {
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc
index 200fe21..3028bf13 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_unittest.cc
@@ -70,6 +70,15 @@
 const flags_ui::FeatureEntry::FeatureVariation kTestVariations2[] = {
     {"Description", kTestVariationOther2, 1, nullptr}};
 
+// Experiment platform to use for feature flags.
+unsigned short GetPlatformToUse() {
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+  return flags_ui::FlagsState::GetCurrentPlatform() | flags_ui::kOsCrOS;
+#else
+  return flags_ui::FlagsState::GetCurrentPlatform();
+#endif
+}
+
 }  // namespace
 
 class ChromeLabsBubbleTest : public TestWithBrowserView {
@@ -82,11 +91,9 @@
         user_manager_enabler_(base::WrapUnique(user_manager_)),
 #endif
         scoped_feature_entries_(
-            {{kFirstTestFeatureId, "", "",
-              flags_ui::FlagsState::GetCurrentPlatform(),
+            {{kFirstTestFeatureId, "", "", GetPlatformToUse(),
               FEATURE_VALUE_TYPE(kTestFeature1)},
-             {kTestFeatureWithVariationId, "", "",
-              flags_ui::FlagsState::GetCurrentPlatform(),
+             {kTestFeatureWithVariationId, "", "", GetPlatformToUse(),
               FEATURE_WITH_PARAMS_VALUE_TYPE(kTestFeature2,
                                              kTestVariations2,
                                              "TestTrial")},
@@ -94,8 +101,7 @@
              // compatible with the current platform.
              {kThirdTestFeatureId, "", "", 0,
               FEATURE_VALUE_TYPE(kTestFeature3)},
-             {kExpiredFlagTestFeatureId, "", "",
-              flags_ui::FlagsState::GetCurrentPlatform(),
+             {kExpiredFlagTestFeatureId, "", "", GetPlatformToUse(),
               FEATURE_VALUE_TYPE(kExpiredFlagTestFeature)}}) {
     // Set expiration milestone such that the flag is expired.
     flags::testing::SetFlagExpiration(kExpiredFlagTestFeatureId, 0);
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc
index 752ee2fc..8219a75 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc
@@ -47,6 +47,15 @@
 const base::Feature kTestFeatureExpired{"Expired",
                                         base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Experiment platform to use for feature flags.
+unsigned short GetPlatformToUse() {
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+  return flags_ui::FlagsState::GetCurrentPlatform() | flags_ui::kOsCrOS;
+#else
+  return flags_ui::FlagsState::GetCurrentPlatform();
+#endif
+}
+
 }  // namespace
 
 class ChromeLabsButtonTest : public TestWithBrowserView {
@@ -58,9 +67,9 @@
         user_manager_enabler_(base::WrapUnique(user_manager_)),
 #endif
 
-        scoped_feature_entries_({{kFirstTestFeatureId, "", "",
-                                  flags_ui::FlagsState::GetCurrentPlatform(),
-                                  FEATURE_VALUE_TYPE(kTestFeature1)}}) {
+        scoped_feature_entries_(
+            {{kFirstTestFeatureId, "", "", GetPlatformToUse(),
+              FEATURE_VALUE_TYPE(kTestFeature1)}}) {
   }
   void SetUp() override {
 #if BUILDFLAG(IS_CHROMEOS_ASH)
@@ -222,9 +231,9 @@
     : public TestWithBrowserView {
  public:
   ChromeLabsButtonOnlyExpiredFeaturesAvailableTest()
-      : scoped_feature_entries_({{kExpiredFlagTestFeatureId, "", "",
-                                  flags_ui::FlagsState::GetCurrentPlatform(),
-                                  FEATURE_VALUE_TYPE(kTestFeatureExpired)}}) {
+      : scoped_feature_entries_(
+            {{kExpiredFlagTestFeatureId, "", "", GetPlatformToUse(),
+              FEATURE_VALUE_TYPE(kTestFeatureExpired)}}) {
     flags::testing::SetFlagExpiration(kExpiredFlagTestFeatureId, 0);
   }
   void SetUp() override {
diff --git a/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc b/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc
index 3b4717ea..5c6d28e 100644
--- a/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc
+++ b/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc
@@ -237,6 +237,10 @@
 
   // The dialog is still open, so the result remains in its initial state.
   EXPECT_THAT(result(), Eq(TryChromeDialog::NOT_NOW));
+
+  // Spin the message loop, to allow Chrome to handle the WM_ENDSESSION
+  // gracefully.
+  RunUntilQuit();
 }
 
 // Showing the dialog then receiving a rendezvous should suppress the initial
diff --git a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
index 333729a..fb87800 100644
--- a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
@@ -197,8 +197,6 @@
     base::DictionaryValue* dict) {
   dict->SetBoolean("voiceMatchDisabled",
                    chromeos::assistant::features::IsVoiceMatchDisabled());
-  dict->SetBoolean("shouldSkipVoiceMatch",
-                   !ash::AssistantState::Get()->HasAudioInputDevice());
   dict->SetString("assistantLocale", g_browser_process->GetApplicationLocale());
   BaseScreenHandler::GetAdditionalParameters(dict);
 }
@@ -510,6 +508,9 @@
   dictionary.SetKey(
       "voiceMatchEnforcedOff",
       base::Value(IsVoiceMatchEnforcedOff(prefs, is_oobe_in_progress)));
+  dictionary.SetKey(
+      "shouldSkipVoiceMatch",
+      base::Value(!ash::AssistantState::Get()->HasAudioInputDevice()));
   dictionary.SetKey("childName", base::Value(GetGivenNameIfIsChild()));
   ReloadContent(dictionary);
 
diff --git a/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.cc b/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.cc
index 2de22ba..ac633afc6 100644
--- a/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.cc
@@ -133,10 +133,19 @@
 }
 
 void FingerprintHandler::OnAuthScanDone(
-    device::mojom::ScanResult scan_result,
+    const device::mojom::FingerprintMessagePtr msg,
     const base::flat_map<std::string, std::vector<std::string>>& matches) {
-  VLOG(1) << "Receive fingerprint auth scan result. scan_result="
-          << scan_result;
+  switch (msg->which()) {
+    case device::mojom::FingerprintMessage::Tag::kScanResult:
+      VLOG(1) << "Receive fingerprint auth scan result. scan_result="
+              << msg->get_scan_result();
+      return;
+    case device::mojom::FingerprintMessage::Tag::kFingerprintError:
+      VLOG(1) << "Receive fingerprint auth error. error="
+              << msg->get_fingerprint_error();
+      return;
+  }
+  NOTREACHED();
 }
 
 void FingerprintHandler::OnSessionFailed() {
diff --git a/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.h b/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.h
index e8a49ad..565b39a 100644
--- a/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.h
+++ b/chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.h
@@ -46,7 +46,7 @@
                         bool enroll_session_complete,
                         int percent_complete) override;
   void OnAuthScanDone(
-      device::mojom::ScanResult scan_result,
+      const device::mojom::FingerprintMessagePtr msg,
       const base::flat_map<std::string, std::vector<std::string>>& matches)
       override;
   void OnSessionFailed() override;
diff --git a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc
index 1ed1a1b1..c337a131 100644
--- a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.cc
@@ -57,6 +57,8 @@
 const char kIsPhoneHubAppsAccessGranted[] = "isPhoneHubAppsAccessGranted";
 const char kIsPhoneHubPermissionsDialogSupported[] =
     "isPhoneHubPermissionsDialogSupported";
+const char kIsCameraRollFilePermissionGranted[] =
+    "isCameraRollFilePermissionGranted";
 
 constexpr char kAndroidSmsInfoOriginKey[] = "origin";
 constexpr char kAndroidSmsInfoEnabledKey[] = "enabled";
@@ -78,13 +80,15 @@
     multidevice_setup::AndroidSmsPairingStateTracker*
         android_sms_pairing_state_tracker,
     android_sms::AndroidSmsAppManager* android_sms_app_manager,
-    ash::eche_app::AppsAccessManager* apps_access_manager)
+    ash::eche_app::AppsAccessManager* apps_access_manager,
+    ash::phonehub::CameraRollManager* camera_roll_manager)
     : prefs_(prefs),
       multidevice_setup_client_(multidevice_setup_client),
       notification_access_manager_(notification_access_manager),
       android_sms_pairing_state_tracker_(android_sms_pairing_state_tracker),
       android_sms_app_manager_(android_sms_app_manager),
-      apps_access_manager_(apps_access_manager) {
+      apps_access_manager_(apps_access_manager),
+      camera_roll_manager_(camera_roll_manager) {
   CHECK((multidevice_setup_client_ != nullptr) ==
         multidevice_setup::AreAnyMultiDeviceFeaturesAllowed(prefs_));
   pref_change_registrar_.Init(prefs_);
@@ -162,6 +166,9 @@
   if (apps_access_manager_)
     apps_access_manager_observation_.Observe(apps_access_manager_);
 
+  if (camera_roll_manager_)
+    camera_roll_manager_observation_.Observe(camera_roll_manager_);
+
   pref_change_registrar_.Add(
       proximity_auth::prefs::kProximityAuthIsChromeOSLoginEnabled,
       base::BindRepeating(
@@ -215,6 +222,12 @@
     apps_access_manager_observation_.Reset();
   }
 
+  if (camera_roll_manager_) {
+    DCHECK(camera_roll_manager_observation_.IsObservingSource(
+        camera_roll_manager_));
+    camera_roll_manager_observation_.Reset();
+  }
+
   // Ensure that pending callbacks do not complete and cause JS to be evaluated.
   callback_weak_ptr_factory_.InvalidateWeakPtrs();
 }
@@ -254,6 +267,10 @@
   UpdatePageContent();
 }
 
+void MultideviceHandler::OnCameraRollViewUiStateUpdated() {
+  UpdatePageContent();
+}
+
 void MultideviceHandler::OnNearbySharingEnabledChanged() {
   UpdatePageContent();
 }
@@ -546,6 +563,16 @@
   page_content_dictionary->SetBoolean(kIsPhoneHubAppsAccessGranted,
                                       is_apps_access_granted);
 
+  bool is_camera_roll_file_permission_granted = false;
+  if (camera_roll_manager_) {
+    is_camera_roll_file_permission_granted =
+        camera_roll_manager_->ui_state() !=
+        ash::phonehub::CameraRollManager::CameraRollUiState::
+            NO_STORAGE_PERMISSION;
+  }
+  page_content_dictionary->SetBoolean(kIsCameraRollFilePermissionGranted,
+                                      is_camera_roll_file_permission_granted);
+
   bool is_nearby_share_disallowed_by_policy =
       NearbySharingServiceFactory::IsNearbyShareSupportedForBrowserContext(
           Profile::FromWebUI(web_ui())) &&
diff --git a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h
index 2fb51330..2b828424 100644
--- a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h
+++ b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h
@@ -5,6 +5,7 @@
 #ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_MULTIDEVICE_HANDLER_H_
 #define CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_MULTIDEVICE_HANDLER_H_
 
+#include "ash/components/phonehub/camera_roll_manager.h"
 #include "ash/components/phonehub/notification_access_manager.h"
 #include "ash/components/phonehub/notification_access_setup_operation.h"
 #include "ash/webui/eche_app_ui/apps_access_manager.h"
@@ -35,7 +36,8 @@
       public android_sms::AndroidSmsAppManager::Observer,
       public phonehub::NotificationAccessManager::Observer,
       public phonehub::NotificationAccessSetupOperation::Delegate,
-      public ash::eche_app::AppsAccessManager::Observer {
+      public ash::eche_app::AppsAccessManager::Observer,
+      public ash::phonehub::CameraRollManager::Observer {
  public:
   MultideviceHandler(
       PrefService* prefs,
@@ -44,7 +46,8 @@
       multidevice_setup::AndroidSmsPairingStateTracker*
           android_sms_pairing_state_tracker,
       android_sms::AndroidSmsAppManager* android_sms_app_manager,
-      ash::eche_app::AppsAccessManager* apps_access_manager);
+      ash::eche_app::AppsAccessManager* apps_access_manager,
+      ash::phonehub::CameraRollManager* camera_roll_manager);
 
   MultideviceHandler(const MultideviceHandler&) = delete;
   MultideviceHandler& operator=(const MultideviceHandler&) = delete;
@@ -84,6 +87,9 @@
   // ash::eche_app::AppsAccessManager::Observer:
   void OnAppsAccessChanged() override;
 
+  // ash::phonehub::CameraRollManager::Observer:
+  void OnCameraRollViewUiStateUpdated() override;
+
   // Called when the Nearby Share enabled pref changes.
   void OnNearbySharingEnabledChanged();
 
@@ -146,6 +152,8 @@
 
   ash::eche_app::AppsAccessManager* apps_access_manager_;
 
+  ash::phonehub::CameraRollManager* camera_roll_manager_;
+
   base::ScopedObservation<multidevice_setup::MultiDeviceSetupClient,
                           multidevice_setup::MultiDeviceSetupClient::Observer>
       multidevice_setup_observation_{this};
@@ -162,6 +170,9 @@
   base::ScopedObservation<ash::eche_app::AppsAccessManager,
                           ash::eche_app::AppsAccessManager::Observer>
       apps_access_manager_observation_{this};
+  base::ScopedObservation<ash::phonehub::CameraRollManager,
+                          ash::phonehub::CameraRollManager::Observer>
+      camera_roll_manager_observation_{this};
 
   // Used to cancel callbacks when JavaScript becomes disallowed.
   base::WeakPtrFactory<MultideviceHandler> callback_weak_ptr_factory_{this};
diff --git a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler_unittest.cc b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler_unittest.cc
index 08242fb1..71e7b05 100644
--- a/chrome/browser/ui/webui/settings/chromeos/multidevice_handler_unittest.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/multidevice_handler_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "ash/components/phonehub/fake_camera_roll_manager.h"
 #include "ash/components/phonehub/fake_notification_access_manager.h"
 #include "ash/constants/ash_features.h"
 #include "ash/webui/eche_app_ui/apps_access_manager.h"
@@ -46,13 +47,15 @@
       multidevice_setup::AndroidSmsPairingStateTracker*
           android_sms_pairing_state_tracker,
       android_sms::AndroidSmsAppManager* android_sms_app_manager,
-      ash::eche_app::AppsAccessManager* apps_access_manager)
+      ash::eche_app::AppsAccessManager* apps_access_manager,
+      ash::phonehub::CameraRollManager* camera_roll_manager)
       : MultideviceHandler(prefs,
                            multidevice_setup_client,
                            notification_access_manager,
                            android_sms_pairing_state_tracker,
                            android_sms_app_manager,
-                           apps_access_manager) {}
+                           apps_access_manager,
+                           camera_roll_manager) {}
   ~TestMultideviceHandler() override = default;
 
   // Make public for testing.
@@ -93,7 +96,8 @@
     const multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap&
         feature_states_map,
     bool expected_is_nearby_share_disallowed_by_policy_,
-    bool expected_is_phone_hub_apps_access_granted_) {
+    bool expected_is_phone_hub_apps_access_granted_,
+    bool expected_is_camera_roll_file_permission_granted_) {
   const base::DictionaryValue* page_content_dict;
   EXPECT_TRUE(value->GetAsDictionary(&page_content_dict));
 
@@ -183,6 +187,10 @@
               Optional(expected_is_phone_hub_apps_access_granted_));
 
   EXPECT_THAT(
+      page_content_dict->FindBoolKey("isCameraRollFilePermissionGranted"),
+      Optional(expected_is_camera_roll_file_permission_granted_));
+
+  EXPECT_THAT(
       page_content_dict->FindBoolKey("isPhoneHubPermissionsDialogSupported"),
       Optional(true));
 }
@@ -215,6 +223,8 @@
         std::make_unique<ash::eche_app::FakeAppsAccessManager>(
             ash::eche_app::AppsAccessManager::AccessStatus::
                 kAvailableButNotGranted);
+    fake_camera_roll_manager_ =
+        std::make_unique<ash::phonehub::FakeCameraRollManager>();
 
     prefs_ = std::make_unique<TestingPrefServiceSimple>();
     RegisterNearbySharingPrefs(prefs_->registry());
@@ -230,7 +240,8 @@
         prefs_.get(), fake_multidevice_setup_client_.get(),
         fake_notification_access_manager_.get(),
         fake_android_sms_pairing_state_tracker_.get(),
-        fake_android_sms_app_manager_.get(), fake_apps_access_manager_.get());
+        fake_android_sms_app_manager_.get(), fake_apps_access_manager_.get(),
+        fake_camera_roll_manager_.get());
 
     test_web_contents_ = content::WebContents::Create(
         content::WebContents::CreateParams(&test_profile_));
@@ -433,6 +444,24 @@
     VerifyPageContent(call_data.arg2());
   }
 
+  void SimulateCameraRollFilePermissionChanged(bool file_permission_granted) {
+    size_t call_data_count_before_call = test_web_ui()->call_data().size();
+
+    fake_camera_roll_manager()->SetIsAndroidStorageGranted(
+        file_permission_granted);
+    expected_is_camera_roll_file_permission_granted_ = file_permission_granted;
+
+    EXPECT_EQ(call_data_count_before_call + 1u,
+              test_web_ui()->call_data().size());
+
+    const content::TestWebUI::CallData& call_data =
+        CallDataAtIndex(call_data_count_before_call);
+    EXPECT_EQ("cr.webUIListenerCallback", call_data.function_name());
+    EXPECT_EQ("settings.updateMultidevicePageContentData",
+              call_data.arg1()->GetString());
+    VerifyPageContent(call_data.arg2());
+  }
+
   void CallRetryPendingHostSetup(bool success) {
     base::ListValue empty_args;
     test_web_ui()->HandleReceivedMessage("retryPendingHostSetup", &empty_args);
@@ -499,6 +528,10 @@
     return fake_apps_access_manager_.get();
   }
 
+  ash::phonehub::FakeCameraRollManager* fake_camera_roll_manager() {
+    return fake_camera_roll_manager_.get();
+  }
+
   void SimulateNotificationOptInStatusChange(
       phonehub::NotificationAccessSetupOperation::Status status) {
     size_t call_data_count_before_call = test_web_ui()->call_data().size();
@@ -530,6 +563,7 @@
 
   bool expected_is_nearby_share_disallowed_by_policy_ = false;
   bool expected_is_phone_hub_apps_access_granted_ = false;
+  bool expected_is_camera_roll_file_permission_granted_ = true;
 
  private:
   void VerifyPageContent(const base::Value* value) {
@@ -538,7 +572,8 @@
         fake_multidevice_setup_client_->GetHostStatus().second,
         fake_multidevice_setup_client_->GetFeatureStates(),
         expected_is_nearby_share_disallowed_by_policy_,
-        expected_is_phone_hub_apps_access_granted_);
+        expected_is_phone_hub_apps_access_granted_,
+        expected_is_camera_roll_file_permission_granted_);
   }
 
   content::BrowserTaskEnvironment task_environment_;
@@ -554,6 +589,8 @@
       fake_android_sms_pairing_state_tracker_;
   std::unique_ptr<ash::eche_app::FakeAppsAccessManager>
       fake_apps_access_manager_;
+  std::unique_ptr<ash::phonehub::FakeCameraRollManager>
+      fake_camera_roll_manager_;
 
   multidevice_setup::MultiDeviceSetupClient::HostStatusWithDevice
       host_status_with_device_;
@@ -655,6 +692,8 @@
   SimulateNearbyShareEnabledPrefChange(/*is_enabled=*/false,
                                        /*is_managed=*/true);
   SimulateAppsAccessStatusChanged(/*has_access_been_granted=*/true);
+  SimulateCameraRollFilePermissionChanged(/*file_permission_granted=*/false);
+  SimulateCameraRollFilePermissionChanged(/*file_permission_granted=*/true);
 }
 
 TEST_F(MultideviceHandlerTest, RetryPendingHostSetup) {
diff --git a/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc b/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc
index 9127a36..4075db4 100644
--- a/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/multidevice_section.cc
@@ -517,6 +517,12 @@
   html_source->AddString(
       "multidevicePhoneHubPermissionsLearnMoreURL",
       GetHelpUrlWithBoard(chrome::kPhoneHubPermissionLearnMoreURL));
+  html_source->AddString(
+      "multidevicePhoneHubCameraRollDisabledItemSummary",
+      l10n_util::GetStringFUTF16(
+          IDS_SETTINGS_MULTIDEVICE_PHONE_HUB_CAMERA_ROLL_DISABLED_SUMMARY,
+          ui::GetChromeOSDeviceName(),
+          GetHelpUrlWithBoard(phonehub::kPhoneHubLearnMoreLink)));
 
   AddEasyUnlockStrings(html_source);
 
@@ -566,7 +572,9 @@
           android_sms_service_ ? android_sms_service_->android_sms_app_manager()
                                : nullptr,
           eche_app_manager_ ? eche_app_manager_->GetAppsAccessManager()
-                            : nullptr));
+                            : nullptr,
+          phone_hub_manager_ ? phone_hub_manager_->GetCameraRollManager()
+                             : nullptr));
 }
 
 int MultiDeviceSection::GetSectionNameMessageId() const {
diff --git a/chrome/browser/ui/webui/settings/chromeos/people_section.cc b/chrome/browser/ui/webui/settings/chromeos/people_section.cc
index 8312027a..54ef8f1 100644
--- a/chrome/browser/ui/webui/settings/chromeos/people_section.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/people_section.cc
@@ -207,8 +207,6 @@
        IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_FIRST_MESSAGE},
       {"accountManagerChildSecondMessage",
        IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_SECOND_MESSAGE},
-      {"accountManagerPrimaryAccountTooltip",
-       IDS_SETTINGS_ACCOUNT_MANAGER_PRIMARY_ACCOUNT_TOOLTIP},
       {"accountManagerEducationAccountLabel",
        IDS_SETTINGS_ACCOUNT_MANAGER_EDUCATION_ACCOUNT},
       {"removeAccountLabel", IDS_SETTINGS_ACCOUNT_MANAGER_REMOVE_ACCOUNT_LABEL},
@@ -230,10 +228,6 @@
        IDS_SETTINGS_ACCOUNT_MANAGER_REAUTHENTICATION_TOOLTIP},
       {"accountManagerMoreActionsTooltip",
        IDS_SETTINGS_ACCOUNT_MANAGER_MORE_ACTIONS_TOOLTIP},
-      {"accountManagerManagedLabel",
-       IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_MANAGED_ACCOUNT},
-      {"accountManagerUnmanagedLabel",
-       IDS_SETTINGS_ACCOUNT_MANAGER_MANAGEMENT_STATUS_UNMANAGED_ACCOUNT},
       {"accountListDescription", IDS_SETTINGS_ACCOUNT_MANAGER_LIST_DESCRIPTION},
       {"addAccountLabel", IDS_SETTINGS_ACCOUNT_MANAGER_ADD_ACCOUNT_LABEL_V2},
       {"accountListHeader", IDS_SETTINGS_ACCOUNT_MANAGER_LIST_HEADER_V2},
@@ -543,27 +537,6 @@
 
   bool is_child = user_manager::UserManager::Get()->IsLoggedInAsChildUser();
   html_source->AddBoolean("isChild", is_child);
-
-  std::u16string tooltip;
-  if (is_child) {
-    std::string custodian = supervised_user_service->GetCustodianName();
-    std::string second_custodian =
-        supervised_user_service->GetSecondCustodianName();
-
-    std::u16string child_managed_tooltip;
-    if (second_custodian.empty()) {
-      child_managed_tooltip = l10n_util::GetStringFUTF16(
-          IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_ONE_PARENT_TOOLTIP,
-          base::UTF8ToUTF16(custodian));
-    } else {
-      child_managed_tooltip = l10n_util::GetStringFUTF16(
-          IDS_SETTINGS_ACCOUNT_MANAGER_CHILD_MANAGED_BY_TWO_PARENTS_TOOLTIP,
-          base::UTF8ToUTF16(custodian), base::UTF8ToUTF16(second_custodian));
-    }
-    tooltip = child_managed_tooltip;
-  }
-  html_source->AddString("accountManagerPrimaryAccountChildManagedTooltip",
-                         tooltip);
 }
 
 bool IsSameAccount(const ::account_manager::AccountKey& account_key,
diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc
index 060b820b6..a1bf593b 100644
--- a/chrome/browser/ui/webui/settings/people_handler.cc
+++ b/chrome/browser/ui/webui/settings/people_handler.cc
@@ -78,8 +78,16 @@
 
 namespace {
 
-const char kOfferTrustedVaultOptInChangedEvent[] =
-    "offer-trusted-vault-opt-in-changed";
+const char kTrustedVaultBannerStateChangedEvent[] =
+    "trusted-vault-banner-state-changed";
+
+// WARNING: Keep synced with
+// chrome/browser/resources/settings/people_page/sync_browser_proxy.ts.
+enum class TrustedVaultBannerState {
+  kNotShown = 0,
+  kOfferOptIn = 1,
+  kOptedIn = 2,
+};
 
 // A structure which contains all the configuration information for sync.
 struct SyncConfigInfo {
@@ -141,11 +149,11 @@
 }
 
 // Guaranteed to return a valid result (or crash).
-void ParseConfigurationArguments(const base::ListValue* args,
+void ParseConfigurationArguments(base::Value::ConstListView args,
                                  SyncConfigInfo* config,
                                  const base::Value** callback_id) {
-  const std::string& json = args->GetList()[1].GetString();
-  if ((*callback_id = &args->GetList()[0]) && !json.empty())
+  const std::string& json = args[1].GetString();
+  if ((*callback_id = &args[0]) && !json.empty())
     CHECK(GetConfiguration(json, config));
   else
     NOTREACHED();
@@ -218,72 +226,72 @@
 
 void PeopleHandler::RegisterMessages() {
   InitializeSyncBlocker();
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupDidClosePage",
       base::BindRepeating(&PeopleHandler::OnDidClosePage,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupSetDatatypes",
       base::BindRepeating(&PeopleHandler::HandleSetDatatypes,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupSetEncryptionPassphrase",
       base::BindRepeating(&PeopleHandler::HandleSetEncryptionPassphrase,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupSetDecryptionPassphrase",
       base::BindRepeating(&PeopleHandler::HandleSetDecryptionPassphrase,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupShowSetupUI",
       base::BindRepeating(&PeopleHandler::HandleShowSyncSetupUI,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupGetSyncStatus",
       base::BindRepeating(&PeopleHandler::HandleGetSyncStatus,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncPrefsDispatch",
       base::BindRepeating(&PeopleHandler::HandleSyncPrefsDispatch,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
-      "SyncOfferTrustedVaultOptInDispatch",
-      base::BindRepeating(&PeopleHandler::HandleOfferTrustedVaultOptInDispatch,
+  web_ui()->RegisterMessageCallback(
+      "SyncTrustedVaultBannerStateDispatch",
+      base::BindRepeating(&PeopleHandler::HandleTrustedVaultBannerStateDispatch,
                           base::Unretained(this)));
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "AttemptUserExit",
       base::BindRepeating(&PeopleHandler::HandleAttemptUserExit,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "TurnOnSync", base::BindRepeating(&PeopleHandler::HandleTurnOnSync,
                                         base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "TurnOffSync", base::BindRepeating(&PeopleHandler::HandleTurnOffSync,
                                          base::Unretained(this)));
 #else
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupStartSignIn",
       base::BindRepeating(&PeopleHandler::HandleStartSignin,
                           base::Unretained(this)));
 #endif
 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupSignout", base::BindRepeating(&PeopleHandler::HandleSignout,
                                               base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupPauseSync", base::BindRepeating(&PeopleHandler::HandlePauseSync,
                                                 base::Unretained(this)));
 #endif
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupGetStoredAccounts",
       base::BindRepeating(&PeopleHandler::HandleGetStoredAccounts,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncSetupStartSyncingWithEmail",
       base::BindRepeating(&PeopleHandler::HandleStartSyncingWithEmail,
                           base::Unretained(this)));
-  web_ui()->RegisterDeprecatedMessageCallback(
+  web_ui()->RegisterMessageCallback(
       "SyncStartKeyRetrieval",
       base::BindRepeating(&PeopleHandler::HandleStartKeyRetrieval,
                           base::Unretained(this)));
@@ -366,10 +374,10 @@
 }
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
-void PeopleHandler::OnDidClosePage(const base::ListValue* args) {
+void PeopleHandler::OnDidClosePage(base::Value::ConstListView args) {
   // Don't mark setup as complete if "didAbort" is true, or if authentication
   // is still needed.
-  if (!args->GetList()[0].GetBool() && !IsProfileAuthNeededOrHasErrors()) {
+  if (!args[0].GetBool() && !IsProfileAuthNeededOrHasErrors()) {
     MarkFirstSetupComplete();
   }
 
@@ -382,7 +390,7 @@
              : nullptr;
 }
 
-void PeopleHandler::HandleSetDatatypes(const base::ListValue* args) {
+void PeopleHandler::HandleSetDatatypes(base::Value::ConstListView args) {
   SyncConfigInfo configuration;
   const base::Value* callback_id = nullptr;
   ParseConfigurationArguments(args, &configuration, &callback_id);
@@ -418,10 +426,10 @@
     ProfileMetrics::LogProfileSyncInfo(ProfileMetrics::SYNC_CHOOSE);
 }
 
-void PeopleHandler::HandleGetStoredAccounts(const base::ListValue* args) {
+void PeopleHandler::HandleGetStoredAccounts(base::Value::ConstListView args) {
   AllowJavascript();
-  CHECK_EQ(1U, args->GetList().size());
-  const base::Value& callback_id = args->GetList()[0];
+  CHECK_EQ(1U, args.size());
+  const base::Value& callback_id = args[0];
 
   ResolveJavascriptCallback(callback_id, GetStoredAccountsList());
 }
@@ -448,7 +456,7 @@
 #endif
   // Guest mode does not have a primary account (or an IdentityManager).
   if (profile_->IsGuestSession())
-    return base::ListValue();
+    return base::Value(base::Value::Type::LIST);
   // If DICE is disabled for this profile or unsupported on this platform (e.g.
   // Chrome OS), then show only the primary account, whether or not that account
   // has consented to sync.
@@ -460,11 +468,12 @@
   return accounts;
 }
 
-void PeopleHandler::HandleStartSyncingWithEmail(const base::ListValue* args) {
+void PeopleHandler::HandleStartSyncingWithEmail(
+    base::Value::ConstListView args) {
 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
   DCHECK(AccountConsistencyModeManager::IsDiceEnabledForProfile(profile_));
-  const base::Value& email = args->GetList()[0];
-  const base::Value& is_default_promo_account = args->GetList()[1];
+  const base::Value& email = args[0];
+  const base::Value& is_default_promo_account = args[1];
 
   Browser* browser =
       chrome::FindBrowserWithWebContents(web_ui()->GetWebContents());
@@ -483,8 +492,9 @@
 #endif
 }
 
-void PeopleHandler::HandleSetEncryptionPassphrase(const base::ListValue* args) {
-  const base::Value& callback_id = args->GetList()[0];
+void PeopleHandler::HandleSetEncryptionPassphrase(
+    base::Value::ConstListView args) {
+  const base::Value& callback_id = args[0];
 
   // Check the SyncService is up and running before retrieving SyncUserSettings,
   // which contains the encryption-related APIs.
@@ -499,7 +509,7 @@
   syncer::SyncUserSettings* sync_user_settings =
       GetSyncService()->GetUserSettings();
 
-  const std::string& passphrase = args->GetList()[1].GetString();
+  const std::string& passphrase = args[1].GetString();
   bool successfully_set = false;
   if (passphrase.empty()) {
     successfully_set = false;
@@ -523,8 +533,9 @@
   ResolveJavascriptCallback(callback_id, base::Value(successfully_set));
 }
 
-void PeopleHandler::HandleSetDecryptionPassphrase(const base::ListValue* args) {
-  const base::Value& callback_id = args->GetList()[0];
+void PeopleHandler::HandleSetDecryptionPassphrase(
+    base::Value::ConstListView args) {
+  const base::Value& callback_id = args[0];
 
   // Check the SyncService is up and running before retrieving SyncUserSettings,
   // which contains the encryption-related APIs.
@@ -539,7 +550,7 @@
   syncer::SyncUserSettings* sync_user_settings =
       GetSyncService()->GetUserSettings();
 
-  const std::string& passphrase = args->GetList()[1].GetString();
+  const std::string& passphrase = args[1].GetString();
   bool successfully_set = false;
   if (!passphrase.empty() && sync_user_settings->IsPassphraseRequired()) {
     successfully_set = sync_user_settings->SetDecryptionPassphrase(passphrase);
@@ -551,7 +562,7 @@
   ResolveJavascriptCallback(callback_id, base::Value(successfully_set));
 }
 
-void PeopleHandler::HandleShowSyncSetupUI(const base::ListValue* args) {
+void PeopleHandler::HandleShowSyncSetupUI(base::Value::ConstListView args) {
   AllowJavascript();
 
   syncer::SyncService* service = GetSyncService();
@@ -583,17 +594,17 @@
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 // On ChromeOS, we need to sign out the user session to fix an auth error, so
 // the user goes through the real signin flow to generate a new auth token.
-void PeopleHandler::HandleAttemptUserExit(const base::ListValue* args) {
+void PeopleHandler::HandleAttemptUserExit(base::Value::ConstListView args) {
   DVLOG(1) << "Signing out the user to fix a sync error.";
   chrome::AttemptUserExit();
 }
 
-void PeopleHandler::HandleTurnOnSync(const base::ListValue* args) {
+void PeopleHandler::HandleTurnOnSync(base::Value::ConstListView args) {
   // TODO(https://crbug.com/1050677)
   NOTIMPLEMENTED();
 }
 
-void PeopleHandler::HandleTurnOffSync(const base::ListValue* args) {
+void PeopleHandler::HandleTurnOffSync(base::Value::ConstListView args) {
   auto* identity_manager = IdentityManagerFactory::GetForProfile(profile_);
   DCHECK(identity_manager->HasPrimaryAccount(ConsentLevel::kSync));
   DCHECK(signin_util::IsUserSignoutAllowedForProfile(profile_));
@@ -605,7 +616,7 @@
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
-void PeopleHandler::HandleStartSignin(const base::ListValue* args) {
+void PeopleHandler::HandleStartSignin(base::Value::ConstListView args) {
   AllowJavascript();
 
   // Should only be called if the user is not already signed in, has a auth
@@ -619,10 +630,10 @@
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
-void PeopleHandler::HandleSignout(const base::ListValue* args) {
+void PeopleHandler::HandleSignout(base::Value::ConstListView args) {
   bool delete_profile = false;
-  if (args->GetList()[0].is_bool())
-    delete_profile = args->GetList()[0].GetBool();
+  if (args[0].is_bool())
+    delete_profile = args[0].GetBool();
   base::FilePath profile_path = profile_->GetPath();
 
   if (!signin_util::IsUserSignoutAllowedForProfile(profile_)) {
@@ -667,7 +678,7 @@
   }
 }
 
-void PeopleHandler::HandlePauseSync(const base::ListValue* args) {
+void PeopleHandler::HandlePauseSync(base::Value::ConstListView args) {
   DCHECK(AccountConsistencyModeManager::IsDiceEnabledForProfile(profile_));
   auto* identity_manager = IdentityManagerFactory::GetForProfile(profile_);
   DCHECK(identity_manager->HasPrimaryAccount(signin::ConsentLevel::kSync));
@@ -678,7 +689,7 @@
 }
 #endif  // BUILDFLAG(ENABLE_DICE_SUPPORT)
 
-void PeopleHandler::HandleStartKeyRetrieval(const base::ListValue* args) {
+void PeopleHandler::HandleStartKeyRetrieval(base::Value::ConstListView args) {
   Browser* browser =
       chrome::FindBrowserWithWebContents(web_ui()->GetWebContents());
   if (!browser)
@@ -688,26 +699,24 @@
       browser, syncer::TrustedVaultUserActionTriggerForUMA::kSettings);
 }
 
-void PeopleHandler::HandleGetSyncStatus(const base::ListValue* args) {
+void PeopleHandler::HandleGetSyncStatus(base::Value::ConstListView args) {
   AllowJavascript();
 
-  CHECK_EQ(1U, args->GetList().size());
-  const base::Value& callback_id = args->GetList()[0];
+  CHECK_EQ(1U, args.size());
+  const base::Value& callback_id = args[0];
 
-  ResolveJavascriptCallback(callback_id, *GetSyncStatusDictionary());
+  ResolveJavascriptCallback(callback_id, GetSyncStatusDictionary());
 }
 
-void PeopleHandler::HandleSyncPrefsDispatch(const base::ListValue* args) {
+void PeopleHandler::HandleSyncPrefsDispatch(base::Value::ConstListView args) {
   AllowJavascript();
   PushSyncPrefs();
 }
 
-void PeopleHandler::HandleOfferTrustedVaultOptInDispatch(
-    const base::ListValue* args) {
+void PeopleHandler::HandleTrustedVaultBannerStateDispatch(
+    base::Value::ConstListView args) {
   AllowJavascript();
-  FireWebUIListener(
-      kOfferTrustedVaultOptInChangedEvent,
-      base::Value(syncer::ShouldOfferTrustedVaultOptIn(GetSyncService())));
+  PushTrustedVaultBannerState();
 }
 
 void PeopleHandler::CloseSyncSetup() {
@@ -822,8 +831,7 @@
   // MaybeMarkSyncConfiguring() then.
   MaybeMarkSyncConfiguring();
   PushSyncPrefs();
-  FireWebUIListener(kOfferTrustedVaultOptInChangedEvent,
-                    base::Value(ShouldOfferTrustedVaultOptIn(sync_service)));
+  PushTrustedVaultBannerState();
 }
 
 void PeopleHandler::BeforeUnloadDialogCancelled() {
@@ -838,17 +846,16 @@
       base::UserMetricsAction("Signin_Signin_CancelAbortAdvancedSyncSettings"));
 }
 
-std::unique_ptr<base::DictionaryValue> PeopleHandler::GetSyncStatusDictionary()
-    const {
-  std::unique_ptr<base::DictionaryValue> sync_status(new base::DictionaryValue);
+base::Value PeopleHandler::GetSyncStatusDictionary() const {
+  base::Value sync_status(base::Value::Type::DICTIONARY);
   if (profile_->IsGuestSession()) {
     // Cannot display signin status when running in guest mode on chromeos
     // because there is no IdentityManager.
     return sync_status;
   }
 
-  sync_status->SetBoolean("supervisedUser", profile_->IsChild());
-  sync_status->SetBoolean("childUser", profile_->IsChild());
+  sync_status.SetBoolKey("supervisedUser", profile_->IsChild());
+  sync_status.SetBoolKey("childUser", profile_->IsChild());
 
   auto* identity_manager = IdentityManagerFactory::GetForProfile(profile_);
   DCHECK(identity_manager);
@@ -862,7 +869,7 @@
     // If there is no one logged in or if the profile name is empty then the
     // domain name is empty. This happens in browser tests.
     if (!username.empty())
-      sync_status->SetString("domain", gaia::ExtractDomainName(username));
+      sync_status.SetStringKey("domain", gaia::ExtractDomainName(username));
   }
 
   // This is intentionally not using GetSyncService(), in order to access more
@@ -872,8 +879,8 @@
   bool disallowed_by_policy =
       service && service->HasDisableReason(
                      syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY);
-  sync_status->SetBoolean("syncSystemEnabled", (service != nullptr));
-  sync_status->SetBoolean(
+  sync_status.SetBoolKey("syncSystemEnabled", (service != nullptr));
+  sync_status.SetBoolKey(
       "firstSetupInProgress",
       service && !disallowed_by_policy && service->IsSetupInProgress() &&
           !service->GetUserSettings()->IsFirstSetupComplete() &&
@@ -882,34 +889,34 @@
   const SyncStatusLabels status_labels = GetSyncStatusLabels(profile_);
   // TODO(crbug.com/1027467): Consider unifying some of the fields below to
   // avoid redundancy.
-  sync_status->SetString("statusText",
-                         GetStringUTF16(status_labels.status_label_string_id));
-  sync_status->SetString("statusActionText",
-                         GetStringUTF16(status_labels.button_string_id));
-  sync_status->SetBoolean(
+  sync_status.SetStringKey(
+      "statusText", GetStringUTF16(status_labels.status_label_string_id));
+  sync_status.SetStringKey("statusActionText",
+                           GetStringUTF16(status_labels.button_string_id));
+  sync_status.SetBoolKey(
       "hasError",
       status_labels.message_type == SyncStatusMessageType::kSyncError ||
           status_labels.message_type ==
               SyncStatusMessageType::kPasswordsOnlySyncError);
-  sync_status->SetBoolean("hasPasswordsOnlyError",
-                          status_labels.message_type ==
-                              SyncStatusMessageType::kPasswordsOnlySyncError);
-  sync_status->SetString("statusAction",
-                         GetSyncErrorAction(status_labels.action_type));
+  sync_status.SetBoolKey("hasPasswordsOnlyError",
+                         status_labels.message_type ==
+                             SyncStatusMessageType::kPasswordsOnlySyncError);
+  sync_status.SetStringKey("statusAction",
+                           GetSyncErrorAction(status_labels.action_type));
 
-  sync_status->SetBoolean("managed", disallowed_by_policy);
+  sync_status.SetBoolKey("managed", disallowed_by_policy);
   // TODO(crbug.com/1171279): audit js usages of |disabled| and |signedIn|
   // fields, update it to use the right field, comments around and conditions
   // here. Perhaps removal of one of these to fields is possible.
-  sync_status->SetBoolean("disabled", !service || disallowed_by_policy);
+  sync_status.SetBoolKey("disabled", !service || disallowed_by_policy);
   // NOTE: This means signed-in for *sync*. It can be false when the user is
   // signed-in to the content area or to the browser.
-  sync_status->SetBoolean("signedIn", identity_manager->HasPrimaryAccount(
-                                          signin::ConsentLevel::kSync));
-  sync_status->SetString("signedInUsername",
-                         signin_ui_util::GetAuthenticatedUsername(profile_));
-  sync_status->SetBoolean("hasUnrecoverableError",
-                          service && service->HasUnrecoverableError());
+  sync_status.SetBoolKey("signedIn", identity_manager->HasPrimaryAccount(
+                                         signin::ConsentLevel::kSync));
+  sync_status.SetStringKey("signedInUsername",
+                           signin_ui_util::GetAuthenticatedUsername(profile_));
+  sync_status.SetBoolKey("hasUnrecoverableError",
+                         service && service->HasUnrecoverableError());
   return sync_status;
 }
 
@@ -937,7 +944,7 @@
   //                   epoch); undefined if the time is unknown or no explicit
   //                   passphrase is set.
   //
-  base::DictionaryValue args;
+  base::Value args(base::Value::Type::DICTIONARY);
 
   syncer::SyncUserSettings* sync_user_settings = service->GetUserSettings();
   // Tell the UI layer which data types are registered/enabled by the user.
@@ -947,45 +954,59 @@
       sync_user_settings->GetSelectedTypes();
   for (syncer::UserSelectableType type : syncer::UserSelectableTypeSet::All()) {
     const std::string type_name = syncer::GetUserSelectableTypeName(type);
-    args.SetBoolean(type_name + "Registered", registered_types.Has(type));
-    args.SetBoolean(type_name + "Synced", selected_types.Has(type));
+    args.SetBoolKey(type_name + "Registered", registered_types.Has(type));
+    args.SetBoolKey(type_name + "Synced", selected_types.Has(type));
   }
-  args.SetBoolean("syncAllDataTypes",
+  args.SetBoolKey("syncAllDataTypes",
                   sync_user_settings->IsSyncEverythingEnabled());
-  args.SetBoolean(
+  args.SetBoolKey(
       "paymentsIntegrationEnabled",
       autofill::prefs::IsPaymentsIntegrationEnabled(profile_->GetPrefs()));
-  args.SetBoolean("encryptAllData",
+  args.SetBoolKey("encryptAllData",
                   sync_user_settings->IsEncryptEverythingEnabled());
-  args.SetBoolean("customPassphraseAllowed",
+  args.SetBoolKey("customPassphraseAllowed",
                   sync_user_settings->IsCustomPassphraseAllowed());
 
   // We call IsPassphraseRequired() here, instead of calling
   // IsPassphraseRequiredForPreferredDataTypes(), because we want to show the
   // passphrase UI even if no encrypted data types are enabled.
-  args.SetBoolean("passphraseRequired",
+  args.SetBoolKey("passphraseRequired",
                   sync_user_settings->IsPassphraseRequired());
 
   // Same as above, we call IsTrustedVaultKeyRequired() here instead of.
   // IsTrustedVaultKeyRequiredForPreferredDataTypes().
-  args.SetBoolean("trustedVaultKeysRequired",
+  args.SetBoolKey("trustedVaultKeysRequired",
                   sync_user_settings->IsTrustedVaultKeyRequired());
 
   base::Time passphrase_time = sync_user_settings->GetExplicitPassphraseTime();
   if (!passphrase_time.is_null()) {
-    args.SetString("explicitPassphraseTime",
-                   base::TimeFormatShortDate(passphrase_time));
+    args.SetStringKey("explicitPassphraseTime",
+                      base::TimeFormatShortDate(passphrase_time));
   }
 
   FireWebUIListener("sync-prefs-changed", args);
 }
 
+void PeopleHandler::PushTrustedVaultBannerState() {
+  syncer::SyncService* sync_service = GetSyncService();
+  auto state = TrustedVaultBannerState::kNotShown;
+  if (sync_service && sync_service->GetUserSettings()->GetPassphraseType() ==
+                          syncer::PassphraseType::kTrustedVaultPassphrase) {
+    state = TrustedVaultBannerState::kOptedIn;
+  } else if (syncer::ShouldOfferTrustedVaultOptIn(sync_service)) {
+    state = TrustedVaultBannerState::kOfferOptIn;
+  }
+
+  FireWebUIListener(kTrustedVaultBannerStateChangedEvent,
+                    base::Value(static_cast<int>(state)));
+}
+
 LoginUIService* PeopleHandler::GetLoginUIService() const {
   return LoginUIServiceFactory::GetForProfile(profile_);
 }
 
 void PeopleHandler::UpdateSyncStatus() {
-  FireWebUIListener("sync-status-changed", *GetSyncStatusDictionary());
+  FireWebUIListener("sync-status-changed", GetSyncStatusDictionary());
 }
 
 void PeopleHandler::MarkFirstSetupComplete() {
diff --git a/chrome/browser/ui/webui/settings/people_handler.h b/chrome/browser/ui/webui/settings/people_handler.h
index de88939..c383b08 100644
--- a/chrome/browser/ui/webui/settings/people_handler.h
+++ b/chrome/browser/ui/webui/settings/people_handler.h
@@ -143,7 +143,7 @@
 
   // Returns a newly created dictionary with a number of properties that
   // correspond to the status of sync.
-  std::unique_ptr<base::DictionaryValue> GetSyncStatusDictionary() const;
+  base::Value GetSyncStatusDictionary() const;
 
   // Helper routine that gets the SyncService associated with the parent
   // profile.
@@ -153,27 +153,28 @@
   LoginUIService* GetLoginUIService() const;
 
   // Callbacks from the page.
-  void HandleGetProfileInfo(const base::ListValue* args);
-  void OnDidClosePage(const base::ListValue* args);
-  void HandleSetDatatypes(const base::ListValue* args);
-  void HandleSetEncryptionPassphrase(const base::ListValue* args);
-  void HandleSetDecryptionPassphrase(const base::ListValue* args);
-  void HandleShowSyncSetupUI(const base::ListValue* args);
-  void HandleSyncPrefsDispatch(const base::ListValue* args);
-  void HandleOfferTrustedVaultOptInDispatch(const base::ListValue* args);
+  void HandleGetProfileInfo(base::Value::ConstListView args);
+  void OnDidClosePage(base::Value::ConstListView args);
+  void HandleSetDatatypes(base::Value::ConstListView args);
+  void HandleSetEncryptionPassphrase(base::Value::ConstListView args);
+  void HandleSetDecryptionPassphrase(base::Value::ConstListView args);
+  void HandleShowSyncSetupUI(base::Value::ConstListView args);
+  void HandleSyncPrefsDispatch(base::Value::ConstListView args);
+  void HandleTrustedVaultBannerStateDispatch(base::Value::ConstListView args);
+
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-  void HandleAttemptUserExit(const base::ListValue* args);
-  void HandleTurnOnSync(const base::ListValue* args);
-  void HandleTurnOffSync(const base::ListValue* args);
+  void HandleAttemptUserExit(base::Value::ConstListView args);
+  void HandleTurnOnSync(base::Value::ConstListView args);
+  void HandleTurnOffSync(base::Value::ConstListView args);
 #else
-  void HandleStartSignin(const base::ListValue* args);
+  void HandleStartSignin(base::Value::ConstListView args);
 #endif
 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
-  void HandleSignout(const base::ListValue* args);
-  void HandlePauseSync(const base::ListValue* args);
+  void HandleSignout(base::Value::ConstListView args);
+  void HandlePauseSync(base::Value::ConstListView args);
 #endif
-  void HandleStartKeyRetrieval(const base::ListValue* args);
-  void HandleGetSyncStatus(const base::ListValue* args);
+  void HandleStartKeyRetrieval(base::Value::ConstListView args);
+  void HandleGetSyncStatus(base::Value::ConstListView args);
 
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
   // Displays the GAIA login form.
@@ -185,13 +186,15 @@
       signin_metrics::AccessPoint access_point);
 #endif
 
-  void HandleGetStoredAccounts(const base::ListValue* args);
-  void HandleStartSyncingWithEmail(const base::ListValue* args);
+  void HandleGetStoredAccounts(base::Value::ConstListView args);
+  void HandleStartSyncingWithEmail(base::Value::ConstListView args);
   base::Value GetStoredAccountsList();
 
   // Pushes the updated sync prefs to JavaScript.
   void PushSyncPrefs();
 
+  void PushTrustedVaultBannerState();
+
   // Sends the current sync status to the JavaScript WebUI code.
   void UpdateSyncStatus();
 
diff --git a/chrome/browser/ui/webui/settings/people_handler_unittest.cc b/chrome/browser/ui/webui/settings/people_handler_unittest.cc
index ade8543..1dc7b8d 100644
--- a/chrome/browser/ui/webui/settings/people_handler_unittest.cc
+++ b/chrome/browser/ui/webui/settings/people_handler_unittest.cc
@@ -84,33 +84,33 @@
 // to HandleSetDatatypes().
 std::string GetConfiguration(SyncAllDataConfig sync_all,
                              syncer::UserSelectableTypeSet types) {
-  base::DictionaryValue result;
-  result.SetBoolean("syncAllDataTypes", sync_all == SYNC_ALL_DATA);
+  base::Value result(base::Value::Type::DICTIONARY);
+  result.SetBoolKey("syncAllDataTypes", sync_all == SYNC_ALL_DATA);
   // Add all of our data types.
-  result.SetBoolean("appsSynced", types.Has(syncer::UserSelectableType::kApps));
-  result.SetBoolean("autofillSynced",
+  result.SetBoolKey("appsSynced", types.Has(syncer::UserSelectableType::kApps));
+  result.SetBoolKey("autofillSynced",
                     types.Has(syncer::UserSelectableType::kAutofill));
-  result.SetBoolean("bookmarksSynced",
+  result.SetBoolKey("bookmarksSynced",
                     types.Has(syncer::UserSelectableType::kBookmarks));
-  result.SetBoolean("extensionsSynced",
+  result.SetBoolKey("extensionsSynced",
                     types.Has(syncer::UserSelectableType::kExtensions));
-  result.SetBoolean("passwordsSynced",
+  result.SetBoolKey("passwordsSynced",
                     types.Has(syncer::UserSelectableType::kPasswords));
-  result.SetBoolean("preferencesSynced",
+  result.SetBoolKey("preferencesSynced",
                     types.Has(syncer::UserSelectableType::kPreferences));
-  result.SetBoolean("readingListSynced",
+  result.SetBoolKey("readingListSynced",
                     types.Has(syncer::UserSelectableType::kReadingList));
-  result.SetBoolean("tabsSynced", types.Has(syncer::UserSelectableType::kTabs));
-  result.SetBoolean("themesSynced",
+  result.SetBoolKey("tabsSynced", types.Has(syncer::UserSelectableType::kTabs));
+  result.SetBoolKey("themesSynced",
                     types.Has(syncer::UserSelectableType::kThemes));
-  result.SetBoolean("typedUrlsSynced",
+  result.SetBoolKey("typedUrlsSynced",
                     types.Has(syncer::UserSelectableType::kHistory));
-  result.SetBoolean("wifiConfigurationsSynced",
+  result.SetBoolKey("wifiConfigurationsSynced",
                     types.Has(syncer::UserSelectableType::kWifiConfigurations));
-  result.SetBoolean("paymentsIntegrationEnabled", false);
+  result.SetBoolKey("paymentsIntegrationEnabled", false);
 
   // Reading list doesn't really have a UI and is supported on ios only.
-  result.SetBoolean("readingListSynced",
+  result.SetBoolKey("readingListSynced",
                     types.Has(syncer::UserSelectableType::kReadingList));
 
   std::string args;
@@ -121,21 +121,19 @@
 // Checks whether the passed |dictionary| contains a |key| with the given
 // |expected_value|. This will fail if the key isn't present, even if
 // |expected_value| is false.
-void ExpectHasBoolKey(const base::DictionaryValue* dictionary,
+void ExpectHasBoolKey(const base::Value::DictStorage& dictionary,
                       const std::string& key,
                       bool expected_value) {
-  absl::optional<bool> actual_value = dictionary->FindBoolKey(key);
-  // The comparison with |expected_valued| could be done in a single
-  // expectation, but the semantics would be confusing since the values are
-  // booleans.
-  ASSERT_TRUE(actual_value.has_value()) << "No value found for " << key;
-  EXPECT_EQ(expected_value, *actual_value) << "Mismatch found for " << key;
+  ASSERT_TRUE(dictionary.contains(key)) << "No value found for " << key;
+  ASSERT_TRUE(dictionary.at(key).is_bool()) << key << " has wrong type";
+  EXPECT_EQ(expected_value, dictionary.at(key).GetBool())
+      << "Mismatch found for " << key;
 }
 
 // Checks to make sure that the values stored in |dictionary| match the values
 // expected by the showSyncSetupPage() JS function for a given set of data
 // types.
-void CheckConfigDataTypeArguments(const base::DictionaryValue* dictionary,
+void CheckConfigDataTypeArguments(const base::Value::DictStorage& dictionary,
                                   SyncAllDataConfig config,
                                   syncer::UserSelectableTypeSet types) {
   ExpectHasBoolKey(dictionary, "syncAllDataTypes", config == SYNC_ALL_DATA);
@@ -327,28 +325,32 @@
 
   // Must be called at most once per test to check if a sync-prefs-changed
   // event happened. Returns the single fired value.
-  const base::DictionaryValue* ExpectSyncPrefsChanged() {
+  base::Value::DictStorage ExpectSyncPrefsChanged() {
     std::vector<const base::Value*> args =
         GetAllFiredValuesForEventName("sync-prefs-changed");
     EXPECT_EQ(1U, args.size());
     EXPECT_NE(args[0], nullptr);
     EXPECT_TRUE(args[0]->is_dict());
-    const base::DictionaryValue* dictionary;
-    args[0]->GetAsDictionary(&dictionary);
-    return dictionary;
+    // base::Value has no GetDict(), so copy then TakeDict(). Alternatively,
+    // this could return iterators over the key-value pairs, via GetDictItems().
+    // But looking up a key over key-value pairs is more unpleasant than using
+    // contains() and the [] operator on the map.
+    return args[0]->Clone().TakeDict();
   }
 
   // Must be called at most once per test to check if a sync-status-changed
   // event happened. Returns the single fired value.
-  const base::DictionaryValue* ExpectSyncStatusChanged() {
+  base::Value::DictStorage ExpectSyncStatusChanged() {
     std::vector<const base::Value*> args =
         GetAllFiredValuesForEventName("sync-status-changed");
     EXPECT_EQ(1U, args.size());
     EXPECT_NE(args[0], nullptr);
     EXPECT_TRUE(args[0]->is_dict());
-    const base::DictionaryValue* dictionary;
-    args[0]->GetAsDictionary(&dictionary);
-    return dictionary;
+    // base::Value has no GetDict(), so copy then TakeDict(). Alternatively,
+    // this could return iterators over the key-value pairs, via GetDictItems().
+    // But looking up a key over key-value pairs is more unpleasant than using
+    // contains() and the [] operator on the map.
+    return args[0]->Clone().TakeDict();
   }
 
   void NotifySyncStateChanged() {
@@ -388,8 +390,7 @@
       .WillByDefault(Return(false));
   // Ensure that the user is not signed in before calling |HandleStartSignin()|.
   identity_test_env()->ClearPrimaryAccount();
-  base::Value list_args(base::Value::Type::LIST);
-  handler_->HandleStartSignin(&base::Value::AsListValue(list_args));
+  handler_->HandleStartSignin(base::Value::ConstListView());
 
   // Sync setup hands off control to the gaia login tab.
   EXPECT_EQ(
@@ -425,7 +426,7 @@
   // engine will try to download control data types (e.g encryption info), but
   // that won't finish for this test as we're simulating cancelling while the
   // spinner is showing.
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   EXPECT_EQ(
       handler_.get(),
@@ -459,7 +460,7 @@
               SetSyncRequested(true));
   SetDefaultExpectationsForConfigPage();
 
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   // No data is sent yet, because the engine is not initialized.
   EXPECT_EQ(0U, web_ui_.call_data().size());
@@ -474,7 +475,7 @@
   // Updates for the sync status, sync prefs and trusted vault opt-in are sent.
   EXPECT_EQ(3U, web_ui_.call_data().size());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   ExpectHasBoolKey(dictionary, "syncAllDataTypes", true);
   ExpectHasBoolKey(dictionary, "customPassphraseAllowed", true);
   ExpectHasBoolKey(dictionary, "encryptAllData", false);
@@ -500,7 +501,7 @@
   EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
               SetSyncRequested(true));
   SetDefaultExpectationsForConfigPage();
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   // Sync engine becomes active, so |handler_| is notified.
   NotifySyncStateChanged();
@@ -542,7 +543,7 @@
                 Return(syncer::SyncService::TransportState::INITIALIZING));
       });
 
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   // Since the engine is not initialized yet, no data should be sent.
   EXPECT_EQ(0U, web_ui_.call_data().size());
@@ -575,7 +576,7 @@
                 Return(syncer::SyncService::TransportState::CONFIGURING));
       });
 
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
   // Since the engine was already running, we should *not* get a spinner - all
   // the necessary values are already available.
   ExpectSyncPrefsChanged();
@@ -625,7 +626,7 @@
   ON_CALL(*mock_sync_service_->GetMockUserSettings(), IsFirstSetupComplete())
       .WillByDefault(Return(false));
   // Open the web UI.
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   ASSERT_FALSE(handler_->is_configuring_sync());
 }
@@ -638,7 +639,7 @@
   ON_CALL(*mock_sync_service_->GetMockUserSettings(), IsFirstSetupComplete())
       .WillByDefault(Return(false));
   // Open the web UI.
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   ASSERT_FALSE(handler_->is_configuring_sync());
 }
@@ -658,7 +659,7 @@
   SetupInitializedSyncService();
   EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
               SetSelectedTypes(true, _));
-  handler_->HandleSetDatatypes(&base::Value::AsListValue(list_args));
+  handler_->HandleSetDatatypes(list_args.GetList());
 
   ExpectPageStatusResponse(PeopleHandler::kConfigurePageStatus);
 }
@@ -687,7 +688,7 @@
   base::Value list_args(base::Value::Type::LIST);
   list_args.Append(kTestCallbackId);
   list_args.Append("correct_passphrase");
-  handler_->HandleSetDecryptionPassphrase(&base::Value::AsListValue(list_args));
+  handler_->HandleSetDecryptionPassphrase(list_args.GetList());
 
   ExpectSetPassphraseSuccess(true);
 }
@@ -715,7 +716,7 @@
   base::Value list_args(base::Value::Type::LIST);
   list_args.Append(kTestCallbackId);
   list_args.Append("custom_passphrase");
-  handler_->HandleSetEncryptionPassphrase(&base::Value::AsListValue(list_args));
+  handler_->HandleSetEncryptionPassphrase(list_args.GetList());
 
   ExpectSetPassphraseSuccess(true);
 }
@@ -744,7 +745,7 @@
   base::Value list_args(base::Value::Type::LIST);
   list_args.Append(kTestCallbackId);
   list_args.Append("invalid_passphrase");
-  handler_->HandleSetDecryptionPassphrase(&base::Value::AsListValue(list_args));
+  handler_->HandleSetDecryptionPassphrase(list_args.GetList());
 
   ExpectSetPassphraseSuccess(false);
 }
@@ -773,7 +774,7 @@
   base::Value list_args(base::Value::Type::LIST);
   list_args.Append(kTestCallbackId);
   list_args.Append("");
-  handler_->HandleSetEncryptionPassphrase(&base::Value::AsListValue(list_args));
+  handler_->HandleSetEncryptionPassphrase(list_args.GetList());
 
   ExpectSetPassphraseSuccess(false);
 }
@@ -800,7 +801,7 @@
     EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
                 SetSelectedTypes(false, type_to_set));
 
-    handler_->HandleSetDatatypes(&base::Value::AsListValue(list_args));
+    handler_->HandleSetDatatypes(list_args.GetList());
     ExpectPageStatusResponse(PeopleHandler::kConfigurePageStatus);
     Mock::VerifyAndClearExpectations(mock_sync_service_);
   }
@@ -822,7 +823,7 @@
   SetupInitializedSyncService();
   EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
               SetSelectedTypes(false, GetAllTypes()));
-  handler_->HandleSetDatatypes(&base::Value::AsListValue(list_args));
+  handler_->HandleSetDatatypes(list_args.GetList());
 
   ExpectPageStatusResponse(PeopleHandler::kConfigurePageStatus);
 }
@@ -850,7 +851,7 @@
   // Only the registered types are selected.
   EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(),
               SetSelectedTypes(/*sync_everything=*/false, registered_types));
-  handler_->HandleSetDatatypes(&base::Value::AsListValue(list_args));
+  handler_->HandleSetDatatypes(list_args.GetList());
 }
 
 TEST_F(PeopleHandlerTest, ShowSyncSetup) {
@@ -864,7 +865,7 @@
   SetupInitializedSyncService();
   // This should display the sync setup dialog (not login).
   SetDefaultExpectationsForConfigPage();
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   ExpectSyncPrefsChanged();
 }
@@ -880,9 +881,9 @@
   SetupInitializedSyncService();
   SetDefaultExpectationsForConfigPage();
   // This should display the sync setup dialog (not login).
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   ExpectHasBoolKey(dictionary, "syncAllDataTypes", true);
   ExpectHasBoolKey(dictionary, "appsRegistered", true);
   ExpectHasBoolKey(dictionary, "autofillRegistered", true);
@@ -913,9 +914,9 @@
   ON_CALL(*mock_sync_service_->GetMockUserSettings(), IsSyncEverythingEnabled())
       .WillByDefault(Return(false));
   // This should display the sync setup dialog (not login).
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   CheckConfigDataTypeArguments(dictionary, CHOOSE_WHAT_TO_SYNC, GetAllTypes());
 }
 
@@ -938,13 +939,13 @@
         .WillByDefault(Return(types));
 
     // This should display the sync setup dialog (not login).
-    handler_->HandleShowSyncSetupUI(nullptr);
+    handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
     // Close the config overlay.
     LoginUIServiceFactory::GetForProfile(profile())->LoginUIClosed(
         handler_.get());
 
-    const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+    base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
     CheckConfigDataTypeArguments(dictionary, CHOOSE_WHAT_TO_SYNC, types);
     Mock::VerifyAndClearExpectations(mock_sync_service_);
     // Clean up so we can loop back to display the dialog again.
@@ -967,13 +968,14 @@
   ON_CALL(*mock_sync_service_->GetMockUserSettings(), GetPassphraseType())
       .WillByDefault(Return(syncer::PassphraseType::kFrozenImplicitPassphrase));
 
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   ExpectHasBoolKey(dictionary, "passphraseRequired", true);
-  ASSERT_TRUE(dictionary->FindStringKey("explicitPassphraseTime"));
+  ASSERT_TRUE(dictionary.contains("explicitPassphraseTime"));
+  ASSERT_TRUE(dictionary.at("explicitPassphraseTime").is_string());
   EXPECT_EQ(base::UTF16ToUTF8(base::TimeFormatShortDate(passphrase_time)),
-            *dictionary->FindStringKey("explicitPassphraseTime"));
+            dictionary.at("explicitPassphraseTime").GetString());
 }
 
 TEST_F(PeopleHandlerTest, ShowSetupCustomPassphraseRequired) {
@@ -991,13 +993,14 @@
   ON_CALL(*mock_sync_service_->GetMockUserSettings(), GetPassphraseType())
       .WillByDefault(Return(syncer::PassphraseType::kCustomPassphrase));
 
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   ExpectHasBoolKey(dictionary, "passphraseRequired", true);
-  ASSERT_TRUE(dictionary->FindStringKey("explicitPassphraseTime"));
+  ASSERT_TRUE(dictionary.contains("explicitPassphraseTime"));
+  ASSERT_TRUE(dictionary.at("explicitPassphraseTime").is_string());
   EXPECT_EQ(base::UTF16ToUTF8(base::TimeFormatShortDate(passphrase_time)),
-            *dictionary->FindStringKey("explicitPassphraseTime"));
+            dictionary.at("explicitPassphraseTime").GetString());
 }
 
 TEST_F(PeopleHandlerTest, ShowSetupTrustedVaultKeysRequired) {
@@ -1012,12 +1015,12 @@
   SetDefaultExpectationsForConfigPage();
 
   // This should display the sync setup dialog (not login).
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   ExpectHasBoolKey(dictionary, "passphraseRequired", false);
   ExpectHasBoolKey(dictionary, "trustedVaultKeysRequired", true);
-  EXPECT_FALSE(dictionary->FindStringKey("explicitPassphraseTime"));
+  EXPECT_FALSE(dictionary.contains("explicitPassphraseTime"));
 }
 
 TEST_F(PeopleHandlerTest, ShowSetupEncryptAll) {
@@ -1035,9 +1038,9 @@
       .WillByDefault(Return(true));
 
   // This should display the sync setup dialog (not login).
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   ExpectHasBoolKey(dictionary, "encryptAllData", true);
 }
 
@@ -1056,9 +1059,9 @@
       .WillByDefault(Return(false));
 
   // This should display the sync setup dialog (not login).
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
-  const base::DictionaryValue* dictionary = ExpectSyncPrefsChanged();
+  base::Value::DictStorage dictionary = ExpectSyncPrefsChanged();
   ExpectHasBoolKey(dictionary, "encryptAllData", false);
   ExpectHasBoolKey(dictionary, "customPassphraseAllowed", false);
 }
@@ -1087,7 +1090,7 @@
   base::Value list_args(base::Value::Type::LIST);
   list_args.Append(kTestCallbackId);
   list_args.Append("passphrase123");
-  handler_->HandleSetEncryptionPassphrase(&base::Value::AsListValue(list_args));
+  handler_->HandleSetEncryptionPassphrase(list_args.GetList());
 
   ExpectSetPassphraseSuccess(false);
 }
@@ -1116,7 +1119,7 @@
   base::Value list_args(base::Value::Type::LIST);
   list_args.Append(kTestCallbackId);
   list_args.Append("passphrase123");
-  handler_->HandleSetEncryptionPassphrase(&base::Value::AsListValue(list_args));
+  handler_->HandleSetEncryptionPassphrase(list_args.GetList());
 
   ExpectSetPassphraseSuccess(false);
 }
@@ -1127,7 +1130,7 @@
   // Sync starts out fully enabled.
   SetDefaultExpectationsForConfigPage();
 
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   // Now sync gets reset from the dashboard (the user clicked the "Manage synced
   // data" link), which results in the sync-requested and first-setup-complete
@@ -1171,9 +1174,9 @@
         NotifySyncStateChanged();
       });
 
-  base::ListValue did_abort;
+  base::Value did_abort(base::Value::Type::LIST);
   did_abort.Append(base::Value(false));
-  handler_->OnDidClosePage(&did_abort);
+  handler_->OnDidClosePage(did_abort.GetList());
 }
 
 TEST_F(PeopleHandlerTest, DashboardClearWhileSettingsOpen_ConfirmLater) {
@@ -1182,7 +1185,7 @@
   // Sync starts out fully enabled.
   SetDefaultExpectationsForConfigPage();
 
-  handler_->HandleShowSyncSetupUI(nullptr);
+  handler_->HandleShowSyncSetupUI(base::Value::ConstListView());
 
   // Now sync gets reset from the dashboard (the user clicked the "Manage synced
   // data" link), which results in the sync-requested and first-setup-complete
@@ -1242,9 +1245,9 @@
         });
   }
 
-  base::ListValue did_abort;
+  base::Value did_abort(base::Value::Type::LIST);
   did_abort.Append(base::Value(false));
-  handler_->OnDidClosePage(&did_abort);
+  handler_->OnDidClosePage(did_abort.GetList());
 }
 
 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
@@ -1311,9 +1314,9 @@
   ASSERT_TRUE(identity_manager()->HasPrimaryAccount(ConsentLevel::kSync));
 
   CreatePeopleHandler();
-  handler_->HandleTurnOffSync(nullptr);
+  handler_->HandleTurnOffSync(base::Value::ConstListView());
   EXPECT_FALSE(identity_manager()->HasPrimaryAccount(ConsentLevel::kSync));
-  const base::DictionaryValue* status = ExpectSyncStatusChanged();
+  base::Value::DictStorage status = ExpectSyncStatusChanged();
   ExpectHasBoolKey(status, "signedIn", false);
 }
 
diff --git a/chrome/browser/ui/webui/settings/privacy_sandbox_handler.cc b/chrome/browser/ui/webui/settings/privacy_sandbox_handler.cc
index 6bac83b..6fa4874 100644
--- a/chrome/browser/ui/webui/settings/privacy_sandbox_handler.cc
+++ b/chrome/browser/ui/webui/settings/privacy_sandbox_handler.cc
@@ -5,8 +5,8 @@
 #include "chrome/browser/ui/webui/settings/privacy_sandbox_handler.h"
 
 #include "chrome/browser/federated_learning/floc_id_provider_factory.h"
-#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
-#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 
 namespace settings {
@@ -20,23 +20,22 @@
 constexpr char kCanReset[] = "canReset";
 
 base::Value GetFlocIdInformation(Profile* profile) {
-  auto* privacy_sandbox_settings =
-      PrivacySandboxSettingsFactory::GetForProfile(profile);
-  DCHECK(privacy_sandbox_settings);
+  auto* privacy_sandbox_service =
+      PrivacySandboxServiceFactory::GetForProfile(profile);
+  DCHECK(privacy_sandbox_service);
 
   base::DictionaryValue floc_id_information;
   floc_id_information.SetKey(
       kTrialStatus,
-      base::Value(privacy_sandbox_settings->GetFlocStatusForDisplay()));
+      base::Value(privacy_sandbox_service->GetFlocStatusForDisplay()));
   floc_id_information.SetKey(
-      kCohort, base::Value(privacy_sandbox_settings->GetFlocIdForDisplay()));
+      kCohort, base::Value(privacy_sandbox_service->GetFlocIdForDisplay()));
   floc_id_information.SetKey(
       kNextUpdate,
-      base::Value(PrivacySandboxSettings::GetFlocIdNextUpdateForDisplay(
-          federated_learning::FlocIdProviderFactory::GetForProfile(profile),
-          profile->GetPrefs(), base::Time::Now())));
+      base::Value(privacy_sandbox_service->GetFlocIdNextUpdateForDisplay(
+          base::Time::Now())));
   floc_id_information.SetKey(
-      kCanReset, base::Value(privacy_sandbox_settings->IsFlocIdResettable()));
+      kCanReset, base::Value(privacy_sandbox_service->IsFlocIdResettable()));
 
   return std::move(floc_id_information);
 }
@@ -67,11 +66,11 @@
   CHECK_EQ(0U, args->GetList().size());
   AllowJavascript();
 
-  auto* privacy_sandbox_settings = PrivacySandboxSettingsFactory::GetForProfile(
-      Profile::FromWebUI(web_ui()));
-  DCHECK(privacy_sandbox_settings);
+  auto* privacy_sandbox_service =
+      PrivacySandboxServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()));
+  DCHECK(privacy_sandbox_service);
 
-  privacy_sandbox_settings->ResetFlocId(/*user_initiated=*/true);
+  privacy_sandbox_service->ResetFlocId(/*user_initiated=*/true);
 
   // The identifier will have been immediately invalidated in response to
   // the clearing action, so synchronously retrieving the FLoC ID will retrieve
diff --git a/chrome/browser/ui/webui/settings/privacy_sandbox_handler_unittest.cc b/chrome/browser/ui/webui/settings/privacy_sandbox_handler_unittest.cc
index 05cb99c..cfe0578 100644
--- a/chrome/browser/ui/webui/settings/privacy_sandbox_handler_unittest.cc
+++ b/chrome/browser/ui/webui/settings/privacy_sandbox_handler_unittest.cc
@@ -6,8 +6,11 @@
 
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/federated_learning/floc_id_provider_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_test_util.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/federated_learning/floc_id.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
@@ -21,30 +24,23 @@
 
 constexpr char kCallbackId[] = "test-callback-id";
 
-class MockPrivacySandboxObserver : public PrivacySandboxSettings::Observer {
- public:
-  MOCK_METHOD1(OnFlocDataAccessibleSinceUpdated, void(bool));
-};
-
 // Confirms that the |floc_id| dictionary provided matches the current FLoC
 // information for |profile|.
 void ValidateFlocId(const base::Value* floc_id, Profile* profile) {
-  auto* privacy_sandbox_settings =
-      PrivacySandboxSettingsFactory::GetForProfile(profile);
-  auto* floc_id_provider =
-      federated_learning::FlocIdProviderFactory::GetForProfile(profile);
+  auto* privacy_sandbox_service =
+      PrivacySandboxServiceFactory::GetForProfile(profile);
 
   ASSERT_TRUE(floc_id->is_dict());
   EXPECT_EQ(
-      base::UTF16ToUTF8(privacy_sandbox_settings->GetFlocStatusForDisplay()),
+      base::UTF16ToUTF8(privacy_sandbox_service->GetFlocStatusForDisplay()),
       *floc_id->FindStringPath("trialStatus"));
-  EXPECT_EQ(base::UTF16ToUTF8(privacy_sandbox_settings->GetFlocIdForDisplay()),
+  EXPECT_EQ(base::UTF16ToUTF8(privacy_sandbox_service->GetFlocIdForDisplay()),
             *floc_id->FindStringPath("cohort"));
   EXPECT_EQ(
-      base::UTF16ToUTF8(PrivacySandboxSettings::GetFlocIdNextUpdateForDisplay(
-          floc_id_provider, profile->GetPrefs(), base::Time::Now())),
+      base::UTF16ToUTF8(privacy_sandbox_service->GetFlocIdNextUpdateForDisplay(
+          base::Time::Now())),
       *floc_id->FindStringPath("nextUpdate"));
-  EXPECT_EQ(privacy_sandbox_settings->IsFlocIdResettable(),
+  EXPECT_EQ(privacy_sandbox_service->IsFlocIdResettable(),
             floc_id->FindBoolPath("canReset"));
 }
 
@@ -115,7 +111,7 @@
 
   // Observers of the PrivacySandboxSettings service should be informed that
   // the FLoC ID was reset.
-  MockPrivacySandboxObserver observer;
+  privacy_sandbox_test_util::MockPrivacySandboxObserver observer;
   privacy_sandbox_settings()->AddObserver(&observer);
   EXPECT_CALL(observer, OnFlocDataAccessibleSinceUpdated(true));
 
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
index 0a1a959..932cc7f 100644
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -23,8 +23,8 @@
 #include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/obsolete_system/obsolete_system.h"
-#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
-#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service.h"
+#include "chrome/browser/privacy_sandbox/privacy_sandbox_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_shortcut_manager.h"
 #include "chrome/browser/signin/account_consistency_mode_manager.h"
@@ -1096,9 +1096,11 @@
        IDS_SETTINGS_PASSWORDS_MANAGE_PASSWORDS_PLAINTEXT},
       {"savedToThisDeviceOnly",
        IDS_SETTINGS_PAYMENTS_SAVED_TO_THIS_DEVICE_ONLY},
-      {"trustedVaultOptInLabel", IDS_SETTINGS_TRUSTED_VAULT_OPT_IN_LABEL},
-      {"trustedVaultOptInSubLabel",
-       IDS_SETTINGS_TRUSTED_VAULT_OPT_IN_SUB_LABEL},
+      {"trustedVaultBannerLabel", IDS_SETTINGS_TRUSTED_VAULT_BANNER_LABEL},
+      {"trustedVaultBannerSubLabelOfferOptIn",
+       IDS_SETTINGS_TRUSTED_VAULT_BANNER_SUB_LABEL_OFFER_OPT_IN},
+      {"trustedVaultBannerSubLabelOptedIn",
+       IDS_SETTINGS_TRUSTED_VAULT_BANNER_SUB_LABEL_OPTED_IN},
       {"noSearchResults", IDS_SEARCH_NO_RESULTS},
       {"searchResultsPlural", IDS_SEARCH_RESULTS_PLURAL},
       {"searchResultsSingular", IDS_SEARCH_RESULTS_SINGULAR},
@@ -1591,7 +1593,7 @@
   // one provided by the Privacy Sandbox service, and one with a URL
   // replacement based on a feature parameter.
   std::u16string floc_explanation =
-      PrivacySandboxSettingsFactory::GetForProfile(profile)
+      PrivacySandboxServiceFactory::GetForProfile(profile)
           ->GetFlocDescriptionForDisplay() +
       u" " +  // Whitespace is a valid separator w.r.t l10n.
       l10n_util::GetStringFUTF16(IDS_SETTINGS_PRIVACY_SANDBOX_FLOC_TRIAL_ACTIVE,
@@ -1602,7 +1604,7 @@
   // profile, and so the relevant string can be injected here, rather than
   // fetched dynamically from JS.
   html_source->AddString("privacySandboxPageFlocResetExplanation",
-                         PrivacySandboxSettingsFactory::GetForProfile(profile)
+                         PrivacySandboxServiceFactory::GetForProfile(profile)
                              ->GetFlocResetExplanationForDisplay());
 }
 
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc
index e841bbb..e0de740 100644
--- a/chrome/browser/ui/webui/settings/settings_ui.cc
+++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -416,7 +416,9 @@
             : nullptr,
         android_sms_service ? android_sms_service->android_sms_app_manager()
                             : nullptr,
-        eche_app_manager ? eche_app_manager->GetAppsAccessManager() : nullptr));
+        eche_app_manager ? eche_app_manager->GetAppsAccessManager() : nullptr,
+        phone_hub_manager ? phone_hub_manager->GetCameraRollManager()
+                          : nullptr));
   }
 }
 #else   // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/vr/chrome_xr_integration_client.cc b/chrome/browser/vr/chrome_xr_integration_client.cc
index c2429e8..054234e 100644
--- a/chrome/browser/vr/chrome_xr_integration_client.cc
+++ b/chrome/browser/vr/chrome_xr_integration_client.cc
@@ -24,35 +24,14 @@
 #include "device/vr/android/gvr/gvr_device_provider.h"
 #if BUILDFLAG(ENABLE_ARCORE)
 #include "chrome/browser/android/vr/ar_jni_headers/ArCompositorDelegateProviderImpl_jni.h"
-#include "components/infobars/content/content_infobar_manager.h"
 #include "components/webxr/android/ar_compositor_delegate_provider.h"
 #include "components/webxr/android/arcore_device_provider.h"
 #include "components/webxr/android/arcore_install_helper.h"
-#include "components/webxr/android/xr_install_helper_delegate.h"
 #endif  // ENABLE_ARCORE
 #endif  // OS_WIN/OS_ANDROID
 
 namespace vr {
 
-// Note that this doesn't technically need to be behind this buildflag, but
-// ArCore is the only thing that's using it right now.
-#if BUILDFLAG(ENABLE_ARCORE)
-class ChromeXrInstallHelperDelegate : public webxr::XrInstallHelperDelegate {
- public:
-  ChromeXrInstallHelperDelegate() = default;
-  ~ChromeXrInstallHelperDelegate() override = default;
-
-  ChromeXrInstallHelperDelegate(const ChromeXrInstallHelperDelegate&) = delete;
-  ChromeXrInstallHelperDelegate& operator=(
-      const ChromeXrInstallHelperDelegate&) = delete;
-
-  infobars::InfoBarManager* GetInfoBarManager(
-      content::WebContents* web_contents) override {
-    return infobars::ContentInfoBarManager::FromWebContents(web_contents);
-  }
-};
-#endif
-
 std::unique_ptr<content::XrInstallHelper>
 ChromeXrIntegrationClient::GetInstallHelper(
     device::mojom::XRDeviceId device_id) {
@@ -62,8 +41,7 @@
       return std::make_unique<GvrInstallHelper>();
 #if BUILDFLAG(ENABLE_ARCORE)
     case device::mojom::XRDeviceId::ARCORE_DEVICE_ID:
-      return std::make_unique<webxr::ArCoreInstallHelper>(
-          std::make_unique<ChromeXrInstallHelperDelegate>());
+      return std::make_unique<webxr::ArCoreInstallHelper>();
 #endif  // ENABLE_ARCORE
 #endif  // OS_ANDROID
     default:
diff --git a/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc b/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc
index 3adfa54d..f67000f8 100644
--- a/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc
+++ b/chrome/browser/web_applications/externally_managed_app_manager_impl_browsertest.cc
@@ -18,6 +18,7 @@
 #include "chrome/browser/web_applications/os_integration_manager.h"
 #include "chrome/browser/web_applications/test/web_app_install_test_utils.h"
 #include "chrome/browser/web_applications/test/web_app_registration_waiter.h"
+#include "chrome/browser/web_applications/test/web_app_test_utils.h"
 #include "chrome/browser/web_applications/web_app.h"
 #include "chrome/browser/web_applications/web_app_constants.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
@@ -63,22 +64,13 @@
 
   void CheckServiceWorkerStatus(const GURL& url,
                                 content::ServiceWorkerCapability status) {
-    base::RunLoop run_loop;
     std::unique_ptr<content::WebContents> web_contents =
         content::WebContents::Create(
             content::WebContents::CreateParams(profile()));
-    content::ServiceWorkerContext* service_worker_context =
-        web_contents->GetBrowserContext()
-            ->GetStoragePartition(web_contents->GetSiteInstance())
-            ->GetServiceWorkerContext();
-    service_worker_context->CheckHasServiceWorker(
-        url, blink::StorageKey(url::Origin::Create(url)),
-        base::BindLambdaForTesting(
-            [&run_loop, status](content::ServiceWorkerCapability capability) {
-              CHECK_EQ(status, capability);
-              run_loop.Quit();
-            }));
-    run_loop.Run();
+    content::StoragePartition* storage_partition =
+        web_contents->GetBrowserContext()->GetStoragePartition(
+            web_contents->GetSiteInstance());
+    test::CheckServiceWorkerStatus(url, storage_partition, status);
   }
 
   absl::optional<InstallResultCode> result_code_;
diff --git a/chrome/browser/web_applications/isolated_app_browsertest.cc b/chrome/browser/web_applications/isolated_app_browsertest.cc
index ca2823a0..c489c8c 100644
--- a/chrome/browser/web_applications/isolated_app_browsertest.cc
+++ b/chrome/browser/web_applications/isolated_app_browsertest.cc
@@ -6,8 +6,12 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/web_applications/web_app_controller_browsertest.h"
+#include "chrome/browser/web_applications/test/service_worker_registration_waiter.h"
 #include "chrome/browser/web_applications/test/web_app_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/service_worker_context.h"
+#include "content/public/browser/storage_partition.h"
+#include "content/public/browser/web_contents.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
@@ -181,4 +185,33 @@
   EXPECT_TRUE(non_app_cookies[2].empty());
 }
 
+class IsolatedAppBrowserServiceWorkerTest : public IsolatedAppBrowserTest {
+ protected:
+  content::RenderFrameHost* InstallIsolatedAppAndWaitForServiceWorker(
+      const GURL& app_url) {
+    InstallIsolatedApp(kAppHost);
+
+    auto* app_window = NavigateInNewWindowAndAwaitInstallabilityCheck(app_url);
+    auto* web_contents = app_window->tab_strip_model()->GetActiveWebContents();
+    auto* app_frame = web_contents->GetMainFrame();
+    EXPECT_NE(default_storage_partition(), app_frame->GetStoragePartition());
+
+    ServiceWorkerRegistrationWaiter waiter(app_frame->GetStoragePartition(),
+                                           app_url);
+    waiter.AwaitRegistration();
+
+    return app_frame;
+  }
+};
+
+IN_PROC_BROWSER_TEST_F(IsolatedAppBrowserServiceWorkerTest,
+                       ServiceWorkerPartitioned) {
+  const GURL app_url =
+      https_server()->GetURL(kAppHost, "/banners/isolated/service_worker.html");
+
+  auto* app_frame = InstallIsolatedAppAndWaitForServiceWorker(app_url);
+  test::CheckServiceWorkerStatus(
+      app_url, app_frame->GetStoragePartition(),
+      content::ServiceWorkerCapability::SERVICE_WORKER_WITH_FETCH_HANDLER);
+}
 }  // namespace web_app
diff --git a/chrome/browser/web_applications/manifest_update_manager_browsertest.cc b/chrome/browser/web_applications/manifest_update_manager_browsertest.cc
index 64f4b65..51655d1 100644
--- a/chrome/browser/web_applications/manifest_update_manager_browsertest.cc
+++ b/chrome/browser/web_applications/manifest_update_manager_browsertest.cc
@@ -41,7 +41,6 @@
 #include "chrome/browser/web_applications/web_app_constants.h"
 #include "chrome/browser/web_applications/web_app_file_handler_registration.h"
 #include "chrome/browser/web_applications/web_app_helpers.h"
-#include "chrome/browser/web_applications/web_app_icon_generator.h"
 #include "chrome/browser/web_applications/web_app_install_finalizer.h"
 #include "chrome/browser/web_applications/web_app_install_manager.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
@@ -82,19 +81,8 @@
 
 namespace {
 
-// Note: When adding new tests and any bitmap resources they may require, please
-// make sure the filename reflects the actual pixel size of the bitmap and that
-// it includes a reference to the color of the bitmap. Avoid multi-color
-// images unless they are necessary to test something. For example, if you need
-// to add a blue square image with edge size 4096, the filename should be
-// something like 4096x4096-blue.png and the RGB value of the blue color used
-// should match SK_ColorBLUE. This ensures that the test can be validated just
-// by reading the code and avoids looking up pixel colors in image editors or
-// in defined constants with non-descriptive names.
-
 constexpr char kUpdateHistogramName[] = "Webapp.Update.ManifestUpdateResult";
 
-// DEPRECATED: Do not use in new tests (see note above).
 constexpr char kInstallableIconList[] = R"(
   [
     {
@@ -106,8 +94,8 @@
 )";
 constexpr SkColor kInstallableIconTopLeftColor =
     SkColorSetRGB(0x15, 0x96, 0xE0);
+constexpr SkColor kBasicIconTopLeftColor = SkColorSetRGB(0x55, 0x55, 0x55);
 
-// DEPRECATED: Do not use in new tests (see note above).
 constexpr char kAnotherInstallableIconList[] = R"(
   [
     {
@@ -117,8 +105,6 @@
     }
   ]
 )";
-constexpr SkColor kAnotherInstallableIconTopLeftColor =
-    SkColorSetRGB(0x5C, 0x5C, 0x5C);
 
 constexpr char kAnotherShortcutsItemName[] = "Timeline";
 constexpr char16_t kAnotherShortcutsItemName16[] = u"Timeline";
@@ -177,13 +163,8 @@
   ]
 )";
 
-constexpr int kUnimportantIconSize = 192;
-constexpr int kUnimportantIconSize2 = 512;
-
-// Used to specify on which platform each shortcut size is supported.
-constexpr int kAll = 0;
-constexpr int kWin = 1;
-constexpr int kLinux = 2;  // Note: Also includes ChromeOS.
+constexpr SkColor kAnotherInstallableIconTopLeftColor =
+    SkColorSetRGB(0x5C, 0x5C, 0x5C);
 
 ManifestUpdateManager& GetManifestUpdateManager(Browser* browser) {
   return WebAppProvider::GetForTest(browser->profile())
@@ -271,68 +252,20 @@
   }
 
   void OnShortcutInfoRetrieved(std::unique_ptr<ShortcutInfo> shortcut_info) {
-    updated_colors_ = {};
     if (shortcut_info) {
-      gfx::ImageFamily::const_iterator it;
-      // Loop through each size in the ImgFamily and add it to the color map.
-      for (it = shortcut_info->favicon.begin();
-           it != shortcut_info->favicon.end(); ++it) {
-        updated_colors_.emplace_back(it->Size().width(),
-                                     it->AsBitmap().getColor(0, 0));
-      }
+      updated_shortcut_top_left_color_ =
+          shortcut_info->favicon.begin()->AsBitmap().getColor(0, 0);
     }
     shortcut_run_loop_->Quit();
   }
 
-  bool RuleAppliesToThisOS(int os) {
-#if defined(OS_WIN)
-    return os == kWin || os == kAll;
-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
-    return os == kLinux || os == kAll;
-#else
-    return os == kAll;
-#endif
-  }
-
-  // Confirms that the platform shortcut for this app (with id `app_id`)
-  // contains an icon family that matches exactly the color specified in
-  // `expectations`. The latter is a vector mapping (size, os) to an SK_Color
-  // value.
-  void ConfirmShortcutColors(
-      const AppId& app_id,
-      const std::vector<std::pair<std::pair<int, int>, SkColor>>&
-          expectations) {
+  void CheckShortcutInfoUpdated(const AppId& app_id, SkColor top_left_color) {
     GetProvider().os_integration_manager().GetShortcutInfoForApp(
         app_id, base::BindOnce(
                     &ManifestUpdateManagerBrowserTest::OnShortcutInfoRetrieved,
                     base::Unretained(this)));
     shortcut_run_loop_->Run();
-
-    std::vector<std::pair<int /* size */, SkColor>>::const_iterator
-        actual_size_to_color_it = updated_colors_.begin();
-    for (auto expected_size_to_color_it : expectations) {
-      int expected_size = expected_size_to_color_it.first.first;
-      int platform = expected_size_to_color_it.first.second;
-      SkColor expected_color = expected_size_to_color_it.second;
-
-      if (!RuleAppliesToThisOS(platform)) {
-        SCOPED_TRACE(::testing::Message() << "Skipping size " << expected_size
-                                          << " (wrong os: " << platform << ")");
-        continue;
-      }
-
-      int actual_size = actual_size_to_color_it->first;
-      SkColor actual_color = actual_size_to_color_it->second;
-      EXPECT_EQ(expected_size, actual_size);
-      EXPECT_EQ(expected_color, actual_color)
-          << "Size " << expected_size << ": Expecting ARGB " << std::hex
-          << expected_color << " but found " << std::hex << actual_color;
-      ++actual_size_to_color_it;
-    }
-
-    ASSERT_EQ(updated_colors_.end(), actual_size_to_color_it)
-        << "Unexpected shortcut size: " << actual_size_to_color_it->first
-        << ": ARGB " << std::hex << actual_size_to_color_it->second;
+    EXPECT_EQ(updated_shortcut_top_left_color_, top_left_color);
   }
 
   std::unique_ptr<net::test_server::HttpResponse> RequestHandlerOverride(
@@ -516,10 +449,7 @@
  private:
   base::test::ScopedFeatureList scoped_feature_list_;
   absl::optional<base::RunLoop> shortcut_run_loop_;
-  // A vector mapping image sizes to shortcut colors. Note that the top left
-  // pixel color for each size is used as the representation color for that
-  // size, even if the image is multi-colored.
-  std::vector<std::pair<int, SkColor>> updated_colors_;
+  absl::optional<SkColor> updated_shortcut_top_left_color_;
   OsIntegrationManager::ScopedSuppressForTesting os_hooks_suppress_;
 };
 
@@ -899,12 +829,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
 
   // Updated theme_color loses any transparency.
   EXPECT_EQ(GetProvider().registrar().GetAppThemeColor(app_id),
@@ -1000,12 +925,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
   EXPECT_EQ(GetProvider().registrar().GetAppThemeColor(app_id), SK_ColorRED);
   // The app name must not change without user confirmation.
   EXPECT_EQ(GetProvider().registrar().GetAppShortName(app_id), "App name 1");
@@ -1030,12 +950,7 @@
             ManifestUpdateResult::kAppUpToDate);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 0);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
 }
 
 IN_PROC_BROWSER_TEST_F(ManifestUpdateManagerBrowserTest,
@@ -1057,14 +972,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id,
-                        {{{32, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{48, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{64, kWin}, kAnotherInstallableIconTopLeftColor},
-                         {{96, kWin}, kAnotherInstallableIconTopLeftColor},
-                         {{128, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{256, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{512, kLinux}, kAnotherInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kAnotherInstallableIconTopLeftColor);
 }
 
 IN_PROC_BROWSER_TEST_F(ManifestUpdateManagerBrowserTest,
@@ -1089,12 +997,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
 
   // Policy installed apps should continue to be not uninstallable by the user
   // after updating.
@@ -1121,12 +1024,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
   EXPECT_EQ(GetProvider().registrar().GetAppScope(app_id),
             http_server_.GetURL("/"));
 }
@@ -1152,26 +1050,10 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-
   // The icon should be updated only if product icon updates are allowed.
-  if (IsUpdateDialogEnabled()) {
-    ConfirmShortcutColors(
-        app_id, {{{32, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{48, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{64, kWin}, kAnotherInstallableIconTopLeftColor},
-                 {{96, kWin}, kAnotherInstallableIconTopLeftColor},
-                 {{128, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{256, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{512, kLinux}, kAnotherInstallableIconTopLeftColor}});
-  } else {
-    ConfirmShortcutColors(app_id,
-                          {{{32, kAll}, kInstallableIconTopLeftColor},
-                           {{48, kAll}, kInstallableIconTopLeftColor},
-                           {{64, kWin}, kInstallableIconTopLeftColor},
-                           {{96, kWin}, kInstallableIconTopLeftColor},
-                           {{128, kAll}, kInstallableIconTopLeftColor},
-                           {{256, kAll}, kInstallableIconTopLeftColor}});
-  }
+  CheckShortcutInfoUpdated(app_id, IsUpdateDialogEnabled()
+                                       ? kAnotherInstallableIconTopLeftColor
+                                       : kInstallableIconTopLeftColor);
   EXPECT_EQ(GetProvider().registrar().GetAppScope(app_id),
             http_server_.GetURL("/"));
 }
@@ -1198,14 +1080,7 @@
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
   // The icon should have updated.
-  ConfirmShortcutColors(app_id,
-                        {{{32, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{48, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{64, kWin}, kAnotherInstallableIconTopLeftColor},
-                         {{96, kWin}, kAnotherInstallableIconTopLeftColor},
-                         {{128, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{256, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{512, kLinux}, kAnotherInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kAnotherInstallableIconTopLeftColor);
   EXPECT_EQ(GetProvider().registrar().GetAppScope(app_id),
             http_server_.GetURL("/"));
 }
@@ -1249,27 +1124,14 @@
               ManifestUpdateResult::kAppUpdated);
     histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                         ManifestUpdateResult::kAppUpdated, 1);
-    ConfirmShortcutColors(
-        app_id, {{{32, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{48, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{64, kWin}, kAnotherInstallableIconTopLeftColor},
-                 {{96, kWin}, kAnotherInstallableIconTopLeftColor},
-                 {{128, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{256, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{512, kLinux}, kAnotherInstallableIconTopLeftColor}});
+    CheckShortcutInfoUpdated(app_id, kAnotherInstallableIconTopLeftColor);
   } else {
     // The icon should not have updated.
     EXPECT_EQ(GetResultAfterPageLoad(GetAppURL()),
               ManifestUpdateResult::kAppUpToDate);
     histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                         ManifestUpdateResult::kAppUpdated, 0);
-    ConfirmShortcutColors(app_id,
-                          {{{32, kAll}, kInstallableIconTopLeftColor},
-                           {{48, kAll}, kInstallableIconTopLeftColor},
-                           {{64, kWin}, kInstallableIconTopLeftColor},
-                           {{96, kWin}, kInstallableIconTopLeftColor},
-                           {{128, kAll}, kInstallableIconTopLeftColor},
-                           {{256, kAll}, kInstallableIconTopLeftColor}});
+    CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
   }
 }
 
@@ -1334,12 +1196,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
   EXPECT_EQ(GetProvider().registrar().GetAppDisplayMode(app_id),
             DisplayMode::kStandalone);
 }
@@ -1399,12 +1256,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
 
   std::vector<DisplayMode> app_display_mode_override =
       GetProvider().registrar().GetAppDisplayModeOverride(app_id);
@@ -1439,12 +1291,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
 
   std::vector<DisplayMode> app_display_mode_override =
       GetProvider().registrar().GetAppDisplayModeOverride(app_id);
@@ -1479,12 +1326,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
 
   std::vector<DisplayMode> app_display_mode_override =
       GetProvider().registrar().GetAppDisplayModeOverride(app_id);
@@ -1519,12 +1361,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
 
   std::vector<DisplayMode> app_display_mode_override =
       GetProvider().registrar().GetAppDisplayModeOverride(app_id);
@@ -1596,7 +1433,7 @@
       "display": "standalone",
       "icons": [
         {
-          "src": "/banners/192x192-green.png?ignore",
+          "src": "/web_apps/basic-192.png?ignore",
           "sizes": "192x192",
           "type": "image/png"
         }
@@ -1606,15 +1443,15 @@
   OverrideManifest(kManifest, {});
   AppId app_id = InstallWebApp();
 
-  // Replace the contents of 192x192-green.png with 192x192-red.png without
-  // changing the URL.
+  // Replace the contents of basic-192.png with blue-192.png without changing
+  // the URL.
   content::URLLoaderInterceptor url_interceptor(base::BindLambdaForTesting(
       [this](content::URLLoaderInterceptor::RequestParams* params)
           -> bool /*intercepted*/ {
         if (params->url_request.url ==
-            http_server_.GetURL("/banners/192x192-green.png?ignore")) {
+            http_server_.GetURL("/web_apps/basic-192.png?ignore")) {
           content::URLLoaderInterceptor::WriteResponse(
-              "chrome/test/data/banners/192x192-red.png", params->client.get());
+              "chrome/test/data/web_apps/blue-192.png", params->client.get());
           return true;
         }
         return false;
@@ -1624,15 +1461,9 @@
             ManifestUpdateResult::kAppUpToDate);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 0);
+  CheckShortcutInfoUpdated(app_id, kBasicIconTopLeftColor);
 
-  ConfirmShortcutColors(app_id, {{{32, kAll}, SK_ColorGREEN},
-                                 {{48, kAll}, SK_ColorGREEN},
-                                 {{64, kWin}, SK_ColorGREEN},
-                                 {{96, kWin}, SK_ColorGREEN},
-                                 {{128, kAll}, SK_ColorGREEN},
-                                 {{256, kAll}, SK_ColorGREEN}});
-
-  EXPECT_EQ(ReadAppIconPixel(app_id, /*size=*/192), SK_ColorGREEN);
+  EXPECT_EQ(ReadAppIconPixel(app_id, /*size=*/192), SK_ColorBLACK);
 }
 
 IN_PROC_BROWSER_TEST_F(ManifestUpdateManagerBrowserTest,
@@ -1657,7 +1488,7 @@
 }
 
 IN_PROC_BROWSER_TEST_P(ManifestUpdateManagerBrowserTest_UpdateDialog,
-                       CheckUpdateOfGeneratedIcons_SyncFailure) {
+                       CheckDoesNotUpdateGeneratedIcons_SyncFailure) {
   // The first "name" character is used to generate icons. Make it like a space
   // to probe the background color at the center. Spaces are trimmed by the
   // parser.
@@ -1717,44 +1548,23 @@
 
   ManifestUpdateResult update_result = GetResultAfterPageLoad(GetAppURL());
 
+  EXPECT_EQ(update_result, ManifestUpdateResult::kAppUpToDate);
+
+  histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
+                                      ManifestUpdateResult::kAppUpdated, 0);
+
   ASSERT_EQ(web_app, GetProvider().registrar().GetAppById(app_id));
-
-  if (IsUpdateDialogEnabled()) {
-    EXPECT_EQ(update_result, ManifestUpdateResult::kAppUpdated);
-
-    histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
-                                        ManifestUpdateResult::kAppUpdated, 1);
-
-    // An actual icon was downloaded, so icon should not be autogenerated.
-    EXPECT_FALSE(web_app->is_generated_icon());
-    // A non-generated icon was added, so expect 7 instead of 6.
-    EXPECT_EQ(7u, web_app->downloaded_icon_sizes(IconPurpose::ANY).size());
-    // Icon should have turned blue.
-    for (SquareSizePx size_px :
-         web_app->downloaded_icon_sizes(IconPurpose::ANY)) {
-      SCOPED_TRACE(size_px);
-      EXPECT_EQ(color_utils::SkColorToRgbaString(ReadAppIconPixel(
-                    app_id, size_px, /*x=*/size_px / 2, /*y=*/size_px / 2)),
-                color_utils::SkColorToRgbaString(SK_ColorBLUE));
-    }
-  } else {
-    EXPECT_EQ(update_result, ManifestUpdateResult::kAppUpToDate);
-
-    histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
-                                        ManifestUpdateResult::kAppUpdated, 0);
-
-    // Still autogenerated icons, no change.
-    EXPECT_TRUE(web_app->is_generated_icon());
-    // Not 7u, no non-generated icon added.
-    EXPECT_EQ(6u, web_app->downloaded_icon_sizes(IconPurpose::ANY).size());
-    // Not SK_ColorBLUE for blue-192.png.
-    for (SquareSizePx size_px :
-         web_app->downloaded_icon_sizes(IconPurpose::ANY)) {
-      SCOPED_TRACE(size_px);
-      EXPECT_EQ(color_utils::SkColorToRgbaString(ReadAppIconPixel(
-                    app_id, size_px, /*x=*/size_px / 2, /*y=*/size_px / 2)),
-                color_utils::SkColorToRgbaString(SK_ColorDKGRAY));
-    }
+  // Still autogenerated icons, no change.
+  EXPECT_TRUE(web_app->is_generated_icon());
+  // Not 7u, no non-generated icon added.
+  EXPECT_EQ(6u, web_app->downloaded_icon_sizes(IconPurpose::ANY).size());
+  // Not SK_ColorBLUE for blue-192.png.
+  for (SquareSizePx size_px :
+       web_app->downloaded_icon_sizes(IconPurpose::ANY)) {
+    SCOPED_TRACE(size_px);
+    EXPECT_EQ(color_utils::SkColorToRgbaString(ReadAppIconPixel(
+                  app_id, size_px, /*x=*/size_px / 2, /*y=*/size_px / 2)),
+              color_utils::SkColorToRgbaString(SK_ColorDKGRAY));
   }
 }
 
@@ -1793,12 +1603,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
   EXPECT_EQ(GetProvider().registrar().GetAppCaptureLinks(app_id),
             blink::mojom::CaptureLinks::kNewClient);
 }
@@ -1834,12 +1639,7 @@
             ManifestUpdateResult::kAppUpdated);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kInstallableIconTopLeftColor},
-                                 {{48, kAll}, kInstallableIconTopLeftColor},
-                                 {{64, kWin}, kInstallableIconTopLeftColor},
-                                 {{96, kWin}, kInstallableIconTopLeftColor},
-                                 {{128, kAll}, kInstallableIconTopLeftColor},
-                                 {{256, kAll}, kInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kInstallableIconTopLeftColor);
   EXPECT_EQ(GetProvider().registrar().GetAppById(app_id)->launch_handler(),
             (LaunchHandler{LaunchHandler::RouteTo::kExistingClient,
                            LaunchHandler::NavigateExistingClient::kNever}));
@@ -2681,24 +2481,9 @@
   EXPECT_EQ(GetResultAfterPageLoad(GetAppURL()),
             ManifestUpdateResult::kAppUpdated);
   // The icon should be updated only if product icon updates are allowed.
-  if (IsUpdateDialogEnabled()) {
-    ConfirmShortcutColors(
-        app_id, {{{32, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{48, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{64, kWin}, kAnotherInstallableIconTopLeftColor},
-                 {{96, kWin}, kAnotherInstallableIconTopLeftColor},
-                 {{128, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{256, kAll}, kAnotherInstallableIconTopLeftColor},
-                 {{512, kLinux}, kAnotherInstallableIconTopLeftColor}});
-  } else {
-    ConfirmShortcutColors(app_id,
-                          {{{32, kAll}, kInstallableIconTopLeftColor},
-                           {{48, kAll}, kInstallableIconTopLeftColor},
-                           {{64, kWin}, kInstallableIconTopLeftColor},
-                           {{96, kWin}, kInstallableIconTopLeftColor},
-                           {{128, kAll}, kInstallableIconTopLeftColor},
-                           {{256, kAll}, kInstallableIconTopLeftColor}});
-  }
+  CheckShortcutInfoUpdated(app_id, IsUpdateDialogEnabled()
+                                       ? kAnotherInstallableIconTopLeftColor
+                                       : kInstallableIconTopLeftColor);
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
 }
@@ -2866,12 +2651,7 @@
                                         ManifestUpdateResult::kAppUpdated, 1);
     // The icon should have changed, as the file has been updated (but the url
     // is the same).
-    ConfirmShortcutColors(app_id, {{{32, kAll}, SK_ColorRED},
-                                   {{48, kAll}, SK_ColorRED},
-                                   {{64, kWin}, SK_ColorRED},
-                                   {{96, kWin}, SK_ColorRED},
-                                   {{128, kAll}, SK_ColorRED},
-                                   {{256, kAll}, SK_ColorRED}});
+    CheckShortcutInfoUpdated(app_id, SK_ColorRED);
 
     EXPECT_EQ(ReadAppIconPixel(app_id, /*size=*/256), SK_ColorRED);
   } else {
@@ -2879,12 +2659,7 @@
               ManifestUpdateResult::kAppUpToDate);
     histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                         ManifestUpdateResult::kAppUpdated, 0);
-    ConfirmShortcutColors(app_id, {{{32, kAll}, SK_ColorGREEN},
-                                   {{48, kAll}, SK_ColorGREEN},
-                                   {{64, kWin}, SK_ColorGREEN},
-                                   {{96, kWin}, SK_ColorGREEN},
-                                   {{128, kAll}, SK_ColorGREEN},
-                                   {{256, kAll}, SK_ColorGREEN}});
+    CheckShortcutInfoUpdated(app_id, SK_ColorGREEN);
 
     EXPECT_EQ(ReadAppIconPixel(app_id, /*size=*/256), SK_ColorGREEN);
   }
@@ -2910,14 +2685,7 @@
   histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                       ManifestUpdateResult::kAppUpdated, 1);
   // The icon should have changed.
-  ConfirmShortcutColors(app_id,
-                        {{{32, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{48, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{64, kWin}, kAnotherInstallableIconTopLeftColor},
-                         {{96, kWin}, kAnotherInstallableIconTopLeftColor},
-                         {{128, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{256, kAll}, kAnotherInstallableIconTopLeftColor},
-                         {{512, kLinux}, kAnotherInstallableIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kAnotherInstallableIconTopLeftColor);
 }
 
 IN_PROC_BROWSER_TEST_F(ManifestUpdateManagerIconUpdatingBrowserTest,
@@ -3691,12 +3459,7 @@
             GetProvider().registrar().GetAppShortName(app_id));
 
   constexpr SkColor kUpdatedIconTopLeftColor = SkColorSetRGB(0xFF, 0x00, 0x00);
-  ConfirmShortcutColors(app_id, {{{32, kAll}, kUpdatedIconTopLeftColor},
-                                 {{48, kAll}, kUpdatedIconTopLeftColor},
-                                 {{64, kWin}, kUpdatedIconTopLeftColor},
-                                 {{96, kWin}, kUpdatedIconTopLeftColor},
-                                 {{128, kAll}, kUpdatedIconTopLeftColor},
-                                 {{256, kAll}, kUpdatedIconTopLeftColor}});
+  CheckShortcutInfoUpdated(app_id, kUpdatedIconTopLeftColor);
 }
 
 // This test exercises the upgrade path for benign (non-App Identity) manifest
@@ -3806,16 +3569,12 @@
   kWithFlagPolicyAppIdentity = 1 << 5,
   kWithFlagAppIdDialog = 1 << 6,
   kActionUpdateTitle = 1 << 7,
-  kActionUpdateTitleAndLauncherIcon = 1 << 8,
-  kActionUpdateLauncherIcon = 1 << 9,
-  kActionUpdateInstallIcon = 1 << 10,
-  kActionUpdateLauncherAndInstallIcon = 1 << 11,
-  kActionUpdateUnimportantIcon = 1 << 12,
-  kActionRemoveLauncherIcon = 1 << 13,
-  kActionRemoveInstallIcon = 1 << 14,
-  kActionRemoveUnimportantIcon = 1 << 15,
-  kActionSwitchFromLauncher = 1 << 16,
-  kActionSwitchToLauncher = 1 << 17,
+  kActionUpdateSingleIcon = 1 << 8,
+  kActionUpdateTitleAndSingleIcon = 1 << 9,
+  kActionAddSingleIcon = 1 << 10,
+  kActionUpdateMultiIcons = 1 << 11,
+  kActionRemoveSingleIcon = 1 << 12,
+  kActionSwitchIconSize = 1 << 13,
 };
 
 class ManifestUpdateManagerBrowserTest_AppIdentityParameterized
@@ -3859,69 +3618,38 @@
     return std::get<2>(GetParam()) & AppIdTestParam::kWithFlagPolicyAppIdentity;
   }
 
-  bool TitleUpdate() const {
+  bool TitleUpdateRequested() const {
     return std::get<0>(GetParam()) & AppIdTestParam::kActionUpdateTitle ||
            std::get<0>(GetParam()) &
-               AppIdTestParam::kActionUpdateTitleAndLauncherIcon;
+               AppIdTestParam::kActionUpdateTitleAndSingleIcon;
   }
 
-  bool AnyIconUpdate() const {
-    return LauncherIconUpdate() || LauncherIconRemove() ||
-           InstallIconUpdate() || InstallIconRemove() ||
-           UnimportantIconUpdate() || UnimportantIconRemove() ||
-           IconSwitchFromLauncher() || IconSwitchToLauncher();
+  bool AnyIconUpdateRequested() const {
+    return SingleIconAddRequested() || SingleIconRemoveRequested() ||
+           SingleIconUpdateRequested() || MultiIconUpdateRequested() ||
+           IconSwitchUpdateRequested();
   }
-
-  bool LauncherIconUpdate() const {
-    return std::get<0>(GetParam()) &
-               AppIdTestParam::kActionUpdateLauncherIcon ||
+  bool SingleIconAddRequested() const {
+    return std::get<0>(GetParam()) & AppIdTestParam::kActionAddSingleIcon;
+  }
+  bool SingleIconRemoveRequested() const {
+    return std::get<0>(GetParam()) & AppIdTestParam::kActionRemoveSingleIcon;
+  }
+  bool SingleIconUpdateRequested() const {
+    return std::get<0>(GetParam()) & AppIdTestParam::kActionUpdateSingleIcon ||
            std::get<0>(GetParam()) &
-               AppIdTestParam::kActionUpdateTitleAndLauncherIcon ||
-           std::get<0>(GetParam()) &
-               AppIdTestParam::kActionUpdateLauncherAndInstallIcon ||
-           IconSwitchFromLauncher() || IconSwitchToLauncher();
+               AppIdTestParam::kActionUpdateTitleAndSingleIcon;
+  }
+  bool MultiIconUpdateRequested() const {
+    return std::get<0>(GetParam()) & AppIdTestParam::kActionUpdateMultiIcons;
+  }
+  bool IconSwitchUpdateRequested() const {
+    return std::get<0>(GetParam()) & AppIdTestParam::kActionSwitchIconSize;
   }
 
-  bool InstallIconUpdate() const {
-    return std::get<0>(GetParam()) & AppIdTestParam::kActionUpdateInstallIcon ||
-           std::get<0>(GetParam()) &
-               AppIdTestParam::kActionUpdateLauncherAndInstallIcon;
-  }
-
-  bool UnimportantIconUpdate() const {
-    return std::get<0>(GetParam()) &
-           AppIdTestParam::kActionUpdateUnimportantIcon;
-  }
-
-  bool LauncherIconRemove() const {
-    return std::get<0>(GetParam()) &
-               AppIdTestParam::kActionRemoveLauncherIcon ||
-           IconSwitchFromLauncher();
-  }
-
-  bool InstallIconRemove() const {
-    return std::get<0>(GetParam()) & AppIdTestParam::kActionRemoveInstallIcon;
-  }
-
-  bool UnimportantIconRemove() const {
-    return std::get<0>(GetParam()) &
-           AppIdTestParam::kActionRemoveUnimportantIcon;
-  }
-
-  bool IconSwitchFromLauncher() const {
-    return std::get<0>(GetParam()) & AppIdTestParam::kActionSwitchFromLauncher;
-  }
-
-  bool IconSwitchToLauncher() const {
-    return std::get<0>(GetParam()) & AppIdTestParam::kActionSwitchToLauncher;
-  }
-
-  // This function describes in which scenarios the test should expect the title
-  // of an app to change. It should mirror exactly the expectations we have of
-  // the implementation and be simple to read for easy verification.
   bool ExpectTitleUpdate() const {
-    if (!TitleUpdate())
-      return false;  // Titles should not update without a request to update.
+    if (!TitleUpdateRequested())
+      return false;
 
     if (IsDefaultApp())
       return true;
@@ -3930,29 +3658,29 @@
     return IsAppIdentityUpdateDialogEnabled();
   }
 
-  // This function describes in which scenarios the test should expect the icons
-  // of an app to change. It should mirror exactly the expectations we have of
-  // the implementation and be simple to read for easy verification.
   bool ExpectIconUpdate() const {
-    if (!AnyIconUpdate())
-      return false;  // Icons should not update without a request to update.
+    // Ideally, this should just check AnyIconUpdateRequested(), but adding and
+    // removing of icons results in kAppNotEligible when updating, even for
+    // Default apps. Therefore, only the supported upgrade paths must be
+    // enumerated here.
+    if (!SingleIconUpdateRequested() && !MultiIconUpdateRequested() &&
+        !IconSwitchUpdateRequested())
+      return false;
 
     if (IsDefaultApp())
       return true;
     if (IsPolicyApp() && IsPolicyAppIdentityOverrideEnabled())
       return true;
-    // Changes to the install/launcher icon should be accepted if the app
-    // identity dialog is shown and accepted (auto-accepted in the case of the
-    // tests). Changes to unimportant icons should in the future not need the
-    // app identity dialog, but are included here now so that it is possible to
-    // get back to the current state by turning off the feature flag.
-    if ((InstallIconUpdate() || InstallIconRemove() || LauncherIconUpdate() ||
-         LauncherIconRemove() || UnimportantIconUpdate() ||
-         UnimportantIconRemove()) &&
-        !IsAppIdentityUpdateDialogEnabled())
-      return false;
+    if (SingleIconUpdateRequested() && IsAppIdentityUpdateDialogEnabled())
+      return true;
 
-    return true;
+    return false;
+  }
+
+  ManifestUpdateResult ExpectedResultWhenNoUpdate() const {
+    if (SingleIconAddRequested() || SingleIconRemoveRequested())
+      return ManifestUpdateResult::kAppNotEligible;
+    return ManifestUpdateResult::kAppUpToDate;
   }
 
   static std::string ParamToString(
@@ -3964,26 +3692,18 @@
     AppIdTestParam action = std::get<0>(param_info.param);
     if (action & AppIdTestParam::kActionUpdateTitle)
       result += "UpdateTitle_";
-    if (action & AppIdTestParam::kActionUpdateTitleAndLauncherIcon)
-      result += "UpdateTitleAndLauncherIcon_";
-    if (action & AppIdTestParam::kActionUpdateLauncherIcon)
-      result += "UpdateLauncherIcon_";
-    if (action & AppIdTestParam::kActionUpdateInstallIcon)
-      result += "UpdateInstallIcon_";
-    if (action & AppIdTestParam::kActionUpdateLauncherAndInstallIcon)
-      result += "UpdateLauncherAndInstallIcon_";
-    if (action & AppIdTestParam::kActionUpdateUnimportantIcon)
-      result += "UpdateUnimportantIcon_";
-    if (action & AppIdTestParam::kActionRemoveLauncherIcon)
-      result += "RemoveLauncherIcon_";
-    if (action & AppIdTestParam::kActionRemoveInstallIcon)
-      result += "RemoveInstallIcon_";
-    if (action & AppIdTestParam::kActionRemoveUnimportantIcon)
-      result += "RemoveUnimportantIcon_";
-    if (action & AppIdTestParam::kActionSwitchFromLauncher)
-      result += "SwitchFromLauncher_";
-    if (action & AppIdTestParam::kActionSwitchToLauncher)
-      result += "SwitchToLauncher_";
+    if (action & AppIdTestParam::kActionUpdateSingleIcon)
+      result += "UpdateSingleIcon_";
+    if (action & AppIdTestParam::kActionUpdateTitleAndSingleIcon)
+      result += "UpdateTitleAndSingleIcon_";
+    if (action & AppIdTestParam::kActionRemoveSingleIcon)
+      result += "RemoveSingleIcon_";
+    if (action & AppIdTestParam::kActionAddSingleIcon)
+      result += "AddSingleIcon_";
+    if (action & AppIdTestParam::kActionUpdateMultiIcons)
+      result += "UpdateMultiIcons_";
+    if (action & AppIdTestParam::kActionSwitchIconSize)
+      result += "SwitchIcon_";
 
     AppIdTestParam type = std::get<1>(param_info.param);
     if (type & AppIdTestParam::kTypeWebApp)
@@ -4009,72 +3729,6 @@
   base::test::ScopedFeatureList scoped_feature_list_;
 };
 
-// A list of the supported colored images (of different sizes) used in the test.
-enum : int {
-  kNone = 0,
-  kGreen = 1,
-  kRed = 2,
-};
-
-std::string GenerateIconRow(int size, int color) {
-  std::string size_str = base::NumberToString(size);
-  std::string row = "      { ";
-  row += "\"src\": \"" + size_str + "x" + size_str + "-";
-  switch (color) {
-    case kNone:
-      row += "?";
-      break;
-    case kGreen:
-      row += "green";
-      break;
-    case kRed:
-      row += "red";
-      break;
-  }
-  row += ".png\", ";
-  row += "\"sizes\": \"" + size_str + "x" + size_str + "\", ";
-  row += "\"type\": \"image/png\" }";
-  return row;
-}
-
-std::string GenerateColoredIconList(int launcher_icon,
-                                    int install_icon,
-                                    int other_icon,
-                                    int other_icon2 = kNone) {
-  std::string icon_list;
-  if (install_icon != kNone) {
-    icon_list += GenerateIconRow(kInstallIconSize, install_icon);
-  }
-  if (launcher_icon != kNone) {
-    if (!icon_list.empty())
-      icon_list += ",\n";
-    icon_list += GenerateIconRow(kLauncherIconSize, launcher_icon);
-  }
-  if (other_icon != kNone) {
-    if (!icon_list.empty())
-      icon_list += ",\n";
-    icon_list += GenerateIconRow(kUnimportantIconSize, other_icon);
-  }
-  if (other_icon2 != kNone) {
-    if (!icon_list.empty())
-      icon_list += ",\n";
-    icon_list += GenerateIconRow(kUnimportantIconSize2, other_icon2);
-  }
-  // Installability requirements mandate at least one large icon.
-  if ((kLauncherIconSize < 192 || launcher_icon == kNone) &&
-      (kInstallIconSize < 192 || install_icon == kNone) &&
-      (kUnimportantIconSize < 192 || other_icon == kNone) &&
-      (kUnimportantIconSize2 < 192 || other_icon2 == kNone)) {
-    if (!icon_list.empty())
-      icon_list += ",\n";
-    icon_list += "      { \"error\": \"Installability requirements not met\" }";
-  }
-
-  if (!icon_list.empty())
-    icon_list += "\n";
-  return "\n    [\n" + icon_list + "    ]\n  ";
-}
-
 IN_PROC_BROWSER_TEST_P(
     ManifestUpdateManagerBrowserTest_AppIdentityParameterized,
     CheckCombinations) {
@@ -4088,219 +3742,71 @@
     }
   )";
 
-  ManifestUpdateTask::BypassWindowCloseWaitingForTesting() = true;
+  // Starting icon set always uses solid green icons.
+  constexpr SkColor kOriginalIconTopLeftColor = SkColorSetRGB(0x00, 0xFF, 0x00);
+  // The icons that get updated are all solid red.
+  constexpr SkColor kUpdatedIconTopLeftColor = SkColorSetRGB(0xFF, 0x00, 0x00);
+
+  // This is always the starting set of icons. Please note that some sizes will
+  // be auto-generated (see SizesToGenerate()), so the starting state when
+  // debugging will also consist of sizes 32, 48, 64, 96, 128. Size 256 would be
+  // autogenerated also, if it were not provided.
+  constexpr char kIconList[] = R"(
+    [
+      { "src": "256x256-green.png", "sizes": "256x256", "type": "image/png" },
+      { "src": "512x512-green.png", "sizes": "512x512", "type": "image/png" }
+    ]
+  )";
+
+  // If we are supposed to remove one icon, this is the end state (512 removed),
+  // plus auto-generated sizes (see comment in kIconList).
+  constexpr char kRemovedSingleIconList[] = R"(
+    [
+      { "src": "256x256-green.png", "sizes": "256x256", "type": "image/png" },
+    ]
+  )";
+  // If we are supposed to add one icon, this is the end state (128 added),
+  // plus auto-generated sizes (see comment in kIconList).
+  constexpr char kAddedSingleIconList[] = R"(
+    [
+      { "src": "128x128-red.png", "sizes": "256x256", "type": "image/png" },
+      { "src": "256x256-green.png", "sizes": "256x256", "type": "image/png" },
+      { "src": "512x512-green.png", "sizes": "512x512", "type": "image/png" }
+    ]
+  )";
+  // Updating one icon only changes the bits of size 256 to red.
+  constexpr char kUpdatedSingleIconList[] = R"(
+    [
+      { "src": "256x256-red.png", "sizes": "256x256", "type": "image/png" },
+      { "src": "512x512-green.png", "sizes": "512x512", "type": "image/png" }
+    ]
+  )";
+  // Updating multiple icons changes size 256 and size 512 to red.
+  constexpr char kUpdatedMultiIconList[] = R"(
+    [
+      { "src": "256x256-red.png", "sizes": "256x256", "type": "image/png" },
+      { "src": "512x512-red.png", "sizes": "512x512", "type": "image/png" }
+    ]
+  )";
+  // Icon switch involves removing a size and replacing it with another. Here,
+  // size 256 has been removed and size 128 added. Note that size 256 will still
+  // be found in the end state because it gets auto-generated.
+  constexpr char kIconSwitchList[] = R"(
+    [
+      { "src": "128x128-red.png", "sizes": "128x128", "type": "image/png" },
+      { "src": "512x512-green.png", "sizes": "512x512", "type": "image/png" }
+    ]
+  )";
 
   testing::TestParamInfo<
       std::tuple<AppIdTestParam, AppIdTestParam, AppIdTestParam>>
       param(GetParam(), 0);
 
-  std::string trace = "\n---------------------------\nParameterized test: " +
-                      ParamToString(param) + "\nType: ";
-  if (IsPolicyApp())
-    trace += "Policy";
-  if (IsDefaultApp())
-    trace += "Default";
-  if (IsWebApp())
-    trace += "WebApp";
-  trace += (IsAppIdentityUpdateDialogEnabled() ? ", with AppIdDlg: YES\n"
-                                               : ", with AppIdDlg: NO\n");
-
-  trace += base::ReplaceStringPlaceholders(
-      "UPDATE: Title: $1 Launcher $2 Install $3 Other $4\n",
-      {base::NumberToString(TitleUpdate()),
-       base::NumberToString(LauncherIconUpdate()),
-       base::NumberToString(InstallIconUpdate()),
-       base::NumberToString(UnimportantIconUpdate())},
-      nullptr);
-  trace += base::ReplaceStringPlaceholders(
-      "REMOVE: Launcher $1 Install $2 Other $3\n",
-      {base::NumberToString(LauncherIconRemove()),
-       base::NumberToString(InstallIconRemove()),
-       base::NumberToString(UnimportantIconRemove())},
-      nullptr);
-  trace += base::ReplaceStringPlaceholders(
-      "SWITCH: FromLauncher $1 ToLauncher $1\n",
-      {base::NumberToString(IconSwitchFromLauncher()),
-       base::NumberToString(IconSwitchToLauncher())},
-      nullptr);
-  trace += base::ReplaceStringPlaceholders(
-      "Should result in: Title update: $1 Icon update $2\n",
-      {base::NumberToString(ExpectTitleUpdate()),
-       base::NumberToString(ExpectIconUpdate())},
-      nullptr);
-  trace += base::ReplaceStringPlaceholders(
-      "Sizes: InstallIcon $1, LauncherIcon $2, ExtraIcon1 $3, ExtraIcon2 $4\n",
-      {base::NumberToString(kInstallIconSize),
-       base::NumberToString(kLauncherIconSize),
-       base::NumberToString(kUnimportantIconSize),
-       base::NumberToString(kUnimportantIconSize2)},
-      nullptr);
-  trace += "---------------------------\n";
-
   if (IsAppIdentityUpdateDialogEnabled())
     chrome::SetAutoAcceptAppIdentityUpdateForTesting(true);
 
   std::string app_name = "Test app name";
-
-  // The 'before' and 'after' icon lists.
-  std::string starting_stage;
-  std::string ending_stage;
-
-  // This is the default icon list (all green icons) and is overridden below,
-  // if need be.
-  starting_stage = GenerateColoredIconList(/* launcher_icon= */ kGreen,
-                                           /* install_icon= */ kGreen,
-                                           /* other_icon= */ kGreen);
-
-  // This is the resulting shortcut colors (per size) for the default icon list
-  // above, and similar to `starting_stage` it is overridden below when needed.
-  // NOTE: When considering which shortcut sizes appear on which platform, the
-  // system creates an intersection between `kDesiredIconSizesForShortcut`
-  // (which is platform-dependent) and `SizesToGenerate()` (which is hard-coded
-  // to { 32, 48, 64, 96, 128, 256 } for all platforms. This can lead to some
-  // discrepancies per platform. For example, Windows specifies more sizes
-  // in`kDesiredIconSizesForShortcut` than other OS', which is why it is common
-  // to find auto-generated icons for size 64 and 96 only on Windows.
-  // Similarly, size 512 is not part of `kDesiredIconSizesForShortcut` on
-  // Windows, so that size does not always feature in the shortcut expectations.
-  std::vector<std::pair<std::pair<int, int>, SkColor>>
-      expected_shortcut_colors_before = {
-          {{32, kAll}, SK_ColorGREEN},  {{48, kAll}, SK_ColorGREEN},
-          {{64, kWin}, SK_ColorGREEN},  {{96, kWin}, SK_ColorGREEN},
-          {{128, kAll}, SK_ColorGREEN}, {{256, kAll}, SK_ColorGREEN}};
-
-  // This needs to be populated for each test below.
-  std::vector<std::pair<std::pair<int, int>, SkColor>>
-      expected_shortcut_colors_if_updated;
-
-  if (LauncherIconUpdate() && InstallIconUpdate()) {
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kRed,
-                                           /* install_icon= */ kRed,
-                                           /* other_icon= */ kGreen);
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorRED},  {{48, kAll}, SK_ColorRED},
-        {{64, kWin}, SK_ColorRED},  {{96, kWin}, SK_ColorRED},
-        {{128, kAll}, SK_ColorRED}, {{256, kAll}, SK_ColorGREEN}};
-  } else if (LauncherIconUpdate()) {
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kRed,
-                                           /* install_icon= */ kGreen,
-                                           /* other_icon= */ kGreen);
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorGREEN}, {{48, kAll}, SK_ColorGREEN},
-        {{64, kWin}, SK_ColorRED},   {{96, kWin}, SK_ColorRED},
-        {{128, kAll}, SK_ColorRED},  {{256, kAll}, SK_ColorGREEN}};
-  } else if (InstallIconUpdate()) {
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kGreen,
-                                           /* install_icon= */ kRed,
-                                           /* other_icon= */ kGreen);
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorRED},    {{48, kAll}, SK_ColorRED},
-        {{64, kWin}, SK_ColorGREEN},  {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN}, {{256, kAll}, SK_ColorGREEN}};
-  } else if (UnimportantIconUpdate()) {
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kGreen,
-                                           /* install_icon= */ kGreen,
-                                           /* other_icon= */ kRed);
-
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorGREEN},  {{48, kAll}, SK_ColorGREEN},
-        {{64, kWin}, SK_ColorGREEN},  {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN}, {{256, kAll}, SK_ColorRED}};
-  } else if (LauncherIconRemove()) {
-    starting_stage = GenerateColoredIconList(/* launcher_icon= */ kRed,
-                                             /* install_icon= */ kGreen,
-                                             /* other_icon= */ kGreen);
-    expected_shortcut_colors_before = {
-        {{32, kAll}, SK_ColorGREEN}, {{48, kAll}, SK_ColorGREEN},
-        {{64, kWin}, SK_ColorRED},   {{96, kWin}, SK_ColorRED},
-        {{128, kAll}, SK_ColorRED},  {{256, kAll}, SK_ColorGREEN}};
-
-    // Note that the starting stage for this request is not a set of icons that
-    // are all green, but instead the launcher icon is red. Then, when the
-    // launcher icon is removed, we can verify that it becomes auto-generated
-    // from other icons (and therefore turns green).
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kNone,
-                                           /* install_icon= */ kGreen,
-                                           /* other_icon= */ kGreen);
-
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorGREEN},  {{48, kAll}, SK_ColorGREEN},
-        {{64, kWin}, SK_ColorGREEN},  {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN}, {{256, kAll}, SK_ColorGREEN}};
-  } else if (InstallIconRemove()) {
-    // The install icon size is not a size that is auto-generated for the
-    // shortcut when missing, so when removed there should be
-    // no effect.
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kGreen,
-                                           /* install_icon= */ kNone,
-                                           /* other_icon= */ kGreen);
-    expected_shortcut_colors_if_updated = expected_shortcut_colors_before;
-  } else if (UnimportantIconRemove()) {
-    // Starting stage must have an extra icon to satisfy installability
-    // requirements during update.
-    starting_stage = GenerateColoredIconList(/* launcher_icon= */ kGreen,
-                                             /* install_icon= */ kGreen,
-                                             /* other_icon= */ kGreen,
-                                             /* other_icon2 */ kGreen);
-    expected_shortcut_colors_before = {
-        {{32, kAll}, SK_ColorGREEN},   {{48, kAll}, SK_ColorGREEN},
-        {{64, kWin}, SK_ColorGREEN},   {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN},  {{256, kAll}, SK_ColorGREEN},
-        {{512, kLinux}, SK_ColorGREEN}};
-
-    // Removing an unimportant icon should have no effect on other icons.
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kGreen,
-                                           /* install_icon= */ kGreen,
-                                           /* other_icon= */ kNone,
-                                           /* other_icon2 */ kGreen);
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorGREEN},   {{48, kAll}, SK_ColorGREEN},
-        {{64, kWin}, SK_ColorGREEN},   {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN},  {{256, kAll}, SK_ColorGREEN},
-        {{512, kLinux}, SK_ColorGREEN}};
-  } else if (IconSwitchFromLauncher()) {
-    starting_stage = GenerateColoredIconList(/* launcher_icon= */ kRed,
-                                             /* install_icon= */ kGreen,
-                                             /* other_icon= */ kGreen);
-
-    expected_shortcut_colors_before = {
-        {{32, kAll}, SK_ColorRED},     {{48, kAll}, SK_ColorRED},
-        {{64, kWin}, SK_ColorGREEN},   {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN},  {{256, kAll}, SK_ColorGREEN},
-        {{512, kLinux}, SK_ColorGREEN}};
-
-    // Starting state is with red launcher icon, ending state without.
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kNone,
-                                           /* install_icon= */ kGreen,
-                                           /* other_icon= */ kGreen,
-                                           /* other_icon2= */ kRed);
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorGREEN},  {{48, kAll}, SK_ColorGREEN},
-        {{64, kWin}, SK_ColorGREEN},  {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN}, {{256, kAll}, SK_ColorGREEN},
-        {{512, kLinux}, SK_ColorRED}};
-  } else if (IconSwitchToLauncher()) {
-    // Starting stage is without launcher icon.
-    starting_stage = GenerateColoredIconList(/* launcher_icon= */ kNone,
-                                             /* install_icon= */ kGreen,
-                                             /* other_icon= */ kGreen);
-
-    ending_stage = GenerateColoredIconList(/* launcher_icon= */ kRed,
-                                           /* install_icon= */ kGreen,
-                                           /* other_icon= */ kGreen);
-    expected_shortcut_colors_if_updated = {
-        {{32, kAll}, SK_ColorRED},     {{48, kAll}, SK_ColorRED},
-        {{64, kWin}, SK_ColorGREEN},   {{96, kWin}, SK_ColorGREEN},
-        {{128, kAll}, SK_ColorGREEN},  {{256, kAll}, SK_ColorGREEN},
-        {{512, kLinux}, SK_ColorGREEN}};
-  } else if (TitleUpdate()) {
-    ending_stage = starting_stage;  // No icon change.
-    expected_shortcut_colors_if_updated = expected_shortcut_colors_before;
-  } else {
-    NOTREACHED();  // Unhandled test input.
-  }
-
-  OverrideManifest(kManifestTemplate, {app_name, starting_stage});
+  OverrideManifest(kManifestTemplate, {app_name, kIconList});
 
   AppId app_id;
   if (IsDefaultApp()) {
@@ -4316,32 +3822,45 @@
   const WebApp* web_app = GetProvider().registrar().GetAppById(app_id);
   ASSERT_TRUE(web_app);
 
-  if (TitleUpdate())
+  if (TitleUpdateRequested())
     app_name = "Different app name";
 
-  OverrideManifest(kManifestTemplate, {app_name, ending_stage});
-  SCOPED_TRACE(trace + "Icons before: \n" + starting_stage + "\n" +
-               "Icons afer: \n" + ending_stage + "\n");
+  if (SingleIconUpdateRequested()) {
+    OverrideManifest(kManifestTemplate, {app_name, kUpdatedSingleIconList});
+  } else if (SingleIconAddRequested()) {
+    OverrideManifest(kManifestTemplate, {app_name, kAddedSingleIconList});
+  } else if (SingleIconRemoveRequested()) {
+    OverrideManifest(kManifestTemplate, {app_name, kRemovedSingleIconList});
+  } else if (MultiIconUpdateRequested()) {
+    OverrideManifest(kManifestTemplate, {app_name, kUpdatedMultiIconList});
+  } else if (IconSwitchUpdateRequested()) {
+    OverrideManifest(kManifestTemplate, {app_name, kIconSwitchList});
+  } else {
+    OverrideManifest(kManifestTemplate, {app_name, kIconList});
+  }
 
-  bool expectations_match = (TitleUpdate() == ExpectTitleUpdate()) &&
-                            (AnyIconUpdate() == ExpectIconUpdate());
-  if ((TitleUpdate() || AnyIconUpdate()) && expectations_match) {
+  bool expectations_match = (TitleUpdateRequested() == ExpectTitleUpdate()) &&
+                            (AnyIconUpdateRequested() == ExpectIconUpdate());
+  if ((TitleUpdateRequested() || AnyIconUpdateRequested()) &&
+      expectations_match) {
     ASSERT_EQ(ManifestUpdateResult::kAppUpdated,
               GetResultAfterPageLoad(GetAppURL()));
     histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                         ManifestUpdateResult::kAppUpdated, 1);
-    ConfirmShortcutColors(app_id, expected_shortcut_colors_if_updated);
   } else {
-    ASSERT_EQ(ManifestUpdateResult::kAppUpToDate,
+    ASSERT_EQ(ExpectedResultWhenNoUpdate(),
               GetResultAfterPageLoad(GetAppURL()));
     histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
                                         ManifestUpdateResult::kAppUpdated, 0);
-    ConfirmShortcutColors(app_id, expected_shortcut_colors_before);
   }
 
   EXPECT_EQ(ExpectTitleUpdate() && expectations_match ? "Different app name"
                                                       : "Test app name",
             GetProvider().registrar().GetAppShortName(app_id));
+
+  CheckShortcutInfoUpdated(app_id, ExpectIconUpdate() && expectations_match
+                                       ? kUpdatedIconTopLeftColor
+                                       : kOriginalIconTopLeftColor);
 }
 
 INSTANTIATE_TEST_SUITE_P(
@@ -4349,16 +3868,12 @@
     ManifestUpdateManagerBrowserTest_AppIdentityParameterized,
     testing::Combine(
         testing::Values(AppIdTestParam::kActionUpdateTitle,
-                        AppIdTestParam::kActionUpdateTitleAndLauncherIcon,
-                        AppIdTestParam::kActionUpdateLauncherIcon,
-                        AppIdTestParam::kActionUpdateInstallIcon,
-                        AppIdTestParam::kActionUpdateLauncherAndInstallIcon,
-                        AppIdTestParam::kActionUpdateUnimportantIcon,
-                        AppIdTestParam::kActionRemoveLauncherIcon,
-                        AppIdTestParam::kActionRemoveInstallIcon,
-                        AppIdTestParam::kActionRemoveUnimportantIcon,
-                        AppIdTestParam::kActionSwitchFromLauncher,
-                        AppIdTestParam::kActionSwitchToLauncher),
+                        AppIdTestParam::kActionUpdateSingleIcon,
+                        AppIdTestParam::kActionUpdateTitleAndSingleIcon,
+                        AppIdTestParam::kActionUpdateMultiIcons,
+                        AppIdTestParam::kActionAddSingleIcon,
+                        AppIdTestParam::kActionRemoveSingleIcon,
+                        AppIdTestParam::kActionSwitchIconSize),
         testing::Values(AppIdTestParam::kTypeDefaultApp,
                         AppIdTestParam::kTypePolicyApp,
                         AppIdTestParam::kTypeWebApp),
diff --git a/chrome/browser/web_applications/manifest_update_task.cc b/chrome/browser/web_applications/manifest_update_task.cc
index a0c65c0..0e5c04b 100644
--- a/chrome/browser/web_applications/manifest_update_task.cc
+++ b/chrome/browser/web_applications/manifest_update_task.cc
@@ -21,7 +21,6 @@
 #include "chrome/browser/web_applications/web_app.h"
 #include "chrome/browser/web_applications/web_app_constants.h"
 #include "chrome/browser/web_applications/web_app_helpers.h"
-#include "chrome/browser/web_applications/web_app_icon_generator.h"
 #include "chrome/browser/web_applications/web_app_icon_manager.h"
 #include "chrome/browser/web_applications/web_app_install_finalizer.h"
 #include "chrome/browser/web_applications/web_app_install_utils.h"
@@ -87,19 +86,25 @@
         icon_diff->diff_results |= ONE_OR_MORE_ICONS_CHANGED;
         return;
       } else {
-        if (size == kInstallIconSize) {
-          icon_diff->diff_results |= INSTALL_ICON_CHANGED;
+        // Icons that are specified in new manifest are of special interest, the
+        // rest is auto-generated.
+        bool important_icon =
+            std::find(downloaded_sizes.begin(), downloaded_sizes.end(), size) !=
+            downloaded_sizes.end();
+        if (!important_icon) {
+          icon_diff->diff_results |= GENERATED_ICON_CHANGED;
+        } else if ((icon_diff->diff_results & SINGLE_ICON_CHANGED) == 0 &&
+                   (icon_diff->diff_results & MULTIPLE_ICONS_CHANGED) == 0) {
+          icon_diff->diff_results |= SINGLE_ICON_CHANGED;
           icon_diff->before = disk_bitmap;
           icon_diff->after = downloaded_bitmap;
-        } else if (size == kLauncherIconSize) {
-          icon_diff->diff_results |= LAUNCHER_ICON_CHANGED;
-          if (icon_diff->before.drawsNothing() &&
-              icon_diff->after.drawsNothing()) {
-            icon_diff->before = disk_bitmap;
-            icon_diff->after = downloaded_bitmap;
-          }
-        } else {
-          icon_diff->diff_results |= UNIMPORTANT_ICON_CHANGED;
+        } else if (icon_diff->diff_results & SINGLE_ICON_CHANGED) {
+          icon_diff->diff_results &= ~SINGLE_ICON_CHANGED;
+          icon_diff->diff_results |= MULTIPLE_ICONS_CHANGED;
+          // The UI can only handle showing one image at a time, at the moment.
+          icon_diff->before = SkBitmap();
+          icon_diff->after = SkBitmap();
+          return;
         }
       }
     }
@@ -484,8 +489,9 @@
   stage_ = Stage::kPendingAppIdentityCheck;
 
   // These calls populate the |web_application_info_| with all icon bitmap
-  // data. If this data does not match what we already have on disk, then an
-  // update is necessary.
+  // data.
+  // If this data does not match what we already have on disk, then an update
+  // is necessary.
   PopulateOtherIcons(&web_application_info_.value(), downloaded_icons_map);
   PopulateProductIcons(&web_application_info_.value(), &downloaded_icons_map);
 
@@ -523,8 +529,8 @@
     return;
   }
 
-  if (!title_change && !icon_diff.requires_app_identity_check()) {
-    OnPostAppIdentityUpdateCheck(AppIdentityUpdate::kAllowed);
+  if (icon_change && !icon_diff.supported_for_app_identity_check()) {
+    OnPostAppIdentityUpdateCheck(AppIdentityUpdate::kSkipped);
     return;
   }
 
diff --git a/chrome/browser/web_applications/manifest_update_task.h b/chrome/browser/web_applications/manifest_update_task.h
index 80b21e8..54e1f138 100644
--- a/chrome/browser/web_applications/manifest_update_task.h
+++ b/chrome/browser/web_applications/manifest_update_task.h
@@ -73,22 +73,19 @@
   // below).
   ONE_OR_MORE_ICONS_CHANGED = 1 << 2,
 
-  // The launcher icon is changing. Note: that the launcher icon size is
-  // platform-specific and that this flag is only set if the diff process is
-  // allowed to continue to the end (doesn't stop as soon as it finds a
-  // change).
-  LAUNCHER_ICON_CHANGED = 1 << 3,
+  // Only one icon is changing. This flag is only set if the diff process is
+  // allowed to continue to the end (doesn't stop as soon as it finds a change).
+  SINGLE_ICON_CHANGED = 1 << 3,
 
-  // The launcher icon is changing. Note: that the install icon size is
-  // platform-specific and that this flag is only set if the diff process is
-  // allowed to continue to the end (doesn't stop as soon as it finds a
+  // Two or more icons are changing. This flag is only set if the diff process
+  // is allowed to continue to the end (doesn't stop as soon as it finds a
   // change).
-  INSTALL_ICON_CHANGED = 1 << 4,
+  MULTIPLE_ICONS_CHANGED = 1 << 4,
 
-  // An icon, other than the launcher/install icon changed. Note: that this flag
+  // And icon has changed, but it was a generated icon that changed. This flag
   // is only set if the diff process is allowed to continue to the end (doesn't
   // stop as soon as it finds a change).
-  UNIMPORTANT_ICON_CHANGED = 1 << 5,
+  GENERATED_ICON_CHANGED = 1 << 5,
 };
 
 // A structure to keep track of the differences found while comparing icons
@@ -111,9 +108,9 @@
 
   // Returns true iff the mismatch should result in app identity dlg being
   // shown.
-  bool requires_app_identity_check() {
-    return ((diff_results & LAUNCHER_ICON_CHANGED) != 0) ||
-           ((diff_results & INSTALL_ICON_CHANGED) != 0);
+  bool supported_for_app_identity_check() {
+    return diff_results == SINGLE_ICON_CHANGED ||
+           diff_results == (SINGLE_ICON_CHANGED | GENERATED_ICON_CHANGED);
   }
 
   // Keeps track of all the differences discovered in the icon set.
diff --git a/chrome/browser/web_applications/manifest_update_task_unittest.cc b/chrome/browser/web_applications/manifest_update_task_unittest.cc
index 36a06603..b088ba01 100644
--- a/chrome/browser/web_applications/manifest_update_task_unittest.cc
+++ b/chrome/browser/web_applications/manifest_update_task_unittest.cc
@@ -12,9 +12,6 @@
 
 namespace web_app {
 
-static const int kUnimportantIconSize1 = 4;
-static const int kUnimportantIconSize2 = 8;
-
 namespace {
 
 // Note: Keep in sync with GetDefaultManifestFileHandlers() below.
@@ -152,203 +149,337 @@
   return result;
 }
 
-std::string DiffResultsToString(uint32_t diff) {
-  std::string result = "";
-  if (diff & NO_CHANGE_DETECTED)
-    result += "NO_CHANGE_DETECTED, ";
-  if (diff & MISMATCHED_IMAGE_SIZES)
-    result += "MISMATCHED_IMAGE_SIZES, ";
-  if (diff & ONE_OR_MORE_ICONS_CHANGED)
-    result += "ONE_OR_MORE_ICONS_CHANGED, ";
-  if (diff & LAUNCHER_ICON_CHANGED)
-    result += "LAUNCHER_ICON_CHANGED, ";
-  if (diff & INSTALL_ICON_CHANGED)
-    result += "INSTALL_ICON_CHANGED, ";
-  if (diff & UNIMPORTANT_ICON_CHANGED)
-    result += "UNIMPORTANT_ICON_CHANGED, ";
-  return result;
-}
-
 TEST_F(ManifestUpdateTaskTest, TestImageComparison) {
-  // Tests below assume there is no overlap in these values, but if
-  // Install/Launcher icon sizes change, a new value for kUnimportantIconSize
-  // must be selected that does not clash with it. Also check if launcher and
-  // install icon are same size, because tests might need to be updated if they
-  // are (browser tests especially).
-  static_assert(kInstallIconSize != kLauncherIconSize, "Overlap");
-  static_assert(kInstallIconSize != kUnimportantIconSize1, "Overlap");
-  static_assert(kInstallIconSize != kUnimportantIconSize2, "Overlap");
-  static_assert(kLauncherIconSize != kUnimportantIconSize1, "Overlap");
-  static_assert(kLauncherIconSize != kUnimportantIconSize2, "Overlap");
-
-  // Doing a FAST means stop on first error but SLOW means continue to end and
-  // give a more detailed error.
-  enum PassType { SLOW = 0, FAST = 1 };
-  // Which map type the icons should be associated with.
-  enum MapType { ANY = 0, MASKED = 1, MONO = 2 };
-  // Common icon diff result combinations:
-  const IconDiffResult NO_CHANGE = NO_CHANGE_DETECTED;
-  const IconDiffResult SIZE_CHANGE = MISMATCHED_IMAGE_SIZES;
-  // Result: Both important sizes change.
-  const IconDiffResult BOTH_CHANGE =
-      static_cast<IconDiffResult>(INSTALL_ICON_CHANGED | LAUNCHER_ICON_CHANGED);
-  // Result: All types of sizes change (important and unimportant).
-  const IconDiffResult ALL_CHANGE = static_cast<IconDiffResult>(
-      INSTALL_ICON_CHANGED | LAUNCHER_ICON_CHANGED | UNIMPORTANT_ICON_CHANGED);
-
-  struct icon {
-    int icon_size;
-    SkColor icon_color;
-  };
-
-  const std::vector<const icon> NoIcons;
-  const SkColor starting_icon_color = SK_ColorTRANSPARENT;
-  const SkColor ending_icon_color = SK_ColorRED;
-  const std::vector<const icon> Icon1 = {
-      {kUnimportantIconSize1, starting_icon_color}};
-  const std::vector<const icon> Icon1Red = {
-      {kUnimportantIconSize1, ending_icon_color}};
-  // Another icon size.
-  const std::vector<const icon> Icon2 = {
-      {kUnimportantIconSize2, starting_icon_color}};
-
-  // Launcher icon (starts yellow, ends up blue).
-  const SkColor starting_launcher_icon_color = SK_ColorYELLOW;
-  const SkColor ending_launcher_icon_color = SK_ColorBLUE;
-  const std::vector<const icon> Launcher = {
-      {kLauncherIconSize, starting_launcher_icon_color}};
-  const std::vector<const icon> LauncherBlue = {
-      {kLauncherIconSize, ending_launcher_icon_color}};
-
-  // Install icon (starts off green, ends up cyan).
-  const SkColor starting_install_icon_color = SK_ColorGREEN;
-  const SkColor ending_install_icon_color = SK_ColorCYAN;
-  const std::vector<const icon> InstallIcon = {
-      {kInstallIconSize, starting_install_icon_color}};
-  const std::vector<const icon> InstallIconCyan = {
-      {kInstallIconSize, ending_install_icon_color}};
-
-  // Launcher and install icon together.
-  const std::vector<const icon> BothBefore = {
-      {kLauncherIconSize, starting_launcher_icon_color},
-      {kInstallIconSize, starting_install_icon_color}};
-  const std::vector<const icon> BothAfter = {
-      {kLauncherIconSize, ending_launcher_icon_color},
-      {kInstallIconSize, ending_install_icon_color}};
-
-  // All types (Launcher, install and unimportant icon).
-  const std::vector<const icon> AllBefore = {
-      {kUnimportantIconSize1, starting_icon_color},
-      {kLauncherIconSize, starting_launcher_icon_color},
-      {kInstallIconSize, starting_install_icon_color}};
-  const std::vector<const icon> AllAfter = {
-      {kUnimportantIconSize1, ending_icon_color},
-      {kLauncherIconSize, ending_launcher_icon_color},
-      {kInstallIconSize, ending_install_icon_color}};
-
-  struct {
-    PassType pass_type;
-    MapType map_current;
-    std::vector<const icon> current;
-    MapType map_downloaded;
-    std::vector<const icon> downloaded;
-    IconDiffResult expected_diff_result;
-  } test_cases[] = {
-      // Test: zero icons -> zero icons:
-      {FAST, ANY, NoIcons, ANY, NoIcons, NO_CHANGE},
-      {SLOW, ANY, NoIcons, ANY, NoIcons, NO_CHANGE},
-      // Test: zero icons -> one icon (unimportant size) via 'any' map:
-      {FAST, ANY, NoIcons, ANY, Icon1, SIZE_CHANGE},
-      {SLOW, ANY, NoIcons, ANY, Icon1, SIZE_CHANGE},
-      // Test: single icon -> zero icons:
-      {FAST, ANY, Icon1, ANY, NoIcons, SIZE_CHANGE},
-      {SLOW, ANY, Icon1, ANY, NoIcons, SIZE_CHANGE},
-      // Test: single icon -> single icon (but size changes).
-      {FAST, ANY, Icon1, ANY, Icon2, SIZE_CHANGE},
-      {SLOW, ANY, Icon1, ANY, Icon2, SIZE_CHANGE},
-      // Same as above, except across maps ('any' and 'monochrome').
-      {FAST, ANY, Icon1, MONO, Icon2, SIZE_CHANGE},
-      {SLOW, ANY, Icon1, MONO, Icon2, SIZE_CHANGE},
-      // Same as above, except across maps ('maskable' and 'monochrome').
-      {FAST, MASKED, Icon1, MONO, Icon2, SIZE_CHANGE},
-      {SLOW, MASKED, Icon1, MONO, Icon2, SIZE_CHANGE},
-      // Test: single icon (unimportant size) changes color.
-      {FAST, ANY, Icon1, ANY, Icon1Red, ONE_OR_MORE_ICONS_CHANGED},
-      {SLOW, ANY, Icon1, ANY, Icon1Red, UNIMPORTANT_ICON_CHANGED},
-      // Test: launcher icon changes color.
-      {FAST, ANY, Launcher, ANY, LauncherBlue, ONE_OR_MORE_ICONS_CHANGED},
-      {SLOW, ANY, Launcher, ANY, LauncherBlue, LAUNCHER_ICON_CHANGED},
-      // Test: install icon changes color.
-      {FAST, ANY, InstallIcon, ANY, InstallIconCyan, ONE_OR_MORE_ICONS_CHANGED},
-      {SLOW, ANY, InstallIcon, ANY, InstallIconCyan, INSTALL_ICON_CHANGED},
-      // Test: both Launcher and Install icon changes color.
-      {FAST, ANY, BothBefore, ANY, BothAfter, ONE_OR_MORE_ICONS_CHANGED},
-      {SLOW, ANY, BothBefore, ANY, BothAfter, BOTH_CHANGE},
-      // Test: all types (Launcher, Install and unimportant icon) change color.
-      {FAST, ANY, AllBefore, ANY, AllAfter, ONE_OR_MORE_ICONS_CHANGED},
-      {SLOW, ANY, AllBefore, ANY, AllAfter, ALL_CHANGE},
-  };
-
-  int i = 1;
-  for (const auto& test_case : test_cases) {
-    SCOPED_TRACE("Test no: " + base::NumberToString(i++) + " expect: " +
-                 DiffResultsToString(test_case.expected_diff_result));
+  {
+    // Test case: Find first difference with two empty IconBitmaps as input
+    // should report no differences.
     IconBitmaps on_disk;
-    for (const auto& current_icon : test_case.current) {
-      std::map<SquareSizePx, SkBitmap>* map;
-      switch (test_case.map_current) {
-        case ANY:
-          map = &on_disk.any;
-          break;
-        case MASKED:
-          map = &on_disk.maskable;
-          break;
-        case MONO:
-          map = &on_disk.monochrome;
-          break;
-      }
-      AddGeneratedIcon(map, current_icon.icon_size, current_icon.icon_color);
-    }
     IconBitmaps downloaded;
-    for (const auto& current_icon : test_case.downloaded) {
-      std::map<SquareSizePx, SkBitmap>* map;
-      switch (test_case.map_downloaded) {
-        case ANY:
-          map = &downloaded.any;
-          break;
-        case MASKED:
-          map = &downloaded.maskable;
-          break;
-        case MONO:
-          map = &downloaded.monochrome;
-          break;
-      }
-      AddGeneratedIcon(map, current_icon.icon_size, current_icon.icon_color);
-    }
+    IconDiff diff = HaveIconBitmapsChanged(
+        on_disk, downloaded, GenerateIconInfosFrom(on_disk),
+        GenerateIconInfosFrom(downloaded),
+        /* end_when_mismatch_detected= */ true);
+    EXPECT_EQ(NO_CHANGE_DETECTED, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences with two empty IconBitmaps as input
+    // should report no differences.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
 
     IconDiff diff = HaveIconBitmapsChanged(
         on_disk, downloaded, GenerateIconInfosFrom(on_disk),
-        GenerateIconInfosFrom(downloaded), test_case.pass_type == FAST);
-    EXPECT_STREQ(DiffResultsToString(test_case.expected_diff_result).c_str(),
-                 DiffResultsToString(diff.diff_results).c_str());
+        GenerateIconInfosFrom(downloaded),
+        /* end_when_mismatch_detected= */ false);
+    EXPECT_EQ(NO_CHANGE_DETECTED, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
 
-    if ((test_case.expected_diff_result & INSTALL_ICON_CHANGED) != 0) {
-      EXPECT_TRUE(diff.requires_app_identity_check());
-      ASSERT_FALSE(diff.before.drawsNothing());
-      ASSERT_FALSE(diff.after.drawsNothing());
-      EXPECT_EQ(starting_install_icon_color, diff.before.getColor(0, 0));
-      EXPECT_EQ(ending_install_icon_color, diff.after.getColor(0, 0));
-    } else if ((test_case.expected_diff_result & LAUNCHER_ICON_CHANGED) != 0) {
-      EXPECT_TRUE(diff.requires_app_identity_check());
-      ASSERT_FALSE(diff.before.drawsNothing());
-      ASSERT_FALSE(diff.after.drawsNothing());
-      EXPECT_EQ(starting_launcher_icon_color, diff.before.getColor(0, 0));
-      EXPECT_EQ(ending_launcher_icon_color, diff.after.getColor(0, 0));
-    } else {
-      EXPECT_FALSE(diff.requires_app_identity_check());
-      EXPECT_TRUE(diff.before.drawsNothing());
-      EXPECT_TRUE(diff.after.drawsNothing());
-    }
+  {
+    // Test case: Find first difference when one new image has been downloaded
+    // should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&downloaded.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(
+        on_disk, downloaded, GenerateIconInfosFrom(on_disk),
+        GenerateIconInfosFrom(downloaded),
+        /* end_when_mismatch_detected= */ true);
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences when one new image has been downloaded
+    // should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&downloaded.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(
+        on_disk, downloaded, GenerateIconInfosFrom(on_disk),
+        GenerateIconInfosFrom(downloaded),
+        /* end_when_mismatch_detected= */ false);
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+
+  {
+    // Test case: Find first difference when one image has been removed
+    // should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(
+        on_disk, downloaded, GenerateIconInfosFrom(on_disk),
+        GenerateIconInfosFrom(downloaded),
+        /* end_when_mismatch_detected= */ true);
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences when one new image has been removed
+    // should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(
+        on_disk, downloaded, GenerateIconInfosFrom(on_disk),
+        GenerateIconInfosFrom(downloaded),
+        /* end_when_mismatch_detected= */ false);
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+
+  {
+    // Test case: Find first difference, when one image has been removed and one
+    // added, should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           true);
+    // First mismatch found will be the added image, then it will stop.
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences, when one image has been removed and one
+    // added, should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected=
+                                            */
+                                           false);
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+
+  {
+    // Test case: Find first difference, when one image has been removed and one
+    // added (but across maps), should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.maskable, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.monochrome, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected=
+                                            */
+                                           true);
+    // First mismatch found will be the fact that one of the maps has changed
+    // size.
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences, when one image has been removed and one
+    // added (but across maps), should report size mismatch.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.maskable, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.monochrome, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           false);
+    EXPECT_EQ(MISMATCHED_IMAGE_SIZES, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+
+  {
+    // Test case: Find first difference, when one image has had its bits
+    // updated, should return ONE_OR_MORE_ICONS_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k256, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           true);
+    EXPECT_EQ(ONE_OR_MORE_ICONS_CHANGED, diff.diff_results);
+    // The expectation here might, at a glance, seem unusual because there *has*
+    // been a change in only a single icon. However, this was detected via the
+    // short pass, which does not provide |before| and |after| images (only the
+    // longer pass will know whether more images changed).
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences, when one image has had its bits
+    // updated, should return SINGLE_ICON_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k256, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(
+        on_disk, downloaded, GenerateIconInfosFrom(on_disk),
+        GenerateIconInfosFrom(downloaded),
+        /* end_when_mismatch_detected= */ false);
+    EXPECT_EQ(SINGLE_ICON_CHANGED, diff.diff_results);
+    // The function has checked all possibilities and is able to provide before
+    // and after images, because it knows only a single image changed.
+    EXPECT_FALSE(diff.before.drawsNothing());
+    EXPECT_FALSE(diff.after.drawsNothing());
+  }
+
+  {
+    // Test case: Find first difference, when two images have had their bits
+    // updated, should return ONE_OR_MORE_ICONS_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&on_disk.any, icon_size::k512, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k256, SK_ColorYELLOW);
+    AddGeneratedIcon(&downloaded.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           true);
+    EXPECT_EQ(ONE_OR_MORE_ICONS_CHANGED, diff.diff_results);
+    // Since more than two images changed, the |before| and |after| isn't
+    // provided.
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences, when two images have had their bits
+    // updated, should return MULTIPLE_ICONS_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&on_disk.any, icon_size::k512, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k256, SK_ColorYELLOW);
+    AddGeneratedIcon(&downloaded.any, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           false);
+    EXPECT_EQ(MULTIPLE_ICONS_CHANGED, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+
+  {
+    // Test case: Find first difference, when two images have had their bits
+    // updated (across |any| and |maskable|), should return
+    // ONE_OR_MORE_ICONS_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&on_disk.maskable, icon_size::k512, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k256, SK_ColorYELLOW);
+    AddGeneratedIcon(&downloaded.maskable, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           true);
+    EXPECT_EQ(ONE_OR_MORE_ICONS_CHANGED, diff.diff_results);
+    // Since more than two images changed, the |before| and |after| isn't
+    // provided.
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences, when two images have had their bits
+    // updated (across |any| and |maskable|), should return
+    // MULTIPLE_ICONS_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.any, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&on_disk.maskable, icon_size::k512, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.any, icon_size::k256, SK_ColorYELLOW);
+    AddGeneratedIcon(&downloaded.maskable, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           false);
+    EXPECT_EQ(MULTIPLE_ICONS_CHANGED, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+
+  {
+    // Test case: Find first difference, when two images have had their bits
+    // updated (across |maskable| and |monochrome|), should return
+    // ONE_OR_MORE_ICON_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.maskable, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&on_disk.monochrome, icon_size::k512, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.maskable, icon_size::k256, SK_ColorYELLOW);
+    AddGeneratedIcon(&downloaded.monochrome, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           true);
+    EXPECT_EQ(ONE_OR_MORE_ICONS_CHANGED, diff.diff_results);
+    // Since more than two images changed, the |before| and |after| isn't
+    // provided.
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
+  }
+  {
+    // Test case: Find all differences, when two images have had their bits
+    // updated (across |maskable| and |monochrome|), should return
+    // MULTIPLE_ICONS_CHANGED.
+    IconBitmaps on_disk;
+    IconBitmaps downloaded;
+    AddGeneratedIcon(&on_disk.maskable, icon_size::k256, SK_ColorRED);
+    AddGeneratedIcon(&on_disk.monochrome, icon_size::k512, SK_ColorRED);
+    AddGeneratedIcon(&downloaded.maskable, icon_size::k256, SK_ColorYELLOW);
+    AddGeneratedIcon(&downloaded.monochrome, icon_size::k512, SK_ColorYELLOW);
+
+    IconDiff diff = HaveIconBitmapsChanged(on_disk, downloaded,
+                                           GenerateIconInfosFrom(on_disk),
+                                           GenerateIconInfosFrom(downloaded),
+                                           /* end_when_mismatch_detected= */
+                                           false);
+    EXPECT_EQ(MULTIPLE_ICONS_CHANGED, diff.diff_results);
+    EXPECT_TRUE(diff.before.drawsNothing());
+    EXPECT_TRUE(diff.after.drawsNothing());
   }
 }
 
diff --git a/chrome/browser/web_applications/test/service_worker_registration_waiter.cc b/chrome/browser/web_applications/test/service_worker_registration_waiter.cc
index f664dad..9f1b28d9 100644
--- a/chrome/browser/web_applications/test/service_worker_registration_waiter.cc
+++ b/chrome/browser/web_applications/test/service_worker_registration_waiter.cc
@@ -13,9 +13,14 @@
 ServiceWorkerRegistrationWaiter::ServiceWorkerRegistrationWaiter(
     content::BrowserContext* browser_context,
     const GURL& url)
+    : ServiceWorkerRegistrationWaiter(
+          browser_context->GetStoragePartitionForUrl(url),
+          url) {}
+
+ServiceWorkerRegistrationWaiter::ServiceWorkerRegistrationWaiter(
+    content::StoragePartition* storage_partition,
+    const GURL& url)
     : url_(std::move(url)) {
-  content::StoragePartition* storage_partition =
-      browser_context->GetStoragePartitionForUrl(url_);
   DCHECK(storage_partition);
 
   service_worker_context_ = storage_partition->GetServiceWorkerContext();
diff --git a/chrome/browser/web_applications/test/service_worker_registration_waiter.h b/chrome/browser/web_applications/test/service_worker_registration_waiter.h
index 6c74b0d..b86b525 100644
--- a/chrome/browser/web_applications/test/service_worker_registration_waiter.h
+++ b/chrome/browser/web_applications/test/service_worker_registration_waiter.h
@@ -22,6 +22,8 @@
  public:
   ServiceWorkerRegistrationWaiter(content::BrowserContext* browser_context,
                                   const GURL& url);
+  ServiceWorkerRegistrationWaiter(content::StoragePartition* storage_partition,
+                                  const GURL& url);
   ServiceWorkerRegistrationWaiter(const ServiceWorkerRegistrationWaiter&) =
       delete;
   ServiceWorkerRegistrationWaiter& operator=(
diff --git a/chrome/browser/web_applications/test/web_app_test_utils.cc b/chrome/browser/web_applications/test/web_app_test_utils.cc
index e9668fd4..4d796c3 100644
--- a/chrome/browser/web_applications/test/web_app_test_utils.cc
+++ b/chrome/browser/web_applications/test/web_app_test_utils.cc
@@ -7,6 +7,7 @@
 #include <random>
 
 #include "base/strings/utf_string_conversions.h"
+#include "base/test/bind.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/ui/browser.h"
@@ -17,6 +18,8 @@
 #include "chrome/browser/web_applications/web_app_utils.h"
 #include "chrome/browser/web_applications/web_application_info.h"
 #include "components/services/app_service/public/cpp/url_handler_info.h"
+#include "content/public/browser/service_worker_context.h"
+#include "content/public/browser/storage_partition.h"
 #include "third_party/blink/public/common/manifest/manifest.h"
 #include "url/gurl.h"
 
@@ -475,5 +478,21 @@
   return app_id;
 }
 
+void CheckServiceWorkerStatus(const GURL& url,
+                              content::StoragePartition* storage_partition,
+                              content::ServiceWorkerCapability status) {
+  base::RunLoop run_loop;
+  content::ServiceWorkerContext* service_worker_context =
+      storage_partition->GetServiceWorkerContext();
+  service_worker_context->CheckHasServiceWorker(
+      url, blink::StorageKey(url::Origin::Create(url)),
+      base::BindLambdaForTesting(
+          [&run_loop, status](content::ServiceWorkerCapability capability) {
+            CHECK_EQ(status, capability);
+            run_loop.Quit();
+          }));
+  run_loop.Run();
+}
+
 }  // namespace test
 }  // namespace web_app
diff --git a/chrome/browser/web_applications/test/web_app_test_utils.h b/chrome/browser/web_applications/test/web_app_test_utils.h
index 5f92fce..9c414281 100644
--- a/chrome/browser/web_applications/test/web_app_test_utils.h
+++ b/chrome/browser/web_applications/test/web_app_test_utils.h
@@ -10,12 +10,14 @@
 #include "chrome/browser/web_applications/web_app.h"
 #include "chrome/browser/web_applications/web_app_install_params.h"
 #include "chrome/browser/web_applications/web_app_install_utils.h"
+#include "content/public/browser/service_worker_context.h"
 
 struct WebApplicationInfo;
 class Browser;
 class GURL;
 
 namespace content {
+class StoragePartition;
 class WebContents;
 }  // namespace content
 
@@ -43,6 +45,10 @@
 
 AppId InstallPwaForCurrentUrl(Browser* browser);
 
+void CheckServiceWorkerStatus(const GURL& url,
+                              content::StoragePartition* storage_partition,
+                              content::ServiceWorkerCapability status);
+
 }  // namespace test
 }  // namespace web_app
 
diff --git a/chrome/browser/web_applications/web_app_icon_generator.h b/chrome/browser/web_applications/web_app_icon_generator.h
index 452f252..7df887c 100644
--- a/chrome/browser/web_applications/web_app_icon_generator.h
+++ b/chrome/browser/web_applications/web_app_icon_generator.h
@@ -10,7 +10,6 @@
 #include <string>
 #include <vector>
 
-#include "build/build_config.h"
 #include "chrome/browser/web_applications/web_application_info.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkColor.h"
@@ -38,17 +37,6 @@
 
 }  // namespace icon_size
 
-#if defined(OS_MAC)
-constexpr int kInstallIconSize = icon_size::k96;
-constexpr int kLauncherIconSize = icon_size::k256;
-#elif defined(OS_CHROMEOS)
-constexpr int kInstallIconSize = icon_size::k96;
-constexpr int kLauncherIconSize = icon_size::k128;
-#else
-constexpr int kInstallIconSize = icon_size::k48;
-constexpr int kLauncherIconSize = icon_size::k128;
-#endif
-
 using SizeToBitmap = std::map<SquareSizePx, SkBitmap>;
 
 // Returns icon sizes to be generated from downloaded icons.
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 493d7dd..defc11df 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-main-1639633787-ba9da6f95c6f22c231f06ca0b3c30d032399e3e5.profdata
+chrome-mac-main-1639655564-52e53ef7b47860477f68cddce2543fb594359e09.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index f08db2c1..87c7f25 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1639645126-bf853fc8fc6accf2453832d89f31c41cd4142d47.profdata
+chrome-win32-main-1639666549-84a7c26e97b827581984ac991aa2569f15b40ef8.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index f1866d9..db20818 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1639633787-cd6ac44e63b7e7cbcc197d90ca6533c65e70cfdb.profdata
+chrome-win64-main-1639655564-53960f02f5072242e6980160d511646ba3082008.profdata
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 38489b7..d52f939 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1784,7 +1784,10 @@
       "../browser/prefs/pref_functional_browsertest.cc",
       "../browser/prefs/pref_service_browsertest.cc",
       "../browser/prefs/tracked/pref_hash_browsertest.cc",
+      "../browser/privacy_sandbox/privacy_sandbox_service_browsertest.cc",
       "../browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc",
+      "../browser/privacy_sandbox/privacy_sandbox_test_util.cc",
+      "../browser/privacy_sandbox/privacy_sandbox_test_util.h",
       "../browser/profile_resetter/profile_resetter_browsertest.cc",
       "../browser/profiles/host_zoom_map_browsertest.cc",
       "../browser/profiles/incognito_profile_containment_browsertest.cc",
@@ -3733,6 +3736,7 @@
         "//chromeos/dbus/attestation:attestation_proto",
         "//chromeos/dbus/authpolicy",
         "//chromeos/dbus/biod",
+        "//chromeos/dbus/biod:biod_proto",
         "//chromeos/dbus/cros_disks",
         "//chromeos/dbus/cros_disks",
         "//chromeos/dbus/cros_healthd",
@@ -4726,7 +4730,10 @@
     "../browser/prefs/proxy_policy_unittest.cc",
     "../browser/prefs/session_startup_pref_unittest.cc",
     "../browser/privacy/privacy_metrics_service_unittest.cc",
+    "../browser/privacy_sandbox/privacy_sandbox_service_unittest.cc",
     "../browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc",
+    "../browser/privacy_sandbox/privacy_sandbox_test_util.cc",
+    "../browser/privacy_sandbox/privacy_sandbox_test_util.h",
     "../browser/profiles/gaia_info_update_service_unittest.cc",
     "../browser/profiles/guest_mode_policy_handler_unittest.cc",
     "../browser/profiles/incognito_mode_policy_handler_unittest.cc",
diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl.cc b/chrome/test/chromedriver/chrome/devtools_client_impl.cc
index 3afb4d74..9dd5509 100644
--- a/chrome/test/chromedriver/chrome/devtools_client_impl.cc
+++ b/chrome/test/chromedriver/chrome/devtools_client_impl.cc
@@ -37,6 +37,8 @@
     "Permission can't be granted to opaque origins.";
 const char kInspectorPushPermissionError[] =
     "Push Permission without userVisibleOnly:true isn't supported";
+const char kInspectorNoSuchFrameError[] =
+    "Frame with the given id was not found.";
 static constexpr int kInvalidParamsInspectorCode = -32602;
 
 class ScopedIncrementer {
@@ -729,6 +731,10 @@
     } else if (error_message == kInspectorPushPermissionError ||
                error_message == kInspectorOpaqueOrigins) {
       return Status(kInvalidArgument, error_message);
+    } else if (error_message == kInspectorNoSuchFrameError) {
+      // As the server returns the generic error code: SERVER_ERROR = -32000
+      // we have to rely on the error message content.
+      return Status(kNoSuchFrame, error_message);
     }
     absl::optional<int> error_code = error_dict->FindIntPath("code");
     if (error_code == kInvalidParamsInspectorCode)
diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc b/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc
index efcb440..b4aaeabf 100644
--- a/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc
+++ b/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc
@@ -690,6 +690,22 @@
   ASSERT_EQ("unknown command: SOME MESSAGE", status.message());
 }
 
+TEST(ParseInspectorError, NoSuchFrameError) {
+  // As the server returns the generic error code: SERVER_ERROR = -32000
+  // we have to rely on the error message content.
+  // A real scenario where this error message occurs is WPT test:
+  // 'cookies/samesite/iframe-reload.https.html'
+  // The error is thrown by InspectorDOMAgent::getFrameOwner
+  // (inspector_dom_agent.cc).
+  const std::string error(
+      "{\"code\":-32000,"
+      "\"message\":\"Frame with the given id was not found.\"}");
+  Status status = internal::ParseInspectorError(error);
+  ASSERT_EQ(kNoSuchFrame, status.code());
+  ASSERT_EQ("no such frame: Frame with the given id was not found.",
+            status.message());
+}
+
 TEST_F(DevToolsClientImplTest, HandleEventsUntil) {
   MockListener listener;
   SyncWebSocketFactory factory =
diff --git a/chrome/test/chromedriver/chrome/dom_tracker.cc b/chrome/test/chromedriver/chrome/dom_tracker.cc
index 91b9980..06967bd 100644
--- a/chrome/test/chromedriver/chrome/dom_tracker.cc
+++ b/chrome/test/chromedriver/chrome/dom_tracker.cc
@@ -19,35 +19,16 @@
 
 DomTracker::~DomTracker() {}
 
-Status DomTracker::GetFrameIdForNode(
-    int node_id, std::string* frame_id) {
-  if (node_to_frame_map_.count(node_id) == 0)
+Status DomTracker::GetFrameIdForNode(int node_id, std::string* frame_id) {
+  if (node_to_frame_map_.count(node_id) == 0) {
     return Status(kNoSuchFrame, "element is not a frame");
+  }
   *frame_id = node_to_frame_map_[node_id];
   return Status(kOk);
 }
 
 Status DomTracker::OnConnected(DevToolsClient* client) {
-  node_to_frame_map_.clear();
-  // Fetch the root document and traverse it populating node_to_frame_map_.
-  // The map will be updated later whenever Inspector pushes DOM node information to the client.
-  base::DictionaryValue params;
-  params.SetInteger("depth", -1);
-  std::unique_ptr<base::DictionaryValue> result;
-  auto status =
-      client->SendCommandAndGetResult("DOM.getDocument", params, &result);
-  if (status.IsError()) {
-    return status;
-  }
-
-  if (const base::Value* root = result->FindKey("root")) {
-    ProcessNode(*root);
-  } else {
-    status =
-        Status(kUnknownError, "DOM.getDocument missing 'root' in the response");
-  }
-
-  return status;
+  return RebuildMapping(client);
 }
 
 Status DomTracker::OnEvent(DevToolsClient* client,
@@ -66,8 +47,9 @@
     }
   } else if (method == "DOM.childNodeInserted") {
     const base::Value* node = params.FindKey("node");
-    if (node == nullptr)
+    if (node == nullptr) {
       return Status(kUnknownError, "DOM.childNodeInserted missing 'node'");
+    }
 
     if (!ProcessNode(*node)) {
       std::string json;
@@ -75,10 +57,41 @@
       return Status(kUnknownError,
                     "DOM.childNodeInserted has invalid 'node': " + json);
     }
+  } else if (method == "Page.frameAttached") {
+    const std::string* frame_id = params.FindStringKey("frameId");
+    if (frame_id == nullptr) {
+      return Status(kUnknownError,
+                    "Page.frameAttached missing 'frameId' in the event");
+    }
+
+    base::DictionaryValue params;
+    params.SetString("frameId", *frame_id);
+    std::unique_ptr<base::DictionaryValue> result;
+    auto status =
+        client->SendCommandAndGetResult("DOM.getFrameOwner", params, &result);
+    if (status.IsError()) {
+      if (status.code() == kNoSuchFrame) {
+        // Frame was deleted before DOM.getFrameOwner arrived to the browser.
+        return Status(kOk);
+      }
+      return status;
+    }
+    auto ownder_node_id = result->FindIntKey("nodeId");
+    if (ownder_node_id.has_value()) {
+      node_to_frame_map_.emplace(ownder_node_id.value(), *frame_id);
+    } else {
+      // NodeId is missing only if nodeId's have been invalidated between
+      // handling of event Page.frameAttached and receiving the response to
+      // DOM.getFrameOwner. In this case DOM.documentUpdated should have been
+      // sent to us in between and we should have requested for DOM.getDocument
+      // and received the response. This means that the mapping must have been
+      // updated accordingly.
+      // It is also possible that the frame in query was removed in between,
+      // therefore the corresponding entry might still be missing in
+      // node_to_frame_map_.
+    }
   } else if (method == "DOM.documentUpdated") {
-    node_to_frame_map_.clear();
-    // Calling DOM.getDocument is necessary to receive future DOM update events.
-    client->SendCommandAndIgnoreResponse("DOM.getDocument", {});
+    return RebuildMapping(client);
   }
   return Status(kOk);
 }
@@ -101,10 +114,34 @@
   if (!dict->GetInteger("nodeId", &node_id))
     return false;
   std::string frame_id;
-  if (dict->GetString("frameId", &frame_id))
+  if (dict->GetString("frameId", &frame_id)) {
     node_to_frame_map_.insert(std::make_pair(node_id, frame_id));
+  }
 
   if (const base::Value* children = dict->FindKey("children"))
     return ProcessNodeList(*children);
   return true;
 }
+
+Status DomTracker::RebuildMapping(DevToolsClient* client) {
+  node_to_frame_map_.clear();
+  base::DictionaryValue params;
+  params.SetInteger("depth", -1);
+  std::unique_ptr<base::DictionaryValue> result;
+  // Fetch the root document and traverse it populating node_to_frame_map_.
+  // The map will be updated later whenever Inspector pushes DOM node
+  // information to the client.
+  auto status =
+      client->SendCommandAndGetResult("DOM.getDocument", params, &result);
+  if (status.IsError()) {
+    return status;
+  }
+
+  if (const base::Value* root = result->FindKey("root")) {
+    ProcessNode(*root);
+  } else {
+    status =
+        Status(kUnknownError, "DOM.getDocument missing 'root' in the response");
+  }
+  return status;
+}
diff --git a/chrome/test/chromedriver/chrome/dom_tracker.h b/chrome/test/chromedriver/chrome/dom_tracker.h
index 5e24a5dd..4ccd3c3 100644
--- a/chrome/test/chromedriver/chrome/dom_tracker.h
+++ b/chrome/test/chromedriver/chrome/dom_tracker.h
@@ -39,6 +39,7 @@
  private:
   bool ProcessNodeList(const base::Value& nodes);
   bool ProcessNode(const base::Value& node);
+  Status RebuildMapping(DevToolsClient* client);
 
   std::map<int, std::string> node_to_frame_map_;
 };
diff --git a/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc b/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc
index 699ed1a..0fc73ccd 100644
--- a/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc
+++ b/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <list>
+#include <memory>
 #include <string>
 
 #include "base/json/json_reader.h"
@@ -10,39 +11,27 @@
 #include "chrome/test/chromedriver/chrome/dom_tracker.h"
 #include "chrome/test/chromedriver/chrome/status.h"
 #include "chrome/test/chromedriver/chrome/stub_devtools_client.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
 
 class FakeDevToolsClient : public StubDevToolsClient {
  public:
-  FakeDevToolsClient() {}
-  ~FakeDevToolsClient() override {}
+  FakeDevToolsClient() = default;
+  ~FakeDevToolsClient() override = default;
 
-  std::string PopSentCommand() {
-    std::string command;
-    if (!sent_command_queue_.empty()) {
-      command = sent_command_queue_.front();
-      sent_command_queue_.pop_front();
-    }
-    return command;
-  }
+  MOCK_METHOD(Status,
+              SendCommand,
+              (const std::string&, const base::DictionaryValue&),
+              (override));
 
-  // Overridden from DevToolsClient:
-  Status SendCommand(const std::string& method,
-                     const base::DictionaryValue& params) override {
-    sent_command_queue_.push_back(method);
-    return Status(kOk);
-  }
-  Status SendCommandAndGetResult(
-      const std::string& method,
-      const base::DictionaryValue& params,
-      std::unique_ptr<base::DictionaryValue>* result) override {
-    return SendCommand(method, params);
-  }
-
- private:
-  std::list<std::string> sent_command_queue_;
+  MOCK_METHOD(Status,
+              SendCommandAndGetResult,
+              (const std::string&,
+               const base::DictionaryValue&,
+               std::unique_ptr<base::DictionaryValue>*),
+              (override));
 };
 
 }  // namespace
@@ -67,10 +56,20 @@
   ASSERT_TRUE(tracker.GetFrameIdForNode(102, &frame_id).IsOk());
   ASSERT_STREQ("f", frame_id.c_str());
 
+  using ::testing::_;
+  EXPECT_CALL(client, SendCommandAndGetResult("DOM.getDocument", _, _))
+      .WillOnce([](const std::string& method,
+                   const base::DictionaryValue& params,
+                   std::unique_ptr<base::DictionaryValue>* result) {
+        *result = std::make_unique<base::DictionaryValue>();
+        result->get()->SetDictionary("root",
+                                     std::make_unique<base::DictionaryValue>());
+        return Status(kOk);
+      });
+
   ASSERT_EQ(kOk,
             tracker.OnEvent(&client, "DOM.documentUpdated", params).code());
   ASSERT_TRUE(tracker.GetFrameIdForNode(102, &frame_id).IsError());
-  ASSERT_STREQ("DOM.getDocument", client.PopSentCommand().c_str());
 }
 
 TEST(DomTracker, ChildNodeInserted) {
diff --git a/chrome/test/data/banners/192x192-green.png b/chrome/test/data/banners/192x192-green.png
deleted file mode 100644
index 60217629..0000000
--- a/chrome/test/data/banners/192x192-green.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/banners/192x192-red.png b/chrome/test/data/banners/192x192-red.png
deleted file mode 100644
index 57c601e3..0000000
--- a/chrome/test/data/banners/192x192-red.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/banners/48x48-green.png b/chrome/test/data/banners/48x48-green.png
deleted file mode 100644
index e3165d9..0000000
--- a/chrome/test/data/banners/48x48-green.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/banners/48x48-red.png b/chrome/test/data/banners/48x48-red.png
deleted file mode 100644
index 4023bfa0..0000000
--- a/chrome/test/data/banners/48x48-red.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/banners/96x96-green.png b/chrome/test/data/banners/96x96-green.png
deleted file mode 100644
index 64c5eb1..0000000
--- a/chrome/test/data/banners/96x96-green.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/banners/96x96-red.png b/chrome/test/data/banners/96x96-red.png
deleted file mode 100644
index 97b1cbd..0000000
--- a/chrome/test/data/banners/96x96-red.png
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/banners/isolated/service_worker.html b/chrome/test/data/banners/isolated/service_worker.html
new file mode 100644
index 0000000..173fbab
--- /dev/null
+++ b/chrome/test/data/banners/isolated/service_worker.html
@@ -0,0 +1,4 @@
+<head>
+  <title>Web app banner isolated service worker test page</title>
+  <script>navigator.serviceWorker.register('/banners/service_worker.js');</script>
+</head>
diff --git a/chrome/test/data/banners/isolated/service_worker.html.mock-http-headers b/chrome/test/data/banners/isolated/service_worker.html.mock-http-headers
new file mode 100644
index 0000000..858d4a51
--- /dev/null
+++ b/chrome/test/data/banners/isolated/service_worker.html.mock-http-headers
@@ -0,0 +1,4 @@
+HTTP/1.1 200 OK
+Content-Type: text/html
+Cross-Origin-Opener-Policy: same-origin
+Cross-Origin-Embedder-Policy: require-corp
diff --git a/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_bar.html b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_bar.html
index 19a6c42..2d86018f 100644
--- a/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_bar.html
+++ b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_bar.html
@@ -4,9 +4,11 @@
 <body>
     <img src="non-existing-image.jpg"></img>
     <img src="https://foo.com/non-existing-image.jpg"></img>
+    <iframe src="https://foo.com/non-existing-iframe.html"></iframe>
     <script type="text/javascript">
         document.body.innerHTML += '<img src="non-existing-image2.jpg"></img>';
         document.body.innerHTML += '<img src="https://bar.com/non-existing-image.jpg"></img>';
+        document.body.innerHTML += '<iframe src="https://bar.com/non-existing-iframe.html"></iframe>';
     </script>
 </body>
 </html>
diff --git a/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_foo.html b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_foo.html
index c0ba0a835..e1e62c2e 100644
--- a/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_foo.html
+++ b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_foo.html
@@ -4,9 +4,11 @@
 <body>
     <img src="non-existing-image.jpg"></img>
     <img src="https://foo.com/non-existing-image.jpg"></img>
+    <iframe src="https://foo.com/non-existing-iframe.html"></iframe>
     <script type="text/javascript">
         document.body.innerHTML += '<img src="non-existing-image2.jpg"></img>';
         document.body.innerHTML += '<img src="https://bar.com/non-existing-image.jpg"></img>';
+        document.body.innerHTML += '<iframe src="https://bar.com/non-existing-iframe.html"></iframe>';
     </script>
 </body>
 </html>
diff --git a/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_merge.html b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_merge.html
new file mode 100644
index 0000000..2d86018f
--- /dev/null
+++ b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_merge.html
@@ -0,0 +1,14 @@
+<html>
+<meta http-equiv="Accept-CH" content="dpr=(https://bar.com/),sec-ch-dpr=(https://bar.com/),device-memory=(https://bar.com/),sec-ch-device-memory=(https://bar.com/),viewport-width=(https://bar.com/),sec-ch-viewport-width=(https://bar.com/),rtt=(https://bar.com/),downlink=(https://bar.com/),ect=(https://bar.com/),sec-ch-ua-arch=(https://bar.com/),sec-ch-ua-platform-version=(https://bar.com/),sec-ch-ua-model=(https://bar.com/),sec-ch-ua-full-version=(https://bar.com/),sec-ch-prefers-color-scheme=(https://bar.com/),sec-ch-ua-bitness=(https://bar.com/),sec-ch-viewport-height=(https://bar.com/),sec-ch-ua-full-version-list=(https://bar.com/)">
+<link rel="icon" href="data:;base64,=">
+<body>
+    <img src="non-existing-image.jpg"></img>
+    <img src="https://foo.com/non-existing-image.jpg"></img>
+    <iframe src="https://foo.com/non-existing-iframe.html"></iframe>
+    <script type="text/javascript">
+        document.body.innerHTML += '<img src="non-existing-image2.jpg"></img>';
+        document.body.innerHTML += '<img src="https://bar.com/non-existing-image.jpg"></img>';
+        document.body.innerHTML += '<iframe src="https://bar.com/non-existing-iframe.html"></iframe>';
+    </script>
+</body>
+</html>
diff --git a/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_merge.html.mock-http-headers b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_merge.html.mock-http-headers
new file mode 100644
index 0000000..7a251e4
--- /dev/null
+++ b/chrome/test/data/client_hints/http_equiv_accept_ch_delegation_merge.html.mock-http-headers
@@ -0,0 +1,3 @@
+HTTP/1.1 200 OK
+Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list
+Permissions-Policy: ch-dpr=(*),ch-device-memory=(self "https://foo.com/"),ch-viewport-width=(*),ch-rtt=(self "https://foo.com/"),ch-downlink=(*),ch-ect=(self "https://foo.com/"),ch-ua-arch=(*),ch-ua-platform-version=(self "https://foo.com/"),ch-ua-model=(*),ch-ua-full-version=(self "https://foo.com/"),ch-prefers-color-scheme=(*),ch-ua-bitness=(self "https://foo.com/"),ch-viewport-height=(*),ch-ua-full-version-list=(self "https://foo.com/")
diff --git a/chrome/test/data/client_hints/meta_name_accept_ch_delegation_bar.html b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_bar.html
index d0a6070a..ffad773 100644
--- a/chrome/test/data/client_hints/meta_name_accept_ch_delegation_bar.html
+++ b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_bar.html
@@ -4,9 +4,11 @@
 <body>
     <img src="non-existing-image.jpg"></img>
     <img src="https://foo.com/non-existing-image.jpg"></img>
+    <iframe src="https://foo.com/non-existing-iframe.html"></iframe>
     <script type="text/javascript">
         document.body.innerHTML += '<img src="non-existing-image2.jpg"></img>';
         document.body.innerHTML += '<img src="https://bar.com/non-existing-image.jpg"></img>';
+        document.body.innerHTML += '<iframe src="https://bar.com/non-existing-iframe.html"></iframe>';
     </script>
 </body>
 </html>
diff --git a/chrome/test/data/client_hints/meta_name_accept_ch_delegation_foo.html b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_foo.html
index 553967c4..943df4a 100644
--- a/chrome/test/data/client_hints/meta_name_accept_ch_delegation_foo.html
+++ b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_foo.html
@@ -4,9 +4,11 @@
 <body>
     <img src="non-existing-image.jpg"></img>
     <img src="https://foo.com/non-existing-image.jpg"></img>
+    <iframe src="https://foo.com/non-existing-iframe.html"></iframe>
     <script type="text/javascript">
         document.body.innerHTML += '<img src="non-existing-image2.jpg"></img>';
         document.body.innerHTML += '<img src="https://bar.com/non-existing-image.jpg"></img>';
+        document.body.innerHTML += '<iframe src="https://bar.com/non-existing-iframe.html"></iframe>';
     </script>
 </body>
 </html>
diff --git a/chrome/test/data/client_hints/meta_name_accept_ch_delegation_merge.html b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_merge.html
new file mode 100644
index 0000000..ffad773
--- /dev/null
+++ b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_merge.html
@@ -0,0 +1,14 @@
+<html>
+<meta name="Accept-CH" content="dpr=(https://bar.com/),sec-ch-dpr=(https://bar.com/),device-memory=(https://bar.com/),sec-ch-device-memory=(https://bar.com/),viewport-width=(https://bar.com/),sec-ch-viewport-width=(https://bar.com/),rtt=(https://bar.com/),downlink=(https://bar.com/),ect=(https://bar.com/),sec-ch-ua-arch=(https://bar.com/),sec-ch-ua-platform-version=(https://bar.com/),sec-ch-ua-model=(https://bar.com/),sec-ch-ua-full-version=(https://bar.com/),sec-ch-prefers-color-scheme=(https://bar.com/),sec-ch-ua-bitness=(https://bar.com/),sec-ch-viewport-height=(https://bar.com/),sec-ch-ua-full-version-list=(https://bar.com/)">
+<link rel="icon" href="data:;base64,=">
+<body>
+    <img src="non-existing-image.jpg"></img>
+    <img src="https://foo.com/non-existing-image.jpg"></img>
+    <iframe src="https://foo.com/non-existing-iframe.html"></iframe>
+    <script type="text/javascript">
+        document.body.innerHTML += '<img src="non-existing-image2.jpg"></img>';
+        document.body.innerHTML += '<img src="https://bar.com/non-existing-image.jpg"></img>';
+        document.body.innerHTML += '<iframe src="https://bar.com/non-existing-iframe.html"></iframe>';
+    </script>
+</body>
+</html>
diff --git a/chrome/test/data/client_hints/meta_name_accept_ch_delegation_merge.html.mock-http-headers b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_merge.html.mock-http-headers
new file mode 100644
index 0000000..7a251e4
--- /dev/null
+++ b/chrome/test/data/client_hints/meta_name_accept_ch_delegation_merge.html.mock-http-headers
@@ -0,0 +1,3 @@
+HTTP/1.1 200 OK
+Accept-CH: dpr,sec-ch-dpr,device-memory,sec-ch-device-memory,viewport-width,sec-ch-viewport-width,rtt,downlink,ect,sec-ch-ua-arch,sec-ch-ua-platform-version,sec-ch-ua-model,sec-ch-ua-full-version,sec-ch-prefers-color-scheme,sec-ch-ua-bitness,sec-ch-viewport-height,sec-ch-ua-full-version-list
+Permissions-Policy: ch-dpr=(*),ch-device-memory=(self "https://foo.com/"),ch-viewport-width=(*),ch-rtt=(self "https://foo.com/"),ch-downlink=(*),ch-ect=(self "https://foo.com/"),ch-ua-arch=(*),ch-ua-platform-version=(self "https://foo.com/"),ch-ua-model=(*),ch-ua-full-version=(self "https://foo.com/"),ch-prefers-color-scheme=(*),ch-ua-bitness=(self "https://foo.com/"),ch-viewport-height=(*),ch-ua-full-version-list=(self "https://foo.com/")
diff --git a/chrome/test/data/webui/cr_elements/cr_view_manager_test.js b/chrome/test/data/webui/cr_elements/cr_view_manager_test.js
index 07687b74..97ba71e 100644
--- a/chrome/test/data/webui/cr_elements/cr_view_manager_test.js
+++ b/chrome/test/data/webui/cr_elements/cr_view_manager_test.js
@@ -70,8 +70,8 @@
     test(assert(TestNames.EventFiring), function() {
       const viewOne = viewManager.querySelector('#viewOne');
 
-      const fired = new Set();
-      const bubbled = new Set();
+      let fired = new Set();
+      let bubbled = new Set();
 
       ['view-enter-start', 'view-enter-finish', 'view-exit-start',
        'view-exit-finish',
@@ -93,28 +93,33 @@
         assertEquals(expectFired, bubbled.has(eventName));
       }
 
-      // Setup the switch promise first.
-      let enterPromise = viewManager.switchView('viewOne');
-      // view-enter-start should fire synchronously.
+      // Initial switch has no animation.
+      viewManager.switchView('viewOne');
+      // view-enter-start and view-enter-finish are fired synchronously when
+      // there's no animation.
       verifyEventFiredAndBubbled('view-enter-start', true);
-      // view-enter-finish should not fire yet.
-      verifyEventFiredAndBubbled('view-enter-finish', false);
-      return enterPromise
+      verifyEventFiredAndBubbled('view-enter-finish', true);
+
+      const exitPromises = viewManager.switchView('viewTwo');
+      verifyEventFiredAndBubbled('view-exit-start', true);
+      // view-exit-finish is waiting on the animation.
+      verifyEventFiredAndBubbled('view-exit-finish', false);
+
+      return exitPromises
           .then(() => {
-            // view-enter-finish should fire after animation.
-            verifyEventFiredAndBubbled('view-enter-finish', true);
+            verifyEventFiredAndBubbled('view-exit-finish', true);
 
-            enterPromise = viewManager.switchView('viewTwo');
-            // view-exit-start should fire synchronously.
-            verifyEventFiredAndBubbled('view-exit-start', true);
-            // view-exit-finish should not fire yet.
-            verifyEventFiredAndBubbled('view-exit-finish', false);
+            fired = new Set();
+            bubbled = new Set();
 
-            return enterPromise;
+            // Switching back has an animation this time.
+            const enterPromises = viewManager.switchView('viewOne');
+            verifyEventFiredAndBubbled('view-enter-start', true);
+            verifyEventFiredAndBubbled('view-enter-finish', false);
+            return enterPromises;
           })
           .then(() => {
-            // view-exit-finish should fire after animation.
-            verifyEventFiredAndBubbled('view-exit-finish', true);
+            verifyEventFiredAndBubbled('view-enter-finish', true);
           });
     });
   });
diff --git a/chrome/test/data/webui/settings/chromeos/BUILD.gn b/chrome/test/data/webui/settings/chromeos/BUILD.gn
index 26cb9ea..0102dc83 100644
--- a/chrome/test/data/webui/settings/chromeos/BUILD.gn
+++ b/chrome/test/data/webui/settings/chromeos/BUILD.gn
@@ -100,6 +100,7 @@
     "keyboard_shortcut_banner_test.js",
     "localized_link_test.js",
     "manage_accessibility_page_tests.js",
+    "multidevice_camera_roll_item_tests.js",
     "multidevice_feature_item_tests.js",
     "multidevice_feature_toggle_tests.js",
     "multidevice_notification_access_setup_dialog_tests.js",
diff --git a/chrome/test/data/webui/settings/chromeos/multidevice_camera_roll_item_tests.js b/chrome/test/data/webui/settings/chromeos/multidevice_camera_roll_item_tests.js
new file mode 100644
index 0000000..fb83c1bc
--- /dev/null
+++ b/chrome/test/data/webui/settings/chromeos/multidevice_camera_roll_item_tests.js
@@ -0,0 +1,59 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// clang-format off
+// #import 'chrome://os-settings/chromeos/os_settings.js';
+
+// #import {assertFalse, assertTrue} from '../../chai_assert.js';
+// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+// #import {SyncBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js';
+// #import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.js';
+// #import {TestSyncBrowserProxy} from './test_os_sync_browser_proxy.m.js';
+// clang-format on
+
+suite('Multidevice', function() {
+  let cameraRollItem;
+
+  setup(function() {
+    const browserProxy = new TestSyncBrowserProxy();
+    settings.SyncBrowserProxyImpl.setInstance(browserProxy);
+
+    PolymerTest.clearBody();
+
+    cameraRollItem =
+        document.createElement('settings-multidevice-camera-roll-item');
+    document.body.appendChild(cameraRollItem);
+
+    Polymer.dom.flush();
+  });
+
+  teardown(function() {
+    cameraRollItem.remove();
+  });
+
+  test(
+      'Camera Roll toggle is disabled when file access is not granted',
+      async () => {
+        cameraRollItem.pageContentData =
+            Object.assign({}, cameraRollItem.pageContentData, {
+              isCameraRollFilePermissionGranted: false,
+            });
+        Polymer.dom.flush();
+
+        assertTrue(!!cameraRollItem.$$('localized-link[slot=feature-summary]'));
+        const toggle = cameraRollItem.$$('cr-toggle[slot=feature-controller]');
+        assertTrue(!!toggle);
+        assertTrue(toggle.disabled);
+
+        cameraRollItem.pageContentData =
+            Object.assign({}, cameraRollItem.pageContentData, {
+              isCameraRollFilePermissionGranted: true,
+            });
+        Polymer.dom.flush();
+
+        assertFalse(
+            !!cameraRollItem.$$('localized-link[slot=feature-summary]'));
+        assertFalse(!!cameraRollItem.$$('cr-toggle[slot=feature-controller]'));
+      });
+});
diff --git a/chrome/test/data/webui/settings/chromeos/multidevice_subpage_tests.js b/chrome/test/data/webui/settings/chromeos/multidevice_subpage_tests.js
index 3eda4a7..5a764b1 100644
--- a/chrome/test/data/webui/settings/chromeos/multidevice_subpage_tests.js
+++ b/chrome/test/data/webui/settings/chromeos/multidevice_subpage_tests.js
@@ -81,6 +81,11 @@
               supportedFeatures.includes(settings.MultiDeviceFeature.ECHE) ?
               settings.MultiDeviceFeatureState.ENABLED_BY_USER :
               settings.MultiDeviceFeatureState.NOT_SUPPORTED_BY_CHROMEBOOK,
+          phoneHubCameraRollState:
+              supportedFeatures.includes(
+                  settings.MultiDeviceFeature.PHONE_HUB_CAMERA_ROLL) ?
+              settings.MultiDeviceFeatureState.ENABLED_BY_USER :
+              settings.MultiDeviceFeatureState.NOT_SUPPORTED_BY_CHROMEBOOK,
         });
     Polymer.dom.flush();
   }
@@ -153,6 +158,9 @@
       assertEquals(
           !!multideviceSubpage.$$('#phoneHubAppsItem'),
           mode === settings.MultiDeviceSettingsMode.HOST_SET_VERIFIED);
+      assertEquals(
+          !!multideviceSubpage.$$('#phoneHubCameraRollItem'),
+          mode === settings.MultiDeviceSettingsMode.HOST_SET_VERIFIED);
     }
   });
 
@@ -167,6 +175,7 @@
         assertTrue(!!multideviceSubpage.$$('#phoneHubTaskContinuationItem'));
         assertTrue(!!multideviceSubpage.$$('#wifiSyncItem'));
         assertTrue(!!multideviceSubpage.$$('#phoneHubAppsItem'));
+        assertTrue(!!multideviceSubpage.$$('#phoneHubCameraRollItem'));
 
         setSupportedFeatures([
           settings.MultiDeviceFeature.SMART_LOCK,
@@ -176,6 +185,7 @@
           settings.MultiDeviceFeature.PHONE_HUB_TASK_CONTINUATION,
           settings.MultiDeviceFeature.WIFI_SYNC,
           settings.MultiDeviceFeature.ECHE,
+          settings.MultiDeviceFeature.PHONE_HUB_CAMERA_ROLL,
         ]);
         assertTrue(!!multideviceSubpage.$$('#smartLockItem'));
         assertFalse(!!multideviceSubpage.$$('#instantTetheringItem'));
@@ -185,6 +195,7 @@
         assertTrue(!!multideviceSubpage.$$('#phoneHubTaskContinuationItem'));
         assertTrue(!!multideviceSubpage.$$('#wifiSyncItem'));
         assertTrue(!!multideviceSubpage.$$('#phoneHubAppsItem'));
+        assertTrue(!!multideviceSubpage.$$('#phoneHubCameraRollItem'));
 
         setSupportedFeatures([settings.MultiDeviceFeature.INSTANT_TETHERING]);
         assertFalse(!!multideviceSubpage.$$('#smartLockItem'));
@@ -195,6 +206,7 @@
         assertFalse(!!multideviceSubpage.$$('#phoneHubTaskContinuationItem'));
         assertFalse(!!multideviceSubpage.$$('#wifiSyncItem'));
         assertFalse(!!multideviceSubpage.$$('#phoneHubAppsItem'));
+        assertFalse(!!multideviceSubpage.$$('#phoneHubCameraRollItem'));
 
         setSupportedFeatures([]);
         assertFalse(!!multideviceSubpage.$$('#smartLockItem'));
@@ -205,6 +217,7 @@
         assertFalse(!!multideviceSubpage.$$('#phoneHubTaskContinuationItem'));
         assertFalse(!!multideviceSubpage.$$('#wifiSyncItem'));
         assertFalse(!!multideviceSubpage.$$('#phoneHubAppsItem'));
+        assertFalse(!!multideviceSubpage.$$('#phoneHubCameraRollItem'));
       });
 
   test('clicking SmartLock item routes to SmartLock subpage', function() {
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
index 45a0a9e..9c440d8 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
@@ -265,6 +265,7 @@
  ['LocalizedLink', 'localized_link_test.m.js'],
  ['LockScreenPage', 'lock_screen_tests.m.js'],
  ['ManageAccessibilityPage', 'manage_accessibility_page_tests.m.js'],
+ ['MultideviceCameraRollItem', 'multidevice_camera_roll_item_tests.m.js'],
  // TODO(crbug.com/1227116): Re-enable once flakiness is fixed.
  //  ['MultideviceFeatureItem', 'multidevice_feature_item_tests.m.js'],
  ['MultideviceFeatureToggle', 'multidevice_feature_toggle_tests.m.js'],
diff --git a/chrome/test/data/webui/settings/password_check_test.js b/chrome/test/data/webui/settings/password_check_test.js
index 008fe38..12fd4ae 100644
--- a/chrome/test/data/webui/settings/password_check_test.js
+++ b/chrome/test/data/webui/settings/password_check_test.js
@@ -218,7 +218,7 @@
     // Override the SyncBrowserProxyImpl for testing.
     syncBrowserProxy = new TestSyncBrowserProxy();
     SyncBrowserProxyImpl.setInstance(syncBrowserProxy);
-    syncBrowserProxy.syncStatus = {signedIn: false};
+    syncBrowserProxy.testSyncStatus = {signedIn: false};
   });
 
   // Test verifies that clicking 'Check again' make proper function call to
diff --git a/chrome/test/data/webui/settings/passwords_device_section_test.js b/chrome/test/data/webui/settings/passwords_device_section_test.js
index f2f9d26..7fa0faf 100644
--- a/chrome/test/data/webui/settings/passwords_device_section_test.js
+++ b/chrome/test/data/webui/settings/passwords_device_section_test.js
@@ -86,7 +86,7 @@
     // syncing) and opted-in to account storage.
     syncBrowserProxy.storedAccounts = [SIGNED_IN_ACCOUNT];
     simulateStoredAccounts(syncBrowserProxy.storedAccounts);
-    syncBrowserProxy.syncStatus = {signedIn: false};
+    syncBrowserProxy.testSyncStatus = {signedIn: false};
     simulateSyncStatus(syncBrowserProxy.syncStatus);
     passwordManager.setIsOptedInForAccountStorageAndNotify(true);
   });
diff --git a/chrome/test/data/webui/settings/passwords_section_test.js b/chrome/test/data/webui/settings/passwords_section_test.js
index af9ef70b..3ccf7d43 100644
--- a/chrome/test/data/webui/settings/passwords_section_test.js
+++ b/chrome/test/data/webui/settings/passwords_section_test.js
@@ -10,7 +10,7 @@
 import {isChromeOS, isLacros, webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {HatsBrowserProxyImpl, MultiStoreExceptionEntry, MultiStorePasswordUiEntry, PasswordCheckReferrer, PasswordManagerImpl, Router, routes, SettingsPluralStringProxyImpl, TrustSafetyInteraction} from 'chrome://settings/settings.js';
+import {HatsBrowserProxyImpl, MultiStoreExceptionEntry, MultiStorePasswordUiEntry, PasswordCheckReferrer, PasswordManagerImpl, Router, routes, SettingsPluralStringProxyImpl, TrustedVaultBannerState, TrustSafetyInteraction} from 'chrome://settings/settings.js';
 import {TestPluralStringProxy} from 'chrome://webui-test/test_plural_string_proxy.js';
 import {eventToPromise} from 'chrome://webui-test/test_util.js';
 
@@ -1904,4 +1904,31 @@
         passwordsSection.shadowRoot.querySelector('#addPasswordDialog');
     assertTrue(!!addDialog);
   });
+
+  test('trustedVaultBannerVisibilityChangesWithState', function() {
+    const passwordsSection =
+        elementFactory.createPasswordsSection(passwordManager, [], []);
+    webUIListenerCallback(
+        'trusted-vault-banner-state-changed',
+        TrustedVaultBannerState.NOT_SHOWN);
+    flush();
+    assertTrue(passwordsSection.$.trustedVaultBanner.hidden);
+
+    webUIListenerCallback(
+        'trusted-vault-banner-state-changed',
+        TrustedVaultBannerState.OFFER_OPT_IN);
+    flush();
+    assertFalse(passwordsSection.$.trustedVaultBanner.hidden);
+    assertEquals(
+        passwordsSection.i18n('trustedVaultBannerSubLabelOfferOptIn'),
+        passwordsSection.$.trustedVaultBanner.subLabel);
+
+    webUIListenerCallback(
+        'trusted-vault-banner-state-changed', TrustedVaultBannerState.OPTED_IN);
+    flush();
+    assertFalse(passwordsSection.$.trustedVaultBanner.hidden);
+    assertEquals(
+        passwordsSection.i18n('trustedVaultBannerSubLabelOptedIn'),
+        passwordsSection.$.trustedVaultBanner.subLabel);
+  });
 });
diff --git a/chrome/test/data/webui/settings/privacy_review_page_test.ts b/chrome/test/data/webui/settings/privacy_review_page_test.ts
index d1db1a55..284d8e15 100644
--- a/chrome/test/data/webui/settings/privacy_review_page_test.ts
+++ b/chrome/test/data/webui/settings/privacy_review_page_test.ts
@@ -6,7 +6,7 @@
 import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
 import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 import {CookiePrimarySetting, PrivacyReviewHistorySyncFragmentElement, PrivacyReviewStep, PrivacyReviewWelcomeFragmentElement, SafeBrowsingSetting, SettingsCheckboxElement, SettingsPrivacyReviewPageElement, SettingsRadioGroupElement} from 'chrome://settings/lazy_load.js';
-import {Router, routes, SyncBrowserProxyImpl, SyncPrefs, syncPrefsIndividualDataTypes} from 'chrome://settings/settings.js';
+import {Router, routes, StatusAction, SyncBrowserProxyImpl, SyncPrefs, syncPrefsIndividualDataTypes} from 'chrome://settings/settings.js';
 import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
 import {eventToPromise, flushTasks, isChildVisible} from 'chrome://webui-test/test_util.js';
 
@@ -21,13 +21,18 @@
 
 suite('PrivacyReviewPage', function() {
   let page: SettingsPrivacyReviewPageElement;
-  let isSyncOn: boolean;
+  let syncBrowserProxy: TestSyncBrowserProxy;
   let shouldShowCookiesCard: boolean;
   let shouldShowSafeBrowsingCard: boolean;
 
   setup(function() {
+    syncBrowserProxy = new TestSyncBrowserProxy();
+    syncBrowserProxy.testSyncStatus = null;
+    SyncBrowserProxyImpl.setInstance(syncBrowserProxy);
+
     document.body.innerHTML = '';
     page = document.createElement('settings-privacy-review-page');
+    page.disableAnimationsForTesting();
     page.prefs = {
       privacy_review: {
         show_welcome_card: {
@@ -53,7 +58,6 @@
       },
     };
     document.body.appendChild(page);
-    isSyncOn = false;
     shouldShowCookiesCard = true;
     shouldShowSafeBrowsingCard = true;
 
@@ -100,18 +104,23 @@
     assertEquals(step, Router.getInstance().getQueryParameters().get('step'));
   }
 
-
   /**
    * Fire a sync status changed event and flush the UI.
    */
   function setSyncEnabled(syncOn: boolean) {
-    const event = {
+    syncBrowserProxy.testSyncStatus = {
       signedIn: syncOn,
       hasError: false,
+      statusAction: StatusAction.NO_ACTION,
     };
-    webUIListenerCallback('sync-status-changed', event);
+    webUIListenerCallback(
+        'sync-status-changed', syncBrowserProxy.testSyncStatus);
     flush();
-    isSyncOn = syncOn;
+  }
+
+  function shouldShowHistorySyncCard(): boolean {
+    return !syncBrowserProxy.testSyncStatus ||
+        !!syncBrowserProxy.testSyncStatus.signedIn;
   }
 
   /**
@@ -215,7 +224,7 @@
    */
   function getExpectedNumberOfActiveCards() {
     let numSteps = PRIVACY_REVIEW_STEPS;
-    if (!isSyncOn) {
+    if (!shouldShowHistorySyncCard()) {
       numSteps -= 1;
     }
     if (!shouldShowCookiesCard) {
@@ -273,7 +282,7 @@
       isBackButtonVisibleExpected: true,
       isSafeBrowsingFragmentVisibleExpected: true,
     });
-    assertStepIndicatorModel(isSyncOn ? 2 : 1);
+    assertStepIndicatorModel(shouldShowHistorySyncCard() ? 2 : 1);
   }
 
   function assertCookiesCardVisible() {
@@ -284,7 +293,7 @@
       isCookiesFragmentVisibleExpected: true,
     });
     let activeIndex = 3;
-    if (!isSyncOn) {
+    if (!shouldShowHistorySyncCard()) {
       activeIndex -= 1;
     }
     if (!shouldShowSafeBrowsingCard) {
@@ -296,7 +305,6 @@
   test('startPrivacyReview', function() {
     // Make sure the pref to show the welcome card is on.
     page.setPrefValue('privacy_review.show_welcome_card', true);
-    flush();
 
     // Navigating to the privacy review without a step parameter navigates to
     // the welcome card.
@@ -321,13 +329,11 @@
     // Navigating this time should skip the welcome card.
     assertFalse(page.getPref('privacy_review.show_welcome_card').value);
     Router.getInstance().navigateTo(routes.PRIVACY_REVIEW);
-    flush();
     assertMsbbCardVisible();
   });
 
   test('welcomeForwardNavigation', function() {
     page.setPrefValue('privacy_review.show_welcome_card', true);
-    flush();
 
     // Navigating to the privacy review without a step parameter navigates to
     // the welcome card.
@@ -343,7 +349,6 @@
     assertMsbbCardVisible();
 
     setSyncEnabled(true);
-    flush();
     assertMsbbCardVisible();
   });
 
@@ -353,7 +358,6 @@
     assertMsbbCardVisible();
 
     page.shadowRoot!.querySelector<HTMLElement>('#nextButton')!.click();
-    flush();
     assertHistorySyncCardVisible();
   });
 
@@ -363,7 +367,6 @@
     assertMsbbCardVisible();
 
     page.shadowRoot!.querySelector<HTMLElement>('#nextButton')!.click();
-    flush();
     assertSafeBrowsingCardVisible();
   });
 
@@ -373,7 +376,6 @@
     assertHistorySyncCardVisible();
 
     page.shadowRoot!.querySelector<HTMLElement>('#backButton')!.click();
-    flush();
     assertMsbbCardVisible();
   });
 
@@ -402,7 +404,6 @@
         assertHistorySyncCardVisible();
 
         page.shadowRoot!.querySelector<HTMLElement>('#nextButton')!.click();
-        flush();
         assertSafeBrowsingCardVisible();
       });
 
@@ -415,7 +416,6 @@
         assertHistorySyncCardVisible();
 
         page.shadowRoot!.querySelector<HTMLElement>('#nextButton')!.click();
-        flush();
         assertCookiesCardVisible();
       });
 
@@ -425,7 +425,6 @@
     assertSafeBrowsingCardVisible();
 
     page.shadowRoot!.querySelector<HTMLElement>('#backButton')!.click();
-    flush();
     assertHistorySyncCardVisible();
   });
 
@@ -435,7 +434,6 @@
     assertSafeBrowsingCardVisible();
 
     page.shadowRoot!.querySelector<HTMLElement>('#backButton')!.click();
-    flush();
     assertMsbbCardVisible();
   });
 
@@ -739,7 +737,7 @@
     });
   });
 
-  test('syncAllOffEnableHistorySync', async function() {
+  test('syncAllOffEnableHistorySync', function() {
     setSyncStatus({
       syncAllDataTypes: false,
       typedUrlsSynced: false,
diff --git a/chrome/test/data/webui/settings/test_sync_browser_proxy.ts b/chrome/test/data/webui/settings/test_sync_browser_proxy.ts
index d56e826..2081461 100644
--- a/chrome/test/data/webui/settings/test_sync_browser_proxy.ts
+++ b/chrome/test/data/webui/settings/test_sync_browser_proxy.ts
@@ -11,18 +11,20 @@
 export class TestSyncBrowserProxy extends TestBrowserProxy implements
     SyncBrowserProxy {
   private impressionCount_: number = 0;
-
-  // Settable fake data.
-  encryptionPassphraseSuccess: boolean = false;
-  decryptionPassphraseSuccess: boolean = false;
-  storedAccounts: StoredAccount[] = [];
-  syncStatus: SyncStatus = {
+  private resolveGetSyncStatus_: Function|null = null;
+  private syncStatus_: SyncStatus|null = {
     signedIn: true,
     signedInUsername: 'fakeUsername',
     statusAction: StatusAction.NO_ACTION
   };
 
+  // Settable fake data.
+  encryptionPassphraseSuccess: boolean = false;
+  decryptionPassphraseSuccess: boolean = false;
+  storedAccounts: StoredAccount[] = [];
+
   constructor() {
+    // clang-format off
     super([
       'didNavigateAwayFromSyncPage',
       'didNavigateToSyncPage',
@@ -34,7 +36,7 @@
       'setEncryptionPassphrase',
       'setDecryptionPassphrase',
       'sendSyncPrefsChanged',
-      'sendOfferTrustedVaultOptInChanged',
+      'sendTrustedVaultBannerStateChanged',
       'startSyncingWithEmail',
 
       // <if expr="not chromeos">
@@ -48,11 +50,30 @@
       'turnOffSync',
       // </if>
     ]);
+    // clang-format on
   }
 
-  getSyncStatus() {
+  get testSyncStatus(): SyncStatus|null {
+    return this.syncStatus_;
+  }
+
+  set testSyncStatus(syncStatus: SyncStatus|null) {
+    this.syncStatus_ = syncStatus;
+    if (this.syncStatus_ && this.resolveGetSyncStatus_) {
+      this.resolveGetSyncStatus_(this.syncStatus_!);
+      this.resolveGetSyncStatus_ = null;
+    }
+  }
+
+  getSyncStatus(): Promise<SyncStatus> {
     this.methodCalled('getSyncStatus');
-    return Promise.resolve(this.syncStatus);
+    if (this.syncStatus_) {
+      return Promise.resolve(this.syncStatus_!);
+    } else {
+      return new Promise((resolve) => {
+        this.resolveGetSyncStatus_ = resolve;
+      });
+    }
   }
 
   getStoredAccounts() {
@@ -118,8 +139,8 @@
     this.methodCalled('sendSyncPrefsChanged');
   }
 
-  sendOfferTrustedVaultOptInChanged() {
-    this.methodCalled('sendOfferTrustedVaultOptInChanged');
+  sendTrustedVaultBannerStateChanged() {
+    this.methodCalled('sendTrustedVaultBannerStateChanged');
   }
 
   openActivityControlsUrl() {}
diff --git a/chrome/test/media_router/media_router_integration_browsertest.cc b/chrome/test/media_router/media_router_integration_browsertest.cc
index 2423140..b61ffb4d 100644
--- a/chrome/test/media_router/media_router_integration_browsertest.cc
+++ b/chrome/test/media_router/media_router_integration_browsertest.cc
@@ -42,38 +42,12 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 using content::WebContents;
+using testing::Optional;
 
 namespace media_router {
 
 namespace {
 
-using ::testing::Optional;
-
-// Command line argument to specify receiver,
-const char kReceiver[] = "receiver";
-// The path relative to <chromium src>/out/<build config> for media router
-// browser test resources.
-const base::FilePath::StringPieceType kResourcePath =
-    FILE_PATH_LITERAL("media_router/browser_test_resources/");
-const char kTestSinkName[] = "test-sink-1";
-const char kButterflyVideoFileName[] = "butterfly-853x480.webm";
-// The javascript snippets.
-const char kCheckSessionScript[] = "checkSession();";
-const char kCheckStartFailedScript[] = "checkStartFailed('%s', '%s');";
-const char kStartSessionScript[] = "startSession();";
-const char kTerminateSessionScript[] =
-    "terminateSessionAndWaitForStateChange();";
-const char kCloseSessionScript[] = "closeConnectionAndWaitForStateChange();";
-const char kReconnectSessionScript[] = "reconnectSession('%s');";
-const char kCheckSendMessageFailedScript[] = "checkSendMessageFailed('%s');";
-const char kWaitSinkScript[] = "waitUntilDeviceAvailable();";
-const char kSendMessageAndExpectResponseScript[] =
-    "sendMessageAndExpectResponse('%s');";
-const char kSendMessageAndExpectConnectionCloseOnErrorScript[] =
-    "sendMessageAndExpectConnectionCloseOnError()";
-const char kCheckReconnectSessionFailsScript[] =
-    "checkReconnectSessionFails('%s')";
-
 std::string GetStartedConnectionId(WebContents* web_contents) {
   std::string session_id;
   CHECK(content::ExecuteScriptAndExtractString(
@@ -241,7 +215,7 @@
   OpenTestPage(FILE_PATH_LITERAL("basic_test.html"));
   WebContents* web_contents = GetActiveWebContents();
   CHECK(web_contents);
-  ExecuteJavaScriptAPI(web_contents, kStartSessionScript);
+  ExecuteJavaScriptAPI(web_contents, "startSession();");
 
   // Wait to simulate the user waiting for any sinks to be displayed.
   Wait(base::Seconds(1));
@@ -254,8 +228,8 @@
   OpenTestPage(FILE_PATH_LITERAL("basic_test.html"));
   WebContents* web_contents = GetActiveWebContents();
   CHECK(web_contents);
-  ExecuteJavaScriptAPI(web_contents, kWaitSinkScript);
-  ExecuteJavaScriptAPI(web_contents, kStartSessionScript);
+  ExecuteJavaScriptAPI(web_contents, "waitUntilDeviceAvailable();");
+  ExecuteJavaScriptAPI(web_contents, "startSession();");
   test_ui_->WaitForDialogShown();
   return web_contents;
 }
@@ -273,7 +247,7 @@
 
 void MediaRouterIntegrationBrowserTest::OpenDialogAndCastFile() {
   GURL file_url = net::FilePathToFileURL(
-      media::GetTestDataFilePath(kButterflyVideoFileName));
+      media::GetTestDataFilePath("butterfly-853x480.webm"));
   test_ui_->ShowDialog();
   // Mock out file dialog operations, as those can't be simulated.
   test_ui_->SetLocalFile(file_url);
@@ -324,7 +298,7 @@
     WebContents* web_contents,
     const std::string& error_name,
     const std::string& error_message_substring) {
-  std::string script(base::StringPrintf(kCheckStartFailedScript,
+  std::string script(base::StringPrintf("checkStartFailed('%s', '%s');",
                                         error_name.c_str(),
                                         error_message_substring.c_str()));
   ExecuteJavaScriptAPI(web_contents, script);
@@ -333,8 +307,8 @@
 base::FilePath MediaRouterIntegrationBrowserTest::GetResourceFile(
     base::FilePath::StringPieceType relative_path) const {
   const base::FilePath full_path =
-      base::PathService::CheckedGet(base::DIR_ASSETS)
-          .Append(kResourcePath)
+      base::PathService::CheckedGet(base::DIR_MODULE)
+          .Append(FILE_PATH_LITERAL("media_router/browser_test_resources/"))
           .Append(relative_path);
   {
     // crbug.com/724573
@@ -396,14 +370,14 @@
 void MediaRouterIntegrationBrowserTest::ParseCommandLine() {
   base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
 
-  receiver_ = command_line->GetSwitchValueASCII(kReceiver);
+  receiver_ = command_line->GetSwitchValueASCII("receiver");
   if (receiver_.empty())
-    receiver_ = kTestSinkName;
+    receiver_ = "test-sink-1";
 }
 
 void MediaRouterIntegrationBrowserTest::CheckSessionValidity(
     WebContents* web_contents) {
-  ExecuteJavaScriptAPI(web_contents, kCheckSessionScript);
+  ExecuteJavaScriptAPI(web_contents, "checkSession();");
   std::string session_id(GetStartedConnectionId(web_contents));
   EXPECT_FALSE(session_id.empty());
   std::string default_request_session_id(
@@ -418,7 +392,8 @@
 void MediaRouterIntegrationBrowserTest::RunBasicTest() {
   WebContents* web_contents = StartSessionWithTestPageAndChooseSink();
   CheckSessionValidity(web_contents);
-  ExecuteJavaScriptAPI(web_contents, kTerminateSessionScript);
+  ExecuteJavaScriptAPI(web_contents,
+                       "terminateSessionAndWaitForStateChange();");
   WaitUntilNoRoutes(web_contents);
 }
 
@@ -426,18 +401,16 @@
     const std::string& message) {
   WebContents* web_contents = StartSessionWithTestPageAndChooseSink();
   CheckSessionValidity(web_contents);
-  ExecuteJavaScriptAPI(
-      web_contents,
-      base::StringPrintf(kSendMessageAndExpectResponseScript, message.c_str()));
+  ExecuteJavaScriptAPI(web_contents,
+                       base::StringPrintf("sendMessageAndExpectResponse('%s');",
+                                          message.c_str()));
 }
 
 void MediaRouterIntegrationBrowserTest::RunFailToSendMessageTest() {
   WebContents* web_contents = StartSessionWithTestPageAndChooseSink();
   CheckSessionValidity(web_contents);
-  ExecuteJavaScriptAPI(web_contents, kCloseSessionScript);
-  ExecuteJavaScriptAPI(
-      web_contents,
-      base::StringPrintf(kCheckSendMessageFailedScript, "closed"));
+  ExecuteJavaScriptAPI(web_contents, "closeConnectionAndWaitForStateChange();");
+  ExecuteJavaScriptAPI(web_contents, "checkSendMessageFailed('closed');");
 }
 
 void MediaRouterIntegrationBrowserTest::RunReconnectSessionTest() {
@@ -450,7 +423,7 @@
   ASSERT_NE(web_contents, new_web_contents);
   ExecuteJavaScriptAPI(
       new_web_contents,
-      base::StringPrintf(kReconnectSessionScript, session_id.c_str()));
+      base::StringPrintf("reconnectSession('%s');", session_id.c_str()));
   std::string reconnected_session_id;
   ASSERT_TRUE(content::ExecuteScriptAndExtractString(
       new_web_contents,
@@ -458,7 +431,8 @@
       &reconnected_session_id));
   ASSERT_EQ(session_id, reconnected_session_id);
 
-  ExecuteJavaScriptAPI(web_contents, kTerminateSessionScript);
+  ExecuteJavaScriptAPI(web_contents,
+                       "terminateSessionAndWaitForStateChange();");
   WaitUntilNoRoutes(web_contents);
 }
 
@@ -473,9 +447,10 @@
   ASSERT_NE(web_contents, new_web_contents);
   test_provider_->set_route_error_message("Unknown route");
   ExecuteJavaScriptAPI(new_web_contents,
-                       base::StringPrintf(kCheckReconnectSessionFailsScript,
+                       base::StringPrintf("checkReconnectSessionFails('%s')",
                                           session_id.c_str()));
-  ExecuteJavaScriptAPI(web_contents, kTerminateSessionScript);
+  ExecuteJavaScriptAPI(web_contents,
+                       "terminateSessionAndWaitForStateChange();");
   WaitUntilNoRoutes(web_contents);
 }
 
@@ -492,10 +467,11 @@
   WebContents* web_contents = StartSessionWithTestPageAndChooseSink();
   CheckSessionValidity(web_contents);
   std::string session_id(GetStartedConnectionId(web_contents));
-  ExecuteJavaScriptAPI(web_contents, kCloseSessionScript);
+  ExecuteJavaScriptAPI(web_contents, "closeConnectionAndWaitForStateChange();");
 
-  ExecuteJavaScriptAPI(web_contents, base::StringPrintf(kReconnectSessionScript,
-                                                        session_id.c_str()));
+  ExecuteJavaScriptAPI(
+      web_contents,
+      base::StringPrintf("reconnectSession('%s');", session_id.c_str()));
   std::string reconnected_session_id;
   ASSERT_TRUE(content::ExecuteScriptAndExtractString(
       web_contents,
@@ -661,7 +637,7 @@
   WebContents* web_contents = StartSessionWithTestPageAndChooseSink();
   CheckSessionValidity(web_contents);
   ExecuteJavaScriptAPI(web_contents,
-                       kSendMessageAndExpectConnectionCloseOnErrorScript);
+                       "sendMessageAndExpectConnectionCloseOnError()");
 }
 
 // TODO(crbug.com/1238688): Test is flaky on Windows and Linux.
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index cb90099..446b6cc 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-14396.0.0
\ No newline at end of file
+14399.0.0
diff --git a/chromeos/dbus/biod/biod_client.cc b/chromeos/dbus/biod/biod_client.cc
index 5892f2fb..b0cee078 100644
--- a/chromeos/dbus/biod/biod_client.cc
+++ b/chromeos/dbus/biod/biod_client.cc
@@ -413,10 +413,8 @@
       matches[user_id] = std::move(paths);
     }
 
-    if (msg.msg_case() == biod::FingerprintMessage::MsgCase::kScanResult) {
-      for (auto& observer : observers_) {
-        observer.BiodAuthScanDoneReceived(msg.scan_result(), matches);
-      }
+    for (auto& observer : observers_) {
+      observer.BiodAuthScanDoneReceived(msg, matches);
     }
   }
 
diff --git a/chromeos/dbus/biod/biod_client.h b/chromeos/dbus/biod/biod_client.h
index 57d3d56..2c9fff9 100644
--- a/chromeos/dbus/biod/biod_client.h
+++ b/chromeos/dbus/biod/biod_client.h
@@ -12,6 +12,7 @@
 #include "base/callback.h"
 #include "base/component_export.h"
 #include "chromeos/dbus/biod/constants.pb.h"
+#include "chromeos/dbus/biod/messages.pb.h"
 #include "chromeos/dbus/dbus_method_call_status.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
 
@@ -50,7 +51,7 @@
     // Called when an authentication scan is performed. If the scan is
     // successful, |matches| will equal all the enrollment IDs that match the
     // scan, and the labels of the matched fingerprints.
-    virtual void BiodAuthScanDoneReceived(biod::ScanResult scan_result,
+    virtual void BiodAuthScanDoneReceived(const biod::FingerprintMessage& msg,
                                           const AuthScanMatches& matches) {}
 
     // Called during an enrollment or authentication session to indicate a
diff --git a/chromeos/dbus/biod/fake_biod_client.cc b/chromeos/dbus/biod/fake_biod_client.cc
index e70864f5b..a28c58f 100644
--- a/chromeos/dbus/biod/fake_biod_client.cc
+++ b/chromeos/dbus/biod/fake_biod_client.cc
@@ -93,26 +93,29 @@
 }
 
 void FakeBiodClient::SendAuthScanDone(const std::string& fingerprint,
-                                      biod::ScanResult type_result) {
+                                      const biod::FingerprintMessage& msg) {
   // Auth scan signals do nothing if an auth session is not happening.
   if (current_session_ != FingerprintSession::AUTH)
     return;
 
   AuthScanMatches matches;
-  // Iterate through all the records to check if fingerprint is a match and
-  // populate |matches| accordingly. This searches through all the records and
-  // then each record's fake fingerprint, but neither of these should ever have
-  // more than five entries.
-  for (const auto& entry : records_) {
-    const std::unique_ptr<FakeRecord>& record = entry.second;
-    if (base::Contains(record->fake_fingerprint, fingerprint)) {
-      const std::string& user_id = record->user_id;
-      matches[user_id].push_back(entry.first);
+  if (msg.msg_case() == biod::FingerprintMessage::MsgCase::kScanResult &&
+      msg.scan_result() == biod::ScanResult::SCAN_RESULT_SUCCESS) {
+    // Iterate through all the records to check if fingerprint is a match and
+    // populate |matches| accordingly. This searches through all the records and
+    // then each record's fake fingerprint, but neither of these should ever
+    // have more than five entries.
+    for (const auto& entry : records_) {
+      const std::unique_ptr<FakeRecord>& record = entry.second;
+      if (base::Contains(record->fake_fingerprint, fingerprint)) {
+        const std::string& user_id = record->user_id;
+        matches[user_id].push_back(entry.first);
+      }
     }
   }
 
   for (auto& observer : observers_)
-    observer.BiodAuthScanDoneReceived(type_result, matches);
+    observer.BiodAuthScanDoneReceived(msg, matches);
 }
 
 void FakeBiodClient::SendSessionFailed() {
diff --git a/chromeos/dbus/biod/fake_biod_client.h b/chromeos/dbus/biod/fake_biod_client.h
index f6e04d4..683ad76 100644
--- a/chromeos/dbus/biod/fake_biod_client.h
+++ b/chromeos/dbus/biod/fake_biod_client.h
@@ -52,7 +52,7 @@
   // is a string which represents the finger, and will be compared with all the
   // stored fingerprints.
   void SendAuthScanDone(const std::string& fingerprint,
-                        biod::ScanResult type_result);
+                        const biod::FingerprintMessage& msg);
   void SendSessionFailed();
 
   // Clears all stored and current records from the fake storage.
diff --git a/chromeos/dbus/biod/fake_biod_client_unittest.cc b/chromeos/dbus/biod/fake_biod_client_unittest.cc
index e533832..23b2b95 100644
--- a/chromeos/dbus/biod/fake_biod_client_unittest.cc
+++ b/chromeos/dbus/biod/fake_biod_client_unittest.cc
@@ -15,6 +15,7 @@
 #include "dbus/object_path.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using biod::ERROR_UNABLE_TO_PROCESS;
 using biod::SCAN_RESULT_SUCCESS;
 
 namespace chromeos {
@@ -158,10 +159,12 @@
   task_runner_->RunUntilIdle();
   EXPECT_NE(returned_path, dbus::ObjectPath());
 
+  biod::FingerprintMessage msg;
   // Verify that by sending two attempt signals of fingerprints that have been
   // enrolled, the observer should receive two matches and zero non-matches.
-  fake_biod_client_.SendAuthScanDone(kTestFingerprint1[0], SCAN_RESULT_SUCCESS);
-  fake_biod_client_.SendAuthScanDone(kTestFingerprint2[0], SCAN_RESULT_SUCCESS);
+  msg.set_scan_result(SCAN_RESULT_SUCCESS);
+  fake_biod_client_.SendAuthScanDone(kTestFingerprint1[0], msg);
+  fake_biod_client_.SendAuthScanDone(kTestFingerprint2[0], msg);
   EXPECT_EQ(2, observer.num_matched_auth_scans_received());
   EXPECT_EQ(0, observer.num_unmatched_auth_scans_received());
 
@@ -169,8 +172,21 @@
   // been enrolled, the observer should receive two non-matches and zero
   // matches.
   observer.ResetAllCounts();
-  fake_biod_client_.SendAuthScanDone(kTestFingerprint3[0], SCAN_RESULT_SUCCESS);
-  fake_biod_client_.SendAuthScanDone(kTestFingerprint4[0], SCAN_RESULT_SUCCESS);
+  fake_biod_client_.SendAuthScanDone(kTestFingerprint3[0], msg);
+  fake_biod_client_.SendAuthScanDone(kTestFingerprint4[0], msg);
+  EXPECT_EQ(0, observer.num_matched_auth_scans_received());
+  EXPECT_EQ(2, observer.num_unmatched_auth_scans_received());
+
+  // Verify that by sending two attempt signals of failure during match
+  // (with enrolled finger or not), the observer should receive two
+  // non-matches and zero matches.
+  observer.ResetAllCounts();
+  // Error and ScanResult are in oneof field, so setting Error member here
+  // will automatically clear ScanResult member. For more information please
+  // check https://developers.google.com/protocol-buffers/docs/proto3#oneof
+  msg.set_error(ERROR_UNABLE_TO_PROCESS);
+  fake_biod_client_.SendAuthScanDone(kTestFingerprint1[0], msg);
+  fake_biod_client_.SendAuthScanDone(kTestFingerprint3[0], msg);
   EXPECT_EQ(0, observer.num_matched_auth_scans_received());
   EXPECT_EQ(2, observer.num_unmatched_auth_scans_received());
 }
@@ -220,9 +236,11 @@
   EXPECT_EQ(3u, record_paths_user1.size());
 
   AuthScanMatches expected_auth_scans_matches;
+  biod::FingerprintMessage msg;
   expected_auth_scans_matches[kUserOne] = {record_paths_user1[1],
                                            record_paths_user1[2]};
-  fake_biod_client_.SendAuthScanDone(kUser1Finger2[0], SCAN_RESULT_SUCCESS);
+  msg.set_scan_result(SCAN_RESULT_SUCCESS);
+  fake_biod_client_.SendAuthScanDone(kUser1Finger2[0], msg);
   EXPECT_EQ(expected_auth_scans_matches, observer.last_auth_scan_matches());
 
   // Verify that a fingerprint associated with one user and one label returns a
@@ -233,7 +251,7 @@
 
   expected_auth_scans_matches.clear();
   expected_auth_scans_matches[kUserTwo] = {record_paths_user2[0]};
-  fake_biod_client_.SendAuthScanDone(kUser2Finger1[0], SCAN_RESULT_SUCCESS);
+  fake_biod_client_.SendAuthScanDone(kUser2Finger1[0], msg);
   EXPECT_EQ(expected_auth_scans_matches, observer.last_auth_scan_matches());
 
   // Verify if two users register the same fingerprint, the matches contain
@@ -241,12 +259,20 @@
   expected_auth_scans_matches.clear();
   expected_auth_scans_matches[kUserOne] = {record_paths_user1[0]};
   expected_auth_scans_matches[kUserTwo] = {record_paths_user2[2]};
-  fake_biod_client_.SendAuthScanDone(kUser1Finger1[0], SCAN_RESULT_SUCCESS);
+  fake_biod_client_.SendAuthScanDone(kUser1Finger1[0], msg);
   EXPECT_EQ(expected_auth_scans_matches, observer.last_auth_scan_matches());
 
   // Verify if a unregistered finger is scanned, the matches are empty.
   expected_auth_scans_matches.clear();
-  fake_biod_client_.SendAuthScanDone("Unregistered", SCAN_RESULT_SUCCESS);
+  fake_biod_client_.SendAuthScanDone("Unregistered", msg);
+  EXPECT_EQ(expected_auth_scans_matches, observer.last_auth_scan_matches());
+
+  // Verify if error is returned, the matches are empty.
+  // Error and ScanResult are in oneof field, so setting Error member here
+  // will automatically clear ScanResult member. For more information please
+  // check https://developers.google.com/protocol-buffers/docs/proto3#oneof
+  msg.set_error(ERROR_UNABLE_TO_PROCESS);
+  fake_biod_client_.SendAuthScanDone(kUser1Finger1[0], msg);
   EXPECT_EQ(expected_auth_scans_matches, observer.last_auth_scan_matches());
 }
 
diff --git a/chromeos/dbus/biod/test_utils.cc b/chromeos/dbus/biod/test_utils.cc
index 82e5aaa..0dd9f81f 100644
--- a/chromeos/dbus/biod/test_utils.cc
+++ b/chromeos/dbus/biod/test_utils.cc
@@ -64,7 +64,7 @@
 }
 
 void TestBiodObserver::BiodAuthScanDoneReceived(
-    biod::ScanResult scan_result,
+    const biod::FingerprintMessage& msg,
     const AuthScanMatches& matches) {
   matches.empty() ? num_unmatched_auth_scans_received_++
                   : num_matched_auth_scans_received_++;
diff --git a/chromeos/dbus/biod/test_utils.h b/chromeos/dbus/biod/test_utils.h
index 619a1bee..2ff7a19 100644
--- a/chromeos/dbus/biod/test_utils.h
+++ b/chromeos/dbus/biod/test_utils.h
@@ -68,7 +68,7 @@
   void BiodEnrollScanDoneReceived(biod::ScanResult scan_result,
                                   bool is_complete,
                                   int percent_complete) override;
-  void BiodAuthScanDoneReceived(biod::ScanResult scan_result,
+  void BiodAuthScanDoneReceived(const biod::FingerprintMessage& msg,
                                 const AuthScanMatches& matches) override;
   void BiodSessionFailedReceived() override;
 
diff --git a/chromeos/strings/chromeos_strings_af.xtb b/chromeos/strings/chromeos_strings_af.xtb
index df83f90f..14fcd48 100644
--- a/chromeos/strings/chromeos_strings_af.xtb
+++ b/chromeos/strings/chromeos_strings_af.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">Versoek verkeertellers</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Voer die ontsluitkode in:</translation>
 <translation id="8206859287963243715">Sellulêr</translation>
 <translation id="8208861521865154048">Byvoordele</translation>
 <translation id="8217675307824400706">Verbind</translation>
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb
index cbcfec99..9726d44 100644
--- a/chromeos/strings/chromeos_strings_am.xtb
+++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° ሴ</translation>
 <translation id="8132480444149501833">የትራፊክ ቆጣሪዎችን ጠይቅ</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">የመክፈቻ ኮዱን ያስገቡ፡-</translation>
 <translation id="8206859287963243715">ሴሉላር</translation>
 <translation id="8208861521865154048">ጥቅማጥቅሞች</translation>
 <translation id="8217675307824400706">ይገናኙ</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb
index 73eaa1a..01ebbbc 100644
--- a/chromeos/strings/chromeos_strings_ar.xtb
+++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° مئوية</translation>
 <translation id="8132480444149501833">طلب عدّادات حركة بيانات الشبكة</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">إدخال رمز فتح القفل:</translation>
 <translation id="8206859287963243715">خلوي</translation>
 <translation id="8208861521865154048">المزايا</translation>
 <translation id="8217675307824400706">الاتصال بالإنترنت</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb
index 398885b82..4b6e69a 100644
--- a/chromeos/strings/chromeos_strings_as.xtb
+++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ট্ৰেফিক কাউণ্টাৰৰ অনুৰোধ কৰক</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">আনলক কৰা ক’ডটো দিয়ক:</translation>
 <translation id="8206859287963243715">চেলুলাৰ</translation>
 <translation id="8208861521865154048">লাভালাভসমূহ</translation>
 <translation id="8217675307824400706">সংযুক্ত হওক</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb
index 7a0a413..dd17d42 100644
--- a/chromeos/strings/chromeos_strings_az.xtb
+++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Nəqliyyat Sayğacları Sorğulayın</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Kiliddən çıxarma kodunu daxil edin:</translation>
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208861521865154048">İmtiyazlar</translation>
 <translation id="8217675307824400706">Qoşulun</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb
index d8babd0..d48217a 100644
--- a/chromeos/strings/chromeos_strings_be.xtb
+++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Запытаць лічыльнікі трафіка</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Увядзіце код для разблакіроўкі:</translation>
 <translation id="8206859287963243715">Мабільная сетка</translation>
 <translation id="8208861521865154048">Бонусы</translation>
 <translation id="8217675307824400706">Устанавіце падключэнне</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb
index 06c9541b..f2bfb3a 100644
--- a/chromeos/strings/chromeos_strings_bg.xtb
+++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">Заявяване на броячи за трафика</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Въведете кода за отключване:</translation>
 <translation id="8206859287963243715">Клетъчно</translation>
 <translation id="8208861521865154048">Предимства</translation>
 <translation id="8217675307824400706">Установяване на връзка</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb
index 1c061aa..761aaa7 100644
--- a/chromeos/strings/chromeos_strings_bn.xtb
+++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° সেঃ</translation>
 <translation id="8132480444149501833">ট্রাফিক কাউন্টার্স-এর অনুরোধ করুন</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">আনলক করার কোডটি লিখুন:</translation>
 <translation id="8206859287963243715">সেলুলার</translation>
 <translation id="8208861521865154048">বিশেষ সুবিধা</translation>
 <translation id="8217675307824400706">কানেক্ট হন</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb
index a8045b7..3f932f3a1 100644
--- a/chromeos/strings/chromeos_strings_bs.xtb
+++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Zatraži brojače saobraćaja</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Unesite kôd za otključavanje:</translation>
 <translation id="8206859287963243715">Mobitel</translation>
 <translation id="8208861521865154048">Privilegije</translation>
 <translation id="8217675307824400706">Povežite se</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb
index cb77f7a0..1b86e081 100644
--- a/chromeos/strings/chromeos_strings_ca.xtb
+++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Sol·licita els comptadors de trànsit</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Introdueix el codi de desbloqueig:</translation>
 <translation id="8206859287963243715">Cel·lular</translation>
 <translation id="8208861521865154048">Avantatges</translation>
 <translation id="8217675307824400706">Connecta't</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb
index a56e8df..7d36b87a 100644
--- a/chromeos/strings/chromeos_strings_cs.xtb
+++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Požadovat počítadla návštěvnosti</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Zadejte kód pro odemknutí:</translation>
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208861521865154048">Výhody</translation>
 <translation id="8217675307824400706">Připojte se</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb
index fbdd6a3..59fe1eb 100644
--- a/chromeos/strings/chromeos_strings_da.xtb
+++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Anmod om trafiktællere</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Angiv koden til oplåsning:</translation>
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208861521865154048">Fordele</translation>
 <translation id="8217675307824400706">Få forbindelse</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb
index 0f91bb53..469a123 100644
--- a/chromeos/strings/chromeos_strings_de.xtb
+++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Traffic-Zähler anfordern</translation>
 <translation id="8138405288920084977">LTE-Advanced</translation>
-<translation id="816013303019725643">Geben Sie den Entsperrcode ein:</translation>
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208861521865154048">Vorteile</translation>
 <translation id="8217675307824400706">Verbindung herstellen</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb
index df86be5..5d20fa3 100644
--- a/chromeos/strings/chromeos_strings_el.xtb
+++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Αίτημα για μετρητές επισκεψιμότητας</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Εισαγάγετε τον κωδικό ξεκλειδώματος:</translation>
 <translation id="8206859287963243715">Κινητό</translation>
 <translation id="8208861521865154048">Προνόμια</translation>
 <translation id="8217675307824400706">Συνδεθείτε</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb
index a01d8f57..d876508 100644
--- a/chromeos/strings/chromeos_strings_en-GB.xtb
+++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Request traffic counters</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Enter the unlock code:</translation>
 <translation id="8206859287963243715">Mobile</translation>
 <translation id="8208861521865154048">Perks</translation>
 <translation id="8217675307824400706">Get connected</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb
index 3b45fd8e..94269b02 100644
--- a/chromeos/strings/chromeos_strings_es-419.xtb
+++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Solicitar contadores de tráfico</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Ingresa el código de desbloqueo:</translation>
 <translation id="8206859287963243715">Celular</translation>
 <translation id="8208861521865154048">Beneficios</translation>
 <translation id="8217675307824400706">Conéctate</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb
index f921245..1b805bb 100644
--- a/chromeos/strings/chromeos_strings_es.xtb
+++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Solicitar contadores de tráfico</translation>
 <translation id="8138405288920084977">LTE Advanced</translation>
-<translation id="816013303019725643">Escribe el código de desbloqueo:</translation>
 <translation id="8206859287963243715">Móvil</translation>
 <translation id="8208861521865154048">Ventajas</translation>
 <translation id="8217675307824400706">Conéctate</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb
index 908415be..a8c3325 100644
--- a/chromeos/strings/chromeos_strings_et.xtb
+++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Taotle liiklusloendureid</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Sisestage avamiskood:</translation>
 <translation id="8206859287963243715">Mobiil</translation>
 <translation id="8208861521865154048">Hüved</translation>
 <translation id="8217675307824400706">Looge ühendus</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb
index 831cf51..c00c6c4 100644
--- a/chromeos/strings/chromeos_strings_eu.xtb
+++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Eskatu trafiko-kontagailuak</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Idatzi desblokeatzeko kodea:</translation>
 <translation id="8206859287963243715">Konexio mugikorra</translation>
 <translation id="8208861521865154048">Abantailak</translation>
 <translation id="8217675307824400706">Konektatu</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb
index 739e68e..3445c79 100644
--- a/chromeos/strings/chromeos_strings_fa.xtb
+++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> درجه سانتی‌گراد</translation>
 <translation id="8132480444149501833">درخواست شمارش‌گرهای ترافیک</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">کد باز کردن قفل را وارد کنید:</translation>
 <translation id="8206859287963243715">سلولی</translation>
 <translation id="8208861521865154048">هدیه‌ها</translation>
 <translation id="8217675307824400706">متصل شوید</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb
index 7fffcf9f..3fa2b25 100644
--- a/chromeos/strings/chromeos_strings_fi.xtb
+++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Pyydä liikennelaskureita</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Lisää avauskoodi:</translation>
 <translation id="8206859287963243715">Matkapuhelin</translation>
 <translation id="8208861521865154048">Edut</translation>
 <translation id="8217675307824400706">Muodosta yhteys</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb
index 53dbc15..b7427a8 100644
--- a/chromeos/strings/chromeos_strings_fil.xtb
+++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Humiling ng Mga Traffic Counter</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Ilagay ang code sa pag-unlock:</translation>
 <translation id="8206859287963243715">Cellular</translation>
 <translation id="8208861521865154048">Mga Perk</translation>
 <translation id="8217675307824400706">Kumonekta</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb
index a0cbbb5..c2c0280 100644
--- a/chromeos/strings/chromeos_strings_fr-CA.xtb
+++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Demander des compteurs de trafic</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Entrez le code de déverrouillage :</translation>
 <translation id="8206859287963243715">Cellulaire</translation>
 <translation id="8208861521865154048">Avantages</translation>
 <translation id="8217675307824400706">Se connecter</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb
index 3c334066..dd16dd93 100644
--- a/chromeos/strings/chromeos_strings_fr.xtb
+++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Demander les compteurs de trafic</translation>
 <translation id="8138405288920084977">LTE Advanced</translation>
-<translation id="816013303019725643">Saisissez le code de déverrouillage :</translation>
 <translation id="8206859287963243715">Mobile</translation>
 <translation id="8208861521865154048">Avantages</translation>
 <translation id="8217675307824400706">Se connecter</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb
index adac197..4e4068b 100644
--- a/chromeos/strings/chromeos_strings_gl.xtb
+++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Solicitar contadores de tráfico</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Mete o código de desbloqueo:</translation>
 <translation id="8206859287963243715">Móbil</translation>
 <translation id="8208861521865154048">Vantaxes</translation>
 <translation id="8217675307824400706">Conéctate</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb
index 7a2b10f..30226f0b 100644
--- a/chromeos/strings/chromeos_strings_gu.xtb
+++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ટ્રાફિક કાઉન્ટરની વિનંતી કરો</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">અનલૉક કરવાનો કોડ દાખલ કરો:</translation>
 <translation id="8206859287963243715">સેલ્યુલર</translation>
 <translation id="8208861521865154048">લાભ</translation>
 <translation id="8217675307824400706">કનેક્ટ કરો</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb
index a49ab8b..28f698d 100644
--- a/chromeos/strings/chromeos_strings_hi.xtb
+++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ट्रैफ़िक काउंटर का अनुरोध करें</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">अनलॉक करने का कोड डालें:</translation>
 <translation id="8206859287963243715">सेलुलर</translation>
 <translation id="8208861521865154048">फ़ायदे</translation>
 <translation id="8217675307824400706">वाई-फ़ाई से कनेक्ट हों</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb
index 061e262b..f600d7a 100644
--- a/chromeos/strings/chromeos_strings_hr.xtb
+++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Zatraži brojače prometa</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Unesite kôd za otključavanje:</translation>
 <translation id="8206859287963243715">Mobitel</translation>
 <translation id="8208861521865154048">Pogodnosti</translation>
 <translation id="8217675307824400706">Povežite se</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb
index 5bcd521..eb4902e 100644
--- a/chromeos/strings/chromeos_strings_hu.xtb
+++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Forgalomszámlálók kérése</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Adja meg a feloldás kódját:</translation>
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208861521865154048">Előnyök</translation>
 <translation id="8217675307824400706">Csatlakozás</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb
index c6d353d8..df63b92 100644
--- a/chromeos/strings/chromeos_strings_hy.xtb
+++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Հայցել թրաֆիկի հաշվիչներ</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Մուտքագրեք ապակողպման կոդը՝</translation>
 <translation id="8206859287963243715">Բջջային</translation>
 <translation id="8208861521865154048">Բոնուսներ</translation>
 <translation id="8217675307824400706">Միացեք ցանցին</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb
index 60611fb4..765f8a8a 100644
--- a/chromeos/strings/chromeos_strings_id.xtb
+++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Minta Penghitung Traffic</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Masukkan kode pembuka kunci:</translation>
 <translation id="8206859287963243715">Seluler</translation>
 <translation id="8208861521865154048">Keuntungan</translation>
 <translation id="8217675307824400706">Hubungkan</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb
index 8a12af40..bf3945f 100644
--- a/chromeos/strings/chromeos_strings_is.xtb
+++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Biðja um talningu umferðar</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Sláðu inn kóðann til að taka úr lás:</translation>
 <translation id="8206859287963243715">Farsímakerfi</translation>
 <translation id="8208861521865154048">Fríðindi</translation>
 <translation id="8217675307824400706">Kominn tími til að tengjast</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb
index a36c4b10..de9d6a0e 100644
--- a/chromeos/strings/chromeos_strings_it.xtb
+++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Richiedi contatori di traffico</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Inserisci il codice di sblocco:</translation>
 <translation id="8206859287963243715">Cellulare</translation>
 <translation id="8208861521865154048">Vantaggi</translation>
 <translation id="8217675307824400706">Connettiti</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb
index 9265dec..45b5e75a 100644
--- a/chromeos/strings/chromeos_strings_iw.xtb
+++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />‎°‎ C</translation>
 <translation id="8132480444149501833">בקשה למוני תנועה</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">צריך להזין את קוד ביטול הנעילה:</translation>
 <translation id="8206859287963243715">סלולארי</translation>
 <translation id="8208861521865154048">הטבות</translation>
 <translation id="8217675307824400706">התחברות</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb
index 5fba91c..b061052 100644
--- a/chromeos/strings/chromeos_strings_ja.xtb
+++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> ℃</translation>
 <translation id="8132480444149501833">トラフィック カウンタをリクエスト</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">ロック解除コードを入力:</translation>
 <translation id="8206859287963243715">携帯電話</translation>
 <translation id="8208861521865154048">特典</translation>
 <translation id="8217675307824400706">接続</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb
index 3de1c02..da0477e 100644
--- a/chromeos/strings/chromeos_strings_ka.xtb
+++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">ტრაფიკის მთვლელების მოთხოვნა</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">შეიყვანეთ განბლოკვის კოდი:</translation>
 <translation id="8206859287963243715">ფიჭური</translation>
 <translation id="8208861521865154048">ბონუსები</translation>
 <translation id="8217675307824400706">დაამყარეთ კავშირი</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb
index 0f484946..bf73b1f 100644
--- a/chromeos/strings/chromeos_strings_kk.xtb
+++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Трафик есептегіштерін сұрау</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Құлыпты ашу кодын енгізіңіз:</translation>
 <translation id="8206859287963243715">Ұялы</translation>
 <translation id="8208861521865154048">Бонустар</translation>
 <translation id="8217675307824400706">Қосылу</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb
index b98fce8..73b9ac7 100644
--- a/chromeos/strings/chromeos_strings_km.xtb
+++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -117,6 +117,7 @@
 <translation id="2585245331261708204">អ្វីដែលថ្មីសម្រាប់ Chrome OS</translation>
 <translation id="2619761439309613843">ការផ្ទុក​ឡើងវិញ​ប្រចាំថ្ងៃ</translation>
 <translation id="2620436844016719705">ប្រព័ន្ធ</translation>
+<translation id="2695514675076754339">បញ្ចូលកូដ​ដោះសោ 8 តួ</translation>
 <translation id="2740531572673183784">យល់ព្រម</translation>
 <translation id="2751739896257479635">ការផ្ទៀងផ្ទាត់ EAP ដំណាក់កាលទី 2</translation>
 <translation id="2783010256799387990">ជាប់</translation>
@@ -506,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ស្នើសុំមុខងាររាប់ចំនួនចរាចរណ៍</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">បញ្ចូលកូដដោះសោ៖</translation>
 <translation id="8206859287963243715">ប្រព័ន្ធទូរស័ព្ទ</translation>
 <translation id="8208861521865154048">អត្ថប្រយោជន៍</translation>
 <translation id="8217675307824400706">តភ្ជាប់</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb
index 5765aa2..db46e68 100644
--- a/chromeos/strings/chromeos_strings_kn.xtb
+++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ಟ್ರಾಫಿಕ್ ಕೌಂಟರ್‌ಗಳನ್ನು ವಿನಂತಿಸಿ</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">ಅನ್‌ಲಾಕ್ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ:</translation>
 <translation id="8206859287963243715">ಸೆಲ್ಯುಲಾರ್</translation>
 <translation id="8208861521865154048">ಪರ್ಕ್‌ಗಳು</translation>
 <translation id="8217675307824400706">ಕನೆಕ್ಟ್ ಆಗಿರಿ</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb
index b24dd21..6fb85b6 100644
--- a/chromeos/strings/chromeos_strings_ko.xtb
+++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">트래픽 카운터 요청</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">잠금 해제 코드 입력:</translation>
 <translation id="8206859287963243715">휴대전화</translation>
 <translation id="8208861521865154048">혜택</translation>
 <translation id="8217675307824400706">연결</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb
index ff41b4d..e19783c0 100644
--- a/chromeos/strings/chromeos_strings_ky.xtb
+++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Трафикти эсептегичтерди сурануу</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Кулпуну ачуу кодун киргизүү:</translation>
 <translation id="8206859287963243715">Уюктук</translation>
 <translation id="8208861521865154048">Бонустар</translation>
 <translation id="8217675307824400706">Туташыңыз</translation>
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb
index 51955d7..9297b37 100644
--- a/chromeos/strings/chromeos_strings_lo.xtb
+++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -508,7 +508,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ຮ້ອງຂໍຕົວນັບທຣາບຟິກ</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">ໃສ່ລະຫັດປົດລັອກ:</translation>
 <translation id="8206859287963243715">ເຊວລູລາ</translation>
 <translation id="8208861521865154048">ສິດທິປະໂຫຍດຕ່າງໆ</translation>
 <translation id="8217675307824400706">ເລີ່ມການເຊື່ອມຕໍ່</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb
index e4879f6c..4cefe76 100644
--- a/chromeos/strings/chromeos_strings_lt.xtb
+++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Pateikti srauto skaitiklių užklausą</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Įveskite atrakinimo kodą:</translation>
 <translation id="8206859287963243715">Mobilusis</translation>
 <translation id="8208861521865154048">Privilegijos</translation>
 <translation id="8217675307824400706">Prisijungimas</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb
index ad593b5..ac74e62 100644
--- a/chromeos/strings/chromeos_strings_lv.xtb
+++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Pieprasīt datplūsmas skaitītājus</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Ievadiet atbloķēšanas kodu:</translation>
 <translation id="8206859287963243715">Mobilais tālrunis</translation>
 <translation id="8208861521865154048">Priekšrocības</translation>
 <translation id="8217675307824400706">Savienojuma izveide</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb
index 62f379c..898fe1b 100644
--- a/chromeos/strings/chromeos_strings_mk.xtb
+++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Побарајте бројачи на сообраќај</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Внесете го кодот за отклучување:</translation>
 <translation id="8206859287963243715">Мобилен</translation>
 <translation id="8208861521865154048">Поволности</translation>
 <translation id="8217675307824400706">Поврзете се</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb
index ed4842f..5ffa442 100644
--- a/chromeos/strings/chromeos_strings_ml.xtb
+++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ട്രാഫിക് കൗണ്ടറുകൾ അഭ്യർത്ഥിക്കുക</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">അൺലോക്ക് കോഡ് നൽകുക:</translation>
 <translation id="8206859287963243715">സെല്ലുലാര്‍‌</translation>
 <translation id="8208861521865154048">പെർക്കുകൾ</translation>
 <translation id="8217675307824400706">കണക്റ്റ് ചെയ്യുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb
index 5297cde..a53a288 100644
--- a/chromeos/strings/chromeos_strings_mn.xtb
+++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">Ачаалал тоологчийн хүсэлт тавих</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Түгжээг тайлах кодыг оруулах:</translation>
 <translation id="8206859287963243715">Үүрэн холбоо</translation>
 <translation id="8208861521865154048">Нэмэлтүүд</translation>
 <translation id="8217675307824400706">Холбогдох</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb
index 1725c36..87390667 100644
--- a/chromeos/strings/chromeos_strings_mr.xtb
+++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° से</translation>
 <translation id="8132480444149501833">ट्रॅफिक काउंटरची विनंती करा</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">अनलॉक कोड एंटर करा:</translation>
 <translation id="8206859287963243715">सेल्यूलर</translation>
 <translation id="8208861521865154048">लाभ</translation>
 <translation id="8217675307824400706">कनेक्ट व्हा</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb
index 4c07eea..388bfa8 100644
--- a/chromeos/strings/chromeos_strings_ms.xtb
+++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">Minta Pembilang Trafik</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Masukkan kod buka kunci:</translation>
 <translation id="8206859287963243715">Selular</translation>
 <translation id="8208861521865154048">Manfaat</translation>
 <translation id="8217675307824400706">Berhubung</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb
index 76698a67..71defdb 100644
--- a/chromeos/strings/chromeos_strings_my.xtb
+++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° စင်တီဂရိတ်</translation>
 <translation id="8132480444149501833">ကွန်ရက်ဒေတာ ရေတွက်စနစ်များ တောင်းဆိုရန်</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">လော့ခ်ဖွင့်ရန်ကုဒ် ထည့်ပါ-</translation>
 <translation id="8206859287963243715">ဆဲလ်လူလာ</translation>
 <translation id="8208861521865154048">ခံစားခွင့်များ</translation>
 <translation id="8217675307824400706">ချိတ်ဆက်လိုက်ပါ</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb
index 0fa3dec..a5b3ec1 100644
--- a/chromeos/strings/chromeos_strings_ne.xtb
+++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° से.</translation>
 <translation id="8132480444149501833">ट्राफिक काउन्टरसम्बन्धी जानकारी माग्दै अनुरोध पठाउनुहोस्</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">अनलक कोड हाल्नुहोस्:</translation>
 <translation id="8206859287963243715">सेल्युलर</translation>
 <translation id="8208861521865154048">लाभहरू</translation>
 <translation id="8217675307824400706">कनेक्ट गर्नुहोस्</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb
index 7f0916b..f9bce7f 100644
--- a/chromeos/strings/chromeos_strings_nl.xtb
+++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Verkeerstellers aanvragen</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Geef de ontgrendelingscode op:</translation>
 <translation id="8206859287963243715">Mobiel</translation>
 <translation id="8208861521865154048">Speciale voordelen</translation>
 <translation id="8217675307824400706">Verbinding maken</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb
index c718b32..1ea217c 100644
--- a/chromeos/strings/chromeos_strings_no.xtb
+++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Be om trafikktellere</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Oppgi opplåsingskoden:</translation>
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208861521865154048">Fordeler</translation>
 <translation id="8217675307824400706">Koble til</translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb
index 8ebfe58a..a0e26e0 100644
--- a/chromeos/strings/chromeos_strings_or.xtb
+++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ଟ୍ରାଫିକ୍ କାଉଣ୍ଟରର ଅନୁରୋଧ କରନ୍ତୁ</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">ଅନଲକ କୋଡ ଲେଖନ୍ତୁ:</translation>
 <translation id="8206859287963243715">ସେଲ୍ୟୁଲାର୍</translation>
 <translation id="8208861521865154048">ପର୍କଗୁଡ଼ିକ</translation>
 <translation id="8217675307824400706">ସଂଯୋଗ କରନ୍ତୁ</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb
index f8051fe..c56a2a5 100644
--- a/chromeos/strings/chromeos_strings_pa.xtb
+++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ਟਰੈਫ਼ਿਕ ਕਾਉਂਟਰਾਂ ਲਈ ਬੇਨਤੀ ਕਰੋ</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">ਅਣਲਾਕ ਕੋਡ ਦਾਖਲ ਕਰੋ:</translation>
 <translation id="8206859287963243715">Cellular</translation>
 <translation id="8208861521865154048">ਫ਼ਾਇਦੇ</translation>
 <translation id="8217675307824400706">ਕਨੈਕਟ ਹੋਵੋ</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb
index 9eb15e3..bacfdd9 100644
--- a/chromeos/strings/chromeos_strings_pl.xtb
+++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">Poproś o liczniki natężenia ruchu</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Wpisz kod odblokowania:</translation>
 <translation id="8206859287963243715">Komórka</translation>
 <translation id="8208861521865154048">Korzyści</translation>
 <translation id="8217675307824400706">Połącz się</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb
index d72d1bb..9eff64d 100644
--- a/chromeos/strings/chromeos_strings_pt-BR.xtb
+++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Solicitar contadores de tráfego</translation>
 <translation id="8138405288920084977">LTE Advanced</translation>
-<translation id="816013303019725643">Digite o código de desbloqueio:</translation>
 <translation id="8206859287963243715">Celular</translation>
 <translation id="8208861521865154048">Benefícios</translation>
 <translation id="8217675307824400706">Conectar</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb
index 78a509a..4f4c888f 100644
--- a/chromeos/strings/chromeos_strings_pt-PT.xtb
+++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Solicitar contadores de tráfego</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Introduza o código de desbloqueio:</translation>
 <translation id="8206859287963243715">Telemóvel</translation>
 <translation id="8208861521865154048">Benefícios</translation>
 <translation id="8217675307824400706">Estabeleça ligação</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb
index 5ccd3e8..7f8c978 100644
--- a/chromeos/strings/chromeos_strings_ro.xtb
+++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Solicită contoare de trafic</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Introduceți codul de deblocare:</translation>
 <translation id="8206859287963243715">Celular</translation>
 <translation id="8208861521865154048">Avantaje</translation>
 <translation id="8217675307824400706">Conectează-te</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb
index 964e62a..2f88fde 100644
--- a/chromeos/strings/chromeos_strings_ru.xtb
+++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Запросить счетчики трафика</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Введите код разблокировки:</translation>
 <translation id="8206859287963243715">Сотовый</translation>
 <translation id="8208861521865154048">Преимущества</translation>
 <translation id="8217675307824400706">Подключение</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb
index 99896de1..04e7f2413 100644
--- a/chromeos/strings/chromeos_strings_si.xtb
+++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">තදබදය ගණනය කිරීම් ඉල්ලන්න</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">අගුලු හැරීමේ කේතය ඇතුළු කරන්න:</translation>
 <translation id="8206859287963243715">සෙලියුලර්</translation>
 <translation id="8208861521865154048">අමතර වාසි</translation>
 <translation id="8217675307824400706">සම්බන්ධ කර ගන්න</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb
index 45c144d..b71ca5b5 100644
--- a/chromeos/strings/chromeos_strings_sk.xtb
+++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Požiadať o údaje počítadiel návštevnosti</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Zadajte kód na odblokovanie:</translation>
 <translation id="8206859287963243715">Mobilné</translation>
 <translation id="8208861521865154048">Výhody</translation>
 <translation id="8217675307824400706">Pripojte sa</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb
index b3158d0c..45cbfbd 100644
--- a/chromeos/strings/chromeos_strings_sl.xtb
+++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Zahtevaj števce prometa</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Vnesite kodo za odklepanje:</translation>
 <translation id="8206859287963243715">Prenosni</translation>
 <translation id="8208861521865154048">Ugodnosti</translation>
 <translation id="8217675307824400706">Povežite se</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb
index ccb83b9d..5f5b33a6 100644
--- a/chromeos/strings/chromeos_strings_sq.xtb
+++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Kërko matësit e trafikut</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Fut kodin e shkyçjes:</translation>
 <translation id="8206859287963243715">Rrjeti celular</translation>
 <translation id="8208861521865154048">Avantazhet</translation>
 <translation id="8217675307824400706">Lidh</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb
index ffbb2a9..d3cab45 100644
--- a/chromeos/strings/chromeos_strings_sr-Latn.xtb
+++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Zatraži brojače saobraćaja</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Unesite kôd za otključavanje:</translation>
 <translation id="8206859287963243715">Mobilni uređaj</translation>
 <translation id="8208861521865154048">Pogodnosti</translation>
 <translation id="8217675307824400706">Povežite se</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb
index 56f7c3f..732c1fe 100644
--- a/chromeos/strings/chromeos_strings_sr.xtb
+++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Затражи бројаче саобраћаја</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Унесите кôд за откључавање:</translation>
 <translation id="8206859287963243715">Мобилни уређај</translation>
 <translation id="8208861521865154048">Погодности</translation>
 <translation id="8217675307824400706">Повежите се</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb
index e92066c..4cdcebe 100644
--- a/chromeos/strings/chromeos_strings_sv.xtb
+++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8132480444149501833">Begär trafikräknare</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Ange koden för upplåsning</translation>
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208861521865154048">Förmåner</translation>
 <translation id="8217675307824400706">Anslutning</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb
index d7b9908..f4d10c8 100644
--- a/chromeos/strings/chromeos_strings_sw.xtb
+++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Omba Hesabu za Trafiki</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Weka msimbo wa kufungua:</translation>
 <translation id="8206859287963243715">Simu ya Mkononi</translation>
 <translation id="8208861521865154048">Manufaa</translation>
 <translation id="8217675307824400706">Unganisha</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb
index 4e42b277..9ccbe3ea 100644
--- a/chromeos/strings/chromeos_strings_ta.xtb
+++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">டிராஃபிக் கவுண்ட்டர்களைக் கோரு</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">அன்லாக் செய்வதற்கான குறியீட்டை டைப் செய்யவும்:</translation>
 <translation id="8206859287963243715">செல்லுலர்</translation>
 <translation id="8208861521865154048">சலுகைகள்</translation>
 <translation id="8217675307824400706">இணையத்துடன் இணைத்திடுங்கள்</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb
index 0a1584a4..5d8b094 100644
--- a/chromeos/strings/chromeos_strings_te.xtb
+++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">ట్రాఫిక్ కౌంటర్‌ల కోసం రిక్వెస్ట్ చేయండి</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">అన్‌లాక్ కోడ్‌ను ఎంటర్ చేయండి:</translation>
 <translation id="8206859287963243715">సెల్యులార్</translation>
 <translation id="8208861521865154048">పెర్క్‌లు</translation>
 <translation id="8217675307824400706">కనెక్ట్ అవ్వండి</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb
index fba6c09..1e5b2a83 100644
--- a/chromeos/strings/chromeos_strings_th.xtb
+++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">ขอตัวนับการรับส่งข้อมูล</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">ป้อนรหัสปลดล็อก:</translation>
 <translation id="8206859287963243715">โทรศัพท์มือถือ</translation>
 <translation id="8208861521865154048">สิทธิประโยชน์</translation>
 <translation id="8217675307824400706">เชื่อมต่ออินเทอร์เน็ต</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb
index f3514f9..daab9bd 100644
--- a/chromeos/strings/chromeos_strings_tr.xtb
+++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Trafik Sayaçlarını İste</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Kilidi açma kodunu girin:</translation>
 <translation id="8206859287963243715">Cep telefonu</translation>
 <translation id="8208861521865154048">Avantajlar</translation>
 <translation id="8217675307824400706">Bağlanın</translation>
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb
index 95dab28..df2df31 100644
--- a/chromeos/strings/chromeos_strings_uk.xtb
+++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Надіслати запит на лічильники трафіку</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Введіть код розблокування:</translation>
 <translation id="8206859287963243715">Мобільний</translation>
 <translation id="8208861521865154048">Бонуси</translation>
 <translation id="8217675307824400706">Підключіться до Інтернету</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb
index fc419fcd..70e67a3 100644
--- a/chromeos/strings/chromeos_strings_ur.xtb
+++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -506,7 +506,6 @@
 <translation id="8129620843620772246">C °<ph name="TEMPERATURE_C" /></translation>
 <translation id="8132480444149501833">ٹریفک کاؤنٹرز کی درخواست کریں</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">غیر مقفل کرنے کا کوڈ درج کریں:</translation>
 <translation id="8206859287963243715">سیلولر</translation>
 <translation id="8208861521865154048">فوائد</translation>
 <translation id="8217675307824400706">منسلک ہوں</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb
index 71a35db..787a5094 100644
--- a/chromeos/strings/chromeos_strings_uz.xtb
+++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Traffik hisoblagichlarini chaqirish</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Ochish kodini kiriting:</translation>
 <translation id="8206859287963243715">Uyali</translation>
 <translation id="8208861521865154048">Imtiyozlar</translation>
 <translation id="8217675307824400706">Internetga ulaning</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb
index bcf3c8b6..421c68f6 100644
--- a/chromeos/strings/chromeos_strings_vi.xtb
+++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">Yêu cầu Bộ đếm lưu lượng truy cập</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">Nhập mã mở khoá:</translation>
 <translation id="8206859287963243715">Di động</translation>
 <translation id="8208861521865154048">Đặc quyền</translation>
 <translation id="8217675307824400706">Kết nối</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb
index 22dacbec1..1bf6d70 100644
--- a/chromeos/strings/chromeos_strings_zh-CN.xtb
+++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">请求流量计数器</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">请输入解锁代码:</translation>
 <translation id="8206859287963243715">蜂窝网络设备</translation>
 <translation id="8208861521865154048">福利</translation>
 <translation id="8217675307824400706">连接到网络</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb
index ad7d451..57a106b 100644
--- a/chromeos/strings/chromeos_strings_zh-HK.xtb
+++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation>
 <translation id="8132480444149501833">要求流量計數器</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">輸入解鎖碼:</translation>
 <translation id="8206859287963243715">蜂窩</translation>
 <translation id="8208861521865154048">獎賞</translation>
 <translation id="8217675307824400706">連線至互聯網</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb
index 4ba2d66..19a39077 100644
--- a/chromeos/strings/chromeos_strings_zh-TW.xtb
+++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">要求流量計數器</translation>
 <translation id="8138405288920084977">LTEAdvanced</translation>
-<translation id="816013303019725643">輸入解鎖碼:</translation>
 <translation id="8206859287963243715">手機</translation>
 <translation id="8208861521865154048">獎勵</translation>
 <translation id="8217675307824400706">連上網路</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb
index 90f71905..a86908b 100644
--- a/chromeos/strings/chromeos_strings_zu.xtb
+++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -507,7 +507,6 @@
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8132480444149501833">Cela Izibalo Zethrafikhi</translation>
 <translation id="8138405288920084977">I-LTEAdvanced</translation>
-<translation id="816013303019725643">Faka ikhodi yokuvula:</translation>
 <translation id="8206859287963243715">Iselula</translation>
 <translation id="8208861521865154048">Izinzuzo</translation>
 <translation id="8217675307824400706">Xhumeka</translation>
diff --git a/components/autofill_assistant/browser/service/cup_impl.cc b/components/autofill_assistant/browser/service/cup_impl.cc
index 5bcdb29..ac00b359 100644
--- a/components/autofill_assistant/browser/service/cup_impl.cc
+++ b/components/autofill_assistant/browser/service/cup_impl.cc
@@ -5,10 +5,13 @@
 #include "cup_impl.h"
 
 #include "base/base64.h"
+#include "base/command_line.h"
+#include "base/feature_list.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/switches.h"
 #include "components/client_update_protocol/ecdsa.h"
 
 namespace {
@@ -19,11 +22,11 @@
     "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgH30WRJf4g6I2C1FKsBQF3qHANLw"
     "thwYsNt2PWTDQBS0ufSRE83piOPoJQcePzTkMfbghjnZerDjLJhBsDkfFg==";
 
-std::string GetKey(const char* key_bytes_base64) {
+absl::optional<std::string> GetKey(const std::string& key_bytes_base64) {
   std::string result;
-  return base::Base64Decode(std::string(key_bytes_base64), &result)
-             ? result
-             : std::string();
+  return base::Base64Decode(key_bytes_base64, &result)
+             ? absl::optional<std::string>(result)
+             : absl::nullopt;
 }
 
 }  // namespace
@@ -32,9 +35,50 @@
 
 namespace cup {
 
+int CUPImpl::GetKeyVersion() {
+  int key_version = kKeyVersion;
+  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kAutofillAssistantCupKeyVersion)) {
+    return key_version;
+  }
+
+  if (!base::StringToInt(
+          base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+              switches::kAutofillAssistantCupKeyVersion),
+          &key_version)) {
+    LOG(ERROR) << "Error parsing command line flag "
+               << switches::kAutofillAssistantCupKeyVersion << ": not a number";
+    // If CLI key version is not valid, continue with the default one.
+    return kKeyVersion;
+  }
+  return key_version;
+}
+
+std::string CUPImpl::GetPublicKey() {
+  absl::optional<std::string> pub_key = GetKey(kKeyPubBytesBase64);
+  // The default key specified in |kKeyPubBytesBase64| must be valid base64.
+  DCHECK(pub_key.has_value());
+
+  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kAutofillAssistantCupPublicKeyBase64)) {
+    return *pub_key;
+  }
+
+  absl::optional<std::string> switch_pub_key =
+      GetKey(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+          switches::kAutofillAssistantCupPublicKeyBase64));
+  if (!switch_pub_key.has_value()) {
+    LOG(ERROR) << "Error parsing command line flag "
+               << switches::kAutofillAssistantCupPublicKeyBase64
+               << ": not a valid base64 string";
+    // If CLI public key is not valid, continue with the default one.
+    return *pub_key;
+  }
+  return *switch_pub_key;
+}
+
 std::unique_ptr<client_update_protocol::Ecdsa> CUPImpl::CreateQuerySigner() {
-  return client_update_protocol::Ecdsa::Create(kKeyVersion,
-                                               GetKey(kKeyPubBytesBase64));
+  return client_update_protocol::Ecdsa::Create(GetKeyVersion(), GetPublicKey());
 }
 
 CUPImpl::CUPImpl(std::unique_ptr<client_update_protocol::Ecdsa> query_signer,
diff --git a/components/autofill_assistant/browser/service/cup_impl.h b/components/autofill_assistant/browser/service/cup_impl.h
index 62168581..a755f14 100644
--- a/components/autofill_assistant/browser/service/cup_impl.h
+++ b/components/autofill_assistant/browser/service/cup_impl.h
@@ -22,6 +22,8 @@
 // This class can only be used once per service call.
 class CUPImpl : public CUP {
  public:
+  static std::string GetPublicKey();
+  static int GetKeyVersion();
   static std::unique_ptr<client_update_protocol::Ecdsa> CreateQuerySigner();
 
   CUPImpl(std::unique_ptr<client_update_protocol::Ecdsa> query_signer,
diff --git a/components/autofill_assistant/browser/service/cup_impl_unittest.cc b/components/autofill_assistant/browser/service/cup_impl_unittest.cc
index 18e63bc8b..1b0a2e2 100644
--- a/components/autofill_assistant/browser/service/cup_impl_unittest.cc
+++ b/components/autofill_assistant/browser/service/cup_impl_unittest.cc
@@ -4,9 +4,11 @@
 
 #include "cup_impl.h"
 
+#include "base/command_line.h"
 #include "base/test/scoped_feature_list.h"
 #include "components/autofill_assistant/browser/features.h"
 #include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/switches.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 namespace {
@@ -81,4 +83,31 @@
   EXPECT_EQ(*unpacked_response, "a response");
 }
 
+TEST(CUPImplTest, OverridesEcdsaPublicKeyWithCLIValue) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      autofill_assistant::switches::kAutofillAssistantCupPublicKeyBase64,
+      "SGVsbG8=");
+  EXPECT_EQ(autofill_assistant::cup::CUPImpl::GetPublicKey(), "Hello");
+}
+
+TEST(CUPImplTest, HasValidEcdsaPublicKeyWithNotValidCLIValue) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      autofill_assistant::switches::kAutofillAssistantCupPublicKeyBase64,
+      "Not valid base64");
+  EXPECT_FALSE(autofill_assistant::cup::CUPImpl::GetPublicKey().empty());
+}
+
+TEST(CUPImplTest, OverridesEcdsaKeyVersionithCLIValue) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      autofill_assistant::switches::kAutofillAssistantCupKeyVersion, "15");
+  EXPECT_EQ(autofill_assistant::cup::CUPImpl::GetKeyVersion(), 15);
+}
+
+TEST(CUPImplTest, HasValidEcdsaKeyVersionWithNotValidCLIValue) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      autofill_assistant::switches::kAutofillAssistantCupKeyVersion,
+      "Not a number");
+  EXPECT_GT(autofill_assistant::cup::CUPImpl::GetKeyVersion(), -1);
+}
+
 }  // namespace
diff --git a/components/autofill_assistant/browser/switches.cc b/components/autofill_assistant/browser/switches.cc
index 18a432d..9cd6e25e 100644
--- a/components/autofill_assistant/browser/switches.cc
+++ b/components/autofill_assistant/browser/switches.cc
@@ -15,6 +15,15 @@
 // during development, as prod instances require authentication.
 const char kAutofillAssistantAuth[] = "autofill-assistant-auth";
 
+// Sets the ECDSA public key to be used for autofill_assistant in base64.
+const char kAutofillAssistantCupPublicKeyBase64[] =
+    "autofill-assistant-cup-public-key-base64";
+
+// Sets the key version of the ECDSA public key to be used for
+// autofill_assistant.
+const char kAutofillAssistantCupKeyVersion[] =
+    "autofill-assistant-cup-key-version";
+
 // Forces first-time user experience if set to 'true'. This will overwrite the
 // AA preference by setting first time user to 'true' before each startup.
 // Does nothing if unset or is set to false. This is only useful during testing
diff --git a/components/autofill_assistant/browser/switches.h b/components/autofill_assistant/browser/switches.h
index 19a5660e..995c53d8 100644
--- a/components/autofill_assistant/browser/switches.h
+++ b/components/autofill_assistant/browser/switches.h
@@ -11,6 +11,8 @@
 // All switches in alphabetical order.
 extern const char kAutofillAssistantAnnotateDom[];
 extern const char kAutofillAssistantAuth[];
+extern const char kAutofillAssistantCupPublicKeyBase64[];
+extern const char kAutofillAssistantCupKeyVersion[];
 extern const char kAutofillAssistantForceFirstTimeUser[];
 extern const char kAutofillAssistantForceOnboarding[];
 extern const char kAutofillAssistantImplicitTriggeringDebugParameters[];
diff --git a/components/breadcrumbs/core/breadcrumb_persistent_storage_util.cc b/components/breadcrumbs/core/breadcrumb_persistent_storage_util.cc
index 4ff7e049..fbf4d3b 100644
--- a/components/breadcrumbs/core/breadcrumb_persistent_storage_util.cc
+++ b/components/breadcrumbs/core/breadcrumb_persistent_storage_util.cc
@@ -4,7 +4,10 @@
 
 #include "components/breadcrumbs/core/breadcrumb_persistent_storage_util.h"
 
+#include "base/bind.h"
 #include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/task/thread_pool.h"
 
 namespace breadcrumbs {
 namespace {
@@ -15,6 +18,13 @@
 const base::FilePath::CharType kBreadcrumbsTempFile[] =
     FILE_PATH_LITERAL("Breadcrumbs.temp");
 
+void DoDeleteBreadcrumbFiles(const base::FilePath& storage_dir) {
+  base::DeleteFile(
+      breadcrumbs::GetBreadcrumbPersistentStorageFilePath(storage_dir));
+  base::DeleteFile(
+      breadcrumbs::GetBreadcrumbPersistentStorageTempFilePath(storage_dir));
+}
+
 }  // namespace
 
 base::FilePath GetBreadcrumbPersistentStorageFilePath(
@@ -27,4 +37,10 @@
   return storage_dir.Append(kBreadcrumbsTempFile);
 }
 
+void DeleteBreadcrumbFiles(const base::FilePath& storage_dir) {
+  base::ThreadPool::PostTask(
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+      base::BindOnce(&DoDeleteBreadcrumbFiles, storage_dir));
+}
+
 }  // namespace breadcrumbs
diff --git a/components/breadcrumbs/core/breadcrumb_persistent_storage_util.h b/components/breadcrumbs/core/breadcrumb_persistent_storage_util.h
index 2914eab8f..da2cfb7 100644
--- a/components/breadcrumbs/core/breadcrumb_persistent_storage_util.h
+++ b/components/breadcrumbs/core/breadcrumb_persistent_storage_util.h
@@ -25,6 +25,9 @@
 base::FilePath GetBreadcrumbPersistentStorageTempFilePath(
     const base::FilePath& storage_dir);
 
+// Deletes the breadcrumbs file and breadcrumbs temp file in |storage_dir|.
+void DeleteBreadcrumbFiles(const base::FilePath& storage_dir);
+
 }  // namespace breadcrumbs
 
 #endif  // COMPONENTS_BREADCRUMBS_CORE_BREADCRUMB_PERSISTENT_STORAGE_UTIL_H_
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb
index 890ac6b..977f205 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">ኩኪዎችን ፍቀድ</translation>
 <translation id="2228071138934252756">የእርስዎን ካሜራ <ph name="APP_NAME" /> እንዲደርስበት ለማድረግ፣ በ <ph name="BEGIN_LINK" />Android ቅንብሮች<ph name="END_LINK" /> ውስጥ ካሜራን በተጨማሪ ያብሩ።</translation>
 <translation id="2241634353105152135">አንድ ጊዜ ብቻ</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" />ን አስወግድ</translation>
 <translation id="2289270750774289114">አንድ ጣቢያ በአቅራቢያ ያሉ ብሉቱዝ መሣሪያዎችን ፈልጎ ለማግኘት ሲፈልግ ጠይቅ (የሚመከር)</translation>
 <translation id="2315043854645842844">የደንበኛ ወገን ዕውቅና ማረጋገጫ ምርጫ በስርዓተ-ክወናው አይደገፍም።</translation>
 <translation id="2359808026110333948">ቀጥል</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb
index 78730aec..96722b4 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">কুকিসমূহক অনুমতি দিয়ক</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" />ক আপোনাৰ কেমেৰা এক্সেছ কৰিবলৈ দিবলৈ <ph name="BEGIN_LINK" />Android ছেটিংসমূহ<ph name="END_LINK" />তো কেমেৰা অন কৰক।</translation>
 <translation id="2241634353105152135">মাত্ৰ এবাৰ</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> আঁতৰাওক</translation>
 <translation id="2289270750774289114">কোনো ছাইটে নিকটৱৰ্তী ডিভাইচ ব্লুটুথ ডিভাইচসমূহ পাব বিচাৰিলে সোধক (আমি চুপাৰিছ কৰোঁ)</translation>
 <translation id="2315043854645842844">অপাৰেটিং ছিষ্টেমটোৱে ক্লায়েণ্টৰ ফালৰ প্ৰমাণপত্ৰ বাছনি কৰা সুবিধাটো সমৰ্থন নকৰে।</translation>
 <translation id="2359808026110333948">অব্যাহত ৰাখক</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
index b8f586a..0b38950 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">কুকিগুলিকে অনুমতি দিন</translation>
 <translation id="2228071138934252756">তাছাড়া, যাতে <ph name="APP_NAME" /> আপনার ক্যামেরা অ্যাক্সেস করতে পারে, তার জন্য <ph name="BEGIN_LINK" />Android সেটিংসে<ph name="END_LINK" /> গিয়েও ক্যামেরা চালু করে দিন।</translation>
 <translation id="2241634353105152135">শুধুমাত্র একবার</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> সরিয়ে দিন</translation>
 <translation id="2289270750774289114">কাছাকাছি ব্লুটুথ ডিভাইস আছে কিনা তা কোনও সাইট খুঁজতে চাইলে আমাকে জিজ্ঞাসা করুন (সাজেস্ট করা হচ্ছে)</translation>
 <translation id="2315043854645842844">ক্লায়েন্ট সাইড সার্টিফিকেট নির্বাচন অপারেটিং সিসটেম দ্বারা সমর্থিত নয়।</translation>
 <translation id="2359808026110333948">চালিয়ে যান</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 9cddc33..df6036a4 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Dozvoli kolačiće</translation>
 <translation id="2228071138934252756">Da omogućite aplikaciji <ph name="APP_NAME" /> pristup kameri, također uključite kameru u <ph name="BEGIN_LINK" />Postavkama Androida<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Samo ovaj put</translation>
+<translation id="2253414712144136228">Uklanjanje stavke <ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">Pitaj kada web lokacija želi otkriti Bluetooth uređaje u blizini (preporučeno)</translation>
 <translation id="2315043854645842844">Operativni sistem ne podržava odabir potvrde na strani klijenta.</translation>
 <translation id="2359808026110333948">Nastavi</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb
index f9a983f..3c0ee0c 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Permet les galetes</translation>
 <translation id="2228071138934252756">Perquè <ph name="APP_NAME" /> pugui accedir a la càmera, també has d'activar-la a la <ph name="BEGIN_LINK" />configuració d'Android<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Només una vegada</translation>
+<translation id="2253414712144136228">Suprimeix <ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">Pregunta'm quan un lloc web vulgui descobrir dispositius Bluetooth propers (opció recomanada)</translation>
 <translation id="2315043854645842844">El sistema operatiu no permet seleccionar el certificat del client.</translation>
 <translation id="2359808026110333948">Continua</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 a0544e48..f990820 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">مجاز کردن کوکی ها</translation>
 <translation id="2228071138934252756">‏برای اینکه به <ph name="APP_NAME" /> اجازه دهید به دوربین دسترسی پیدا کند، دوربین را در <ph name="BEGIN_LINK" />تنظیمات Android<ph name="END_LINK" /> نیز روشن کنید.</translation>
 <translation id="2241634353105152135">فقط یک بار</translation>
+<translation id="2253414712144136228">برداشتن <ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">وقتی سایتی می‌خواهد دستگا‌ه‌های بلوتوث اطراف را پیدا کند، سؤال شود (توصیه می‌شود)</translation>
 <translation id="2315043854645842844">انتخاب گواهی سمت کلاینت توسط سیستم‌عامل پشتیبانی نمی‌شود.</translation>
 <translation id="2359808026110333948">ادامه</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
index e180b68..88f14981 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Payagan ang cookies</translation>
 <translation id="2228071138934252756">Para payagan ang <ph name="APP_NAME" /> na i-access ang iyong camera, i-on din ang camera sa <ph name="BEGIN_LINK" />Mga Setting ng Android<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Isang beses lang</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Alisin</translation>
 <translation id="2289270750774289114">Magtanong kapag gusto ng isang site na tumuklas ng mga Bluetooth device na nasa malapit (inirerekomenda)</translation>
 <translation id="2315043854645842844">Hindi sinusuportahan ng operating system ang pagpipilian ng certificate sa panig ng kliyente.</translation>
 <translation id="2359808026110333948">Magpatuloy</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 e569ab0..e86fd5fa 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">કુકીને મંજૂરી આપો</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> તમારો કૅમેરા ઍક્સેસ કરી શકે તે માટે <ph name="BEGIN_LINK" />Android સેટિંગ<ph name="END_LINK" />માં પણ કૅમેરા ચાલુ કરો.</translation>
 <translation id="2241634353105152135">માત્ર એક વખત</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> કાઢી નાખો</translation>
 <translation id="2289270750774289114">જ્યારે કોઈ સાઇટ નજીકના બ્લૂટૂથ ડિવાઇસને શોધવા માગે ત્યારે પૂછો (સુઝાવ આપેલ)</translation>
 <translation id="2315043854645842844">ઓપરેટિંગ સિસ્ટમ દ્વારા ક્લાઇન્ટ તરફની પ્રમાણપત્ર પસંદગી સપોર્ટ કરતી નથી.</translation>
 <translation id="2359808026110333948">આગળ વધો</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
index 63b7994..431d2bb 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">कुकी की अनुमति दें</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> को कैमरे का ऐक्सेस देने के लिए, <ph name="BEGIN_LINK" />Android की सेटिंग<ph name="END_LINK" /> में जाकर भी कैमरा चालू करें.</translation>
 <translation id="2241634353105152135">बस एक बार</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> हटाएं</translation>
 <translation id="2289270750774289114">जब कोई साइट आस-पास के ब्लूटूथ डिवाइस को खोजना चाहे, तो इसके लिए पूछें (सुझाया गया)</translation>
 <translation id="2315043854645842844">क्लाइंट-साइड प्रमाणपत्र चुनना ऑपरेटिंग सिस्टम से नहीं किया जा सकता है.</translation>
 <translation id="2359808026110333948">जारी रखें</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
index 32d7535..bf352269 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Cookie-k engedélyezése</translation>
 <translation id="2228071138934252756">Ahhoz, hogy a(z) <ph name="APP_NAME" /> hozzáférhessen a kamerához, a kamerát az <ph name="BEGIN_LINK" />Android-beállítások<ph name="END_LINK" /> között is be kell kapcsolni.</translation>
 <translation id="2241634353105152135">Csak egyszer</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> eltávolítása</translation>
 <translation id="2289270750774289114">Kérdezzen rá, ha valamelyik webhely szeretné felfedezni a közeli Bluetooth-eszközöket (ajánlott)</translation>
 <translation id="2315043854645842844">Az ügyféloldali tanúsítványválasztást az operációs rendszer nem támogatja.</translation>
 <translation id="2359808026110333948">Tovább</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
index b3b29b0..44dfde3d 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Cookie を許可</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> にカメラへのアクセスを許可するには、<ph name="BEGIN_LINK" />Android の設定<ph name="END_LINK" />でもカメラをオンにしてください。</translation>
 <translation id="2241634353105152135">一回限り</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> を削除</translation>
 <translation id="2289270750774289114">サイトから近くにある Bluetooth デバイスの検出を求められたときに確認する(推奨)</translation>
 <translation id="2315043854645842844">オペレーティング システムでサポートされていないため、クライアントサイドで証明書を選択することはできません。</translation>
 <translation id="2359808026110333948">続行</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 81aed9b..fcfdea5b 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">ქუქი-ჩანაწერების დაშვება</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" />-მა კამერით რომ ისარგებლოს, გაააქტიურეთ კამერაზე წვდომის ნებართვაც <ph name="BEGIN_LINK" />Android-ის პარამეტრებიდან<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">მხოლოდ ერთხელ</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> — ამოშლა</translation>
 <translation id="2289270750774289114">საიტების მიერ ახლომდებარე Bluetooth მოწყობილობების აღმოჩენის მოთხოვნა (რეკომენდებული)</translation>
 <translation id="2315043854645842844">კლიენტის სერტიფიკატების არჩევა არ არის მხარდაჭერილი ოპერაციული სისტემის მიერ.</translation>
 <translation id="2359808026110333948">გაგრძელება</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
index e7d4682..ff7ade5 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">ಕುಕೀಗಳನ್ನು ಅನುಮತಿಸಿ</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಪ್ರವೇಶಿಸುವುದಕ್ಕೆ ಅನುಮತಿಸಲು, <ph name="BEGIN_LINK" />Android ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ<ph name="END_LINK" /> ಕ್ಯಾಮರಾವನ್ನು ಸಹ ಆನ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.</translation>
 <translation id="2241634353105152135">ಕೇವಲ ಒಂದು ಬಾರಿ</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> ಅನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="2289270750774289114">ಸೈಟ್ ಯಾವಾಗ ಸಮೀಪದ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಬಯಸುತ್ತದೆಯೋ ಆಗ ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="2315043854645842844">ಕ್ಲೈಂಟ್‌ನ ಪ್ರಮಾಣಪತ್ರ ಆಯ್ಕೆಯನ್ನು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನಿಂದ ಬೆಂಬಲಿಸಲಾಗಿಲ್ಲ.</translation>
 <translation id="2359808026110333948">ಮುಂದುವರೆಸಿ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
index a8e96f34..ee23705c 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Leisti slapukus</translation>
 <translation id="2228071138934252756">Norėdami leisti „<ph name="APP_NAME" />“ pasiekti jūsų kamerą, taip pat įjunkite ją <ph name="BEGIN_LINK" />„Android“ nustatymuose<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Tik vieną kartą</translation>
+<translation id="2253414712144136228">Pašalinti „<ph name="NAME_OF_LIST_ITEM" />“</translation>
 <translation id="2289270750774289114">Paklausti, kai svetainė nori atrasti netoliese esančius „Bluetooth“ įrenginius (rekomenduojama)</translation>
 <translation id="2315043854645842844">Kliento pasirinkto sertifikato nepalaiko operacinė sistema.</translation>
 <translation id="2359808026110333948">Tęskite</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb
index b3fd025..60f7442 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">कुकींना अनुमती द्या</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> ला तुमचा कॅमेरा ॲक्सेस करू देण्यासाठी, <ph name="BEGIN_LINK" />Android सेटिंग्ज<ph name="END_LINK" /> मध्येदेखील कॅमेरा सुरू करा.</translation>
 <translation id="2241634353105152135">फक्त एकदाच</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> काढून टाका</translation>
 <translation id="2289270750774289114">साइटला केव्हा जवळपासचे ब्लूटूथ डिव्हाइस शोधायचे आहे हे विचारा (शिफारस केलेले)</translation>
 <translation id="2315043854645842844">क्लायंट साइड प्रमाणपत्र निवडीला ऑपरेटिंग सिस्टमचा सपोर्ट नाही.</translation>
 <translation id="2359808026110333948">सुरू ठेवा</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 d28a78b..88525db 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">कुकीहरूलाई अनुमति दिनुहोस्</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> लाई आफ्नो क्यामेरा प्रयोग गर्न दिन <ph name="BEGIN_LINK" />Android का सेटिङ<ph name="END_LINK" />मा गई क्यामेरा पनि अन गर्नुहोस्।</translation>
 <translation id="2241634353105152135">एकपटक मात्र</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> हटाउनुहोस्</translation>
 <translation id="2289270750774289114">कुनै साइटले छेउछाउका ब्लुटुथ यन्त्रहरू पत्ता लगाउन खोज्दा सोध्नुहोस् (सिफारिस गरिएको)</translation>
 <translation id="2315043854645842844">अपरेटिङ सिस्टमले क्लाइन्ट साइड प्रमाणपत्रको चयनलाई समर्थन गर्दैन।</translation>
 <translation id="2359808026110333948">जारी राख्नुहोस्</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 d2b956f..0a6c384 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Tillat informasjonskapsler</translation>
 <translation id="2228071138934252756">For å gi <ph name="APP_NAME" /> tilgang til kameraet må du også slå på kameraet i <ph name="BEGIN_LINK" />Android-innstillingene<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Bare én gang</translation>
+<translation id="2253414712144136228">Fjern <ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">Spør når nettsteder vil oppdage Bluetooth-enheter i nærheten (anbefales)</translation>
 <translation id="2315043854645842844">Operativsystemet har ikke støtte for sertifikatvalg på klientsiden.</translation>
 <translation id="2359808026110333948">Fortsett</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
index 61a81fa..fcdda30 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Permite cookie-urile</translation>
 <translation id="2228071138934252756">Pentru a permite aplicației <ph name="APP_NAME" /> să acceseze camera, activează camera și în <ph name="BEGIN_LINK" />Setările Android<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Numai o singură dată</translation>
+<translation id="2253414712144136228">Elimină <ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">Întreabă-mă când un site dorește să descopere dispozitive Bluetooth din apropiere (recomandat)</translation>
 <translation id="2315043854645842844">Selectarea certificatelor pe partea de client nu este acceptată de sistemul de operare.</translation>
 <translation id="2359808026110333948">Continuă</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 8be7a0d..0cbe65f1 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">කුකීවලට ඉඩ දෙන්න</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> හට ඔබේ කැමරාවට ප්‍රවේශ වීමට ඉඩ දීමට, <ph name="BEGIN_LINK" />Android සැකසීම්<ph name="END_LINK" /> තුළද කැමරාව ක්‍රියාත්මක කරන්න.</translation>
 <translation id="2241634353105152135">හුදෙක් එක් වරක්</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> ඉවත් කරන්න</translation>
 <translation id="2289270750774289114">වෙබ් අඩවියකට අවට බ්ලූටූත් උපාංග සොයා ගැනීමට අවශ්‍ය වූ විට අසන්න (නිර්දේශිතයි)</translation>
 <translation id="2315043854645842844">මෙහෙයුම් පද්ධතිය සේවාලාභී පැත්තේ සහතික තේරීමට සහාය නොදක්වයි.</translation>
 <translation id="2359808026110333948">කරගෙන යන්න</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 f62c1c0..7c0f9f0 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Dozvoli kolačiće</translation>
 <translation id="2228071138934252756">Da biste dozvolili da <ph name="APP_NAME" /> pristupa kameri, uključite kameru i u <ph name="BEGIN_LINK" />Android podešavanjima<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Samo jednom</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Uklonite</translation>
 <translation id="2289270750774289114">Pitaj kada sajt želi da otkrije Bluetooth uređaje u blizini (preporučeno)</translation>
 <translation id="2315043854645842844">Operativni sistem ne podržava izbor sertifikata za klijenta.</translation>
 <translation id="2359808026110333948">Nastavite</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 8f608ee..710f393 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Дозволи колачиће</translation>
 <translation id="2228071138934252756">Да бисте дозволили да <ph name="APP_NAME" /> приступа камери, укључите камеру и у <ph name="BEGIN_LINK" />Android подешавањима<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Само једном</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Уклоните</translation>
 <translation id="2289270750774289114">Питај када сајт жели да открије Bluetooth уређаје у близини (препоручено)</translation>
 <translation id="2315043854645842844">Оперативни систем не подржава избор сертификата за клијента.</translation>
 <translation id="2359808026110333948">Наставите</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 d9d0d8ea..83def323 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Ruhusu vidakuzi</translation>
 <translation id="2228071138934252756">Ili uruhusu <ph name="APP_NAME" /> ifikie kamera yako, washa pia kamera katika <ph name="BEGIN_LINK" />Mipangilio ya Android<ph name="END_LINK" />.</translation>
 <translation id="2241634353105152135">Mara moja tu</translation>
+<translation id="2253414712144136228">Ondoa <ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">Niulize wakati tovuti inataka kugundua vifaa vya Bluetooth vilivyo karibu (inapendekezwa)</translation>
 <translation id="2315043854645842844">Uchaguzi wa cheti cha sehemu ya seva teja hautumiwi na mfumo wa uendeshaji.</translation>
 <translation id="2359808026110333948">Endelea</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 c5c09b7..0473bcb8 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">కుక్కీలను అనుమతించు</translation>
 <translation id="2228071138934252756">మీ కెమెరాను యాక్సెస్ చేయడానికి <ph name="APP_NAME" />ని అనుమతించడానికి, <ph name="BEGIN_LINK" />Android సెట్టింగ్‌ల<ph name="END_LINK" />లో కూడా కెమెరాను ఆన్ చేయండి.</translation>
 <translation id="2241634353105152135">ఒకసారి మాత్రమే</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" />‌ను తీసివేయండి</translation>
 <translation id="2289270750774289114">ఏదైనా ఒక సైట్ సమీపంలోని బ్లూటూత్ పరికరాలను కనుగొనాలనుకున్నప్పుడు అనుమతి అడుగుతుంది (సిఫార్సు చేయడమైనది)</translation>
 <translation id="2315043854645842844">క్లయింట్ తరపు స‌ర్టిఫికెట్‌ ఎంపికకు ఆపరేటింగ్ సిస్టమ్ మద్దతు లేదు.</translation>
 <translation id="2359808026110333948">కొనసాగించు</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb
index ae70d202..fdf6180 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">อนุญาตคุกกี้</translation>
 <translation id="2228071138934252756">หากต้องการอนุญาตให้ <ph name="APP_NAME" /> เข้าถึงกล้องถ่ายรูป ให้เปิดใช้กล้องใน<ph name="BEGIN_LINK" />การตั้งค่า Android<ph name="END_LINK" /> ด้วย</translation>
 <translation id="2241634353105152135">เพียงครั้งเดียว</translation>
+<translation id="2253414712144136228">นำ<ph name="NAME_OF_LIST_ITEM" />ออก</translation>
 <translation id="2289270750774289114">ถามเมื่อเว็บไซต์ต้องการค้นหาอุปกรณ์บลูทูธใกล้เคียง (แนะนำ)</translation>
 <translation id="2315043854645842844">ระบบปฏิบัติการไม่สนับสนุนการเลือกใบรับรองฝั่งลูกค้า</translation>
 <translation id="2359808026110333948">ต่อไป</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
index 13856a0..9c1c43e 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">Çerezlere izin ver</translation>
 <translation id="2228071138934252756"><ph name="APP_NAME" /> uygulamasının kameranıza erişebilmesi için <ph name="BEGIN_LINK" />Android Ayarları<ph name="END_LINK" />'nda da kamerayı açın.</translation>
 <translation id="2241634353105152135">Sadece bir defa</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> öğesini kaldır</translation>
 <translation id="2289270750774289114">Bir site yakındaki Bluetooth cihazları bulmak istediğinde sor (önerilir)</translation>
 <translation id="2315043854645842844">İstemci tarafı sertifika seçimi, işletim sistemi tarafından desteklenmiyor.</translation>
 <translation id="2359808026110333948">Devam et</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
index e9113dbe..4fe345b 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">کوکیز کی اجازت دیں</translation>
 <translation id="2228071138934252756">‏<ph name="APP_NAME" /> کو اپنے کیمرے تک رسائی دینے کے لیے، <ph name="BEGIN_LINK" />Android کی ترتیبات<ph name="END_LINK" /> میں بھی کیمرا آن کریں۔</translation>
 <translation id="2241634353105152135">بس ایک بار</translation>
+<translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> ہٹائیں</translation>
 <translation id="2289270750774289114">اس وقت پوچھیں جب کسی سائٹ میں قریبی بلوٹوتھ آلات کو دریافت کرنا مقصود ہو (تجویز کردہ)</translation>
 <translation id="2315043854645842844">کلائنٹ سائڈ سرٹیفکیٹ کا انتخاب آپریٹنگ سسٹم کے ذریعہ تعاون یافتہ نہیں ہے۔</translation>
 <translation id="2359808026110333948">جاری رکھیں</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
index aaf9841..da2fd0a 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">允許 Cookie</translation>
 <translation id="2228071138934252756">如要讓 <ph name="APP_NAME" /> 存取您的相機,請一併在 <ph name="BEGIN_LINK" />Android 設定<ph name="END_LINK" />中開啟相機。</translation>
 <translation id="2241634353105152135">只有這一次</translation>
+<translation id="2253414712144136228">移除<ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">在網站要探索附近的藍牙裝置時詢問您 (建議)</translation>
 <translation id="2315043854645842844">作業系統不支援由客戶端選取憑證。</translation>
 <translation id="2359808026110333948">繼續</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 3afe37c1..211ee98e 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
@@ -49,6 +49,7 @@
 <translation id="2212565012507486665">允許 Cookie</translation>
 <translation id="2228071138934252756">如要允許 <ph name="APP_NAME" /> 存取裝置的相機,請一併在 <ph name="BEGIN_LINK" />Android 設定<ph name="END_LINK" />中開啟相機。</translation>
 <translation id="2241634353105152135">只有這一次</translation>
+<translation id="2253414712144136228">移除<ph name="NAME_OF_LIST_ITEM" /></translation>
 <translation id="2289270750774289114">當網站要搜尋附近的藍牙裝置時,必須先詢問你 (建議)</translation>
 <translation id="2315043854645842844">作業系統不允許您在用戶端選取憑證。</translation>
 <translation id="2359808026110333948">繼續</translation>
diff --git a/components/browser_ui/styles/android/BUILD.gn b/components/browser_ui/styles/android/BUILD.gn
index b296042..08fb769 100644
--- a/components/browser_ui/styles/android/BUILD.gn
+++ b/components/browser_ui/styles/android/BUILD.gn
@@ -25,10 +25,12 @@
   sources = [
     "java/res/color-v29/default_control_color_highlight.xml",
     "java/res/color/default_icon_color_accent1_tint_list.xml",
+    "java/res/color/default_icon_color_dark_tint_list.xml",
     "java/res/color/default_icon_color_light_tint_list.xml",
     "java/res/color/default_icon_color_secondary_light_tint_list.xml",
     "java/res/color/default_icon_color_secondary_tint_list.xml",
     "java/res/color/default_icon_color_tint_list.xml",
+    "java/res/color/default_icon_color_white_tint_list.xml",
     "java/res/color/default_text_color_accent1_tint_list.xml",
     "java/res/color/default_text_color_disabled_list.xml",
     "java/res/color/default_text_color_hint_list.xml",
diff --git a/chrome/browser/ui/android/theme/java/res/color/toolbar_icon_tint_dark.xml b/components/browser_ui/styles/android/java/res/color/default_icon_color_dark_tint_list.xml
similarity index 100%
rename from chrome/browser/ui/android/theme/java/res/color/toolbar_icon_tint_dark.xml
rename to components/browser_ui/styles/android/java/res/color/default_icon_color_dark_tint_list.xml
diff --git a/components/browser_ui/styles/android/java/res/color/default_icon_color_white_tint_list.xml b/components/browser_ui/styles/android/java/res/color/default_icon_color_white_tint_list.xml
new file mode 100644
index 0000000..bcb69a2
--- /dev/null
+++ b/components/browser_ui/styles/android/java/res/color/default_icon_color_white_tint_list.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2021 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:alpha="@dimen/default_disabled_alpha"
+          android:state_enabled="false" android:color="@android:color/white" />
+    <item android:color="@android:color/white"/>
+</selector>
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/chips/ChipsCoordinator.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/chips/ChipsCoordinator.java
index e2ad15bb..45e9c2d 100644
--- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/chips/ChipsCoordinator.java
+++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/chips/ChipsCoordinator.java
@@ -80,6 +80,7 @@
                         .with(ChipProperties.CLICK_HANDLER, clickHandler)
                         .with(ChipProperties.ICON, iconId)
                         .with(ChipProperties.ENABLED, true)
+                        .with(ChipProperties.SELECTED, false)
                         .with(ChipProperties.TEXT_MAX_WIDTH_PX, ChipProperties.SHOW_WHOLE_TEXT)
                         .build();
         return new ListItem(ChipProperties.BASIC_CHIP, model);
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json
index 50f18253..0290419 100644
--- a/components/certificate_transparency/data/log_list.json
+++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@
 {
-  "version": "4.59",
-  "log_list_timestamp": "2021-12-15T01:34:24Z",
+  "version": "4.60",
+  "log_list_timestamp": "2021-12-16T01:34:55Z",
   "operators": [
     {
       "name": "Google",
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationDelegate.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationDelegate.java
index 57f908a..a90d5f1 100644
--- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationDelegate.java
+++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationDelegate.java
@@ -247,4 +247,15 @@
      * Whether WebAPKs should be launched even on the initial Intent.
      */
     boolean shouldLaunchWebApksOnInitialIntent();
+
+    /**
+     * Potentially adds a target package to the Intent. Returns whether the package was set.
+     */
+    boolean maybeSetTargetPackage(Intent intent);
+
+    /**
+     * Whether the Activity launch should be aborted if the disambiguation prompt is going to be
+     * shown.
+     */
+    boolean shouldAvoidDisambiguationDialog(Intent intent);
 }
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
index 0b742706..784c61f 100644
--- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
+++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
@@ -71,6 +71,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -145,18 +146,26 @@
         }
     }
 
-    // Used to ensure we only call queryIntentActivities when we really need to.
-    private class ResolveInfoSupplier implements Supplier<List<ResolveInfo>> {
-        private List<ResolveInfo> mValue;
-        private Intent mIntent;
+    // A Supplier that only evaluates when needed then caches the value.
+    private abstract static class LazySupplier<T> implements Supplier<T> {
+        private T mValue;
+        private Supplier<T> mInnerSupplier;
 
-        public ResolveInfoSupplier(Intent intent) {
-            mIntent = intent;
+        public LazySupplier(Supplier<T> innerSupplier) {
+            assert innerSupplier != null : "innerSupplier cannot be null";
+            mInnerSupplier = innerSupplier;
         }
 
+        @Nullable
         @Override
-        public List<ResolveInfo> get() {
-            if (mValue == null) mValue = queryIntentActivities(mIntent);
+        public T get() {
+            if (mInnerSupplier != null) {
+                mValue = mInnerSupplier.get();
+
+                // Clear the inner supplier to record that we have evaluated and to free any
+                // references it may have held.
+                mInnerSupplier = null;
+            }
             return mValue;
         }
 
@@ -166,6 +175,21 @@
         }
     }
 
+    // Used to ensure we only call queryIntentActivities when we really need to.
+    private class QueryIntentActivitiesSupplier extends LazySupplier<List<ResolveInfo>> {
+        public QueryIntentActivitiesSupplier(Intent intent) {
+            super(() -> queryIntentActivities(intent));
+        }
+    }
+
+    private static class ResolveActivitySupplier extends LazySupplier<ResolveInfo> {
+        public ResolveActivitySupplier(Intent intent) {
+            super(()
+                            -> PackageManagerUtils.resolveActivity(
+                                    intent, PackageManager.MATCH_DEFAULT_ONLY));
+        }
+    }
+
     private final ExternalNavigationDelegate mDelegate;
 
     /**
@@ -624,7 +648,7 @@
     private boolean preferToShowIntentPicker(ExternalNavigationParams params,
             int pageTransitionCore, boolean isExternalProtocol, boolean isFormSubmit,
             boolean linkNotFromIntent, boolean incomingIntentRedirect, boolean isFromIntent,
-            ResolveInfoSupplier resolveInfos) {
+            QueryIntentActivitiesSupplier resolveInfos) {
         // https://crbug.com/1232514: On Android S, since WebAPKs aren't verified apps they are
         // never launched as the result of a suitable Intent, the user's default browser will be
         // opened instead. As a temporary solution, have Chrome launch the WebAPK.
@@ -1311,7 +1335,8 @@
         if (!maybeSetSmsPackage(targetIntent)) maybeRecordPhoneIntentMetrics(targetIntent);
 
         Intent debugIntent = new Intent(targetIntent);
-        ResolveInfoSupplier resolvingInfos = new ResolveInfoSupplier(targetIntent);
+        QueryIntentActivitiesSupplier resolvingInfos =
+                new QueryIntentActivitiesSupplier(targetIntent);
         if (!preferToShowIntentPicker(params, pageTransitionCore, isExternalProtocol, isFormSubmit,
                     linkNotFromIntent, incomingIntentRedirect, isFromIntent, resolvingInfos)) {
             return OverrideUrlLoadingResult.forNoOverride();
@@ -1400,8 +1425,42 @@
             requiresIntentChooser = true;
         }
 
+        if (mDelegate.maybeSetTargetPackage(targetIntent)) {
+            // This check was not combined with the one above to preserve the value of the
+            // Android.Intent.WebIntentToOtherBrowser histogram.
+            requiresIntentChooser = false;
+        }
+
+        ResolveActivitySupplier resolveActivity = new ResolveActivitySupplier(targetIntent);
+        if (shouldAvoidShowingDisambiguationPrompt(targetIntent, resolvingInfos, resolveActivity)) {
+            return OverrideUrlLoadingResult.forNoOverride();
+        }
+
         return startActivityIfNeeded(targetIntent, shouldProxyForInstantApps, resolvingInfos.get(),
-                requiresIntentChooser, browserFallbackUrl, intentDataUrl, params.getReferrerUrl());
+                resolveActivity, requiresIntentChooser, browserFallbackUrl, intentDataUrl,
+                params.getReferrerUrl());
+    }
+
+    private boolean shouldAvoidShowingDisambiguationPrompt(Intent intent,
+            QueryIntentActivitiesSupplier resolvingInfosSupplier,
+            ResolveActivitySupplier resolveActivitySupplier) {
+        // Don't bother performing the package manager checks if the delegate is fine with the
+        // disambiguation prompt.
+        if (!mDelegate.shouldAvoidDisambiguationDialog(intent)) return false;
+
+        ResolveInfo resolveActivity = resolveActivitySupplier.get();
+
+        if (resolveActivity == null) return true;
+
+        List<ResolveInfo> possibleHandlingActivities = resolvingInfosSupplier.get();
+
+        // If resolveActivity is contained in possibleHandlingActivities, that means the Intent
+        // would launch a specialized Activity. If not, that means the Intent will launch the
+        // Android disambiguation prompt.
+        boolean result = !resolversSubsetOf(
+                Collections.singletonList(resolveActivity), possibleHandlingActivities);
+        if (DEBUG && result) Log.i(TAG, "Avoiding disambiguation dialog.");
+        return result;
     }
 
     private OverrideUrlLoadingResult handleIncognitoIntent(ExternalNavigationParams params,
@@ -1725,8 +1784,9 @@
      * @returns The OverrideUrlLoadingResult for starting (or not starting) the Activity.
      */
     private OverrideUrlLoadingResult startActivityIfNeeded(Intent intent, boolean proxy,
-            List<ResolveInfo> resolvingInfos, boolean requiresIntentChooser,
-            GURL browserFallbackUrl, GURL intentDataUrl, GURL referrerUrl) {
+            List<ResolveInfo> resolvingInfos, ResolveActivitySupplier resolveActivity,
+            boolean requiresIntentChooser, GURL browserFallbackUrl, GURL intentDataUrl,
+            GURL referrerUrl) {
         // Only touches disk on Kitkat. See http://crbug.com/617725 for more context.
         StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
         try {
@@ -1737,11 +1797,6 @@
             @ExternalNavigationDelegate.StartActivityIfNeededResult
             int delegateResult = mDelegate.maybeHandleStartActivityIfNeeded(intent, proxy);
 
-            if (withoutPackage
-                    && (!TextUtils.isEmpty(intent.getPackage()) || intent.getComponent() != null)) {
-                // Embedder chose a package for this Intent, we no longer need to use the chooser.
-                requiresIntentChooser = false;
-            }
             switch (delegateResult) {
                 case ExternalNavigationDelegate.StartActivityIfNeededResult
                         .HANDLED_WITH_ACTIVITY_START:
@@ -1751,7 +1806,8 @@
                     return OverrideUrlLoadingResult.forNoOverride();
                 case ExternalNavigationDelegate.StartActivityIfNeededResult.DID_NOT_HANDLE:
                     return startActivityIfNeededInternal(intent, proxy, resolvingInfos,
-                            requiresIntentChooser, browserFallbackUrl, intentDataUrl, referrerUrl);
+                            resolveActivity, requiresIntentChooser, browserFallbackUrl,
+                            intentDataUrl, referrerUrl);
                 default:
                     assert false;
             }
@@ -1780,8 +1836,9 @@
      * event.
      */
     private OverrideUrlLoadingResult startActivityIfNeededInternal(Intent intent, boolean proxy,
-            List<ResolveInfo> resolvingInfos, boolean requiresIntentChooser,
-            GURL browserFallbackUrl, GURL intentDataUrl, GURL referrerUrl) {
+            List<ResolveInfo> resolvingInfos, ResolveActivitySupplier resolveActivity,
+            boolean requiresIntentChooser, GURL browserFallbackUrl, GURL intentDataUrl,
+            GURL referrerUrl) {
         forcePdfViewerAsIntentHandlerIfNeeded(intent);
         if (proxy) {
             mDelegate.dispatchAuthenticatedIntent(intent);
@@ -1792,8 +1849,8 @@
             if (activity == null) return OverrideUrlLoadingResult.forNoOverride();
 
             if (requiresIntentChooser) {
-                return startActivityWithChooser(intent, resolvingInfos, browserFallbackUrl,
-                        intentDataUrl, referrerUrl, activity);
+                return startActivityWithChooser(intent, resolvingInfos, resolveActivity,
+                        browserFallbackUrl, intentDataUrl, referrerUrl, activity);
             }
             return doStartActivityIfNeeded(intent, activity);
         }
@@ -1813,10 +1870,9 @@
 
     @SuppressWarnings("UseCompatLoadingForDrawables")
     private OverrideUrlLoadingResult startActivityWithChooser(final Intent intent,
-            List<ResolveInfo> resolvingInfos, GURL browserFallbackUrl, GURL intentDataUrl,
-            GURL referrerUrl, Activity activity) {
-        ResolveInfo intentResolveInfo =
-                PackageManagerUtils.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
+            List<ResolveInfo> resolvingInfos, ResolveActivitySupplier resolveActivity,
+            GURL browserFallbackUrl, GURL intentDataUrl, GURL referrerUrl, Activity activity) {
+        ResolveInfo intentResolveInfo = resolveActivity.get();
         // If this is null, then the intent was only previously matching
         // non-default filters, so just drop it.
         if (intentResolveInfo == null) return OverrideUrlLoadingResult.forNoOverride();
diff --git a/components/external_intents/android/javatests/src/org/chromium/components/external_intents/ExternalNavigationHandlerTest.java b/components/external_intents/android/javatests/src/org/chromium/components/external_intents/ExternalNavigationHandlerTest.java
index 3ec502af..49e938e 100644
--- a/components/external_intents/android/javatests/src/org/chromium/components/external_intents/ExternalNavigationHandlerTest.java
+++ b/components/external_intents/android/javatests/src/org/chromium/components/external_intents/ExternalNavigationHandlerTest.java
@@ -2296,6 +2296,44 @@
                         START_OTHER_ACTIVITY);
     }
 
+    @Test
+    @SmallTest
+    public void testSuppressDisambiguationDialog() {
+        mDelegate.add(new IntentActivity(YOUTUBE_URL, YOUTUBE_PACKAGE_NAME));
+
+        checkUrl(YOUTUBE_URL)
+                .expecting(OverrideUrlLoadingResultType.OVERRIDE_WITH_EXTERNAL_INTENT,
+                        START_OTHER_ACTIVITY);
+
+        mDelegate.setWillResolveToDisambiguationDialog(true);
+        checkUrl(YOUTUBE_URL)
+                .expecting(OverrideUrlLoadingResultType.OVERRIDE_WITH_EXTERNAL_INTENT,
+                        START_OTHER_ACTIVITY);
+
+        mDelegate.setShouldAvoidDisambiguationDialog(true);
+        checkUrl(YOUTUBE_URL).expecting(OverrideUrlLoadingResultType.NO_OVERRIDE, IGNORE);
+    }
+
+    @Test
+    @SmallTest
+    public void testSetTargetPackageName() {
+        mDelegate.add(new IntentActivity(YOUTUBE_URL, YOUTUBE_PACKAGE_NAME));
+
+        checkUrl(YOUTUBE_URL)
+                .expecting(OverrideUrlLoadingResultType.OVERRIDE_WITH_EXTERNAL_INTENT,
+                        START_OTHER_ACTIVITY);
+
+        Assert.assertNull(mDelegate.startActivityIntent.getPackage());
+
+        mDelegate.setTargetPackageName("target.package");
+
+        checkUrl(YOUTUBE_URL)
+                .expecting(OverrideUrlLoadingResultType.OVERRIDE_WITH_EXTERNAL_INTENT,
+                        START_OTHER_ACTIVITY);
+
+        Assert.assertEquals("target.package", mDelegate.startActivityIntent.getPackage());
+    }
+
     private static List<ResolveInfo> makeResolveInfos(ResolveInfo... infos) {
         return Arrays.asList(infos);
     }
@@ -2468,6 +2506,10 @@
         }
 
         public ResolveInfo resolveActivity(Intent intent) {
+            if (mWillResolveToDisambiguationDialog) {
+                return newResolveInfo("android.disambiguation.dialog");
+            }
+
             List<ResolveInfo> list = queryIntentActivities(intent);
             return list.size() > 0 ? list.get(0) : null;
         }
@@ -2637,6 +2679,21 @@
             return mShouldLaunchWebApksOnInitialIntent;
         }
 
+        @Override
+        public boolean maybeSetTargetPackage(Intent intent) {
+            if (mTargetPackageName != null) {
+                intent.setSelector(null);
+                intent.setPackage(mTargetPackageName);
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        public boolean shouldAvoidDisambiguationDialog(Intent intent) {
+            return mShouldAvoidDisambiguationDialog;
+        }
+
         public void reset() {
             startActivityIntent = null;
             startIncognitoIntentCalled = false;
@@ -2712,6 +2769,18 @@
             mShouldLaunchWebApksOnInitialIntent = value;
         }
 
+        public void setTargetPackageName(String targetPackageName) {
+            mTargetPackageName = targetPackageName;
+        }
+
+        public void setShouldAvoidDisambiguationDialog(boolean value) {
+            mShouldAvoidDisambiguationDialog = value;
+        }
+
+        public void setWillResolveToDisambiguationDialog(boolean value) {
+            mWillResolveToDisambiguationDialog = value;
+        }
+
         public Intent startActivityIntent;
         public boolean startIncognitoIntentCalled;
         public boolean maybeSetRequestMetadataCalled;
@@ -2734,6 +2803,9 @@
         private boolean mCanLoadUrlInTab;
         private boolean mShouldPresentLeavingIncognitoDialog;
         private boolean mShouldLaunchWebApksOnInitialIntent;
+        private String mTargetPackageName;
+        private boolean mShouldAvoidDisambiguationDialog;
+        private boolean mWillResolveToDisambiguationDialog;
         private Context mContext;
     }
 
diff --git a/components/infobars/README.md b/components/infobars/README.md
index 6c005f8..25e19005 100644
--- a/components/infobars/README.md
+++ b/components/infobars/README.md
@@ -15,6 +15,10 @@
 (https://sites.google.com/a/chromium.org/dev/developers/design-documents/layered-components-design)
 to enable it to be shared cleanly on iOS.
 
+On Android, Infobars have been deprecated in favor of the new Message UI.
+Please consider using this new Message UI.
+See components/messages/README.md for more details.
+
 Directory structure:
 android/: Android-specific specializations
 core/: Shared code that does not depend on src/content/
diff --git a/components/infobars/core/infobar_delegate.h b/components/infobars/core/infobar_delegate.h
index 5d89e301..fe7f9f0 100644
--- a/components/infobars/core/infobar_delegate.h
+++ b/components/infobars/core/infobar_delegate.h
@@ -151,7 +151,7 @@
     INSTALLABLE_AMBIENT_BADGE_INFOBAR_DELEGATE = 80,
     // Removed: PAGE_LOAD_CAPPING_INFOBAR_DELEGATE = 81,
     DOWNLOAD_PROGRESS_INFOBAR_ANDROID = 82,
-    AR_CORE_UPGRADE_ANDROID = 83,
+    // Removed: AR_CORE_UPGRADE_ANDROID = 83,
     BLOATED_RENDERER_INFOBAR_DELEGATE = 84,
     // Removed: SUPERVISED_USERS_DEPRECATED_INFOBAR_DELEGATE = 85,
     NEAR_OOM_REDUCTION_INFOBAR_ANDROID = 86,
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessagesMetrics.java b/components/messages/android/java/src/org/chromium/components/messages/MessagesMetrics.java
index 09a3e05c..3f91845 100644
--- a/components/messages/android/java/src/org/chromium/components/messages/MessagesMetrics.java
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessagesMetrics.java
@@ -131,6 +131,8 @@
                 return "TailoredSecurityEnabled";
             case MessageIdentifier.VR_SERVICES_UPGRADE:
                 return "VrServicesUpgrade";
+            case MessageIdentifier.AR_CORE_UPGRADE:
+                return "ArCoreUpgrade";
             default:
                 return "Unknown";
         }
diff --git a/components/messages/android/message_enums.h b/components/messages/android/message_enums.h
index 3f3f724..375ace9 100644
--- a/components/messages/android/message_enums.h
+++ b/components/messages/android/message_enums.h
@@ -98,6 +98,7 @@
   TAILORED_SECURITY_ENABLED = 23,
   VR_SERVICES_UPGRADE = 24,
   TAILORED_SECURITY_DISABLED = 25,
+  AR_CORE_UPGRADE = 26,
 
   // Insert new values before this line.
   COUNT
diff --git a/components/page_load_metrics/browser/observers/README.md b/components/page_load_metrics/browser/observers/README.md
new file mode 100644
index 0000000..f8b91b3
--- /dev/null
+++ b/components/page_load_metrics/browser/observers/README.md
@@ -0,0 +1 @@
+See [`chrome/browser/page_load_metrics/observers/README.md`](/chrome/browser/page_load_metrics/observers/README.md)
\ No newline at end of file
diff --git a/components/password_manager/core/browser/built_in_backend_to_android_backend_migrator.cc b/components/password_manager/core/browser/built_in_backend_to_android_backend_migrator.cc
index 22cfbf6..32c4aeec 100644
--- a/components/password_manager/core/browser/built_in_backend_to_android_backend_migrator.cc
+++ b/components/password_manager/core/browser/built_in_backend_to_android_backend_migrator.cc
@@ -27,10 +27,10 @@
   }
 };
 
-base::OnceCallback<void(PasswordStoreChangeList)>
+base::OnceCallback<void(absl::optional<PasswordStoreChangeList>)>
 IgnoreChangeListAndRunCallback(base::OnceClosure callback) {
   return base::BindOnce(
-      [](base::OnceClosure callback, PasswordStoreChangeList) {
+      [](base::OnceClosure callback, absl::optional<PasswordStoreChangeList>) {
         std::move(callback).Run();
       },
       std::move(callback));
diff --git a/components/password_manager/core/browser/password_manager_constants.cc b/components/password_manager/core/browser/password_manager_constants.cc
index b7f898d..17b9020 100644
--- a/components/password_manager/core/browser/password_manager_constants.cc
+++ b/components/password_manager/core/browser/password_manager_constants.cc
@@ -16,6 +16,9 @@
 const char kPasswordManagerAccountDashboardURL[] =
     "https://passwords.google.com";
 
+const char kPasswordManagerHelpCenteriOSURL[] =
+    "https://support.google.com/chrome/answer/95606?ios=1";
+
 const char kPasswordManagerHelpCenterSmartLock[] =
     "https://support.google.com/accounts?p=smart_lock_chrome";
 
diff --git a/components/password_manager/core/browser/password_manager_constants.h b/components/password_manager/core/browser/password_manager_constants.h
index 249ee57a..b0020d25 100644
--- a/components/password_manager/core/browser/password_manager_constants.h
+++ b/components/password_manager/core/browser/password_manager_constants.h
@@ -16,6 +16,9 @@
 // URL to the password manager account dashboard.
 extern const char kPasswordManagerAccountDashboardURL[];
 
+// URL to the password manager help center.
+extern const char kPasswordManagerHelpCenteriOSURL[];
+
 // URL to the help center article about Smart Lock;
 // TODO(crbug.com/862269): remove when "Smart Lock" is completely gone.
 extern const char kPasswordManagerHelpCenterSmartLock[];
diff --git a/components/password_manager/core/browser/password_store.cc b/components/password_manager/core/browser/password_store.cc
index aa56bba945..9b752ee 100644
--- a/components/password_manager/core/browser/password_store.cc
+++ b/components/password_manager/core/browser/password_store.cc
@@ -53,16 +53,23 @@
 
 // Helper function which invokes |notifying_callback| and |completion_callback|
 // when changes are received.
-void InvokeCallbackOnChanges(
-    base::OnceCallback<void(PasswordStoreChangeList changes)>
-        notifying_callback,
+void InvokeCallbacksForSuspectedChanges(
+    PasswordStoreChangeListReply notifying_callback,
     base::OnceCallback<void(bool)> completion_callback,
-    PasswordStoreChangeList changes) {
+    absl::optional<PasswordStoreChangeList> changes) {
   DCHECK(notifying_callback);
-  bool is_change_empty = changes.empty();
+  // Two cases *presumably* have changes that need to be reported:
+  // 1. `changes` contains a non-empty PasswordStoreChangeList.
+  // 2. `changes` contains no PasswordStoreChangeList at all because the
+  //    backend can't compute it. A full list will be requested instead.
+  // Only if `changes` contains an empty PasswordStoreChangeList, Chrome knows
+  // for certain that no changes have happened:
+  bool completed = !changes.has_value() || !changes->empty();
+
+  // In any case, we want to indicate the completed operation:
   std::move(notifying_callback).Run(std::move(changes));
   if (completion_callback)
-    std::move(completion_callback).Run(!is_change_empty);
+    std::move(completion_callback).Run(completed);
 }
 
 }  // namespace
@@ -131,10 +138,11 @@
         base::flat_map<InsecureType, InsecurityMetadata>();
   }
 
-  auto barrier_callback = base::BarrierCallback<PasswordStoreChangeList>(
-      2, base::BindOnce(&JoinPasswordStoreChanges)
-             .Then(base::BindOnce(
-                 &PasswordStore::NotifyLoginsChangedOnMainSequence, this)));
+  auto barrier_callback =
+      base::BarrierCallback<absl::optional<PasswordStoreChangeList>>(
+          2, base::BindOnce(&JoinPasswordStoreChanges)
+                 .Then(base::BindOnce(
+                     &PasswordStore::NotifyLoginsChangedOnMainSequence, this)));
 
   backend_->RemoveLoginAsync(old_primary_key, barrier_callback);
   backend_->AddLoginAsync(new_form_with_correct_password_issues,
@@ -180,7 +188,7 @@
       base::BindOnce(&PasswordStore::NotifyLoginsChangedOnMainSequence, this);
   backend_->RemoveLoginsCreatedBetweenAsync(
       delete_begin, delete_end,
-      base::BindOnce(&InvokeCallbackOnChanges, std::move(callback),
+      base::BindOnce(&InvokeCallbacksForSuspectedChanges, std::move(callback),
                      std::move(completion)));
 }
 
@@ -343,10 +351,12 @@
 }
 
 void PasswordStore::NotifyLoginsChangedOnMainSequence(
-    PasswordStoreChangeList changes) {
+    absl::optional<PasswordStoreChangeList> changes) {
   DCHECK(main_task_runner_->RunsTasksInCurrentSequence());
 
-  if (changes.empty())
+  // TODO(crbug.com/1267912): Rerequest full list if `!changes.has_value()`.
+
+  if (changes->empty())
     return;
 
   // Don't propagate reference to this store after its shutdown. No caller
@@ -355,7 +365,7 @@
     return;
 
   for (auto& observer : observers_) {
-    observer.OnLoginsChanged(this, changes);
+    observer.OnLoginsChanged(this, changes.value());
   }
 }
 
@@ -385,9 +395,10 @@
   if (completion)
     notify_callback = std::move(notify_callback).Then(std::move(completion));
 
-  auto barrier_callback = base::BarrierCallback<PasswordStoreChangeList>(
-      forms_to_remove.size(), base::BindOnce(&JoinPasswordStoreChanges)
-                                  .Then(std::move(notify_callback)));
+  auto barrier_callback =
+      base::BarrierCallback<absl::optional<PasswordStoreChangeList>>(
+          forms_to_remove.size(), base::BindOnce(&JoinPasswordStoreChanges)
+                                      .Then(std::move(notify_callback)));
 
   for (const auto& form : forms_to_remove) {
     backend_->RemoveLoginAsync(form, barrier_callback);
diff --git a/components/password_manager/core/browser/password_store.h b/components/password_manager/core/browser/password_store.h
index 02ed3fb7..6960153 100644
--- a/components/password_manager/core/browser/password_store.h
+++ b/components/password_manager/core/browser/password_store.h
@@ -152,7 +152,8 @@
   void OnInitCompleted(bool success);
 
   // Notifies observers that password store data may have been changed.
-  void NotifyLoginsChangedOnMainSequence(PasswordStoreChangeList changes);
+  void NotifyLoginsChangedOnMainSequence(
+      absl::optional<PasswordStoreChangeList> changes);
 
   // The following methods notify observers that the password store may have
   // been modified via NotifyLoginsChangedOnMainSequence(). Note that there is
diff --git a/components/password_manager/core/browser/password_store_backend.h b/components/password_manager/core/browser/password_store_backend.h
index 0ae1109..01a28ae 100644
--- a/components/password_manager/core/browser/password_store_backend.h
+++ b/components/password_manager/core/browser/password_store_backend.h
@@ -40,7 +40,7 @@
 using LoginsResult = std::vector<std::unique_ptr<PasswordForm>>;
 using LoginsReply = base::OnceCallback<void(LoginsResult)>;
 using PasswordStoreChangeListReply =
-    base::OnceCallback<void(PasswordStoreChangeList)>;
+    base::OnceCallback<void(absl::optional<PasswordStoreChangeList>)>;
 
 using LoginsResultOrError =
     absl::variant<LoginsResult, PasswordStoreBackendError>;
@@ -54,7 +54,7 @@
 class PasswordStoreBackend {
  public:
   using RemoteChangesReceived =
-      base::RepeatingCallback<void(PasswordStoreChangeList)>;
+      base::RepeatingCallback<void(absl::optional<PasswordStoreChangeList>)>;
 
   PasswordStoreBackend() = default;
   PasswordStoreBackend(const PasswordStoreBackend&) = delete;
diff --git a/components/password_manager/core/browser/password_store_built_in_backend_unittest.cc b/components/password_manager/core/browser/password_store_built_in_backend_unittest.cc
index ce2e50a..e54e95fb 100644
--- a/components/password_manager/core/browser/password_store_built_in_backend_unittest.cc
+++ b/components/password_manager/core/browser/password_store_built_in_backend_unittest.cc
@@ -30,6 +30,7 @@
 using testing::ElementsAre;
 using testing::ElementsAreArray;
 using testing::IsEmpty;
+using testing::Optional;
 
 namespace password_manager {
 
@@ -58,7 +59,7 @@
 
 class MockPasswordStoreBackendTester {
  public:
-  MOCK_METHOD(void, HandleChanges, (PasswordStoreChangeList));
+  MOCK_METHOD(void, HandleChanges, (absl::optional<PasswordStoreChangeList>));
   MOCK_METHOD(void,
               LoginsReceivedConstRef,
               (const std::vector<std::unique_ptr<PasswordForm>>&));
@@ -202,7 +203,7 @@
       PasswordStoreChange(PasswordStoreChange::ADD, form);
 
   testing::StrictMock<MockPasswordStoreBackendTester> tester;
-  EXPECT_CALL(tester, HandleChanges(ElementsAre(add_change)));
+  EXPECT_CALL(tester, HandleChanges(Optional(ElementsAre(add_change))));
   backend->AddLoginAsync(
       form, base::BindOnce(&MockPasswordStoreBackendTester::HandleChanges,
                            base::Unretained(&tester)));
@@ -221,7 +222,7 @@
       PasswordStoreChange(PasswordStoreChange::UPDATE, form);
 
   testing::StrictMock<MockPasswordStoreBackendTester> tester;
-  EXPECT_CALL(tester, HandleChanges(ElementsAre(update_change)));
+  EXPECT_CALL(tester, HandleChanges(Optional(ElementsAre(update_change))));
   backend->UpdateLoginAsync(
       form, base::BindOnce(&MockPasswordStoreBackendTester::HandleChanges,
                            base::Unretained(&tester)));
@@ -239,7 +240,7 @@
       PasswordStoreChange(PasswordStoreChange::REMOVE, form);
 
   testing::StrictMock<MockPasswordStoreBackendTester> tester;
-  EXPECT_CALL(tester, HandleChanges(ElementsAre(remove_change)));
+  EXPECT_CALL(tester, HandleChanges(Optional(ElementsAre(remove_change))));
   backend->RemoveLoginAsync(
       form, base::BindOnce(&MockPasswordStoreBackendTester::HandleChanges,
                            base::Unretained(&tester)));
@@ -265,9 +266,10 @@
   blocked_form->action = GURL("http://foo.example.com/action");
   blocked_form->blocked_by_user = true;
 
-  base::RepeatingCallback<void(PasswordStoreChangeList)> handle_changes =
-      base::BindRepeating(&MockPasswordStoreBackendTester::HandleChanges,
-                          base::Unretained(&tester));
+  base::RepeatingCallback<void(absl::optional<PasswordStoreChangeList>)>
+      handle_changes =
+          base::BindRepeating(&MockPasswordStoreBackendTester::HandleChanges,
+                              base::Unretained(&tester));
   base::RepeatingCallback<void(LoginsResult)> handle_logins =
       base::BindRepeating(&MockPasswordStoreBackendTester::HandleLogins,
                           base::Unretained(&tester));
@@ -275,12 +277,12 @@
       base::BindRepeating(&MockPasswordStoreBackendTester::HandleLoginsOrError,
                           base::Unretained(&tester));
 
-  EXPECT_CALL(tester, HandleChanges(IsEmpty()));
+  EXPECT_CALL(tester, HandleChanges(Optional(IsEmpty())));
   bad_backend->AddLoginAsync(*form, handle_changes);
   RunUntilIdle();
   testing::Mock::VerifyAndClearExpectations(&tester);
 
-  EXPECT_CALL(tester, HandleChanges(IsEmpty()));
+  EXPECT_CALL(tester, HandleChanges(Optional(IsEmpty())));
   bad_backend->AddLoginAsync(*blocked_form, handle_changes);
   RunUntilIdle();
   testing::Mock::VerifyAndClearExpectations(&tester);
@@ -305,7 +307,7 @@
 
   testing::Mock::VerifyAndClearExpectations(&tester);
 
-  EXPECT_CALL(tester, HandleChanges(IsEmpty()));
+  EXPECT_CALL(tester, HandleChanges(Optional(IsEmpty())));
   bad_backend->RemoveLoginAsync(*form, handle_changes);
   RunUntilIdle();
 }
diff --git a/components/password_manager/core/browser/password_store_unittest.cc b/components/password_manager/core/browser/password_store_unittest.cc
index 8ef91ed..b310e60 100644
--- a/components/password_manager/core/browser/password_store_unittest.cc
+++ b/components/password_manager/core/browser/password_store_unittest.cc
@@ -49,8 +49,11 @@
 using testing::DoAll;
 using testing::ElementsAre;
 using testing::ElementsAreArray;
+using testing::Eq;
+using testing::Invoke;
 using testing::IsEmpty;
 using testing::Pointee;
+using testing::SizeIs;
 using testing::UnorderedElementsAre;
 using testing::WithArg;
 
@@ -193,6 +196,13 @@
   return origin.DeprecatedGetOriginAsURL() == url.DeprecatedGetOriginAsURL();
 }
 
+std::tuple<PasswordStore*, MockPasswordStoreBackend*>
+CreateUnownedStoreWithOwnedMockBackend() {
+  auto backend = std::make_unique<MockPasswordStoreBackend>();
+  MockPasswordStoreBackend* mock_backend = backend.get();
+  return std::make_tuple(new PasswordStore(std::move(backend)), mock_backend);
+}
+
 PasswordFormData CreateTestPasswordFormDataByOrigin(const char* origin_url) {
   PasswordFormData data = {PasswordForm::Scheme::kHtml,
                            origin_url,
@@ -208,6 +218,37 @@
   return data;
 }
 
+PasswordStoreChangeList CreateChangeList(PasswordStoreChange::Type type,
+                                         PasswordForm form) {
+  PasswordStoreChangeList changes;
+  changes.emplace_back(type, std::move(form));
+  return changes;
+}
+
+auto HasChangeType(PasswordStoreChange::Type type) {
+  return testing::Property(&PasswordStoreChange::type, Eq(type));
+}
+
+auto HasForm(const PasswordForm& form) {
+  return testing::Property(&PasswordStoreChange::form, Eq(form));
+}
+
+auto EqChange(PasswordStoreChange::Type type, const PasswordForm& form) {
+  return AllOf(HasChangeType(type), HasForm(form));
+}
+
+auto EqRemoval(const PasswordForm& form) {
+  return EqChange(PasswordStoreChange::REMOVE, form);
+}
+
+auto EqAddition(const PasswordForm& form) {
+  return EqChange(PasswordStoreChange::ADD, form);
+}
+
+auto EqUpdate(const PasswordForm& form) {
+  return EqChange(PasswordStoreChange::UPDATE, form);
+}
+
 }  // namespace
 
 class PasswordStoreTest : public testing::Test {
@@ -1019,11 +1060,7 @@
 TEST_F(PasswordStoreTest, DelegatesGetAllLoginsToBackend) {
   scoped_refptr<PasswordStore> store;
   MockPasswordStoreBackend* mock_backend;
-  {  // This scope ensures nobody tries to use `backend` after its move.
-    auto backend = std::make_unique<MockPasswordStoreBackend>();
-    mock_backend = backend.get();
-    store = new PasswordStore(std::move(backend));
-  }
+  std::tie(store, mock_backend) = CreateUnownedStoreWithOwnedMockBackend();
   store->Init(/*prefs=*/nullptr, /*affiliated_match_helper=*/nullptr);
 
   MockPasswordStoreConsumer mock_consumer;
@@ -1036,11 +1073,7 @@
 TEST_F(PasswordStoreTest, DelegatesGetAutofillableLoginsToBackend) {
   scoped_refptr<PasswordStore> store;
   MockPasswordStoreBackend* mock_backend;
-  {  // This scope ensures nobody tries to use `backend` after its move.
-    auto backend = std::make_unique<MockPasswordStoreBackend>();
-    mock_backend = backend.get();
-    store = new PasswordStore(std::move(backend));
-  }
+  std::tie(store, mock_backend) = CreateUnownedStoreWithOwnedMockBackend();
   store->Init(/*prefs=*/nullptr, /*affiliated_match_helper=*/nullptr);
 
   MockPasswordStoreConsumer mock_consumer;
@@ -1050,6 +1083,87 @@
   store->ShutdownOnUIThread();
 }
 
+TEST_F(PasswordStoreTest, CallOnLoginsChangedIfRemovalProvidesChanges) {
+  const PasswordForm kTestForm = MakePasswordForm(kTestWebRealm1);
+  MockPasswordStoreObserver mock_observer;
+  scoped_refptr<PasswordStore> store;
+  MockPasswordStoreBackend* mock_backend;
+  std::tie(store, mock_backend) = CreateUnownedStoreWithOwnedMockBackend();
+  store->Init(/*prefs=*/nullptr, /*affiliated_match_helper=*/nullptr);
+  store->AddObserver(&mock_observer);
+
+  // Expect that observers receive the removal when the backend invokes the
+  // reply with a `PasswordStoreChangeList`.
+  EXPECT_CALL(*mock_backend, RemoveLoginAsync(Eq(kTestForm), _))
+      .WillOnce(
+          WithArg<1>(Invoke([&](PasswordStoreChangeListReply reply) -> void {
+            std::move(reply).Run(
+                CreateChangeList(PasswordStoreChange::REMOVE, kTestForm));
+          })));
+  EXPECT_CALL(mock_observer, OnLoginsRetained).Times(0);
+  EXPECT_CALL(mock_observer,
+              OnLoginsChanged(store.get(), ElementsAre(EqRemoval(kTestForm))));
+  store->RemoveLogin(kTestForm);
+  WaitForPasswordStore();
+
+  store->RemoveObserver(&mock_observer);
+  store->ShutdownOnUIThread();
+}
+
+TEST_F(PasswordStoreTest, CallOnLoginsChangedIfAdditionProvidesChanges) {
+  const PasswordForm kTestForm = MakePasswordForm(kTestWebRealm1);
+  MockPasswordStoreObserver mock_observer;
+  scoped_refptr<PasswordStore> store;
+  MockPasswordStoreBackend* mock_backend;
+  std::tie(store, mock_backend) = CreateUnownedStoreWithOwnedMockBackend();
+  store->Init(/*prefs=*/nullptr, /*affiliated_match_helper=*/nullptr);
+  store->AddObserver(&mock_observer);
+
+  // Expect that observers receive the addition when the backend invokes the
+  // reply with a `PasswordStoreChangeList`.
+  EXPECT_CALL(*mock_backend, AddLoginAsync(Eq(kTestForm), _))
+      .WillOnce(
+          WithArg<1>(Invoke([&](PasswordStoreChangeListReply reply) -> void {
+            std::move(reply).Run(
+                CreateChangeList(PasswordStoreChange::ADD, kTestForm));
+          })));
+  EXPECT_CALL(mock_observer, OnLoginsRetained).Times(0);
+  EXPECT_CALL(mock_observer,
+              OnLoginsChanged(store.get(), ElementsAre(EqAddition(kTestForm))));
+  store->AddLogin(kTestForm);
+  WaitForPasswordStore();
+
+  store->RemoveObserver(&mock_observer);
+  store->ShutdownOnUIThread();
+}
+
+TEST_F(PasswordStoreTest, CallOnLoginsChangedIfUpdateProvidesChanges) {
+  const PasswordForm kTestForm = MakePasswordForm(kTestWebRealm1);
+  MockPasswordStoreObserver mock_observer;
+  scoped_refptr<PasswordStore> store;
+  MockPasswordStoreBackend* mock_backend;
+  std::tie(store, mock_backend) = CreateUnownedStoreWithOwnedMockBackend();
+  store->Init(/*prefs=*/nullptr, /*affiliated_match_helper=*/nullptr);
+  store->AddObserver(&mock_observer);
+
+  // Expect that observers receive the update when the backend invokes the
+  // reply with a `PasswordStoreChangeList`.
+  EXPECT_CALL(*mock_backend, UpdateLoginAsync(Eq(kTestForm), _))
+      .WillOnce(
+          WithArg<1>(Invoke([&](PasswordStoreChangeListReply reply) -> void {
+            std::move(reply).Run(
+                CreateChangeList(PasswordStoreChange::UPDATE, kTestForm));
+          })));
+  EXPECT_CALL(mock_observer, OnLoginsRetained).Times(0);
+  EXPECT_CALL(mock_observer,
+              OnLoginsChanged(store.get(), ElementsAre(EqUpdate(kTestForm))));
+  store->UpdateLogin(kTestForm);
+  WaitForPasswordStore();
+
+  store->RemoveObserver(&mock_observer);
+  store->ShutdownOnUIThread();
+}
+
 TEST_F(PasswordStoreTest, GetAllLogins) {
   static constexpr PasswordFormData kTestCredentials[] = {
       {PasswordForm::Scheme::kHtml, kTestAndroidRealm1, "", "", u"", u"", u"",
@@ -1092,11 +1206,7 @@
 TEST_F(PasswordStoreTest, GetAllLoginsWithAffiliationAndBrandingInformation) {
   scoped_refptr<PasswordStore> store;
   MockPasswordStoreBackend* mock_backend;
-  {  // This scope ensures nobody tries to use `backend` after its move.
-    auto backend = std::make_unique<MockPasswordStoreBackend>();
-    mock_backend = backend.get();
-    store = new PasswordStore(std::move(backend));
-  }
+  std::tie(store, mock_backend) = CreateUnownedStoreWithOwnedMockBackend();
   // Invoke the store initialization callback to initialize
   // AffiliatedMatchHelper.
   EXPECT_CALL(*mock_backend, InitBackend)
diff --git a/components/password_manager/core/browser/password_store_util.cc b/components/password_manager/core/browser/password_store_util.cc
index 59526a2..2c8f99e 100644
--- a/components/password_manager/core/browser/password_store_util.cc
+++ b/components/password_manager/core/browser/password_store_util.cc
@@ -6,11 +6,13 @@
 
 namespace password_manager {
 
-PasswordStoreChangeList JoinPasswordStoreChanges(
-    std::vector<PasswordStoreChangeList> changes) {
+absl::optional<PasswordStoreChangeList> JoinPasswordStoreChanges(
+    std::vector<absl::optional<PasswordStoreChangeList>> changes) {
   PasswordStoreChangeList joined_changes;
   for (auto changes_list : changes) {
-    std::move(changes_list.begin(), changes_list.end(),
+    if (!changes_list.has_value())
+      return absl::nullopt;
+    std::move(changes_list->begin(), changes_list->end(),
               std::back_inserter(joined_changes));
   }
   return joined_changes;
diff --git a/components/password_manager/core/browser/password_store_util.h b/components/password_manager/core/browser/password_store_util.h
index a070d0b6..c98fc94 100644
--- a/components/password_manager/core/browser/password_store_util.h
+++ b/components/password_manager/core/browser/password_store_util.h
@@ -9,13 +9,14 @@
 
 #include "components/password_manager/core/browser/password_store_backend.h"
 #include "components/password_manager/core/browser/password_store_change.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 
 namespace password_manager {
 
 // Aggregates a vector of PasswordStoreChangeLists into a single
 // PasswordStoreChangeList. Does not check for duplicate values.
-PasswordStoreChangeList JoinPasswordStoreChanges(
-    std::vector<PasswordStoreChangeList> changes);
+absl::optional<PasswordStoreChangeList> JoinPasswordStoreChanges(
+    std::vector<absl::optional<PasswordStoreChangeList>> changes);
 
 // Returns logins if |result| holds them, or an empty list if |result|
 // holds an error.
@@ -23,4 +24,4 @@
 
 }  // namespace password_manager
 
-#endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_STORE_UTIL_H_
\ No newline at end of file
+#endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_STORE_UTIL_H_
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index aeb567b2..44b76df 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -3921,7 +3921,6 @@
       Ist die Richtlinie auf „Disabled“ gesetzt, werden PDF-Dateien mit dem PDF-Plug-in geöffnet, sofern es nicht von den Nutzern deaktiviert wird.
 
       Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern in <ph name="PRODUCT_NAME" /> nicht geändert werden. Wenn sie nicht konfiguriert ist, können Nutzer entscheiden, ob das PDF extern geöffnet werden soll.</translation>
-<translation id="570062449808736508">Wenn für diese Richtlinie kein leerer String angegeben ist, wird WebView URL-Einschränkungen des Contentanbieters des angegebenen Befugnisnamens erkennen.</translation>
 <translation id="5708969689202733975">Zulässige Modi für das schnelle Entsperren konfigurieren</translation>
 <translation id="5714563837055244378">Freigabe zwischen Android-Apps und Webanwendungen aktivieren.</translation>
 <translation id="5715617256528927547">Wenn die Richtlinie konfiguriert ist, wird die Cachelebensdauer von Gruppenrichtlinienobjekten (Group Policy Objects, GPOs) in Stunden festgelegt. Das ist die maximale Dauer, während der GPOs wiederverwendet werden können, bevor sie nochmals heruntergeladen werden. Anstatt sie bei jedem Richtlinienabruf herunterzuladen, kann das System die im Cache gespeicherten GPOs nochmals verwenden, solange die Version dieselbe ist.
@@ -4661,7 +4660,6 @@
       Beachten Sie, dass diese Richtlinie von EnabledPlugins und DisabledPluginsExceptions überschrieben werden kann.
 
       Wenn die Richtlinie nicht konfiguriert ist, kann der Nutzer beliebige auf dem System installierte Plug-ins verwenden, ausgenommen inkompatible, veraltete oder gefährliche Plug-ins, die hartcodiert sind.</translation>
-<translation id="6573305661369899995">Eine externe Quelle für URL-Einschränkungen festlegen</translation>
 <translation id="6575944031719151455">Wenn die Richtlinie konfiguriert ist, wird die Liste der lokalen Gerätekonten angegeben, die auf der Anmeldeseite angezeigt werden sollen. Durch Kennungen werden die verschiedenen lokalen Gerätekonten auseinandergehalten.
 
       Wenn die Richtlinie nicht konfiguriert oder eine leere Liste festgelegt ist, gibt es keine lokalen Gerätekonten.</translation>
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index 68f0fb9..6438c50 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -3938,7 +3938,6 @@
       Si inhabilitas la política, se abrirán los archivos PDF, a menos que los usuarios desactiven el complemento de PDF.
 
       Si estableces esta política, los usuarios no podrán cambiarla en <ph name="PRODUCT_NAME" />. Si no la estableces, los usuarios podrán elegir si desean abrir los archivos PDF de forma externa o no.</translation>
-<translation id="570062449808736508">Cuando esta política se establece con una string no vacía, WebView leerá las restricciones de URL del proveedor de contenido con el nombre de la autoridad proporcionado.</translation>
 <translation id="5708969689202733975">Configurar los modos de desbloqueo rápido permitidos</translation>
 <translation id="5714563837055244378">Permitir que Android comparta aplicaciones web</translation>
 <translation id="5715617256528927547">Si estableces la política, se especificará la duración (expresada en horas) de almacenamiento en caché del Objeto de directiva de grupo (GPO). Este valor indica el tiempo máximo en el que pueden reutilizarse los GPO antes de que se vuelvan a descargar. En lugar de volverlos a descargar en cada recuperación de la política, el sistema volverá a utilizar los almacenados en caché, siempre que no cambien de versión.
@@ -4687,7 +4686,6 @@
       Ten en cuenta que se puede anular esta política con las políticas EnabledPlugins y DisabledPluginsExceptions.
 
       Si no se configura esta política, el usuario podrá usar cualquier complemento instalado en el sistema, excepto aquellos que sean peligrosos, obsoletos o incompatibles por el código.</translation>
-<translation id="6573305661369899995">Establece una fuente externa de restrcicciones de URL</translation>
 <translation id="6575944031719151455">Si estableces la política, esta especificará la lista de cuentas locales del dispositivo que se muestran en la pantalla de acceso. Se usan identificadores para diferenciar las diversas cuentas locales del dispositivo.
 
       Si no estableces la política o la defines con una lista vacía, no habrá ninguna cuenta local del dispositivo.</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index 690dabc..6e3bf1da 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -3948,7 +3948,6 @@
       Si se inhabilita, se abrirán los archivos PDF, a menos que los usuarios desactiven el complemento de PDF.
 
       Si se le asigna un valor a esta política, los usuarios no podrán cambiarlo en <ph name="PRODUCT_NAME" />. Si no se le asigna ningún valor, los usuarios podrán elegir si se abren o no los PDFs de forma externa.</translation>
-<translation id="570062449808736508">Si esta política se asigna a una cadena no vacía, WebView leerá las restricciones de URL del proveedor de contenido con el nombre de autoridad especificado.</translation>
 <translation id="5708969689202733975">Configurar los modos de desbloqueo rápido permitidos</translation>
 <translation id="5714563837055244378">Habilitar la opción de compartir de Android a aplicación web.</translation>
 <translation id="5715617256528927547">Si se establece esta política, se especificará en horas el tiempo de vida en caché de Group Policy Object (GPO). La duración máxima durante la cual los GPO pueden reutilizarse antes de que sea necesario volver a descargarlos. En lugar de volver a descargar los GPO cada vez que se recogen datos de políticas, el sistema puede reutilizar los GPO almacenados en caché siempre que su versión no cambie.
@@ -4697,7 +4696,6 @@
       Ten en cuenta que EnabledPlugins y DisabledPluginsExceptions pueden anular esta política.
 
       Si no se asigna ningún valor a esta política, el usuario puede utilizar cualquier complemento que esté instalado en el sistema, excepto complementos incompatibles preprogramados, obsoletos o peligrosos.</translation>
-<translation id="6573305661369899995">Establecer una fuente externa de restricciones de URL</translation>
 <translation id="6575944031719151455">Si se define esta política, especificará la lista de cuentas locales del dispositivo que se muestran en la pantalla de inicio de sesión. Los identificadores se usan para distinguir las diversas cuentas locales del dispositivo.
 
       Si no se define esta política o se le asigna una lista vacía, no habrá ninguna cuenta local del dispositivo.</translation>
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index eec3e08..5d797caa 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -3937,7 +3937,6 @@
       Si cette règle est désactivée, les fichiers PDF sont ouverts, sauf si les utilisateurs ont désactivé le plug-in PDF.
 
       Si cette règle est configurée, les utilisateurs ne peuvent pas la modifier dans <ph name="PRODUCT_NAME" />. Si la règle n'est pas configurée, les utilisateurs peuvent choisir d'ouvrir le PDF en externe ou non.</translation>
-<translation id="570062449808736508">Lorsque ce règlement est défini sur une chaîne non vide, WebView lit les restrictions d'URL depuis le fournisseur de contenu portant le nom de l'autorité indiquée.</translation>
 <translation id="5708969689202733975">Configurer les modes de déverrouillage rapide autorisés</translation>
 <translation id="5714563837055244378">Activer le partage des applis Android vers les applis Web.</translation>
 <translation id="5715617256528927547">Cette règle permet de spécifier la durée de mise en cache (en heures) des GPO, c'est-à-dire la durée maximale pendant laquelle les GPO peuvent être réutilisés avant d'être de nouveau téléchargés. Au lieu de les télécharger de nouveau à chaque récupération de règle, le système peut réutiliser ceux mis en cache tant que leur version ne change pas.
@@ -4683,7 +4682,6 @@
       Cette règle peut être ignorée par EnabledPlugins et DisabledPluginsExceptions.
 
       Si cette règle n'est pas configurée, l'utilisateur peut utiliser n'importe quel plug-in installé sur le système, à l'exception des plug-ins codés en dur incompatibles, et des plug-ins obsolètes ou dangereux.</translation>
-<translation id="6573305661369899995">Définir une source externe pour les restrictions d'URL</translation>
 <translation id="6575944031719151455">Permet d'établir la liste des comptes locaux de l'appareil à afficher sur l'écran de connexion. Les identifiants distinguent les différents comptes locaux de l'appareil.
 
       Si cette règle n'est pas configurée ou que la liste est vide, aucun compte local de l'appareil n'est affiché.</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index 84282be..bc3db80 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -3948,7 +3948,6 @@
       Jika kebijakan disetel ke Nonaktif, file PDF akan dibuka kecuali jika pengguna menonaktifkan plugin PDF.
 
       Jika Anda menyetel kebijakan, pengguna tidak dapat mengubahnya di <ph name="PRODUCT_NAME" />. Jika tidak disetel, pengguna dapat memilih apakah akan membuka PDF secara eksternal atau tidak.</translation>
-<translation id="570062449808736508">Jika kebijakan ini disetel ke string yang tidak kosong, WebView akan membaca batasan URL dari penyedia konten dengan nama otoritas yang diberikan.</translation>
 <translation id="5708969689202733975">Mengonfigurasi mode buka kunci cepat yang diizinkan</translation>
 <translation id="5714563837055244378">Aktifkan berbagi Aplikasi Android ke Aplikasi Web.</translation>
 <translation id="5715617256528927547">Menyetel kebijakan akan menentukan masa berlaku cache Objek Kebijakan Grup (GPO) dalam hitungan jam. GPO dengan durasi maksimum dapat digunakan kembali sebelum didownload ulang. Daripada mendownload ulang GPO pada setiap pengambilan kebijakan, sistem akan menggunakan kembali GPO yang di-cache selama versinya tidak berubah.
@@ -4700,7 +4699,6 @@
       Perlu diketahui bahwa kebijakan ini dapat diganti dengan EnabledPlugins dan DisabledPluginsExceptions.
 
       Jika kebijakan ini tidak ditetapkan, pengguna dapat menggunakan plugin mana pun yang diinstal di sistem kecuali plugin yang tidak kompatibel saat dilakukan hard code, usang, atau berbahaya.</translation>
-<translation id="6573305661369899995">Setel sumber eksternal batasan URL</translation>
 <translation id="6575944031719151455">Menyetel kebijakan akan menentukan daftar akun lokal perangkat yang ditampilkan di layar login. ID akan menunjukkan akun lokal perangkat yang berbeda.
 
       Jika kebijakan ini tidak disetel atau disetel ke daftar kosong, berarti tidak ada akun lokal perangkat yang ditampilkan.</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index b75bc772..c994da4 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -3938,7 +3938,6 @@
       Se il criterio viene impostato su Disattivato, i file PDF vengono aperti con il plug-in di PDF, a meno che disattivato dagli utenti.
 
       Se il criterio viene impostato, gli utenti non possono modificarlo in <ph name="PRODUCT_NAME" />. Se non viene impostato, gli utenti possono scegliere se aprire o meno i file PDF esternamente.</translation>
-<translation id="570062449808736508">Se per questa norma viene impostata una stringa, WebView legge le limitazioni relative agli URL del fornitore di contenuti con il nome dell'autorità indicato.</translation>
 <translation id="5708969689202733975">Configura le modalità di sblocco rapido consentite</translation>
 <translation id="5714563837055244378">Attiva la condivisione da Android alle app web.</translation>
 <translation id="5715617256528927547">La configurazione del criterio consente di specificare la durata in ore della cache dell'Oggetto Criteri di gruppo (GPO): tempo massimo in cui i GPO possono essere riutilizzati prima di essere scaricati nuovamente. Invece di scaricarli di nuovo a ogni recupero del criterio, il sistema riutilizza i GPO memorizzati nella cache finché la loro versione non viene modificata.
@@ -4678,7 +4677,6 @@
       Tieni presente che questo criterio può essere sostituito da EnabledPlugins e da DisabledPluginsExceptions.
 
       Se il criterio non viene impostato, l'utente potrà usare qualsiasi plug-in installato sul sistema ad eccezione di quelli hardcoded incompatibili, obsoleti o pericolosi.</translation>
-<translation id="6573305661369899995">Imposta una fonte esterna di limitazioni relative agli URL</translation>
 <translation id="6575944031719151455">La configurazione del criterio consente di specificare l'elenco di account locali del dispositivo da visualizzare nella schermata di accesso. Gli identificatori fanno distinzione tra i diversi account locali del dispositivo.
 
       Se il criterio non viene configurato o se l'elenco è vuoto, non vengono visualizzati account locali del dispositivo.</translation>
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 11e8323b..dcd2892 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -174,6 +174,7 @@
 
       有効な <ph name="URL_LABEL" /> パターンについて詳しくは、https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns をご覧ください。このポリシーの値に「<ph name="WILDCARD_VALUE" />」は使用できません。</translation>
 <translation id="120937472976628837">ファン情報を報告する</translation>
+<translation id="1212233008927724662">ログイン WebUI の遅延読み込みを無効にする。</translation>
 <translation id="1216919699175573511">Signed HTTP Exchange(SXG)のサポートを有効にします</translation>
 <translation id="1219695476179627719">デバイスですでに新しいバージョンを実行している場合に、<ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" /> で設定されているバージョンに戻すかどうかを指定します。
 
@@ -480,6 +481,12 @@
 <translation id="1597684038583138808">クイック アンサーの定義を有効にする</translation>
 <translation id="1599424828227887013">Android デバイスで指定の発行元に対してサイト分離を有効にする</translation>
 <translation id="159946228300522107">このポリシーを True に設定した場合、Chrome では初回実行時に最初に表示されたウィンドウが最大化されます。このポリシーを False に設定した場合、または未設定のままにした場合、画面サイズによっては、Chrome で最初に表示されたウィンドウが最大化されます。</translation>
+<translation id="1600107337865729434">このポリシーでは、オリジンキー エージェント クラスタリングをデフォルトで許可します。
+
+      Origin-Agent-Cluster: HTTP ヘッダーは、オリジンキー エージェント クラスタとサイトキー エージェント クラスタのどちらでドキュメントを分離するかを制御します。オリジンキー エージェント クラスタでは、オリジンに基づくドキュメントの分離が許可されるため、セキュリティに影響します。デベロッパーへの実質的な影響としては、document.domain アクセサーを設定できなくなります。
+
+      デフォルトの動作 - Origin-Agent-Cluster: ヘッダーが設定されていない場合の動作が M101 でサイトキーからオリジンキーに変更されます。このポリシーを有効に設定するか未設定のままにした場合、バージョン M101 以降、ブラウザにこの新しいデフォルトの動作が適用されます。このポリシーを無効に設定した場合、この変更は元に戻され、Origin-Agent-Cluster: ヘッダーのないドキュメントは、サイトキー エージェント クラスタに割り当てられます。結果として、document.domain アクセサーは引き続きデフォルトで設定可能となります。これは従来の動作と同じです。
+      </translation>
 <translation id="1600340610556453828">このポリシーを無効に設定した場合、<ph name="PRODUCT_OS_NAME" /> で Wi-Fi がオフになり、ユーザーはこの設定を変更できません。
 
       このポリシーを有効に設定するか未設定のままにした場合、ユーザーは Wi-Fi をオンまたはオフにできます。</translation>
@@ -627,6 +634,7 @@
       <ph name="REMOTE_ACCESS_HOST_CLIENT_DOMAIN_LIST_POLICY_NAME" /> も参照してください。
 
       注: この設定は <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" /> より優先されます(指定されている場合)。</translation>
+<translation id="1721304336924950970">ログイン WebUI を必要なときにのみ読み込みます。</translation>
 <translation id="172374442286684480">ローカル データの設定をすべてのサイトに許可する</translation>
 <translation id="1729169799290004131">このポリシーでは、画面の明るさの割合(%)を指定できます。このとき、明るさの自動調整機能は無効になります。初期画面の明るさはポリシーの値に調整されますが、ユーザーはこの設定を変更できます。
 
@@ -706,6 +714,7 @@
           このポリシーは省略可能です。未設定の場合、インスタント検索リクエストは GET メソッドを使用して送信されます。
 
           このポリシーは「DefaultSearchProviderEnabled」ポリシーが有効な場合にのみ適用されます。</translation>
+<translation id="1850439894606905202">デフォルトで、ドキュメントをサイトキー エージェント クラスタに割り当てる(document.domain は引き続き設定可能)。</translation>
 <translation id="1852294065645015766">メディアの自動再生を許可する</translation>
 <translation id="1859859319036806634">警告: TLS バージョン フォールバックは、<ph name="PRODUCT_NAME" /> のバージョン 52 で削除され(2016 年 9 月頃)、このポリシーもそれ以降機能しなくなります。
 
@@ -1808,6 +1817,15 @@
 <translation id="3152425128389603870">統合デスクトップを使用可能にし、デフォルトで有効にする</translation>
 <translation id="3159375329008977062">ユーザーは UI から Crostini コンテナを書き出しおよび読み込みできます</translation>
 <translation id="3164531087779621747">印刷の PostScript モード</translation>
+<translation id="3165468162820163252">このポリシーでは、ログイン画面の WebUI を常に起動時に読み込むか、表示の直前に読み込むかを制御します。このポリシーはログイン画面に適用されます。
+
+      このポリシーを有効に設定した場合、ログイン画面の WebUI は表示の直前に読み込まれます。これによりログイン プロセスが迅速化されます。
+
+      このポリシーを無効に設定した場合、ログイン画面の WebUI は常に起動時に読み込まれます(従来の動作)。
+
+      未設定のままにした場合、動作は kEnableLazyLoginWebUILoading 機能によって制御されます。
+
+      このポリシーは、kEnableLazyLoginWebUILoading が完全にリリースされた後に削除されます。</translation>
 <translation id="3165808775394012744">これらのポリシーは、削除しやすいようにこのフォルダにまとめられています。</translation>
 <translation id="3166210414652928099">信頼できない提供元の Android アプリの使用をユーザーに許可する</translation>
 <translation id="316778957754360075">この設定は <ph name="PRODUCT_NAME" /> バージョン 29 で廃止されました。組織でホストする拡張機能/アプリのコレクションを設定するには、CRX パッケージをホストするサイトを ExtensionInstallSources の中で指定し、パッケージへの直接ダウンロード リンクをウェブページに置くことをおすすめします。そのウェブページのランチャーは、ExtensionInstallForcelist ポリシーを使用して作成できます。</translation>
@@ -3808,7 +3826,6 @@
       このポリシーを無効に設定した場合、ユーザーが PDF プラグインをオフにしない限り、PDF ファイルは PDF プラグインで開かれます。
 
       このポリシーを設定した場合、ユーザーは <ph name="PRODUCT_NAME" /> でこの設定を変更できません。このポリシーを未設定のままにした場合、ユーザーは PDF を別のアプリで開くかどうかを選択できます。</translation>
-<translation id="570062449808736508">このポリシーを空でない文字列に設定した場合、WebView では、指定された認証局名を使ってコンテンツ プロバイダから URL に関する制限を読み取ります。</translation>
 <translation id="5708969689202733975">許可するロックのクイック解除モードを設定する</translation>
 <translation id="5714563837055244378">Android からウェブアプリへの共有を有効にする。</translation>
 <translation id="5715617256528927547">このポリシーでは、グループ ポリシー オブジェクト(GPO)のキャッシュ期間(時間単位)を指定できます。これは GPO を再使用できる最長期間で、この期間が終了すると GPO は再ダウンロードされます。これにより、ポリシーの取り込みが行われるたびに GPO を再ダウンロードせず、GPO のバージョンが変わらない間はキャッシュされた GPO をシステムで再使用します。
@@ -3882,6 +3899,7 @@
       このポリシーを True に設定した場合、Web Components v0 の機能はすべてのサイトで有効になります。このポリシーを False に設定するか未設定のままにした場合、Web Components v0 の機能は M80 以降においてデフォルトで無効になります。
 
       このポリシーは、Chrome 84 以降で削除されます。</translation>
+<translation id="575647238840663288">デフォルトで、必要に応じてドキュメントをオリジンキー エージェント クラスタに割り当てる(対象のドキュメントでは document.domain は設定不可能)。</translation>
 <translation id="5756680608782814094">デバイスの VPD に関する情報を報告します。
 
       このポリシーを false に設定するか未設定のままにした場合、この情報は報告されません。
@@ -4502,7 +4520,6 @@
       このポリシーよりも EnabledPlugins と DisabledPluginsExceptions が優先されます。
 
       このポリシーを設定しない場合、ユーザーはシステムにインストールされたどのプラグインも使用できます(互換性のないハードコードされたプラグイン、古いプラグイン、危険なプラグインは除く)。</translation>
-<translation id="6573305661369899995">URL に関する制限の外部ソースを設定</translation>
 <translation id="6575944031719151455">このポリシーでは、ログイン画面に表示するデバイスのローカル アカウントのリストを指定できます。識別子を指定して、デバイスのローカル アカウントを区別します。
 
       このポリシーを未設定のままにするか、空のリストを指定した場合、デバイスのローカル アカウントは表示されません。</translation>
@@ -4594,6 +4611,7 @@
       * サーバー証明書の <ph name="SUBJECT_PUBLIC_KEY_INFO" /> で指定されている。
 
       * 証明書チェーンの CA(認証局)証明書に出現する <ph name="SUBJECT_PUBLIC_KEY_INFO" /> で指定されている。CA 証明書に X.509v3 nameConstraints 拡張による制約が適用され、permittedSubtrees に directoryName nameConstraints が 1 つ以上存在し、その directoryName に organizationName 属性が含まれている。* 証明書チェーン内の CA 証明書に出現する <ph name="SUBJECT_PUBLIC_KEY_INFO" /> で指定されていて、その CA 証明書のサブジェクトに organizationName 属性が 1 つ以上含まれていること。さらに、サーバーの証明書にも同じ数の organizationName 属性が同じ順序で含まれ、それらの値がバイト単位で同一である。<ph name="SUBJECT_PUBLIC_KEY_INFO" /> ハッシュは、ハッシュ アルゴリズム名とスラッシュに加え、指定された証明書の DER-エンコード済み <ph name="SUBJECT_PUBLIC_KEY_INFO" /> に適用されているハッシュ アルゴリズムの Base64 エンコードをリンクすることで指定します。Base64 エンコードの形式は、SPKI フィンガープリントの形式に一致します。認識されるハッシュ アルゴリズムは SHA256 だけです。その他は無視されます。ポリシーが未設定のまま、Certificate Transparency(証明書の透明性)による開示を必要とする証明書が開示されていない場合、<ph name="PRODUCT_NAME" /> はその証明書を信頼しません。</translation>
+<translation id="6704445641918520643">ログイン WebUI の遅延読み込みを有効にする。</translation>
 <translation id="6704515759227307131">このポリシーはサポートが終了しており、AdvancedProtectionAllowed に置き換えられました。
 
       このポリシーは、高度な保護機能プログラムに登録しているユーザーに対し、不正なソフトウェアがないかスキャンする目的で、ダウンロードしたコンテンツを Google に送信することを許可するかどうかを制御します。True に設定するか未設定のままにした場合、高度な保護機能プログラムに登録しているユーザーには、詳細なスキャンのためにファイルを Google に送信するかを確認するメッセージが表示されます。ユーザーが [スキャン] を選択した場合、ダウンロードしたコンテンツは Google に送信されます。False に設定した場合、ユーザーにメッセージは表示されず、ダウンロードしたコンテンツは Google に送信されません。</translation>
@@ -6258,6 +6276,11 @@
 
       <ph name="MS_WIN_NAME" /> では、<ph name="MS_AD_NAME" /> ドメインに追加されたインスタンス、Windows 10 Pro で実行されているインスタンス、<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> に登録されているインスタンスでのみこの機能を使用できます。<ph name="MAC_OS_NAME" /> では、MDM を介して管理されるインスタンスまたは MCX を介してドメインに追加されたインスタンスでのみこの機能を使用できます。</translation>
 <translation id="8671119576957984818">デスクトップ共有ハブを有効にする</translation>
+<translation id="8671314659400112135">このポリシーを有効に設定するか未設定のままにした場合、<ph name="PRODUCT_NAME" /> で追加の拡張ポイント セキュリティ リスク軽減の適用が許可され、ブラウザ プロセスの従来の拡張ポイントはブロックされます。
+
+      このポリシーを無効に設定した場合、悪質な疑いのある不明なコードに対して <ph name="PRODUCT_NAME" /> のブラウザ プロセス内での読み込みが許可されるため、<ph name="PRODUCT_NAME" /> のセキュリティと安定性が低下します。このポリシーは、<ph name="PRODUCT_NAME" /> のブラウザ プロセス内で実行する必要のあるサードパーティ ソフトウェアとの間で互換性の問題が発生する場合にのみ無効にしてください。
+
+      注: 詳しくはプロセス対応ポリシー(https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md#Process-mitigation-policies)をご覧ください。</translation>
 <translation id="8672321184841719703">自動更新の対象バージョンを指定</translation>
 <translation id="867410340948518937">U2F(Universal Second Factor)</translation>
 <translation id="8676959842615154675">このポリシーを有効に設定した場合、リモート アクセス ホストは、そのホストが関連付けられているローカル ユーザーの名前と、ホストの所有者として登録されている Google アカウントの名前(たとえば、ホストの所有者が「johndoe@example.com」の場合は「johndoe」)を比較します。ホストの所有者の名前と、ホストが関連付けられているローカル ユーザーの名前が異なる場合、このホストは起動しません。所有者の Google アカウントが必ず特定のドメインと関連付けられるようにするには、このポリシーを <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" /> と一緒に使用してください。
@@ -6528,6 +6551,7 @@
 <translation id="8948062138228904066">認証サーバーの許可リスト</translation>
 <translation id="8951350807133946005">ディスクのキャッシュ ディレクトリの設定</translation>
 <translation id="8955719471735800169">トップへ戻る</translation>
+<translation id="8956312248048980644">オリジンキー エージェント クラスタリングをデフォルトで許可します。</translation>
 <translation id="8959992920425111821">デフォルトの構成</translation>
 <translation id="8967125680876068695">Chrome アプリは、Windows、Mac、Linux でのサポートが終了しています。
       このポリシーを有効に設定した場合、2022 年 6 月にすべてのプラットフォームで Chrome アプリのサポートが廃止される日まで、これらのプラットフォームでは引き続き <ph name="PRODUCT_NAME" /> で Chrome アプリを実行できます。
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index 08e528f..a39e95fc 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -3944,7 +3944,6 @@
       정책을 Disabled로 설정하면 사용자가 PDF 플러그인을 사용 중지하지 않는 한 PDF 플러그인에서 PDF 파일을 엽니다.
 
       정책을 설정하면 사용자가 <ph name="PRODUCT_NAME" />에서 정책을 변경할 수 없습니다. 설정하지 않으면 사용자가 외부에서 PDF를 열지를 선택할 수 있습니다.</translation>
-<translation id="570062449808736508">웹 제한 권한 정책이 비어있지 않은 문자열로 설정된 경우 WebView는 주어진 권한 이름으로 콘텐츠 제공업체로부터 URL 제한을 읽습니다.</translation>
 <translation id="5708969689202733975">허용된 빠른 잠금 해제 모드를 설정합니다.</translation>
 <translation id="5714563837055244378">Android에서 웹 앱 공유를 사용 설정합니다.</translation>
 <translation id="5715617256528927547">정책을 설정하면 그룹 정책 객체(GPO)의 전체 기간을 시간 단위로 지정합니다. 이는 GPO가 다시 다운로드되기 전에 다시 사용될 수 있는 최대 기간을 의미합니다. 정책을 가져올 때마다 GPO를 다시 다운로드하는 대신 시스템에서 캐시된 GPO를 재사용(버전이 바뀌지 않는다는 전제하에) 합니다.
@@ -4696,7 +4695,6 @@
       이 정책은 EnabledPlugins 및 DisabledPluginsExceptions에 의해 재정의될 수 있습니다.
 
       아 정책을 설정하지 않으면 사용자가 시스템에 설치된 플러그인 중 하드 코딩되었으며 호환되지 않거나, 오래되었거나, 위험한 플러인을 제외한 모든 플러그인을 사용할 수 있습니다.</translation>
-<translation id="6573305661369899995">URL 제한의 외부 소스 설정</translation>
 <translation id="6575944031719151455">정책을 설정하면 로그인 화면에 표시할 기기 로컬 계정 목록이 지정됩니다. 식별자는 서로 다른 기기 로컬 계정을 구분합니다.
 
       정책을 설정하지 않거나 빈 목록으로 두면 기기 로컬 계정을 사용하지 않습니다.</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index c4e35a9..789cd9a 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -3916,7 +3916,6 @@
       Als je het beleid niet toepast, worden pdf-bestanden geopend, tenzij gebruikers de pdf-plug-in uitzetten.
 
       Als je het beleid instelt, kunnen gebruikers dit niet wijzigen in <ph name="PRODUCT_NAME" />. Als je het beleid niet instelt, kunnen gebruikers kiezen of ze pdf-bestanden extern willen openen.</translation>
-<translation id="570062449808736508">Wanneer dit beleid is ingesteld op een niet-lege tekenreeks, leest de WebView de URL-beperkingen van de contentprovider met de opgegeven autoriteitsnaam.</translation>
 <translation id="5708969689202733975">Toegestane modi voor snel ontgrendelen configureren</translation>
 <translation id="5714563837055244378">Delen van Android-apps naar web-apps aanzetten.</translation>
 <translation id="5715617256528927547">Als je dit beleid instelt, geef je aan hoeveel uur het Group Policy Object (GPO) in het cachegeheugen wordt bewaard. Dit is de maximale periode dat GPO's kunnen worden gebruikt tot ze opnieuw worden gedownload. Het systeem gebruikt de in het cachegeheugen opgeslagen GPO's opnieuw in plaats van die opnieuw te moeten downloaden bij het ophalen van elk beleid, zolang de versie van de GPO's niet is gewijzigd.
@@ -4629,7 +4628,6 @@
       Dit beleid kan worden overschreven door EnabledPlugins en DisabledPluginsExceptions.
 
       Als dit beleid niet is ingesteld, kan de gebruiker elke op het systeem geïnstalleerde plug-in gebruiken, behalve hardgecodeerde ongeschikte, verouderde of gevaarlijke plug-ins.</translation>
-<translation id="6573305661369899995">Een externe bron voor URL-beperkingen instellen</translation>
 <translation id="6575944031719151455">Als je het beleid instelt, specificeer je de lijst met lokale accounts op het apparaat die moeten worden getoond op het inlogscherm. De verschillende lokale accounts op het apparaat worden aangegeven door ID's.
 
       Als je het beleid niet instelt of de lijst leeg is, zijn er geen lokale accounts op het apparaat.</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 71ff8298..b36b8a9 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -3963,7 +3963,6 @@
       Se ela for desativada, os arquivos PDF serão abertos no plug-in, a menos que ele seja desativado pelos usuários.
 
       Se você definir a política, os usuários não poderão mudá-la no <ph name="PRODUCT_NAME" />. Se ela não for definida, os usuários poderão escolher se os PDFs serão ou não abertos externamente.</translation>
-<translation id="570062449808736508">Quando essa política estiver definida para uma string não vazia, o WebView lerá as restrições de URL do provedor de conteúdo com o nome de autoridade fornecido.</translation>
 <translation id="5708969689202733975">Configurar os modos de desbloqueio rápido permitidos</translation>
 <translation id="5714563837055244378">Ativar o compartilhamento do Android para apps da Web.</translation>
 <translation id="5715617256528927547">A definição da política especifica, em horas, o ciclo de vida em cache do Objeto de Política de Grupo (GPO, na sigla em inglês), que é o período máximo de reutilização dos GPOs antes do download deles ser feito novamente. Em vez de fazer o download novamente a cada busca da política, o sistema reutiliza os GPOs armazenados em cache enquanto as versões deles não são modificadas.
@@ -4708,7 +4707,6 @@
       Observe que a política pode ser substituída por EnabledPlugins e DisabledPluginsExceptions.
 
       Quando esta política não for definida, o usuário poderá usar qualquer plug-in instalado no sistema, a não ser plug-ins codificados incompatíveis, obsoletos ou perigosos.</translation>
-<translation id="6573305661369899995">Definir uma fonte externa de restrições de URL</translation>
 <translation id="6575944031719151455">A definição da política especifica a lista de contas locais do dispositivo que serão exibidas na tela de login. Os identificadores diferenciam essas contas.
 
       Se a política não for definida ou houver uma lista vazia, não haverá contas locais de dispositivo.</translation>
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index c074e1b..be8b3ce 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -3923,7 +3923,6 @@
       Если правило отключено, для просмотра PDF-файлов будет использоваться плагин PDF (если он не отключен пользователем).
 
       Если правило настроено, этот параметр невозможно изменить в <ph name="PRODUCT_NAME" />. Если правило не настроено, пользователи смогут настраивать этот параметр самостоятельно.</translation>
-<translation id="570062449808736508">Если для правила указано значение, WebView распознает ограничения, установленные для URL-адресов поставщиком контента с заданным центром сертификации.</translation>
 <translation id="5708969689202733975">Настроить разрешенные режимы быстрой разблокировки</translation>
 <translation id="5714563837055244378">Включить отправку из Android в веб-приложения</translation>
 <translation id="5715617256528927547">Это правило определяет максимальное количество часов использования кешированных объектов групповой политики до их повторного скачивания. Вместо того чтобы скачивать объекты групповой политики при каждом получении правила, система может повторно использовать кешированные объекты, если их версия не меняется.
@@ -4671,7 +4670,6 @@
       Примечание. Настройки этого правила могут быть переопределены при помощи EnabledPlugins и DisabledPluginsExceptions.
 
       Если правило не настроено, пользователям разрешается использовать любые установленные в системе плагины, за исключением несовместимых (хотя и заданных в коде), а также устаревших и вредоносных.</translation>
-<translation id="6573305661369899995">Установить внешний источник ограничений для URL-адресов</translation>
 <translation id="6575944031719151455">Правило позволяет задать список локальных аккаунтов, привязанных к устройству и отображаемых на странице входа. Каждый аккаунт имеет свой идентификатор.
 
       Если правило не настроено или список пуст, значит локальных аккаунтов, привязанных к устройству, нет.</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index aff2d59..290c85c 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -178,6 +178,7 @@
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns  <ph name="WILDCARD_VALUE" /> ไม่ใช่ค่าที่ยอมรับสำหรับนโยบายนี้</translation>
 <translation id="120937472976628837">รายงานข้อมูลพัดลม</translation>
+<translation id="1212233008927724662">ปิดใช้การโหลด Login WebUI แบบ Lazy Loading</translation>
 <translation id="1216919699175573511">เปิดใช้การสนับสนุน Signed HTTP Exchange (SXG)</translation>
 <translation id="1219695476179627719">ระบุว่าอุปกรณ์ควรย้อนกลับไปใช้เวอร์ชันที่ <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" /> ตั้งค่าไว้หรือไม่ หากใช้เวอร์ชันที่ใหม่กว่าอยู่
 
@@ -486,6 +487,12 @@
 <translation id="159946228300522107">การตั้งค่านโยบายเป็น "จริง" หมายความว่า Chrome จะขยายหน้าต่างแรกที่แสดงเมื่อเรียกใช้ครั้งแรก
 
       การตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่าหมายความว่า Chrome อาจขยายหน้าต่างแรก โดยขึ้นอยู่กับขนาดหน้าจอ</translation>
+<translation id="1600107337865729434">นโยบายนี้อนุญาตการสร้างคลัสเตอร์ Agent ที่ผูกกับต้นทางโดยค่าเริ่มต้น
+
+      ส่วนหัว HTTP Origin-Agent-Cluster: จะควบคุมว่าเอกสารจะถูกแยกต่างหากในคลัสเตอร์ Agent ที่ผูกกับต้นทาง หรือในคลัสเตอร์ Agent ที่ผูกกับเว็บไซต์ ซึ่งจะมีประเด็นปัญหาด้านความปลอดภัย เนื่องจากคลัสเตอร์ Agent ที่ผูกกับต้นทางอนุญาตให้แยกเอกสารตามต้นทางได้ ผลที่ตามมาที่นักพัฒนาซอฟต์แวร์จะมองเห็นคือตัวช่วยเข้าถึง document.domain จะตั้งค่าไม่ได้อีก
+
+      ลักษณะการทำงานเริ่มต้น (เมื่อไม่ได้ตั้งค่าส่วนหัว Origin-Agent-Cluster: ไว้) ใน M101 จะเปลี่ยนจากผูกกับเว็บไซต์ไปเป็นผูกกับต้นทาง หากเปิดใช้นโยบายนี้หรือไม่ได้ตั้งค่า เบราว์เซอร์จะทำตามค่าเริ่มต้นใหม่นี้จากเวอร์ชันดังกล่าวเป็นต้นไป หากปิดใช้นโยบายนี้ การเปลี่ยนแปลงนี้จะย้อนกลับและเอกสารที่ไม่มีส่วนหัว Origin-Agent-Cluster: จะได้รับการกำหนดให้กับคลัสเตอร์ Agent ที่ผูกกับเว็บไซต์ ผลที่ตามมาคือตัวช่วยเข้าถึง document.domain จะยังคงตั้งค่าได้อยู่โดยค่าเริ่มต้น ซึ่งจะตรงกันกับลักษณะการทำงานเดิม
+      </translation>
 <translation id="1600340610556453828">การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้ <ph name="PRODUCT_OS_NAME" /> ปิด Wi-Fi และผู้ใช้จะเปลี่ยนไม่ได้
 
       การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าจะทำให้ผู้ใช้เปิดหรือปิด Wi-Fi ได้</translation>
@@ -634,6 +641,7 @@
       ดู <ph name="REMOTE_ACCESS_HOST_CLIENT_DOMAIN_LIST_POLICY_NAME" /> เพิ่มเติม
 
       หมายเหตุ: การตั้งค่านี้จะลบล้าง <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" /> หากมี</translation>
+<translation id="1721304336924950970">โหลด Login WebUI เมื่อจำเป็นเท่านั้น</translation>
 <translation id="172374442286684480">อนุญาตให้ทุกไซต์ตั้งค่าข้อมูลภายในเครื่อง</translation>
 <translation id="1729169799290004131">การตั้งค่านโยบายจะระบุเปอร์เซ็นต์ความสว่างหน้าจอ โดยระบบจะปิดใช้ฟีเจอร์ความสว่างอัตโนมัติ ความสว่างหน้าจอเริ่มต้นจะปรับไปตามค่าของนโยบาย แต่ผู้ใช้จะเปลี่ยนค่านี้ได้ในภายหลัง
 
@@ -717,6 +725,7 @@
           นโยบายนี้สามารถเลือกได้ หากไม่ได้ถูกกำหนด คำขอค้นหาทันใจจะถูกส่งโดยใช้วิธีการ GET
 
           นโยบายนี้เป็นที่ยอมรับเฉพาะในกรณีที่นโยบาย 'DefaultSearchProviderEnabled' ถูกเปิดใช้งาน</translation>
+<translation id="1850439894606905202">เอกสารอาจอยู่ในคลัสเตอร์ Agent ที่ผูกกับเว็บไซต์โดยค่าเริ่มต้น และยังคงตั้งค่า document.domain ได้อยู่</translation>
 <translation id="1852294065645015766">อนุญาตการเล่นสื่ออัตโนมัติ</translation>
 <translation id="1859859319036806634">คำเตือน: TLS เวอร์ชันสำรองจะถูกนำออกจาก <ph name="PRODUCT_NAME" /> หลังจากเวอร์ชัน 52 (ประมาณเดือนกันยายน 2016) และนโยบายนี้จะหยุดทำงานหลังจากนั้น
 
@@ -1851,6 +1860,15 @@
 <translation id="3152425128389603870">ทำให้เดสก์ท็อปแบบรวมหลายหน้าจอพร้อมใช้งานและเปิดใช้โดยค่าเริ่มต้น</translation>
 <translation id="3159375329008977062">อนุญาตให้ผู้ใช้ส่งออก/นำเข้าคอนเทนเนอร์ Crostini ผ่าน UI</translation>
 <translation id="3164531087779621747">พิมพ์ในโหมด PostScript</translation>
+<translation id="3165468162820163252">นโยบายนี้ควบคุมว่าส่วน WebUI ของหน้าจอการลงชื่อเข้าใช้จะโหลดทุกครั้งเมื่อเริ่มต้นหรือเฉพาะตอนก่อนที่จะแสดง นโยบายนี้จะใช้กับหน้าจอการลงชื่อเข้าใช้
+
+      หากเปิดใช้นโยบายนี้ ส่วน WebUI ของ UI การลงชื่อเข้าใช้จะโหลดเฉพาะตอนก่อนที่จะแสดง วิธีการนี้จะเร่งให้ขั้นตอนการเข้าสู่ระบบเร็วขึ้น
+
+      หากปิดใช้นโยบายนี้ ส่วน WebUI ของหน้าจอการลงชื่อเข้าใช้จะโหลดเมื่อเปิดเครื่องเสมอ (ลักษณะการทำงานเดิม)
+
+      หากไม่ได้ตั้งค่า ฟีเจอร์ kEnableLazyLoginWebUILoading จะควบคุมลักษณะการทำงาน
+
+      ควรนำนโยบายนี้ออกหลังจากที่เปิดตัว kEnableLazyLoginWebUILoading โดยสมบูรณ์แล้ว</translation>
 <translation id="3165808775394012744">เรารวมนโยบายเหล่านี้ไว้ที่นี่เพื่อให้นำออกได้ง่ายๆ</translation>
 <translation id="3166210414652928099">อนุญาตให้ผู้ใช้ใช้แอป Android จากแหล่งที่มาที่ไม่น่าเชื่อถือ</translation>
 <translation id="316778957754360075">การตั้งค่านี้ถูกยกเลิกไปตั้งแต่ <ph name="PRODUCT_NAME" /> เวอร์ชัน 29 วิธีที่แนะนำในการตั้งค่าคอลเล็กชันส่วนขยาย/แอปที่โฮสต์โดยองค์กรคือการรวมไซต์ที่โฮสต์แพ็กเกจ CRX ใน ExtensionInstallSources และการวางลิงก์ดาวน์โหลดโดยตรงไปยังแพ็กเกจบนหน้าเว็บ ตัวเรียกใช้งานสำหรับหน้าเว็บนั้นสามารถถูกสร้างขึ้นโดยใช้นโยบาย ExtensionInstallForcelist</translation>
@@ -3912,7 +3930,6 @@
       การตั้งค่านโยบายเป็น "ปิดใช้" หมายความว่าหากผู้ใช้ไม่ได้ปิดปลั๊กอิน PDF ก็จะมีการเปิดไฟล์ PDF
 
       หากคุณตั้งค่านโยบายไว้ ผู้ใช้จะเปลี่ยนการตั้งค่าดังกล่าวใน <ph name="PRODUCT_NAME" /> ไม่ได้ หากไม่ได้ตั้งค่า ผู้ใช้เลือกได้ว่าจะเปิด PDF ภายนอกหรือไม่</translation>
-<translation id="570062449808736508">หากมีการตั้งค่านโยบายนี้เป็นสตริงที่ไม่ว่างเปล่า WebView จะอ่านข้อจำกัด URL จากผู้ให้บริการเนื้อหาที่มีชื่อผู้ออกใบรับรองที่ระบุ</translation>
 <translation id="5708969689202733975">กำหนดค่าโหมดปลดล็อกด่วนที่ได้รับอนุญาต</translation>
 <translation id="5714563837055244378">เปิดใช้การแชร์จาก Android ไปยังเว็บแอป</translation>
 <translation id="5715617256528927547">การตั้งค่านโยบายจะระบุอายุการใช้งาน (เป็นชั่วโมง) ของแคช Group Policy Object (GPO) ระบบใช้ GPO ที่มีระยะเวลาสูงสุดซ้ำได้ก่อนที่จะมีการดาวน์โหลดซ้ำ ระบบจะใช้ GPO ที่แคชไว้ซ้ำ (ตราบใดที่ยังเป็นเวอร์ชันเดิม) แทนการดาวน์โหลด GPO ซ้ำในการเรียกนโยบายทุกครั้ง
@@ -3976,6 +3993,7 @@
       หากตั้งค่านโยบายนี้เป็น "เท็จ" หรือไม่ได้ตั้งค่า จะปิดใช้ฟีเจอร์ Web Components v0 โดยค่าเริ่มต้นเริ่มตั้งแต่ในเวอร์ชัน M80
 
       เราจะนำนโยบายนี้ออกหลังจาก Chrome 84</translation>
+<translation id="575647238840663288">เอกสารอาจอยู่ในคลัสเตอร์ Agent ที่ผูกกับต้นทางโดยค่าเริ่มต้นและ document.domain จะตั้งค่าไม่ได้สำหรับเอกสารดังกล่าว</translation>
 <translation id="5756680608782814094">รายงานข้อมูล VPD ของอุปกรณ์
 
       หากตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่า จะไม่มีการรายงานข้อมูล
@@ -4628,7 +4646,6 @@
       โปรดทราบว่า EnabledPlugins และ DisabledPluginsExceptions ลบล้างนโยบายนี้ได้
 
       หากไม่ได้ตั้งค่านโยบายนี้ ผู้ใช้จะใช้ปลั๊กอินใดก็ตามที่ติดตั้งไว้ในระบบได้ ยกเว้นปลั๊กอินที่มีฮาร์ดโค้ดที่เข้ากันไม่ได้ ล้าสมัย หรือเป็นอันตราย</translation>
-<translation id="6573305661369899995">ตั้งค่าแหล่งที่มาภายนอกของข้อจำกัด URL</translation>
 <translation id="6575944031719151455">การตั้งค่านโยบายจะระบุรายการบัญชีในอุปกรณ์ที่จะแสดงในหน้าจอลงชื่อเข้าใช้ ตัวระบุจะเป็นตัวบอกความแตกต่างของบัญชีในอุปกรณ์
 
       หากไม่ได้ตั้งค่านโยบายหรือนโยบายเป็นรายการที่ว่างเปล่า ก็จะไม่มีบัญชีในอุปกรณ์แสดงเลย</translation>
@@ -4731,6 +4748,7 @@
       ระบุ <ph name="SUBJECT_PUBLIC_KEY_INFO" /> ได้จากการต่อชื่ออัลกอริทึมของแฮช เครื่องหมายทับ และการเข้ารหัส Base64 ของอัลกอริทึมของแฮชนั้นนำไปใช้กับ <ph name="SUBJECT_PUBLIC_KEY_INFO" /> ที่เข้ารหัส DER ของใบรับรองที่ระบุ การเข้ารหัส Base64 นี้เป็นรูปแบบเดียวกับลายนิ้วมือ SPKI ระบบรู้จักอัลกอริทึมของแฮชเพียงรายการเดียวนั่นคือ sha256 และจะไม่สนใจอัลกอริทึมของแฮชอื่นๆ
 
       การไม่ตั้งค่านโยบายนี้หมายความว่าหากไม่มีการเปิดเผยความโปร่งใสของใบรับรองตามที่ใบรับรองกำหนด <ph name="PRODUCT_NAME" /> ก็จะไม่เชื่อถือใบรับรองนั้น</translation>
+<translation id="6704445641918520643">เปิดใช้การโหลด Login WebUI แบบ Lazy Loading</translation>
 <translation id="6704515759227307131">เราเลิกใช้งานนโยบายนี้แล้วและเปลี่ยนมาใช้ AdvancedProtectionAllowed
 
       นโยบายนี้ควบคุมว่าจะอนุญาตให้ผู้ใช้ที่ลงทะเบียนในโปรแกรมการปกป้องขั้นสูงส่งเนื้อหาที่ดาวน์โหลดไปให้ Google สแกนหามัลแวร์หรือไม่ หากตั้งค่าเป็น "จริง" หรือไม่ได้ตั้งค่า ผู้ใช้ที่ลงทะเบียนจะได้รับแจ้งให้ส่งไฟล์ไปให้ Google สแกนอย่างละเอียด หากผู้ใช้เลือก "สแกน" ระบบจะส่งเนื้อหาที่ดาวน์โหลดไปยัง Google หากตั้งค่าเป็น "เท็จ" ผู้ใช้จะไม่ได้รับแจ้งและระบบจะไม่ส่งเนื้อหาที่ดาวน์โหลดไปยัง Google</translation>
@@ -6448,6 +6466,11 @@
 
       ใน <ph name="MS_WIN_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่เข้าร่วมโดเมน <ph name="MS_AD_NAME" />, ทำงานใน Windows 10 Pro หรือลงทะเบียนใน<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> ใน <ph name="MAC_OS_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่จัดการผ่าน MDM หรือเข้าร่วมโดเมนผ่าน MCX</translation>
 <translation id="8671119576957984818">เปิดใช้ฮับการแชร์เดสก์ท็อป</translation>
+<translation id="8671314659400112135">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะทำให้ <ph name="PRODUCT_NAME" /> ใช้การตรวจสอบความปลอดภัยของจุดขยายสัญญาณเพิ่มเติมเพื่อบล็อกจุดขยายสัญญาณเดิมในกระบวนการของเบราว์เซอร์ได้
+
+      การตั้งค่านโยบายเป็น "ปิดใช้" จะมีผลกระทบที่เป็นอันตรายต่อความปลอดภัยและความเสถียรของ <ph name="PRODUCT_NAME" /> เนื่องจากจะทำให้โค้ดที่ไม่รู้จักหรืออาจมีเจตนาร้ายโหลดเข้ามาในกระบวนการของเบราว์เซอร์ <ph name="PRODUCT_NAME" /> ได้ ปิดนโยบายนี้เฉพาะในกรณีที่มีปัญหาด้านความเข้ากันได้กับซอฟต์แวร์ของบุคคลที่สามซึ่งต้องเรียกใช้ภายในกระบวนการของเบราว์เซอร์ <ph name="PRODUCT_NAME" />
+
+      หมายเหตุ: อ่านเพิ่มเติมเกี่ยวกับนโยบายการลดการประมวลผล (https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md#Process-mitigation-policies)</translation>
 <translation id="8672321184841719703">กำหนดเป้าหมายรุ่นที่อัปเดตอัตโนมัติ</translation>
 <translation id="867410340948518937">U2F (Universal Second Factor)</translation>
 <translation id="8676959842615154675">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำให้โฮสต์การเข้าถึงระยะไกลเปรียบเทียบชื่อของผู้ใช้เครือข่ายภายในที่เชื่อมโยงกับโฮสต์กับชื่อบัญชี Google ที่ลงทะเบียนเป็นเจ้าของโฮสต์ ("johndoe" หากเจ้าของโฮสต์คือ "johndoe@example.com") โฮสต์นี้จะไม่เริ่มหากชื่อของเจ้าของโฮสต์แตกต่างจากชื่อผู้ใช้เครือข่ายภายในที่เชื่อมโยงกับโฮสต์ หากต้องการยืนยันให้บัญชี Google ของเจ้าของเชื่อมโยงกับโดเมนที่เจาะจง ให้ใช้นโยบายกับ <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" />
@@ -6713,6 +6736,7 @@
 <translation id="8948062138228904066">รายการที่อนุญาตสำหรับเซิร์ฟเวอร์การตรวจสอบสิทธิ์</translation>
 <translation id="8951350807133946005">ตั้งค่าไดเรกทอรีสำหรับแคชของดิสก์</translation>
 <translation id="8955719471735800169">กลับไปด้านบน</translation>
+<translation id="8956312248048980644">อนุญาตการสร้างคลัสเตอร์ Agent ที่ผูกกับต้นทางโดยค่าเริ่มต้น</translation>
 <translation id="8959992920425111821">การกำหนดค่าเริ่มต้น</translation>
 <translation id="8967125680876068695">แอป Chrome เลิกใช้งานแล้วใน Windows, Mac และ Linux
       หากเปิดใช้นโยบายนี้ <ph name="PRODUCT_NAME" /> จะอนุญาตให้แอป Chrome ทำงานในแพลตฟอร์มดังกล่าวต่อไปจนกระทั่งถึงวันที่เรายกเลิกการสนับสนุนแอป Chrome ในทุกแพลตฟอร์มเดือนมิถุนายน 2022
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index 02c2eee..2af5cd8 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -178,6 +178,7 @@
 
       Geçerli <ph name="URL_LABEL" /> kalıpları hakkında ayrıntılı bilgi için https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns adresine bakabilirsiniz.  <ph name="WILDCARD_VALUE" />, bu politikada kabul edilen bir değer değildir.</translation>
 <translation id="120937472976628837">Pervane bilgilerini raporla</translation>
+<translation id="1212233008927724662">Lazy Login WebUI yüklemeyi devre dışı bırak.</translation>
 <translation id="1216919699175573511">İmzalı HTTP Değişimi (SXG) desteğini etkinleştir</translation>
 <translation id="1219695476179627719">Bu cihazın sonraki bir sürümü çalıştırıyor olması halinde, <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" /> tarafından ayarlanan sürüme geri döndürülüp döndürülmeyeceğini belirler.
 
@@ -485,6 +486,23 @@
 <translation id="159946228300522107">Politikayı True (Doğru) değerine ayarlamak, Chrome'un ilk çalıştırmada birinci pencereyi büyüteceği anlamına gelir.
 
       Politikayı False (Yanlış) değerine ayarlamak veya ayarlamadan bırakmak, ekran boyutuna bağlı olarak Chrome'un ilk pencereyi büyütebileceği anlamına gelir.</translation>
+<translation id="1600107337865729434">Bu politika varsayılan olarak kaynak içeren veya kaynaklarla ilişkili aracı kümelemeye izin verir.
+
+      Kaynak Aracısı Kümesi: HTTP başlığı, bir dokümanın kaynak içeren veya kaynaklarla ilişkili aracı
+      kümesinde mi yoksa site içeren veya sitelerle ilişkili aracı kümesinde mi erişime kapalı olacağını
+      kontrol eder. Kaynak içeren veya kaynaklarla ilişkili aracı kümesi, dokümanların
+      kaynağa göre erişime kapatılmasına izin verdiği için güvenlik etkileri olabilir. Bu durumun
+      geliştirici tarafından görünür olan sonucu, document.domain erişeninin artık
+      ayarlanamamasıdır.
+
+      Kaynak Aracısı Kümesi olmadığında gerçekleşen varsayılan davranış: Başlık ayarlanmış,
+      M101'de site içeren veya sitelerle ilişkili seçeneğinden kaynak içeren veya kaynaklarla ilişkili seçeneğine geçiş. Bu politika
+      etkinleştirilir veya ayarlanmadan bırakılırsa tarayıcı bu sürümden itibaren yeni
+      varsayılanı izler. Bu politika devre dışı bırakılırsa bu değişiklik tersine
+      çevrilir ve dokümanlarda Kaynak Aracısı Kümesi olmaz. Başlıklar, site
+      içeren veya sitelerle ilişkili aracı kümelerine atanır. Sonuç olarak document.domain erişeni varsayılan
+      olarak ayarlanabilir olur. Bu da eski davranışla aynıdır.
+      </translation>
 <translation id="1600340610556453828">Politika, Devre Dışı değerine ayarlanırsa <ph name="PRODUCT_OS_NAME" /> ürünü kablosuz bağlantıyı kapatır ve kullanıcılar bunu değiştiremez.
 
       Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa kullanıcılar kablosuz bağlantıyı açabilir veya kapatabilir.</translation>
@@ -634,6 +652,7 @@
       Ayrıca <ph name="REMOTE_ACCESS_HOST_CLIENT_DOMAIN_LIST_POLICY_NAME" /> politikasına bakın.
 
       Not: Bu ayar mevcut olması halinde <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" /> politikasını geçersiz kılar.</translation>
+<translation id="1721304336924950970">Yalnızca gerektiğinde Login WebUI yükle.</translation>
 <translation id="172374442286684480">Tüm sitelerin yerel verileri ayarlamasına izin verme</translation>
 <translation id="1729169799290004131">Politika ayarlandığında otomatik parlaklık özellikleri devre dışı bırakılır ve ekran parlaklığı yüzdesi belirtilir. Başlangıçtaki ekran parlaklığı, politika değerine ayarlanır, ancak kullanıcılar bunu değiştirebilir.
 
@@ -717,6 +736,7 @@
           Bu politika isteğe bağlıdır. Ayarlanmazsa, anında arama isteği, GET yöntemi kullanılarak gönderilir.
 
           Bu politika sadece is "DefaultSearchProviderEnabled" politikası etkinleştirilmişse dikkate alınır.</translation>
+<translation id="1850439894606905202">Dokümanlar varsayılan olarak site içeren veya sitelerle ilişkili aracı kümelerine yerleştirilir ve document.domain ayarlanabilir olarak kalır.</translation>
 <translation id="1852294065645015766">Medyayı otomatik oynatmaya izin ver</translation>
 <translation id="1859859319036806634">Uyarı: TLS sürüm yedeği, sürüm 52'den sonra <ph name="PRODUCT_NAME" /> ürününden kaldırılacak (Eylül 2016 civarı) ve bu politika artık çalışmayacaktır.
 
@@ -1857,6 +1877,15 @@
 <translation id="3152425128389603870">Birleşik Masaüstü'nü kullanılabilir hale getir ve varsayılan olarak aç.</translation>
 <translation id="3159375329008977062">Kullanıcının, kullanıcı arayüzü üzerinden Crostini kapsayıcıları dışa/içe aktarmasına izin verilir</translation>
 <translation id="3164531087779621747">Yazdırma PostScript Modu</translation>
+<translation id="3165468162820163252">Bu politika, oturum açma ekranındaki WebUI bölümünün her zaman başlangıçta mı yoksa yalnızca gösterilmeden önce mi yükleneceğini kontrol eder. Bu politika, oturum açma ekranı için geçerlidir.
+
+      Bu politika etkinleştirilirse oturum açma kullanıcı arayüzündeki WebUI bölümü yalnızca gösterilmeden önce yüklenir. Bu da giriş işlemini hızlandırır.
+
+      Bu politika devre dışı bırakılırsa oturum açma ekranındaki WebUI bölümü her zaman başlangıçta yüklenir (eski davranış).
+
+      Politika ayarlanmazsa davranışı kEnableLazyLoginWebUILoading özelliği kontrol eder.
+
+      Bu politika, kEnableLazyLoginWebUILoading tamamen kullanıma sunulduktan sonra kaldırılmalıdır.</translation>
 <translation id="3165808775394012744">Bu politikalar kolay kaldırılabilmeleri için buraya eklenmiştir.</translation>
 <translation id="3166210414652928099">Kullanıcının güvenilmeyen kaynaklardan Android uygulamaları kullanmasına izin ver</translation>
 <translation id="316778957754360075">Bu ayar, <ph name="PRODUCT_NAME" /> Sürüm 29 itibariyle kullanımdan kaldırılmıştır. Kuruluş tarafından barındırılan uzantı/uygulama koleksiyonları oluşturmanın önerilen yöntemi, CRX paketlerini barındıran siteyi ExtensionInstallSources içine eklemek ve web sayfasına paketler için doğrudan indirme bağlantıları koymaktır. ExtensionInstallForcelist politikası kullanılarak bu web sayfası için bir başlatıcı oluşturulabilir.</translation>
@@ -3928,7 +3957,6 @@
       Politika Devre Dışı değerine ayarlanırsa PDF eklentisi, kullanıcılar tarafından kapatılmadığı sürece PDF dosyalarını açar.
 
       Bu politikayı ayarlarsanız kullanıcılar <ph name="PRODUCT_NAME" /> ürününde değiştiremez. Politika ayarlanmadan bırakılırsa kullanıcılar PDF dosyalarının haricen açılıp açılmayacağını seçebilir.</translation>
-<translation id="570062449808736508">Bu politika boş olmayan bir dizeye ayarlanırsa Web Görünümü, belirtilen yetkili adına sahip içerik sağlayıcıdan URL kısıtlamalarını okur.</translation>
 <translation id="5708969689202733975">İzin verilen hızlı kilit açma modlarını yapılandır</translation>
 <translation id="5714563837055244378">Android'den Web Uygulamasına paylaşımı etkinleştirin.</translation>
 <translation id="5715617256528927547">Politikanın ayarlanması, Grup Politika Nesnesi (GPO) önbellek ömrünü saat cinsinden belirtir. Önbellek ömrü, GPO'ların tekrar indirilene kadar yeniden kullanılabileceği maksimum süredir. Sistem, her politika getirildiğinde GPO'ları tekrar indirmek yerine, önbelleğe alınmış GPO'ları sürümleri aynı kaldığı sürece yeniden kullanabilir.
@@ -3992,6 +4020,7 @@
       Bu politika False (Yanlış) değerine ayarlanır veya hiç ayarlanmazsa Web Bileşenleri v0 özellikleri, M80 düzeyinden itibaren varsayılan olarak devre dışı bırakılır.
 
       Bu politika Chrome 84'ten sonra kaldırılacaktır.</translation>
+<translation id="575647238840663288">Dokümanlar varsayılan olarak kaynak içeren veya kaynaklarla ilişkili aracı kümelerine yerleştirilebilir ve document.domain bu tarz dokümanlar için ayarlanamaz.</translation>
 <translation id="5756680608782814094">Cihazın VPD bilgilerini raporlar.
 
       Bu politika false (yanlış) değerine ayarlanırsa veya ayarlanmadan bırakılırsa bilgi raporlanmaz.
@@ -4651,7 +4680,6 @@
       Bu politikanın, EnabledPlugins ve DisabledPluginsExceptions politikaları tarafından geçersiz kılınabileceğini unutmayın.
 
       Bu politika ayarlanmadan bırakılırsa kullanıcı, sabit kodlu, uyumsuz, eski veya tehlikeli eklentiler hariç sistemde yüklü herhangi bir eklentiyi kullanabilir.</translation>
-<translation id="6573305661369899995">URL kısıtlamaları için harici kaynak ayarla</translation>
 <translation id="6575944031719151455">Politikanın ayarlanması, cihaz yerel hesapları listesinin oturum açma ekranında görüntüleneceğini belirtir. Tanımlayıcılar, farklı cihaz yerel hesaplarını ayırt eder.
 
       Politika ayarlanmazsa veya boş bir listeye ayarlanırsa hiçbir cihaz yerel hesabı yoktur.</translation>
@@ -4754,6 +4782,7 @@
       <ph name="SUBJECT_PUBLIC_KEY_INFO" /> karmasını, karma algoritması adı, eğik çizgi ve belirtilen sertifikanın DER kodlamalı <ph name="SUBJECT_PUBLIC_KEY_INFO" /> öğesine uygulanan Base64 kodlamasını bağlayarak belirtir. Base64 kodlamasının biçimi, SPKI Parmak İzi ile aynıdır. Yalnızca karma algoritması tanınır, diğerleri yok sayılır.
 
       Politikanın ayarlanmadan bırakılması, Sertifika Şeffaflığı aracılığıyla açıklama gerektiren sertifikaların açıklanmaması durumunda <ph name="PRODUCT_NAME" /> ürününün bu sertifikalara güvenmeyeceği anlamına gelir.</translation>
+<translation id="6704445641918520643">Lazy Login WebUI yüklemeyi etkinleştir.</translation>
 <translation id="6704515759227307131">Bu politika artık kullanılmamakta olup yerine AdvancedProtectionAllowed politikası getirilmiştir.
 
       Bu politika, Gelişmiş Koruma programına kayıtlı kullanıcıların indirdikleri dosyaları kötü amaçlı yazılıma karşı taranmak üzere Google'a göndermelerine izin verilip verilmeyeceğini kontrol eder. Bu politika True (Doğru) değerine ayarlanır veya ayarlanmadan bırakılırsa kayıtlı kullanıcılardan dosyalarını ayrıntılı tarama için Google'a göndermeleri istenir. Kullanıcı "Tara" öğesini seçerse indirdiği dosya Google'a gönderilir. Bu politika False (Yanlış) değerine ayarlanırsa kullanıcılardan istekte bulunulmaz ve indirdikleri dosyalar Google'a gönderilmez.</translation>
@@ -6473,6 +6502,11 @@
 
       <ph name="MS_WIN_NAME" /> işletim sisteminde bu işlev, yalnızca Windows 10 Pro üzerinde çalışan bir <ph name="MS_AD_NAME" /> alan adına katılmış veya <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> öğesine kaydolmuş örneklerde kullanılabilir. <ph name="MAC_OS_NAME" /> işletim sisteminde bu işlev yalnızca MDM ile çalışan veya MCX aracılığıyla bir alan adına katılmış örneklerde kullanılabilir.</translation>
 <translation id="8671119576957984818">Masaüstü paylaşım merkezini etkinleştir</translation>
+<translation id="8671314659400112135">Politikanın etkin değerine ayarlanması veya ayarlanmadan bırakılması <ph name="PRODUCT_NAME" /> hizmetinin, tarayıcı işlemindeki eski uzantı noktalarını engellemek için ek uzantı noktası güvenlik azaltma işlemi uygulamasına izin verir.
+
+      Bilinmeyen ve zararlı olabilecek kod, <ph name="PRODUCT_NAME" /> ürününün tarayıcı işlemine yüklenebileceğinden, politikanın Devre Dışı değerine ayarlanması, <ph name="PRODUCT_NAME" /> ürününün güvenliğini ve kararlılığını olumsuz yönde etkiler. Politika yalnızca <ph name="PRODUCT_NAME" /> ürününün tarayıcı işleminin içinde çalışması gereken üçüncü taraf yazılımı ile uyumluluk sorunları varsa devre dışı bırakılmalıdır.
+
+      Not: İşlem çözüm politikaları hakkında daha fazla bilgi edinin (https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md#Process-mitigation-policies).</translation>
 <translation id="8672321184841719703">Hedef Otomatik Güncelleme Sürümü</translation>
 <translation id="867410340948518937">U2F (Evrensel İkinci Faktör)</translation>
 <translation id="8676959842615154675">Politika, Etkin değerine ayarlanırsa uzaktan erişim ana makinesi, ana makine ile ilişkilendirilmiş yerel kullanıcının adını, ana makinenin sahibi olarak kayıtlı Google Hesabının adıyla (ör. ana makinenin sahibi "candogru@example.com" hesabı ise, bu ad "candogru" olur) karşılaştırır. Ana makinenin sahibinin adı, ana makinenin ilişkilendirildiği yerel kullanıcının adından farklı ise bu uzaktan erişim ana makinesi çalışmaz. Ana makine sahibinin Google Hesabının belirli bir alan adıyla ilişkilendirilmesini sağlamak için bu politikayı, <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" /> politikası ile birlikte kullanın.
@@ -6740,6 +6774,7 @@
 <translation id="8948062138228904066">Kimlik doğrulama sunucusu izin verilenler listesi</translation>
 <translation id="8951350807133946005">Disk önbellek dizinini ayarla</translation>
 <translation id="8955719471735800169">Başa dön</translation>
+<translation id="8956312248048980644">Varsayılan olarak kaynak içeren veya kaynaklarla ilişkili aracı kümelemeye izin verir.</translation>
 <translation id="8959992920425111821">Varsayılan yapılandırma</translation>
 <translation id="8967125680876068695">Chrome Uygulamaları; Windows, Mac ve Linux'ta kullanımdan kaldırıldı.
       Bu politika etkinleştirilirse <ph name="PRODUCT_NAME" />, Chrome Uygulamaları desteğinin tüm platformlardan kaldırılacağı son tarih olan Haziran 2022'ye kadar Chrome Uygulamalarının bu platformlarda çalıştırılmasına izin verir.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 8af711b..df75b4e 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -2890,6 +2890,23 @@
 
       Якщо для цього правила вибрано значення false, веб-переглядач не показує сторінку привітання під час першого запуску після оновлення ОС.</translation>
 <translation id="441686537793821907">Блокувати встановлення зовнішніх розширень</translation>
+<translation id="4420613474328461583">Список налаштувань сервісів Chrome Enterprise Connectors, які застосовуються до конектора Enterprise <ph name="ON_FILE_DOWNLOADED_ENTERPRISE_CONNECTOR" />, що активується, коли у веб-переглядачі Chrome завантажується файл.
+
+      Поля <ph name="ENTERPRISE_CONNECTOR_URL_LIST_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_TAGS_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_ENABLE_FIELD" /> і <ph name="ENTERPRISE_CONNECTOR_DISABLE_FIELD" /> визначають, чи надсилатиме конектор на аналіз завантажений із певної сторінки файл, а також які теги додавати в запит на аналіз цього файлу. Тег, який відповідає шаблону enable, буде включено в запит на аналіз, якщо URL-адреса сторінки відповідає шаблону, зв’язаному з цим тегом, і якщо для цього тега немає шаблону disable, що відповідає цій URL-адресі сторінки. Дані аналізуються, якщо запит містить принаймні 1 тег.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_SERVICE_PROVIDER_FIELD" /> визначає, якому постачальнику послуг аналізу відповідають налаштування.
+
+      Якщо в полі <ph name="ENTERPRISE_CONNECTOR_BLOCK_UNTIL_VERDICT_FIELD" /> указано значення 1, Chrome надає користувачу доступ до завантаженого файлу, лише коли отримує відповідь від сервісу аналізу. Якщо в цьому полі вказано будь-яке інше ціле число, Chrome одразу надає користувачу доступ до файлу.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_BLOCK_PASSWORD_PROTECTED_FIELD" /> контролює, чи блокуватиме Chrome захищені паролем файли.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_BLOCK_LARGE_FILES_FIELD" /> контролює, чи блокуватиме Chrome завеликі для аналізу файли.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_REQUIRE_JUSTIFICATION_TAGS_FIELD" /> визначає теги, для яких конектор вимагає від користувача вказати підставу для обходу перевірки (після чого попередження можна буде закрити). Якщо це поле не налаштовано, вважається, що вказувати підставу не потрібно.
+
+      Поля <ph name="ENTERPRISE_CONNECTOR_CUSTOM_MESSAGES_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_MESSAGE_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_LEARN_MORE_URL_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_LANGUAGE_FIELD" /> і <ph name="ENTERPRISE_CONNECTOR_TAG_FIELD" /> дають змогу налаштувати повідомлення для користувача про незадовільний результат перевірки. Поле message – це текст, який бачитиме користувач (довжиною не більше ніж 200 символів). Поле learn_more_url містить указану адміністратором URL-адресу, за якою користувач зможе перейти й дізнатися докладніше, чому дію заблоковано. Поле language – необов’язкове, у ньому вказано мову повідомлення. Порожнє поле language або значення за умовчанням указують, яке повідомлення буде відображатися, коли немає повідомлення мовою користувача. Поле tag визначає, для яких типів перевірки показується повідомлення. Список custom_messages може мати нуль або більше записів, і для кожного з них потрібно налаштувати поля message і tag.
+
+      Це правило можна налаштувати лише через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />.</translation>
 <translation id="4423597592074154136">Вручну вказувати налаштування проксі-сервера</translation>
 <translation id="4424004842303301809">Вимкнути звітування в реальному часі про запобіжні заходи щодо витоку даних</translation>
 <translation id="4427173305799125784">Засіб перегляду PDF не може додавати примітки у файлах PDF</translation>
@@ -3012,6 +3029,7 @@
       Докладніше пояснення можна переглянути за посиланням: https://www.chromestatus.com/feature/5675755719622656.
       Якщо це правило ввімкнути, сайти зможуть одночасно виконувати навігацію та відкривати нові вікна чи вкладки.
       Якщо це правило вимкнути або не налаштувати, сайти не зможуть одночасно виконувати навігацію та відкривати нові вікна чи вкладки.</translation>
+<translation id="457430673056611745">Правило для налаштування конектора <ph name="PRODUCT_NAME" /> Enterprise OnPrint</translation>
 <translation id="4578265298946081589">Не перезапускати після виходу користувача з облікового запису.</translation>
 <translation id="4581507927311097234">Період часу неактивності користувача в мілісекундах, після якого екран вимикається</translation>
 <translation id="4582338216073557489">Якщо для цього правила вибрати значення None, <ph name="PRODUCT_NAME" /> використовуватиме стандартний обсяг кеш-пам’яті на диску. Користувачі не можуть змінити це правило.
@@ -3926,7 +3944,6 @@
       Якщо вимкнути це правило, файли PDF відкриватимуться через внутрішній плагін (за умови, що користувачі його не вимкнуть).
 
       Якщо налаштувати це правило, користувачі не зможуть змінювати його в <ph name="PRODUCT_NAME" />. Якщо правило не налаштувати, користувачі зможуть самі вибирати, чи відкривати файли PDF у зовнішньому додатку.</translation>
-<translation id="570062449808736508">Якщо для цього правила вказано певне значення, WebView розпізнає обмеження URL-адрес від постачальника вмісту з указаним адміністративним ім’ям.</translation>
 <translation id="5708969689202733975">Налаштовувати дозволені режими швидкого розблокування</translation>
 <translation id="5714563837055244378">Увімкнути надсилання контенту з додатків Android у веб-додатки.</translation>
 <translation id="5715617256528927547">За допомогою налаштувань цього правила можна вказати в годинах період збереження кешу об'єкта групових правил (GPO), тобто максимальний час, упродовж якого можна повторно використовувати об'єкти групових правил, доки вони не завантажаться знову. Система не завантажує GPO повторно для кожного правила, а використовує кешовану версію, доки вона не зміниться.
@@ -4673,7 +4690,6 @@
       Зауважте, що це правило можуть замінювати правила EnabledPlugins і DisabledPluginsExceptions.
 
       Якщо це правило не налаштовано, можна використовувати будь-який установлений у системі плагін, окрім жорстко закодованих несумісних, застарілих або небезпечних.</translation>
-<translation id="6573305661369899995">Укажіть зовнішнє джерело обмежень URL-адрес</translation>
 <translation id="6575944031719151455">Налаштування цього правила визначають, які локальні облікові записи на пристрої відображатимуться на екрані входу. Система розрізняє такі облікові записи за допомогою ідентифікаторів.
 
       Якщо це правило не налаштовано або для нього вказано порожній список, локальних облікових записів на пристрої немає.</translation>
@@ -6042,6 +6058,23 @@
 
       Якщо це правило вимкнено або не налаштовано, пакети не надсилаються.</translation>
 <translation id="816783746144552109">Налаштування мінімальної дозволеної версії Chrome для пристрою.</translation>
+<translation id="8169492352330154095">Список налаштувань сервісів Chrome Enterprise Connectors, які застосовуються до конектора Enterprise <ph name="ON_FILE_ATTACHED_ENTERPRISE_CONNECTOR" />, що активується, коли до сторінки в Chrome долучено файл.
+
+      Поля <ph name="ENTERPRISE_CONNECTOR_URL_LIST_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_TAGS_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_ENABLE_FIELD" /> і <ph name="ENTERPRISE_CONNECTOR_DISABLE_FIELD" /> визначають, чи надсилатиме конектор на аналіз долучений до певної сторінки файл, а також які теги додавати в запит на аналіз цього файлу. Тег, який відповідає шаблону enable, буде включено в запит на аналіз, якщо URL-адреса сторінки відповідає шаблону, зв’язаному з цим тегом, і якщо для цього тега немає шаблону disable, що відповідає цій URL-адресі сторінки. Дані аналізуються, якщо запит містить принаймні 1 тег.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_SERVICE_PROVIDER_FIELD" /> визначає, якому постачальнику послуг аналізу відповідають налаштування.
+
+      Якщо в полі <ph name="ENTERPRISE_CONNECTOR_BLOCK_UNTIL_VERDICT_FIELD" /> указано значення 1, Chrome надає сторінці доступ до файлу, лише коли отримує відповідь від сервісу аналізу. Якщо в цьому полі вказано будь-яке інше ціле число, Chrome одразу надає сторінці доступ до файлу.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_BLOCK_PASSWORD_PROTECTED_FIELD" /> контролює, чи блокуватиме Chrome захищені паролем файли.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_BLOCK_LARGE_FILES_FIELD" /> контролює, чи блокуватиме Chrome завеликі для аналізу файли.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_REQUIRE_JUSTIFICATION_TAGS_FIELD" /> визначає теги, для яких конектор вимагає від користувача вказати підставу для обходу перевірки (після чого попередження можна буде закрити). Якщо це поле не налаштовано, вважається, що вказувати підставу не потрібно.
+
+      Поля <ph name="ENTERPRISE_CONNECTOR_CUSTOM_MESSAGES_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_MESSAGE_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_LEARN_MORE_URL_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_LANGUAGE_FIELD" /> і <ph name="ENTERPRISE_CONNECTOR_TAG_FIELD" /> дають змогу налаштувати повідомлення для користувача про незадовільний результат перевірки. Поле message – це текст, який бачитиме користувач (довжиною не більше ніж 200 символів). Поле learn_more_url містить указану адміністратором URL-адресу, за якою користувач зможе перейти й дізнатися докладніше, чому дію заблоковано. Поле language – необов’язкове, у ньому вказано мову повідомлення. Порожнє поле language або значення за умовчанням указують, яке повідомлення буде відображатися, коли немає повідомлення мовою користувача. Поле tag визначає, для яких типів перевірки показується повідомлення. Список custom_messages може мати нуль або більше записів, і для кожного з них потрібно налаштувати поля message і tag.
+
+      Це правило можна налаштувати лише через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />.</translation>
 <translation id="8171924760436219650">Зробити основною праву кнопку миші на екрані входу</translation>
 <translation id="8173864651667424191">Налаштовувати опцію "Друкувати як зображення" за умовчанням для попереднього перегляду під час друку документів PDF (коли вона доступна).</translation>
 <translation id="8176035528522326671">Дозволити корпоративному користувачеві бути лише основним багатопрофільним користувачем (налаштування за умовчанням для користувачів, якими керує адміністратор підприємства)</translation>
@@ -6300,6 +6333,11 @@
       Якщо це правило не налаштовано, використовуватиметься значення за умовчанням – 3.
 
       Якщо воно налаштоване, старі знімки видалятимуться відповідно до встановлених обмежень. Якщо для правила вибрано значення 0, знімки не робитимуться.</translation>
+<translation id="8447347049334673364">Налаштування цього правила контролюють параметри керування розширеннями для <ph name="PRODUCT_NAME" />, зокрема ті, якими керують поточні правила, пов’язані з розширеннями. Воно замінює всі налаштовані застарілі правила.
+
+      Це правило зіставляє ідентифікатор розширення або URL-адресу оновлення лише з його налаштуванням. Для спеціального ідентифікатора <ph name="DEFAULT_SCOPE" /> можна налаштувати конфігурацію за умовчанням, що застосовується до всіх розширень, для яких у цьому правилі не вказано власну конфігурацію. Конфігурація застосовується до всіх розширень із конкретною URL-адресою оновлення, указаною в маніфесті розширення ( http://support.google.com/chrome/a?p=Configure_ExtensionSettings_policy ). Якщо для експериментального параметра override_update_url вибрано значення true, розширення встановлюється й оновлюється через URL-адресу оновлення, яка вказана в правилі <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME" /> або в полі update_url у цьому правилі. Якщо update_url – URL-адреса Веб-магазину Chrome, експериментальний параметр override_update_url ігнорується.
+
+      Примітка: в екземплярах <ph name="MS_WIN_NAME" />, не зареєстрованих у домені <ph name="MS_AD_NAME" />, а також в екземплярах <ph name="MAC_OS_NAME" />, які не контролюються через Керування мобільними пристроями або не зареєстровані в домені через MCX, примусово встановлюються лише додатки та розширення з Веб-магазину Chrome.</translation>
 <translation id="8451988835943702790">Зробити сторінку нової вкладки головною сторінкою</translation>
 <translation id="8455529558077979314">Налаштування екрана конфіденційності</translation>
 <translation id="8455551509936646199">День тижня, коли має відбутися перезапуск (за встановленим на пристрої місцевим часовим поясом). Використовується, лише якщо для параметра frequency вибрано значення WEEKLY.</translation>
@@ -6514,6 +6552,21 @@
       Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> – недопустиме значення для цього правила.</translation>
 <translation id="8703488928438047864">Повідомити статус панелі</translation>
 <translation id="8704831857353097849">Список вимкнених плагінів</translation>
+<translation id="8704915028294851978">Список налаштувань сервісів <ph name="PRODUCT_NAME" /> Enterprise Connectors, які застосовуються до конектора Enterprise <ph name="ON_PRINT_ENTERPRISE_CONNECTOR" />, що активується, коли у веб-переглядачі <ph name="PRODUCT_NAME" /> виконується друк сторінки або файлу.
+
+      Поля <ph name="ENTERPRISE_CONNECTOR_URL_LIST_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_TAGS_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_ENABLE_FIELD" /> і <ph name="ENTERPRISE_CONNECTOR_DISABLE_FIELD" /> визначають, чи надсилатиме конектор на аналіз дані, коли активується друк на певній сторінці, а також які теги додавати в запит на аналіз. Дані аналізуються, якщо запит містить принаймні 1 тег.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_SERVICE_PROVIDER_FIELD" /> визначає, якому постачальнику послуг аналізу відповідають налаштування.
+
+      Якщо в полі <ph name="ENTERPRISE_CONNECTOR_BLOCK_UNTIL_VERDICT_FIELD" /> указано значення 1, <ph name="PRODUCT_NAME" /> показує вікно попереднього перегляду друку для сторінки, лише коли отримує відповідь від сервісу аналізу. Якщо в цьому полі вказано будь-яке інше ціле число, <ph name="PRODUCT_NAME" /> одразу показує вікно попереднього перегляду друку.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_BLOCK_LARGE_FILES_FIELD" /> контролює, чи блокуватиме <ph name="PRODUCT_NAME" /> завеликі для аналізу файли або сторінки.
+
+      Поле <ph name="ENTERPRISE_CONNECTOR_REQUIRE_JUSTIFICATION_TAGS_FIELD" /> визначає теги, для яких конектор вимагає від користувача вказати підставу для обходу перевірки (після чого попередження можна буде закрити). Якщо це поле не налаштовано, вважається, що вказувати підставу не потрібно.
+
+      Поля <ph name="ENTERPRISE_CONNECTOR_CUSTOM_MESSAGES_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_MESSAGE_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_LEARN_MORE_URL_FIELD" />, <ph name="ENTERPRISE_CONNECTOR_LANGUAGE_FIELD" /> і <ph name="ENTERPRISE_CONNECTOR_TAG_FIELD" /> дають змогу адміністратору налаштувати повідомлення для користувача про незадовільний результат перевірки (довжиною не більше ніж 200 символів).
+
+      Це правило можна налаштувати лише через <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />.</translation>
 <translation id="8705895771006864851">Якщо для цього правила вибрано значення True, у <ph name="PRODUCT_NAME" /> відображатиметься інтегрована панель інструментів перекладу (коли потрібно). Крім того, опція перекладу буде доступна в контекстному меню правої кнопки миші. Якщо для цього правила вибрано значення False, усі вбудовані функції перекладу буде вимкнено.
 
       Якщо його налаштовано, користувачі не зможуть змінювати цю функцію. Якщо правило не налаштовано, користувачі зможуть змінювати цей параметр.</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index f2cdbc3..b3811433 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -3949,7 +3949,6 @@
       Nếu bạn tắt chính sách này, các tệp PDF sẽ được mở trừ phi người dùng tắt trình bổ trợ PDF.
 
       Nếu bạn đặt chính sách này, người dùng sẽ không thay đổi được trong <ph name="PRODUCT_NAME" />. Nếu bạn không đặt chính sách này, người dùng có thể chọn mở tệp PDF bằng trình xem bên ngoài hoặc không.</translation>
-<translation id="570062449808736508">Khi chính sách này được đặt thành chuỗi không trống, WebView sẽ đọc hạn chế URL từ nhà cung cấp nội dung có tên tổ chức cho trước.</translation>
 <translation id="5708969689202733975">Định cấu hình chế độ mở khóa nhanh được phép</translation>
 <translation id="5714563837055244378">Bật tính năng chia sẻ dữ liệu của Ứng dụng Android sang Web.</translation>
 <translation id="5715617256528927547">Nếu bạn đặt chính sách này, hệ thống sẽ chỉ định thời gian tồn tại (tính theo giờ) của bộ nhớ đệm Đối tượng chính sách nhóm (GPO) – thời lượng tối đa có thể sử dụng lại các GPO trước khi các GPO này được tải xuống lần nữa. Thay vì tải các GPO xuống lần nữa trong mỗi lần tìm nạp chính sách, hệ thống có thể sử dụng lại các GPO đã lưu vào bộ nhớ đệm, miễn là phiên bản của các GPO này không thay đổi.
@@ -4701,7 +4700,6 @@
       Xin lưu ý rằng EnabledPlugins và DisabledPluginsExceptions có thể ghi đè chính sách này.
 
       Nếu bạn không đặt chính sách này, thì người dùng có thể sử dụng bất kỳ plugin nào được cài đặt trên hệ thống, ngoại trừ các plugin không tương thích, lỗi thời hoặc nguy hiểm đã được mã hóa cứng.</translation>
-<translation id="6573305661369899995">Đặt nguồn bên ngoài cho hạn chế URL</translation>
 <translation id="6575944031719151455">Nếu bạn đặt chính sách này, hệ thống sẽ chỉ định danh sách các tài khoản trên thiết bị sẽ hiển thị trên màn hình đăng nhập. Các tài khoản trên thiết bị được phân biệt thông qua mã nhận dạng.
 
       Nếu bạn không đặt hoặc đặt chính sách này thành danh sách trống, thì sẽ không có tài khoản nào trên thiết bị hiển thị.</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 90ba41c..ec5fd6be 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -3908,7 +3908,6 @@
       如果此政策已停用,则意味着系统会使用 PDF 插件打开 PDF 文件,除非用户已关闭该插件。
 
       如果您设置了此政策,用户将无法在 <ph name="PRODUCT_NAME" /> 中更改它。如果您未设置此政策,用户便可选择是否要在外部打开 PDF。</translation>
-<translation id="570062449808736508">此政策设为非空字符串时,WebView 将读取具有指定机构名称的内容提供方的网址限制条件。</translation>
 <translation id="5708969689202733975">配置所允许的“快速解锁”模式</translation>
 <translation id="5714563837055244378">启用 Android 应用至 Web 应用分享功能。</translation>
 <translation id="5715617256528927547">通过设置此政策,您可以指定群组政策对象 (GPO) 缓存期限(以小时为单位),即 GPO 在不必重新下载的情况下可被重复使用的时长上限。只要 GPO 的版本未变,系统便会重复使用已缓存的 GPO,而不是在每次提取政策时都重新下载 GPO。
@@ -4628,7 +4627,6 @@
       请注意,此政策可被 EnabledPlugins 和 DisabledPluginsExceptions 覆盖。
 
       如果未设置此政策,则用户可以使用系统中安装的任何插件,经过硬编码且不兼容、已过期或危险的插件除外。</translation>
-<translation id="6573305661369899995">设置网址限制条件的外部来源</translation>
 <translation id="6575944031719151455">通过设置此政策,您可以指定将在登录屏幕中显示的设备本地帐号的列表。标识符会将不同的设备本地帐号区分开。
 
       如果您不设置此政策或此政策是空列表,则不存在设备本地帐号。</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index 50d807a..a19141e 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -177,6 +177,7 @@
 
       想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是這項政策許可的值。</translation>
 <translation id="120937472976628837">回報風扇資訊</translation>
+<translation id="1212233008927724662">停用 Lazy Login WebUI 載入功能。</translation>
 <translation id="1216919699175573511">啟用 Signed HTTP Exchange (SXG) 支援</translation>
 <translation id="1219695476179627719">指定是否要將已搭載較新版本的裝置復原至 <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" /> 所設定的版本。
 
@@ -482,6 +483,12 @@
 <translation id="159946228300522107">如果將這項政策設為 True,Chrome 首次執行時會將第一個顯示的視窗最大化。
 
       如果將這項政策設為 False 或不設定,Chrome 會視螢幕大小而定,將第一個視窗最大化。</translation>
+<translation id="1600107337865729434">這項政策預設為允許使用 origin-keyed 代理程式叢集。
+
+      Origin-Agent-Cluster:HTTP 標頭會控制系統要在 origin-keyed 代理程式叢集或 site-keyed 代理程式叢集中隔離文件。這個做法有安全性疑慮,因為 origin-keyed 代理程式叢集允許系統按來源隔離文件。對開發人員來說,啟用這項政策就無法再設定 document.domain 存取子。
+
+      預設行為 - 未設定 Origin-Agent-Cluster 標頭時 - 在 M101 版本中從 site-keyed 變更為 origin-keyed。如果將這項政策設為啟用或不設定,瀏覽器會自該版本起採用這項新的預設設定。如果將這項政策設為停用,系統會復原這項變更,並將未包含 Origin-Agent-Cluster 標頭的文件指派給 site-keyed 代理程式叢集。因此在預設情況下,開發人員仍可設定 document.domain 存取子。這項設定與舊版行為相符。
+      </translation>
 <translation id="1600340610556453828">如果這項政策設為停用,<ph name="PRODUCT_OS_NAME" /> 會關閉 Wi-Fi 功能,而且使用者無法變更這項設定。
 
       如果將這項政策設為啟用或不設定,使用者可以開啟或關閉 Wi-Fi。</translation>
@@ -632,6 +639,7 @@
       另請參閱 <ph name="REMOTE_ACCESS_HOST_CLIENT_DOMAIN_LIST_POLICY_NAME" />。
 
       注意:這項設定會覆寫 <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" /> (如有設定的話)。</translation>
+<translation id="1721304336924950970">只在必要時載入 Login WebUI。</translation>
 <translation id="172374442286684480">允許所有網站設定本機資料</translation>
 <translation id="1729169799290004131">你可以透過這項政策指定螢幕亮度百分比,並關閉自動調整亮度功能。初始螢幕亮度會依政策設定值調整,但使用者可進行變更。
 
@@ -715,6 +723,7 @@
           這項政策是選擇性的,如果未設定,系統將使用 GET 方法傳送互動智慧搜尋要求。
 
           只有在啟用「DefaultSearchProviderEnabled」時,系統才會遵循這項政策。</translation>
+<translation id="1850439894606905202">根據預設,系統會將文件放置在 site-keyed 代理程式叢集中。開發人員仍可設定 document.domain。</translation>
 <translation id="1852294065645015766">允許自動播放媒體</translation>
 <translation id="1859859319036806634">警告:我們將於 <ph name="PRODUCT_NAME" /> 52 版發布 (大約在 2016 年 9 月) 之後淘汰 TLS 版本遞補功能,並停止支援這項政策。
 
@@ -1846,6 +1855,15 @@
 <translation id="3152425128389603870">允許使用整合桌面並預設為啟用。</translation>
 <translation id="3159375329008977062">允許使用者透過 UI 匯出/匯入 Crostini 容器</translation>
 <translation id="3164531087779621747">列印 PostScript 模式</translation>
+<translation id="3165468162820163252">這項政策可控管登入畫面的 WebUI 部分要一律在啟動時載入,或是只在顯示前才載入。這項政策適用於登入畫面。
+
+      如果啟用這項政策,系統只會在顯示登入使用者介面之前才載入 WebUI 部分。這會加快登入程序。
+
+      如果停用這項政策,系統一律會在啟動時載入登入畫面的 WebUI 部分 (舊版行為)。
+
+      如果不設定這項政策,這個行為將會由 kEnableLazyLoginWebUILoading 功能控管。
+
+      這項政策應該會在 kEnableLazyLoginWebUILoading 全面推出後移除。</translation>
 <translation id="3165808775394012744">這些政策全部集中在這個資料夾裡,方便輕鬆移除。</translation>
 <translation id="3166210414652928099">允許使用者使用來源不受信任的 Android 應用程式</translation>
 <translation id="316778957754360075">我們已於 <ph name="PRODUCT_NAME" /> 版本 29 移除這項設定。如要設定機構代管的擴充功能/應用程式系列,建議你將代管 CRX 封裝檔的網站加入 ExtensionInstallSources 中,並在網頁上提供該封裝檔的直接下載連結。你可以透過 ExtensionInstallForcelist 政策建立該網頁專用的啟動器。</translation>
@@ -3900,7 +3918,6 @@
       如果將這項政策設為 Disabled,則表示除非使用者停用 PDF 外掛程式,否則系統一律會使用 PDF 外掛程式開啟 PDF 檔案。
 
       如果設定這項政策,使用者將無法在 <ph name="PRODUCT_NAME" /> 中進行變更。如果不設定這項政策,使用者可以選擇是否要從外部開啟 PDF。</translation>
-<translation id="570062449808736508">如果將這項政策設為非空白字串,WebView 就會讀取內容提供者 (擁有指定授權單位名稱) 的網址限制設定。</translation>
 <translation id="5708969689202733975">設定允許的快速解鎖模式</translation>
 <translation id="5714563837055244378">允許從 Android 分享內容到網頁應用程式。</translation>
 <translation id="5715617256528927547">你可以透過這項政策,指定群組政策物件 (GPO) 快取的效期 (以小時為單位),也就是 GPO 在重新下載前可供重複使用的時間長度上限。只要快取 GPO 的版本沒有改變,系統就能重複使用這些快取 GPO,不必在每次擷取政策時重新下載 GPO。如果將這項政策設為 0,將會關閉 GPO 快取功能。在這種情況下,系統於每次擷取政策時都必須重新下載 GPO,即使 GPO 沒有更動也一樣,因此伺服器負載會增加。
@@ -3954,6 +3971,7 @@
       如果不設定這項政策或設為 False,那麼從 M80 版開始,系統在預設狀態下會停用 Web Components v0 功能。
 
       這項政策將在 Chrome 第 84 版後移除。</translation>
+<translation id="575647238840663288">根據預設,系統可能會將文件放置在 origin-keyed 代理程式叢集中。開發人員無法為這類文件設定 document.domain。</translation>
 <translation id="5756680608782814094">回報裝置的 VPD 資訊。
 
       如果將這項政策設為 False 或未設定,系統將不會回報這項資訊。
@@ -4610,7 +4628,6 @@
       如果啟用這項設定,<ph name="PRODUCT_NAME" /> 一律不會使用清單中指定的外掛程式,並且會在「about:plugins」中將這些外掛程式標示為已停用,使用者將無法予以啟用。請注意,EnabledPlugins 和 DisabledPluginsExceptions 可覆寫這項政策。
 
       如果不設定這項政策,使用者可以使用系統上安裝的任何外掛程式 (不含與硬式編碼不相容、過舊或危險的外掛程式)。</translation>
-<translation id="6573305661369899995">設定外部網址來源限制</translation>
 <translation id="6575944031719151455">你可以透過這項政策指定裝置本機帳戶清單,系統會在登入畫面上顯示這些帳戶。可透過 ID 來分辨不同的裝置本機帳戶。
 
       如果不設定這項政策或設為空白清單,系統不會顯示任何裝置本機帳戶。</translation>
@@ -4713,6 +4730,7 @@
       指定 <ph name="SUBJECT_PUBLIC_KEY_INFO" /> 雜湊的方法是串連雜湊演算法名稱、斜線以及套用到指定憑證 <ph name="SUBJECT_PUBLIC_KEY_INFO" /> (採 DER 編碼) 雜湊演算法所採用的 Base64 編碼。Base64 編碼格式符合 SPKI 指紋編碼的格式。系統僅能辨識 sha256 雜湊演算法,其他雜湊演算法則會忽略。
 
       如果未設定這項政策,凡是應依憑證透明化規定公開而未公開的憑證,<ph name="PRODUCT_NAME" /> 都會將其視為不受信任的憑證。</translation>
+<translation id="6704445641918520643">啟用 Lazy Login WebUI 載入功能。</translation>
 <translation id="6704515759227307131">這項政策已遭淘汰,並已替換為 AdvancedProtectionAllowed。
 
       這項政策可控管已加入進階保護計畫的使用者是否可以將下載內容傳送至 Google 進行惡意軟體掃描。如果設為 True 或不予設定,系統會提示已加入計畫的使用者將檔案傳送至 Google 進行深度掃描。如果使用者選取「掃描」,系統會將其下載內容傳送至 Google。如果設為 False,系統不會提示使用者,也不會將其下載內容傳送至 Google。</translation>
@@ -6417,6 +6435,11 @@
 
       在 <ph name="MS_WIN_NAME" /> 上,這項功能僅適用於已加入 <ph name="MS_AD_NAME" /> 網域的執行個體、在 Windows 10 專業版上執行的執行個體,或是已註冊 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />服務的執行個體。在 <ph name="MAC_OS_NAME" /> 上,這項功能僅適用於透過行動裝置管理 (MDM) 軟體進行管理或透過 MCX 加入網域的執行個體。</translation>
 <translation id="8671119576957984818">啟用桌面分享中心</translation>
+<translation id="8671314659400112135">如果將這項政策設為啟用或不設定,系統會允許 <ph name="PRODUCT_NAME" /> 套用額外的擴充點安全性防護機制,藉此封鎖瀏覽器程序中的舊版擴充點。
+
+      將這項政策設為停用會對 <ph name="PRODUCT_NAME" /> 的安全性和穩定性造成負面影響,因為這樣一來,<ph name="PRODUCT_NAME" /> 會允許瀏覽器程序載入可能具有惡意的未知程式碼。建議只有必須在 <ph name="PRODUCT_NAME" /> 的瀏覽器程序中執行的第三方軟體發生相容性問題時,才停用這項政策。
+
+      注意:如要進一步瞭解程序寬鬆檢查機制政策,請前往 https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md#Process-mitigation-policies。</translation>
 <translation id="8672321184841719703">指定目標的自動更新版本</translation>
 <translation id="867410340948518937">U2F (通用雙重驗證)</translation>
 <translation id="8676959842615154675">如果將這項政策設為啟用,遠端存取主機會比對與主機相關聯的本機使用者名稱,以及註冊為主機擁有者的 Google 帳戶名稱。舉例來說,如果主機擁有者是「johndoe@example.com」,則帳戶名稱為「johndoe」。如果主機擁有者的名稱與主機相關聯的本機使用者名稱不同,系統將不會啟動這個主機。如要強制將主機擁有者的 Google 帳戶與特定網域建立關聯,請搭配 <ph name="REMOTE_ACCESS_HOST_DOMAIN_POLICY_NAME" /> 使用這項政策。
@@ -6681,6 +6704,7 @@
 <translation id="8948062138228904066">驗證伺服器許可清單</translation>
 <translation id="8951350807133946005">設定磁碟快取目錄</translation>
 <translation id="8955719471735800169">返回頁首</translation>
+<translation id="8956312248048980644">在預設情況下,允許使用 origin-keyed 代理程式叢集。</translation>
 <translation id="8959992920425111821">預設設定</translation>
 <translation id="8967125680876068695">Chrome 應用程式已在 Windows、Mac 和 Linux 上遭到淘汰。
       如果啟用這項政策,<ph name="PRODUCT_NAME" /> 會繼續允許 Chrome 應用程式在這些平台上執行,直到 2022 年 6 月對所有平台停止支援 Chrome 應用程式為止。
diff --git a/components/power_metrics/iopm_power_source_sampling_event_source.cc b/components/power_metrics/iopm_power_source_sampling_event_source.cc
index ca1b10d7..321d66e 100644
--- a/components/power_metrics/iopm_power_source_sampling_event_source.cc
+++ b/components/power_metrics/iopm_power_source_sampling_event_source.cc
@@ -10,7 +10,7 @@
 #include "base/check.h"
 #include "base/logging.h"
 
-namespace power_sampler {
+namespace power_metrics {
 
 IOPMPowerSourceSamplingEventSource::IOPMPowerSourceSamplingEventSource() =
     default;
@@ -64,4 +64,4 @@
   self->callback_.Run();
 }
 
-}  // namespace power_sampler
+}  // namespace power_metrics
diff --git a/components/power_metrics/iopm_power_source_sampling_event_source.h b/components/power_metrics/iopm_power_source_sampling_event_source.h
index 9b294a2..9b0b5935 100644
--- a/components/power_metrics/iopm_power_source_sampling_event_source.h
+++ b/components/power_metrics/iopm_power_source_sampling_event_source.h
@@ -10,7 +10,7 @@
 #include "base/mac/scoped_ioobject.h"
 #include "components/power_metrics/sampling_event_source.h"
 
-namespace power_sampler {
+namespace power_metrics {
 
 // Generates a sampling event when a state change notification is dispatched by
 // the IOPMPowerSource service.
@@ -35,6 +35,6 @@
   SamplingEventCallback callback_;
 };
 
-}  // namespace power_sampler
+}  // namespace power_metrics
 
 #endif  // COMPONENTS_POWER_METRICS_IOPM_POWER_SOURCE_SAMPLING_EVENT_SOURCE_H_
diff --git a/components/power_metrics/sampling_event_source.cc b/components/power_metrics/sampling_event_source.cc
index 41d2ee7..3a5caa2 100644
--- a/components/power_metrics/sampling_event_source.cc
+++ b/components/power_metrics/sampling_event_source.cc
@@ -4,8 +4,8 @@
 
 #include "components/power_metrics/sampling_event_source.h"
 
-namespace power_sampler {
+namespace power_metrics {
 
 SamplingEventSource::~SamplingEventSource() = default;
 
-}  // namespace power_sampler
+}  // namespace power_metrics
diff --git a/components/power_metrics/sampling_event_source.h b/components/power_metrics/sampling_event_source.h
index 61743b6..20797a6 100644
--- a/components/power_metrics/sampling_event_source.h
+++ b/components/power_metrics/sampling_event_source.h
@@ -7,7 +7,7 @@
 
 #include "base/callback_forward.h"
 
-namespace power_sampler {
+namespace power_metrics {
 
 // Invokes a callback when a Sample should be requested from all Samplers.
 class SamplingEventSource {
@@ -21,6 +21,6 @@
   virtual bool Start(SamplingEventCallback callback) = 0;
 };
 
-}  // namespace power_sampler
+}  // namespace power_metrics
 
 #endif  // COMPONENTS_POWER_METRICS_SAMPLING_EVENT_SOURCE_H_
diff --git a/components/power_metrics/timer_sampling_event_source.cc b/components/power_metrics/timer_sampling_event_source.cc
index 3d6f058b..eef92f2b 100644
--- a/components/power_metrics/timer_sampling_event_source.cc
+++ b/components/power_metrics/timer_sampling_event_source.cc
@@ -6,7 +6,7 @@
 
 #include "base/check.h"
 
-namespace power_sampler {
+namespace power_metrics {
 
 TimerSamplingEventSource::TimerSamplingEventSource(base::TimeDelta interval)
     : interval_(interval) {}
@@ -19,4 +19,4 @@
   return true;
 }
 
-}  // namespace power_sampler
+}  // namespace power_metrics
diff --git a/components/power_metrics/timer_sampling_event_source.h b/components/power_metrics/timer_sampling_event_source.h
index e350d673..a7115d1 100644
--- a/components/power_metrics/timer_sampling_event_source.h
+++ b/components/power_metrics/timer_sampling_event_source.h
@@ -9,7 +9,7 @@
 #include "base/timer/timer.h"
 #include "components/power_metrics/sampling_event_source.h"
 
-namespace power_sampler {
+namespace power_metrics {
 
 // Generates a sampling event at regular time intervals.
 class TimerSamplingEventSource : public SamplingEventSource {
@@ -27,6 +27,6 @@
   base::RepeatingTimer timer_;
 };
 
-}  // namespace power_sampler
+}  // namespace power_metrics
 
 #endif  // COMPONENTS_POWER_METRICS_TIMER_SAMPLING_EVENT_SOURCE_H_
diff --git a/components/power_metrics/timer_sampling_event_source_unittest.cc b/components/power_metrics/timer_sampling_event_source_unittest.cc
index 3c2d1dc1..6d89e098 100644
--- a/components/power_metrics/timer_sampling_event_source_unittest.cc
+++ b/components/power_metrics/timer_sampling_event_source_unittest.cc
@@ -8,7 +8,7 @@
 #include "base/test/task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-namespace power_sampler {
+namespace power_metrics {
 
 TEST(TimerSamplingEventSourceTest, Basic) {
   constexpr base::TimeDelta kDelay = base::Seconds(1);
@@ -28,4 +28,4 @@
   EXPECT_EQ(11, num_callbacks);
 }
 
-}  // namespace power_sampler
+}  // namespace power_metrics
diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_browsing/core/common/features.cc
index 2324983..c672b79 100644
--- a/components/safe_browsing/core/common/features.cc
+++ b/components/safe_browsing/core/common/features.cc
@@ -130,6 +130,10 @@
     "SafeBrowsingRemoveCookiesInAuthRequests",
     base::FEATURE_DISABLED_BY_DEFAULT};
 
+const base::Feature kSendSampledPingsForProtegoAllowlistDomains{
+    "SafeBrowsingSendSampledPingsForProtegoAllowlistDomains",
+    base::FEATURE_DISABLED_BY_DEFAULT};
+
 constexpr base::FeatureParam<bool> kShouldFillOldPhishGuardProto{
     &kPasswordProtectionForSignedInUsers, "DeprecateOldProto", false};
 
@@ -177,6 +181,7 @@
     {&kSafeBrowsingPageLoadToken, true},
     {&kSafeBrowsingPasswordCheckIntegrationForSavedPasswordsAndroid, true},
     {&kSafeBrowsingRemoveCookiesInAuthRequests, true},
+    {&kSendSampledPingsForProtegoAllowlistDomains, true},
     {&kSuspiciousSiteTriggerQuotaFeature, true},
     {&kThreatDomDetailsTagAndAttributeFeature, false},
     {&kTriggerThrottlerDailyQuotaFeature, false},
diff --git a/components/safe_browsing/core/common/features.h b/components/safe_browsing/core/common/features.h
index c53463b..9b86754 100644
--- a/components/safe_browsing/core/common/features.h
+++ b/components/safe_browsing/core/common/features.h
@@ -123,6 +123,10 @@
 // enterprise.
 extern const base::Feature kRealTimeUrlLookupReferrerChainForEnterprise;
 
+// Controls whether to send sample pings of Protego allowlist domains on
+// the allowlist to Safe Browsing.
+extern const base::Feature kSendSampledPingsForProtegoAllowlistDomains;
+
 // Status of the SimplifiedUrlDisplay experiments. This does not control the
 // individual experiments, those are controlled by their own feature flags.
 // The feature is only set by Finch so that we can differentiate between
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb
index 10bd6f6..c69c7a2 100644
--- a/components/strings/components_strings_af.xtb
+++ b/components/strings/components_strings_af.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Hierdie program is vir mobiele toestelle ontwerp en sy grootte is dalk nie maklik om te verander nie. Die program sal dalk kwessies ervaar of herbegin.</translation>
 <translation id="4969341057194253438">Vee opname uit</translation>
 <translation id="4973922308112707173">Dubbelpons bo</translation>
+<translation id="4976702386844183910">Laas besoek op <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Gebruik mikrofoon?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Sien alles</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Betaalmetodes en adresse wat Google Pay gebruik</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Laai 13</translation>
+<translation id="5216942107514965959">Laas vandag besoek</translation>
 <translation id="5222812217790122047">E-posadres word vereis</translation>
 <translation id="5230733896359313003">Versendingadres</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Gestoorde wagwoorde</translation>
 <translation id="5873013647450402046">Jou bank wil bevestig dis jy.</translation>
 <translation id="5887400589839399685">Kaart is gestoor</translation>
+<translation id="5887687176710214216">Gister laas besoek</translation>
 <translation id="5895138241574237353">Herbegin</translation>
 <translation id="5895187275912066135">Uitgereik op</translation>
 <translation id="5901630391730855834">Geel</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">Herdoen uitvee</translation>
 <translation id="6545864417968258051">Bluetooth-opsporing</translation>
 <translation id="6547208576736763147">Dubbelpons links</translation>
+<translation id="6554732001434021288">Laas <ph name="NUM_DAYS" /> dae gelede besoek</translation>
 <translation id="6556866813142980365">Herdoen</translation>
 <translation id="6569060085658103619">Jy bekyk tans 'n uitbreidingbladsy</translation>
 <translation id="6573200754375280815">Dubbelpons regs</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index 0df8e31..9d3be5b 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -1254,6 +1254,7 @@
 <translation id="4968522289500246572">ይህ መተግበሪያ ለሞባይል የተነደፈ ነው፣ እና በጥሩ ሁኔታ መጠን ላይቀይር ይችላል። መተግበሪያው ችግሮች ሊያጋጥሙት ወይም ዳግም ሊነሳ ይችላል።</translation>
 <translation id="4969341057194253438">ቀረጻ ሰርዝ</translation>
 <translation id="4973922308112707173">ከላይ ሁለቴ ብሳ</translation>
+<translation id="4976702386844183910">ለመጨረሻ ጊዜ የተጎበኘው በ<ph name="DATE" /></translation>
 <translation id="4984088539114770594">ማይክፎሮን ይጠቀም?</translation>
 <translation id="4984339528288761049">Prc5 (የደብዳቤ ፖስታ)</translation>
 <translation id="4989163558385430922">ሁሉንም ይመልከቱ</translation>
@@ -1339,6 +1340,7 @@
 <translation id="5215116848420601511">Google Payን የሚጠቀሙ የመክፈያ ዘዴዎች እና አድራሻዎች</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">መሳቢያ 13</translation>
+<translation id="5216942107514965959">መጨረሻ የተጎበኘው ዛሬ</translation>
 <translation id="5222812217790122047">ኢሜይል ያስፈልጋል</translation>
 <translation id="5230733896359313003">የሚላክበት አድራሻ</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1524,6 +1526,7 @@
 <translation id="5869522115854928033">የተቀመጡ የይለፍ ቃሎች</translation>
 <translation id="5873013647450402046">ባንክዎ እርስዎ መሆንዎን ማረጋገጥ ይፈልጋል።</translation>
 <translation id="5887400589839399685">ካርድ ተቀምጧል</translation>
+<translation id="5887687176710214216">ለመጨረሻ ጊዜ የተጎበኘው ትላንትና</translation>
 <translation id="5895138241574237353">እንደገና ጀምር</translation>
 <translation id="5895187275912066135">በዚህ ቀን ቀርቧል</translation>
 <translation id="5901630391730855834">ቢጫ</translation>
@@ -1717,6 +1720,7 @@
 <translation id="6529602333819889595">&amp;ሰርዝን ድገም</translation>
 <translation id="6545864417968258051">የብሉቱዝ ቅኝት</translation>
 <translation id="6547208576736763147">በግራ በኩል ብሳ</translation>
+<translation id="6554732001434021288">ለመጨረሻ ጊዜ የተጎበኘው ከ<ph name="NUM_DAYS" /> ቀናት በፊት ነው</translation>
 <translation id="6556866813142980365">ድገም</translation>
 <translation id="6569060085658103619">የቅጥያ ገጽ እየተመለከቱ ነው</translation>
 <translation id="6573200754375280815">ድርብ ብስ ቀኝ</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index 3049f47..de09118 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">هذا التطبيق مصمّم للعمل مع الأجهزة الجوّالة وقد يتعذّر تغيير حجمه بشكل مناسب. من الممكن أن يواجه التطبيق بعض المشاكل أو يتعرّض لإعادة التشغيل.</translation>
 <translation id="4969341057194253438">حذف التسجيل</translation>
 <translation id="4973922308112707173">عمل ثقبَين بالأعلى</translation>
+<translation id="4976702386844183910">تاريخ آخر زيارة للموقع الإلكتروني: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">هل تريد استخدام الميكروفون؟</translation>
 <translation id="4984339528288761049">‏Prc5 (مغلف)</translation>
 <translation id="4989163558385430922">عرض الكل</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">‏طرق الدفع والعناوين باستخدام Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">الدُرج 13</translation>
+<translation id="5216942107514965959">تمّت زيارة الموقع الإلكتروني آخر مرّة اليوم.</translation>
 <translation id="5222812217790122047">البريد الإلكتروني مطلوب</translation>
 <translation id="5230733896359313003">عنوان الشحن</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">كلمات المرور المحفوظة</translation>
 <translation id="5873013647450402046">يجب تأكيد هويتك للمصرف.</translation>
 <translation id="5887400589839399685">تم حفظ البطاقة</translation>
+<translation id="5887687176710214216">تمّت زيارة الموقع الإلكتروني آخر مرة أمس.</translation>
 <translation id="5895138241574237353">إعادة التشغيل</translation>
 <translation id="5895187275912066135">تاريخ الإصدار</translation>
 <translation id="5901630391730855834">أصفر</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">إعادة الح&amp;ذف</translation>
 <translation id="6545864417968258051">البحث عن بلوتوث</translation>
 <translation id="6547208576736763147">عمل ثقبَين يسارًا</translation>
+<translation id="6554732001434021288">تمّت زيارة الموقع الإلكتروني آخر مرّة قبل <ph name="NUM_DAYS" /> يوم.</translation>
 <translation id="6556866813142980365">إعادة</translation>
 <translation id="6569060085658103619">أنت تعرض صفحة إضافة</translation>
 <translation id="6573200754375280815">عمل ثقبَين يمينًا</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb
index 58132f1..0f8f7a34 100644
--- a/components/strings/components_strings_as.xtb
+++ b/components/strings/components_strings_as.xtb
@@ -1258,6 +1258,7 @@
 <translation id="4968522289500246572">এই এপ্‌টো ম’বাইলৰ বাবে ডিজাইন কৰা হৈছে আৰু ইয়াৰ আকাৰ ভালদৰে সলনি নহ’ব পাৰে। এপ্‌টো সমস্যাৰ সন্মুখীন অথবা ৰিষ্টাৰ্ট হ’ব পাৰে।</translation>
 <translation id="4969341057194253438">ৰেকৰ্ডিং মচক</translation>
 <translation id="4973922308112707173">ওপৰৰ অংশত দুবাৰ পাঞ্চ কৰক</translation>
+<translation id="4976702386844183910">শেষবাৰে <ph name="DATE" /> তাৰিখে চাইছে</translation>
 <translation id="4984088539114770594">মাইক্র’ফ’ন ব্যৱহাৰ কৰিবনে?</translation>
 <translation id="4984339528288761049">Prc5 (লেফাফা)</translation>
 <translation id="4989163558385430922">সকলো চাওক</translation>
@@ -1343,6 +1344,7 @@
 <translation id="5215116848420601511">Google Pay ব্যৱহাৰ কৰা পৰিশোধ পদ্ধতি আৰু ঠিকনা</translation>
 <translation id="5215363486134917902">ফ'লিঅ'-Sp</translation>
 <translation id="521659676233207110">ট্ৰে’ ১৩</translation>
+<translation id="5216942107514965959">শেষবাৰ আজি চাইছে</translation>
 <translation id="5222812217790122047">ইমেইল বাধ্যতামূলক</translation>
 <translation id="5230733896359313003">শ্বিপিঙৰ ঠিকনা</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1528,6 +1530,7 @@
 <translation id="5869522115854928033">ছেভ কৰা পাছৱৰ্ডসমূহ</translation>
 <translation id="5873013647450402046">আপোনাৰ বেংকে এয়া আপুনি বুলি নিশ্চিত কৰিবলৈ বিচাৰে।</translation>
 <translation id="5887400589839399685">কাৰ্ড ছেভ কৰা হ’ল</translation>
+<translation id="5887687176710214216">শেষবাৰ কালি চাইছিল</translation>
 <translation id="5895138241574237353">ৰিষ্টাৰ্ট কৰক</translation>
 <translation id="5895187275912066135">জাৰি কৰা তাৰিখ</translation>
 <translation id="5901630391730855834">হালধীয়া</translation>
@@ -1720,6 +1723,7 @@
 <translation id="6529602333819889595">মচা কার্য &amp;ৰিডু কৰক</translation>
 <translation id="6545864417968258051">ব্লুটুথ স্কেনিং</translation>
 <translation id="6547208576736763147">বাওঁফালে দুবাৰ পাঞ্চ কৰক</translation>
+<translation id="6554732001434021288"><ph name="NUM_DAYS" /> দিনৰ পূৰ্বে শেষবাৰ চাইছিল</translation>
 <translation id="6556866813142980365">ৰিডু</translation>
 <translation id="6569060085658103619">আপুনি কোনো এক্সটেনশ্বনৰ পৃষ্ঠা চাই আছে</translation>
 <translation id="6573200754375280815">সোঁফালে দুবাৰ পাঞ্চ কৰক</translation>
@@ -2287,6 +2291,7 @@
 <translation id="8390725133630534698"><ph name="ORIGIN_NAME" />ৰ পৰা <ph name="VM_NAME" />লৈ শ্বেয়াৰ কৰাৰ সুবিধাটো প্ৰশাসকৰ নীতিয়ে অৱৰোধ কৰিছে</translation>
 <translation id="8398790343843005537">আপোনাৰ ফ’ন বিচাৰক</translation>
 <translation id="8405579342203358118">আপুনি Chromeৰ ছেটিঙত কি তথ্য ছিংক কৰিব সেয়া পৰিচালনা কৰক</translation>
+<translation id="8405633352367164037">হৃদয় চিহ্ন</translation>
 <translation id="8409413588194360210">পৰিশোধ নিয়ন্ত্ৰক</translation>
 <translation id="8412145213513410671">ক্ৰেশ্ব (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">আপুনি একেটা পাছফ্ৰেজ দুবাৰ দিবই লাগিব।</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 304156f..7c330b1 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -1257,6 +1257,7 @@
 <translation id="4968522289500246572">Bu tətbiq mobil cihaz üçün nəzərdə tutulmuşdur və ölçüsü hər cihaz üçün uyğun olmaya bilər. Tətbiq problemlərlə qarşılaşa bilər və ya yenidən başladıla bilər.</translation>
 <translation id="4969341057194253438">Qeydəalmanı silin</translation>
 <translation id="4973922308112707173">Yuxarıdan qoşa deşik açın</translation>
+<translation id="4976702386844183910">Son ziyarət: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Mikrofondan istifadə edilsin?</translation>
 <translation id="4984339528288761049">Prc5 (Zərf)</translation>
 <translation id="4989163558385430922">Hamısına baxın</translation>
@@ -1342,6 +1343,7 @@
 <translation id="5215116848420601511">Google Pay istifadə edən kart və ünvanlar</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Qab 13</translation>
+<translation id="5216942107514965959">Son ziyarət bu gün olub</translation>
 <translation id="5222812217790122047">E-poçt ünvanı tələb olunur</translation>
 <translation id="5230733896359313003">Göndəriş Ünvanı</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1527,6 +1529,7 @@
 <translation id="5869522115854928033">Saxlanılmış parollar</translation>
 <translation id="5873013647450402046">Bankınız bunun siz olduğunuzu təsdiq etmək istəyir.</translation>
 <translation id="5887400589839399685">Kart yadda saxlanıldı</translation>
+<translation id="5887687176710214216">Son ziyarət dünən olub</translation>
 <translation id="5895138241574237353">Yenidən başladın</translation>
 <translation id="5895187275912066135">Buraxılış Tarixi</translation>
 <translation id="5901630391730855834">Sarı</translation>
@@ -1720,6 +1723,7 @@
 <translation id="6529602333819889595">Silinməni yenidən edin</translation>
 <translation id="6545864417968258051">Bluetooth axtarışı</translation>
 <translation id="6547208576736763147">Soldan qoşa deşik açın</translation>
+<translation id="6554732001434021288">Son ziyarət <ph name="NUM_DAYS" /> gün əvvəl olub</translation>
 <translation id="6556866813142980365">Yenidən edin</translation>
 <translation id="6569060085658103619">Artırma səhifəsinə baxırsınız</translation>
 <translation id="6573200754375280815">Sağdan qoşa deşik açın</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index 1e66555..87fb85c 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">Гэта праграма створана для мабільных прылад, таму змяненне яе памеру можа выклікаць памылкі. Праграма можа працаваць няправільна або перазапусціцца.</translation>
 <translation id="4969341057194253438">Выдаліць запіс</translation>
 <translation id="4973922308112707173">Дзве дзіркі зверху</translation>
+<translation id="4976702386844183910">Апошняе наведванне: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Выкарыстоўваць мікрафон?</translation>
 <translation id="4984339528288761049">Prc5 (канверт)</translation>
 <translation id="4989163558385430922">Паказаць усе</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Спосабы аплаты і адрасы, якія выкарыстоўваюць Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Латок 13</translation>
+<translation id="5216942107514965959">Апошняе наведванне: сёння</translation>
 <translation id="5222812217790122047">Электронны адрас (абавязкова)</translation>
 <translation id="5230733896359313003">Адрас дастаўкі</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Захаваныя паролі</translation>
 <translation id="5873013647450402046">Ваш банк хоча пацвердзіць, што гэта вы.</translation>
 <translation id="5887400589839399685">Картка захавана</translation>
+<translation id="5887687176710214216">Апошняе наведванне: учора</translation>
 <translation id="5895138241574237353">Перазапусціць</translation>
 <translation id="5895187275912066135">Выдадзены</translation>
 <translation id="5901630391730855834">Жоўты</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;Узнавіць выдаленне</translation>
 <translation id="6545864417968258051">Пошук прылад Bluetooth</translation>
 <translation id="6547208576736763147">Дзве дзіркі злева</translation>
+<translation id="6554732001434021288">Апошняе наведванне: <ph name="NUM_DAYS" /> сут таму</translation>
 <translation id="6556866813142980365">Узнавіць</translation>
 <translation id="6569060085658103619">Вы праглядаеце старонку пашырэння</translation>
 <translation id="6573200754375280815">Дзве дзіркі справа</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">Палітыка, зададзеная адміністратарам, блакіруе абагульванне змесціва з сайта <ph name="ORIGIN_NAME" /> з віртуальнай машынай <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Пошук тэлефона</translation>
 <translation id="8405579342203358118">Вызначайце, якая іменна інфармацыя будзе сінхранізавацца, праз налады Chrome</translation>
+<translation id="8405633352367164037">Сэрца</translation>
 <translation id="8409413588194360210">апрацоўшчыкі плацяжоў</translation>
 <translation id="8412145213513410671">Збоі (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Вам трэба двойчы ўвесці аднолькавую фразу-пароль.</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index 437a5a1..5ad069c 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -1260,6 +1260,7 @@
 <translation id="4968522289500246572">Това приложение е предназначено за мобилни устройства и може да не функционира правилно след преоразмеряване. То може да има проблеми или да се рестартира.</translation>
 <translation id="4969341057194253438">Изтриване на записа</translation>
 <translation id="4973922308112707173">Двойно перфориране в горната част</translation>
+<translation id="4976702386844183910">Последно посещение: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Да се използва ли микрофонът?</translation>
 <translation id="4984339528288761049">Prc5 (плик)</translation>
 <translation id="4989163558385430922">Преглед на всички</translation>
@@ -1345,6 +1346,7 @@
 <translation id="5215116848420601511">Начини на плащане и адреси посредством Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Тава 13</translation>
+<translation id="5216942107514965959">Последно посещение: днес</translation>
 <translation id="5222812217790122047">Имейл адресът е задължителен</translation>
 <translation id="5230733896359313003">Адрес за доставка</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1530,6 +1532,7 @@
 <translation id="5869522115854928033">Запазени пароли</translation>
 <translation id="5873013647450402046">Банката иска да потвърди самоличността ви.</translation>
 <translation id="5887400589839399685">Картата бе запазена</translation>
+<translation id="5887687176710214216">Последно посещение: вчера</translation>
 <translation id="5895138241574237353">Рестартиране</translation>
 <translation id="5895187275912066135">Издаден на</translation>
 <translation id="5901630391730855834">жълто</translation>
@@ -1723,6 +1726,7 @@
 <translation id="6529602333819889595">&amp;Възстановяване на изтриването</translation>
 <translation id="6545864417968258051">Сканиране за устройства с Bluetooth</translation>
 <translation id="6547208576736763147">Двойно перфориране отляво</translation>
+<translation id="6554732001434021288">Последно посещение: преди <ph name="NUM_DAYS" /> дни</translation>
 <translation id="6556866813142980365">Възстановяване</translation>
 <translation id="6569060085658103619">Преглеждате страница на разширение</translation>
 <translation id="6573200754375280815">Двойно перфориране отдясно</translation>
@@ -2290,6 +2294,7 @@
 <translation id="8390725133630534698">Споделянето от <ph name="ORIGIN_NAME" /> в(ъв) <ph name="VM_NAME" /> е блокирано от администраторски правила</translation>
 <translation id="8398790343843005537">Намиране на телефона ви</translation>
 <translation id="8405579342203358118">Управление на данните, които да се синхронизират, от настройките на Chrome</translation>
+<translation id="8405633352367164037">Сърце</translation>
 <translation id="8409413588194360210">приложения за обработване на плащания</translation>
 <translation id="8412145213513410671">Сривове (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Трябва да въведете един и същи пропуск два пъти.</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index 9e1b915bb..37c31bc9 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -1263,6 +1263,7 @@
 <translation id="4968522289500246572">এই অ্যাপটি মোবাইল ডিভাইসের জন্য তৈরি করা হয়েছে এবং সঠিকভাবে ছোট বড় করা নাও যেতে পারে। এই অ্যাপ ব্যবহার করতে হয়ত সমস্যা হতে পারে বা এটি রিস্টার্ট করতে হতে পারে।</translation>
 <translation id="4969341057194253438">রেকর্ডিং মুছে ফেলুন</translation>
 <translation id="4973922308112707173">উপরে ডুয়াল পাঞ্চ</translation>
+<translation id="4976702386844183910"><ph name="DATE" />-এ শেষবার দেখেছেন</translation>
 <translation id="4984088539114770594">মাইক্রোফোন ব্যবহার করবেন?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">সবগুলি দেখুন</translation>
@@ -1348,6 +1349,7 @@
 <translation id="5215116848420601511">Google Pay ব্যবহার করে এমন পেমেন্টের পদ্ধতি এবং ঠিকানা</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ট্রে ১৩</translation>
+<translation id="5216942107514965959">আজ শেষবার দেখা হয়েছে</translation>
 <translation id="5222812217790122047">ইমেল আইডি প্রয়োজন</translation>
 <translation id="5230733896359313003">শিপিংয়ের ঠিকানা</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1533,6 +1535,7 @@
 <translation id="5869522115854928033">সংরক্ষিত পাসওয়ার্ড</translation>
 <translation id="5873013647450402046">এটি যে আপনিই সেই বিষয়ে আপনার ব্যাঙ্ক নিশ্চিত হতে চায়।</translation>
 <translation id="5887400589839399685">কার্ড সেভ করা হয়েছে</translation>
+<translation id="5887687176710214216">গতকাল শেষবার দেখা হয়েছে</translation>
 <translation id="5895138241574237353">পুনর্সূচনা</translation>
 <translation id="5895187275912066135">এই তারিখে ইস্যু করা</translation>
 <translation id="5901630391730855834">হলুদ</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;মুছে ফেলাকে আবার করুন</translation>
 <translation id="6545864417968258051">ব্লুটুথ স্ক্যানিং</translation>
 <translation id="6547208576736763147">বাঁদিকে ডুয়াল পাঞ্চ</translation>
+<translation id="6554732001434021288"><ph name="NUM_DAYS" /> দিন আগে শেষবার দেখেছেন</translation>
 <translation id="6556866813142980365">আবার করুন</translation>
 <translation id="6569060085658103619">আপনি একটি এক্সটেনশন পৃষ্ঠা দেখছেন</translation>
 <translation id="6573200754375280815">ডানদিকে ডুয়াল পাঞ্চ</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb
index 069f1272..44b1d064 100644
--- a/components/strings/components_strings_bs.xtb
+++ b/components/strings/components_strings_bs.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Ova aplikacija je dizajnirana za mobilne uređaje i možda neće dobro promijeniti veličinu. Aplikacija može naići na probleme ili se ponovo pokrenuti.</translation>
 <translation id="4969341057194253438">Izbrisati snimak?</translation>
 <translation id="4973922308112707173">Dvostruko bušenje na gornjoj strani</translation>
+<translation id="4976702386844183910">Posljednji put je posjećeno <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Koristiti mikrofon?</translation>
 <translation id="4984339528288761049">Prc5 (koverta)</translation>
 <translation id="4989163558385430922">Prikaži sve</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Načini plaćanja i adrese iz Google Paya</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Ladica 13</translation>
+<translation id="5216942107514965959">Posljednji put je posjećeno danas</translation>
 <translation id="5222812217790122047">Adresa e-pošte je obavezna</translation>
 <translation id="5230733896359313003">Adresa za isporuku</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Sačuvane lozinke</translation>
 <translation id="5873013647450402046">Vaša banka želi potvrditi vaš identitet.</translation>
 <translation id="5887400589839399685">Kartica je spremljena</translation>
+<translation id="5887687176710214216">Posljednji put je posjećeno jučer</translation>
 <translation id="5895138241574237353">Ponovo pokreni</translation>
 <translation id="5895187275912066135">Izdano</translation>
 <translation id="5901630391730855834">Žuta</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Ponovi brisanje</translation>
 <translation id="6545864417968258051">Skeniranje Bluetootha</translation>
 <translation id="6547208576736763147">Dvostruko bušenje na lijevoj strani</translation>
+<translation id="6554732001434021288">Posljednji put je posjećeno prije <ph name="NUM_DAYS" /> dan(a)</translation>
 <translation id="6556866813142980365">Ponovi</translation>
 <translation id="6569060085658103619">Gledate stranicu s ekstenzijama</translation>
 <translation id="6573200754375280815">Dvostruko bušenje na desnoj strani</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index bc5a138d..c1c0e5c 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -1253,6 +1253,7 @@
 <translation id="4968522289500246572">Aquesta aplicació està dissenyada per a mòbils i és possible que no canviï de mida correctament. L'aplicació podria tenir problemes o reiniciar-se.</translation>
 <translation id="4969341057194253438">Suprimeix la gravació</translation>
 <translation id="4973922308112707173">Encunyació doble a la part superior</translation>
+<translation id="4976702386844183910">Darrera visita: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Vols utilitzar el micròfon?</translation>
 <translation id="4984339528288761049">Prc5 (sobre)</translation>
 <translation id="4989163558385430922">Mostra-ho tot</translation>
@@ -1338,6 +1339,7 @@
 <translation id="5215116848420601511">Formes de pagament i adreces que fan servir Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Safata 13</translation>
+<translation id="5216942107514965959">Darrera visita: avui</translation>
 <translation id="5222812217790122047">El correu electrònic és obligatori</translation>
 <translation id="5230733896359313003">Adreça d'enviament</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1523,6 +1525,7 @@
 <translation id="5869522115854928033">Contrasenyes desades</translation>
 <translation id="5873013647450402046">El banc vol confirmar la teva identitat.</translation>
 <translation id="5887400589839399685">S'ha desat la targeta</translation>
+<translation id="5887687176710214216">Darrera visita: ahir</translation>
 <translation id="5895138241574237353">Reinicia</translation>
 <translation id="5895187275912066135">Emès el</translation>
 <translation id="5901630391730855834">Groc</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">&amp;Refés la supressió</translation>
 <translation id="6545864417968258051">Cerca de dispositius Bluetooth</translation>
 <translation id="6547208576736763147">Encunyació doble a l'esquerra</translation>
+<translation id="6554732001434021288">Darrera visita: fa <ph name="NUM_DAYS" /> dies</translation>
 <translation id="6556866813142980365">Refés</translation>
 <translation id="6569060085658103619">Estàs consultant la pàgina d'una extensió</translation>
 <translation id="6573200754375280815">Encunyació doble a la dreta</translation>
@@ -2283,6 +2287,7 @@
 <translation id="8390725133630534698">La política de l'administrador no permet compartir contingut de <ph name="ORIGIN_NAME" /> a <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Troba el teu telèfon</translation>
 <translation id="8405579342203358118">Gestiona la informació que sincronitzes a la configuració de Chrome</translation>
+<translation id="8405633352367164037">Cor</translation>
 <translation id="8409413588194360210">gestors de pagament</translation>
 <translation id="8412145213513410671">Bloqueigs (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Heu d'introduir la mateixa frase de contrasenya dues vegades.</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 078018e..e03c2d62 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -1249,6 +1249,7 @@
 <translation id="4968522289500246572">Tato aplikace je určena pro mobily a změna velikosti nemusí fungovat správně. V aplikaci může docházet k problémům nebo se může restartovat.</translation>
 <translation id="4969341057194253438">Smazat nahrávku</translation>
 <translation id="4973922308112707173">Dvě díry nahoře</translation>
+<translation id="4976702386844183910">Naposledy navštíveno <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Použít mikrofon?</translation>
 <translation id="4984339528288761049">Prc5 (obálka)</translation>
 <translation id="4989163558385430922">Zobrazit vše</translation>
@@ -1334,6 +1335,7 @@
 <translation id="5215116848420601511">Platební metody a adresy pomocí služby Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Přihrádka 13</translation>
+<translation id="5216942107514965959">Naposledy navštíveno dnes</translation>
 <translation id="5222812217790122047">Je nutné zadat e-mail</translation>
 <translation id="5230733896359313003">Dodací adresa</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5869522115854928033">Uložená hesla</translation>
 <translation id="5873013647450402046">Banka chce potvrdit vaši totožnost.</translation>
 <translation id="5887400589839399685">Karta byla uložena</translation>
+<translation id="5887687176710214216">Naposledy navštíveno včera</translation>
 <translation id="5895138241574237353">Restartovat</translation>
 <translation id="5895187275912066135">Datum vydání</translation>
 <translation id="5901630391730855834">Žlutá</translation>
@@ -1711,6 +1714,7 @@
 <translation id="6529602333819889595">&amp;Opakovat smazání</translation>
 <translation id="6545864417968258051">Vyhledávání Bluetooth</translation>
 <translation id="6547208576736763147">Dva otvory vlevo</translation>
+<translation id="6554732001434021288">Naposledy navštíveno před <ph name="NUM_DAYS" /> dny</translation>
 <translation id="6556866813142980365">Opakovat</translation>
 <translation id="6569060085658103619">Prohlížíte si stránku rozšíření</translation>
 <translation id="6573200754375280815">Dvě díry vpravo</translation>
@@ -2277,6 +2281,7 @@
 <translation id="8390725133630534698">Sdílení ze zdroje <ph name="ORIGIN_NAME" /> do umístění <ph name="VM_NAME" /> blokuje zásada administrátora</translation>
 <translation id="8398790343843005537">Najděte svůj telefon</translation>
 <translation id="8405579342203358118">Spravujte v nastavení Chromu, jaké informace synchronizujete</translation>
+<translation id="8405633352367164037">Srdce</translation>
 <translation id="8409413588194360210">obslužné nástroje pro platby</translation>
 <translation id="8412145213513410671">Selhání (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Stejnou heslovou frázi musíte zadat dvakrát.</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index f2f54d74..6e10db3 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Denne app er udviklet til mobilenheder. Du kan muligvis ikke justere størrelsen på den uden at opleve problemer. Hvis du gør, kan der opstå fejl, eller appen kan genstarte.</translation>
 <translation id="4969341057194253438">Slet optagelse</translation>
 <translation id="4973922308112707173">To huller øverst</translation>
+<translation id="4976702386844183910">Senest besøgt <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Vil du bruge mikrofonen?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Se alle</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Betalingsmetoder og adresser, der bruger Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Bakke 13</translation>
+<translation id="5216942107514965959">Senest besøgt i dag</translation>
 <translation id="5222812217790122047">Mail påkrævet</translation>
 <translation id="5230733896359313003">Leveringsadresse</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Gemte adgangskoder</translation>
 <translation id="5873013647450402046">Din bank vil gerne bekræfte, at det er dig.</translation>
 <translation id="5887400589839399685">Kortet er gemt</translation>
+<translation id="5887687176710214216">Senest besøgt i går</translation>
 <translation id="5895138241574237353">Genstart</translation>
 <translation id="5895187275912066135">Udstedt den</translation>
 <translation id="5901630391730855834">Gul</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Annuller fortryd slet</translation>
 <translation id="6545864417968258051">Bluetooth-scanning</translation>
 <translation id="6547208576736763147">To huller i venstre side</translation>
+<translation id="6554732001434021288">Senest besøgt for <ph name="NUM_DAYS" /> dage siden</translation>
 <translation id="6556866813142980365">Gør det igen</translation>
 <translation id="6569060085658103619">Du ser en udvidelsesside</translation>
 <translation id="6573200754375280815">To huller i højre side</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">Administratorpolitikken tillader ikke, at du deler fra <ph name="ORIGIN_NAME" /> til <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Find din telefon</translation>
 <translation id="8405579342203358118">Administrer, hvilke oplysninger der skal synkroniseres, i Chrome-indstillingerne</translation>
+<translation id="8405633352367164037">Hjerte</translation>
 <translation id="8409413588194360210">betalingshandlers</translation>
 <translation id="8412145213513410671">Nedbrud (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Du skal angive den samme adgangssætning to gange.</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index 7b86bfc..44ee0f5b5 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -1251,6 +1251,7 @@
 <translation id="4968522289500246572">Diese App wurde für Mobilgeräte entwickelt. Ihre Größe kann deshalb eventuell nicht richtig angepasst werden. Außerdem können Probleme auftreten und sie wird möglicherweise neu gestartet.</translation>
 <translation id="4969341057194253438">Aufnahme löschen</translation>
 <translation id="4973922308112707173">Doppelte Lochung oben</translation>
+<translation id="4976702386844183910">Zuletzt besucht am <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Mikrofon verwenden?</translation>
 <translation id="4984339528288761049">Prc5 (Umschlag)</translation>
 <translation id="4989163558385430922">Alle ansehen</translation>
@@ -1336,6 +1337,7 @@
 <translation id="5215116848420601511">Bei Google Pay gespeicherte Zahlungsmethoden und Adressen</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Fach 13</translation>
+<translation id="5216942107514965959">Heute zuletzt besucht</translation>
 <translation id="5222812217790122047">E-Mail-Adresse erforderlich</translation>
 <translation id="5230733896359313003">Versandadresse</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1521,6 +1523,7 @@
 <translation id="5869522115854928033">Gespeicherte Passwörter</translation>
 <translation id="5873013647450402046">Ihre Bank muss Ihre Identität bestätigen.</translation>
 <translation id="5887400589839399685">Karte gespeichert</translation>
+<translation id="5887687176710214216">Gestern zuletzt besucht</translation>
 <translation id="5895138241574237353">Neu starten</translation>
 <translation id="5895187275912066135">Ausgestellt am</translation>
 <translation id="5901630391730855834">Gelb</translation>
@@ -1714,6 +1717,7 @@
 <translation id="6529602333819889595">&amp;Löschen wiederholen</translation>
 <translation id="6545864417968258051">Bluetooth-Suche</translation>
 <translation id="6547208576736763147">Doppelte Lochung links</translation>
+<translation id="6554732001434021288">Vor <ph name="NUM_DAYS" /> Tagen zuletzt besucht</translation>
 <translation id="6556866813142980365">Wiederholen</translation>
 <translation id="6569060085658103619">Dies ist eine Erweiterungsseite</translation>
 <translation id="6573200754375280815">Doppelte Lochung rechts</translation>
@@ -2281,6 +2285,7 @@
 <translation id="8390725133630534698">Die Administratorrichtlinie blockiert das Teilen von <ph name="ORIGIN_NAME" /> mit <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Mein Telefon finden</translation>
 <translation id="8405579342203358118">In den Chrome-Einstellungen verwalten, welche Informationen synchronisiert werden</translation>
+<translation id="8405633352367164037">Herz</translation>
 <translation id="8409413588194360210">Zahlungs-Handler</translation>
 <translation id="8412145213513410671">Abstürze (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Sie müssen zweimal dieselbe Passphrase eingeben.</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index 81f4884..bb6da47 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -1265,6 +1265,7 @@
 <translation id="4968522289500246572">Αυτή η εφαρμογή σχεδιάστηκε για κινητά. Συνεπώς, η αλλαγή μεγέθους μπορεί να μην λειτουργεί σωστά. Η εφαρμογή ενδέχεται να παρουσιάσει προβλήματα ή να επανεκκινηθεί.</translation>
 <translation id="4969341057194253438">Διαγραφή εγγραφής</translation>
 <translation id="4973922308112707173">Διπλό τρύπημα στο επάνω μέρος</translation>
+<translation id="4976702386844183910">Τελευταία επίσκεψη <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Χρήση μικροφώνου;</translation>
 <translation id="4984339528288761049">Prc5 (Φάκελος)</translation>
 <translation id="4989163558385430922">Εμφάνιση όλων</translation>
@@ -1350,6 +1351,7 @@
 <translation id="5215116848420601511">Τρόποι πληρωμής και διευθύνσεις που χρησιμοποιούν το Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Τροφοδότης χαρτιού 13</translation>
+<translation id="5216942107514965959">Τελευταία επίσκεψη σήμερα</translation>
 <translation id="5222812217790122047">Απαιτείται διεύθυνση ηλεκτρονικού ταχυδρομείου</translation>
 <translation id="5230733896359313003">Διεύθυνση αποστολής</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1536,6 +1538,7 @@
 <translation id="5869522115854928033">Αποθηκευμένοι κωδικοί πρόσβασης</translation>
 <translation id="5873013647450402046">Η τράπεζά σας θέλει να επιβεβαιώσει την ταυτότητά σας.</translation>
 <translation id="5887400589839399685">Η κάρτα αποθηκεύτηκε</translation>
+<translation id="5887687176710214216">Τελευταία επίσκεψη χθες</translation>
 <translation id="5895138241574237353">Επανεκκίνηση</translation>
 <translation id="5895187275912066135">Εκδόθηκε την</translation>
 <translation id="5901630391730855834">Κίτρινο</translation>
@@ -1729,6 +1732,7 @@
 <translation id="6529602333819889595">&amp;Επανάληψη διαγραφής</translation>
 <translation id="6545864417968258051">Σάρωση Bluetooth</translation>
 <translation id="6547208576736763147">Διπλό τρύπημα στα αριστερά</translation>
+<translation id="6554732001434021288">Τελευταία επίσκεψη πριν από <ph name="NUM_DAYS" /> ημέρες</translation>
 <translation id="6556866813142980365">Επανάληψη ενέργειας</translation>
 <translation id="6569060085658103619">Βλέπετε μια σελίδα επέκτασης</translation>
 <translation id="6573200754375280815">Διπλό τρύπημα στα δεξιά</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index 2343dab7..fe543ff 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">This app is designed for mobile and may not resize well. The app may experience issues or restart.</translation>
 <translation id="4969341057194253438">Delete recording</translation>
 <translation id="4973922308112707173">Dual punch top</translation>
+<translation id="4976702386844183910">Last visited <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Use microphone?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">See all</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Payment methods and addresses using Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tray 13</translation>
+<translation id="5216942107514965959">Last visited today</translation>
 <translation id="5222812217790122047">Email (required)</translation>
 <translation id="5230733896359313003">Delivery Address</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Saved passwords</translation>
 <translation id="5873013647450402046">Your bank wants to confirm that it's you.</translation>
 <translation id="5887400589839399685">Card saved</translation>
+<translation id="5887687176710214216">Last visited yesterday</translation>
 <translation id="5895138241574237353">Restart</translation>
 <translation id="5895187275912066135">Issued On</translation>
 <translation id="5901630391730855834">Yellow</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;Redo Delete</translation>
 <translation id="6545864417968258051">Bluetooth scanning</translation>
 <translation id="6547208576736763147">Dual punch left</translation>
+<translation id="6554732001434021288">Last visited <ph name="NUM_DAYS" /> days ago</translation>
 <translation id="6556866813142980365">Redo</translation>
 <translation id="6569060085658103619">You're viewing an extension page</translation>
 <translation id="6573200754375280815">Dual punch right</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index f638e53..debefb8 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -1254,6 +1254,7 @@
 <translation id="4968522289500246572">Esta app está diseñada para dispositivos móviles y es posible que el cambio de tamaño no funcione correctamente. Posiblemente la app se reiniciará o presentará problemas.</translation>
 <translation id="4969341057194253438">Borrar grabación</translation>
 <translation id="4973922308112707173">Perforación doble en la parte superior</translation>
+<translation id="4976702386844183910">Última visita: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">¿Permitir el uso del micrófono?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Ver todo</translation>
@@ -1339,6 +1340,7 @@
 <translation id="5215116848420601511">Formas de pago y direcciones con Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Bandeja 13</translation>
+<translation id="5216942107514965959">Última visita: hoy</translation>
 <translation id="5222812217790122047">Correo electrónico (obligatorio)</translation>
 <translation id="5230733896359313003">Dirección de envío</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1524,6 +1526,7 @@
 <translation id="5869522115854928033">Contraseñas almacenadas</translation>
 <translation id="5873013647450402046">El banco desea confirmar tu identidad.</translation>
 <translation id="5887400589839399685">Tarjeta guardada</translation>
+<translation id="5887687176710214216">Última visita: ayer</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5895187275912066135">Emitido el</translation>
 <translation id="5901630391730855834">Amarillo</translation>
@@ -1717,6 +1720,7 @@
 <translation id="6529602333819889595">&amp;Rehacer Eliminar</translation>
 <translation id="6545864417968258051">Búsqueda de dispositivos Bluetooth</translation>
 <translation id="6547208576736763147">Perforación doble a la izquierda</translation>
+<translation id="6554732001434021288">Última visita: hace <ph name="NUM_DAYS" /> días</translation>
 <translation id="6556866813142980365">Rehacer</translation>
 <translation id="6569060085658103619">Estás viendo la página de una extensión</translation>
 <translation id="6573200754375280815">Perforación doble a la derecha</translation>
@@ -2284,6 +2288,7 @@
 <translation id="8390725133630534698">Una política del administrador no permite compartir contenido de <ph name="ORIGIN_NAME" /> con <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Buscar teléfono</translation>
 <translation id="8405579342203358118">En la configuración de Chrome, administra qué información sincronizar</translation>
+<translation id="8405633352367164037">Corazón</translation>
 <translation id="8409413588194360210">controladores de pago</translation>
 <translation id="8412145213513410671">Fallas (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Debes ingresar la misma frase de contraseña dos veces.</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index 050d93f..46d259b 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Esta aplicación se ha diseñado para móviles y es posible que su tamaño no se cambie correctamente. Puede que la aplicación dé problemas o se reinicie.</translation>
 <translation id="4969341057194253438">Eliminar grabación</translation>
 <translation id="4973922308112707173">Perforado doble en la parte superior</translation>
+<translation id="4976702386844183910">Última visita: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">¿Usar micrófono?</translation>
 <translation id="4984339528288761049">Prc5 (sobre)</translation>
 <translation id="4989163558385430922">Ver todo</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Métodos de pago y direcciones con Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Bandeja 13</translation>
+<translation id="5216942107514965959">Última visita: hoy</translation>
 <translation id="5222812217790122047">Correo electrónico obligatorio</translation>
 <translation id="5230733896359313003">Dirección de envío</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Contraseñas guardadas</translation>
 <translation id="5873013647450402046">Tu banco quiere confirmar tu identidad.</translation>
 <translation id="5887400589839399685">Tarjeta guardada</translation>
+<translation id="5887687176710214216">Última visita: ayer</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5895187275912066135">Emitido el</translation>
 <translation id="5901630391730855834">Amarillo</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Rehacer eliminación</translation>
 <translation id="6545864417968258051">Búsqueda de dispositivos Bluetooth</translation>
 <translation id="6547208576736763147">Perforado doble en la parte izquierda</translation>
+<translation id="6554732001434021288">Última visita: hace <ph name="NUM_DAYS" /> días</translation>
 <translation id="6556866813142980365">Rehacer</translation>
 <translation id="6569060085658103619">Estas viendo la página de una extensión</translation>
 <translation id="6573200754375280815">Perforado doble en la parte derecha</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">La política del administrador no permite compartir entre <ph name="ORIGIN_NAME" /> y <ph name="VM_NAME" />.</translation>
 <translation id="8398790343843005537">Buscar tu teléfono</translation>
 <translation id="8405579342203358118">Gestiona la información que sincronizas en la configuración de Chrome</translation>
+<translation id="8405633352367164037">Corazón</translation>
 <translation id="8409413588194360210">controladores de pago</translation>
 <translation id="8412145213513410671">Fallos (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Debes introducir la misma frase de contraseña dos veces.</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index e621f80bb..de4a336 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">Rakendus on loodud mobiilseadmetele ja selle suuruse muutmine võib rakendusele halvasti mõjuda. Rakenduse töös võib esineda probleeme või rakendus võib taaskäivituda.</translation>
 <translation id="4969341057194253438">Kustuta salvestis</translation>
 <translation id="4973922308112707173">Kaks auku ülal</translation>
+<translation id="4976702386844183910">Viimati külastati <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Kas kasutada mikrofoni?</translation>
 <translation id="4984339528288761049">Prc5 (ümbrik)</translation>
 <translation id="4989163558385430922">Kuva kõik</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Makseviisid ja aadressid, mis kasutavad teenust Google Pay.</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Salv 13</translation>
+<translation id="5216942107514965959">Viimati külastati täna</translation>
 <translation id="5222812217790122047">E-posti aadress on nõutav</translation>
 <translation id="5230733896359313003">Tarneaadress</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Salvestatud paroolid</translation>
 <translation id="5873013647450402046">Teie pank soovib teie isikut kinnitada.</translation>
 <translation id="5887400589839399685">Kaart on salvestatud</translation>
+<translation id="5887687176710214216">Viimati külastati eile</translation>
 <translation id="5895138241574237353">Taaskäivitamine</translation>
 <translation id="5895187275912066135">Väljastamiskuupäev</translation>
 <translation id="5901630391730855834">Kollane</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;Kustuta uuesti</translation>
 <translation id="6545864417968258051">Bluetoothi otsimine</translation>
 <translation id="6547208576736763147">Kaks auku vasakul</translation>
+<translation id="6554732001434021288">Viimati külastati <ph name="NUM_DAYS" /> päeva tagasi</translation>
 <translation id="6556866813142980365">Tee uuesti</translation>
 <translation id="6569060085658103619">Vaatate laienduse lehte</translation>
 <translation id="6573200754375280815">Kaks auku paremal</translation>
@@ -2291,6 +2295,7 @@
 <translation id="8390725133630534698">Saidilt <ph name="ORIGIN_NAME" /> virtuaalmasinaga <ph name="VM_NAME" /> jagamine on administraatori reegliga blokeeritud</translation>
 <translation id="8398790343843005537">Otsi telefoni</translation>
 <translation id="8405579342203358118">Hallake Chrome'i seadetes, millist teavet sünkroonite</translation>
+<translation id="8405633352367164037">Süda</translation>
 <translation id="8409413588194360210">maksetöötlejad</translation>
 <translation id="8412145213513410671">Krahhid (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Peate sisestama sama parooli kaks korda.</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb
index 5f30f49..6b824ee 100644
--- a/components/strings/components_strings_eu.xtb
+++ b/components/strings/components_strings_eu.xtb
@@ -1249,6 +1249,7 @@
 <translation id="4968522289500246572">Mugikorretan erabiltzeko dago diseinatuta aplikazioa, eta agian ez da behar bezala aldatuko tamaina. Litekeena da aplikazioak arazoak izatea edo berrabiaraztea.</translation>
 <translation id="4969341057194253438">Ezabatu grabaketa</translation>
 <translation id="4973922308112707173">Bi zulo goian</translation>
+<translation id="4976702386844183910">Azken bisita: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Mikrofonoa erabili nahi duzu?</translation>
 <translation id="4984339528288761049">Prc5 (gutun-azala)</translation>
 <translation id="4989163558385430922">Ikusi guztiak</translation>
@@ -1334,6 +1335,7 @@
 <translation id="5215116848420601511">Google Pay-rekin erabiltzen dituzun ordainketa-metodoak eta helbideak</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">13. erretilua</translation>
+<translation id="5216942107514965959">Gaur bisitatu duzu azkenengoz</translation>
 <translation id="5222812217790122047">Nahitaez zehaztu behar duzu helbide elektronikoa</translation>
 <translation id="5230733896359313003">Bidalketa-helbidea</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5869522115854928033">Gordetako pasahitzak</translation>
 <translation id="5873013647450402046">Bankuak zeu zarela berretsi nahi du.</translation>
 <translation id="5887400589839399685">Gorde da txartela</translation>
+<translation id="5887687176710214216">Atzo bisitatu zenuen azkenengoz</translation>
 <translation id="5895138241574237353">Berrabiarazi</translation>
 <translation id="5895187275912066135">Jaulkitze-data</translation>
 <translation id="5901630391730855834">Horia</translation>
@@ -1711,6 +1714,7 @@
 <translation id="6529602333819889595">&amp;Berregin ezabatzea</translation>
 <translation id="6545864417968258051">Bluetooth bidezko gailuen bilaketa</translation>
 <translation id="6547208576736763147">Bi zulo ezkerrean</translation>
+<translation id="6554732001434021288">Duela <ph name="NUM_DAYS" /> egun bisitatu zenuen azkenengoz</translation>
 <translation id="6556866813142980365">Berregin</translation>
 <translation id="6569060085658103619">Luzapen baten orria ari zara ikusten</translation>
 <translation id="6573200754375280815">Bi zulo eskuinean</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index 74082f2..8580f7b 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">این برنامه برای تلفن همراه طراحی شده است و ممکن است با تغییر اندازه سازگار نباشد. برنامه ممکن است با مشکلاتی روبرو شود یا بازراه‌اندازی شود.</translation>
 <translation id="4969341057194253438">حذف ویدیوی ضبط‌شده</translation>
 <translation id="4973922308112707173">دو سوراخ در بالا</translation>
+<translation id="4976702386844183910">آخرین بازدید: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">از میکروفون استفاده شود؟</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">دیدن همه</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">‏روش‌های پرداخت و نشانی‌های مورداستفاده در Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">سینی ۱۳</translation>
+<translation id="5216942107514965959">آخرین بازدید: امروز</translation>
 <translation id="5222812217790122047">ایمیل ضروری است</translation>
 <translation id="5230733896359313003">نشانی تحویل کالا</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">گذرواژه‌های ذخیره‌شده</translation>
 <translation id="5873013647450402046">بانکتان می‌خواهد هویت شما را تأیید کند.</translation>
 <translation id="5887400589839399685">کارت ذخیره‌ شد</translation>
+<translation id="5887687176710214216">آخرین بازدید: دیروز</translation>
 <translation id="5895138241574237353">راه‌اندازی مجدد</translation>
 <translation id="5895187275912066135">تاریخ صدور</translation>
 <translation id="5901630391730855834">زرد</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;انجام مجدد حذف</translation>
 <translation id="6545864417968258051">اسکن کردن بلوتوث</translation>
 <translation id="6547208576736763147">دو سوراخ در چپ</translation>
+<translation id="6554732001434021288">آخرین بازدید: <ph name="NUM_DAYS" /> روز پیش</translation>
 <translation id="6556866813142980365">انجام مجدد</translation>
 <translation id="6569060085658103619">درحال مشاهده یک صفحه افزونه هستید</translation>
 <translation id="6573200754375280815">دو سوراخ در راست</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index 8908402..e87f7b5 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -1263,6 +1263,7 @@
 <translation id="4968522289500246572">Sovellus on suunniteltu mobiililaitteille eikä se ehkä näy oikein, jos muutat sen kokoa. Sovellus voi käynnistyä uudelleen tai siinä voi esiintyä ongelmia.</translation>
 <translation id="4969341057194253438">Poista tallenne</translation>
 <translation id="4973922308112707173">Kaksi reikää yläreunassa</translation>
+<translation id="4976702386844183910">Viimeksi avattu <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Käytetäänkö mikrofonia?</translation>
 <translation id="4984339528288761049">Prc5 (kirjekuori)</translation>
 <translation id="4989163558385430922">Näytä kaikki</translation>
@@ -1348,6 +1349,7 @@
 <translation id="5215116848420601511">Maksutavat ja osoitteet Google Paysta</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Lokero 13</translation>
+<translation id="5216942107514965959">Viimeksi avattu tänään</translation>
 <translation id="5222812217790122047">Sähköposti vaaditaan</translation>
 <translation id="5230733896359313003">Toimitusosoite</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1533,6 +1535,7 @@
 <translation id="5869522115854928033">Tallennetut salasanat</translation>
 <translation id="5873013647450402046">Pankkisi edellyttää henkilöllisyytesi vahvistamista.</translation>
 <translation id="5887400589839399685">Kortti tallennettu</translation>
+<translation id="5887687176710214216">Avattu viimeksi eilen</translation>
 <translation id="5895138241574237353">Käynnistä uudelleen</translation>
 <translation id="5895187275912066135">Myönnetty</translation>
 <translation id="5901630391730855834">Keltainen</translation>
@@ -1726,6 +1729,7 @@
 <translation id="6529602333819889595">&amp;Toista poisto</translation>
 <translation id="6545864417968258051">Bluetooth-haku</translation>
 <translation id="6547208576736763147">Kaksi reikää vasemmalla</translation>
+<translation id="6554732001434021288">Viimeksi avattu <ph name="NUM_DAYS" /> päivää sitten</translation>
 <translation id="6556866813142980365">Tee uudelleen</translation>
 <translation id="6569060085658103619">Tämä on laajennussivu.</translation>
 <translation id="6573200754375280815">Kaksi reikää oikealla</translation>
@@ -2293,6 +2297,7 @@
 <translation id="8390725133630534698">Järjestelmänvalvojakäytäntö on estänyt jakamisen (lähde: <ph name="ORIGIN_NAME" />, kohde: <ph name="VM_NAME" />)</translation>
 <translation id="8398790343843005537">Etsi puhelimesi</translation>
 <translation id="8405579342203358118">Valitse synkronoitavat tiedot Chromen asetuksista</translation>
+<translation id="8405633352367164037">Sydän</translation>
 <translation id="8409413588194360210">maksujen käsittelijät</translation>
 <translation id="8412145213513410671">Kaatumiset (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Kirjoita sama tunnuslause kahdesti.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index dfa3b25..98e2d6b0 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Idinisenyo ang app na ito para sa mobile at posibleng hindi ma-resize nang maayos. Posibleng makaranas ng mga isyu o mag-restart ang app.</translation>
 <translation id="4969341057194253438">I-delete ang recording</translation>
 <translation id="4973922308112707173">Dual punch top</translation>
+<translation id="4976702386844183910">Huling binisita noong <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Gamitin ang mikropono?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Tingnan lahat</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Mga paraan ng pagbabayad at address gamit ang Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tray 13</translation>
+<translation id="5216942107514965959">Huling binisita ngayong araw</translation>
 <translation id="5222812217790122047">Kailangan ng email</translation>
 <translation id="5230733896359313003">Address na Padadalhan</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Mga naka-save na password</translation>
 <translation id="5873013647450402046">Gustong kumpirmahin ng iyong bangko na ikaw ito.</translation>
 <translation id="5887400589839399685">Na-save ang card</translation>
+<translation id="5887687176710214216">Huling binisita kahapon</translation>
 <translation id="5895138241574237353">I-restart</translation>
 <translation id="5895187275912066135">Ibinigay Noong</translation>
 <translation id="5901630391730855834">Dilaw</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Gawing Muli ang Pagtanggal</translation>
 <translation id="6545864417968258051">Pag-scan ng Bluetooth</translation>
 <translation id="6547208576736763147">Dual punch left</translation>
+<translation id="6554732001434021288">Huling binisita <ph name="NUM_DAYS" /> (na) araw ang nakalipas</translation>
 <translation id="6556866813142980365">Redo</translation>
 <translation id="6569060085658103619">Isang page ng extension ang tinitingnan mo</translation>
 <translation id="6573200754375280815">Dual punch right</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">Na-block ng patakaran ng administrator ang pagbabahagi sa <ph name="VM_NAME" /> mula sa <ph name="ORIGIN_NAME" /></translation>
 <translation id="8398790343843005537">Hanapin ang iyong telepono</translation>
 <translation id="8405579342203358118">Pamahalaan kung anong impormasyon ang isi-sync mo sa mga setting ng Chrome</translation>
+<translation id="8405633352367164037">Puso</translation>
 <translation id="8409413588194360210">mga tagapangasiwa ng pagbabayad</translation>
 <translation id="8412145213513410671">Mga Pag-crash (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Dapat mong ilagay ang parehong passphrase nang dalawang beses.</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb
index e4ee89f7..6e12bc6 100644
--- a/components/strings/components_strings_fr-CA.xtb
+++ b/components/strings/components_strings_fr-CA.xtb
@@ -176,6 +176,7 @@
 <translation id="1472675084647422956">Plus</translation>
 <translation id="1473183651233018052">JIS B10</translation>
 <translation id="147358896496811705">2A0</translation>
+<translation id="1475299637784133125">Vous recherchez la version du navigateur? Consultez</translation>
 <translation id="1476595624592550506">Modifiez votre mot de passe</translation>
 <translation id="1483493594462132177">Envoi</translation>
 <translation id="1484290072879560759">Choisir une adresse d'expédition</translation>
@@ -1252,6 +1253,7 @@
 <translation id="4968522289500246572">Cette application est développée pour les appareils mobiles et elle ne sera peut-être pas bien redimensionnée. L'application peut rencontrer des problèmes ou redémarrer.</translation>
 <translation id="4969341057194253438">Supprimer l'enregistrement</translation>
 <translation id="4973922308112707173">Double perforation en haut</translation>
+<translation id="4976702386844183910">Dernière visite : <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Utiliser le microphone?</translation>
 <translation id="4984339528288761049">Enveloppe Prc5</translation>
 <translation id="4989163558385430922">Tout afficher</translation>
@@ -1337,6 +1339,7 @@
 <translation id="5215116848420601511">Modes de paiement et adresses utilisant Google Pay</translation>
 <translation id="5215363486134917902">Folio SP</translation>
 <translation id="521659676233207110">Bac 13</translation>
+<translation id="5216942107514965959">Dernière visite : aujourd'hui</translation>
 <translation id="5222812217790122047">Adresse de courriel obligatoire</translation>
 <translation id="5230733896359313003">Adresse de livraison</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1522,6 +1525,7 @@
 <translation id="5869522115854928033">Mots de passe enregistrés</translation>
 <translation id="5873013647450402046">Votre banque veut confirmer votre identité.</translation>
 <translation id="5887400589839399685">Carte enregistrée</translation>
+<translation id="5887687176710214216">Dernière visite : hier.</translation>
 <translation id="5895138241574237353">Redémarrer</translation>
 <translation id="5895187275912066135">Émis le :</translation>
 <translation id="5901630391730855834">Jaune</translation>
@@ -1715,6 +1719,7 @@
 <translation id="6529602333819889595">&amp;Rétablir la suppression</translation>
 <translation id="6545864417968258051">Recherche d'appareils Bluetooth</translation>
 <translation id="6547208576736763147">Double perforation à gauche</translation>
+<translation id="6554732001434021288">Dernière visite il y a <ph name="NUM_DAYS" /> jours</translation>
 <translation id="6556866813142980365">Rétablir</translation>
 <translation id="6569060085658103619">Vous consultez une page d'extension</translation>
 <translation id="6573200754375280815">Double perforation à droite</translation>
@@ -1877,6 +1882,7 @@
 <translation id="7118618213916969306">Rechercher l'URL du presse-papiers : <ph name="SHORT_URL" /></translation>
 <translation id="7119414471315195487">Fermer les autres onglets ou programmes</translation>
 <translation id="7129409597930077180">Impossible d'effectuer une livraison à cette adresse. Sélectionnez une autre adresse.</translation>
+<translation id="7132939140423847331">Votre administrateur a interdit la copie de ces données.</translation>
 <translation id="7135130955892390533">Afficher l’état</translation>
 <translation id="7138472120740807366">Mode de livraison rapide</translation>
 <translation id="7139724024395191329">Émirat</translation>
@@ -2435,6 +2441,7 @@
 <translation id="8987245424886630962"><ph name="VIEW_CHROME_HISTORY_FOCUSED_FRIENDLY_MATCH_TEXT" />, appuyez sur la touche Tabulation, puis sur la touche Entrée pour afficher votre historique de navigation dans Chrome</translation>
 <translation id="8987927404178983737">Mois</translation>
 <translation id="8989148748219918422"><ph name="ORGANIZATION" /> [<ph name="COUNTRY" />]</translation>
+<translation id="8992061558343343009">Vous recherchez la version du système? Consultez</translation>
 <translation id="899688752321268742"><ph name="URL" /> veut savoir si vous êtes en train d'utiliser cet appareil</translation>
 <translation id="8996941253935762404">Le site Web que vous allez ouvrir contient des logiciels malveillants</translation>
 <translation id="8997023839087525404">Le serveur a présenté un certificat qui n'a pas été divulgué publiquement par l'intermédiaire de la politique Certificate Transparency. Il s'agit d'une exigence pour certains certificats, afin d'assurer qu'ils sont dignes de confiance et qu'ils offrent une protection contre les attaques.</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index f8f88ba..100bd99 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Cette appli est conçue pour les mobiles et ne sera peut-être pas bien redimensionnée. Elle pourrait rencontrer des problèmes ou redémarrer.</translation>
 <translation id="4969341057194253438">Supprimer l'enregistrement</translation>
 <translation id="4973922308112707173">Double perforation en haut</translation>
+<translation id="4976702386844183910">Dernière visite : <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Utiliser le micro ?</translation>
 <translation id="4984339528288761049">Prc5 (enveloppe)</translation>
 <translation id="4989163558385430922">Tout afficher</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Modes de paiement et adresses utilisés dans Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Bac 13</translation>
+<translation id="5216942107514965959">Dernière visite : aujourd'hui</translation>
 <translation id="5222812217790122047">Veuillez saisir une adresse e-mail</translation>
 <translation id="5230733896359313003">Adresse de livraison</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Mots de passe enregistrés</translation>
 <translation id="5873013647450402046">Vous devez confirmer votre identité auprès de votre banque.</translation>
 <translation id="5887400589839399685">Carte enregistrée</translation>
+<translation id="5887687176710214216">Dernière visite : hier</translation>
 <translation id="5895138241574237353">Redémarrer</translation>
 <translation id="5895187275912066135">Émis le</translation>
 <translation id="5901630391730855834">Jaune</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Rétablir la suppression</translation>
 <translation id="6545864417968258051">Recherche Bluetooth</translation>
 <translation id="6547208576736763147">Double perforation à gauche</translation>
+<translation id="6554732001434021288">Dernière visite : il y a <ph name="NUM_DAYS" /> jours</translation>
 <translation id="6556866813142980365">Rétablir</translation>
 <translation id="6569060085658103619">Vous consultez actuellement une page d'extension</translation>
 <translation id="6573200754375280815">Double perforation à droite</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb
index a46959e9..f29127cd 100644
--- a/components/strings/components_strings_gl.xtb
+++ b/components/strings/components_strings_gl.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">Esta aplicación está deseñada para dispositivos móbiles e pode que non cambie ben de tamaño. É posible que se reinicie ou que se produza algún problema co seu funcionamento.</translation>
 <translation id="4969341057194253438">Eliminar gravación</translation>
 <translation id="4973922308112707173">Dúas perforacións na parte superior</translation>
+<translation id="4976702386844183910">Visitouse o <ph name="DATE" /> por última vez</translation>
 <translation id="4984088539114770594">Queres utilizar o micrófono?</translation>
 <translation id="4984339528288761049">Prc5 (sobre)</translation>
 <translation id="4989163558385430922">Ver todo</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Métodos de pago e enderezos que usan Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Bandexa 13</translation>
+<translation id="5216942107514965959">Visitouse hoxe por última vez</translation>
 <translation id="5222812217790122047">É obrigatorio introducir o correo electrónico</translation>
 <translation id="5230733896359313003">Enderezo de envío</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Contrasinais gardados</translation>
 <translation id="5873013647450402046">O teu banco quere confirmar a túa identidade.</translation>
 <translation id="5887400589839399685">Gardouse a tarxeta</translation>
+<translation id="5887687176710214216">Visitouse onte por última vez</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5895187275912066135">Emitido o</translation>
 <translation id="5901630391730855834">Amarelo</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;Refacer eliminación</translation>
 <translation id="6545864417968258051">Busca de dispositivos Bluetooth</translation>
 <translation id="6547208576736763147">Dúas perforacións na parte esquerda</translation>
+<translation id="6554732001434021288">Visitouse hai <ph name="NUM_DAYS" /> días por última vez</translation>
 <translation id="6556866813142980365">Refacer</translation>
 <translation id="6569060085658103619">Estás vendo unha páxina de extensións</translation>
 <translation id="6573200754375280815">Dúas perforacións na parte dereita</translation>
@@ -2291,6 +2295,7 @@
 <translation id="8390725133630534698">A política do administrador bloqueou a función de compartir contido desde <ph name="ORIGIN_NAME" /> a <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Atopa o teu teléfono</translation>
 <translation id="8405579342203358118">Xestiona na configuración de Chrome a información que se sincroniza</translation>
+<translation id="8405633352367164037">Corazón</translation>
 <translation id="8409413588194360210">indicadores de pago</translation>
 <translation id="8412145213513410671">Erros (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Debes introducir a mesma frase de acceso dúas veces.</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 6dfbf69..9c9f05a 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">આ ઍપ મોબાઇલ માટે બનાવવામાં આવી છે અને કદાચ તે યોગ્ય રીતે કદ બદલી શકશે નહીં. ઍપમાં સમસ્યાઓ આવી શકે છે અથવા તે ફરી શરૂ થઈ શકે છે.</translation>
 <translation id="4969341057194253438">રેકોર્ડિંગ ડિલીટ કરો</translation>
 <translation id="4973922308112707173">ઉપરની બાજુએ બે કાણાં પાડો</translation>
+<translation id="4976702386844183910">છેલ્લે <ph name="DATE" />ના રોજ મુલાકાત લીધી</translation>
 <translation id="4984088539114770594">માઇક્રોફોનનો ઉપયોગ કરીએ?</translation>
 <translation id="4984339528288761049">Prc5 (એન્વલપ)</translation>
 <translation id="4989163558385430922">બધા જુઓ</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Google Payનો ઉપયોગ કરતી ચુકવણી પદ્ધતિઓ અને ઍડ્રેસ</translation>
 <translation id="5215363486134917902">ફોલિયો-Sp</translation>
 <translation id="521659676233207110">ટ્રે 13</translation>
+<translation id="5216942107514965959">છેલ્લે આજે મુલાકાત લીધી</translation>
 <translation id="5222812217790122047">ઇમેઇલ આવશ્યક છે</translation>
 <translation id="5230733896359313003">વિતરણ માટેનું સરનામું</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">સાચવેલા પાસવર્ડ્સ</translation>
 <translation id="5873013647450402046">તમારી બેંક કન્ફર્મ કરવા માગે છે કે આ તમે જ છો.</translation>
 <translation id="5887400589839399685">કાર્ડ સાચવ્યું</translation>
+<translation id="5887687176710214216">છેલ્લે કાલે મુલાકાત લીધી</translation>
 <translation id="5895138241574237353">પુનઃપ્રારંભ કરો</translation>
 <translation id="5895187275912066135">ના રોજ રજૂ કરાયું</translation>
 <translation id="5901630391730855834">પીળો</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;ફરી કરો ડિલીટ કરો</translation>
 <translation id="6545864417968258051">બ્લૂટૂથ સ્કૅનિંગ</translation>
 <translation id="6547208576736763147">ડાબી બાજુએ બે ચતુષ્કોણ કાણાં પાડો</translation>
+<translation id="6554732001434021288">છેલ્લે <ph name="NUM_DAYS" /> દિવસ પહેલાં મુલાકાત લીધી</translation>
 <translation id="6556866813142980365">ફરી કરો</translation>
 <translation id="6569060085658103619">તમે એક્સ્ટેન્શન પેજ જોઈ રહ્યાં છો</translation>
 <translation id="6573200754375280815">જમણી બાજુએ બે કાણાં પાડો</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index 227fbaf..5d161fc 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">यह ऐप्लिकेशन, मोबाइल के लिए डिज़ाइन किया गया है और हो सकता है कि इसका डिसप्ले, डिवाइस के विंडो साइज़ के हिसाब से न बदले. इस ऐप्लिकेशन को इस्तेमाल करते समय आपको समस्याओं का सामना करना पड़ सकता है या इसे रीस्टार्ट करना पड़ सकता है.</translation>
 <translation id="4969341057194253438">रिकॉर्डिंग मिटाएं</translation>
 <translation id="4973922308112707173">सबसे ऊपर ड्युएल पंच</translation>
+<translation id="4976702386844183910">पिछली बार <ph name="DATE" /> को देखा गया</translation>
 <translation id="4984088539114770594">क्या आप माइक्रोफ़ोन का इस्तेमाल करना चाहते हैं?</translation>
 <translation id="4984339528288761049">पीआरसी5 (एन्वेलप)</translation>
 <translation id="4989163558385430922">सभी देखें</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Google Pay का इस्तेमाल करने वाले भुगतान के तरीके और पते</translation>
 <translation id="5215363486134917902">फ़ोलियो-एसपी</translation>
 <translation id="521659676233207110">ट्रे 13</translation>
+<translation id="5216942107514965959">साइट पर पिछली बार आज गए</translation>
 <translation id="5222812217790122047">ईमेल आवश्यक है</translation>
 <translation id="5230733896359313003">शिपिंग पता</translation>
 <translation id="5230815978613972521">बी8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">सेव किए गए पासवर्ड</translation>
 <translation id="5873013647450402046">बैंक आपकी पहचान की पुष्टि करना चाहता है.</translation>
 <translation id="5887400589839399685">कार्ड सेव किया गया</translation>
+<translation id="5887687176710214216">साइट पर पिछली बार कल गए</translation>
 <translation id="5895138241574237353">फिर से प्रारंभ करें</translation>
 <translation id="5895187275912066135">जारी करने की तारीख</translation>
 <translation id="5901630391730855834">पीला</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">मिटाना &amp;फिर से करें</translation>
 <translation id="6545864417968258051">ब्लूटूथ स्कैन करना</translation>
 <translation id="6547208576736763147">बाईं ओर ड्युएल पंच</translation>
+<translation id="6554732001434021288">साइट पर पिछली बार <ph name="NUM_DAYS" /> दिन पहले गए</translation>
 <translation id="6556866813142980365">फिर से करें</translation>
 <translation id="6569060085658103619">आप एक एक्सटेंशन पेज देख रहे हैं</translation>
 <translation id="6573200754375280815">दाईं ओर ड्युएल पंच</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698"><ph name="ORIGIN_NAME" /> से <ph name="VM_NAME" /> पर क्लिपबोर्ड डेटा शेयर करने की सुविधा को आपके एडमिन ने ब्लॉक कर दिया है</translation>
 <translation id="8398790343843005537">अपना फ़ोन ढूंढें</translation>
 <translation id="8405579342203358118">Chrome की सेटिंग में आप जो जानकारी सिंक करते हैं उसे मैनेज करें</translation>
+<translation id="8405633352367164037">दिल का आइकॉन</translation>
 <translation id="8409413588194360210">पेमेंट हैंडलर</translation>
 <translation id="8412145213513410671">क्रैश (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">आपको वही 'पासफ़्रेज़' दोबारा दर्ज करना होगा.</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index faea003..7eb2d89 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Ova je aplikacija izrađena za mobilne uređaje i možda neće dobro promijeniti veličinu. Aplikacija može imati poteškoća ili se može pokrenuti ponovo.</translation>
 <translation id="4969341057194253438">Izbriši snimku</translation>
 <translation id="4973922308112707173">Dvostruko bušenje pri vrhu</translation>
+<translation id="4976702386844183910">Posljednji posjet bio je <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Koristiti mikrofon?</translation>
 <translation id="4984339528288761049">Prc5 (omotnica)</translation>
 <translation id="4989163558385430922">Prikaži sve</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Načini plaćanja i adrese s Google Paya</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Ladica 13</translation>
+<translation id="5216942107514965959">Posljednji posjet bio je danas</translation>
 <translation id="5222812217790122047">E-pošta (obavezno)</translation>
 <translation id="5230733896359313003">Adresa za dostavu</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Spremljene zaporke</translation>
 <translation id="5873013647450402046">Vaša banka želi potvrditi vaš identitet.</translation>
 <translation id="5887400589839399685">Kartica je spremljena</translation>
+<translation id="5887687176710214216">Posljednji posjet bio je jučer</translation>
 <translation id="5895138241574237353">Ponovno pokreni</translation>
 <translation id="5895187275912066135">Izdano</translation>
 <translation id="5901630391730855834">Žuta</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Ponovi brisanje</translation>
 <translation id="6545864417968258051">Traženje Bluetootha</translation>
 <translation id="6547208576736763147">Dvostruko bušenje s lijeve strane</translation>
+<translation id="6554732001434021288">Posljednji posjet bio je prije <ph name="NUM_DAYS" /> dana</translation>
 <translation id="6556866813142980365">Ponovi</translation>
 <translation id="6569060085658103619">Gledate stranicu proširenja</translation>
 <translation id="6573200754375280815">Dvostruko bušenje s desne strane</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index 0929024..7bc7c33 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -1260,6 +1260,7 @@
 <translation id="4968522289500246572">Ez az alkalmazás mobileszközökre készült, átméretezése nem feltétlenül működik megfelelően. Az alkalmazásnál problémák merülhetnek fel, esetleges újraindítása szükséges.</translation>
 <translation id="4969341057194253438">Felvétel törlése</translation>
 <translation id="4973922308112707173">Két lyuk felül</translation>
+<translation id="4976702386844183910">Utolsó látogatás: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Engedélyezi a mikrofon használatát?</translation>
 <translation id="4984339528288761049">Prc5 (boríték)</translation>
 <translation id="4989163558385430922">Összes megtekintése</translation>
@@ -1345,6 +1346,7 @@
 <translation id="5215116848420601511">A Google Pay szolgáltatásban használt fizetési módok és címek</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">13. tálca</translation>
+<translation id="5216942107514965959">Utolsó látogatás: ma</translation>
 <translation id="5222812217790122047">Az e-mail-cím megadása kötelező</translation>
 <translation id="5230733896359313003">Szállítási cím</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1530,6 +1532,7 @@
 <translation id="5869522115854928033">Mentett jelszavak</translation>
 <translation id="5873013647450402046">Bankja szeretné, ha megerősítené személyazonosságát.</translation>
 <translation id="5887400589839399685">Kártya elmentve</translation>
+<translation id="5887687176710214216">Utolsó látogatás: tegnap</translation>
 <translation id="5895138241574237353">Újraindítás</translation>
 <translation id="5895187275912066135">Kiállítva</translation>
 <translation id="5901630391730855834">Sárga</translation>
@@ -1723,6 +1726,7 @@
 <translation id="6529602333819889595">&amp;Törlés újra</translation>
 <translation id="6545864417968258051">Bluetooth-alapú keresés</translation>
 <translation id="6547208576736763147">Kettő lyuk a bal oldalon</translation>
+<translation id="6554732001434021288">Utolsó látogatás: <ph name="NUM_DAYS" /> napja</translation>
 <translation id="6556866813142980365">Újra</translation>
 <translation id="6569060085658103619">Jelenleg bővítményoldalt tekint meg</translation>
 <translation id="6573200754375280815">Kettő lyuk a jobb oldalon</translation>
@@ -2290,6 +2294,7 @@
 <translation id="8390725133630534698">Rendszergazdai házirend tiltja a tartalmak megosztását innen: <ph name="ORIGIN_NAME" />, ide: <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">A telefonja megkeresése</translation>
 <translation id="8405579342203358118">A különféle adattípusok kezelése a Chrome-beállítások között</translation>
+<translation id="8405633352367164037">Szív</translation>
 <translation id="8409413588194360210">fizetéskezelők</translation>
 <translation id="8412145213513410671">Rendszerösszeomlások ( <ph name="CRASH_COUNT" /> )</translation>
 <translation id="8412392972487953978">Mindkét alkalommal ugyanazt az összetett jelszót kell megadnia.</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb
index 27cf6ccf..974678e 100644
--- a/components/strings/components_strings_hy.xtb
+++ b/components/strings/components_strings_hy.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Այս հավելվածը նախատեսված է բջջային սարքերի համար։ Չափը փոխելուց հետո հավելվածը կարող է սխալներով աշխատել։</translation>
 <translation id="4969341057194253438">Ջնջել տեսաագրությունը</translation>
 <translation id="4973922308112707173">Երկու անցք վերևում</translation>
+<translation id="4976702386844183910">Վերջին այցելությունը՝ <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Օգտագործե՞լ խոսափողը</translation>
 <translation id="4984339528288761049">Prc5 (ծրար)</translation>
 <translation id="4989163558385430922">Տեսնել բոլորը</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Վճարման եղանակներ ու հասցեներ Google Pay-ից</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Դարակ 13</translation>
+<translation id="5216942107514965959">Վերջին այցելությունը՝ այսօր</translation>
 <translation id="5222812217790122047">Էլ․ հասցեն պարտադիր է</translation>
 <translation id="5230733896359313003">Առաքման հասցե</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Պահված գաղտնաբառեր</translation>
 <translation id="5873013647450402046">Ձեր բանկը պետք է հաստատի ձեր ինքնությունը։</translation>
 <translation id="5887400589839399685">Քարտը պահվեց</translation>
+<translation id="5887687176710214216">Վերջին այցելությունը՝ երեկ</translation>
 <translation id="5895138241574237353">Վերագործարկել</translation>
 <translation id="5895187275912066135">Թողարկված է՝</translation>
 <translation id="5901630391730855834">Դեղին</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Վերարկել ջնջումը</translation>
 <translation id="6545864417968258051">Bluetooth սարքերի որոնում</translation>
 <translation id="6547208576736763147">Երկու անցք ձախ կողմում</translation>
+<translation id="6554732001434021288">Վերջին այցելությունը՝ <ph name="NUM_DAYS" /> օր առաջ</translation>
 <translation id="6556866813142980365">Կրկնել</translation>
 <translation id="6569060085658103619">Դուք դիտում եք ընդլայնման էջը</translation>
 <translation id="6573200754375280815">Երկու անցք աջ կողմում</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 2cb16216..2b65024 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -1252,6 +1252,7 @@
 <translation id="4968522289500246572">Aplikasi ini didesain untuk perangkat seluler dan perubahan ukurannya mungkin tidak sesuai. Perangkat dapat mengalami masalah atau dimulai ulang.</translation>
 <translation id="4969341057194253438">Hapus rekaman</translation>
 <translation id="4973922308112707173">Dua lubang di atas</translation>
+<translation id="4976702386844183910">Terakhir dibuka <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Gunakan mikrofon?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Lihat semua</translation>
@@ -1337,6 +1338,7 @@
 <translation id="5215116848420601511">Metode pembayaran dan alamat yang menggunakan Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Baki 13</translation>
+<translation id="5216942107514965959">Terakhir dibuka hari ini</translation>
 <translation id="5222812217790122047">Email wajib diisi</translation>
 <translation id="5230733896359313003">Alamat Pengiriman</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1522,6 +1524,7 @@
 <translation id="5869522115854928033">Sandi tersimpan</translation>
 <translation id="5873013647450402046">Bank Anda ingin memastikan bahwa ini memang Anda.</translation>
 <translation id="5887400589839399685">Kartu disimpan</translation>
+<translation id="5887687176710214216">Terakhir dibuka kemarin</translation>
 <translation id="5895138241574237353">Mulai Ulang</translation>
 <translation id="5895187275912066135">Diterbitkan Pada</translation>
 <translation id="5901630391730855834">Kuning</translation>
@@ -1715,6 +1718,7 @@
 <translation id="6529602333819889595">&amp;Ulangi Penghapusan</translation>
 <translation id="6545864417968258051">Pemindaian Bluetooth</translation>
 <translation id="6547208576736763147">Dua lubang di kiri</translation>
+<translation id="6554732001434021288">Terakhir dibuka <ph name="NUM_DAYS" /> hari lalu</translation>
 <translation id="6556866813142980365">Urungkan</translation>
 <translation id="6569060085658103619">Anda melihat halaman ekstensi</translation>
 <translation id="6573200754375280815">Dua lubang di kanan</translation>
@@ -2280,6 +2284,7 @@
 <translation id="8390725133630534698">Berbagi dari <ph name="ORIGIN_NAME" /> ke <ph name="VM_NAME" /> telah diblokir oleh kebijakan administrator</translation>
 <translation id="8398790343843005537">Temukan ponsel Anda</translation>
 <translation id="8405579342203358118">Kelola info apa saja yang Anda sinkronkan di setelan Chrome</translation>
+<translation id="8405633352367164037">Hati</translation>
 <translation id="8409413588194360210">pengendali pembayaran</translation>
 <translation id="8412145213513410671">Ngadat (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Anda harus memasukkan frasa sandi yang sama dua kali.</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb
index f58a89d..5d11113 100644
--- a/components/strings/components_strings_is.xtb
+++ b/components/strings/components_strings_is.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Þetta forrit er hannað fyrir snjalltæki og óvíst er að breytingar á stærð komi vel út. Vandamál gætu komið upp í forritinu eða endurræsing þess gæti átt sér stað.</translation>
 <translation id="4969341057194253438">Eyða upptöku</translation>
 <translation id="4973922308112707173">Tvö göt efst</translation>
+<translation id="4976702386844183910">Síðast skoðað <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Nota hljóðnema?</translation>
 <translation id="4984339528288761049">Prc5 (umslag)</translation>
 <translation id="4989163558385430922">Sjá allt</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Greiðslumátar og heimilisföng sem nota Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Bakki 13</translation>
+<translation id="5216942107514965959">Síðast opnað í dag</translation>
 <translation id="5222812217790122047">Netfang er nauðsynlegt</translation>
 <translation id="5230733896359313003">Sendingarheimilisfang</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Vistuð aðgangsorð</translation>
 <translation id="5873013647450402046">Bankinn þinn vill staðfesta að um þig sé að ræða.</translation>
 <translation id="5887400589839399685">Kort vistað</translation>
+<translation id="5887687176710214216">Síðast opnað í gær</translation>
 <translation id="5895138241574237353">Endurræsa</translation>
 <translation id="5895187275912066135">Gefið út</translation>
 <translation id="5901630391730855834">Gulur</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">Endu&amp;rtaka eyðingu</translation>
 <translation id="6545864417968258051">Bluetooth-leit</translation>
 <translation id="6547208576736763147">Tvö göt vinstra megin</translation>
+<translation id="6554732001434021288">Síðast opnað fyrir <ph name="NUM_DAYS" /> dögum</translation>
 <translation id="6556866813142980365">Endurgera</translation>
 <translation id="6569060085658103619">Þú ert að skoða viðbótarsíðu</translation>
 <translation id="6573200754375280815">Tvö göt hægra megin</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">Regla stjórnanda lokar á að hægt sé að deila frá <ph name="ORIGIN_NAME" /> í <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Finna símann minn</translation>
 <translation id="8405579342203358118">Stjórna hvaða upplýsingar eru samstilltar í stillingum Chrome</translation>
+<translation id="8405633352367164037">Hjarta</translation>
 <translation id="8409413588194360210">greiðslumiðlara</translation>
 <translation id="8412145213513410671">Hrun (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Þú verður að slá sama aðgangsorðið inn tvisvar.</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index b13506d3..d9d86e1 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -1259,6 +1259,7 @@
 <translation id="4968522289500246572">Questa app è stata progettata per dispositivi mobili e il relativo ridimensionamento potrebbe non avvenire correttamente. L'app potrebbe riavviarsi o presentare problemi.</translation>
 <translation id="4969341057194253438">Elimina la registrazione</translation>
 <translation id="4973922308112707173">Perforatura doppia in alto</translation>
+<translation id="4976702386844183910">Ultima visita: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Usare il microfono?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Mostra tutto</translation>
@@ -1344,6 +1345,7 @@
 <translation id="5215116848420601511">Metodi di pagamento e indirizzi che utilizzano Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Vassoio 13</translation>
+<translation id="5216942107514965959">Ultima visita: oggi</translation>
 <translation id="5222812217790122047">Email obbligatoria</translation>
 <translation id="5230733896359313003">Indirizzo di spedizione</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1529,6 +1531,7 @@
 <translation id="5869522115854928033">Password salvate</translation>
 <translation id="5873013647450402046">La tua banca vuole confermare la tua identità.</translation>
 <translation id="5887400589839399685">Carta salvata</translation>
+<translation id="5887687176710214216">Ultima visita: ieri</translation>
 <translation id="5895138241574237353">Riavvia</translation>
 <translation id="5895187275912066135">Emesso in data</translation>
 <translation id="5901630391730855834">Giallo</translation>
@@ -1721,6 +1724,7 @@
 <translation id="6529602333819889595">&amp;Ripeti eliminazione</translation>
 <translation id="6545864417968258051">Scansione Bluetooth</translation>
 <translation id="6547208576736763147">Perforatura doppia a sinistra</translation>
+<translation id="6554732001434021288">Ultima visita: <ph name="NUM_DAYS" /> giorni fa</translation>
 <translation id="6556866813142980365">Ripeti</translation>
 <translation id="6569060085658103619">È visualizzata la pagina di un'estensione</translation>
 <translation id="6573200754375280815">Perforatura doppia a destra</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index 2ea306f..64f9f15e 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -1264,6 +1264,7 @@
 <translation id="4968522289500246572">האפליקציה מיועדת לנייד וייתכן ששינוי הגודל שלה לא יפעל כראוי. עשויות להיות בעיות באפליקציה או שהיא תופעל מחדש.</translation>
 <translation id="4969341057194253438">מחיקת ההקלטה</translation>
 <translation id="4973922308112707173">שני ניקובים בחלק העליון</translation>
+<translation id="4976702386844183910">הכניסה האחרונה: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">להשתמש במיקרופון?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)‎</translation>
 <translation id="4989163558385430922">אני רוצה לראות הכול</translation>
@@ -1349,6 +1350,7 @@
 <translation id="5215116848420601511">‏אמצעי תשלום וכתובות שנשמרו ב-Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">מגש 13</translation>
+<translation id="5216942107514965959">הכניסה האחרונה בוצעה היום</translation>
 <translation id="5222812217790122047">אימייל (חובה)</translation>
 <translation id="5230733896359313003">כתובת למשלוח</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1535,6 +1537,7 @@
 <translation id="5869522115854928033">סיסמאות שמורות</translation>
 <translation id="5873013647450402046">הבנק שלך רוצה לאמת את זהותך.</translation>
 <translation id="5887400589839399685">הכרטיס נשמר</translation>
+<translation id="5887687176710214216">הכניסה האחרונה בוצעה אתמול</translation>
 <translation id="5895138241574237353">הפעלה מחדש</translation>
 <translation id="5895187275912066135">הונפק בתאריך</translation>
 <translation id="5901630391730855834">צהוב</translation>
@@ -1728,6 +1731,7 @@
 <translation id="6529602333819889595">&amp;ביצוע מחדש של מחיקה</translation>
 <translation id="6545864417968258051">‏סריקת Bluetooth</translation>
 <translation id="6547208576736763147">שני ניקובים בצד שמאל</translation>
+<translation id="6554732001434021288">הביקור האחרון התבצע לפני <ph name="NUM_DAYS" /> ימים</translation>
 <translation id="6556866813142980365">ביצוע מחדש</translation>
 <translation id="6569060085658103619">זהו דף של תוסף</translation>
 <translation id="6573200754375280815">שני ניקובים בצד ימין</translation>
@@ -2295,6 +2299,7 @@
 <translation id="8390725133630534698">השיתוף מ-<ph name="ORIGIN_NAME" /> אל <ph name="VM_NAME" /> חסום בהתאם למדיניות של מנהל המערכת</translation>
 <translation id="8398790343843005537">אתר את הטלפון שלך</translation>
 <translation id="8405579342203358118">‏ניתן לקבוע איזה מידע יסונכרן בהגדרות Chrome</translation>
+<translation id="8405633352367164037">לב</translation>
 <translation id="8409413588194360210">‏רכיבי handler של תשלומים</translation>
 <translation id="8412145213513410671">קריסות (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">עליך להזין את אותו משפט-סיסמה פעמיים.</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index 5b9c7e5..f27abdc 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -1253,6 +1253,7 @@
 <translation id="4968522289500246572">このアプリはモバイル向けに設計されているため、適切にサイズ変更されない可能性があります。アプリに問題が生じたり、再起動したりすることがあります。</translation>
 <translation id="4969341057194253438">録画を削除</translation>
 <translation id="4973922308112707173">2 穴パンチ(上)</translation>
+<translation id="4976702386844183910">最終アクセス日: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">マイクを使用しますか?</translation>
 <translation id="4984339528288761049">Prc5(封筒)</translation>
 <translation id="4989163558385430922">すべて表示</translation>
@@ -1338,6 +1339,7 @@
 <translation id="5215116848420601511">Google Pay のお支払い方法と住所</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">トレイ 13</translation>
+<translation id="5216942107514965959">最終アクセス日: 今日</translation>
 <translation id="5222812217790122047">メールアドレスは必須です</translation>
 <translation id="5230733896359313003">配送先住所</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1523,6 +1525,7 @@
 <translation id="5869522115854928033">保存したパスワード</translation>
 <translation id="5873013647450402046">ご利用の銀行またはカード発行会社が本人確認を求めています。</translation>
 <translation id="5887400589839399685">カードが保存されました</translation>
+<translation id="5887687176710214216">最終アクセス日: 昨日</translation>
 <translation id="5895138241574237353">再起動</translation>
 <translation id="5895187275912066135">発行日</translation>
 <translation id="5901630391730855834">黄</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">削除のやり直し(&amp;R)</translation>
 <translation id="6545864417968258051">Bluetooth のスキャン</translation>
 <translation id="6547208576736763147">2 穴パンチ(左)</translation>
+<translation id="6554732001434021288">最終アクセス日: <ph name="NUM_DAYS" /> 日前</translation>
 <translation id="6556866813142980365">やり直す</translation>
 <translation id="6569060085658103619">拡張機能のページを表示しています</translation>
 <translation id="6573200754375280815">2 穴パンチ(右)</translation>
@@ -2283,6 +2287,7 @@
 <translation id="8390725133630534698"><ph name="ORIGIN_NAME" /> から <ph name="VM_NAME" /> への貼り付けは管理者が設定したポリシーによってブロックされています</translation>
 <translation id="8398790343843005537">スマートフォンを検出</translation>
 <translation id="8405579342203358118">Chrome の設定で同期する情報を管理する</translation>
+<translation id="8405633352367164037">ハート</translation>
 <translation id="8409413588194360210">支払いハンドラ</translation>
 <translation id="8412145213513410671">障害数(<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">同じパスフレーズを 2 回入力する必要があります。</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb
index a67776d..d198be2 100644
--- a/components/strings/components_strings_ka.xtb
+++ b/components/strings/components_strings_ka.xtb
@@ -1253,6 +1253,7 @@
 <translation id="4968522289500246572">ეს აპი შექმნილია მობილურისთვის და შესაძლოა, ზომა არასათანადოდ შეეცვალოს. მოსალოდნელია, აპს პრობლემები წარმოექმნას ან ხელახლა გაეშვას.</translation>
 <translation id="4969341057194253438">ჩანაწერის წაშლა</translation>
 <translation id="4973922308112707173">ორმაგად გახვრეტა ზემოთ</translation>
+<translation id="4976702386844183910">ბოლო ვიზიტი: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">გსურთ მიკროფონის გამოყენება?</translation>
 <translation id="4984339528288761049">Prc5 (კონვერტი)</translation>
 <translation id="4989163558385430922">ყველას ნახვა</translation>
@@ -1338,6 +1339,7 @@
 <translation id="5215116848420601511">გადახდის მეთოდები და მისამართები Google Pay-დან</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ლანგარი 13</translation>
+<translation id="5216942107514965959">ბოლო ვიზიტი იყო დღეს</translation>
 <translation id="5222812217790122047">აუცილებელია ელფოსტის მითითება</translation>
 <translation id="5230733896359313003">მიწოდების მისამართი</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1523,6 +1525,7 @@
 <translation id="5869522115854928033">შენახული პაროლები</translation>
 <translation id="5873013647450402046">თქვენს ბანკს სურს, დაადასტუროს, რომ ეს ნამდვილად თქვენ ხართ.</translation>
 <translation id="5887400589839399685">ბარათი შენახულია</translation>
+<translation id="5887687176710214216">ბოლო ვიზიტი იყო გუშინ</translation>
 <translation id="5895138241574237353">გადატვირთვა</translation>
 <translation id="5895187275912066135">გაცემულია</translation>
 <translation id="5901630391730855834">ყვითელი</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">წაშლის &amp;გამეორება</translation>
 <translation id="6545864417968258051">Bluetooth სკანირება</translation>
 <translation id="6547208576736763147">ორმაგად გახვრეტა მარცხნივ</translation>
+<translation id="6554732001434021288">ბოლო ვიზიტი იყო <ph name="NUM_DAYS" /> დღის წინ</translation>
 <translation id="6556866813142980365">გამეორება</translation>
 <translation id="6569060085658103619">თქვენ ათვალიერებთ გაფართოების გვერდს</translation>
 <translation id="6573200754375280815">ორმაგად გახვრეტა მარჯვნივ</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index 9b5a487..f5572c2 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">Бұл қолданба мобильдік құрылғыға арналған. Өлшемін өзгерту кезінде қолданба дұрыс жұмыс істемеуі немесе өшіп қосылуы мүмкін.</translation>
 <translation id="4969341057194253438">Жазбаны жою</translation>
 <translation id="4973922308112707173">Жоғарғы жағын екі рет тесу</translation>
+<translation id="4976702386844183910">Cоңғы кіру: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Микрофон пайдаланылсын ба?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Барлығын көру</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Google Pay қызметін пайдаланатын төлеу әдістері және мекенжайлар</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">13-науа</translation>
+<translation id="5216942107514965959">Соңғы кіру: бүгін</translation>
 <translation id="5222812217790122047">Электрондық пошта мекенжайы көрсетілуі қажет</translation>
 <translation id="5230733896359313003">Жеткізу мекенжайы</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Сақталған құпия сөздер</translation>
 <translation id="5873013647450402046">Банк жеке басыңызды растауды сұрайды.</translation>
 <translation id="5887400589839399685">Карта сақталды</translation>
+<translation id="5887687176710214216">Соңғы кіру: кеше</translation>
 <translation id="5895138241574237353">Қайта іске қосу</translation>
 <translation id="5895187275912066135">Шығарылған күні</translation>
 <translation id="5901630391730855834">Сары</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">Жоюды &amp;қайталау</translation>
 <translation id="6545864417968258051">Bluetooth құрылғыларын іздеу</translation>
 <translation id="6547208576736763147">Сол жағын екі рет тесу</translation>
+<translation id="6554732001434021288">Соңғы кіру: <ph name="NUM_DAYS" /> күн бұрын</translation>
 <translation id="6556866813142980365">Қайта орындау</translation>
 <translation id="6569060085658103619">Кеңейтім бетін көрудесіз</translation>
 <translation id="6573200754375280815">Оң жағын екі рет тесу</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb
index a77bc5a..3dc4d426 100644
--- a/components/strings/components_strings_km.xtb
+++ b/components/strings/components_strings_km.xtb
@@ -1266,6 +1266,7 @@
 <translation id="4968522289500246572">កម្មវិធីនេះត្រូវបានបង្កើតឡើងសម្រាប់ឧបករណ៍ចល័ត ហើយប្រហែលជាមិនអាចប្ដូរទំហំ​បានល្អទេ។ កម្មវិធីនេះអាចមានបញ្ហា ឬចាប់ផ្ដើមឡើងវិញ។</translation>
 <translation id="4969341057194253438">លុបការថត</translation>
 <translation id="4973922308112707173">ចោះ​ពីររន្ធ​ខាងលើ</translation>
+<translation id="4976702386844183910">បានចូល​មើល​លើកចុង​ក្រោយនៅថ្ងៃទី <ph name="DATE" /></translation>
 <translation id="4984088539114770594">ប្រើមីក្រូហ្វូនឬ?</translation>
 <translation id="4984339528288761049">Prc5 (ស្រោម​សំបុត្រ)</translation>
 <translation id="4989163558385430922">មើល​ទាំងអស់</translation>
@@ -1351,6 +1352,7 @@
 <translation id="5215116848420601511">វិធី​បង់ប្រាក់ និង​អាសយដ្ឋាន​ដែលប្រើ Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ទម្រទី 13</translation>
+<translation id="5216942107514965959">បានចូលមើល​លើកចុងក្រោយ​នៅថ្ងៃនេះ</translation>
 <translation id="5222812217790122047">តម្រូវ​ឲ្យ​មាន​អ៊ីមែល</translation>
 <translation id="5230733896359313003">អាសយដ្ឋាន​ដឹក​ជញ្ជូន</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1536,6 +1538,7 @@
 <translation id="5869522115854928033">ពាក្យសម្ងាត់ដែលបានរក្សាទុក</translation>
 <translation id="5873013647450402046">ធនាគារ​របស់អ្នក​ចង់បញ្ជាក់ថា ពិតជាអ្នក។</translation>
 <translation id="5887400589839399685">បានរក្សាទុក​កាត</translation>
+<translation id="5887687176710214216">បានចូលមើល​លើកចុងក្រោយ​កាលពីម្សិលមិញ</translation>
 <translation id="5895138241574237353">ចាប់ផ្តើមឡើងវិញ</translation>
 <translation id="5895187275912066135">ចេញនៅថ្ងៃទី</translation>
 <translation id="5901630391730855834">លឿង</translation>
@@ -1729,6 +1732,7 @@
 <translation id="6529602333819889595">ធ្វើការលុបវិញ</translation>
 <translation id="6545864417968258051">ការស្កេនប៊្លូធូស</translation>
 <translation id="6547208576736763147">ចោះ​ពីររន្ធ​ខាងឆ្វេង</translation>
+<translation id="6554732001434021288">បានចូលមើល​លើកចុងក្រោយ​កាលពី <ph name="NUM_DAYS" /> ថ្ងៃមុន</translation>
 <translation id="6556866813142980365">ធ្វើវិញ</translation>
 <translation id="6569060085658103619">អ្នក​កំពុងមើល​ទំព័រ​កម្មវិធី​បន្ថែម</translation>
 <translation id="6573200754375280815">ចោះ​ពីររន្ធ​ខាងស្ដាំ</translation>
@@ -2298,6 +2302,7 @@
 <translation id="8390725133630534698">ការចែករំលែកពី <ph name="ORIGIN_NAME" /> ទៅ <ph name="VM_NAME" /> ត្រូវបានទប់ស្កាត់ដោយគោលការណ៍របស់អ្នកគ្រប់គ្រង</translation>
 <translation id="8398790343843005537">ស្វែងរកទូរស័ព្ទរបស់អ្នក</translation>
 <translation id="8405579342203358118">គ្រប់គ្រងថាព័ត៌មានអ្វីដែលអ្នកធ្វើសមកាលកម្មនៅក្នុងការកំណត់ Chrome</translation>
+<translation id="8405633352367164037">បេះដូង</translation>
 <translation id="8409413588194360210">ឧបករណ៍​ដោះស្រាយ​ការបង់ប្រាក់</translation>
 <translation id="8412145213513410671">គាំង (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">អ្នកត្រូវបញ្ចូលឃ្លាសម្ងាត់ពីរដង។</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 5b6ed9c..63c324b07 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -1252,6 +1252,7 @@
 <translation id="4968522289500246572">ಈ ಆ್ಯಪ್ ಅನ್ನು ಮೊಬೈಲ್‌ಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಸರಿಯಾಗಿ ಮರುಗಾತ್ರಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗದಿರಬಹುದು. ಆ್ಯಪ್ ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸಬಹುದು ಅಥವಾ ಮರುಪ್ರಾರಂಭಿಸಬಹುದು.</translation>
 <translation id="4969341057194253438">ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಅಳಿಸಿ</translation>
 <translation id="4973922308112707173">ಮೇಲ್ಭಾಗದಲ್ಲಿ ಎರಡು ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
+<translation id="4976702386844183910">ಕೊನೆಯದಾಗಿ <ph name="DATE" /> ರಂದು ಭೇಟಿ ನೀಡಲಾಗಿದೆ</translation>
 <translation id="4984088539114770594">ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ಬಳಸುವುದೇ?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">ಎಲ್ಲವನ್ನೂ ನೋಡಿ</translation>
@@ -1337,6 +1338,7 @@
 <translation id="5215116848420601511">Google Pay ಅನ್ನು ಬಳಸುವ ಪಾವತಿ ವಿಧಾನಗಳು ಮತ್ತು ವಿಳಾಸಗಳು</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ಟ್ರೇ 13</translation>
+<translation id="5216942107514965959">ಇಂದು ಕೊನೆಯಾದಾಗಿ ಭೇಟಿ ನೀಡಲಾಗಿದೆ</translation>
 <translation id="5222812217790122047">ಇಮೇಲ್ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="5230733896359313003">ಶಿಪ್ಪಿಂಗ್ ವಿಳಾಸ</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1522,6 +1524,7 @@
 <translation id="5869522115854928033">ಉಳಿಸಲಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು</translation>
 <translation id="5873013647450402046">ಇದು ನೀವೇ ಎಂದು ದೃಢೀಕರಿಸಲು ನಿಮ್ಮ ಬ್ಯಾಂಕ್ ಬಯಸುತ್ತದೆ.</translation>
 <translation id="5887400589839399685">ಕಾರ್ಡ್ ಉಳಿಸಲಾಗಿದೆ</translation>
+<translation id="5887687176710214216">ಕೊನೆಯದಾಗಿ ನಿನ್ನೆ ಭೇಟಿ ನೀಡಲಾಗಿದೆ</translation>
 <translation id="5895138241574237353">ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="5895187275912066135">ರಂದು ನೀಡಲಾಗಿದೆ</translation>
 <translation id="5901630391730855834">ಹಳದಿ</translation>
@@ -1714,6 +1717,7 @@
 <translation id="6529602333819889595">&amp;ಅಳಿಸುವುದನ್ನು ಮತ್ತೆಮಾಡು</translation>
 <translation id="6545864417968258051">ಬ್ಲೂಟೂತ್ ಸ್ಕ್ಯಾನಿಂಗ್</translation>
 <translation id="6547208576736763147">ಎಡಭಾಗದಲ್ಲಿ ಎರಡು ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
+<translation id="6554732001434021288">ಕೊನೆಯದಾಗಿ <ph name="NUM_DAYS" /> ದಿನಗಳ ಹಿಂದೆ ಭೇಟಿ ನೀಡಲಾಗಿದೆ</translation>
 <translation id="6556866813142980365">ಪುನಃ ಮಾಡು</translation>
 <translation id="6569060085658103619">ನೀವು ವಿಸ್ತರಣೆ ಪುಟವನ್ನು ವೀಕ್ಷಿಸುತ್ತಿರುವಿರಿ</translation>
 <translation id="6573200754375280815">ಬಲಭಾಗದಲ್ಲಿ ಎರಡು ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
@@ -2280,6 +2284,7 @@
 <translation id="8390725133630534698">ನಿರ್ವಾಹಕರ ನೀತಿಯು, <ph name="ORIGIN_NAME" /> ನಿಂದ <ph name="VM_NAME" /> ಗೆ ಹಂಚಿಕೊಳ್ಳುವುದನ್ನು ನಿರ್ಬಂಧಿಸಿದೆ</translation>
 <translation id="8398790343843005537">ನಿಮ್ಮ ಫೋನ್‌ ಹುಡುಕಿ</translation>
 <translation id="8405579342203358118">Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನೀವು ಯಾವ ಮಾಹಿತಿಯನ್ನು ಸಿಂಕ್ ಮಾಡುತ್ತೀರಿ ಎಂಬುದನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="8405633352367164037">ಹೃದಯ</translation>
 <translation id="8409413588194360210">ಪಾವತಿ ಹ್ಯಾಂಡ್‌ಲರ್‌ಗಳು</translation>
 <translation id="8412145213513410671">(<ph name="CRASH_COUNT" />) ಕ್ರ‍್ಯಾಶ್‌ಗಳು </translation>
 <translation id="8412392972487953978">ನೀವು ಒಂದೇ ರೀತಿಯ ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ಎರಡು ಬಾರಿ ನಮೂದಿಸಬೇಕು.</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index b74b7ff..d563823650 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -1253,6 +1253,7 @@
 <translation id="4968522289500246572">모바일용 앱이므로 크기가 제대로 조절되지 않을 수도 있습니다. 문제가 발생하거나 앱이 다시 시작될 수 있습니다.</translation>
 <translation id="4969341057194253438">녹음 파일 삭제</translation>
 <translation id="4973922308112707173">상단 2공 펀칭</translation>
+<translation id="4976702386844183910">최근 방문: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">마이크를 사용하시겠습니까?</translation>
 <translation id="4984339528288761049">Prc5(봉투)</translation>
 <translation id="4989163558385430922">모두 보기</translation>
@@ -1338,6 +1339,7 @@
 <translation id="5215116848420601511">Google Pay에 사용되는 결제 수단 및 주소</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">트레이 13</translation>
+<translation id="5216942107514965959">최근 방문: 오늘</translation>
 <translation id="5222812217790122047">이메일은 필수입니다.</translation>
 <translation id="5230733896359313003">배송지 주소</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1523,6 +1525,7 @@
 <translation id="5869522115854928033">저장된 비밀번호</translation>
 <translation id="5873013647450402046">은행에서 본인 확인을 요청합니다.</translation>
 <translation id="5887400589839399685">저장된 카드</translation>
+<translation id="5887687176710214216">최근 방문: 어제</translation>
 <translation id="5895138241574237353">다시 시작</translation>
 <translation id="5895187275912066135">발급일:</translation>
 <translation id="5901630391730855834">노란색</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">삭제 다시 실행(&amp;R)</translation>
 <translation id="6545864417968258051">블루투스 검색</translation>
 <translation id="6547208576736763147">왼쪽 2공 펀칭</translation>
+<translation id="6554732001434021288">최근 방문: <ph name="NUM_DAYS" />일 전</translation>
 <translation id="6556866813142980365">다시실행</translation>
 <translation id="6569060085658103619">확장 프로그램 페이지를 보는 중</translation>
 <translation id="6573200754375280815">오른쪽 2공 펀칭</translation>
@@ -2282,6 +2286,7 @@
 <translation id="8390725133630534698">관리자 정책에 의해 <ph name="ORIGIN_NAME" />에서 <ph name="VM_NAME" /> VM으로 공유하는 작업이 차단되었습니다.</translation>
 <translation id="8398790343843005537">휴대전화 찾기</translation>
 <translation id="8405579342203358118">Chrome 설정에서 내가 동기화하는 정보 관리</translation>
+<translation id="8405633352367164037">하트</translation>
 <translation id="8409413588194360210">결제 핸들러</translation>
 <translation id="8412145213513410671">비정상 종료(<ph name="CRASH_COUNT" />회)</translation>
 <translation id="8412392972487953978">동일한 암호를 두 번 입력해야 합니다.</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index efa5a618..09b77ebe 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">Бул колдонмо мобилдик түзмөк үчүн түзүлгөндүктөн, өлчөмү туура өзгөрбөшү мүмкүн. Колдонмодо маселелер келип чыгышы же өчүп күйүшү мүмкүн.</translation>
 <translation id="4969341057194253438">Жаздырууну өчүрүү</translation>
 <translation id="4973922308112707173">Жогорку жагын эки жолу тешүү</translation>
+<translation id="4976702386844183910">Акыркы жолу кирген: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Микрофон колдонулсунбу?</translation>
 <translation id="4984339528288761049">Prc5 (Конверт)</translation>
 <translation id="4989163558385430922">Баарын көрүү</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Google Pay'ди колдонгон төлөм ыкмалары жана даректер</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">13-түпкүч</translation>
+<translation id="5216942107514965959">Бүгүн акыркы жолу кирген</translation>
 <translation id="5222812217790122047">Электрондук почта дареги талап кылынат</translation>
 <translation id="5230733896359313003">Жөнөтүү дареги</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Сакталган сырсөздөр</translation>
 <translation id="5873013647450402046">Банк аныктыгыңызды текшергени жатат.</translation>
 <translation id="5887400589839399685">Карта сакталды</translation>
+<translation id="5887687176710214216">Кечээ акыркы жолу кирген</translation>
 <translation id="5895138241574237353">Өчүрүп күйгүзүү</translation>
 <translation id="5895187275912066135">Берилген күнү</translation>
 <translation id="5901630391730855834">Сары</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">Жок кылууну &amp;кайталоо</translation>
 <translation id="6545864417968258051">Bluetooth түзмөктөрүн издөө</translation>
 <translation id="6547208576736763147">Муштум менен сол жакка эки жолу уруу</translation>
+<translation id="6554732001434021288">Акыркы жолу <ph name="NUM_DAYS" /> күн мурун кирген</translation>
 <translation id="6556866813142980365">Кайталоо</translation>
 <translation id="6569060085658103619">Кеңейтүү баракчасын карап жатасыз</translation>
 <translation id="6573200754375280815">Оң жагын эки жолу тешүү</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb
index a9c4449f..bceb714 100644
--- a/components/strings/components_strings_lo.xtb
+++ b/components/strings/components_strings_lo.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">ແອັບນີ້ຖືກອອກແບບມາສຳລັບມືຖື ແລະ ອາດບໍ່ສາມາດປັບຂະໜາດໄດ້ດີ. ແອັບອາດປະສົບບັນຫາ ຫຼື ຣີສະຕາດໄດ້.</translation>
 <translation id="4969341057194253438">ລຶບການບັນທຶກອອກ</translation>
 <translation id="4973922308112707173">ເຈາະຮູຢູ່ເທິງສຸດສອງຮູ</translation>
+<translation id="4976702386844183910">ເຂົ້າເບິ່ງຫຼ້າສຸດ <ph name="DATE" /></translation>
 <translation id="4984088539114770594">ໃຊ້ໄມໂຄຣໂຟນບໍ?</translation>
 <translation id="4984339528288761049">Prc5 (ຊອງຈົດໝາຍ)</translation>
 <translation id="4989163558385430922">ເບິ່ງທັງໝົດ</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">ວິທີການຈ່າຍເງິນ ແລະ ທີ່ຢູ່ທີ່ໃຊ້ Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ຖາດ 13</translation>
+<translation id="5216942107514965959">ເຂົ້າເບິ່ງມື້ນີ້</translation>
 <translation id="5222812217790122047">ຈຳເປັນຕ້ອງມີອີເມວ</translation>
 <translation id="5230733896359313003">ທີ່ຢູ່ຈັດສົ່ງ</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">ລະ​ຫັດ​ຜ່ານ​ທີ່ບັນທຶກໄວ້</translation>
 <translation id="5873013647450402046">ທະນາຄານຂອງທ່ານຕ້ອງການຢືນຢັນວ່າແມ່ນທ່ານແທ້.</translation>
 <translation id="5887400589839399685">ບັນທຶກບັດໄວ້ແລ້ວ</translation>
+<translation id="5887687176710214216">ເຂົ້າເບິ່ງຫຼ້າສຸດມື້ວານນີ້</translation>
 <translation id="5895138241574237353">ເລີ່ມຕົ້ນໃໝ່</translation>
 <translation id="5895187275912066135">ອອກໃຫ້</translation>
 <translation id="5901630391730855834">ສີ​ເຫຼືອງ</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">ເຮັດຄືນຄໍາສັ່ງລຶບ</translation>
 <translation id="6545864417968258051">ການສະແກນ Bluetooth</translation>
 <translation id="6547208576736763147">ເຈາະຮູເບື້ອງຊ້າຍສອງຮູ</translation>
+<translation id="6554732001434021288">ເຂົ້າເບິ່ງຫຼ້າສຸດ <ph name="NUM_DAYS" /> ມື້ກ່ອນ</translation>
 <translation id="6556866813142980365">ເຮັດຄືນ</translation>
 <translation id="6569060085658103619">ທ່ານກຳລັງເບິ່ງໜ້າສ່ວນຂະຫຍາຍ</translation>
 <translation id="6573200754375280815">ເຈາະຮູຢູ່ເບື້ອງຂວາສອງຮູ</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index d2a411c..4621156 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -1263,6 +1263,7 @@
 <translation id="4968522289500246572">Ši programa sukurta mobiliesiems įrenginiams, todėl jos dydis gali būti pakeistas netinkamai. Programoje gali kilti problemų arba ji gali būti paleista iš naujo.</translation>
 <translation id="4969341057194253438">Ištrinti įrašą</translation>
 <translation id="4973922308112707173">Dvi skylės viršuje</translation>
+<translation id="4976702386844183910">Paskutinį kartą lankytasi <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Naudoti mikrofoną?</translation>
 <translation id="4984339528288761049">„Prc5“ (vokas)</translation>
 <translation id="4989163558385430922">Žr. viską</translation>
@@ -1348,6 +1349,7 @@
 <translation id="5215116848420601511">„Google Pay“ naudojami mokėjimo metodai ir adresai</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tryliktas dėklas</translation>
+<translation id="5216942107514965959">Paskutinį kartą lankytasi šiandien</translation>
 <translation id="5222812217790122047">Būtina nurodyti el. paštą</translation>
 <translation id="5230733896359313003">Pristatymo adresas</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1533,6 +1535,7 @@
 <translation id="5869522115854928033">Išsaugoti slaptažodžiai</translation>
 <translation id="5873013647450402046">Bankas nori, kad patvirtintumėte savo tapatybę.</translation>
 <translation id="5887400589839399685">Kortelė išsaugota</translation>
+<translation id="5887687176710214216">Paskutinį kartą lankytasi vakar</translation>
 <translation id="5895138241574237353">Paleisti iš naujo</translation>
 <translation id="5895187275912066135">Išduota</translation>
 <translation id="5901630391730855834">Geltona</translation>
@@ -1726,6 +1729,7 @@
 <translation id="6529602333819889595">&amp;Ištrinti dar kartą</translation>
 <translation id="6545864417968258051">„Bluetooth“ nuskaitymas</translation>
 <translation id="6547208576736763147">Dvi skylės kairėje</translation>
+<translation id="6554732001434021288">Paskutinį kartą lankytasi prieš <ph name="NUM_DAYS" /> d.</translation>
 <translation id="6556866813142980365">Grąžinti</translation>
 <translation id="6569060085658103619">Peržiūrite plėtinio puslapį</translation>
 <translation id="6573200754375280815">Dvi skylės dešinėje</translation>
@@ -2293,6 +2297,7 @@
 <translation id="8390725133630534698">Pagal administratoriaus politiką galimybė bendrinti iš <ph name="ORIGIN_NAME" /> su <ph name="VM_NAME" /> blokuojama</translation>
 <translation id="8398790343843005537">Suraskite savo telefoną</translation>
 <translation id="8405579342203358118">Tvarkykite sinchronizuojamą informaciją „Chrome“ nustatymuose</translation>
+<translation id="8405633352367164037">Širdelė</translation>
 <translation id="8409413588194360210">mokėjimų doroklės</translation>
 <translation id="8412145213513410671">Strigtys (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Reikia du kartus įvesti tą pačią slaptafrazę.</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index 3b0c8cb..9c3284c6 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">Šī lietotne ir paredzēta mobilajām ierīcēm, un tās lielumu, iespējams, nevarēs atbilstoši mainīt. Lietotnē var rasties problēmas, vai tā var tikt restartēta.</translation>
 <translation id="4969341057194253438">Dzēst ierakstu</translation>
 <translation id="4973922308112707173">Divi caurumi augšdaļā</translation>
+<translation id="4976702386844183910">Pēdējoreiz apmeklēta: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Vai lietot mikrofonu?</translation>
 <translation id="4984339528288761049">Prc5 (aploksne)</translation>
 <translation id="4989163558385430922">Skatīt visu</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Adreses un maksājumu veidi, kuros tiek izmantots pakalpojums Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">13. paplāte</translation>
+<translation id="5216942107514965959">Pēdējoreiz apmeklēta šodien</translation>
 <translation id="5222812217790122047">Jānorāda e-pasta adrese.</translation>
 <translation id="5230733896359313003">Piegādes adrese</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Saglabātās paroles</translation>
 <translation id="5873013647450402046">Banka vēlas apstiprināt jūsu identitāti</translation>
 <translation id="5887400589839399685">Kartīte ir saglabāta</translation>
+<translation id="5887687176710214216">Pēdējoreiz apmeklēta vakar</translation>
 <translation id="5895138241574237353">Restartēt</translation>
 <translation id="5895187275912066135">Izsniegšanas datums</translation>
 <translation id="5901630391730855834">Dzeltena</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;Dzēšanas atsaukuma atcelšana</translation>
 <translation id="6545864417968258051">Bluetooth meklēšana</translation>
 <translation id="6547208576736763147">Divi caurumi kreisajā pusē</translation>
+<translation id="6554732001434021288">Pēdējoreiz apmeklēta pirms <ph name="NUM_DAYS" /> dienām</translation>
 <translation id="6556866813142980365">Atcelt atsaukšanu</translation>
 <translation id="6569060085658103619">Jūs skatāt paplašinājumu lapu.</translation>
 <translation id="6573200754375280815">Divi caurumi labajā pusē</translation>
@@ -2291,6 +2295,7 @@
 <translation id="8390725133630534698">Saskaņā ar administratora iestatīto politiku kopīgošana no <ph name="ORIGIN_NAME" /> uz <ph name="VM_NAME" /> ir bloķēta.</translation>
 <translation id="8398790343843005537">Atrast tālruni</translation>
 <translation id="8405579342203358118">Chrome iestatījumos pārvaldiet, kāda informācija tiek sinhronizēta.</translation>
+<translation id="8405633352367164037">Sirds</translation>
 <translation id="8409413588194360210">maksājumu apdarinātāji</translation>
 <translation id="8412145213513410671">Avārijas (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Viena un tā pati ieejas frāze jāievada divreiz.</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb
index f1e4a2a..41aab83 100644
--- a/components/strings/components_strings_mk.xtb
+++ b/components/strings/components_strings_mk.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Апликацијава е дизајнирана за мобилен уред и можеби нема добро да ја промени големината. Апликацијата може да има проблеми или да се рестартира.</translation>
 <translation id="4969341057194253438">Избриши ја снимката</translation>
 <translation id="4973922308112707173">Две дупки горе</translation>
+<translation id="4976702386844183910">Последно посетено на <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Да се користи микрофонот?</translation>
 <translation id="4984339528288761049">Prc5 (плик)</translation>
 <translation id="4989163558385430922">Прикажи ги сите</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Начини на плаќање и адреси преку Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Фиока 13</translation>
+<translation id="5216942107514965959">Последно посетено денес</translation>
 <translation id="5222812217790122047">Потребна е е-пошта</translation>
 <translation id="5230733896359313003">Адреса за испорака</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Зачувани лозинки</translation>
 <translation id="5873013647450402046">Вашата банка сака да потврди дека сте вие.</translation>
 <translation id="5887400589839399685">Картичката е зачувана</translation>
+<translation id="5887687176710214216">Последно посетено вчера</translation>
 <translation id="5895138241574237353">Рестартирај</translation>
 <translation id="5895187275912066135">Издадено на</translation>
 <translation id="5901630391730855834">Жолта боја</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Повтори бришење</translation>
 <translation id="6545864417968258051">Скенирање за Bluetooth</translation>
 <translation id="6547208576736763147">Две дупки лево</translation>
+<translation id="6554732001434021288">Последно посетено пред <ph name="NUM_DAYS" /> дена</translation>
 <translation id="6556866813142980365">Повтори</translation>
 <translation id="6569060085658103619">Гледате страница со екстензии</translation>
 <translation id="6573200754375280815">Две дупки десно</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index 16066bd2..a65e9b9 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -1258,6 +1258,7 @@
 <translation id="4968522289500246572">ഈ ആപ്പ് മൊബൈലിനായി രൂപകൽപ്പന ചെയ്തതാണ്, അതിന്റെ വലുപ്പം ഉദ്ദേശിക്കുന്ന രീതിയിൽ മാറ്റാൻ കഴിഞ്ഞേക്കില്ല. ആപ്പിന് പ്രശ്നങ്ങൾ നേരിട്ടേക്കാം അല്ലെങ്കിൽ അത് റീസ്റ്റാർട്ട് ചെയ്തേക്കാം.</translation>
 <translation id="4969341057194253438">റെക്കോർഡിംഗ് ഇല്ലാതാക്കുക</translation>
 <translation id="4973922308112707173">മുകളിൽ ഇരട്ട പഞ്ച് ചെയ്യുക</translation>
+<translation id="4976702386844183910">അവസാനം സന്ദർശിച്ചത് <ph name="DATE" />-ന് ആണ്</translation>
 <translation id="4984088539114770594">മൈക്രോഫോൺ ഉപയോഗിക്കണോ?</translation>
 <translation id="4984339528288761049">Prc5 (എൻവലപ്പ്)</translation>
 <translation id="4989163558385430922">എല്ലാം കാണുക</translation>
@@ -1343,6 +1344,7 @@
 <translation id="5215116848420601511">Google Pay ഉപയോഗിക്കുന്ന വിലാസങ്ങളും പേയ്മെന്റ് രീതികളും</translation>
 <translation id="5215363486134917902">ഫോളിയോ-Sp</translation>
 <translation id="521659676233207110">ട്രേ 13</translation>
+<translation id="5216942107514965959">അവസാനം സന്ദർശിച്ചത് ഇന്നാണ്</translation>
 <translation id="5222812217790122047">ഇമെയിൽ ആവശ്യമാണ്</translation>
 <translation id="5230733896359313003">ഷിപ്പിംഗ് വിലാസം</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1528,6 +1530,7 @@
 <translation id="5869522115854928033">സംരക്ഷിച്ച പാസ്‌വേഡുകള്‍</translation>
 <translation id="5873013647450402046">ഇത് നിങ്ങൾ തന്നെയാണെന്ന് ബാങ്കിന് സ്ഥിരീകരിക്കേണ്ടതുണ്ട്.</translation>
 <translation id="5887400589839399685">കാർഡ് സംരക്ഷിച്ചു</translation>
+<translation id="5887687176710214216">അവസാനം സന്ദർശിച്ചത് ഇന്നലെയാണ്</translation>
 <translation id="5895138241574237353">പുനരാരംഭിക്കുക</translation>
 <translation id="5895187275912066135">ഇനിപ്പറയുന്നദിവസം നല്‍‌കി</translation>
 <translation id="5901630391730855834">മഞ്ഞ</translation>
@@ -1721,6 +1724,7 @@
 <translation id="6529602333819889595">&amp;ഇല്ലാതാക്കുന്നത് വീണ്ടും ചെയ്യുക</translation>
 <translation id="6545864417968258051">Bluetooth സ്‌കാനിംഗ്</translation>
 <translation id="6547208576736763147">ഇടതുവശത്ത് ഇരട്ട പഞ്ച് ചെയ്യുക</translation>
+<translation id="6554732001434021288">അവസാനം സന്ദർശിച്ചത് <ph name="NUM_DAYS" /> ദിവസം മുമ്പായിരുന്നു</translation>
 <translation id="6556866813142980365">വീണ്ടും ചെയ്യുക</translation>
 <translation id="6569060085658103619">നിങ്ങൾ ഒരു വിപുലീകരണ പേജാണ് കാണുന്നത്</translation>
 <translation id="6573200754375280815">വലതുവശത്ത് ഇരട്ട പഞ്ച് ചെയ്യുക</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb
index aa7f280..455c981 100644
--- a/components/strings/components_strings_mn.xtb
+++ b/components/strings/components_strings_mn.xtb
@@ -1263,6 +1263,7 @@
 <translation id="4968522289500246572">Энэ апп мобайлд зориулагдсан бөгөөд үүний хэмжээ сайн өөрчлөгдөхгүй байж магадгүй. Энэ апп асуудалтай тулгарч эсвэл дахин эхэлж магадгүй.</translation>
 <translation id="4969341057194253438">Бичлэгийг устгах</translation>
 <translation id="4973922308112707173">Дээд буланд хоёр нүх цоолох</translation>
+<translation id="4976702386844183910">Хамгийн сүүлд <ph name="DATE" />-д зочилсон</translation>
 <translation id="4984088539114770594">Микрофон ашиглах уу?</translation>
 <translation id="4984339528288761049">Prc5 (Дугтуй)</translation>
 <translation id="4989163558385430922">Бүгдийг харах</translation>
@@ -1348,6 +1349,7 @@
 <translation id="5215116848420601511">Google Pay-г ашиглаж буй төлбөрийн хэрэгсэл болон хаяг</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Тавиур 13</translation>
+<translation id="5216942107514965959">Хамгийн сүүлд өнөөдөр зочилсон</translation>
 <translation id="5222812217790122047">Имэйл шаардлагатай</translation>
 <translation id="5230733896359313003">Хүргэлтийн хаяг</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1533,6 +1535,7 @@
 <translation id="5869522115854928033">Хадгалагдсан нууц үг</translation>
 <translation id="5873013647450402046">Таны банк таныг мөн болохыг баталгаажуулахыг хүсэж байна.</translation>
 <translation id="5887400589839399685">Картыг хадгалсан</translation>
+<translation id="5887687176710214216">Хамгийн сүүлд өчигдөр зочилсон</translation>
 <translation id="5895138241574237353">Дахин асаах</translation>
 <translation id="5895187275912066135">Гаргасан огноо</translation>
 <translation id="5901630391730855834">Шар</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp; Устгах үйлдлийг дахин хийх</translation>
 <translation id="6545864417968258051">Bluetooth скан хийх</translation>
 <translation id="6547208576736763147">Зүүн ирмэг дагуу хоёр нүх цоолох</translation>
+<translation id="6554732001434021288">Хамгийн сүүлд <ph name="NUM_DAYS" /> хоногийн өмнө зочилсон</translation>
 <translation id="6556866813142980365">Дахин хийх</translation>
 <translation id="6569060085658103619">Та өргөтгөлийн хуудсыг харж байна.</translation>
 <translation id="6573200754375280815">Баруун ирмэг дагуу хоёр нүх цоолох</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index 35d73a57..44331b7b 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">हे ॲप मोबाइलसाठी डिझाइन केले असून योग्यप्रकारे आकार बदलू शकणार नाही. अ‍ॅपमध्ये समस्या येऊ शकतात किंवा ते रीस्टार्ट होऊ शकते.</translation>
 <translation id="4969341057194253438">रेकॉर्डिंग हटवा</translation>
 <translation id="4973922308112707173">ड्युअल पंच टॉप</translation>
+<translation id="4976702386844183910"><ph name="DATE" /> रोजी शेवटची भेट दिली</translation>
 <translation id="4984088539114770594">मायक्रोफोन वापरायचा का?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">सर्व पहा</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Google Pay वापरून पेमेंट पद्धती आणि पत्ते</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ट्रे १३</translation>
+<translation id="5216942107514965959">आज शेवटची भेट दिली</translation>
 <translation id="5222812217790122047">ईमेल आवश्यक आहे</translation>
 <translation id="5230733896359313003">पाठविण्याचा पत्ता</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">सेव्ह केलेले पासवर्ड</translation>
 <translation id="5873013647450402046">हे तुम्हीच असल्याचे तुमच्या बॅंकला कंफर्म करायचे आहे.</translation>
 <translation id="5887400589839399685">कार्ड सेव्ह केले</translation>
+<translation id="5887687176710214216">काल शेवटची भेट दिली</translation>
 <translation id="5895138241574237353">रीस्टार्ट करा</translation>
 <translation id="5895187275912066135">रोजी जारी केले</translation>
 <translation id="5901630391730855834">पिवळा</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;पुन्हा करा हटवा</translation>
 <translation id="6545864417968258051">ब्लूटूथ स्कॅन करत आहे</translation>
 <translation id="6547208576736763147">ड्युअल पंच लेफ्ट</translation>
+<translation id="6554732001434021288"><ph name="NUM_DAYS" /> दिवसांपूर्वी शेवटची भेट दिली</translation>
 <translation id="6556866813142980365">पुन्हा करा</translation>
 <translation id="6569060085658103619">तुम्ही एक एक्स्टेंशन पेज पाहत आहात</translation>
 <translation id="6573200754375280815">ड्युअल पंच राइट</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">अ‍ॅडमिनिस्ट्रेटर धोरणाद्वारे <ph name="ORIGIN_NAME" /> वरून <ph name="VM_NAME" /> वर शेअर करणे ब्लॉक केले आहे</translation>
 <translation id="8398790343843005537">तुमचा फोन शोधा</translation>
 <translation id="8405579342203358118">Chrome सेटिंग्जमध्ये तुम्ही कोणती माहिती सिंक करता ते व्यवस्थापित करा</translation>
+<translation id="8405633352367164037">हार्ट</translation>
 <translation id="8409413588194360210">पेमेंट हँडलर</translation>
 <translation id="8412145213513410671">क्रॅश (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">समान सांकेतिक पासफ्रेझ दोनदा एंटर करणे आवश्यक आहे.</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 2561879..540bca81 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -1263,6 +1263,7 @@
 <translation id="4968522289500246572">Apl ini direka bentuk untuk peranti mudah alih dan mungkin tidak dapat diubah saiz dengan betul. Apl ini mungkin mengalami isu atau dimulakan semula.</translation>
 <translation id="4969341057194253438">Padamkan rakaman</translation>
 <translation id="4973922308112707173">Dua tebukan atas</translation>
+<translation id="4976702386844183910">Terakhir dilawati <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Gunakan mikrofon?</translation>
 <translation id="4984339528288761049">Prc5 (Sampul Surat)</translation>
 <translation id="4989163558385430922">Lihat semua</translation>
@@ -1348,6 +1349,7 @@
 <translation id="5215116848420601511">Kaedah pembayaran dan alamat yang menggunakan Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Dulang 13</translation>
+<translation id="5216942107514965959">Terakhir dilawati hari ini</translation>
 <translation id="5222812217790122047">E-mel diperlukan</translation>
 <translation id="5230733896359313003">Alamat Penghantaran</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1533,6 +1535,7 @@
 <translation id="5869522115854928033">Kata laluan disimpan</translation>
 <translation id="5873013647450402046">Bank anda mahu mengesahkan identiti anda.</translation>
 <translation id="5887400589839399685">Kad disimpan</translation>
+<translation id="5887687176710214216">Terakhir dilawati semalam</translation>
 <translation id="5895138241574237353">Mulakan Semula</translation>
 <translation id="5895187275912066135">Dikeluarkan Pada</translation>
 <translation id="5901630391730855834">Kuning</translation>
@@ -1726,6 +1729,7 @@
 <translation id="6529602333819889595">&amp;Buat Semula Pemadaman</translation>
 <translation id="6545864417968258051">Pengimbasan Bluetooth</translation>
 <translation id="6547208576736763147">Dua tebukan kiri</translation>
+<translation id="6554732001434021288">Terakhir dilawati <ph name="NUM_DAYS" /> hari yang lalu</translation>
 <translation id="6556866813142980365">Buat semula</translation>
 <translation id="6569060085658103619">Anda sedang melihat halaman sambungan</translation>
 <translation id="6573200754375280815">Dua tebukan kanan</translation>
@@ -2293,6 +2297,7 @@
 <translation id="8390725133630534698">Perkongsian daripada <ph name="ORIGIN_NAME" /> kepada <ph name="VM_NAME" /> telah disekat oleh dasar pentadbir</translation>
 <translation id="8398790343843005537">Cari telefon anda</translation>
 <translation id="8405579342203358118">Urus maklumat yang anda segerakkan dalam tetapan Chrome</translation>
+<translation id="8405633352367164037">Hati</translation>
 <translation id="8409413588194360210">pengendali pembayaran</translation>
 <translation id="8412145213513410671">Nahas (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Anda mesti memasukkan frasa laluan yang sama dua kali.</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index fc1698f..65a004d 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -1263,6 +1263,7 @@
 <translation id="4968522289500246572">ဤအက်ပ်ကို မိုဘိုင်းအတွက် ထုတ်လုပ်ထားသဖြင့် ကောင်းစွာ အရွယ်အစားပြန်ပြင်နိုင်မည် မဟုတ်ပါ။ အက်ပ်တွင် ပြဿနာများ ဖြစ်နိုင်သည် (သို့) ပြန်စနိုင်သည်။</translation>
 <translation id="4969341057194253438">ဖမ်းယူမှုဖိုင်ကို ဖျက်ရန်</translation>
 <translation id="4973922308112707173">ထိပ်တွင် နှစ်ချက်ဖောက်ရန်</translation>
+<translation id="4976702386844183910"><ph name="DATE" /> က နောက်ဆုံး ဝင်ကြည့်ထားသည်</translation>
 <translation id="4984088539114770594">မိုက်ခရိုဖုန်းကို အသုံးပြုမလား။</translation>
 <translation id="4984339528288761049">Prc5 (စာအိတ်)</translation>
 <translation id="4989163558385430922">အားလုံး ကြည့်ရန်</translation>
@@ -1348,6 +1349,7 @@
 <translation id="5215116848420601511">Google Pay ကို သုံးထားသော ငွေပေးချေနည်းလမ်းနှင့် လိပ်စာများ</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ဗန်း ၁၃</translation>
+<translation id="5216942107514965959">ယနေ့ နောက်ဆုံး ဝင်ကြည့်ထားသည်</translation>
 <translation id="5222812217790122047">အီးမေးလ် လိုအပ်သည်</translation>
 <translation id="5230733896359313003">ပစ္စည်းပို့ရမည့်လိပ်စာ</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1533,6 +1535,7 @@
 <translation id="5869522115854928033">သိမ်းဆည်းထားသည့် စကားဝှက်များ</translation>
 <translation id="5873013647450402046">သင်ဖြစ်ကြောင်း သင့်ဘဏ်က အတည်ပြုလိုသည်</translation>
 <translation id="5887400589839399685">ကတ်ကို သိမ်းပြီးပါပြီ</translation>
+<translation id="5887687176710214216">မနေ့က နောက်ဆုံး ဝင်ကြည့်ထားသည်</translation>
 <translation id="5895138241574237353">ပြန်စတင်မည</translation>
 <translation id="5895187275912066135">ထုတ်ပေး ရက်</translation>
 <translation id="5901630391730855834">အၐါရောင်</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;ဖျက်ရန်ကို ပြန်လုပ်ရန်</translation>
 <translation id="6545864417968258051">ဘလူးတုသ် ရှာဖွေခြင်း</translation>
 <translation id="6547208576736763147">ဘယ်ဘက်တွင် နှစ်ချက်ဖောက်ရန်</translation>
+<translation id="6554732001434021288">ပြီးခဲ့သော <ph name="NUM_DAYS" /> ရက်က နောက်ဆုံး ဝင်ကြည့်ထားသည်</translation>
 <translation id="6556866813142980365">ပြန်လုပ်ရန်</translation>
 <translation id="6569060085658103619">သင်သည် နောက်ဆက်တွဲစာမျက်နှာကို ကြည့်ရှုနေခြင်းဖြစ်သည်</translation>
 <translation id="6573200754375280815">ညာဘက်တွင် နှစ်ချက်ဖောက်ရန်</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index 0d5ad52..9179c916 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -1258,6 +1258,7 @@
 <translation id="4968522289500246572">यो एप मोबाइलमा चलाउने प्रयोजनले बनाइएको हो र यसको आकार सही तरिकाले परिवर्तन नहुन सक्छ। यो एपमा समस्या देखिन सक्छ वा यो एप आफैँ रिस्टार्ट हुन सक्छ।</translation>
 <translation id="4969341057194253438">रेकर्डिङ मेटाउनुहोस्</translation>
 <translation id="4973922308112707173">सिरानमा दुई प्वाल</translation>
+<translation id="4976702386844183910">पछिल्लो पटक खोलिएको मिति: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">माइक्रोफोन प्रयोग गर्ने हो?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">सबै हेर्नुहोस्</translation>
@@ -1343,6 +1344,7 @@
 <translation id="5215116848420601511">Google Pay को प्रयोग गर्ने भुक्तानी विधि र ठेगानाहरू</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ट्रे १३</translation>
+<translation id="5216942107514965959">पछिल्लो पटक आज खोलिएको</translation>
 <translation id="5222812217790122047">इमेल आवश्यक छ</translation>
 <translation id="5230733896359313003">ढुवानीको ठेगाना</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1528,6 +1530,7 @@
 <translation id="5869522115854928033">बचत गरिएका पासवर्डहरू</translation>
 <translation id="5873013647450402046">तपाईंको बैंकले यो कारबाही गर्न खोज्ने व्यक्ति तपाईं नै हो भन्ने कुरा पुष्टि गर्न चाहन्छ।</translation>
 <translation id="5887400589839399685">कार्ड सेभ गरियो</translation>
+<translation id="5887687176710214216">पछिल्लो पटक हिजो खोलिएको</translation>
 <translation id="5895138241574237353">पुन: शुरू गर्नुहोस्</translation>
 <translation id="5895187275912066135">मा प्रकाशित</translation>
 <translation id="5901630391730855834">पहेँलो</translation>
@@ -1721,6 +1724,7 @@
 <translation id="6529602333819889595">मेटाउने कार्य &amp;पुन: गर्नुहोस्</translation>
 <translation id="6545864417968258051">ब्लुटुथ स्क्यान गर्दै</translation>
 <translation id="6547208576736763147">बायाँपट्टि दुई प्वाल</translation>
+<translation id="6554732001434021288">पछिल्लो पटक <ph name="NUM_DAYS" /> दिनअघि खोलिएको</translation>
 <translation id="6556866813142980365">फेरि गर्नुहोस्</translation>
 <translation id="6569060085658103619">तपाईं एउटा विस्तार सम्बन्धी पृष्ठ हेर्दै हुनुहुन्छ</translation>
 <translation id="6573200754375280815">दायाँपट्टि दुई प्वाल</translation>
@@ -2288,6 +2292,7 @@
 <translation id="8390725133630534698">एड्मिनले <ph name="ORIGIN_NAME" /> बाट <ph name="VM_NAME" /> मा सेयर गर्न रोक लगाउनुभएको छ</translation>
 <translation id="8398790343843005537">आफ्नो फोन फेला पार्नुहोस्</translation>
 <translation id="8405579342203358118">Chrome का सेटिङमा गई के कस्ता जानकारी सिंक गर्ने भन्ने कुरा व्यवस्थापन गर्नुहोस्</translation>
+<translation id="8405633352367164037">मुटु</translation>
 <translation id="8409413588194360210">भुक्तानी ह्यान्ड्लरहरू</translation>
 <translation id="8412145213513410671">क्रयासहरू (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">तपाइँले एउटै पासफ्रेज दुईटपक प्रविष्ट गर्नुपर्छ।</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index da6ca49..d82777a 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -1254,6 +1254,7 @@
 <translation id="4968522289500246572">Deze app is ontworpen voor mobiel en het formaat wordt misschien niet goed aangepast. De app kan problemen ondervinden of opnieuw opstarten.</translation>
 <translation id="4969341057194253438">Opname verwijderen</translation>
 <translation id="4973922308112707173">Twee perforaties boven</translation>
+<translation id="4976702386844183910">Laatst bezocht: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Microfoon gebruiken?</translation>
 <translation id="4984339528288761049">Prc5 (envelop)</translation>
 <translation id="4989163558385430922">Alles bekijken</translation>
@@ -1339,6 +1340,7 @@
 <translation id="5215116848420601511">Betaalmethoden en adressen die Google Pay gebruiken</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Lade 13</translation>
+<translation id="5216942107514965959">Laatst bezocht: vandaag</translation>
 <translation id="5222812217790122047">E-mailadres vereist</translation>
 <translation id="5230733896359313003">Verzendadres</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1524,6 +1526,7 @@
 <translation id="5869522115854928033">Opgeslagen wachtwoorden</translation>
 <translation id="5873013647450402046">Je bank wil bevestigen dat jij het bent.</translation>
 <translation id="5887400589839399685">Pas opgeslagen</translation>
+<translation id="5887687176710214216">Laatst bezocht: gisteren</translation>
 <translation id="5895138241574237353">Opnieuw starten</translation>
 <translation id="5895187275912066135">Verleend op</translation>
 <translation id="5901630391730855834">Geel</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">&amp;Opnieuw verwijderen</translation>
 <translation id="6545864417968258051">Bluetooth-scannen</translation>
 <translation id="6547208576736763147">Twee perforaties links</translation>
+<translation id="6554732001434021288">Laatst bezocht: <ph name="NUM_DAYS" /> dagen geleden</translation>
 <translation id="6556866813142980365">Opnieuw</translation>
 <translation id="6569060085658103619">Je bekijkt een extensiepagina</translation>
 <translation id="6573200754375280815">Twee perforaties rechts</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index d1aa9e9..dde576f 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Denne appen er designet for mobil, så det fungerer kanskje ikke så bra å endre størrelse på den. Det kan hende appen støter på problemer eller startes på nytt.</translation>
 <translation id="4969341057194253438">Slett opptak</translation>
 <translation id="4973922308112707173">To hull topp</translation>
+<translation id="4976702386844183910">Sist besøkt <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Vil du bruke mikrofonen?</translation>
 <translation id="4984339528288761049">Prc5 (konvolutt)</translation>
 <translation id="4989163558385430922">Se alle</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Betalingsmåter og adresser som bruker Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Skuff 13</translation>
+<translation id="5216942107514965959">Sist besøkt i dag</translation>
 <translation id="5222812217790122047">E-post er obligatorisk</translation>
 <translation id="5230733896359313003">Leveringsadresse</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Lagrede passord</translation>
 <translation id="5873013647450402046">Banken din vil bekrefte at det er deg.</translation>
 <translation id="5887400589839399685">Kortet er lagret</translation>
+<translation id="5887687176710214216">Sist besøkt i går</translation>
 <translation id="5895138241574237353">Start på nytt</translation>
 <translation id="5895187275912066135">Utstedt</translation>
 <translation id="5901630391730855834">Gul</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Slett likevel</translation>
 <translation id="6545864417968258051">Bluetooth-skanning</translation>
 <translation id="6547208576736763147">To hull venstre</translation>
+<translation id="6554732001434021288">Sist besøkt for <ph name="NUM_DAYS" /> dager siden</translation>
 <translation id="6556866813142980365">Gjør om</translation>
 <translation id="6569060085658103619">Du ser på en utvidelsesside</translation>
 <translation id="6573200754375280815">To hull høyre</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb
index 04e8f7cc..51fc9696 100644
--- a/components/strings/components_strings_or.xtb
+++ b/components/strings/components_strings_or.xtb
@@ -1250,6 +1250,7 @@
 <translation id="4968522289500246572">ଏହି ଆପକୁ ମୋବାଇଲ ପାଇଁ ଡିଜାଇନ୍ କରାଯାଇଛି ଏବଂ ଏହା ଭଲ ଭାବରେ ରିସାଇଜ୍ ହୋଇନପାରେ। ଆପରେ ସମସ୍ୟା ହୋଇପାରେ କିମ୍ୱା ଏହା ରିଷ୍ଟାର୍ଟ ହୋଇପାରେ।</translation>
 <translation id="4969341057194253438">ରେକର୍ଡିଂ ଡିଲିଟ କରନ୍ତୁ</translation>
 <translation id="4973922308112707173">ଉପର ପଟରେ ଦୁଇଟି ପଞ୍ଚ୍</translation>
+<translation id="4976702386844183910">ଗତ ଥର <ph name="DATE" />ରେ ଭିଜିଟ୍ କରାଯାଇଛି</translation>
 <translation id="4984088539114770594">ମାଇକ୍ରୋଫୋନ୍ ବ୍ୟବହାର କରିବେ?</translation>
 <translation id="4984339528288761049">Prc5 (ଏନଭଲପ୍)</translation>
 <translation id="4989163558385430922">ସବୁ ଦେଖନ୍ତୁ</translation>
@@ -1335,6 +1336,7 @@
 <translation id="5215116848420601511">Google Pay ବ୍ୟବହାର କରୁଥିବା ପେମେଣ୍ଟ ପଦ୍ଧତି ଏବଂ ଠିକଣାଗୁଡ଼ିକ</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ଟ୍ରେ 13</translation>
+<translation id="5216942107514965959">ଆଜି ଶେଷ ଥର ଭିଜିଟ୍ କରାଯାଇଛି</translation>
 <translation id="5222812217790122047">ଇମେଲ୍‌ର ଆବଶ୍ୟକତା ଅଛି</translation>
 <translation id="5230733896359313003">ସିପିଂ ଠିକଣା</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1520,6 +1522,7 @@
 <translation id="5869522115854928033">ସଞ୍ଚିତ ପାସୱାର୍ଡସମୂହ</translation>
 <translation id="5873013647450402046">ଏହା ଆପଣ ଅଟନ୍ତି ବୋଲି ଆପଣଙ୍କ ବ୍ୟାଙ୍କ ସୁନିଶ୍ଚିତ କରିବାକୁ ଚାହେଁ।</translation>
 <translation id="5887400589839399685">ସେଭ୍‌ ହୋଇଗଲା</translation>
+<translation id="5887687176710214216">ଗତକାଲି ଶେଷଥର ଭିଜିଟ୍ କରାଯାଇଛି</translation>
 <translation id="5895138241574237353">ପୁନଃଆରମ୍ଭ</translation>
 <translation id="5895187275912066135">ଜାରି କରାଯାଇଥିବା ତାରିଖ</translation>
 <translation id="5901630391730855834">ହଳଦିଆ</translation>
@@ -1712,6 +1715,7 @@
 <translation id="6529602333819889595">&amp;ଡିଲିଟ୍‌କୁ ରି-ଡୁ କରନ୍ତୁ</translation>
 <translation id="6545864417968258051">ବ୍ଲୁଟୁଥ୍ ସ୍କାନିଂ</translation>
 <translation id="6547208576736763147">ବାମ ପଟରେ ଦୁଇଟି ପଞ୍ଚ୍</translation>
+<translation id="6554732001434021288">ଗତ ଥର <ph name="NUM_DAYS" /> ଦିନ ପୂର୍ବେ ଭିଜିଟ୍ କରାଯାଇଛି</translation>
 <translation id="6556866813142980365">ରି-ଡୁ କରନ୍ତୁ</translation>
 <translation id="6569060085658103619">ଆପଣ ଏକ ଏକ୍ସଟେନ୍‌ସନ୍ ପୃଷ୍ଠା ଦେଖୁଛନ୍ତି</translation>
 <translation id="6573200754375280815">ଡାହାଣ ପଟରେ ଦୁଇଟି ପଞ୍ଚ୍</translation>
@@ -2279,6 +2283,7 @@
 <translation id="8390725133630534698">ଆଡମିନିଷ୍ଟ୍ରେଟର୍ ନୀତି ଦ୍ୱାରା <ph name="ORIGIN_NAME" />ରୁ <ph name="VM_NAME" />କୁ ସେୟାର୍ କରିବା ବ୍ଲକ୍ କରାଯାଇଛି</translation>
 <translation id="8398790343843005537">ଆପଣଙ୍କ ଫୋନ ଖୋଜନ୍ତୁ</translation>
 <translation id="8405579342203358118">Chrome ସେଟିଂସରେ ଆପଣ କେଉଁ ସୂଚନା ସିଙ୍କ୍ କରନ୍ତି ତାହା ପରିଚାଳନା କରନ୍ତୁ</translation>
+<translation id="8405633352367164037">ହାର୍ଟ</translation>
 <translation id="8409413588194360210">ପେମେଣ୍ଟ ହ୍ୟାଣ୍ଡଲରଗୁଡ଼ିକ</translation>
 <translation id="8412145213513410671">କ୍ରାସ୍ (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">ଆପଣ ସେହି ଏକା ପାସ୍‌ଫ୍ରେଜ୍ ଦୁଇଥର ଦେବା ଆବଶ୍ୟକ।</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb
index ec2d88f4..89de4e87 100644
--- a/components/strings/components_strings_pa.xtb
+++ b/components/strings/components_strings_pa.xtb
@@ -1250,6 +1250,7 @@
 <translation id="4968522289500246572">ਇਹ ਐਪ ਮੋਬਾਈਲ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤੀ ਗਈ ਹੈ ਅਤੇ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਸਦਾ ਆਕਾਰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਨਾ ਬਦਲੇ। ਐਪ ਵਿਚ ਸਮੱਸਿਆਵਾਂ ਆ ਸਕਦੀਆਂ ਹਨ ਜਾਂ ਮੁੜ-ਸ਼ੁਰੂ ਹੋ ਸਕਦੀ ਹੈ।</translation>
 <translation id="4969341057194253438">ਰਿਕਾਰਡਿੰਗ ਨੂੰ ਮਿਟਾਓ</translation>
 <translation id="4973922308112707173">ਉੱਪਰ ਦੋ ਮੋਰੀਆਂ</translation>
+<translation id="4976702386844183910">ਪਿਛਲੀ ਵਾਰ <ph name="DATE" /> ਨੂੰ ਦੇਖੀ ਗਈ</translation>
 <translation id="4984088539114770594">ਕੀ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਵਰਤਣਾ ਹੈ?</translation>
 <translation id="4984339528288761049">Prc5 (ਲਿਫ਼ਾਫ਼ਾ)</translation>
 <translation id="4989163558385430922">ਸਭ ਦੇਖੋ</translation>
@@ -1335,6 +1336,7 @@
 <translation id="5215116848420601511">Google Pay ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੀਆਂ ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਅਤੇ ਪਤੇ</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ਟ੍ਰੇਅ 13</translation>
+<translation id="5216942107514965959">ਪਿਛਲੀ ਵਾਰ ਅੱਜ ਦੇਖੀ ਗਈ</translation>
 <translation id="5222812217790122047">ਈਮੇਲ ਲੋੜੀਂਦੀ ਹੈ</translation>
 <translation id="5230733896359313003">ਸ਼ਿਪਿੰਗ ਪਤਾ</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1520,6 +1522,7 @@
 <translation id="5869522115854928033">ਸੁਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ</translation>
 <translation id="5873013647450402046">ਤੁਹਾਡਾ ਬੈਂਕ ਤਸਦੀਕ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ ਕਿ ਇਹ ਤੁਸੀਂ ਹੀ ਹੋ।</translation>
 <translation id="5887400589839399685">ਕਾਰਡ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ</translation>
+<translation id="5887687176710214216">ਪਿਛਲੀ ਵਾਰ ਕੱਲ੍ਹ ਦੇਖੀ ਗਈ</translation>
 <translation id="5895138241574237353">ਰੀਸਟਾਰਟ ਕਰੋ</translation>
 <translation id="5895187275912066135">ਨੂੰ ਜਾਰੀ ਕੀਤਾ</translation>
 <translation id="5901630391730855834">ਪੀਲਾ</translation>
@@ -1712,6 +1715,7 @@
 <translation id="6529602333819889595">&amp;ਮਿਟਾਏ ਗਏ ਨੂੰ ਮੁੜ-ਓਹੀ ਕਰੋ</translation>
 <translation id="6545864417968258051">ਬਲੂਟੁੱਥ ਸਕੈਨਿੰਗ</translation>
 <translation id="6547208576736763147">ਖੱਬੇ ਪਾਸੇ ਦੋ ਮੋਰੀਆਂ</translation>
+<translation id="6554732001434021288">ਪਿਛਲੀ ਵਾਰ <ph name="NUM_DAYS" /> ਦਿਨ ਪਹਿਲਾਂ ਦੇਖੀ ਗਈ</translation>
 <translation id="6556866813142980365">ਮੁੜ-ਓਹੀ ਕਰੋ</translation>
 <translation id="6569060085658103619">ਤੁਸੀਂ ਇੱਕ ਐਕਸਟੈਂਸ਼ਨ ਪੰਨਾ ਦੇਖ ਰਹੇ ਹੋ</translation>
 <translation id="6573200754375280815">ਸੱਜੇ ਦੋ ਮੋਰੀਆਂ</translation>
@@ -2279,6 +2283,7 @@
 <translation id="8390725133630534698">ਪ੍ਰਸ਼ਾਸਕ ਨੀਤੀ ਵੱਲੋਂ <ph name="ORIGIN_NAME" /> ਤੋਂ <ph name="VM_NAME" /> ਵਿੱਚ ਸਾਂਝਾਕਰਨ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ</translation>
 <translation id="8398790343843005537">ਆਪਣਾ ਫ਼ੋਨ ਲੱਭੋ</translation>
 <translation id="8405579342203358118">Chrome ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਤੁਸੀਂ ਜਿਹੜੀ ਜਾਣਕਾਰੀ ਦਾ ਸਮਕਾਲੀਕਰਨ ਕਰਦੇ ਹੋ, ਉਸਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
+<translation id="8405633352367164037">ਦਿਲ</translation>
 <translation id="8409413588194360210">ਭੁਗਤਾਨ ਹੈਂਡਲਰ</translation>
 <translation id="8412145213513410671">ਕ੍ਰੈਸ਼ ਹੁੰਦਾ ਹੈ (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">ਤੁਹਾਨੂੰ ਇੱਕੋ ਪਾਸਫਰੇਜ਼ ਦੋ ਵਾਰ ਦਰਜ ਕਰਨਾ ਪਵੇਗਾ।</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index 15bc1d1..c3d6e1f 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -1253,6 +1253,7 @@
 <translation id="4968522289500246572">Ta aplikacja jest przeznaczona na urządzenia mobilne i po zmianie rozmiaru może sprawiać problemy. Może uruchamiać się ponownie lub działać nieprawidłowo.</translation>
 <translation id="4969341057194253438">Usuń nagranie</translation>
 <translation id="4973922308112707173">Dwa otwory u góry</translation>
+<translation id="4976702386844183910">Ostatnia wizyta <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Korzystać z mikrofonu?</translation>
 <translation id="4984339528288761049">Prc5 (koperta)</translation>
 <translation id="4989163558385430922">Pokaż wszystko</translation>
@@ -1338,6 +1339,7 @@
 <translation id="5215116848420601511">Formy płatności i adresy z Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Taca 13</translation>
+<translation id="5216942107514965959">Ostatnio używana dzisiaj</translation>
 <translation id="5222812217790122047">E-mail jest wymagany</translation>
 <translation id="5230733896359313003">Adres wysyłki</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1523,6 +1525,7 @@
 <translation id="5869522115854928033">Zapisane hasła</translation>
 <translation id="5873013647450402046">Bank chce potwierdzić Twoją tożsamość.</translation>
 <translation id="5887400589839399685">Zapisano kartę</translation>
+<translation id="5887687176710214216">Ostatnio używana wczoraj</translation>
 <translation id="5895138241574237353">Uruchom ponownie</translation>
 <translation id="5895187275912066135">Wystawiony dnia</translation>
 <translation id="5901630391730855834">Żółty</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">&amp;Ponów usunięcie</translation>
 <translation id="6545864417968258051">Skanowanie Bluetooth</translation>
 <translation id="6547208576736763147">Dwa otwory po lewej</translation>
+<translation id="6554732001434021288">Ostatnio używano <ph name="NUM_DAYS" /> dni temu</translation>
 <translation id="6556866813142980365">Ponów</translation>
 <translation id="6569060085658103619">Przeglądasz stronę rozszerzenia</translation>
 <translation id="6573200754375280815">Dwa otwory po prawej</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index 01849a6e..58a84a4 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -1253,6 +1253,7 @@
 <translation id="4968522289500246572">Este app foi criado para dispositivos móveis e pode não ser redimensionado corretamente. Pode haver erros ou talvez o app seja reiniciado.</translation>
 <translation id="4969341057194253438">Excluir gravação</translation>
 <translation id="4973922308112707173">Perfuração dupla na parte superior</translation>
+<translation id="4976702386844183910">Última visita: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Usar o microfone?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Ver tudo</translation>
@@ -1338,6 +1339,7 @@
 <translation id="5215116848420601511">Formas de pagamento e endereços que usam o Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Bandeja 13</translation>
+<translation id="5216942107514965959">Última visita: hoje</translation>
 <translation id="5222812217790122047">E-mail obrigatório</translation>
 <translation id="5230733896359313003">Endereço de entrega</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1523,6 +1525,7 @@
 <translation id="5869522115854928033">Senhas salvas</translation>
 <translation id="5873013647450402046">O banco precisa confirmar sua identidade.</translation>
 <translation id="5887400589839399685">Cartão salvo</translation>
+<translation id="5887687176710214216">Última visita: ontem</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5895187275912066135">Emitido em</translation>
 <translation id="5901630391730855834">Amarelo</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">&amp;Refazer excluir</translation>
 <translation id="6545864417968258051">Verificação de Bluetooth</translation>
 <translation id="6547208576736763147">Perfuração dupla no lado esquerdo</translation>
+<translation id="6554732001434021288">Última visita: <ph name="NUM_DAYS" /> dias atrás</translation>
 <translation id="6556866813142980365">Refazer</translation>
 <translation id="6569060085658103619">Você está vendo uma página de extensões</translation>
 <translation id="6573200754375280815">Perfuração dupla no lado direito</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index c2da071d..fb6a30b5 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Esta app foi concebida para dispositivos móveis e pode não ser redimensionada corretamente. A app pode ter problemas ou reiniciar.</translation>
 <translation id="4969341057194253438">Eliminar gravação</translation>
 <translation id="4973922308112707173">Perfuração dupla na parte superior</translation>
+<translation id="4976702386844183910">Última visita a <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Pretende utilizar o microfone?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Ver tudo</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Métodos de pagamento e endereços do Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tabuleiro 13</translation>
+<translation id="5216942107514965959">Última visita hoje</translation>
 <translation id="5222812217790122047">Email obrigatório</translation>
 <translation id="5230733896359313003">Endereço de envio</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Palavras-passe guardadas</translation>
 <translation id="5873013647450402046">O banco quer confirmar a sua identidade.</translation>
 <translation id="5887400589839399685">Cartão guardado</translation>
+<translation id="5887687176710214216">Última visita ontem</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5895187275912066135">Emitido em</translation>
 <translation id="5901630391730855834">Amarelo</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Refazer eliminação</translation>
 <translation id="6545864417968258051">Procura de Bluetooth</translation>
 <translation id="6547208576736763147">Perfuração dupla à esquerda</translation>
+<translation id="6554732001434021288">Última visita há <ph name="NUM_DAYS" /> dias</translation>
 <translation id="6556866813142980365">Refazer</translation>
 <translation id="6569060085658103619">Está a ver a página de uma extensão</translation>
 <translation id="6573200754375280815">Perfuração dupla à direita</translation>
@@ -2291,6 +2295,7 @@
 <translation id="8390725133630534698">A partilha a partir de <ph name="ORIGIN_NAME" /> para <ph name="VM_NAME" /> foi bloqueada por uma política do administrador.</translation>
 <translation id="8398790343843005537">Localizar o seu telemóvel</translation>
 <translation id="8405579342203358118">Faça a gestão das informações que sincroniza nas Definições do Chrome.</translation>
+<translation id="8405633352367164037">Coração</translation>
 <translation id="8409413588194360210">controladores de pagamento</translation>
 <translation id="8412145213513410671">Falhas (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Tem de introduzir a mesma frase de acesso duas vezes.</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index 555e91b..6b9aaf9 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Aplicația este creată pentru dispozitive mobile și poate să nu fie redimensionată corect. Poate să aibă erori sau să repornească.</translation>
 <translation id="4969341057194253438">Șterge înregistrarea</translation>
 <translation id="4973922308112707173">Perforare dublă în partea de sus</translation>
+<translation id="4976702386844183910">Accesat ultima dată pe <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Folosești microfonul?</translation>
 <translation id="4984339528288761049">Prc5 (Plic)</translation>
 <translation id="4989163558385430922">Afișează-le pe toate</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Metodele de plată și adresele care folosesc Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tava 13</translation>
+<translation id="5216942107514965959">Accesat ultima dată azi</translation>
 <translation id="5222812217790122047">Adresa de e-mail este obligatorie</translation>
 <translation id="5230733896359313003">Adresă de expediere</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Parole salvate</translation>
 <translation id="5873013647450402046">Banca dorește să îți confirme identitatea.</translation>
 <translation id="5887400589839399685">Cardul a fost salvat</translation>
+<translation id="5887687176710214216">Accesat ultima dată ieri</translation>
 <translation id="5895138241574237353">Reîncepe</translation>
 <translation id="5895187275912066135">Emis la</translation>
 <translation id="5901630391730855834">Galben</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Repetați ștergerea</translation>
 <translation id="6545864417968258051">Căutare Bluetooth</translation>
 <translation id="6547208576736763147">Perforare dublă în stânga</translation>
+<translation id="6554732001434021288">Accesat ultima dată acum <ph name="NUM_DAYS" /> zile</translation>
 <translation id="6556866813142980365">Repetă</translation>
 <translation id="6569060085658103619">Se afișează pagina unei extensii</translation>
 <translation id="6573200754375280815">Perforare dublă în dreapta</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">Permiterea accesului de pe <ph name="ORIGIN_NAME" /> la <ph name="VM_NAME" /> a fost blocată de politica implementată de administrator</translation>
 <translation id="8398790343843005537">Găsește telefonul</translation>
 <translation id="8405579342203358118">Gestionează informațiile de sincronizat din setările Chrome</translation>
+<translation id="8405633352367164037">Inimă</translation>
 <translation id="8409413588194360210">Handlere pentru plăți</translation>
 <translation id="8412145213513410671">Blocări (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Trebuie să introduci aceeași expresie de acces de două ori.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index 41ca848..2dc26f4 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -1252,6 +1252,7 @@
 <translation id="4968522289500246572">Это приложение предназначено для мобильных устройств. После изменения размера оно может работать некорректно или перезапуститься.</translation>
 <translation id="4969341057194253438">Удалить запись</translation>
 <translation id="4973922308112707173">Два отверстия сверху</translation>
+<translation id="4976702386844183910">Последнее посещение: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Использовать микрофон?</translation>
 <translation id="4984339528288761049">Prc5 (конверт)</translation>
 <translation id="4989163558385430922">Показать все</translation>
@@ -1337,6 +1338,7 @@
 <translation id="5215116848420601511">Способы оплаты и адреса из Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Лоток 13</translation>
+<translation id="5216942107514965959">Последнее посещение: сегодня</translation>
 <translation id="5222812217790122047">Введите адрес электронной почты</translation>
 <translation id="5230733896359313003">Адрес доставки</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1522,6 +1524,7 @@
 <translation id="5869522115854928033">Сайты с сохраненными паролями</translation>
 <translation id="5873013647450402046">Банку нужно убедиться, что это действительно вы.</translation>
 <translation id="5887400589839399685">Карта сохранена</translation>
+<translation id="5887687176710214216">Последнее посещение: вчера</translation>
 <translation id="5895138241574237353">Перезапустить</translation>
 <translation id="5895187275912066135">Дата выдачи</translation>
 <translation id="5901630391730855834">Желтый</translation>
@@ -1715,6 +1718,7 @@
 <translation id="6529602333819889595">&amp;Повторить удаление</translation>
 <translation id="6545864417968258051">Поиск Bluetooth-устройств</translation>
 <translation id="6547208576736763147">Два отверстия слева</translation>
+<translation id="6554732001434021288">Последнее посещение: <ph name="NUM_DAYS" /> дн. назад</translation>
 <translation id="6556866813142980365">Повторить</translation>
 <translation id="6569060085658103619">Вы просматриваете страницу расширения</translation>
 <translation id="6573200754375280815">Два отверстия справа</translation>
@@ -2281,6 +2285,7 @@
 <translation id="8390725133630534698">Администратор запретил переносить контент со страницы <ph name="ORIGIN_NAME" /> в <ph name="VM_NAME" />.</translation>
 <translation id="8398790343843005537">Найти телефон</translation>
 <translation id="8405579342203358118">Указать данные для синхронизации в настройках Chrome</translation>
+<translation id="8405633352367164037">Значок сердца</translation>
 <translation id="8409413588194360210">Обработчики платежей</translation>
 <translation id="8412145213513410671">Сбои (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Необходимо дважды ввести одну и ту же кодовую фразу.</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb
index 7f4841c..bbdfc8b 100644
--- a/components/strings/components_strings_si.xtb
+++ b/components/strings/components_strings_si.xtb
@@ -1259,6 +1259,7 @@
 <translation id="4968522289500246572">මෙම යෙදුම ජංගම සඳහා සැලසුම් කර ඇති අතර ප්‍රතිප්‍රමාණ නොවීමටද හැකිය. මෙම යෙදුම ගැටලු හෝ යළි ආරම්භ වීම අත්විඳිය හැකිය.</translation>
 <translation id="4969341057194253438">පටිගත කිරීම මකන්න</translation>
 <translation id="4973922308112707173">ඉහළට දෙවරක් අනින්න</translation>
+<translation id="4976702386844183910">අවසන් වරට <ph name="DATE" /> පිවිසි</translation>
 <translation id="4984088539114770594">මයික්‍රෆෝනය භාවිත කරන්නද?</translation>
 <translation id="4984339528288761049">Prc5 (ලියුම් කවරය)</translation>
 <translation id="4989163558385430922">සියල්ල බලන්න</translation>
@@ -1344,6 +1345,7 @@
 <translation id="5215116848420601511">Google Pay භාවිතයෙන් ගෙවීම් ක්‍රම සහ ලිපින</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tray 13</translation>
+<translation id="5216942107514965959">අද අවසන් වරට පිවිසි</translation>
 <translation id="5222812217790122047">ඊ-තැපෑල අවශ්‍යයි</translation>
 <translation id="5230733896359313003">නැව්ගත කිරීමේ ලිපිනය</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1529,6 +1531,7 @@
 <translation id="5869522115854928033">සුරැකි රහස්වචන</translation>
 <translation id="5873013647450402046">ඔබගේ බැංකුවට මේ ඔබ බව තහවුරු කර ගැනීමට අවශ්‍යයි.</translation>
 <translation id="5887400589839399685">කාඩ්පත සුරැකිණි</translation>
+<translation id="5887687176710214216">අවසන් වරට ඊයේ පිවිසි</translation>
 <translation id="5895138241574237353">යළි අරඹන්න</translation>
 <translation id="5895187275912066135">නිකුත් කළේ</translation>
 <translation id="5901630391730855834">කහ</translation>
@@ -1722,6 +1725,7 @@
 <translation id="6529602333819889595">මැකීම &amp;යළි කරන්න</translation>
 <translation id="6545864417968258051">බ්ලූටූත් ස්කෑන් කිරීම</translation>
 <translation id="6547208576736763147">වමට ද්වි අනින්න</translation>
+<translation id="6554732001434021288">දින <ph name="NUM_DAYS" />කට පෙර අවසන් වරට පිවිසි</translation>
 <translation id="6556866813142980365">නැවත කරන්න</translation>
 <translation id="6569060085658103619">ඔබ දිගු පිටුවක් බලමින් සිටී</translation>
 <translation id="6573200754375280815">දකුණට දෙවරක් අනින්න</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index f22160f4..84f680f 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -1249,6 +1249,7 @@
 <translation id="4968522289500246572">Táto aplikácia je určená pre mobilné zariadenia a jej veľkosť sa nemusí náležite zmeniť. Môžu sa v nej vyskytnúť problémy alebo sa môže reštartovať.</translation>
 <translation id="4969341057194253438">Odstrániť nahrávku</translation>
 <translation id="4973922308112707173">Dve dierky hore</translation>
+<translation id="4976702386844183910">Naposledy navštívené <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Chcete používať mikrofón?</translation>
 <translation id="4984339528288761049">Prc5 (obálka)</translation>
 <translation id="4989163558385430922">Zobraziť všetko</translation>
@@ -1334,6 +1335,7 @@
 <translation id="5215116848420601511">Spôsoby platby a adresy pomocou Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Zásobník č. 13</translation>
+<translation id="5216942107514965959">Naposledy navštívený dnes</translation>
 <translation id="5222812217790122047">E-mailová adresa je povinný údaj</translation>
 <translation id="5230733896359313003">Dodacia adresa</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5869522115854928033">Uložené heslá</translation>
 <translation id="5873013647450402046">Vaša banka chce overiť, že ste to vy.</translation>
 <translation id="5887400589839399685">Karta bola uložená</translation>
+<translation id="5887687176710214216">Naposledy navštívený včera</translation>
 <translation id="5895138241574237353">Reštartovať</translation>
 <translation id="5895187275912066135">Vydané dňa</translation>
 <translation id="5901630391730855834">Žltá</translation>
@@ -1711,6 +1714,7 @@
 <translation id="6529602333819889595">&amp;Znova odstrániť</translation>
 <translation id="6545864417968258051">Vyhľadávanie zariadení Bluetooth</translation>
 <translation id="6547208576736763147">Dve dierky vľavo</translation>
+<translation id="6554732001434021288">Naposledy navštívené pred <ph name="NUM_DAYS" /> dňami</translation>
 <translation id="6556866813142980365">Znova</translation>
 <translation id="6569060085658103619">Prezeráte si stránku s rozšíreniami</translation>
 <translation id="6573200754375280815">Dve dierky vpravo</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index a6d464c..eabcd6c7 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Ta aplikacija je zasnovana za mobilne naprave in sprememba velikosti morda ne bo delovala pravilno. Z aplikacijo bodo morda težave ali pa se bo znova zagnala.</translation>
 <translation id="4969341057194253438">Izbriši posnetek</translation>
 <translation id="4973922308112707173">Dvojno luknjanje zgoraj</translation>
+<translation id="4976702386844183910">Nazadnje obiskano: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Želite uporabiti mikrofon?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Pokaži vse</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Plačilna sredstva in naslovi z Googlom Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Pladenj 13</translation>
+<translation id="5216942107514965959">Nazadnje obiskano danes</translation>
 <translation id="5222812217790122047">E-poštni naslov je obvezen</translation>
 <translation id="5230733896359313003">Naslov za pošiljanje</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Shranjena gesla</translation>
 <translation id="5873013647450402046">Vaša banka želi potrditi vašo identiteto.</translation>
 <translation id="5887400589839399685">Kartica je shranjena</translation>
+<translation id="5887687176710214216">Nazadnje obiskano včeraj</translation>
 <translation id="5895138241574237353">Znova zaženi</translation>
 <translation id="5895187275912066135">Izdano dne</translation>
 <translation id="5901630391730855834">Rumena</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Uveljavi izbris</translation>
 <translation id="6545864417968258051">Iskanje naprav Bluetooth</translation>
 <translation id="6547208576736763147">Dvojno luknjanje na levi</translation>
+<translation id="6554732001434021288">Nazadnje obiskano pred toliko dnevi: <ph name="NUM_DAYS" /></translation>
 <translation id="6556866813142980365">Uveljavi</translation>
 <translation id="6569060085658103619">Ogledujete si stran razširitve</translation>
 <translation id="6573200754375280815">Dvojno luknjanje na desni</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 6e06f622..76622e8 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -1259,6 +1259,7 @@
 <translation id="4968522289500246572">Ky aplikacion është projektuar për celular dhe përmasat mund të mos ndryshohen si duhet. Aplikacioni mund të ketë probleme ose të riniset.</translation>
 <translation id="4969341057194253438">Fshi regjistrimin</translation>
 <translation id="4973922308112707173">Dy shpime lart</translation>
+<translation id="4976702386844183910">Vizituar së fundi më <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Të përdoret mikrofoni?</translation>
 <translation id="4984339528288761049">Prc5 (Zarf)</translation>
 <translation id="4989163558385430922">Shiko të gjitha</translation>
@@ -1344,6 +1345,7 @@
 <translation id="5215116848420601511">Mënyrat e pagesës dhe adresat që përdorin Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tabakaja 13</translation>
+<translation id="5216942107514965959">Vizituar për herë të fundit sot</translation>
 <translation id="5222812217790122047">Email-i është i detyrueshëm</translation>
 <translation id="5230733896359313003">Adresa e dërgimit</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1529,6 +1531,7 @@
 <translation id="5869522115854928033">Fjalëkalimet e ruajtura</translation>
 <translation id="5873013647450402046">Banka jote dëshiron të konfirmojë që je ti.</translation>
 <translation id="5887400589839399685">Karta u ruajt</translation>
+<translation id="5887687176710214216">Vizituar së fundi dje</translation>
 <translation id="5895138241574237353">Rinis</translation>
 <translation id="5895187275912066135">Lëshuar më</translation>
 <translation id="5901630391730855834">E verdhë</translation>
@@ -1721,6 +1724,7 @@
 <translation id="6529602333819889595">&amp;Bëje përsëri fshirjen</translation>
 <translation id="6545864417968258051">Skanimi për Bluetooth</translation>
 <translation id="6547208576736763147">Dy shpime majtas</translation>
+<translation id="6554732001434021288">Vizituar së fundi <ph name="NUM_DAYS" /> ditë më parë</translation>
 <translation id="6556866813142980365">Ribëje</translation>
 <translation id="6569060085658103619">Po shikon një faqe të shtesës</translation>
 <translation id="6573200754375280815">Dy shpime djathtas</translation>
@@ -2288,6 +2292,7 @@
 <translation id="8390725133630534698">Ndarja nga <ph name="ORIGIN_NAME" /> te <ph name="VM_NAME" /> është bllokuar nga politika e administratorit</translation>
 <translation id="8398790343843005537">Gjej telefonin tënd</translation>
 <translation id="8405579342203358118">Menaxho se çfarë informacionesh sinkronizon ti te cilësimet e Chrome</translation>
+<translation id="8405633352367164037">Zemër</translation>
 <translation id="8409413588194360210">përpunuesit e pagesave</translation>
 <translation id="8412145213513410671">Ndërprerjet aksidentale (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Duhet ta fusësh dy herë të njëjtën frazë kalimi.</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb
index 2e5844d..1914c1d 100644
--- a/components/strings/components_strings_sr-Latn.xtb
+++ b/components/strings/components_strings_sr-Latn.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Ova aplikacija je dizajnirana za mobilne uređaje i možda neće promeniti veličinu na pravilan način. Možda će imati probleme ili se restartovati.</translation>
 <translation id="4969341057194253438">Izbriši snimak</translation>
 <translation id="4973922308112707173">Dvostruko bušenje na vrhu</translation>
+<translation id="4976702386844183910">Poslednja poseta: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Dozvolićete korišćenje mikrofona?</translation>
 <translation id="4984339528288761049">Prc5 (koverat)</translation>
 <translation id="4989163558385430922">Prikaži sve</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Načini plaćanja i adrese iz Google Pay-a</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">13. fioka</translation>
+<translation id="5216942107514965959">Poslednji posećen danas</translation>
 <translation id="5222812217790122047">Imejl je obavezan</translation>
 <translation id="5230733896359313003">Adresa za isporuku</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Sačuvane lozinke</translation>
 <translation id="5873013647450402046">Banka želi da potvrdi da ste to vi.</translation>
 <translation id="5887400589839399685">Kartica je sačuvana</translation>
+<translation id="5887687176710214216">Poslednja poseta: juče</translation>
 <translation id="5895138241574237353">Pokreni ponovo</translation>
 <translation id="5895187275912066135">Izdato</translation>
 <translation id="5901630391730855834">Žuta</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;Ponovi brisanje</translation>
 <translation id="6545864417968258051">Bluetooth skeniranje</translation>
 <translation id="6547208576736763147">Dvostruko bušenje na levoj strani</translation>
+<translation id="6554732001434021288">Poslednja poseta: pre <ph name="NUM_DAYS" /> dana</translation>
 <translation id="6556866813142980365">Ponovi</translation>
 <translation id="6569060085658103619">Pregledate stranicu dodatka.</translation>
 <translation id="6573200754375280815">Dvostruko bušenje na desnoj strani</translation>
@@ -2291,6 +2295,7 @@
 <translation id="8390725133630534698">Smernice za administratore blokiraju deljenje sa <ph name="ORIGIN_NAME" /> na lokaciju <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Pronađi telefon</translation>
 <translation id="8405579342203358118">Upravljajte time koje informacije sinhronizujete u podešavanjima Chrome-a</translation>
+<translation id="8405633352367164037">Srce</translation>
 <translation id="8409413588194360210">obrađivači plaćanja</translation>
 <translation id="8412145213513410671">Otkazivanja (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Potrebno je da dvaput unesete istu pristupnu frazu.</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index 7dc4069..408ba0f2 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Ова апликација је дизајнирана за мобилне уређаје и можда неће променити величину на правилан начин. Можда ће имати проблеме или се рестартовати.</translation>
 <translation id="4969341057194253438">Избриши снимак</translation>
 <translation id="4973922308112707173">Двоструко бушење на врху</translation>
+<translation id="4976702386844183910">Последња посета: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Дозволићете коришћење микрофона?</translation>
 <translation id="4984339528288761049">Prc5 (коверат)</translation>
 <translation id="4989163558385430922">Прикажи све</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Начини плаћања и адресе из Google Pay-а</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">13. фиока</translation>
+<translation id="5216942107514965959">Последњи посећен данас</translation>
 <translation id="5222812217790122047">Имејл је обавезан</translation>
 <translation id="5230733896359313003">Адреса за испоруку</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Сачуване лозинке</translation>
 <translation id="5873013647450402046">Банка жели да потврди да сте то ви.</translation>
 <translation id="5887400589839399685">Картица је сачувана</translation>
+<translation id="5887687176710214216">Последња посета: јуче</translation>
 <translation id="5895138241574237353">Покрени поново</translation>
 <translation id="5895187275912066135">Издато</translation>
 <translation id="5901630391730855834">Жута</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">&amp;Понови брисање</translation>
 <translation id="6545864417968258051">Bluetooth скенирање</translation>
 <translation id="6547208576736763147">Двоструко бушење на левој страни</translation>
+<translation id="6554732001434021288">Последња посета: пре <ph name="NUM_DAYS" /> дана</translation>
 <translation id="6556866813142980365">Понови</translation>
 <translation id="6569060085658103619">Прегледате страницу додатка.</translation>
 <translation id="6573200754375280815">Двоструко бушење на десној страни</translation>
@@ -2291,6 +2295,7 @@
 <translation id="8390725133630534698">Смернице за администраторе блокирају дељење са <ph name="ORIGIN_NAME" /> на локацију <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Пронађи телефон</translation>
 <translation id="8405579342203358118">Управљајте тиме које информације синхронизујете у подешавањима Chrome-а</translation>
+<translation id="8405633352367164037">Срце</translation>
 <translation id="8409413588194360210">обрађивачи плаћања</translation>
 <translation id="8412145213513410671">Отказивања (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Потребно је да двапут унесете исту приступну фразу.</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 42dbaad..2c58872 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Den här appen har utformats för mobila enheter och kan påverkas om storleken ändras. Appen kanske inte fungerar som den ska eller startas om.</translation>
 <translation id="4969341057194253438">Radera inspelningen</translation>
 <translation id="4973922308112707173">Två hål högst upp</translation>
+<translation id="4976702386844183910">Besöktes senast <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Vill du använda mikrofonen?</translation>
 <translation id="4984339528288761049">Prc5 (kuvert)</translation>
 <translation id="4989163558385430922">Visa alla</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Betalningsmetoder och adresser som används med Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Fack 13</translation>
+<translation id="5216942107514965959">Besöktes senast i dag</translation>
 <translation id="5222812217790122047">E-postadress måste anges</translation>
 <translation id="5230733896359313003">Leveransadress</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Sparade lösenord</translation>
 <translation id="5873013647450402046">Din bank vill bekräfta att det är du.</translation>
 <translation id="5887400589839399685">Kortet har sparats</translation>
+<translation id="5887687176710214216">Besöktes senast i går</translation>
 <translation id="5895138241574237353">Starta om</translation>
 <translation id="5895187275912066135">Utfärdat</translation>
 <translation id="5901630391730855834">Gul</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Gör om Ta bort</translation>
 <translation id="6545864417968258051">Bluetooth-sökning</translation>
 <translation id="6547208576736763147">Två hål till vänster</translation>
+<translation id="6554732001434021288">Besöktes senast för <ph name="NUM_DAYS" /> dagar sedan</translation>
 <translation id="6556866813142980365">Upprepa</translation>
 <translation id="6569060085658103619">Du visar en tilläggssida</translation>
 <translation id="6573200754375280815">Två hål till höger</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">Möjligheten att dela från <ph name="ORIGIN_NAME" /> till <ph name="VM_NAME" /> har blockerats av administratörspolicyn</translation>
 <translation id="8398790343843005537">Sök efter mobilen</translation>
 <translation id="8405579342203358118">Hantera vilken information som synkroniseras i inställningarna för Chrome</translation>
+<translation id="8405633352367164037">Hjärta</translation>
 <translation id="8409413588194360210">betalningshanterare</translation>
 <translation id="8412145213513410671">Krascher (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Du måste ange samma lösenfras två gånger.</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index a12f5b47..34d9c9b 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -1261,6 +1261,7 @@
 <translation id="4968522289500246572">Programu hii imeundwa kwa ajili ya vifaa vya mkononi na huenda ukubwa wake usibadilike vizuri. Huenda programu ikakumbwa na matatizo au izimwe kisha iwashwe tena.</translation>
 <translation id="4969341057194253438">Futa rekodi</translation>
 <translation id="4973922308112707173">Toboa juu mara mbili</translation>
+<translation id="4976702386844183910">Ilitembelewa mara ya mwisho <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Ungependa kutumia maikrofoni?</translation>
 <translation id="4984339528288761049">Prc5 (Bahasha)</translation>
 <translation id="4989163558385430922">Angalia vyote</translation>
@@ -1346,6 +1347,7 @@
 <translation id="5215116848420601511">Njia za kulipa na anwani zinazotumia Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Trei ya 13</translation>
+<translation id="5216942107514965959">Ilitembelewa mara ya mwisho leo</translation>
 <translation id="5222812217790122047">Anwani ya barua pepe inahitajika</translation>
 <translation id="5230733896359313003">Anwani ya Mahali Bidhaa Zitakapopelekwa</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1531,6 +1533,7 @@
 <translation id="5869522115854928033">Manenosiri yaliyohifadhiwa</translation>
 <translation id="5873013647450402046">Benki yako ingependa kuthibitisha kwamba ni wewe.</translation>
 <translation id="5887400589839399685">Kadi imehifadhiwa</translation>
+<translation id="5887687176710214216">Ilitembelewa mara ya mwisho jana</translation>
 <translation id="5895138241574237353">Zzima na uwashe</translation>
 <translation id="5895187275912066135">Kilitolewa</translation>
 <translation id="5901630391730855834">Manjano</translation>
@@ -1724,6 +1727,7 @@
 <translation id="6529602333819889595">Rudia Kufuta</translation>
 <translation id="6545864417968258051">Kutafuta Bluetooth</translation>
 <translation id="6547208576736763147">Toboa mara mbili kushoto</translation>
+<translation id="6554732001434021288">Ilitembelewa mara ya mwisho siku <ph name="NUM_DAYS" /> zilizopita</translation>
 <translation id="6556866813142980365">Rudia</translation>
 <translation id="6569060085658103619">Unaangalia ukurasa wa kiendelezi</translation>
 <translation id="6573200754375280815">Toboa mara mbili kulia</translation>
@@ -2289,6 +2293,7 @@
 <translation id="8390725133630534698">Sera ya msimamizi imezuia kushiriki kwenye <ph name="VM_NAME" /> kutoka <ph name="ORIGIN_NAME" /></translation>
 <translation id="8398790343843005537">Tafuta simu yako</translation>
 <translation id="8405579342203358118">Dhibiti maelezo unayosawazisha katika mipangilio ya Chrome</translation>
+<translation id="8405633352367164037">Moyo</translation>
 <translation id="8409413588194360210">vidhibiti vya malipo</translation>
 <translation id="8412145213513410671">Mivurugo ( <ph name="CRASH_COUNT" /> )</translation>
 <translation id="8412392972487953978">Lazima uingize kaulisiri ile ile mara mbili.</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 6c304a0..c4a032bb 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -1258,6 +1258,7 @@
 <translation id="4968522289500246572">மொபைல் சாதனங்களுக்காக இந்த ஆப்ஸ் வடிவமைக்கப்பட்டுள்ளதால் இதன் அளவைச் சரியாக மாற்ற முடியாமல் போகலாம். அத்துடன் இதில் சிக்கல்கள் ஏற்படலாம் அல்லது இது மீண்டும் தொடங்கலாம்.</translation>
 <translation id="4969341057194253438">ரெக்கார்டிங்கை நீக்கு</translation>
 <translation id="4973922308112707173">டூயல் பஞ்ச் டாப்</translation>
+<translation id="4976702386844183910">கடைசியாகப் பார்த்தது: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">மைக்ரோஃபோனைப் பயன்படுத்தவா?</translation>
 <translation id="4984339528288761049">Prc5 (என்வலப்)</translation>
 <translation id="4989163558385430922">எல்லாம் காட்டு</translation>
@@ -1343,6 +1344,7 @@
 <translation id="5215116848420601511">Google Payவைப் பயன்படுத்தும் கட்டண முறைகளும் முகவரிகளும்</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">டிரே 13</translation>
+<translation id="5216942107514965959">கடைசியாகப் பார்த்தது: இன்று</translation>
 <translation id="5222812217790122047">மின்னஞ்சல் தேவை</translation>
 <translation id="5230733896359313003">ஷிப்பிங் முகவரி</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1528,6 +1530,7 @@
 <translation id="5869522115854928033">சேமிக்கப்பட்ட கடவுச்சொற்கள்</translation>
 <translation id="5873013647450402046">இது நீங்கள்தான் என்பதை உங்கள் பேங்க் உறுதிசெய்ய விரும்புகிறது.</translation>
 <translation id="5887400589839399685">கார்டு சேமிக்கப்பட்டது</translation>
+<translation id="5887687176710214216">கடைசியாகப் பார்த்தது: நேற்று</translation>
 <translation id="5895138241574237353">மறுதொடக்கம்</translation>
 <translation id="5895187275912066135">வழங்கப்பட்டது</translation>
 <translation id="5901630391730855834">மஞ்சள்</translation>
@@ -1720,6 +1723,7 @@
 <translation id="6529602333819889595">&amp;நீக்குதலை மீண்டும் செய்</translation>
 <translation id="6545864417968258051">புளூடூத் ஸ்கேனிங்</translation>
 <translation id="6547208576736763147">டூயல் பஞ்ச் லெஃப்ட்</translation>
+<translation id="6554732001434021288">கடைசியாகப் பார்த்தது: <ph name="NUM_DAYS" /> நாட்களுக்கு முன்</translation>
 <translation id="6556866813142980365">மீண்டும் செய்</translation>
 <translation id="6569060085658103619">நீட்டிப்புப் பக்கத்தைப் பார்க்கிறீர்கள்</translation>
 <translation id="6573200754375280815">டூயல் பஞ்ச் ரைட்</translation>
@@ -2287,6 +2291,7 @@
 <translation id="8390725133630534698"><ph name="ORIGIN_NAME" /> என்ற தளத்திலிருந்து <ph name="VM_NAME" />க்குப் பகிர்வது நிர்வாகக் கொள்கையின்படி தடுக்கப்பட்டுள்ளது</translation>
 <translation id="8398790343843005537">உங்கள் மொபைலைக் கண்டறியவும்</translation>
 <translation id="8405579342203358118">எந்தெந்தத் தகவல்களை ஒத்திசைக்க வேண்டும் என்பதை Chrome அமைப்புகளில் நிர்வகியுங்கள்</translation>
+<translation id="8405633352367164037">இதயம்</translation>
 <translation id="8409413588194360210">பேமெண்ட் ஹேண்ட்லர்கள்</translation>
 <translation id="8412145213513410671">செயலிழப்புகள் (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">நீங்கள் கண்டிப்பாக ஒரே கடவுச்சொற்றொடரை இரு முறை உள்ளிட வேண்டும்.</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index dc3e6f9..e8a3c39 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -1264,6 +1264,7 @@
 <translation id="4968522289500246572">ఈ యాప్ మొబైల్ కోసం డిజైన్ చేయబడింది, పరిమాణాన్ని మార్చడం సాధ్యం కాకపోవచ్చు. యాప్‌ను ఉపయోగించేటప్పుడు సమస్యలు ఎదురుకావచ్చు లేదా మీరు రీస్టార్ట్ చేయవలసి రావచ్చు.</translation>
 <translation id="4969341057194253438">రికార్డింగ్‌ను తొలగించండి</translation>
 <translation id="4973922308112707173">ఎగువ భాగంలో రెండు రంధ్రాలు</translation>
+<translation id="4976702386844183910"><ph name="DATE" />న చివరగా సందర్శించారు</translation>
 <translation id="4984088539114770594">మైక్రోఫోన్‌ను ఉపయోగించాలా?</translation>
 <translation id="4984339528288761049">Prc5 (ఎన్వలప్)</translation>
 <translation id="4989163558385430922">అన్నీ చూడండి</translation>
@@ -1349,6 +1350,7 @@
 <translation id="5215116848420601511">Google Payని ఉపయోగిస్తున్న చెల్లింపు పద్ధతులు మరియు అడ్రస్‌లు</translation>
 <translation id="5215363486134917902">ఫోలియో-Sp</translation>
 <translation id="521659676233207110">ట్రే 13</translation>
+<translation id="5216942107514965959">చివరిగా ఈరోజు సందర్శించారు</translation>
 <translation id="5222812217790122047">ఈమెయిల్‌ అవ‌స‌రం</translation>
 <translation id="5230733896359313003">బట్వాడా అడ్రస్‌</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1534,6 +1536,7 @@
 <translation id="5869522115854928033">సేవ్  చేసిన పాస్‌వర్డ్‌లు</translation>
 <translation id="5873013647450402046">ఇది మీరేనని మీ బ్యాంక్ నిర్ధారించుకోవాలనుకుంటోంది.</translation>
 <translation id="5887400589839399685">కార్డ్ సేవ్ చేయబడింది</translation>
+<translation id="5887687176710214216">చివరిగా నిన్న సందర్శించారు</translation>
 <translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation>
 <translation id="5895187275912066135">జారీ చేయబడినది</translation>
 <translation id="5901630391730855834">పసుపు</translation>
@@ -1727,6 +1730,7 @@
 <translation id="6529602333819889595">&amp;తొలగించడాన్ని పునరావృతం చేయి</translation>
 <translation id="6545864417968258051">బ్లూటూత్ స్కానింగ్</translation>
 <translation id="6547208576736763147">ఎడమవైపు రెండు రంధ్రాలు</translation>
+<translation id="6554732001434021288"><ph name="NUM_DAYS" /> రోజుల క్రితం చివరిగా సందర్శించారు</translation>
 <translation id="6556866813142980365">మళ్లీ చేయి</translation>
 <translation id="6569060085658103619">మీరు ఎక్స్‌టెన్షన్‌ పేజీని వీక్షిస్తున్నారు</translation>
 <translation id="6573200754375280815">కుడివైపు రెండు రంధ్రాలు</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 732e81a..9e1754565 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -1252,6 +1252,7 @@
 <translation id="4968522289500246572">แอปนี้ออกแบบมาสำหรับอุปกรณ์เคลื่อนที่และอาจไม่เหมาะกับการปรับขนาด แอปอาจเกิดปัญหาหรือรีสตาร์ท</translation>
 <translation id="4969341057194253438">ลบการบันทึก</translation>
 <translation id="4973922308112707173">เจาะรูด้านบน 2 รู</translation>
+<translation id="4976702386844183910">เข้าชมล่าสุด <ph name="DATE" /></translation>
 <translation id="4984088539114770594">ใช้ไมโครโฟนไหม</translation>
 <translation id="4984339528288761049">Prc5 (ซองจดหมาย)</translation>
 <translation id="4989163558385430922">ดูทั้งหมด</translation>
@@ -1337,6 +1338,7 @@
 <translation id="5215116848420601511">วิธีการชำระเงินและที่อยู่จาก Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ถาด 13</translation>
+<translation id="5216942107514965959">เข้าชมล่าสุดวันนี้</translation>
 <translation id="5222812217790122047">ต้องระบุอีเมล</translation>
 <translation id="5230733896359313003">ที่อยู่ในการจัดส่ง</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1522,6 +1524,7 @@
 <translation id="5869522115854928033">รหัสผ่านที่บันทึกไว้</translation>
 <translation id="5873013647450402046">ธนาคารต้องการยืนยันตัวตนของคุณ</translation>
 <translation id="5887400589839399685">บันทึกการ์ดแล้ว</translation>
+<translation id="5887687176710214216">เข้าชมล่าสุดเมื่อวาน</translation>
 <translation id="5895138241574237353">ปิดแล้วเปิดอีกครั้ง</translation>
 <translation id="5895187275912066135">ออกเมื่อ</translation>
 <translation id="5901630391730855834">สีเหลือง</translation>
@@ -1715,6 +1718,7 @@
 <translation id="6529602333819889595">&amp;ทำซ้ำการนำออก</translation>
 <translation id="6545864417968258051">การสแกนหาบลูทูธ</translation>
 <translation id="6547208576736763147">เจาะรูด้านซ้าย 2 รู</translation>
+<translation id="6554732001434021288">เข้าชมล่าสุด <ph name="NUM_DAYS" /> วันที่ผ่านมา</translation>
 <translation id="6556866813142980365">ทำซ้ำ</translation>
 <translation id="6569060085658103619">คุณกำลังดูหน้าส่วนขยาย</translation>
 <translation id="6573200754375280815">เจาะรูด้านขวา 2 รู</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 63a32adc..0e9337c 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -1255,6 +1255,7 @@
 <translation id="4968522289500246572">Bu uygulama, mobil cihazlar için tasarlandığından düzgün bir şekilde yeniden boyutlandırılamayabilir. Uygulama sorun çıkarabilir veya yeniden başlatılabilir.</translation>
 <translation id="4969341057194253438">Kaydı sil</translation>
 <translation id="4973922308112707173">Üstte ikili delik</translation>
+<translation id="4976702386844183910">Son ziyaret tarihi: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Mikrofon kullanılsın mı?</translation>
 <translation id="4984339528288761049">Prc5 (Zarf)</translation>
 <translation id="4989163558385430922">Tümünü göster</translation>
@@ -1340,6 +1341,7 @@
 <translation id="5215116848420601511">Google Pay'i kullanan ödeme yöntemleri ve adresler</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tepsi 13</translation>
+<translation id="5216942107514965959">En son bugün ziyaret edildi</translation>
 <translation id="5222812217790122047">E-posta gerekli</translation>
 <translation id="5230733896359313003">Gönderim Adresi</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1525,6 +1527,7 @@
 <translation id="5869522115854928033">Kayıtlı şifreler</translation>
 <translation id="5873013647450402046">Bankanız kimliğinizi doğrulamak istiyor.</translation>
 <translation id="5887400589839399685">Kart kaydedildi</translation>
+<translation id="5887687176710214216">En son dün ziyaret edildi</translation>
 <translation id="5895138241574237353">Yeniden başlat</translation>
 <translation id="5895187275912066135">Verildiği Tarih</translation>
 <translation id="5901630391730855834">Sarı</translation>
@@ -1718,6 +1721,7 @@
 <translation id="6529602333819889595">Silmeyi &amp;Yeniden Yap</translation>
 <translation id="6545864417968258051">Bluetooth taraması</translation>
 <translation id="6547208576736763147">Solda ikili delik</translation>
+<translation id="6554732001434021288">En son <ph name="NUM_DAYS" /> gün önce ziyaret edildi</translation>
 <translation id="6556866813142980365">Yeniden Yap</translation>
 <translation id="6569060085658103619">Bir uzantı sayfası görüntülüyorsunuz</translation>
 <translation id="6573200754375280815">Sağda ikili delik</translation>
@@ -2285,6 +2289,7 @@
 <translation id="8390725133630534698"><ph name="ORIGIN_NAME" /> sitesinden <ph name="VM_NAME" /> ile paylaşma işlevi, yönetici politikası tarafından engellendi</translation>
 <translation id="8398790343843005537">Telefonunuzu bulun</translation>
 <translation id="8405579342203358118">Chrome ayarlarında hangi bilgileri senkronize ettiğinizi yönetin</translation>
+<translation id="8405633352367164037">Kalp</translation>
 <translation id="8409413588194360210">ödeme işleyiciler</translation>
 <translation id="8412145213513410671">Kilitlenme Sayısı (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Aynı parolayı iki kez girmelisiniz.</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index adbd57f8..41ccbca 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Цей додаток створено для мобільних пристроїв, тому можуть виникати проблеми зі зміною розміру на різних екранах. Також можуть траплятися помилки в роботі й перезапуски.</translation>
 <translation id="4969341057194253438">Видалити запис</translation>
 <translation id="4973922308112707173">Пробити два отвори вгорі</translation>
+<translation id="4976702386844183910">Останнє відвідування: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Використовувати мікрофон?</translation>
 <translation id="4984339528288761049">Prc5 (конверт)</translation>
 <translation id="4989163558385430922">Показати все</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Способи оплати й адреси, пов’язані з Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Лоток 13</translation>
+<translation id="5216942107514965959">Останнє відвідування: сьогодні</translation>
 <translation id="5222812217790122047">Укажіть електронну адресу</translation>
 <translation id="5230733896359313003">Адреса доставки</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Збережені паролі</translation>
 <translation id="5873013647450402046">Банку потрібне підтвердження вашої особи.</translation>
 <translation id="5887400589839399685">Картку збережено</translation>
+<translation id="5887687176710214216">Останнє відвідування: вчора</translation>
 <translation id="5895138241574237353">Перезапустити</translation>
 <translation id="5895187275912066135">Дата видачі</translation>
 <translation id="5901630391730855834">Жовтий</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Повторити видалення</translation>
 <translation id="6545864417968258051">Пошук пристроїв Bluetooth</translation>
 <translation id="6547208576736763147">Пробити два отвори ліворуч</translation>
+<translation id="6554732001434021288">Останнє відвідування: <ph name="NUM_DAYS" /> дн. тому</translation>
 <translation id="6556866813142980365">Повторити</translation>
 <translation id="6569060085658103619">Ви переглядаєте сторінку розширень</translation>
 <translation id="6573200754375280815">Пробити два отвори праворуч</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb
index f1d588b5..2eaa427 100644
--- a/components/strings/components_strings_ur.xtb
+++ b/components/strings/components_strings_ur.xtb
@@ -1263,6 +1263,7 @@
 <translation id="4968522289500246572">یہ ایپ موبائل کیلئے ڈیزائن کی گئی ہے اور ممکن ہے کہ اس کا سائز صحیح طریقے سے تبدیل نہ ہو۔ اس کو استعمال کرنے میں مسائل کا سامنا ہو سکتا ہے یا ری اسٹارٹ کرنا پڑ سکتی ہے۔</translation>
 <translation id="4969341057194253438">ریکارڈنگ حذف کریں</translation>
 <translation id="4973922308112707173">اوپر دُہرا سوراخ</translation>
+<translation id="4976702386844183910">آخری بار ملاحظہ کردہ <ph name="DATE" /></translation>
 <translation id="4984088539114770594">مائیکروفون کا استعمال کریں؟</translation>
 <translation id="4984339528288761049">Prc5 ‎(Envelope‎)‎</translation>
 <translation id="4989163558385430922">سبھی دیکھیں</translation>
@@ -1348,6 +1349,7 @@
 <translation id="5215116848420601511">‏Google Pay استعمال کرنے والے ادائیگی کے طریقے اور پتے</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">ٹرے 13</translation>
+<translation id="5216942107514965959">آخری بار آج ملاحظہ کیا گیا</translation>
 <translation id="5222812217790122047">ای میل مطلوب ہے</translation>
 <translation id="5230733896359313003">ترسیل کا پتہ</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1533,6 +1535,7 @@
 <translation id="5869522115854928033">محفوظ کردہ پاس ورڈز</translation>
 <translation id="5873013647450402046">آپ کا بینک تصدیق کرنا چاہتا ہے کہ یہ آپ ہیں۔</translation>
 <translation id="5887400589839399685">کارڈ محفوظ کیا گیا</translation>
+<translation id="5887687176710214216">آخری بار گزشتہ کل چیک کیا گیا</translation>
 <translation id="5895138241574237353">دوبارہ شروع کریں</translation>
 <translation id="5895187275912066135">تاریخ اجراء</translation>
 <translation id="5901630391730855834">پیلا</translation>
@@ -1727,6 +1730,7 @@
 <translation id="6529602333819889595">&amp;دوبارہ حذف کریں</translation>
 <translation id="6545864417968258051">بلوٹوتھ اسکیننگ</translation>
 <translation id="6547208576736763147">بائیں طرف دُہرا سوراخ</translation>
+<translation id="6554732001434021288">سائٹ آخری بار <ph name="NUM_DAYS" /> دن پہلے ملاحظہ کی گئی</translation>
 <translation id="6556866813142980365">واپس لائیں</translation>
 <translation id="6569060085658103619">آپ ایک ایکسٹینشن صفحہ دیکھ رہے ہیں</translation>
 <translation id="6573200754375280815">دائیں طرف دُہرا سوراخ</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index b78a13e4..dcace9a 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -1257,6 +1257,7 @@
 <translation id="4968522289500246572">Bu ilova mobil qurilmalar uchun ishlab chiqilgan va oʻlchami bexato oʻzgarmasligi mumkin. Ishlashida xato chiqishi yoki qaytadan ishga tushishi mumkin.</translation>
 <translation id="4969341057194253438">Yozuvni oʻchirish</translation>
 <translation id="4973922308112707173">Yuqoridan 2 ta teshik ochish</translation>
+<translation id="4976702386844183910">Oxirgi tashrif: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Mikrofon ishlatilsinmi?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Hammasi</translation>
@@ -1342,6 +1343,7 @@
 <translation id="5215116848420601511">Google Pay xizmatidagi bank kartalari va manzillar</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Tarnov 13</translation>
+<translation id="5216942107514965959">Oxirgi tashrif: bugun</translation>
 <translation id="5222812217790122047">E-pochtangizni kiriting</translation>
 <translation id="5230733896359313003">Yetkazib berish manzili</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1527,6 +1529,7 @@
 <translation id="5869522115854928033">Saqlab olingan parollar</translation>
 <translation id="5873013647450402046">Bank shaxsingizni tasdiqlamoqchi.</translation>
 <translation id="5887400589839399685">Karta saqlandi</translation>
+<translation id="5887687176710214216">Oxirgi tashrif: kecha</translation>
 <translation id="5895138241574237353">Qayta ishga tushirish</translation>
 <translation id="5895187275912066135">Berilgan vaqti</translation>
 <translation id="5901630391730855834">Sariq</translation>
@@ -1719,6 +1722,7 @@
 <translation id="6529602333819889595">&amp;O‘chirishni qaytarish</translation>
 <translation id="6545864417968258051">Bluetooth qurilmalarni qidirish</translation>
 <translation id="6547208576736763147">Chapdan 2 ta teshik ochish</translation>
+<translation id="6554732001434021288">Oxirgi tashrif: <ph name="NUM_DAYS" /> kun oldin</translation>
 <translation id="6556866813142980365">Qaytarish</translation>
 <translation id="6569060085658103619">Siz kengaytma sahifasidasiz.</translation>
 <translation id="6573200754375280815">Oʻngdan 2 ta teshik ochish</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index 7dd7b6a..d5106b8 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -1262,6 +1262,7 @@
 <translation id="4968522289500246572">Ứng dụng này được thiết kế cho thiết bị di động và có thể thay đổi kích thước không chuẩn xác. Ứng dụng có thể gặp sự cố hoặc khởi động lại.</translation>
 <translation id="4969341057194253438">Xóa bản ghi</translation>
 <translation id="4973922308112707173">Đục 2 lỗ trên cùng</translation>
+<translation id="4976702386844183910">Lần truy cập gần đây nhất: <ph name="DATE" /></translation>
 <translation id="4984088539114770594">Sử dụng micrô?</translation>
 <translation id="4984339528288761049">Prc5 (Phong bì)</translation>
 <translation id="4989163558385430922">Xem tất cả</translation>
@@ -1347,6 +1348,7 @@
 <translation id="5215116848420601511">Địa chỉ và phương thức thanh toán lưu trong Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Khay 13</translation>
+<translation id="5216942107514965959">Lần truy cập gần đây nhất: hôm nay</translation>
 <translation id="5222812217790122047">Cần có email</translation>
 <translation id="5230733896359313003">Địa chỉ giao hàng</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1532,6 +1534,7 @@
 <translation id="5869522115854928033">Mật khẩu đã lưu</translation>
 <translation id="5873013647450402046">Ngân hàng của bạn muốn xác nhận danh tính của bạn.</translation>
 <translation id="5887400589839399685">Đã lưu thẻ</translation>
+<translation id="5887687176710214216">Lần truy cập gần đây nhất: hôm qua</translation>
 <translation id="5895138241574237353">Khởi động lại</translation>
 <translation id="5895187275912066135">Cấp vào</translation>
 <translation id="5901630391730855834">Vàng</translation>
@@ -1725,6 +1728,7 @@
 <translation id="6529602333819889595">&amp;Làm lại xóa</translation>
 <translation id="6545864417968258051">Quét tìm Bluetooth</translation>
 <translation id="6547208576736763147">Đục 2 lỗ bên trái</translation>
+<translation id="6554732001434021288">Lần truy cập gần đây nhất: <ph name="NUM_DAYS" /> ngày trước</translation>
 <translation id="6556866813142980365">Làm lại</translation>
 <translation id="6569060085658103619">Bạn đang xem trang tiện ích</translation>
 <translation id="6573200754375280815">Đục 2 lỗ bên phải</translation>
@@ -2292,6 +2296,7 @@
 <translation id="8390725133630534698">Chính sách của quản trị viên đã chặn thao tác chia sẻ từ <ph name="ORIGIN_NAME" /> với <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">Tìm điện thoại của bạn</translation>
 <translation id="8405579342203358118">Quản lý loại thông tin bạn đồng bộ hóa trong phần Cài đặt của Chrome</translation>
+<translation id="8405633352367164037">Trái tim</translation>
 <translation id="8409413588194360210">trình xử lý thanh toán</translation>
 <translation id="8412145213513410671">Sự cố (<ph name="CRASH_COUNT" />)</translation>
 <translation id="8412392972487953978">Bạn phải nhập cùng một cụm mật khẩu hai lần.</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index 0334224..bb2c957 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -1249,6 +1249,7 @@
 <translation id="4968522289500246572">此应用是专为移动设备设计的,可能无法妥当地调整大小。此应用可能会出现问题或重启。</translation>
 <translation id="4969341057194253438">删除录屏</translation>
 <translation id="4973922308112707173">双孔(顶部)</translation>
+<translation id="4976702386844183910">上次访问日期:<ph name="DATE" /></translation>
 <translation id="4984088539114770594">使用麦克风?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">查看全部</translation>
@@ -1334,6 +1335,7 @@
 <translation id="5215116848420601511">Google Pay 中存储的付款方式和地址信息</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">纸匣 13</translation>
+<translation id="5216942107514965959">上次访问时间:今天</translation>
 <translation id="5222812217790122047">需要提供电子邮件地址</translation>
 <translation id="5230733896359313003">送货地址</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1519,6 +1521,7 @@
 <translation id="5869522115854928033">已保存的密码</translation>
 <translation id="5873013647450402046">银行需要确认您的身份。</translation>
 <translation id="5887400589839399685">已保存卡片</translation>
+<translation id="5887687176710214216">上次访问时间:昨天</translation>
 <translation id="5895138241574237353">重新启动</translation>
 <translation id="5895187275912066135">颁发日期</translation>
 <translation id="5901630391730855834">黄色</translation>
@@ -1711,6 +1714,7 @@
 <translation id="6529602333819889595">恢复删除(&amp;R)</translation>
 <translation id="6545864417968258051">蓝牙扫描</translation>
 <translation id="6547208576736763147">双孔(左侧)</translation>
+<translation id="6554732001434021288">上次访问时间:<ph name="NUM_DAYS" /> 天前</translation>
 <translation id="6556866813142980365">重做</translation>
 <translation id="6569060085658103619">您正在查看扩展程序页面</translation>
 <translation id="6573200754375280815">双孔(右侧)</translation>
@@ -2278,6 +2282,7 @@
 <translation id="8390725133630534698">管理员政策禁止将 <ph name="ORIGIN_NAME" /> 上的内容分享给 <ph name="VM_NAME" /></translation>
 <translation id="8398790343843005537">查找您的手机</translation>
 <translation id="8405579342203358118">在 Chrome 设置中管理您要同步的信息</translation>
+<translation id="8405633352367164037">心形</translation>
 <translation id="8409413588194360210">付款处理程序</translation>
 <translation id="8412145213513410671">崩溃次数(<ph name="CRASH_COUNT" /> 次)</translation>
 <translation id="8412392972487953978">您两次输入的密码必须相同。</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb
index 5f8222a..cf3ef96 100644
--- a/components/strings/components_strings_zh-HK.xtb
+++ b/components/strings/components_strings_zh-HK.xtb
@@ -1252,6 +1252,7 @@
 <translation id="4968522289500246572">此應用程式專為流動裝置而設,可能無法正常調整大小。應用程式可能會發生問題或重新啟動。</translation>
 <translation id="4969341057194253438">刪除錄影</translation>
 <translation id="4973922308112707173">雙孔 (頂端)</translation>
+<translation id="4976702386844183910">上次瀏覽日期:<ph name="DATE" /></translation>
 <translation id="4984088539114770594">要使用麥克風嗎?</translation>
 <translation id="4984339528288761049">Prc5 (信封)</translation>
 <translation id="4989163558385430922">查看全部</translation>
@@ -1337,6 +1338,7 @@
 <translation id="5215116848420601511">使用 Google Pay 儲存的付款方法和地址</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">紙匣 13</translation>
+<translation id="5216942107514965959">上次瀏覽時間:今天</translation>
 <translation id="5222812217790122047">需要提供電郵</translation>
 <translation id="5230733896359313003">付運地址</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1522,6 +1524,7 @@
 <translation id="5869522115854928033">已儲存的密碼</translation>
 <translation id="5873013647450402046">銀行要確認您的身分。</translation>
 <translation id="5887400589839399685">已儲存的付款卡</translation>
+<translation id="5887687176710214216">上次瀏覽日期:昨天</translation>
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5895187275912066135">發行日期</translation>
 <translation id="5901630391730855834">黃色</translation>
@@ -1715,6 +1718,7 @@
 <translation id="6529602333819889595">重做刪除(&amp;R)</translation>
 <translation id="6545864417968258051">藍牙掃瞄</translation>
 <translation id="6547208576736763147">雙孔 (左側)</translation>
+<translation id="6554732001434021288">上次瀏覽日期:<ph name="NUM_DAYS" /> 天前</translation>
 <translation id="6556866813142980365">重做</translation>
 <translation id="6569060085658103619">您正在查看擴充程式頁面</translation>
 <translation id="6573200754375280815">雙孔 (右側)</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 30690a6..e2a7b34 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -1253,6 +1253,7 @@
 <translation id="4968522289500246572">這是專為行動裝置設計的應用程式,大小可能未妥善調整。此應用程式可能會發生問題,或是重新啟動。</translation>
 <translation id="4969341057194253438">刪除錄製內容</translation>
 <translation id="4973922308112707173">雙孔 (頂端)</translation>
+<translation id="4976702386844183910">上次造訪日期:<ph name="DATE" /></translation>
 <translation id="4984088539114770594">要使用麥克風嗎?</translation>
 <translation id="4984339528288761049">Prc5 (信封)</translation>
 <translation id="4989163558385430922">查看全部</translation>
@@ -1338,6 +1339,7 @@
 <translation id="5215116848420601511">儲存在 Google Pay 的付款方式和地址資訊</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">紙匣 13</translation>
+<translation id="5216942107514965959">上次造訪日期:今天</translation>
 <translation id="5222812217790122047">請輸入電子郵件地址</translation>
 <translation id="5230733896359313003">運送地址</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1523,6 +1525,7 @@
 <translation id="5869522115854928033">已儲存的密碼</translation>
 <translation id="5873013647450402046">銀行希望確認你的身分。</translation>
 <translation id="5887400589839399685">已儲存卡片</translation>
+<translation id="5887687176710214216">上次造訪日期:昨天</translation>
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5895187275912066135">發行日期</translation>
 <translation id="5901630391730855834">黃色</translation>
@@ -1716,6 +1719,7 @@
 <translation id="6529602333819889595">重做刪除(&amp;R)</translation>
 <translation id="6545864417968258051">藍牙掃描</translation>
 <translation id="6547208576736763147">雙孔 (左側)</translation>
+<translation id="6554732001434021288">上次造訪日期:<ph name="NUM_DAYS" /> 天前</translation>
 <translation id="6556866813142980365">重做</translation>
 <translation id="6569060085658103619">目前顯示的是擴充功能頁面</translation>
 <translation id="6573200754375280815">雙孔 (右側)</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb
index 71f2c7a..f6f9201 100644
--- a/components/strings/components_strings_zu.xtb
+++ b/components/strings/components_strings_zu.xtb
@@ -1259,6 +1259,7 @@
 <translation id="4968522289500246572">Le app idizayinelwe iselula futhi ingase ingashintshi kahle usayizi. I-app ingase ibhekane nezinkinga noma iqale kabusha.</translation>
 <translation id="4969341057194253438">Sula okurekhodiwe</translation>
 <translation id="4973922308112707173">Ukushaya okubili phezulu</translation>
+<translation id="4976702386844183910">Ugcine ukuvakashela ngo-<ph name="DATE" /></translation>
 <translation id="4984088539114770594">Sebenzisa imakrofoni?</translation>
 <translation id="4984339528288761049">Prc5 (Envelope)</translation>
 <translation id="4989163558385430922">Buka konke</translation>
@@ -1344,6 +1345,7 @@
 <translation id="5215116848420601511">Izindlela zokukhokha namakheli asebenzisa i-Google Pay</translation>
 <translation id="5215363486134917902">Folio-Sp</translation>
 <translation id="521659676233207110">Ithileyi 13</translation>
+<translation id="5216942107514965959">Kugcine ukuvakashelwa namuhla</translation>
 <translation id="5222812217790122047">I-imeyili iyadingeka</translation>
 <translation id="5230733896359313003">Ikheli lokuthumela</translation>
 <translation id="5230815978613972521">B8</translation>
@@ -1529,6 +1531,7 @@
 <translation id="5869522115854928033">Amaphasiwedi alondoloziwe</translation>
 <translation id="5873013647450402046">Ibhange lakho lifuna ukuqinisekisa ukuthi nguwe.</translation>
 <translation id="5887400589839399685">Ikhadi lilondoloziwe</translation>
+<translation id="5887687176710214216">Kugcine ukuvakashelwa izolo</translation>
 <translation id="5895138241574237353">Qalisa kabusha</translation>
 <translation id="5895187275912066135">Kukhishwe ku-</translation>
 <translation id="5901630391730855834">Okuliphuzi</translation>
@@ -1722,6 +1725,7 @@
 <translation id="6529602333819889595">&amp;Yenza futhi ukususa</translation>
 <translation id="6545864417968258051">Ukuskena kwe-Bluetooth</translation>
 <translation id="6547208576736763147">Ukushay okubili kwesokunxele</translation>
+<translation id="6554732001434021288">Kugcine ukuvakashelwa ezinsukwini ezi-<ph name="NUM_DAYS" /> ezedlule</translation>
 <translation id="6556866813142980365">Yenza kabusha</translation>
 <translation id="6569060085658103619">Ubuka ikhasi ngesandiso sekhasi</translation>
 <translation id="6573200754375280815">Ukushaya okubili kwesokudla</translation>
diff --git a/components/viz/service/display/gl_renderer_unittest.cc b/components/viz/service/display/gl_renderer_unittest.cc
index fde8c1b2..8a8b250 100644
--- a/components/viz/service/display/gl_renderer_unittest.cc
+++ b/components/viz/service/display/gl_renderer_unittest.cc
@@ -2659,7 +2659,7 @@
   // to be traditionally composited. Candidates with |overlay_handled| set to
   // true must also have their |display_rect| converted to integer
   // coordinates if necessary.
-  void CheckOverlaySupport(
+  void CheckOverlaySupportImpl(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
       OverlayCandidateList* surfaces) override {}
 
@@ -2856,7 +2856,7 @@
   bool NeedsSurfaceDamageRectList() const override { return true; }
   bool IsOverlaySupported() const override { return true; }
 
-  void CheckOverlaySupport(
+  void CheckOverlaySupportImpl(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
       OverlayCandidateList* surfaces) override {
     if (!multiple_candidates_)
@@ -3915,7 +3915,7 @@
   // to be traditionally composited. Candidates with |overlay_handled| set to
   // true must also have their |display_rect| converted to integer
   // coordinates if necessary.
-  void CheckOverlaySupport(
+  void CheckOverlaySupportImpl(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
       OverlayCandidateList* surfaces) override {}
 
diff --git a/components/viz/service/display/overlay_processor_android.cc b/components/viz/service/display/overlay_processor_android.cc
index af88d1d..ca7412c 100644
--- a/components/viz/service/display/overlay_processor_android.cc
+++ b/components/viz/service/display/overlay_processor_android.cc
@@ -132,7 +132,7 @@
   pending_overlay_locks_.pop_front();
 }
 
-void OverlayProcessorAndroid::CheckOverlaySupport(
+void OverlayProcessorAndroid::CheckOverlaySupportImpl(
     const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
     OverlayCandidateList* candidates) {
   // For pre-SurfaceControl Android we should not have output surface as overlay
@@ -172,6 +172,7 @@
     promotion_hint_info_map_[candidate.resource_id] = candidate.display_rect;
   }
 }
+
 gfx::Rect OverlayProcessorAndroid::GetOverlayDamageRectForOutputSurface(
     const OverlayCandidate& overlay) const {
   return ToEnclosedRect(overlay.display_rect);
diff --git a/components/viz/service/display/overlay_processor_android.h b/components/viz/service/display/overlay_processor_android.h
index 76f6414..0737bb4e 100644
--- a/components/viz/service/display/overlay_processor_android.h
+++ b/components/viz/service/display/overlay_processor_android.h
@@ -53,7 +53,7 @@
   void SetDisplayTransformHint(gfx::OverlayTransform transform) override {}
   void SetViewportSize(const gfx::Size& size) override {}
 
-  void CheckOverlaySupport(
+  void CheckOverlaySupportImpl(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
       OverlayCandidateList* candidates) override;
   gfx::Rect GetOverlayDamageRectForOutputSurface(
diff --git a/components/viz/service/display/overlay_processor_ozone.cc b/components/viz/service/display/overlay_processor_ozone.cc
index c4c4aff..2bda8ac5 100644
--- a/components/viz/service/display/overlay_processor_ozone.cc
+++ b/components/viz/service/display/overlay_processor_ozone.cc
@@ -9,6 +9,8 @@
 #include <vector>
 
 #include "base/logging.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/timer/elapsed_timer.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "components/viz/common/features.h"
@@ -140,7 +142,7 @@
   return true;
 }
 
-void OverlayProcessorOzone::CheckOverlaySupport(
+void OverlayProcessorOzone::CheckOverlaySupportImpl(
     const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
     OverlayCandidateList* surfaces) {
   auto full_size = surfaces->size();
diff --git a/components/viz/service/display/overlay_processor_ozone.h b/components/viz/service/display/overlay_processor_ozone.h
index f792133..c3112b6 100644
--- a/components/viz/service/display/overlay_processor_ozone.h
+++ b/components/viz/service/display/overlay_processor_ozone.h
@@ -31,7 +31,7 @@
   void SetDisplayTransformHint(gfx::OverlayTransform transform) override {}
   void SetViewportSize(const gfx::Size& size) override {}
 
-  void CheckOverlaySupport(
+  void CheckOverlaySupportImpl(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
       OverlayCandidateList* surfaces) override;
   gfx::Rect GetOverlayDamageRectForOutputSurface(
diff --git a/components/viz/service/display/overlay_processor_surface_control.cc b/components/viz/service/display/overlay_processor_surface_control.cc
index c392737..e6ae53f6 100644
--- a/components/viz/service/display/overlay_processor_surface_control.cc
+++ b/components/viz/service/display/overlay_processor_surface_control.cc
@@ -49,7 +49,7 @@
   return true;
 }
 
-void OverlayProcessorSurfaceControl::CheckOverlaySupport(
+void OverlayProcessorSurfaceControl::CheckOverlaySupportImpl(
     const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
     OverlayCandidateList* candidates) {
   DCHECK(!candidates->empty());
diff --git a/components/viz/service/display/overlay_processor_surface_control.h b/components/viz/service/display/overlay_processor_surface_control.h
index c82cd7c..4c08675c 100644
--- a/components/viz/service/display/overlay_processor_surface_control.h
+++ b/components/viz/service/display/overlay_processor_surface_control.h
@@ -25,7 +25,7 @@
   void SetViewportSize(const gfx::Size& size) override;
   void AdjustOutputSurfaceOverlay(
       absl::optional<OutputSurfaceOverlayPlane>* output_surface_plane) override;
-  void CheckOverlaySupport(
+  void CheckOverlaySupportImpl(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
       OverlayCandidateList* candidates) override;
   gfx::Rect GetOverlayDamageRectForOutputSurface(
diff --git a/components/viz/service/display/overlay_processor_using_strategy.cc b/components/viz/service/display/overlay_processor_using_strategy.cc
index ea104e90..a4b1cfc 100644
--- a/components/viz/service/display/overlay_processor_using_strategy.cc
+++ b/components/viz/service/display/overlay_processor_using_strategy.cc
@@ -13,6 +13,8 @@
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/time/time.h"
+#include "base/timer/elapsed_timer.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
 #include "components/viz/common/features.h"
@@ -171,6 +173,7 @@
           candidates, content_bounds);
     }
   }
+  LogCheckOverlaySupportMetrics();
 
   DCHECK(candidates->empty() || success);
 
@@ -189,6 +192,24 @@
                  "Scheduled overlay planes", candidates->size());
 }
 
+void OverlayProcessorUsingStrategy::CheckOverlaySupport(
+    const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
+    OverlayCandidateList* candidate_list) {
+  base::ElapsedTimer timer;
+
+  CheckOverlaySupportImpl(primary_plane, candidate_list);
+  check_overlay_support_call_count_++;
+
+  base::TimeDelta time = timer.Elapsed();
+
+  static constexpr base::TimeDelta kMinTime = base::Microseconds(1);
+  static constexpr base::TimeDelta kMaxTime = base::Milliseconds(10);
+  static constexpr int kTimeBuckets = 50;
+  UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+      "Compositing.Display.OverlayProcessorUsingStrategy.CheckOverlaySupportUs",
+      time, kMinTime, kMaxTime, kTimeBuckets);
+}
+
 // This local function simply recomputes the root damage from
 // |surface_damage_rect_list| while excluding the damage contribution from a
 // specific overlay.
@@ -769,4 +790,12 @@
     min_working_scale_ = 1.0f;
 }
 
+void OverlayProcessorUsingStrategy::LogCheckOverlaySupportMetrics() {
+  UMA_HISTOGRAM_COUNTS_100(
+      "Compositing.Display.OverlayProcessorUsingStrategy."
+      "CheckOverlaySupportCallCount",
+      check_overlay_support_call_count_);
+  check_overlay_support_call_count_ = 0;
+}
+
 }  // namespace viz
diff --git a/components/viz/service/display/overlay_processor_using_strategy.h b/components/viz/service/display/overlay_processor_using_strategy.h
index feefed8..f2165277 100644
--- a/components/viz/service/display/overlay_processor_using_strategy.h
+++ b/components/viz/service/display/overlay_processor_using_strategy.h
@@ -179,9 +179,9 @@
   // to be traditionally composited. Candidates with |overlay_handled| set to
   // true must also have their |display_rect| converted to integer
   // coordinates if necessary.
-  virtual void CheckOverlaySupport(
+  void CheckOverlaySupport(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
-      OverlayCandidateList* candidate_list) = 0;
+      OverlayCandidateList* candidate_list);
 
  protected:
   virtual gfx::Rect GetOverlayDamageRectForOutputSurface(
@@ -210,6 +210,12 @@
   OverlayCandidateTemporalTracker::Config tracker_config_;
 
  private:
+  // The platform specific implementation to check overlay support that will be
+  // called by `CheckOverlaySupport()`.
+  virtual void CheckOverlaySupportImpl(
+      const OverlayProcessorInterface::OutputSurfaceOverlayPlane* primary_plane,
+      OverlayCandidateList* candidate_list) = 0;
+
   // Update |damage_rect| by removing damage caused by |candidates|.
   void UpdateDamageRect(OverlayCandidateList* candidates,
                         SurfaceDamageRectList* surface_damage_rect_list,
@@ -298,6 +304,10 @@
   // be whether that scaling worked or not.
   void UpdateDownscalingCapabilities(float scale_factor, bool success);
 
+  // Logs the number of times CheckOverlaySupport was called this frame, and
+  // resets the counter to 0.
+  void LogCheckOverlaySupportMetrics();
+
   struct ProposedCandidateKey {
     OverlayCandidate::TrackingId tracking_id;
     OverlayStrategy strategy_id = OverlayStrategy::kUnknown;
@@ -329,6 +339,7 @@
   base::TimeTicks last_time_interval_switch_overlay_tick_;
   ProposedCandidateKey prev_overlay_tracking_id_;
   uint64_t frame_sequence_number_ = 0;
+  int check_overlay_support_call_count_ = 0;
 
   // These values are used for tracking how much we can downscale with overlays
   // and is used for when we require an overlay so we can determine how much we
diff --git a/components/viz/service/display/overlay_unittest.cc b/components/viz/service/display/overlay_unittest.cc
index 6183d54..48c3a8a 100644
--- a/components/viz/service/display/overlay_unittest.cc
+++ b/components/viz/service/display/overlay_unittest.cc
@@ -103,8 +103,8 @@
 
   bool IsOverlaySupported() const override { return true; }
   bool NeedsSurfaceDamageRectList() const override { return false; }
-  void CheckOverlaySupport(const PrimaryPlane* primary_plane,
-                           OverlayCandidateList* surfaces) override {}
+  void CheckOverlaySupportImpl(const PrimaryPlane* primary_plane,
+                               OverlayCandidateList* surfaces) override {}
   size_t GetStrategyCount() const { return strategies_.size(); }
 };
 
@@ -114,8 +114,8 @@
     strategies_.push_back(std::make_unique<OverlayStrategyFullscreen>(this));
   }
   bool NeedsSurfaceDamageRectList() const override { return true; }
-  void CheckOverlaySupport(const PrimaryPlane* primary_plane,
-                           OverlayCandidateList* surfaces) override {
+  void CheckOverlaySupportImpl(const PrimaryPlane* primary_plane,
+                               OverlayCandidateList* surfaces) override {
     surfaces->back().overlay_handled = true;
   }
 };
@@ -140,8 +140,8 @@
   DefaultOverlayProcessor() : expected_rects_(1, gfx::RectF(kOverlayRect)) {}
 
   bool NeedsSurfaceDamageRectList() const override { return true; }
-  void CheckOverlaySupport(const PrimaryPlane* primary_plane,
-                           OverlayCandidateList* surfaces) override {
+  void CheckOverlaySupportImpl(const PrimaryPlane* primary_plane,
+                               OverlayCandidateList* surfaces) override {
     // We have one overlay surface to test. The output surface as primary plane
     // is optional, depending on whether this ran
     // through the full renderer and picked up the output surface, or not.
diff --git a/components/webxr/android/BUILD.gn b/components/webxr/android/BUILD.gn
index e3fa950..003d0fe8 100644
--- a/components/webxr/android/BUILD.gn
+++ b/components/webxr/android/BUILD.gn
@@ -21,9 +21,6 @@
   sources = [
     "ar_compositor_delegate_provider.cc",
     "ar_compositor_delegate_provider.h",
-    "xr_install_helper_delegate.h",
-    "xr_install_infobar.cc",
-    "xr_install_infobar.h",
   ]
 
   if (enable_arcore) {
@@ -40,8 +37,7 @@
   deps = [
     ":android_utils",
     "//base",
-    "//components/infobars/android",
-    "//components/infobars/core",
+    "//components/messages/android",
     "//components/resources:android_resources",
     "//components/strings",
     "//components/webxr:webxr",
diff --git a/components/webxr/android/DEPS b/components/webxr/android/DEPS
index 6d6e0df..4193c50 100644
--- a/components/webxr/android/DEPS
+++ b/components/webxr/android/DEPS
@@ -1,5 +1,5 @@
 include_rules = [
-  "+components/infobars",
+  "+components/messages",
   "+components/resources/android/theme_resources.h",
   "+components/strings/grit/components_strings.h",
   "+content/public/android/java/src/org/chromium/content_public",
diff --git a/components/webxr/android/arcore_install_helper.cc b/components/webxr/android/arcore_install_helper.cc
index b87a22a..bd8612e 100644
--- a/components/webxr/android/arcore_install_helper.cc
+++ b/components/webxr/android/arcore_install_helper.cc
@@ -8,29 +8,20 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/memory/weak_ptr.h"
-#include "components/infobars/android/confirm_infobar.h"
-#include "components/infobars/core/infobar.h"
-#include "components/infobars/core/infobar_delegate.h"
-#include "components/infobars/core/infobar_manager.h"
+#include "components/messages/android/message_dispatcher_bridge.h"
 #include "components/resources/android/theme_resources.h"
 #include "components/strings/grit/components_strings.h"
 #include "components/webxr/android/ar_jni_headers/ArCoreInstallUtils_jni.h"
 #include "components/webxr/android/webxr_utils.h"
-#include "components/webxr/android/xr_install_helper_delegate.h"
-#include "components/webxr/android/xr_install_infobar.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
+#include "ui/base/l10n/l10n_util.h"
 
 using base::android::AttachCurrentThread;
 
 namespace webxr {
 
-ArCoreInstallHelper::ArCoreInstallHelper(
-    std::unique_ptr<XrInstallHelperDelegate> install_delegate)
-    : install_delegate_(std::move(install_delegate)) {
-  DCHECK(install_delegate_);
-
+ArCoreInstallHelper::ArCoreInstallHelper() {
   // As per documentation, it's recommended to issue a call to
   // ArCoreApk.checkAvailability() early in application lifecycle & ignore the
   // result so that subsequent calls can return cached result:
@@ -72,7 +63,7 @@
   // ARCore is not installed or requires an update.
   if (Java_ArCoreInstallUtils_shouldRequestInstallSupportedArCore(
           AttachCurrentThread())) {
-    ShowInfoBar(render_process_id, render_frame_id);
+    ShowMessage(render_process_id, render_frame_id);
     return;
   }
 
@@ -81,25 +72,13 @@
   OnRequestInstallSupportedArCoreResult(nullptr, true);
 }
 
-void ArCoreInstallHelper::ShowInfoBar(int render_process_id,
+void ArCoreInstallHelper::ShowMessage(int render_process_id,
                                       int render_frame_id) {
   DVLOG(1) << __func__;
 
-  infobars::InfoBarManager* infobar_manager =
-      install_delegate_->GetInfoBarManager(
-          GetWebContents(render_process_id, render_frame_id));
-
-  // We can't show an infobar without an |infobar_manager|, so if it's null,
-  // report that we are not installed and stop processing.
-  if (!infobar_manager) {
-    DVLOG(2) << __func__ << ": infobar_manager is null";
-    RunInstallFinishedCallback(false);
-    return;
-  }
-
   ArCoreAvailability availability = static_cast<ArCoreAvailability>(
       Java_ArCoreInstallUtils_getArCoreInstallStatus(AttachCurrentThread()));
-  int message_text = -1;
+  int message_title = -1;
   int button_text = -1;
   switch (availability) {
     case ArCoreAvailability::kUnsupportedDeviceNotCapable: {
@@ -110,12 +89,12 @@
     case ArCoreAvailability::kUnknownError:
     case ArCoreAvailability::kUnknownTimedOut:
     case ArCoreAvailability::kSupportedNotInstalled: {
-      message_text = IDS_AR_CORE_CHECK_INFOBAR_INSTALL_TEXT;
+      message_title = IDS_AR_CORE_CHECK_MESSAGE_INSTALL_TITLE;
       button_text = IDS_INSTALL;
       break;
     }
     case ArCoreAvailability::kSupportedApkTooOld: {
-      message_text = IDS_AR_CORE_CHECK_INFOBAR_UPDATE_TEXT;
+      message_title = IDS_AR_CORE_CHECK_MESSAGE_UPDATE_TITLE;
       button_text = IDS_UPDATE;
       break;
     }
@@ -124,33 +103,46 @@
       break;
   }
 
-  DCHECK_NE(-1, message_text);
+  DCHECK_NE(-1, message_title);
   DCHECK_NE(-1, button_text);
 
-  // Binding ourself as a weak ref is okay, since our destructor will still
-  // guarantee that the callback is run if we are destroyed while waiting for
-  // the callback from the infobar.
-  // TODO(ijamardo, https://crbug.com/838833): Add icon for AR info bar.
-  auto delegate = std::make_unique<XrInstallInfoBar>(
-      infobars::InfoBarDelegate::InfoBarIdentifier::AR_CORE_UPGRADE_ANDROID,
-      IDR_ANDROID_AR_CORE_INSALL_ICON, message_text, button_text,
-      base::BindOnce(&ArCoreInstallHelper::OnInfoBarResponse,
-                     weak_ptr_factory_.GetWeakPtr(), render_process_id,
-                     render_frame_id));
+  message_ = std::make_unique<messages::MessageWrapper>(
+      messages::MessageIdentifier::AR_CORE_UPGRADE,
+      base::BindOnce(&ArCoreInstallHelper::HandleMessagePrimaryAction,
+                     base::Unretained(this), render_process_id,
+                     render_frame_id),
+      base::BindOnce(&ArCoreInstallHelper::HandleMessageDismissed,
+                     base::Unretained(this)));
 
-  infobar_manager->AddInfoBar(
-      std::make_unique<infobars::ConfirmInfoBar>(std::move(delegate)));
+  message_->SetTitle(l10n_util::GetStringUTF16(message_title));
+  message_->SetDescription(
+      l10n_util::GetStringUTF16(IDS_AR_CORE_CHECK_MESSAGE_DESCRIPTION));
+  message_->SetPrimaryButtonText(l10n_util::GetStringUTF16(button_text));
+  messages::MessageDispatcherBridge* message_dispatcher_bridge =
+      messages::MessageDispatcherBridge::Get();
+  message_->SetIconResourceId(message_dispatcher_bridge->MapToJavaDrawableId(
+      IDR_ANDROID_AR_CORE_INSALL_ICON));
+
+  message_dispatcher_bridge->EnqueueMessage(
+      message_.get(), GetWebContents(render_process_id, render_frame_id),
+      messages::MessageScopeType::NAVIGATION,
+      messages::MessagePriority::kNormal);
 }
 
-void ArCoreInstallHelper::OnInfoBarResponse(int render_process_id,
-                                            int render_frame_id,
-                                            bool try_install) {
-  DVLOG(1) << __func__ << ": try_install=" << try_install;
-  if (!try_install) {
+void ArCoreInstallHelper::HandleMessageDismissed(
+    messages::DismissReason dismiss_reason) {
+  // If the message is dismissed for any reason other than the primary action
+  // button click to install/update ARCore, indicate to the deferred callback
+  // that no installation/update was facilitated.
+  if (dismiss_reason != messages::DismissReason::PRIMARY_ACTION) {
     OnRequestInstallSupportedArCoreResult(nullptr, false);
-    return;
   }
+  DCHECK(message_);
+  message_.reset();
+}
 
+void ArCoreInstallHelper::HandleMessagePrimaryAction(int render_process_id,
+                                                     int render_frame_id) {
   // When completed, java will call: OnRequestInstallSupportedArCoreResult
   Java_ArCoreInstallUtils_requestInstallSupportedArCore(
       AttachCurrentThread(), java_install_utils_,
diff --git a/components/webxr/android/arcore_install_helper.h b/components/webxr/android/arcore_install_helper.h
index 0813df34..e06f4d6 100644
--- a/components/webxr/android/arcore_install_helper.h
+++ b/components/webxr/android/arcore_install_helper.h
@@ -11,10 +11,11 @@
 #include "base/android/scoped_java_ref.h"
 #include "base/callback.h"
 #include "base/memory/weak_ptr.h"
+#include "components/messages/android/message_enums.h"
+#include "components/messages/android/message_wrapper.h"
 #include "content/public/browser/xr_install_helper.h"
 
 namespace webxr {
-class XrInstallHelperDelegate;
 
 // Equivalent of ArCoreApk.Availability enum.
 // For detailed description, please see:
@@ -36,8 +37,7 @@
 // XrIntegrationClient.
 class ArCoreInstallHelper : public content::XrInstallHelper {
  public:
-  explicit ArCoreInstallHelper(
-      std::unique_ptr<XrInstallHelperDelegate> install_delegate);
+  explicit ArCoreInstallHelper();
   ~ArCoreInstallHelper() override;
 
   ArCoreInstallHelper(const ArCoreInstallHelper&) = delete;
@@ -53,15 +53,14 @@
   void OnRequestInstallSupportedArCoreResult(JNIEnv* env, bool success);
 
  private:
-  void ShowInfoBar(int render_process_id, int render_frame_id);
-  void OnInfoBarResponse(int render_process_id,
-                         int render_frame_id,
-                         bool try_install);
+  void ShowMessage(int render_process_id, int render_frame_id);
+  void HandleMessagePrimaryAction(int render_process_id, int render_frame_id);
+  void HandleMessageDismissed(messages::DismissReason dismiss_reason);
   void RunInstallFinishedCallback(bool succeeded);
 
   base::OnceCallback<void(bool)> install_finished_callback_;
   base::android::ScopedJavaGlobalRef<jobject> java_install_utils_;
-  std::unique_ptr<XrInstallHelperDelegate> install_delegate_;
+  std::unique_ptr<messages::MessageWrapper> message_;
 
   // Must be last.
   base::WeakPtrFactory<ArCoreInstallHelper> weak_ptr_factory_{this};
diff --git a/components/webxr/android/xr_install_helper_delegate.h b/components/webxr/android/xr_install_helper_delegate.h
deleted file mode 100644
index 4df3bc2..0000000
--- a/components/webxr/android/xr_install_helper_delegate.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_WEBXR_ANDROID_XR_INSTALL_HELPER_DELEGATE_H_
-#define COMPONENTS_WEBXR_ANDROID_XR_INSTALL_HELPER_DELEGATE_H_
-
-namespace content {
-class WebContents;
-}
-
-namespace infobars {
-class InfoBarManager;
-}
-
-namespace webxr {
-
-// Helper class for InstallHelpers to gain access to other components. Since the
-// InstallHelpers are intended to be plumbed through content/public's
-// XrIntegrationClient, they may not contain direct references to other
-// component types. This provides a means for embedders to pass accessors for
-// other component types to the InstallHelpers.
-class XrInstallHelperDelegate {
- public:
-  virtual ~XrInstallHelperDelegate() = default;
-
-  XrInstallHelperDelegate(const XrInstallHelperDelegate&) = delete;
-  XrInstallHelperDelegate& operator=(const XrInstallHelperDelegate&) = delete;
-
-  // Gets the InfoBarManager for the provided web_contents, which can be used to
-  // display the installation confirmation message. It is acceptable to return
-  // a null InfoBarManager, but installation may fail after doing so.
-  virtual infobars::InfoBarManager* GetInfoBarManager(
-      content::WebContents* web_contents) = 0;
-
- protected:
-  XrInstallHelperDelegate() = default;
-};
-
-}  // namespace webxr
-
-#endif  // COMPONENTS_WEBXR_ANDROID_XR_INSTALL_HELPER_DELEGATE_H_
diff --git a/components/webxr/android/xr_install_infobar.cc b/components/webxr/android/xr_install_infobar.cc
deleted file mode 100644
index 167e841..0000000
--- a/components/webxr/android/xr_install_infobar.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/webxr/android/xr_install_infobar.h"
-
-#include <string>
-
-#include "base/callback.h"
-#include "components/infobars/core/confirm_infobar_delegate.h"
-#include "components/infobars/core/infobar_delegate.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace webxr {
-
-XrInstallInfoBar::XrInstallInfoBar(
-    InfoBarIdentifier identifier,
-    int icon_id,
-    int message_id,
-    int ok_button_id,
-    base::OnceCallback<void(bool)> install_callback)
-    : identifier_(identifier),
-      icon_id_(icon_id),
-      message_id_(message_id),
-      ok_button_id_(ok_button_id),
-      install_callback_(std::move(install_callback)) {}
-
-XrInstallInfoBar::~XrInstallInfoBar() = default;
-
-infobars::InfoBarDelegate::InfoBarIdentifier XrInstallInfoBar::GetIdentifier()
-    const {
-  return identifier_;
-}
-
-int XrInstallInfoBar::GetIconId() const {
-  return icon_id_;
-}
-
-int XrInstallInfoBar::GetButtons() const {
-  return BUTTON_OK;
-}
-
-std::u16string XrInstallInfoBar::GetButtonLabel(InfoBarButton button) const {
-  DCHECK_EQ(BUTTON_OK, button);
-  return l10n_util::GetStringUTF16(ok_button_id_);
-}
-
-std::u16string XrInstallInfoBar::GetMessageText() const {
-  return l10n_util::GetStringUTF16(message_id_);
-}
-
-bool XrInstallInfoBar::Accept() {
-  std::move(install_callback_).Run(true);
-  return true;
-}
-
-bool XrInstallInfoBar::Cancel() {
-  std::move(install_callback_).Run(false);
-  return true;
-}
-
-void XrInstallInfoBar::InfoBarDismissed() {
-  std::move(install_callback_).Run(false);
-}
-}  // namespace webxr
diff --git a/components/webxr/android/xr_install_infobar.h b/components/webxr/android/xr_install_infobar.h
deleted file mode 100644
index 67882c9..0000000
--- a/components/webxr/android/xr_install_infobar.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_WEBXR_ANDROID_XR_INSTALL_INFOBAR_H_
-#define COMPONENTS_WEBXR_ANDROID_XR_INSTALL_INFOBAR_H_
-
-#include <string>
-
-#include "base/callback.h"
-#include "components/infobars/core/confirm_infobar_delegate.h"
-#include "components/infobars/core/infobar_delegate.h"
-
-namespace webxr {
-
-// An interface derived from InfoBarDelegate implemented by objects wishing to
-// control a ConfirmInfoBar.
-class XrInstallInfoBar : public ConfirmInfoBarDelegate {
- public:
-  // Constructor for XrInstallInfoBar, the callback is guaranteed to be called,
-  // if the InfoBar is accepted, cancelled, or dismissed. The Callback will be
-  // passed a bool indicating whether the result of the InfoBar was "accepted."
-  XrInstallInfoBar(InfoBarIdentifier identifier,
-                   int icon_id,
-                   int message_id,
-                   int ok_button_id,
-                   base::OnceCallback<void(bool)> install_callback);
-  ~XrInstallInfoBar() override;
-
-  infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
-  int GetIconId() const override;
-  std::u16string GetMessageText() const override;
-  int GetButtons() const override;
-  std::u16string GetButtonLabel(InfoBarButton button) const override;
-
- private:
-  // Called when the OK button is pressed. If this function returns true, the
-  // infobar is then immediately closed. Subclasses MUST NOT return true if in
-  // handling this call something triggers the infobar to begin closing.
-  bool Accept() override;
-
-  // Called when the Cancel button is pressed. If this function returns true,
-  // the infobar is then immediately closed. Subclasses MUST NOT return true if
-  // in handling this call something triggers the infobar to begin closing.
-  bool Cancel() override;
-
-  // Called when the user clicks on the close button to dismiss the infobar.
-  void InfoBarDismissed() override;
-
-  const infobars::InfoBarDelegate::InfoBarIdentifier identifier_;
-  const int icon_id_;
-  const int message_id_;
-  const int ok_button_id_;
-  base::OnceCallback<void(bool)> install_callback_;
-};
-}  // namespace webxr
-
-#endif  // COMPONENTS_WEBXR_ANDROID_XR_INSTALL_INFOBAR_H_
diff --git a/components/webxr_strings.grdp b/components/webxr_strings.grdp
index 5b4e140..372a013 100644
--- a/components/webxr_strings.grdp
+++ b/components/webxr_strings.grdp
@@ -2,12 +2,15 @@
 <!-- WebXR specific strings (included from components_strings.grd). -->
 <grit-part>
   <if expr="enable_arcore">
-    <!-- ARCore check infobar -->
-    <message name="IDS_AR_CORE_CHECK_INFOBAR_INSTALL_TEXT" desc="Text to be displayed in the ARCore check infobar. When a WebXR page is loaded, if ARCore is needed to display AR content and it is not installed, an infobar will be shown to the user prompting them to install ARCore.">
-      To view augmented reality content, install ARCore
+    <!-- ARCore check message -->
+    <message name="IDS_AR_CORE_CHECK_MESSAGE_INSTALL_TITLE" desc="Title for the ARCore check message. When a WebXR page is loaded, if ARCore is needed to display AR content and it is not installed, a message will be shown to the user prompting them to install ARCore.">
+      Install ARCore?
     </message>
-    <message name="IDS_AR_CORE_CHECK_INFOBAR_UPDATE_TEXT" desc="Text to be displayed in the ARCore check infobar. When a WebXR page is loaded, if ARCore is needed to display AR content and the installed ARCore is not up to date to the version needed by the implementation, an infobar will be shown to the user prompting them to update ARCore.">
-      To view augmented reality content, update ARCore
+    <message name="IDS_AR_CORE_CHECK_MESSAGE_UPDATE_TITLE" desc="Title for the ARCore check message. When a WebXR page is loaded, if ARCore is needed to display AR content and the installed ARCore is not up to date to the version needed by the implementation, a message will be shown to the user prompting them to update ARCore.">
+      Update ARCore?
+    </message>
+    <message name="IDS_AR_CORE_CHECK_MESSAGE_DESCRIPTION" desc="Description for the ARCore check message that will be prompted when a WebXR page requires ARCore to display AR content.">
+      View augmented reality content
     </message>
   </if>
 </grit-part>
diff --git a/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_INFOBAR_INSTALL_TEXT.png.sha1 b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_INFOBAR_INSTALL_TEXT.png.sha1
deleted file mode 100644
index 61e6968..0000000
--- a/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_INFOBAR_INSTALL_TEXT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-53e9d9669c1b11a5768ff5a4134ccdf097c8de42
\ No newline at end of file
diff --git a/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_INFOBAR_UPDATE_TEXT.png.sha1 b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_INFOBAR_UPDATE_TEXT.png.sha1
deleted file mode 100644
index 7d5e071..0000000
--- a/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_INFOBAR_UPDATE_TEXT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-c2cf80e15c7b64119f4cb102448080a1d25829cf
\ No newline at end of file
diff --git a/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_DESCRIPTION.png.sha1 b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_DESCRIPTION.png.sha1
new file mode 100644
index 0000000..f6b8dbf
--- /dev/null
+++ b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_DESCRIPTION.png.sha1
@@ -0,0 +1 @@
+af76610bcf354c0c285e09d9781b3a0239e48a29
\ No newline at end of file
diff --git a/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_INSTALL_TITLE.png.sha1 b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_INSTALL_TITLE.png.sha1
new file mode 100644
index 0000000..f6b8dbf
--- /dev/null
+++ b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_INSTALL_TITLE.png.sha1
@@ -0,0 +1 @@
+af76610bcf354c0c285e09d9781b3a0239e48a29
\ No newline at end of file
diff --git a/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_UPDATE_TITLE.png.sha1 b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_UPDATE_TITLE.png.sha1
new file mode 100644
index 0000000..5c21ed40
--- /dev/null
+++ b/components/webxr_strings_grdp/IDS_AR_CORE_CHECK_MESSAGE_UPDATE_TITLE.png.sha1
@@ -0,0 +1 @@
+ce1aa215b5273341279d5f6d00fdf637c1ed5705
\ No newline at end of file
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index b03d8d8..2dc83679 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -33,6 +33,7 @@
     "//content/public/browser:browser_sources",
     "//content/test/fuzzer:browser_accessibility_fuzzer",
     "//content/test/fuzzer:indexed_db_fuzzer_support",
+    "//content/test/fuzzer:media_stream_dispatcher_host_mojolpm_fuzzer",
   ]
 
   configs += [
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index 72d9f9b0..64dce16 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -163,10 +163,6 @@
   EnableFeatureAndSetParams(
       blink::features::kLogUnexpectedIPCPostedToBackForwardCachedDocuments,
       "delay_before_tracking_ms", "0");
-  // TODO(crbug.com/1243600): Remove this per-request byte limit.
-  EnableFeatureAndSetParams(blink::features::kLoadingTasksUnfreezable,
-                            "max_buffered_bytes",
-                            base::NumberToString(kMaxBufferedBytesPerRequest));
   EnableFeatureAndSetParams(blink::features::kLoadingTasksUnfreezable,
                             "max_buffered_bytes_per_process",
                             base::NumberToString(kMaxBufferedBytesPerProcess));
diff --git a/content/browser/back_forward_cache_browsertest.h b/content/browser/back_forward_cache_browsertest.h
index fa1c8d0..8d713ade 100644
--- a/content/browser/back_forward_cache_browsertest.h
+++ b/content/browser/back_forward_cache_browsertest.h
@@ -174,7 +174,6 @@
   bool check_eligibility_after_pagehide_ = false;
   std::string unload_support_ = "always";
 
-  const int kMaxBufferedBytesPerRequest = 7000;
   const int kMaxBufferedBytesPerProcess = 10000;
   const base::TimeDelta kGracePeriodToFinishLoading = base::Seconds(5);
 
diff --git a/content/browser/back_forward_cache_features_browsertest.cc b/content/browser/back_forward_cache_features_browsertest.cc
index 38dbbb3e..39ce9992 100644
--- a/content/browser/back_forward_cache_features_browsertest.cc
+++ b/content/browser/back_forward_cache_features_browsertest.cc
@@ -460,7 +460,7 @@
 // should evicted in this case.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheWithDedicatedWorkerBrowserTest,
-    FetchStillLoading_ResponseStartedWhileFrozen_ExceedsPerRequestBytesLimit) {
+    FetchStillLoading_ResponseStartedWhileFrozen_ExceedsPerProcessBytesLimit) {
   CreateHttpsServer();
 
   net::test_server::ControllableHttpResponse image_response(https_server(),
@@ -502,7 +502,7 @@
   RenderFrameDeletedObserver delete_observer_rfh_a(rfh_a);
   // Start sending the image response while in the back-forward cache.
   image_response.Send(net::HTTP_OK, "image/png");
-  std::string body(kMaxBufferedBytesPerRequest + 1, '*');
+  std::string body(kMaxBufferedBytesPerProcess + 1, '*');
   image_response.Send(body);
   image_response.Done();
   delete_observer_rfh_a.WaitUntilDeleted();
@@ -521,7 +521,7 @@
 // cached page should evicted in this case.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheWithDedicatedWorkerBrowserTest,
-    FetchStillLoading_ResponseStartedWhileFrozen_ExceedsPerRequestBytesLimit_Nested) {
+    FetchStillLoading_ResponseStartedWhileFrozen_ExceedsPerProcessBytesLimit_Nested) {
   CreateHttpsServer();
 
   net::test_server::ControllableHttpResponse image_response(https_server(),
@@ -568,7 +568,7 @@
   RenderFrameDeletedObserver delete_observer_rfh_a(rfh_a);
   // Start sending the image response while in the back-forward cache.
   image_response.Send(net::HTTP_OK, "image/png");
-  std::string body(kMaxBufferedBytesPerRequest + 1, '*');
+  std::string body(kMaxBufferedBytesPerProcess + 1, '*');
   image_response.Send(body);
   image_response.Done();
   delete_observer_rfh_a.WaitUntilDeleted();
@@ -2243,17 +2243,14 @@
 
 }  // namespace
 
-class BackForwardCacheBrowserTestWithVibration
-    : public BackForwardCacheBrowserTest,
-      public device::mojom::VibrationManager {
+class TestVibrationManager : public device::mojom::VibrationManager {
  public:
-  BackForwardCacheBrowserTestWithVibration() {
+  TestVibrationManager() {
     OverrideVibrationManagerBinderForTesting(base::BindRepeating(
-        &BackForwardCacheBrowserTestWithVibration::BindVibrationManager,
-        base::Unretained(this)));
+        &TestVibrationManager::BindVibrationManager, base::Unretained(this)));
   }
 
-  ~BackForwardCacheBrowserTestWithVibration() override {
+  ~TestVibrationManager() override {
     OverrideVibrationManagerBinderForTesting(base::NullCallback());
   }
 
@@ -2262,20 +2259,20 @@
     receiver_.Bind(std::move(receiver));
   }
 
-  bool TriggerVibrate(RenderFrameHostImpl* rfh,
-                      int duration,
-                      base::OnceClosure vibrate_done) {
-    vibrate_done_ = std::move(vibrate_done);
+  bool TriggerVibrate(RenderFrameHostImpl* rfh, int duration) {
     return EvalJs(rfh, JsReplace("navigator.vibrate($1)", duration))
         .ExtractBool();
   }
 
-  bool TriggerShortVibrationSequence(RenderFrameHostImpl* rfh,
-                                     base::OnceClosure vibrate_done) {
-    vibrate_done_ = std::move(vibrate_done);
+  bool TriggerShortVibrationSequence(RenderFrameHostImpl* rfh) {
     return EvalJs(rfh, "navigator.vibrate([10] * 1000)").ExtractBool();
   }
 
+  bool WaitForCancel() {
+    run_loop_.Run();
+    return IsCancelled();
+  }
+
   bool IsCancelled() { return cancelled_; }
 
  private:
@@ -2283,63 +2280,65 @@
   void Vibrate(int64_t milliseconds, VibrateCallback callback) override {
     cancelled_ = false;
     std::move(callback).Run();
-    std::move(vibrate_done_).Run();
   }
 
   void Cancel(CancelCallback callback) override {
     cancelled_ = true;
     std::move(callback).Run();
+    run_loop_.Quit();
   }
 
   bool cancelled_ = false;
-  base::OnceClosure vibrate_done_;
+  base::RunLoop run_loop_;
   mojo::Receiver<device::mojom::VibrationManager> receiver_{this};
 };
 
-// TODO(crbug.com/1269046): Enable this test.
-IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestWithVibration,
-                       DISABLED_VibrationStopsAfterEnteringCache) {
+// Tests that vibration stops after the page enters bfcache.
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
+                       VibrationStopsAfterEnteringCache) {
   ASSERT_TRUE(embedded_test_server()->Start());
+  TestVibrationManager vibration_manager;
 
   // 1) Navigate to a page with a long vibration.
   GURL url(embedded_test_server()->GetURL("a.com", "/title1.html"));
   EXPECT_TRUE(NavigateToURL(shell(), url));
-  base::RunLoop run_loop;
   RenderFrameHostImpl* rfh_a = current_frame_host();
-  ASSERT_TRUE(TriggerVibrate(rfh_a, 10000, run_loop.QuitClosure()));
-  EXPECT_FALSE(IsCancelled());
+  ASSERT_TRUE(vibration_manager.TriggerVibrate(rfh_a, 10000));
+  EXPECT_FALSE(vibration_manager.IsCancelled());
 
   // 2) Navigate away and expect the vibration to be canceled.
   EXPECT_TRUE(NavigateToURL(
       shell(), embedded_test_server()->GetURL("b.com", "/title1.html")));
   EXPECT_NE(current_frame_host(), rfh_a);
   EXPECT_TRUE(rfh_a->IsInBackForwardCache());
-  EXPECT_TRUE(IsCancelled());
+  EXPECT_TRUE(vibration_manager.WaitForCancel());
+  EXPECT_TRUE(vibration_manager.IsCancelled());
 
   // 3) Go back to A.
   ASSERT_TRUE(HistoryGoBack(web_contents()));
   ExpectRestored(FROM_HERE);
 }
 
-// TODO(crbug.com/1142778): flaky.
-IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestWithVibration,
-                       DISABLED_ShortVibrationSequenceStopsAfterEnteringCache) {
+// Tests that the short vibration sequence on the page stops after it enters
+// bfcache.
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
+                       ShortVibrationSequenceStopsAfterEnteringCache) {
   ASSERT_TRUE(embedded_test_server()->Start());
+  TestVibrationManager vibration_manager;
 
   // 1) Navigate to a page with a long vibration.
   GURL url(embedded_test_server()->GetURL("a.com", "/title1.html"));
   EXPECT_TRUE(NavigateToURL(shell(), url));
-  base::RunLoop run_loop;
   RenderFrameHostImpl* rfh_a = current_frame_host();
-  ASSERT_TRUE(TriggerShortVibrationSequence(rfh_a, run_loop.QuitClosure()));
-  EXPECT_FALSE(IsCancelled());
+  ASSERT_TRUE(vibration_manager.TriggerShortVibrationSequence(rfh_a));
+  EXPECT_FALSE(vibration_manager.IsCancelled());
 
   // 2) Navigate away and expect the vibration to be canceled.
   EXPECT_TRUE(NavigateToURL(
       shell(), embedded_test_server()->GetURL("b.com", "/title1.html")));
   EXPECT_NE(current_frame_host(), rfh_a);
   EXPECT_TRUE(rfh_a->IsInBackForwardCache());
-  EXPECT_TRUE(IsCancelled());
+  EXPECT_TRUE(vibration_manager.IsCancelled());
 
   // 3) Go back to A.
   ASSERT_TRUE(HistoryGoBack(web_contents()));
diff --git a/content/browser/back_forward_cache_network_request_browsertest.cc b/content/browser/back_forward_cache_network_request_browsertest.cc
index 8f56d445..b441274 100644
--- a/content/browser/back_forward_cache_network_request_browsertest.cc
+++ b/content/browser/back_forward_cache_network_request_browsertest.cc
@@ -278,7 +278,7 @@
   EXPECT_TRUE(NavigateToURL(shell(), url_b));
 
   // Complete the response after navigating away.
-  std::string body(kMaxBufferedBytesPerRequest + 1, '*');
+  std::string body(kMaxBufferedBytesPerProcess + 1, '*');
   response.Send(body);
   response.Done();
 
@@ -324,43 +324,6 @@
 
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTest,
-    ImageStillLoading_ResponseStartedWhileFrozen_ExceedsPerRequestBytesLimit) {
-  net::test_server::ControllableHttpResponse image_response(
-      embedded_test_server(), "/image.png");
-  ASSERT_TRUE(embedded_test_server()->Start());
-
-  // 1) Navigate to a page with an image with src == "image.png".
-  RenderFrameHostImpl* rfh_1 = NavigateToPageWithImage(
-      embedded_test_server()->GetURL("a.com", "/title1.html"));
-
-  // Wait for the image request, but don't send anything yet.
-  image_response.WaitForRequest();
-
-  // 2) Navigate away.
-  EXPECT_TRUE(NavigateToURL(
-      shell(), embedded_test_server()->GetURL("b.com", "/title2.html")));
-  // The page was still loading when we navigated away, but it's still eligible
-  // for back-forward cache.
-  EXPECT_TRUE(rfh_1->IsInBackForwardCache());
-
-  RenderFrameDeletedObserver delete_observer(rfh_1);
-  // Start sending the image response while in the back-forward cache.
-  image_response.Send(net::HTTP_OK, "image/png");
-  std::string body(kMaxBufferedBytesPerRequest + 1, '*');
-  image_response.Send(body);
-  image_response.Done();
-  delete_observer.WaitUntilDeleted();
-
-  // 3) Go back to the first page. We should not restore the page from the
-  // back-forward cache.
-  ASSERT_TRUE(HistoryGoBack(web_contents()));
-  ExpectNotRestored(
-      {BackForwardCacheMetrics::NotRestoredReason::kNetworkExceedsBufferLimit},
-      {}, {}, {}, {}, FROM_HERE);
-}
-
-IN_PROC_BROWSER_TEST_F(
-    BackForwardCacheBrowserTest,
     ImageStillLoading_ResponseStartedWhileRestoring_DoNotTriggerEviction) {
   net::test_server::ControllableHttpResponse image_response(
       embedded_test_server(), "/image.png");
@@ -396,7 +359,7 @@
   ASSERT_FALSE(navigation_manager_back.GetNavigationHandle()->HasCommitted());
 
   image_response.Send(net::HTTP_OK, "image/png");
-  std::string body(kMaxBufferedBytesPerRequest + 1, '*');
+  std::string body(kMaxBufferedBytesPerProcess + 1, '*');
   image_response.Send(body);
   image_response.Done();
 
@@ -455,10 +418,9 @@
 
   RenderFrameDeletedObserver delete_observer(rfh_1);
   // Start sending the image responses while in the back-forward cache. The
-  // body size of the responses individually is less than the per-request limit,
+  // body size of the responses individually is less than the per-process limit,
   // but together they surpass the per-process limit.
   const int image_body_size = kMaxBufferedBytesPerProcess / 2 + 1;
-  DCHECK_LT(image_body_size, kMaxBufferedBytesPerRequest);
   std::string body(image_body_size, '*');
   image1_response.Send(net::HTTP_OK, "image/png");
   image1_response.Send(body);
@@ -536,12 +498,11 @@
   RenderFrameDeletedObserver delete_observer_1(main_rfh);
   RenderFrameDeletedObserver delete_observer_2(subframe_rfh);
   // Start sending the image responses while in the back-forward cache. The
-  // body size of the responses individually is less than the per-request limit,
+  // body size of the responses individually is less than the per-process limit,
   // but together they surpass the per-process limit since both the main frame
   // and the subframe are put in the same renderer process (because they're
   // same-site).
   const int image_body_size = kMaxBufferedBytesPerProcess / 2 + 1;
-  DCHECK_LT(image_body_size, kMaxBufferedBytesPerRequest);
   std::string body(image_body_size, '*');
   image1_response.Send(net::HTTP_OK, "image/png");
   image1_response.Send(body);
@@ -602,7 +563,6 @@
   // back-forward cache. The body size of the response is half of the
   // per-process limit.
   const int image_body_size = kMaxBufferedBytesPerProcess / 2 + 1;
-  DCHECK_LT(image_body_size, kMaxBufferedBytesPerRequest);
   std::string body(image_body_size, '*');
   image1_response.Send(net::HTTP_OK, "image/png");
   image1_response.Send(body);
@@ -751,46 +711,6 @@
 
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTest,
-    ImageStillLoading_ResponseStartedBeforeFreezing_ExceedsPerRequestBytesLimit) {
-  net::test_server::ControllableHttpResponse image_response(
-      embedded_test_server(), "/image.png");
-  ASSERT_TRUE(embedded_test_server()->Start());
-
-  // 1) Navigate to a page with an image with src == "image.png".
-  RenderFrameHostImpl* rfh_1 = NavigateToPageWithImage(
-      embedded_test_server()->GetURL("a.com", "/title1.html"));
-
-  // Start sending response before the page gets in the back-forward cache.
-  image_response.WaitForRequest();
-  image_response.Send(net::HTTP_OK, "image/png");
-  image_response.Send(" ");
-  // Run some script to ensure the renderer processed its pending tasks.
-  EXPECT_TRUE(ExecJs(rfh_1, "var foo = 42;"));
-
-  // 2) Navigate away.
-  EXPECT_TRUE(NavigateToURL(
-      shell(), embedded_test_server()->GetURL("b.com", "/title2.html")));
-  // The page was still loading when we navigated away, but it's still eligible
-  // for back-forward cache.
-  EXPECT_TRUE(rfh_1->IsInBackForwardCache());
-
-  // Send the image response body while in the back-forward cache.
-  RenderFrameDeletedObserver delete_observer(rfh_1);
-  std::string body(kMaxBufferedBytesPerRequest + 1, '*');
-  image_response.Send(body);
-  image_response.Done();
-  delete_observer.WaitUntilDeleted();
-
-  // 3) Go back to the first page. We should not restore the page from the
-  // back-forward cache.
-  ASSERT_TRUE(HistoryGoBack(web_contents()));
-  ExpectNotRestored(
-      {BackForwardCacheMetrics::NotRestoredReason::kNetworkExceedsBufferLimit},
-      {}, {}, {}, {}, FROM_HERE);
-}
-
-IN_PROC_BROWSER_TEST_F(
-    BackForwardCacheBrowserTest,
     ImageStillLoading_ResponseStartedBeforeFreezing_ExceedsPerProcessBytesLimit) {
   net::test_server::ControllableHttpResponse image1_response(
       embedded_test_server(), "/image1.png");
@@ -846,10 +766,9 @@
 
   RenderFrameDeletedObserver delete_observer(rfh_1);
   // Send the image response body while in the back-forward cache. The body size
-  // of the responses individually is less than the per-request limit, but
+  // of the responses individually is less than the per-process limit, but
   // together they surpass the per-process limit.
   const int image_body_size = kMaxBufferedBytesPerProcess / 2 + 1;
-  DCHECK_LT(image_body_size, kMaxBufferedBytesPerRequest);
   std::string body(image_body_size, '*');
   image1_response.Send(body);
   image1_response.Done();
diff --git a/content/browser/back_forward_cache_no_store_browsertest.cc b/content/browser/back_forward_cache_no_store_browsertest.cc
index db63cbfd..b6f38f3 100644
--- a/content/browser/back_forward_cache_no_store_browsertest.cc
+++ b/content/browser/back_forward_cache_no_store_browsertest.cc
@@ -58,7 +58,7 @@
   delete_observer_rfh_a.WaitUntilDeleted();
 }
 
-// Disabled for being flaky. See crbug.com/1116190.
+// Flaky. See crbug.com/1116190.
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, SubframeWithNoStoreCached) {
   // iframe will try to load title1.html.
   net::test_server::ControllableHttpResponse response(embedded_test_server(),
@@ -103,19 +103,10 @@
 }  // namespace
 
 // TODO(https://crbug.com/1231849): flaky on Cast Linux.
-#if defined(OS_LINUX)
-#define MAYBE_PagesWithCacheControlNoStoreEnterBfcacheAndEvicted \
-  DISABLED_PagesWithCacheControlNoStoreEnterBfcacheAndEvicted
-#else
-#define MAYBE_PagesWithCacheControlNoStoreEnterBfcacheAndEvicted \
-  PagesWithCacheControlNoStoreEnterBfcacheAndEvicted
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // but does not get restored and gets evicted.
-IN_PROC_BROWSER_TEST_F(
-    BackForwardCacheBrowserTestAllowCacheControlNoStore,
-    MAYBE_PagesWithCacheControlNoStoreEnterBfcacheAndEvicted) {
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestAllowCacheControlNoStore,
+                       PagesWithCacheControlNoStoreEnterBfcacheAndEvicted) {
   net::test_server::ControllableHttpResponse response(embedded_test_server(),
                                                       "/main_document");
   net::test_server::ControllableHttpResponse response2(embedded_test_server(),
@@ -151,20 +142,12 @@
       {}, {}, {}, FROM_HERE);
 }
 
-#if BUILDFLAG(IS_CHROMECAST)
-#define MAYBE_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScript \
-  DISABLED_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScript
-#else
-#define MAYBE_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScript \
-  PagesWithCacheControlNoStoreCookieModifiedThroughJavaScript
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and if a cookie is modified while it is in bfcache via JavaScript, gets
 // evicted with cookie modified marked.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestAllowCacheControlNoStore,
-    MAYBE_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScript) {
+    PagesWithCacheControlNoStoreCookieModifiedThroughJavaScript) {
   net::test_server::ControllableHttpResponse response(embedded_test_server(),
                                                       "/main_document");
   net::test_server::ControllableHttpResponse response2(embedded_test_server(),
@@ -216,22 +199,13 @@
                     {}, {}, {}, {}, FROM_HERE);
 }
 
-// Disabled due to flakiness on Cast Audio Linux https://crbug.com/1229182
-#if BUILDFLAG(IS_CHROMECAST)
-#define MAYBE_PagesWithCacheControlNoStoreCookieModifiedBackTwice \
-  DISABLED_PagesWithCacheControlNoStoreCookieModifiedBackTwice
-#else
-#define MAYBE_PagesWithCacheControlNoStoreCookieModifiedBackTwice \
-  PagesWithCacheControlNoStoreCookieModifiedBackTwice
-#endif
-
+// Flaky on Cast Audio Linux https://crbug.com/1229182
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and if a cookie is modified, it gets evicted with cookie changed, but if
 // navigated away again and navigated back, it gets evicted without cookie
 // change marked.
-IN_PROC_BROWSER_TEST_F(
-    BackForwardCacheBrowserTestAllowCacheControlNoStore,
-    MAYBE_PagesWithCacheControlNoStoreCookieModifiedBackTwice) {
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestAllowCacheControlNoStore,
+                       PagesWithCacheControlNoStoreCookieModifiedBackTwice) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
   GURL url_a(embedded_test_server()->GetURL(
@@ -282,21 +256,13 @@
       {}, {}, {}, FROM_HERE);
 }
 
-// Disabled due to flakiness on Cast Audio Linux https://crbug.com/1229182
-#if BUILDFLAG(IS_CHROMECAST)
-#define MAYBE_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScriptOnDifferentDomain \
-  DISABLED_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScriptOnDifferentDomain
-#else
-#define MAYBE_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScriptOnDifferentDomain \
-  PagesWithCacheControlNoStoreCookieModifiedThroughJavaScriptOnDifferentDomain
-#endif
-
+// Flaky on Cast Audio Linux https://crbug.com/1229182
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and even if a cookie is modified on a different domain than the entry, the
 // entry is not marked as cookie modified.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestAllowCacheControlNoStore,
-    MAYBE_PagesWithCacheControlNoStoreCookieModifiedThroughJavaScriptOnDifferentDomain) {
+    PagesWithCacheControlNoStoreCookieModifiedThroughJavaScriptOnDifferentDomain) {
   net::test_server::ControllableHttpResponse response(embedded_test_server(),
                                                       "/main_document");
   net::test_server::ControllableHttpResponse response2(embedded_test_server(),
@@ -437,21 +403,11 @@
     "The server speaks HTTP!";
 }  // namespace
 
-// Disabled due to flakiness on Cast Audio Linux https://crbug.com/1229182
-#if BUILDFLAG(IS_CHROMECAST)
-#define MAYBE_PagesWithCacheControlNoStoreSetFromResponseHeader \
-  DISABLED_PagesWithCacheControlNoStoreSetFromResponseHeader
-#else
-#define MAYBE_PagesWithCacheControlNoStoreSetFromResponseHeader \
-  PagesWithCacheControlNoStoreSetFromResponseHeader
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and if a cookie is modified while it is in bfcache via response header, gets
 // evicted with cookie modified marked.
-IN_PROC_BROWSER_TEST_F(
-    BackForwardCacheBrowserTestAllowCacheControlNoStore,
-    MAYBE_PagesWithCacheControlNoStoreSetFromResponseHeader) {
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestAllowCacheControlNoStore,
+                       PagesWithCacheControlNoStoreSetFromResponseHeader) {
   net::test_server::ControllableHttpResponse response(embedded_test_server(),
                                                       "/main_document");
   net::test_server::ControllableHttpResponse response2(embedded_test_server(),
@@ -501,21 +457,13 @@
                     {}, {}, {}, {}, FROM_HERE);
 }
 
-// Disabled due to flakiness on Cast Audio Linux https://crbug.com/1229182
-#if BUILDFLAG(IS_CHROMECAST)
-#define MAYBE_PagesWithCacheControlNoStoreSetFromResponseHeaderHTTPOnlyCookie \
-  DISABLED_PagesWithCacheControlNoStoreSetFromResponseHeaderHTTPOnlyCookie
-#else
-#define MAYBE_PagesWithCacheControlNoStoreSetFromResponseHeaderHTTPOnlyCookie \
-  PagesWithCacheControlNoStoreSetFromResponseHeaderHTTPOnlyCookie
-#endif
-
+// Flaky on Cast Audio Linux https://crbug.com/1229182
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and if HTTPOnly cookie is modified while it is in bfcache, gets evicted with
 // HTTPOnly cookie modified marked.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestAllowCacheControlNoStore,
-    MAYBE_PagesWithCacheControlNoStoreSetFromResponseHeaderHTTPOnlyCookie) {
+    PagesWithCacheControlNoStoreSetFromResponseHeaderHTTPOnlyCookie) {
   // HTTPOnly cookie can be only set over HTTPS.
   CreateHttpsServer();
   net::test_server::ControllableHttpResponse response(https_server(),
@@ -569,22 +517,14 @@
                     {}, {}, {}, {}, FROM_HERE);
 }
 
-// Disabled due to flakiness on Cast Audio Linux https://crbug.com/1229182
-#if BUILDFLAG(IS_CHROMECAST)
-#define MAYBE_PagesWithCacheControlNoStoreHTTPOnlyCookieModifiedBackTwice \
-  DISABLED_PagesWithCacheControlNoStoreHTTPOnlyCookieModifiedBackTwice
-#else
-#define MAYBE_PagesWithCacheControlNoStoreHTTPOnlyCookieModifiedBackTwice \
-  PagesWithCacheControlNoStoreHTTPOnlyCookieModifiedBackTwice
-#endif
-
+// Flaky on Cast Audio Linux https://crbug.com/1229182
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and if a HTTPOnly cookie is modified, it gets evicted with cookie changed,
 // but if navigated away again and navigated back, it gets evicted without
 // HTTPOnly cookie change marked.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestAllowCacheControlNoStore,
-    MAYBE_PagesWithCacheControlNoStoreHTTPOnlyCookieModifiedBackTwice) {
+    PagesWithCacheControlNoStoreHTTPOnlyCookieModifiedBackTwice) {
   CreateHttpsServer();
   net::test_server::ControllableHttpResponse response(https_server(),
                                                       "/main_document");
@@ -667,19 +607,11 @@
 };
 
 // TODO(https://crbug.com/1231849): flaky on Cast Linux.
-#if defined(OS_LINUX)
-#define MAYBE_PagesWithCacheControlNoStoreRestoreFromBackForwardCache \
-  DISABLED_PagesWithCacheControlNoStoreRestoreFromBackForwardCache
-#else
-#define MAYBE_PagesWithCacheControlNoStoreRestoreFromBackForwardCache \
-  PagesWithCacheControlNoStoreRestoreFromBackForwardCache
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and gets restored if cookies do not change.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
-    MAYBE_PagesWithCacheControlNoStoreRestoreFromBackForwardCache) {
+    PagesWithCacheControlNoStoreRestoreFromBackForwardCache) {
   net::test_server::ControllableHttpResponse response(embedded_test_server(),
                                                       "/main_document");
   net::test_server::ControllableHttpResponse response2(embedded_test_server(),
@@ -708,18 +640,11 @@
 }
 
 // Flaky on Cast: crbug.com/1229182
-#if BUILDFLAG(IS_CHROMECAST)
-#define MAYBE_PagesWithCacheControlNoStoreEvictedIfCookieChange \
-  DISABLED_PagesWithCacheControlNoStoreEvictedIfCookieChange
-#else
-#define MAYBE_PagesWithCacheControlNoStoreEvictedIfCookieChange \
-  PagesWithCacheControlNoStoreEvictedIfCookieChange
-#endif
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // but gets evicted if cookies change.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
-    MAYBE_PagesWithCacheControlNoStoreEvictedIfCookieChange) {
+    PagesWithCacheControlNoStoreEvictedIfCookieChange) {
   net::test_server::ControllableHttpResponse response(embedded_test_server(),
                                                       "/main_document");
   net::test_server::ControllableHttpResponse response2(embedded_test_server(),
@@ -772,20 +697,12 @@
 }
 
 // TODO(https://crbug.com/1231849): flaky on Cast Linux.
-#if defined(OS_LINUX)
-#define MAYBE_PagesWithCacheControlNoStoreEvictedWithBothCookieReasons \
-  DISABLED_PagesWithCacheControlNoStoreEvictedWithBothCookieReasons
-#else
-#define MAYBE_PagesWithCacheControlNoStoreEvictedWithBothCookieReasons \
-  PagesWithCacheControlNoStoreEvictedWithBothCookieReasons
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and gets evicted with both JavaScript and HTTPOnly cookie changes. Only
 // HTTPOnly cookie reason should be recorded.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
-    MAYBE_PagesWithCacheControlNoStoreEvictedWithBothCookieReasons) {
+    PagesWithCacheControlNoStoreEvictedWithBothCookieReasons) {
   CreateHttpsServer();
   net::test_server::ControllableHttpResponse response(https_server(),
                                                       "/main_document");
@@ -851,19 +768,11 @@
 };
 
 // TODO(https://crbug.com/1231849): flaky on Cast Linux.
-#if defined(OS_LINUX)
-#define MAYBE_NoCacheControlNoStoreButHTTPOnlyCookieChange \
-  DISABLED_NoCacheControlNoStoreButHTTPOnlyCookieChange
-#else
-#define MAYBE_NoCacheControlNoStoreButHTTPOnlyCookieChange \
-  NoCacheControlNoStoreButHTTPOnlyCookieChange
-#endif
-
 // Test that a page without cache-control:no-store can enter BackForwardCache
 // and gets restored if HTTPOnly Cookie changes.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
-    MAYBE_NoCacheControlNoStoreButHTTPOnlyCookieChange) {
+    NoCacheControlNoStoreButHTTPOnlyCookieChange) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
   GURL url_a(embedded_test_server()->GetURL(
@@ -894,19 +803,11 @@
 }
 
 // TODO(https://crbug.com/1231849): flaky on Cast Linux.
-#if defined(OS_LINUX)
-#define MAYBE_PagesWithCacheControlNoStoreNotEvictedIfNormalCookieChange \
-  DISABLED_PagesWithCacheControlNoStoreNotEvictedIfNormalCookieChange
-#else
-#define MAYBE_PagesWithCacheControlNoStoreNotEvictedIfNormalCookieChange \
-  PagesWithCacheControlNoStoreNotEvictedIfNormalCookieChange
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and does not get evicted if normal cookies change.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
-    MAYBE_PagesWithCacheControlNoStoreNotEvictedIfNormalCookieChange) {
+    PagesWithCacheControlNoStoreNotEvictedIfNormalCookieChange) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
   GURL url_a(embedded_test_server()->GetURL(
@@ -943,19 +844,11 @@
 }
 
 // TODO(https://crbug.com/1231849): flaky on Cast Linux.
-#if defined(OS_LINUX)
-#define MAYBE_PagesWithCacheControlNoStoreEvictedIfHTTPOnlyCookieChange \
-  DISABLED_PagesWithCacheControlNoStoreEvictedIfHTTPOnlyCookieChange
-#else
-#define MAYBE_PagesWithCacheControlNoStoreEvictedIfHTTPOnlyCookieChange \
-  PagesWithCacheControlNoStoreEvictedIfHTTPOnlyCookieChange
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and gets evicted if HTTPOnly cookie changes.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
-    MAYBE_PagesWithCacheControlNoStoreEvictedIfHTTPOnlyCookieChange) {
+    PagesWithCacheControlNoStoreEvictedIfHTTPOnlyCookieChange) {
   CreateHttpsServer();
   net::test_server::ControllableHttpResponse response(https_server(),
                                                       "/main_document");
@@ -1007,19 +900,11 @@
 }
 
 // TODO(https://crbug.com/1231849): flaky on Cast Linux.
-#if defined(OS_LINUX)
-#define MAYBE_PagesWithCacheControlNoStoreEvictedIfJSAndHTTPOnlyCookieChange \
-  DISABLED_PagesWithCacheControlNoStoreEvictedIfJSAndHTTPOnlyCookieChange
-#else
-#define MAYBE_PagesWithCacheControlNoStoreEvictedIfJSAndHTTPOnlyCookieChange \
-  PagesWithCacheControlNoStoreEvictedIfJSAndHTTPOnlyCookieChange
-#endif
-
 // Test that a page with cache-control:no-store enters bfcache with the flag on,
 // and gets evicted if HTTPOnly cookie changes.
 IN_PROC_BROWSER_TEST_F(
     BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
-    MAYBE_PagesWithCacheControlNoStoreEvictedIfJSAndHTTPOnlyCookieChange) {
+    PagesWithCacheControlNoStoreEvictedIfJSAndHTTPOnlyCookieChange) {
   CreateHttpsServer();
   net::test_server::ControllableHttpResponse response(https_server(),
                                                       "/main_document");
diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc
index 6016c30..36425a8 100644
--- a/content/browser/client_hints/client_hints.cc
+++ b/content/browser/client_hints/client_hints.cc
@@ -606,6 +606,48 @@
       .javascript_enabled;
 }
 
+// This modifies `data.permissions_policy` to reflect any changes to client hint
+// permissions which may have occurred via the named accept-ch meta tag.
+// The permissions policy the browser side has for the frame was set in stone
+// before HTML parsing began, so any updates must be sent via
+// `container_policy`.
+// TODO(crbug.com/1278127): Replace w/ generic HTML policy modification.
+void UpdateIFramePermissionsPolicyWithDelegationSupportForClientHints(
+    ClientHintsExtendedData& data,
+    const blink::ParsedPermissionsPolicy& container_policy) {
+  if (container_policy.empty() ||
+      !base::FeatureList::IsEnabled(
+          blink::features::kClientHintThirdPartyDelegation)) {
+    return;
+  }
+
+  // For client hints specifically, we need to allow the container policy
+  // to overwrite the parent policy so that permissions policies set in HTML
+  // via an accept-ch meta tag can be respected.
+  blink::ParsedPermissionsPolicy client_hints_container_policy;
+  for (const auto& container_policy_item : container_policy) {
+    const auto& it = blink::GetPolicyFeatureToClientHintMap().find(
+        container_policy_item.feature);
+    if (it != blink::GetPolicyFeatureToClientHintMap().end()) {
+      client_hints_container_policy.push_back(container_policy_item);
+
+      // We need to ensure `blink::EnabledClientHints` is updated where the
+      // main frame now has permission for the given client hints.
+      std::set<url::Origin> origin_set(
+          container_policy_item.allowed_origins.begin(),
+          container_policy_item.allowed_origins.end());
+      if (origin_set.find(url::Origin::Create(data.main_frame_url)) !=
+          origin_set.end()) {
+        for (const auto& hint : it->second) {
+          data.hints.SetIsEnabled(hint, /*should_send*/ true);
+        }
+      }
+    }
+  }
+  data.permissions_policy->OverwriteHeaderPolicyForClientHints(
+      client_hints_container_policy);
+}
+
 // Captures when UpdateNavigationRequestClientUaHeadersImpl() is being called.
 enum class ClientUaHeaderCallType {
   // The call is happening during creation of the NavigationRequest.
@@ -622,7 +664,8 @@
     bool override_ua,
     FrameTreeNode* frame_tree_node,
     ClientUaHeaderCallType call_type,
-    net::HttpRequestHeaders* headers) {
+    net::HttpRequestHeaders* headers,
+    const blink::ParsedPermissionsPolicy& container_policy) {
   absl::optional<blink::UserAgentMetadata> ua_metadata;
   bool disable_due_to_custom_ua = false;
   if (override_ua) {
@@ -649,6 +692,8 @@
       ua_metadata = delegate->GetUserAgentMetadata();
 
     ClientHintsExtendedData data(url, frame_tree_node, delegate);
+    UpdateIFramePermissionsPolicyWithDelegationSupportForClientHints(
+        data, container_policy);
 
     // The `Sec-CH-UA` client hint is attached to all outgoing requests. This is
     // (intentionally) different than other client hints.
@@ -756,7 +801,7 @@
 
   UpdateNavigationRequestClientUaHeadersImpl(
       url, delegate, override_ua, frame_tree_node,
-      ClientUaHeaderCallType::kAfterCreated, headers);
+      ClientUaHeaderCallType::kAfterCreated, headers, {});
 }
 
 namespace {
@@ -770,14 +815,8 @@
     FrameTreeNode* frame_tree_node,
     const blink::ParsedPermissionsPolicy& container_policy) {
   ClientHintsExtendedData data(url, frame_tree_node, delegate);
-
-  // If there is a container policy, use the same logic as when a new frame is
-  // committed to combine with the parent policy.
-  if (!container_policy.empty()) {
-    data.permissions_policy = blink::PermissionsPolicy::CreateFromParentPolicy(
-        data.permissions_policy.get(), container_policy,
-        url::Origin::Create(url));
-  }
+  UpdateIFramePermissionsPolicyWithDelegationSupportForClientHints(
+      data, container_policy);
 
   // Add Headers
   if (ShouldAddClientHint(data, WebClientHintsType::kDeviceMemory_DEPRECATED)) {
@@ -819,7 +858,7 @@
   if (UserAgentClientHintEnabled()) {
     UpdateNavigationRequestClientUaHeadersImpl(
         url, delegate, is_ua_override_on, frame_tree_node,
-        ClientUaHeaderCallType::kDuringCreation, headers);
+        ClientUaHeaderCallType::kDuringCreation, headers, container_policy);
   }
 
   if (ShouldAddClientHint(data, WebClientHintsType::kPrefersColorScheme)) {
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc
index f4d63d3..fe8ce9fe 100644
--- a/content/browser/renderer_host/navigation_controller_impl.cc
+++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -501,21 +501,6 @@
   return true;
 }
 
-bool ShouldStorePolicyContainerPoliciesInFrameNavigationEntry(const GURL& url) {
-  // For local schemes we need to store the policy container in the
-  // FrameNavigationEntry, so that we can reload it in case of history
-  // navigation. Note that `url` can be empty in case this is called for the
-  // initial NavigationEntry, which should always store the
-  // PolicyContainerPolicies.
-  //
-  // TODO(https://crbug.com/1146361 and https://crbug.com/1146362): blob: and
-  // filesystem: should be removed from this list when we have properly
-  // implemented storing their policy container in the respective store.
-  return (url.is_empty() || url.SchemeIs(url::kAboutScheme) ||
-          url.SchemeIs(url::kDataScheme) || url.SchemeIsBlob() ||
-          url.SchemeIsFileSystem());
-}
-
 }  // namespace
 
 // NavigationControllerImpl::PendingEntryRef------------------------------------
@@ -3942,9 +3927,6 @@
     RenderFrameHostImpl* rfh,
     bool is_same_document,
     const GURL& url) {
-  if (!ShouldStorePolicyContainerPoliciesInFrameNavigationEntry(url))
-    return nullptr;
-
   if (is_same_document) {
     CHECK(GetLastCommittedEntry());
 
diff --git a/content/browser/renderer_host/policy_container_navigation_bundle_browsertest.cc b/content/browser/renderer_host/policy_container_navigation_bundle_browsertest.cc
index 15f276a..0cf1f88 100644
--- a/content/browser/renderer_host/policy_container_navigation_bundle_browsertest.cc
+++ b/content/browser/renderer_host/policy_container_navigation_bundle_browsertest.cc
@@ -8,6 +8,7 @@
 #include "content/browser/renderer_host/frame_tree_node.h"
 #include "content/browser/renderer_host/navigation_entry_impl.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
+#include "content/public/test/back_forward_cache_util.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/content_browser_test.h"
@@ -104,25 +105,27 @@
               IsNull());
 }
 
-// Verifies that HistoryPolicies() returns nullptr if the history entry given to
-// the bundle contains no policies.
+// Verifies that HistoryPolicies() returns non-null during history navigation.
 IN_PROC_BROWSER_TEST_F(PolicyContainerNavigationBundleBrowserTest,
-                       HistoryPoliciesWithoutEntryPolicies) {
-  // Navigate to a document with a network scheme. Its history entry will have
-  // nullptr policies, since those should always be reconstructed from the
-  // network response.
+                       HistoryPoliciesForNetworkScheme) {
+  // Navigate to a document with a network scheme. Its history entry should have
+  // its policies initialized from the network response.
   EXPECT_TRUE(NavigateToURL(shell()->web_contents(), LocalUrl()));
 
+  const PolicyContainerPolicies& root_policies = GetPolicies(root_frame_host());
+  EXPECT_EQ(root_policies.ip_address_space,
+            network::mojom::IPAddressSpace::kLocal);
+
   PolicyContainerNavigationBundle bundle(
       nullptr, nullptr, GetLastCommittedFrameNavigationEntry());
 
-  EXPECT_THAT(bundle.HistoryPolicies(), IsNull());
+  EXPECT_THAT(bundle.HistoryPolicies(), Pointee(Eq(ByRef(root_policies))));
 }
 
-// Verifies that SetFrameNavigationEntry() copies the policies of the given
-// entry, if any, or resets those policies when given nullptr.
+// Verifies that SetFrameNavigationEntry() copies the policies during history
+// navigation, if any, or resets those policies when given nullptr.
 IN_PROC_BROWSER_TEST_F(PolicyContainerNavigationBundleBrowserTest,
-                       HistoryPoliciesWithEntry) {
+                       HistoryPoliciesForBlankUrl) {
   RenderFrameHostImpl* root = root_frame_host();
 
   // First navigate to a local scheme with non-default policies. To do that, we
@@ -145,6 +148,33 @@
   EXPECT_THAT(bundle.HistoryPolicies(), Pointee(Eq(ByRef(root_policies))));
 }
 
+// Verifies that HistoryPolicies() returns non-null even when associated with
+// a non-current FrameNavigationEntry.
+IN_PROC_BROWSER_TEST_F(PolicyContainerNavigationBundleBrowserTest,
+                       HistoryPoliciesForNonCurentEntry) {
+  // Navigate to a document with a network scheme. Its history entry should have
+  // its policies initialized from the network response.
+  EXPECT_TRUE(NavigateToURL(shell()->web_contents(), LocalUrl()));
+
+  const PolicyContainerPolicies& root_policies = GetPolicies(root_frame_host());
+  EXPECT_EQ(root_policies.ip_address_space,
+            network::mojom::IPAddressSpace::kLocal);
+
+  FrameNavigationEntry* entry = GetLastCommittedFrameNavigationEntry();
+  PolicyContainerNavigationBundle bundle(nullptr, nullptr, entry);
+
+  // Verify the state is correct before navigating away.
+  EXPECT_THAT(bundle.HistoryPolicies(), Pointee(Eq(ByRef(root_policies))));
+
+  EXPECT_TRUE(NavigateToURL(shell()->web_contents(), PublicUrl()));
+
+  // Now that the FrameNavigationEntry is non-current, verify that it still has
+  // the bundle.
+  EXPECT_NE(entry, GetLastCommittedFrameNavigationEntry());
+  PolicyContainerNavigationBundle bundle2(nullptr, nullptr, entry);
+  EXPECT_THAT(bundle2.HistoryPolicies(), Pointee(Eq(ByRef(root_policies))));
+}
+
 // Verifies that CreatePolicyContainerForBlink() returns a policy container
 // containing a copy of the bundle's final policies.
 IN_PROC_BROWSER_TEST_F(PolicyContainerNavigationBundleBrowserTest,
@@ -321,6 +351,49 @@
   EXPECT_EQ(PublicUrl(), tab->GetLastCommittedURL());
 }
 
+// Verifies that history policies from a restored navigation entry are
+// overwritten if the policies have changed.
+IN_PROC_BROWSER_TEST_F(PolicyContainerNavigationBundleBrowserTest,
+                       NoHistoryPoliciesInheritedForNetworkUrlsOnBack) {
+  DisableBackForwardCacheForTesting(shell()->web_contents(),
+                                    BackForwardCache::TEST_ASSUMES_NO_CACHING);
+
+  // Start by navigating to a network URL with one policy.
+  WebContents* tab = shell()->web_contents();
+  EXPECT_TRUE(NavigateToURL(tab, PublicUrl()));
+  EXPECT_EQ(PublicUrl(), tab->GetLastCommittedURL());
+
+  // Use replaceState() to change to a same-origin URL with a different policy
+  // (which happens to be no policy for LocalUrl()).
+  TestNavigationObserver navigation_observer(shell()->web_contents());
+  EXPECT_TRUE(
+      ExecJs(root_frame_host(),
+             base::StringPrintf("window.history.replaceState('', null, '%s');",
+                                LocalUrl().spec().data())));
+  navigation_observer.WaitForNavigationFinished();
+  EXPECT_EQ(LocalUrl(), tab->GetLastCommittedURL());
+
+  // Because we changed the url via replaceState rather than actually
+  // navigating to LocalUrl(), it shouldn't have modified any policies.
+  EXPECT_FALSE(
+      GetPolicies(root_frame_host()).content_security_policies.empty());
+  FrameNavigationEntry* entry = GetLastCommittedFrameNavigationEntry();
+  EXPECT_FALSE(
+      entry->policy_container_policies()->content_security_policies.empty());
+
+  // Navigate away, then back to LocalUrl().
+  EXPECT_TRUE(NavigateToURL(shell()->web_contents(), AboutBlankUrl()));
+  EXPECT_TRUE(HistoryGoBack(shell()->web_contents()));
+
+  // This time we actually loaded LocalUrl(). We should use its (non-existent)
+  // content security policies and updated the policies on the
+  // FrameNavigationEntry, rather than restoring the previous set from the FNE.
+  EXPECT_EQ(entry, GetLastCommittedFrameNavigationEntry());
+  EXPECT_TRUE(
+      entry->policy_container_policies()->content_security_policies.empty());
+  EXPECT_TRUE(GetPolicies(root_frame_host()).content_security_policies.empty());
+}
+
 // Verifies that the history policies are preserved on
 // ResetForCrossDocumentRestart.
 IN_PROC_BROWSER_TEST_F(PolicyContainerNavigationBundleBrowserTest,
diff --git a/content/browser/webid/federated_auth_request_impl.cc b/content/browser/webid/federated_auth_request_impl.cc
index 5bfc6d9a..1b4a171 100644
--- a/content/browser/webid/federated_auth_request_impl.cc
+++ b/content/browser/webid/federated_auth_request_impl.cc
@@ -176,7 +176,7 @@
   }
 
   if (base::ranges::any_of(logout_requests, [](auto& request) {
-        return !request->endpoint.is_valid();
+        return !request->url.is_valid();
       })) {
     bad_message::ReceivedBadMessage(render_frame_host_->GetProcess(),
                                     bad_message::FARI_LOGOUT_BAD_ENDPOINT);
@@ -618,9 +618,9 @@
 
 void FederatedAuthRequestImpl::DispatchOneLogout() {
   auto logout_request = std::move(logout_requests_.front());
-  DCHECK(logout_request->endpoint.is_valid());
+  DCHECK(logout_request->url.is_valid());
   std::string account_id = logout_request->account_id;
-  auto endpoint_origin = url::Origin::Create(logout_request->endpoint);
+  auto logout_origin = url::Origin::Create(logout_request->url);
   logout_requests_.pop();
 
   if (!GetActiveSessionPermissionContext()) {
@@ -629,13 +629,13 @@
   }
 
   if (GetActiveSessionPermissionContext()->HasActiveSession(
-          endpoint_origin, origin_, account_id)) {
+          logout_origin, origin_, account_id)) {
     network_manager_->SendLogout(
-        logout_request->endpoint,
+        logout_request->url,
         base::BindOnce(&FederatedAuthRequestImpl::OnLogoutCompleted,
                        weak_ptr_factory_.GetWeakPtr()));
     GetActiveSessionPermissionContext()->RevokeActiveSession(
-        endpoint_origin, origin_, account_id);
+        logout_origin, origin_, account_id);
   } else {
     if (logout_requests_.empty()) {
       CompleteLogoutRequest(LogoutStatus::kSuccess);
diff --git a/content/browser/webid/federated_auth_request_impl_unittest.cc b/content/browser/webid/federated_auth_request_impl_unittest.cc
index 6fbd453..549e026 100644
--- a/content/browser/webid/federated_auth_request_impl_unittest.cc
+++ b/content/browser/webid/federated_auth_request_impl_unittest.cc
@@ -445,7 +445,7 @@
 LogoutRequestPtr MakeLogoutRequest(const std::string& endpoint,
                                    const std::string& account_id) {
   auto request = LogoutRequest::New();
-  request->endpoint = GURL(endpoint);
+  request->url = GURL(endpoint);
   request->account_id = account_id;
   return request;
 }
diff --git a/content/browser/webui/shared_resources_data_source.cc b/content/browser/webui/shared_resources_data_source.cc
index f2a5efd..48a487be 100644
--- a/content/browser/webui/shared_resources_data_source.cc
+++ b/content/browser/webui/shared_resources_data_source.cc
@@ -28,7 +28,7 @@
 #include "base/feature_list.h"
 #include "chromeos/grit/chromeos_resources.h"
 #include "chromeos/grit/chromeos_resources_map.h"
-#include "ui/chromeos/styles/cros_styles.h"
+#include "ui/chromeos/styles/cros_styles.h"  // nogncheck
 #endif
 
 namespace content {
diff --git a/content/services/auction_worklet/bidder_worklet.cc b/content/services/auction_worklet/bidder_worklet.cc
index e382e36..16b1c0fe 100644
--- a/content/services/auction_worklet/bidder_worklet.cc
+++ b/content/services/auction_worklet/bidder_worklet.cc
@@ -213,7 +213,7 @@
   generate_bid_task->callback = std::move(generate_bid_callback);
 
   // If worklet script failed to load, fail and exit early.
-  if (!is_loading_ && !have_worklet_script_) {
+  if (worklet_js_load_state_ == LoadState::kFailure) {
     DeliverBidCallbackOnUserThread(generate_bid_task,
                                    mojom::BidderWorkletBidPtr(),
                                    /*error_msgs=*/std::vector<std::string>());
@@ -258,9 +258,9 @@
   report_win_task->callback = std::move(callback);
 
   // If worklet script isn't loaded, can't run script immediately.
-  if (!have_worklet_script_) {
+  if (worklet_js_load_state_ != LoadState::kSuccess) {
     // If worklet script failed to load, fail and exit early.
-    if (!is_loading_) {
+    if (worklet_js_load_state_ == LoadState::kFailure) {
       DeliverReportWinOnUserThread(report_win_task,
                                    /*report_url=*/absl::optional<GURL>(),
                                    /*errors=*/std::vector<std::string>());
@@ -686,16 +686,15 @@
 
   worklet_loader_.reset();
 
-  is_loading_ = false;
-
   // Fail all pending tasks if the script failed to load.
   if (!worklet_script.success()) {
+    worklet_js_load_state_ = LoadState::kFailure;
     load_script_error_msg_ = std::move(error_msg);
     FailAllPendingTasks();
     return;
   }
 
-  have_worklet_script_ = true;
+  worklet_js_load_state_ = LoadState::kSuccess;
   v8_runner_->PostTask(FROM_HERE,
                        base::BindOnce(&BidderWorklet::V8State::SetWorkletScript,
                                       base::Unretained(v8_state_.get()),
@@ -733,8 +732,12 @@
 
 void BidderWorklet::GenerateBidIfReady(GenerateBidTaskList::iterator task) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(user_sequence_checker_);
-  if (task->trusted_bidding_signals || !have_worklet_script_)
+  // Script load failure should abort all tasks before getting here.
+  DCHECK_NE(worklet_js_load_state_, LoadState::kFailure);
+  if (task->trusted_bidding_signals ||
+      worklet_js_load_state_ != LoadState::kSuccess) {
     return;
+  }
 
   v8_runner_->PostTask(
       FROM_HERE,
diff --git a/content/services/auction_worklet/bidder_worklet.h b/content/services/auction_worklet/bidder_worklet.h
index 331005e..4d80205 100644
--- a/content/services/auction_worklet/bidder_worklet.h
+++ b/content/services/auction_worklet/bidder_worklet.h
@@ -205,6 +205,8 @@
     SEQUENCE_CHECKER(v8_sequence_checker_);
   };
 
+  enum class LoadState { kLoading, kSuccess, kFailure };
+
   void ResumeIfPaused();
   void Start();
 
@@ -251,12 +253,8 @@
 
   const GURL script_source_url_;
 
-  // True until `worklet_loader_` has completed loading (successfully or
-  // otherwise).
-  bool is_loading_ = true;
-
   std::unique_ptr<WorkletLoader> worklet_loader_;
-  bool have_worklet_script_ = false;
+  LoadState worklet_js_load_state_ = LoadState::kLoading;
 
   // Values copied from the interest group used to create the BidderWorklet.
   const absl::optional<GURL> trusted_bidding_signals_url_;
diff --git a/content/services/auction_worklet/trusted_signals_request_manager.cc b/content/services/auction_worklet/trusted_signals_request_manager.cc
index dac2b8d4..89bb6b0a 100644
--- a/content/services/auction_worklet/trusted_signals_request_manager.cc
+++ b/content/services/auction_worklet/trusted_signals_request_manager.cc
@@ -29,11 +29,13 @@
 TrustedSignalsRequestManager::TrustedSignalsRequestManager(
     Type type,
     network::mojom::URLLoaderFactory* url_loader_factory,
+    bool automatically_send_requests,
     const url::Origin& top_level_origin,
     const GURL& trusted_signals_url,
     AuctionV8Helper* v8_helper)
     : type_(type),
       url_loader_factory_(url_loader_factory),
+      automatically_send_requests_(automatically_send_requests),
       top_level_origin_(top_level_origin),
       trusted_signals_url_(trusted_signals_url),
       v8_helper_(v8_helper) {}
@@ -53,7 +55,7 @@
   std::unique_ptr<RequestImpl> request = std::make_unique<RequestImpl>(
       this, std::set<std::string>(keys.begin(), keys.end()),
       std::move(load_signals_callback));
-  queued_requests_.insert(request.get());
+  QueueRequest(request.get());
   return request;
 }
 
@@ -69,13 +71,19 @@
       std::set<std::string>(ad_component_render_urls.begin(),
                             ad_component_render_urls.end()),
       std::move(load_signals_callback));
-  queued_requests_.insert(request.get());
+  QueueRequest(request.get());
   return request;
 }
 
 void TrustedSignalsRequestManager::StartBatchedTrustedSignalsRequest() {
-  if (queued_requests_.empty())
+  if (queued_requests_.empty()) {
+    // The timer should never be running when there are no pending requests.
+    DCHECK(!timer_.IsRunning());
     return;
+  }
+
+  // No need to continue running the timer, if it's running.
+  timer_.Stop();
 
   BatchedTrustedSignalsRequest* batched_request =
       batched_requests_
@@ -181,6 +189,9 @@
   if (!request->batched_request_) {
     size_t removed = queued_requests_.erase(request);
     DCHECK_EQ(removed, 1u);
+    // If there are no more requests, stop the timer.
+    if (queued_requests_.empty())
+      timer_.Stop();
     return;
   }
 
@@ -199,4 +210,20 @@
         batched_requests_.find(request->batched_request_.get()));
 }
 
+void TrustedSignalsRequestManager::QueueRequest(RequestImpl* request) {
+  // If the timer is not running, then either `automatically_send_requests_` is
+  // false, or no requests should be in `queued_requests_`.
+  DCHECK_EQ(timer_.IsRunning(),
+            automatically_send_requests_ && !queued_requests_.empty());
+
+  queued_requests_.insert(request);
+  if (automatically_send_requests_ && !timer_.IsRunning()) {
+    timer_.Start(
+        FROM_HERE, kAutoSendDelay,
+        base::BindOnce(
+            &TrustedSignalsRequestManager::StartBatchedTrustedSignalsRequest,
+            base::Unretained(this)));
+  }
+}
+
 }  // namespace auction_worklet
diff --git a/content/services/auction_worklet/trusted_signals_request_manager.h b/content/services/auction_worklet/trusted_signals_request_manager.h
index 9faa687..9cf4be3c 100644
--- a/content/services/auction_worklet/trusted_signals_request_manager.h
+++ b/content/services/auction_worklet/trusted_signals_request_manager.h
@@ -16,6 +16,8 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
+#include "base/timer/timer.h"
 #include "content/services/auction_worklet/trusted_signals.h"
 #include "services/network/public/mojom/url_loader_factory.mojom-forward.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -33,6 +35,10 @@
 // TODO(https://crbug.com/1276639): Cache responses as well.
 class TrustedSignalsRequestManager {
  public:
+  // Delay between construction of a Request and automatically starting a
+  // network request when `automatically_send_requests` is true.
+  static constexpr base::TimeDelta kAutoSendDelay = base::Milliseconds(10);
+
   // Use same callback and result classes as TrustedSignals.
   using LoadSignalsCallback = TrustedSignals::LoadSignalsCallback;
   using Result = TrustedSignals::Result;
@@ -66,9 +72,20 @@
   //
   // `url_loader_factory` must remain valid for the lifetime of the
   // TrustedSignalsRequestManager. Keeps an owning reference to `v8_helper`.
+  //
+  // If `automatically_send_requests` is true, network requests will be
+  // automatically sent as if StartBatchedTrustedSignalsRequest() were invoked
+  // after there's been an outstanding Request for kAutoSendDelay. Manually
+  // calling StartBatchedTrustedSignalsRequest() will still start a
+  // TrustedSignals request for any pending requests and reset the send
+  // interval.
+  //
+  // TODO(https://crbug.com/1279643): Investigate improving the
+  // `automatically_send_requests` logic.
   TrustedSignalsRequestManager(
       Type type,
       network::mojom::URLLoaderFactory* url_loader_factory,
+      bool automatically_send_requests,
       const url::Origin& top_level_origin,
       const GURL& trusted_signals_url,
       AuctionV8Helper* v8_helper);
@@ -165,6 +182,9 @@
     std::set<RequestImpl*> requests;
   };
 
+  // Adds `request` to `queued_requests_`, and starts `timer_` if needed.
+  void QueueRequest(RequestImpl* request);
+
   void OnSignalsLoaded(BatchedTrustedSignalsRequest* batched_request,
                        scoped_refptr<Result> result,
                        absl::optional<std::string> error_msg);
@@ -176,6 +196,7 @@
 
   const Type type_;
   const raw_ptr<network::mojom::URLLoaderFactory> url_loader_factory_;
+  const bool automatically_send_requests_;
   const url::Origin top_level_origin_;
   const GURL trusted_signals_url_;
   const scoped_refptr<AuctionV8Helper> v8_helper_;
@@ -188,6 +209,8 @@
            base::UniquePtrComparator>
       batched_requests_;
 
+  base::OneShotTimer timer_;
+
   base::WeakPtrFactory<TrustedSignalsRequestManager> weak_ptr_factory{this};
 };
 
diff --git a/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc b/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc
index 5f4cb54..2474b5d8 100644
--- a/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc
+++ b/content/services/auction_worklet/trusted_signals_request_manager_unittest.cc
@@ -28,6 +28,10 @@
 namespace auction_worklet {
 namespace {
 
+// Very short time used by some tests that want to wait until just before a
+// timer triggers.
+constexpr base::TimeDelta kTinyTime = base::Microseconds(1);
+
 // Common JSON used for most bidding signals tests.
 const char kBaseBiddingJson[] = R"(
   {
@@ -77,17 +81,20 @@
 class TrustedSignalsRequestManagerTest : public testing::Test {
  public:
   TrustedSignalsRequestManagerTest()
-      : v8_helper_(
+      : task_environment_(base::test::TaskEnvironment::TimeSource::MOCK_TIME),
+        v8_helper_(
             AuctionV8Helper::Create(AuctionV8Helper::CreateTaskRunner())),
         bidding_request_manager_(
             TrustedSignalsRequestManager::Type::kBiddingSignals,
             &url_loader_factory_,
+            /*automatically_send_requests=*/false,
             url::Origin::Create(GURL(kTopLevelOrigin)),
             trusted_signals_url_,
             v8_helper_.get()),
         scoring_request_manager_(
             TrustedSignalsRequestManager::Type::kScoringSignals,
             &url_loader_factory_,
+            /*automatically_send_requests=*/false,
             url::Origin::Create(GURL(kTopLevelOrigin)),
             trusted_signals_url_,
             v8_helper_.get()) {}
@@ -832,5 +839,196 @@
   base::RunLoop().RunUntilIdle();
 }
 
+// Test that when `automatically_send_requests` is false, requests are not
+// automatically started.
+TEST_F(TrustedSignalsRequestManagerTest, AutomaticallySendRequestsDisabled) {
+  const std::vector<std::string> kKeys{"key1"};
+
+  auto request = bidding_request_manager_.RequestBiddingSignals(
+      kKeys, base::BindOnce(&NeverInvokedLoadSignalsCallback));
+  task_environment_.FastForwardBy(base::Hours(1));
+  EXPECT_EQ(0, url_loader_factory_.NumPending());
+}
+
+TEST_F(TrustedSignalsRequestManagerTest, AutomaticallySendRequestsEnabled) {
+  const std::vector<std::string> kKeys1{"key1"};
+  const std::vector<std::string> kKeys2{"key2"};
+  const std::vector<std::string> kKeys3{"key3"};
+
+  // Create a new bidding request manager with `automatically_send_requests`
+  // enabled.
+  TrustedSignalsRequestManager bidding_request_manager(
+      TrustedSignalsRequestManager::Type::kBiddingSignals, &url_loader_factory_,
+      /*automatically_send_requests=*/true,
+      url::Origin::Create(GURL(kTopLevelOrigin)), trusted_signals_url_,
+      v8_helper_.get());
+
+  // Create one Request.
+  base::RunLoop run_loop1;
+  scoped_refptr<TrustedSignals::Result> signals1;
+  absl::optional<std::string> error_msg1;
+  auto request1 = bidding_request_manager.RequestBiddingSignals(
+      kKeys1, base::BindOnce(&LoadSignalsCallback, &signals1, &error_msg1,
+                             run_loop1.QuitClosure()));
+
+  // Wait until just before the timer triggers. No network requests should be
+  // made.
+  task_environment_.FastForwardBy(TrustedSignalsRequestManager::kAutoSendDelay -
+                                  kTinyTime);
+  EXPECT_EQ(0, url_loader_factory_.NumPending());
+
+  // Create another Request.
+  base::RunLoop run_loop2;
+  scoped_refptr<TrustedSignals::Result> signals2;
+  absl::optional<std::string> error_msg2;
+  auto request2 = bidding_request_manager.RequestBiddingSignals(
+      kKeys2, base::BindOnce(&LoadSignalsCallback, &signals2, &error_msg2,
+                             run_loop2.QuitClosure()));
+
+  // Wait until the exact time the timer should trigger. A single network
+  // request should be made, covering both Requests.
+  task_environment_.FastForwardBy(kTinyTime);
+  ASSERT_EQ(1, url_loader_factory_.NumPending());
+
+  AddJsonResponse(&url_loader_factory_,
+                  GURL("https://url.test/?hostname=publisher&keys=key1,key2"),
+                  kBaseBiddingJson);
+
+  run_loop1.Run();
+  EXPECT_FALSE(error_msg1);
+  ASSERT_TRUE(signals1);
+  EXPECT_EQ(R"({"key1":1})", ExtractBiddingSignals(signals1.get(), kKeys1));
+
+  run_loop2.Run();
+  EXPECT_FALSE(error_msg2);
+  ASSERT_TRUE(signals2);
+  EXPECT_EQ(R"({"key2":[2]})", ExtractBiddingSignals(signals2.get(), kKeys2));
+
+  // Create one more request, and wait for the timer to trigger again, to make
+  // sure it restarts correctly.
+  base::RunLoop run_loop3;
+  scoped_refptr<TrustedSignals::Result> signals3;
+  absl::optional<std::string> error_msg3;
+  auto request3 = bidding_request_manager.RequestBiddingSignals(
+      kKeys3, base::BindOnce(&LoadSignalsCallback, &signals3, &error_msg3,
+                             run_loop3.QuitClosure()));
+  task_environment_.FastForwardBy(TrustedSignalsRequestManager::kAutoSendDelay);
+  EXPECT_EQ(1, url_loader_factory_.NumPending());
+
+  // Complete the request.
+  AddJsonResponse(&url_loader_factory_,
+                  GURL("https://url.test/?hostname=publisher&keys=key3"),
+                  kBaseBiddingJson);
+  run_loop3.Run();
+  EXPECT_FALSE(error_msg3);
+  ASSERT_TRUE(signals3);
+  EXPECT_EQ(R"({"key3":"3"})", ExtractBiddingSignals(signals3.get(), kKeys3));
+}
+
+TEST_F(TrustedSignalsRequestManagerTest,
+       AutomaticallySendRequestsCancelAllRequestsRestartsTimer) {
+  const std::vector<std::string> kKeys1{"key1"};
+  const std::vector<std::string> kKeys2{"key2"};
+
+  // Create a new bidding request manager with `automatically_send_requests`
+  // enabled.
+  TrustedSignalsRequestManager bidding_request_manager(
+      TrustedSignalsRequestManager::Type::kBiddingSignals, &url_loader_factory_,
+      /*automatically_send_requests=*/true,
+      url::Origin::Create(GURL(kTopLevelOrigin)), trusted_signals_url_,
+      v8_helper_.get());
+
+  // Create one Request.
+  auto request1 = bidding_request_manager.RequestBiddingSignals(
+      kKeys1, base::BindOnce(&NeverInvokedLoadSignalsCallback));
+
+  // Wait until just before the timer triggers. No network requests should be
+  // made.
+  task_environment_.FastForwardBy(TrustedSignalsRequestManager::kAutoSendDelay -
+                                  kTinyTime);
+  EXPECT_EQ(0, url_loader_factory_.NumPending());
+
+  // Cancel the request. The timer should be stopped.
+  request1.reset();
+
+  // Create another Request.
+  base::RunLoop run_loop2;
+  scoped_refptr<TrustedSignals::Result> signals2;
+  absl::optional<std::string> error_msg2;
+  auto request2 = bidding_request_manager.RequestBiddingSignals(
+      kKeys2, base::BindOnce(&LoadSignalsCallback, &signals2, &error_msg2,
+                             run_loop2.QuitClosure()));
+
+  // Wait until just before the timer triggers if it were correctly restarted.
+  // No network requests should be made.
+  task_environment_.FastForwardBy(TrustedSignalsRequestManager::kAutoSendDelay -
+                                  kTinyTime);
+  ASSERT_EQ(0, url_loader_factory_.NumPending());
+
+  // Wait until the exact time the timer should trigger. A single network
+  // request should be made for just the second Request.
+  task_environment_.FastForwardBy(kTinyTime);
+  ASSERT_EQ(1, url_loader_factory_.NumPending());
+
+  AddJsonResponse(&url_loader_factory_,
+                  GURL("https://url.test/?hostname=publisher&keys=key2"),
+                  kBaseBiddingJson);
+
+  run_loop2.Run();
+  EXPECT_FALSE(error_msg2);
+  ASSERT_TRUE(signals2);
+  EXPECT_EQ(R"({"key2":[2]})", ExtractBiddingSignals(signals2.get(), kKeys2));
+}
+
+TEST_F(TrustedSignalsRequestManagerTest,
+       AutomaticallySendRequestsCancelSomeRequestsDoesNotRestartTimer) {
+  const std::vector<std::string> kKeys1{"key1"};
+  const std::vector<std::string> kKeys2{"key2"};
+
+  // Create a new bidding request manager with `automatically_send_requests`
+  // enabled.
+  TrustedSignalsRequestManager bidding_request_manager(
+      TrustedSignalsRequestManager::Type::kBiddingSignals, &url_loader_factory_,
+      /*automatically_send_requests=*/true,
+      url::Origin::Create(GURL(kTopLevelOrigin)), trusted_signals_url_,
+      v8_helper_.get());
+
+  // Create one Request.
+  auto request1 = bidding_request_manager.RequestBiddingSignals(
+      kKeys1, base::BindOnce(&NeverInvokedLoadSignalsCallback));
+
+  // Wait until just before the timer triggers. No network requests should be
+  // made.
+  task_environment_.FastForwardBy(TrustedSignalsRequestManager::kAutoSendDelay -
+                                  kTinyTime);
+  EXPECT_EQ(0, url_loader_factory_.NumPending());
+
+  // Create another Request.
+  base::RunLoop run_loop2;
+  scoped_refptr<TrustedSignals::Result> signals2;
+  absl::optional<std::string> error_msg2;
+  auto request2 = bidding_request_manager.RequestBiddingSignals(
+      kKeys2, base::BindOnce(&LoadSignalsCallback, &signals2, &error_msg2,
+                             run_loop2.QuitClosure()));
+
+  // Cancel the first request. The timer should not be stopped, since there's
+  // still a request pending.
+  request1.reset();
+
+  // Wait until the exact time the timer should trigger. A single network
+  // request should be made for just the second Request.
+  task_environment_.FastForwardBy(kTinyTime);
+  ASSERT_EQ(1, url_loader_factory_.NumPending());
+
+  AddJsonResponse(&url_loader_factory_,
+                  GURL("https://url.test/?hostname=publisher&keys=key2"),
+                  kBaseBiddingJson);
+
+  run_loop2.Run();
+  EXPECT_FALSE(error_msg2);
+  ASSERT_TRUE(signals2);
+  EXPECT_EQ(R"({"key2":[2]})", ExtractBiddingSignals(signals2.get(), kKeys2));
+}
+
 }  // namespace
 }  // namespace auction_worklet
diff --git a/content/test/fuzzer/BUILD.gn b/content/test/fuzzer/BUILD.gn
index f7b707e9..7ceed2a 100644
--- a/content/test/fuzzer/BUILD.gn
+++ b/content/test/fuzzer/BUILD.gn
@@ -189,7 +189,6 @@
   deps = [
     "//base/test:test_support",
     "//content/browser:for_content_tests",
-    "//content/public/browser:browser_sources",
     "//content/test:test_support",
     "//services/network:test_support",
     "//storage/browser:test_support",
@@ -267,6 +266,24 @@
       "../../browser/indexed_db/fuzzer_corpus/encoded_indexed_db_key_path"
 }
 
+mojolpm_fuzzer_test("media_stream_dispatcher_host_mojolpm_fuzzer") {
+  sources = [ "media_stream_dispatcher_host_mojolpm_fuzzer.cc" ]
+
+  proto_source = "media_stream_dispatcher_host_mojolpm_fuzzer.proto"
+
+  deps = [
+    "//base/test:test_support",
+    "//content/browser:browser",
+    "//content/browser:for_content_tests",
+    "//content/public/browser:browser_sources",
+    "//content/test:test_support",
+    "//services/network:test_support",
+    "//storage/browser:test_support",
+  ]
+
+  proto_deps = [ "//third_party/blink/public/mojom:mojom_platform_mojolpm" ]
+}
+
 # Fuzzer only supports linux. As we use a `V4L2CaptureDevice`, which is only
 # usable on linux through `VideoCaptureDeviceFactoryLinux`.
 if (is_linux || is_chromeos_lacros) {
diff --git a/content/test/fuzzer/media_stream_dispatcher_host_mojolpm_fuzzer.cc b/content/test/fuzzer/media_stream_dispatcher_host_mojolpm_fuzzer.cc
new file mode 100644
index 0000000..deac3dd
--- /dev/null
+++ b/content/test/fuzzer/media_stream_dispatcher_host_mojolpm_fuzzer.cc
@@ -0,0 +1,333 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <stdint.h>
+#include <utility>
+
+#include "base/at_exit.h"
+#include "base/base_switches.h"
+#include "base/bind.h"
+#include "base/callback_helpers.h"
+#include "base/command_line.h"
+#include "base/i18n/icu_util.h"
+#include "base/no_destructor.h"
+#include "base/run_loop.h"
+#include "base/test/simple_test_tick_clock.h"
+#include "base/test/test_switches.h"
+#include "base/test/test_timeouts.h"
+#include "base/threading/platform_thread.h"
+#include "base/threading/thread.h"
+#include "content/browser/network_service_instance_impl.h"
+#include "content/public/browser/audio_service.h"
+#include "content/public/browser/browser_task_traits.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/site_instance.h"
+#include "content/public/common/content_switches.h"
+#include "content/public/test/browser_task_environment.h"
+#include "content/public/test/mock_navigation_handle.h"
+#include "content/public/test/test_browser_context.h"
+#include "content/public/test/test_content_client_initializer.h"
+#include "content/test/test_render_frame_host.h"
+#include "content/test/test_web_contents.h"
+#include "media/audio/audio_manager.h"
+#include "media/audio/audio_system.h"
+#include "mojo/core/embedder/embedder.h"
+#include "mojo/public/cpp/bindings/interface_ptr.h"
+#include "mojo/public/cpp/bindings/lib/validation_errors.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+#include "content/browser/media/media_internals.h"
+#include "content/browser/renderer_host/media/media_stream_dispatcher_host.h"
+#include "content/browser/renderer_host/media/media_stream_manager.h"
+
+#include "content/test/fuzzer/media_stream_dispatcher_host_mojolpm_fuzzer.pb.h"
+
+#include "mojo/core/embedder/embedder.h"
+#include "third_party/blink/public/mojom/mediastream/media_stream.mojom-mojolpm.h"
+#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
+
+#include "third_party/libprotobuf-mutator/src/src/libfuzzer/libfuzzer_macro.h"
+
+const char* const cmdline[] = {"media_stream_dispatcher_host_mojolpm_fuzzer",
+                               nullptr};
+class ContentFuzzerEnvironment {
+ public:
+  ContentFuzzerEnvironment()
+      : fuzzer_thread_((base::CommandLine::Init(1, cmdline), "fuzzer_thread")) {
+    TestTimeouts::Initialize();
+    logging::SetMinLogLevel(logging::LOG_FATAL);
+    mojo::core::Init();
+    base::i18n::InitializeICU();
+    fuzzer_thread_.StartAndWaitForTesting();
+
+    content::ForceCreateNetworkServiceDirectlyForTesting();
+  }
+
+  scoped_refptr<base::SequencedTaskRunner> fuzzer_task_runner() {
+    return fuzzer_thread_.task_runner();
+  }
+
+ private:
+  base::AtExitManager at_exit_manager_;
+  base::Thread fuzzer_thread_;
+  content::TestContentClientInitializer content_client_initializer_;
+};
+
+ContentFuzzerEnvironment& GetEnvironment() {
+  static base::NoDestructor<ContentFuzzerEnvironment> environment;
+  return *environment;
+}
+
+scoped_refptr<base::SequencedTaskRunner> GetFuzzerTaskRunner() {
+  return GetEnvironment().fuzzer_task_runner();
+}
+
+class MediaStreamDispatcherHostTestcase
+    : public content::RenderViewHostTestHarness {
+ public:
+  explicit MediaStreamDispatcherHostTestcase(
+      const content::fuzzing::media_stream_dispatcher_host::proto::Testcase&
+          testcase);
+  ~MediaStreamDispatcherHostTestcase() override;
+
+  bool IsFinished();
+  void NextAction();
+
+  // Prerequisite state.
+  base::SimpleTestTickClock clock_;
+
+ private:
+  using Action = content::fuzzing::media_stream_dispatcher_host::proto::Action;
+
+  void SetUp() override;
+  void SetUpOnUIThread();
+
+  void TearDown() override;
+  void TearDownOnUIThread();
+
+  void AddMediaStreamDispatcherHost(uint32_t id);
+  void AddMediaStreamDispatcherHostImpl();
+
+  void TestBody() override {}
+
+  // The proto message describing the test actions to perform.
+  const content::fuzzing::media_stream_dispatcher_host::proto::Testcase&
+      testcase_;
+
+  // Apply a reasonable upper-bound on testcase complexity to avoid timeouts.
+  const int max_action_count_ = 512;
+
+  // Apply a reasonable upper-bound on maximum size of action that we will
+  // deserialize. (This is deliberately slightly larger than max mojo message
+  // size)
+  const size_t max_action_size_ = 300 * 1024 * 1024;
+
+  // Count of total actions performed in this testcase.
+  int action_count_ = 0;
+
+  // The index of the next sequence of actions to execute.
+  int next_sequence_idx_ = 0;
+
+  std::unique_ptr<media::AudioSystem> audio_system_ = nullptr;
+  std::unique_ptr<content::MediaStreamManager> media_stream_manager_ = nullptr;
+  content::MediaStreamDispatcherHost* media_stream_dispatcher_host_ = nullptr;
+  content::TestRenderFrameHost* render_frame_host_ = nullptr;
+
+  SEQUENCE_CHECKER(sequence_checker_);
+};
+
+MediaStreamDispatcherHostTestcase::MediaStreamDispatcherHostTestcase(
+    const content::fuzzing::media_stream_dispatcher_host::proto::Testcase&
+        testcase)
+    : RenderViewHostTestHarness(
+          base::test::TaskEnvironment::TimeSource::MOCK_TIME,
+          base::test::TaskEnvironment::MainThreadType::DEFAULT,
+          base::test::TaskEnvironment::ThreadPoolExecutionMode::ASYNC,
+          base::test::TaskEnvironment::ThreadingMode::MULTIPLE_THREADS,
+          content::BrowserTaskEnvironment::REAL_IO_THREAD),
+      testcase_(testcase) {
+  SetUp();
+}
+
+MediaStreamDispatcherHostTestcase::~MediaStreamDispatcherHostTestcase() {
+  TearDown();
+}
+
+bool MediaStreamDispatcherHostTestcase::IsFinished() {
+  return next_sequence_idx_ >= testcase_.sequence_indexes_size();
+}
+
+void MediaStreamDispatcherHostTestcase::NextAction() {
+  if (next_sequence_idx_ < testcase_.sequence_indexes_size()) {
+    auto sequence_idx = testcase_.sequence_indexes(next_sequence_idx_++);
+    const auto& sequence =
+        testcase_.sequences(sequence_idx % testcase_.sequences_size());
+    for (auto action_idx : sequence.action_indexes()) {
+      if (!testcase_.actions_size() || ++action_count_ > max_action_count_) {
+        return;
+      }
+      const auto& action =
+          testcase_.actions(action_idx % testcase_.actions_size());
+      if (action.ByteSizeLong() > max_action_size_) {
+        return;
+      }
+      switch (action.action_case()) {
+        case Action::kRunThread: {
+          if (action.run_thread().id()) {
+            base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
+            content::GetUIThreadTaskRunner({})->PostTask(
+                FROM_HERE, run_loop.QuitClosure());
+            run_loop.Run();
+          } else {
+            base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
+            content::GetIOThreadTaskRunner({})->PostTask(
+                FROM_HERE, run_loop.QuitClosure());
+            run_loop.Run();
+          }
+        } break;
+        case Action::kNewMediaStreamDispatcherHost: {
+          AddMediaStreamDispatcherHost(
+              action.new_media_stream_dispatcher_host().id());
+        } break;
+        case Action::kMediaStreamDispatcherHostRemoteAction: {
+          mojolpm::HandleRemoteAction(
+              action.media_stream_dispatcher_host_remote_action());
+        } break;
+        case Action::ACTION_NOT_SET:
+          break;
+      }
+    }
+  }
+}
+
+void MediaStreamDispatcherHostTestcase::SetUp() {
+  RenderViewHostTestHarness::SetUp();
+  base::RunLoop run_loop;
+
+  content::GetUIThreadTaskRunner({})->PostTaskAndReply(
+      FROM_HERE,
+      base::BindOnce(&MediaStreamDispatcherHostTestcase::SetUpOnUIThread,
+                     base::Unretained(this)),
+      run_loop.QuitClosure());
+  run_loop.Run();
+}
+
+void MediaStreamDispatcherHostTestcase::SetUpOnUIThread() {
+  // content::CreateAudioSystemForAudioService();
+  render_frame_host_ =
+      static_cast<content::TestWebContents*>(web_contents())->GetMainFrame();
+  render_frame_host_->InitializeRenderFrameIfNeeded();
+
+  // UI thread
+  audio_system_ = content::CreateAudioSystemForAudioService();
+
+  // UI thread
+  media_stream_manager_ = std::make_unique<content::MediaStreamManager>(
+      audio_system_.get(), content::GetIOThreadTaskRunner({}));
+}
+
+void MediaStreamDispatcherHostTestcase::TearDown() {
+  base::RunLoop run_loop;
+  content::GetUIThreadTaskRunner({})->PostTaskAndReply(
+      FROM_HERE,
+      base::BindOnce(&MediaStreamDispatcherHostTestcase::TearDownOnUIThread,
+                     base::Unretained(this)),
+      run_loop.QuitClosure());
+  run_loop.Run();
+
+  RenderViewHostTestHarness::TearDown();
+}
+
+void MediaStreamDispatcherHostTestcase::TearDownOnUIThread() {
+  // media_stream_manager_.reset();
+  // audio_system_.reset();
+}
+
+void MediaStreamDispatcherHostTestcase::AddMediaStreamDispatcherHostImpl() {
+  // BrowserIO thread
+  media_stream_dispatcher_host_ = new content::MediaStreamDispatcherHost(
+      render_frame_host_->GetProcess()->GetID(),
+      render_frame_host_->GetRoutingID(), media_stream_manager_.get());
+}
+
+// Component(s) which we fuzz
+void MediaStreamDispatcherHostTestcase::AddMediaStreamDispatcherHost(
+    uint32_t id) {
+  mojo::Remote<blink::mojom::MediaStreamDispatcherHost> remote;
+  base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
+
+  auto receiver = remote.BindNewPipeAndPassReceiver();
+
+  content::GetIOThreadTaskRunner({})->PostTaskAndReply(
+      FROM_HERE,
+      base::BindOnce(
+          &MediaStreamDispatcherHostTestcase::AddMediaStreamDispatcherHostImpl,
+          base::Unretained(this)),
+      run_loop.QuitClosure());
+
+  run_loop.Run();
+
+  mojolpm::GetContext()->AddInstance(id, std::move(remote));
+}
+
+// Helper function to keep scheduling fuzzer actions on the current runloop
+// until the testcase has completed, and then quit the runloop.
+void NextAction(MediaStreamDispatcherHostTestcase* testcase,
+                base::RepeatingClosure quit_closure) {
+  if (!testcase->IsFinished()) {
+    testcase->NextAction();
+    GetFuzzerTaskRunner()->PostTask(
+        FROM_HERE, base::BindOnce(NextAction, base::Unretained(testcase),
+                                  std::move(quit_closure)));
+  } else {
+    GetFuzzerTaskRunner()->PostTask(FROM_HERE, std::move(quit_closure));
+  }
+}
+
+// Helper function to setup and run the testcase, since we need to do that from
+// the fuzzer sequence rather than the main thread.
+void RunTestcase(MediaStreamDispatcherHostTestcase* testcase) {
+  mojo::Message message;
+  auto dispatch_context =
+      std::make_unique<mojo::internal::MessageDispatchContext>(&message);
+
+  mojolpm::GetContext()->StartTestcase();
+
+  base::RunLoop fuzzer_run_loop(base::RunLoop::Type::kNestableTasksAllowed);
+  GetFuzzerTaskRunner()->PostTask(
+      FROM_HERE, base::BindOnce(NextAction, base::Unretained(testcase),
+                                fuzzer_run_loop.QuitClosure()));
+  fuzzer_run_loop.Run();
+
+  mojolpm::GetContext()->EndTestcase();
+}
+
+DEFINE_BINARY_PROTO_FUZZER(
+    const content::fuzzing::media_stream_dispatcher_host::proto::Testcase&
+        proto_testcase) {
+  // bail out early if no work to do
+  if (!proto_testcase.actions_size() || !proto_testcase.sequences_size() ||
+      !proto_testcase.sequence_indexes_size()) {
+    return;
+  }
+
+  // Make sure that the environment is initialized before we do anything else.
+  GetEnvironment();
+
+  MediaStreamDispatcherHostTestcase testcase(proto_testcase);
+
+  base::RunLoop ui_run_loop(base::RunLoop::Type::kNestableTasksAllowed);
+
+  // Unretained is safe here, because ui_run_loop has to finish before
+  // testcase goes out of scope.
+  GetFuzzerTaskRunner()->PostTaskAndReply(
+      FROM_HERE, base::BindOnce(RunTestcase, base::Unretained(&testcase)),
+      ui_run_loop.QuitClosure());
+
+  ui_run_loop.Run();
+}
diff --git a/content/test/fuzzer/media_stream_dispatcher_host_mojolpm_fuzzer.proto b/content/test/fuzzer/media_stream_dispatcher_host_mojolpm_fuzzer.proto
new file mode 100644
index 0000000..88ad3306
--- /dev/null
+++ b/content/test/fuzzer/media_stream_dispatcher_host_mojolpm_fuzzer.proto
@@ -0,0 +1,52 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Message format for the MojoLPM fuzzer for the MediaStreamDispatcherHost
+// interface.
+
+syntax = "proto2";
+
+package content.fuzzing.media_stream_dispatcher_host.proto;
+
+import "third_party/blink/public/mojom/mediastream/media_stream.mojom.mojolpm.proto";
+
+// Bind a new MediaStreamDispatcherHost remote
+message NewMediaStreamDispatcherHostAction {
+  required uint32 id = 1;
+}
+
+// Run the specific sequence for (an indeterminate) period. This is not
+// intended to create a specific ordering, but to allow the fuzzer to delay a
+// later task until previous tasks have completed.
+message RunThreadAction {
+  enum ThreadId {
+    IO = 0;
+    UI = 1;
+  }
+
+  required ThreadId id = 1;
+}
+
+// Actions that can be performed by the fuzzer.
+message Action {
+  oneof action {
+    NewMediaStreamDispatcherHostAction new_media_stream_dispatcher_host = 1;
+    RunThreadAction run_thread = 2;
+    mojolpm.blink.mojom.MediaStreamDispatcherHost.RemoteAction
+        media_stream_dispatcher_host_remote_action = 3;
+  }
+}
+
+// Sequence provides a level of indirection which allows Testcase to compactly
+// express repeated sequences of actions.
+message Sequence {
+  repeated uint32 action_indexes = 1 [packed = true];
+}
+
+// Testcase is the top-level message type interpreted by the fuzzer.
+message Testcase {
+  repeated Action actions = 1;
+  repeated Sequence sequences = 2;
+  repeated uint32 sequence_indexes = 3 [packed = true];
+}
diff --git a/docs/security/rust-toolchain.md b/docs/security/rust-toolchain.md
index 6f3dac88..91ea892 100644
--- a/docs/security/rust-toolchain.md
+++ b/docs/security/rust-toolchain.md
@@ -44,6 +44,10 @@
 only for Linux platforms (but [see below](#Building-on-non-Linux-platforms)
 for how to enable on other platforms).
 
+Also add `"checkout_clang_libs": True` to your `.gclient` file in order to
+include the necessary libraries for building required C++-Rust interop
+tooling.
+
 # GN support
 
 Assume you want to add some Rust code to an existing C++ `source_set`.
diff --git a/fuchsia/release/size_tests/fyi_sizes_warning.json b/fuchsia/release/size_tests/fyi_sizes_warning.json
index 468d922..934a54be 100644
--- a/fuchsia/release/size_tests/fyi_sizes_warning.json
+++ b/fuchsia/release/size_tests/fyi_sizes_warning.json
@@ -5,6 +5,6 @@
   ],
   "far_total_name" : "chrome_fuchsia",
   "size_limits" : {
-    "chrome_fuchsia_compressed": 40894464
+    "chrome_fuchsia_compressed": 41099264
   }
 }
diff --git a/google_apis/gcm/tools/mcs_probe.cc b/google_apis/gcm/tools/mcs_probe.cc
index ce04cac..31e13a3 100644
--- a/google_apis/gcm/tools/mcs_probe.cc
+++ b/google_apis/gcm/tools/mcs_probe.cc
@@ -60,6 +60,7 @@
 #include "services/network/public/mojom/proxy_resolving_socket.mojom.h"
 #include "services/network/public/mojom/url_loader_factory.mojom.h"
 #include "services/network/test/test_network_connection_tracker.h"
+#include "url/scheme_host_port.h"
 
 #if defined(OS_MAC)
 #include "base/mac/scoped_nsautorelease_pool.h"
@@ -168,11 +169,12 @@
 
   bool NegotiateDisableCnameLookup() const override { return false; }
   bool NegotiateEnablePort() const override { return false; }
-  bool CanUseDefaultCredentials(const GURL& auth_origin) const override {
+  bool CanUseDefaultCredentials(
+      const url::SchemeHostPort& auth_scheme_host_port) const override {
     return false;
   }
   net::HttpAuth::DelegationType GetDelegationType(
-      const GURL& auth_origin) const override {
+      const url::SchemeHostPort& auth_scheme_host_port) const override {
     return net::HttpAuth::DelegationType::kNone;
   }
 };
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc
index 83a311a..ef042792 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc
@@ -162,6 +162,10 @@
     }
     access_mode_ = kGLReadWrite;
 
+    // Need to submit recorded work in skia's command buffer to the GPU.
+    // TODO(penghuang): only call submit() if it is necessary.
+    context_state_->gr_context()->submit();
+
     gl::GLApi* api = gl::g_current_gl_context;
     GLuint texture = passthrough_texture_->service_id();
     // Acquire the texture, so ANGLE can access it.
diff --git a/gpu/command_buffer/service/skia_utils.cc b/gpu/command_buffer/service/skia_utils.cc
index 1b56308..8225107 100644
--- a/gpu/command_buffer/service/skia_utils.cc
+++ b/gpu/command_buffer/service/skia_utils.cc
@@ -262,7 +262,7 @@
   image_info.fImage = image->image();
   image_info.fAlloc = alloc;
   image_info.fImageTiling = image->image_tiling();
-  image_info.fImageLayout = image->image_layout();
+  image_info.fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
   image_info.fFormat = image->format();
   image_info.fImageUsageFlags = image->usage();
   image_info.fSampleCount = 1;
diff --git a/gpu/vulkan/vulkan_image.h b/gpu/vulkan/vulkan_image.h
index 58269f1..ae27858 100644
--- a/gpu/vulkan/vulkan_image.h
+++ b/gpu/vulkan/vulkan_image.h
@@ -124,8 +124,6 @@
   VkDeviceSize device_size() const { return device_size_; }
   uint32_t memory_type_index() const { return memory_type_index_; }
   VkImageTiling image_tiling() const { return create_info_.tiling; }
-  VkImageLayout image_layout() const { return image_layout_; }
-  void set_image_layout(VkImageLayout layout) { image_layout_ = layout; }
   uint32_t queue_family_index() const { return queue_family_index_; }
   void set_queue_family_index(uint32_t index) { queue_family_index_ = index; }
   const absl::optional<VulkanYCbCrInfo>& ycbcr_info() const {
@@ -185,7 +183,6 @@
   VkImageCreateInfo create_info_{VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO};
   VkDeviceSize device_size_ = 0;
   uint32_t memory_type_index_ = 0;
-  VkImageLayout image_layout_ = VK_IMAGE_LAYOUT_UNDEFINED;
   uint32_t queue_family_index_ = VK_QUEUE_FAMILY_IGNORED;
   absl::optional<VulkanYCbCrInfo> ycbcr_info_;
   VkImage image_ = VK_NULL_HANDLE;
diff --git a/gpu/vulkan/vulkan_image_unittest.cc b/gpu/vulkan/vulkan_image_unittest.cc
index 89445d3..d519f67e 100644
--- a/gpu/vulkan/vulkan_image_unittest.cc
+++ b/gpu/vulkan/vulkan_image_unittest.cc
@@ -45,7 +45,6 @@
     EXPECT_EQ(image->format(), format);
     EXPECT_GT(image->device_size(), 0u);
     EXPECT_EQ(image->image_tiling(), VK_IMAGE_TILING_OPTIMAL);
-    EXPECT_EQ(image->image_layout(), VK_IMAGE_LAYOUT_UNDEFINED);
     EXPECT_NE(image->image(), static_cast<VkImage>(VK_NULL_HANDLE));
     EXPECT_NE(image->device_memory(),
               static_cast<VkDeviceMemory>(VK_NULL_HANDLE));
@@ -74,7 +73,6 @@
     EXPECT_EQ(image->format(), format);
     EXPECT_GT(image->device_size(), 0u);
     EXPECT_EQ(image->image_tiling(), VK_IMAGE_TILING_OPTIMAL);
-    EXPECT_EQ(image->image_layout(), VK_IMAGE_LAYOUT_UNDEFINED);
     EXPECT_NE(image->image(), static_cast<VkImage>(VK_NULL_HANDLE));
     EXPECT_NE(image->device_memory(),
               static_cast<VkDeviceMemory>(VK_NULL_HANDLE));
@@ -180,7 +178,6 @@
     EXPECT_EQ(image->format(), format.vk);
     EXPECT_GT(image->device_size(), 0u);
     EXPECT_EQ(image->image_tiling(), VK_IMAGE_TILING_OPTIMAL);
-    EXPECT_EQ(image->image_layout(), VK_IMAGE_LAYOUT_UNDEFINED);
     EXPECT_NE(image->image(), static_cast<VkImage>(VK_NULL_HANDLE));
     EXPECT_NE(image->device_memory(),
               static_cast<VkDeviceMemory>(VK_NULL_HANDLE));
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star
index cc72a25..5545453 100644
--- a/infra/config/subprojects/chromium/ci.star
+++ b/infra/config/subprojects/chromium/ci.star
@@ -1,4 +1,4 @@
-k# Copyright 2020 The Chromium Authors. All rights reserved.
+# Copyright 2020 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
diff --git a/ios/chrome/app/strings/ios_chromium_strings.grd b/ios/chrome/app/strings/ios_chromium_strings.grd
index 1ff07dbd..4ec5fe1 100644
--- a/ios/chrome/app/strings/ios_chromium_strings.grd
+++ b/ios/chrome/app/strings/ios_chromium_strings.grd
@@ -289,9 +289,6 @@
       <message name="IDS_IOS_FIRSTRUN_WELCOME_TO_CHROME" desc="Title on the Welcome to Chromium screen presented to the user on First Run. [iOS only]">
         Welcome to Chromium
       </message>
-      <message name="IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER" desc="Header text and link for the view in Settings for managing saved passwords when the user is signed in and syncing passwords. [Length: unlimited] [iOS only]">
-        Passwords are saved to <ph name="BEGIN_LINK">BEGIN_LINK</ph>Password Manager<ph name="END_LINK">END_LINK</ph> so you can use them on any device.
-      </message>
       <message name="IDS_IOS_GOOGLE_SERVICES_SETTINGS_IMPROVE_CHROME_TEXT" desc="Feature title in the settings for the user enable or disable. Related with 'Automatically sends usage statistics and crash reports to Google'. [iOS only]">
         Help Improve Chromium's Features and Performance
       </message>
@@ -367,9 +364,6 @@
       <message name="IDS_IOS_SAVE_IMAGE_PRIVACY_ALERT_MESSAGE_GO_TO_SETTINGS" desc="Body of the alert shown when the user tries to save an image but we lack permission to add photos. This body tells the user he'll be redirected to the Settings app. [Length: 100em] [iOS only].">
         To save images, tap on Settings to let Chromium add to your photos
       </message>
-      <message name="IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER" desc="Header text for the view in Settings for managing saved passwords when the user is not signed in, or signed in and not syncing passwords. [Length: unlimited] [iOS only]">
-        Passwords are saved to Password Manager on this device only.
-      </message>
       <message name="IDS_IOS_SCANNER_CAMERA_IN_USE_ALERT_DETAIL" desc="Body of a modal dialog shown when the user tries to open the QR or credit card scanner but the camera is in use by another application. [Length: 140em] [iOS only]">
         Chromium can't use your camera because it's in use by another application
       </message>
@@ -388,6 +382,9 @@
       <message name="IDS_IOS_SCANNER_MULTIPLE_FOREGROUND_APPS_ALERT_DETAIL" desc="Body of a modal dialog shown when the user tries to open the QR or credit card scanner in a Split View mode, when the camera is unavailable. [Length: 140em] [iOS only]">
         Chromium can't use your camera in Split View mode
       </message>
+      <message name="IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE" desc="The additional subtitle of the view that teaches users they can autofill passwords with Google password manager [iOS only]">
+        To autofill your passwords with Password Manager, turn on Chromium in your iOS AutoFill settings:
+      </message>
       <message name="IDS_IOS_SHORT_PRODUCT_NAME" desc="The Chrome application short name.">
         Chromium
       </message>
diff --git a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER.png.sha1 b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER.png.sha1
deleted file mode 100644
index d4661c20..0000000
--- a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-bb352378379999450f8ca6c1c1d82ddafc8e66b9
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER.png.sha1 b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER.png.sha1
deleted file mode 100644
index 6afe11a9..0000000
--- a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ee69e0ab71b06c73a045876870cf629ef6908703
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE.png.sha1 b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE.png.sha1
new file mode 100644
index 0000000..aa688f3
--- /dev/null
+++ b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+33d3f4ce672ec4613a7ddbf6c62dd1c2bbebb6b2
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings.grd b/ios/chrome/app/strings/ios_google_chrome_strings.grd
index f8eb75b..e7581b5 100644
--- a/ios/chrome/app/strings/ios_google_chrome_strings.grd
+++ b/ios/chrome/app/strings/ios_google_chrome_strings.grd
@@ -289,9 +289,6 @@
       <message name="IDS_IOS_FIRSTRUN_WELCOME_TO_CHROME" desc="Title on the Welcome to Chrome screen presented to the user on First Run. [iOS only]">
         Welcome to Chrome
       </message>
-      <message name="IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER" desc="Header text and link for the view in Settings for managing saved passwords when the user is signed in and syncing passwords. [Length: unlimited] [iOS only]">
-        Passwords are saved to <ph name="BEGIN_LINK">BEGIN_LINK</ph>Google Password Manager<ph name="END_LINK">END_LINK</ph> so you can use them on any device.
-      </message>
       <message name="IDS_IOS_GOOGLE_SERVICES_SETTINGS_IMPROVE_CHROME_TEXT" desc="Feature title in the settings for the user enable or disable. Related with 'Automatically sends usage statistics and crash reports to Google'. [iOS only]">
         Help Improve Chrome's Features and Performance
       </message>
@@ -367,9 +364,6 @@
       <message name="IDS_IOS_SAVE_IMAGE_PRIVACY_ALERT_MESSAGE_GO_TO_SETTINGS" desc="Body of the alert shown when the user tries to save an image but we lack permission to add to photos. This body tells the user he'll be redirected to the Settings app. [Length: 100em] [iOS only].">
         To save images, tap on Settings to let Chrome add to your photos
       </message>
-      <message name="IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER" desc="Header text for the view in Settings for managing saved passwords when the user is not signed in, or signed in and not syncing passwords. [Length: unlimited] [iOS only]">
-        Passwords are saved to Google Password Manager on this device only.
-      </message>
       <message name="IDS_IOS_SCANNER_CAMERA_IN_USE_ALERT_DETAIL" desc="Body of a modal dialog shown when the user tries to open the QR scanner but the camera is in use by another application. [Length: 140em] [iOS only]">
         Google Chrome can't use your camera because it's in use by another application
       </message>
@@ -388,6 +382,9 @@
       <message name="IDS_IOS_SCANNER_MULTIPLE_FOREGROUND_APPS_ALERT_DETAIL" desc="Body of a modal dialog shown when the user tries to open the QR scanner in a Split View mode, when the camera is unavailable. [Length: 140em] [iOS only]">
         Google Chrome can't use your camera in Split View mode
       </message>
+      <message name="IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE" desc="The additional subtitle of the view that teaches users they can autofill passwords with Google password manager [iOS only]">
+        To autofill your passwords with Google Password Manager, turn on Chrome in your iOS AutoFill settings:
+      </message>
       <message name="IDS_IOS_SHORT_PRODUCT_NAME" desc="The Chrome application short name">
         Chrome
       </message>
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER.png.sha1 b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER.png.sha1
deleted file mode 100644
index d4661c20..0000000
--- a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-bb352378379999450f8ca6c1c1d82ddafc8e66b9
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER.png.sha1 b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER.png.sha1
deleted file mode 100644
index 6afe11a9..0000000
--- a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ee69e0ab71b06c73a045876870cf629ef6908703
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE.png.sha1 b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE.png.sha1
new file mode 100644
index 0000000..aa688f3
--- /dev/null
+++ b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+33d3f4ce672ec4613a7ddbf6c62dd1c2bbebb6b2
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd
index d65f412..be1dbca 100644
--- a/ios/chrome/app/strings/ios_strings.grd
+++ b/ios/chrome/app/strings/ios_strings.grd
@@ -2012,6 +2012,9 @@
       <message name="IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT" desc="Header text with link for the view in Settings for managing saved passwords. [Length: unlimited] [iOS only]">
         View and manage saved passwords at <ph name="BEGIN_LINK">BEGIN_LINK</ph>passwords.google.com<ph name="END_LINK">END_LINK</ph>
       </message>
+      <message name="IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT_HEADER" desc="Header text with link for the view in Settings for managing saved passwords. [Length: unlimited] [iOS only]">
+        Create, save, and manage your passwords so you can easily sign in to sites and apps. <ph name="BEGIN_LINK">BEGIN_LINK</ph>Learn more<ph name="END_LINK">END_LINK</ph>
+      </message>
       <message name="IDS_IOS_CHECK_PASSWORDS" desc="Title for the item in Settings for Password Check feature" meaning="Label tells the user about status of Password Check [CHAR_LIMIT=25] [iOS only]">
         Check Passwords
       </message>
@@ -2119,6 +2122,15 @@
       <message name="IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE" desc="The subtitle of the view that teaches users to turn on iOS auto-fill from Chrome password manager">
         Use the passwords you saved to Chrome in other apps on your device
       </message>
+      <message name="IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPAD" desc="The subtitle of the view that teaches users to turn on iOS auto-fill from Chrome password manager for iPad [iPadOS only]">
+        You can autofill saved passwords in other apps on your iPad.
+      </message>
+      <message name="IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPHONE" desc="The subtitle of the view that teaches users to turn on iOS auto-fill from Chrome password manager for iPhone [iOS only]">
+        You can autofill saved passwords in other apps on your iPhone.
+      </message>
+      <message name="IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_SYNCING_ENABLED" desc="The subtitle of the view that teaches password-syncing users they can access passwords from their other devices">
+        You can also use saved passwords on your other devices.
+      </message>
       <message name="IDS_IOS_SETTINGS_SAFETY_CHECK_PASSWORDS_TITLE" desc="Title for the passwords element of safety check" meaning="Row title to access the passowrd check subpage if a probelm is found with user's saved passwords [CHAR_LIMIT=20]">
         Passwords
       </message>
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT_HEADER.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT_HEADER.png.sha1
new file mode 100644
index 0000000..f05db42
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT_HEADER.png.sha1
@@ -0,0 +1 @@
+61da3db6b0ea6ec810715325834460b6158ec898
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPAD.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPAD.png.sha1
new file mode 100644
index 0000000..7aacf81
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPAD.png.sha1
@@ -0,0 +1 @@
+c64594d4ad1beae10f205e38d17f1430b10b8f86
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPHONE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPHONE.png.sha1
new file mode 100644
index 0000000..7aacf81
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPHONE.png.sha1
@@ -0,0 +1 @@
+c64594d4ad1beae10f205e38d17f1430b10b8f86
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_SYNCING_ENABLED.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_SYNCING_ENABLED.png.sha1
new file mode 100644
index 0000000..7aacf81
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_SYNCING_ENABLED.png.sha1
@@ -0,0 +1 @@
+c64594d4ad1beae10f205e38d17f1430b10b8f86
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_strings_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb
index 173eb72..746066f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_af.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nuwe Incognito-oortjiebladsy</translation>
 <translation id="7765158879357617694">Skuif</translation>
 <translation id="7772032839648071052">Bevestig wagfrase</translation>
-<translation id="7778472311864276518">Verwyder rekening van hierdie toestel</translation>
 <translation id="7781011649027948662">Vertaal bladsy?</translation>
 <translation id="7781069478569868053">Nuwe oortjie-bladsy</translation>
 <translation id="7781829728241885113">Gister</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb
index 69f2054..ec2ea97 100644
--- a/ios/chrome/app/strings/resources/ios_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">አዲስ ማንነት የማያሳውቅ የትር ገጽ</translation>
 <translation id="7765158879357617694">ውሰድ</translation>
 <translation id="7772032839648071052">የይለፍ ሐረግ ያረጋግጡ</translation>
-<translation id="7778472311864276518">መለያን ከዚህ መሣሪያ አስወግድ</translation>
 <translation id="7781011649027948662">ገጽ ይተርጎም?</translation>
 <translation id="7781069478569868053">የአዲስ ትር ገጽ</translation>
 <translation id="7781829728241885113">ትናንት</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
index 4d0c40c..6fedd738 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -67,7 +67,8 @@
 <translation id="1509486075633541495">تسجيل الدخول إلى الموقع الإلكتروني</translation>
 <translation id="1509960214886564027">قد تتوقف الميزات عن العمل في العديد من المواقع الإلكترونية.</translation>
 <translation id="152234381334907219">المواقع التي لن تحفظ كلمات المرور أبدًا</translation>
-<translation id="1523341279170789507">السماح لكل ملفات تعريف الارتباط</translation>
+<translation id="1523341279170789507">السماح بكل ملفات تعريف الارتباط
+</translation>
 <translation id="1524563461097350801">لا، شكرًا</translation>
 <translation id="1535268707340844072">قد يؤدي الإعداد الحالي إلى حدوث تعطُّل في بعض المواقع الإلكترونية. لإدارة ملفات تعريف الارتباط لجميع المواقع الإلكترونية، يمكنك الاطّلاع على <ph name="BEGIN_LINK" />إعدادات ملفات تعريف الارتباط<ph name="END_LINK" />.</translation>
 <translation id="1540800554400757039">العنوان 1</translation>
@@ -725,7 +726,6 @@
 <translation id="7741325291586284254">صفحة علامة تبويب جديدة في وضع التصفّح المتخفي</translation>
 <translation id="7765158879357617694">نقل</translation>
 <translation id="7772032839648071052">تأكيد عبارة المرور</translation>
-<translation id="7778472311864276518">إزالة الحساب من هذا الجهاز</translation>
 <translation id="7781011649027948662">هل تريد ترجمة الصفحة؟</translation>
 <translation id="7781069478569868053">صفحة "علامة تبويب جديدة"</translation>
 <translation id="7781829728241885113">أمس</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb
index a0190ed..3ffc2ce4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_as.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">নতুন ইনক’গ্নিট’ টেবৰ পৃষ্ঠা</translation>
 <translation id="7765158879357617694">আঁতৰাওক</translation>
 <translation id="7772032839648071052">পাছফ্ৰেজ নিশ্চিত কৰক</translation>
-<translation id="7778472311864276518">এই ডিভাইচটোৰ পৰা একাউণ্টটো আঁতৰাওক</translation>
 <translation id="7781011649027948662">পৃষ্ঠাখন অনুবাদ কৰিবনে?</translation>
 <translation id="7781069478569868053">নতুন টেব পৃষ্ঠা</translation>
 <translation id="7781829728241885113">কালি</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb
index 6c841c9..529c1681 100644
--- a/ios/chrome/app/strings/resources/ios_strings_az.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Yeni Anonim Tab Səhifəsi</translation>
 <translation id="7765158879357617694">Daşıyın</translation>
 <translation id="7772032839648071052">Parolu təsdiq edin</translation>
-<translation id="7778472311864276518">Hesabı bu Cihazdan silin</translation>
 <translation id="7781011649027948662">Səhifə tərcümə edilsin?</translation>
 <translation id="7781069478569868053">Yeni Panel Səhifəsi</translation>
 <translation id="7781829728241885113">Dünən</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb
index bbd15026f..d0597af 100644
--- a/ios/chrome/app/strings/resources/ios_strings_be.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Старонка "Новая ўкладка ў рэжыме інкогніта"</translation>
 <translation id="7765158879357617694">Перамясціць</translation>
 <translation id="7772032839648071052">Пацвердзіце фразу-пароль</translation>
-<translation id="7778472311864276518">Выдаліць уліковы запіс з гэтай прылады</translation>
 <translation id="7781011649027948662">Перакласці старонку?</translation>
 <translation id="7781069478569868053">Старонка новай укладкі</translation>
 <translation id="7781829728241885113">Учора</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
index 2f0056a..420ebe9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Страница за нови раздели в режим „инкогнито“</translation>
 <translation id="7765158879357617694">Преместване</translation>
 <translation id="7772032839648071052">Потвърдете пропуска</translation>
-<translation id="7778472311864276518">Премахване на профила от това устройство</translation>
 <translation id="7781011649027948662">Да се преведе ли страницата?</translation>
 <translation id="7781069478569868053">Нов раздел в браузъра</translation>
 <translation id="7781829728241885113">Вчера</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index b034af8..667fadc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -726,7 +726,6 @@
 <translation id="7741325291586284254">নতুন ছদ্মবেশী ট্যাব পৃষ্ঠা</translation>
 <translation id="7765158879357617694">সরান</translation>
 <translation id="7772032839648071052">পাসফ্রেজ নিশ্চিত করুন</translation>
-<translation id="7778472311864276518">এই ডিভাইস থেকে অ্যাকাউন্ট সরান</translation>
 <translation id="7781011649027948662">পৃষ্ঠাটি অনুবাদ করতে চান?</translation>
 <translation id="7781069478569868053">নতুন ট্যাব পৃষ্ঠা</translation>
 <translation id="7781829728241885113">গতকাল</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
index 2471ac0..f35ca49 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nova stranica anonimne kartice</translation>
 <translation id="7765158879357617694">Pomjeri</translation>
 <translation id="7772032839648071052">Potvrdite pristupni izraz</translation>
-<translation id="7778472311864276518">Ukloni račun s ovog uređaja</translation>
 <translation id="7781011649027948662">Prevesti stranicu?</translation>
 <translation id="7781069478569868053">Stranica na novoj kartici</translation>
 <translation id="7781829728241885113">Jučer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
index d82d6288..f093fe91 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Pàgina de pestanya d'incògnit nova</translation>
 <translation id="7765158879357617694">Mou</translation>
 <translation id="7772032839648071052">Confirmeu la frase de contrasenya</translation>
-<translation id="7778472311864276518">Suprimeix el compte d'aquest dispositiu</translation>
 <translation id="7781011649027948662">Vols traduir la pàgina?</translation>
 <translation id="7781069478569868053">Pàgina Pestanya nova</translation>
 <translation id="7781829728241885113">Ahir</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
index b536096..a42e9a7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nová stránka Anonymní karta</translation>
 <translation id="7765158879357617694">Přesunout</translation>
 <translation id="7772032839648071052">Potvrďte heslovou frázi</translation>
-<translation id="7778472311864276518">Odstranit účet z tohoto zařízení</translation>
 <translation id="7781011649027948662">Přeložit stránku?</translation>
 <translation id="7781069478569868053">Stránka Nová karta</translation>
 <translation id="7781829728241885113">Včera</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb
index f58adf4e..1845da7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Ny side med inkognitofane</translation>
 <translation id="7765158879357617694">Flyt</translation>
 <translation id="7772032839648071052">Bekræft adgangssætning</translation>
-<translation id="7778472311864276518">Fjern kontoen fra denne enhed</translation>
 <translation id="7781011649027948662">Vil du oversætte siden?</translation>
 <translation id="7781069478569868053">Siden Ny fane</translation>
 <translation id="7781829728241885113">I går</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb
index 088c285a..eec0d555 100644
--- a/ios/chrome/app/strings/resources/ios_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Seite „Neuer Inkognitotab“</translation>
 <translation id="7765158879357617694">Verschieben</translation>
 <translation id="7772032839648071052">Passphrase bestätigen</translation>
-<translation id="7778472311864276518">Konto von diesem Gerät entfernen</translation>
 <translation id="7781011649027948662">Seite übersetzen?</translation>
 <translation id="7781069478569868053">"Neuer Tab"-Seite</translation>
 <translation id="7781829728241885113">Gestern</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb
index 11a41157..36e936c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -726,7 +726,6 @@
 <translation id="7741325291586284254">Νέα σελίδα καρτέλας ανώνυμης περιήγησης</translation>
 <translation id="7765158879357617694">Μεταφορά</translation>
 <translation id="7772032839648071052">Επιβεβαίωση φράσης πρόσβασης</translation>
-<translation id="7778472311864276518">Κατάργηση λογαριασμού από αυτήν τη συσκευή</translation>
 <translation id="7781011649027948662">Μετάφραση σελίδας;</translation>
 <translation id="7781069478569868053">Σελίδα σε νέα καρτέλα</translation>
 <translation id="7781829728241885113">Χθες</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 45ecdf9d..edeb4f8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">New incognito tab page</translation>
 <translation id="7765158879357617694">Move</translation>
 <translation id="7772032839648071052">Confirm passphrase</translation>
-<translation id="7778472311864276518">Remove account from this device</translation>
 <translation id="7781011649027948662">Translate page?</translation>
 <translation id="7781069478569868053">New Tab Page</translation>
 <translation id="7781829728241885113">Yesterday</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 d2a15fb..f363b9aa 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nueva página de pestañas de incógnito</translation>
 <translation id="7765158879357617694">Mover</translation>
 <translation id="7772032839648071052">Confirmar frase de contraseña</translation>
-<translation id="7778472311864276518">Quitar una cuenta de este dispositivo</translation>
 <translation id="7781011649027948662">¿Quieres traducir la página?</translation>
 <translation id="7781069478569868053">Página Nueva pestaña</translation>
 <translation id="7781829728241885113">Ayer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index 7a761fd..248f152 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nueva página de pestaña de incógnito</translation>
 <translation id="7765158879357617694">Mover</translation>
 <translation id="7772032839648071052">Repite la frase de contraseña</translation>
-<translation id="7778472311864276518">Quitar cuenta de este dispositivo</translation>
 <translation id="7781011649027948662">¿Quieres traducir esta página?</translation>
 <translation id="7781069478569868053">Página Nueva pestaña</translation>
 <translation id="7781829728241885113">Ayer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb
index 720bd87..811c3769 100644
--- a/ios/chrome/app/strings/resources/ios_strings_et.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Uus inkognito vaheleht</translation>
 <translation id="7765158879357617694">Liiguta</translation>
 <translation id="7772032839648071052">Kinnitage parool</translation>
-<translation id="7778472311864276518">Eemalda konto sellest seadmest</translation>
 <translation id="7781011649027948662">Kas tõlkida leht?</translation>
 <translation id="7781069478569868053">Uus vaheleht</translation>
 <translation id="7781829728241885113">Eile</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
index f7c282e..acc570b9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Ezkutuko moduko beste fitxa baten orria</translation>
 <translation id="7765158879357617694">Eraman</translation>
 <translation id="7772032839648071052">Berretsi pasaesaldia</translation>
-<translation id="7778472311864276518">Kendu kontua gailutik</translation>
 <translation id="7781011649027948662">Orria itzuli nahi duzu?</translation>
 <translation id="7781069478569868053">Fitxa berriaren orria</translation>
 <translation id="7781829728241885113">Atzo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index 676cf60..d3a0e7c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">صفحه برگه ناشناس جدید</translation>
 <translation id="7765158879357617694">انتقال</translation>
 <translation id="7772032839648071052">تأیید گذرعبارت</translation>
-<translation id="7778472311864276518">برداشتن حساب از این دستگاه</translation>
 <translation id="7781011649027948662">صفحه ترجمه شود؟</translation>
 <translation id="7781069478569868053">صفحه برگه جدید</translation>
 <translation id="7781829728241885113">دیروز</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
index 5721f979..3f2d1f6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Uusi sivu incognito-välilehdellä</translation>
 <translation id="7765158879357617694">Siirrä</translation>
 <translation id="7772032839648071052">Vahvista tunnuslause</translation>
-<translation id="7778472311864276518">Poista tili tältä laitteelta</translation>
 <translation id="7781011649027948662">Käännetäänkö sivu?</translation>
 <translation id="7781069478569868053">Uusi välilehti -sivu</translation>
 <translation id="7781829728241885113">Eilen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index 5e2a77e0..6190c4cc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Bagong Page ng Tab na Incognito</translation>
 <translation id="7765158879357617694">Ilipat</translation>
 <translation id="7772032839648071052">Kumpirmahin ang passphrase</translation>
-<translation id="7778472311864276518">Alisin ang Account sa Device na ito</translation>
 <translation id="7781011649027948662">Isalin ang Page?</translation>
 <translation id="7781069478569868053">Page ng Bagong Tab</translation>
 <translation id="7781829728241885113">Kahapon</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 edf08835..8d1535f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -169,6 +169,7 @@
 <translation id="2600682495497606169">Effacer les témoins du site</translation>
 <translation id="2625189173221582860">Mot de passe copié</translation>
 <translation id="2626236249646841566">Vérifiez votre connexion et réessayez de vous connecter.</translation>
+<translation id="2637313651144986786">Rechercher des onglets…</translation>
 <translation id="2647269890314209800">Témoins en cours d'utilisation</translation>
 <translation id="2648803196158606475">Supprimer les éléments lus</translation>
 <translation id="2653659639078652383">Envoyer</translation>
@@ -724,7 +725,6 @@
 <translation id="7741325291586284254">Page du nouvel onglet de navigation privée</translation>
 <translation id="7765158879357617694">Déplacer</translation>
 <translation id="7772032839648071052">Confirmer la phrase de passe</translation>
-<translation id="7778472311864276518">Supprimer le compte de cet appareil</translation>
 <translation id="7781011649027948662">Traduire la page?</translation>
 <translation id="7781069478569868053">Page Nouvel onglet</translation>
 <translation id="7781829728241885113">Hier</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
index 97c3ee9..a7a2a3c4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -726,7 +726,6 @@
 <translation id="7741325291586284254">Page du nouvel onglet de navigation privée</translation>
 <translation id="7765158879357617694">Déplacer</translation>
 <translation id="7772032839648071052">Confirmez la phrase secrète</translation>
-<translation id="7778472311864276518">Supprimer le compte de cet appareil</translation>
 <translation id="7781011649027948662">Traduire la page ?</translation>
 <translation id="7781069478569868053">Page Nouvel onglet</translation>
 <translation id="7781829728241885113">Hier</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
index 8292f4f..2a870725 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Páxina de nova pestana do modo de incógnito</translation>
 <translation id="7765158879357617694">Mover</translation>
 <translation id="7772032839648071052">Confirmar frase de acceso</translation>
-<translation id="7778472311864276518">Quitar conta deste dispositivo</translation>
 <translation id="7781011649027948662">Traducir esta páxina?</translation>
 <translation id="7781069478569868053">Páxina Nova pestana</translation>
 <translation id="7781829728241885113">Onte</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
index 235418f1..446723e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">છૂપી ટૅબનું નવું પેજ</translation>
 <translation id="7765158879357617694">સ્થાન</translation>
 <translation id="7772032839648071052">પાસફ્રેઝની પુષ્ટિ કરો</translation>
-<translation id="7778472311864276518">આ ડિવાઇસમાંથી એકાઉન્ટ કાઢી નાખો</translation>
 <translation id="7781011649027948662">પેજનો અનુવાદ કરીએ?</translation>
 <translation id="7781069478569868053">નવું ટૅબ પેજ</translation>
 <translation id="7781829728241885113">ગઈ કાલે</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
index 5fb7cc6..3110bd90d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">गुप्त टैब का नया पेज</translation>
 <translation id="7765158879357617694">ले जाएं</translation>
 <translation id="7772032839648071052">'पासफ़्रेज' की पुष्टि करें</translation>
-<translation id="7778472311864276518">इस डिवाइस से खाता हटाएं</translation>
 <translation id="7781011649027948662">पेज का अनुवाद करें?</translation>
 <translation id="7781069478569868053">नया टैब पेज</translation>
 <translation id="7781829728241885113">बीता कल</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
index a1996b8..2ff3860f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Stranica nove anonimne kartice</translation>
 <translation id="7765158879357617694">Pomakni</translation>
 <translation id="7772032839648071052">Potvrdi zaporku</translation>
-<translation id="7778472311864276518">Ukloni račun s ovog uređaja</translation>
 <translation id="7781011649027948662">Želite li prevesti stranicu?</translation>
 <translation id="7781069478569868053">Web-stranica nove kartice</translation>
 <translation id="7781829728241885113">Danas</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
index 989587d..250ef980 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Új inkognitó lap oldal</translation>
 <translation id="7765158879357617694">Áthelyezés</translation>
 <translation id="7772032839648071052">Összetett jelszó megerősítése</translation>
-<translation id="7778472311864276518">Fiók eltávolítása az eszközről</translation>
 <translation id="7781011649027948662">Lefordítja az oldalt?</translation>
 <translation id="7781069478569868053">Új lap oldal</translation>
 <translation id="7781829728241885113">Tegnap</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
index e888775..0623665 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Նոր ինկոգնիտո ներդիրի էջ</translation>
 <translation id="7765158879357617694">Տեղափոխել</translation>
 <translation id="7772032839648071052">Հաստատեք անցաբառը</translation>
-<translation id="7778472311864276518">Հեռացնել հաշիվն այս սարքից</translation>
 <translation id="7781011649027948662">Թարգմանե՞լ էջը</translation>
 <translation id="7781069478569868053">Նոր ներդիրի էջ</translation>
 <translation id="7781829728241885113">Երեկ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 64ea35c..b31f450 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Halaman Tab Samaran Baru</translation>
 <translation id="7765158879357617694">Pindahkan</translation>
 <translation id="7772032839648071052">Konfirmasi frasa sandi</translation>
-<translation id="7778472311864276518">Hapus Akun dari Perangkat Ini</translation>
 <translation id="7781011649027948662">Terjemahkan Halaman?</translation>
 <translation id="7781069478569868053">Halaman Tab Baru</translation>
 <translation id="7781829728241885113">Kemarin</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb
index f8364eb..6f4e66dd 100644
--- a/ios/chrome/app/strings/resources/ios_strings_is.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Síða með nýjum huliðsflipa</translation>
 <translation id="7765158879357617694">Færa</translation>
 <translation id="7772032839648071052">Staðfestu aðgangsorðið</translation>
-<translation id="7778472311864276518">Fjarlægja reikning úr þessu tæki</translation>
 <translation id="7781011649027948662">Þýða síðu?</translation>
 <translation id="7781069478569868053">Síða nýrra flipa</translation>
 <translation id="7781829728241885113">Í gær</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb
index d0abb680..458e657 100644
--- a/ios/chrome/app/strings/resources/ios_strings_it.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Pagina Nuova scheda in incognito</translation>
 <translation id="7765158879357617694">Sposta</translation>
 <translation id="7772032839648071052">Conferma passphrase</translation>
-<translation id="7778472311864276518">Rimuovi account da questo dispositivo</translation>
 <translation id="7781011649027948662">Tradurre la pagina?</translation>
 <translation id="7781069478569868053">Pagina Nuova scheda</translation>
 <translation id="7781829728241885113">Ieri</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
index 99675a2..46dfd7b4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">דף חדש של כרטיסיית מצב אנונימי</translation>
 <translation id="7765158879357617694">העברה</translation>
 <translation id="7772032839648071052">אישור משפט-סיסמה</translation>
-<translation id="7778472311864276518">הסרת החשבון מהמכשיר הזה</translation>
 <translation id="7781011649027948662">לתרגם את הדף?</translation>
 <translation id="7781069478569868053">דף 'כרטיסייה חדשה'</translation>
 <translation id="7781829728241885113">אתמול</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
index 04abd6c..ef14120 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">新しいシークレット タブ ページ</translation>
 <translation id="7765158879357617694">移動</translation>
 <translation id="7772032839648071052">パスフレーズの確認</translation>
-<translation id="7778472311864276518">このデバイスからアカウントを削除</translation>
 <translation id="7781011649027948662">ページを翻訳しますか?</translation>
 <translation id="7781069478569868053">新しいタブページ</translation>
 <translation id="7781829728241885113">昨日</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
index 023bf21..ecca138b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">ახალი ინკოგნიტო ჩანართის გვერდი</translation>
 <translation id="7765158879357617694">გადატანა</translation>
 <translation id="7772032839648071052">დაადასტურეთ პაროლი</translation>
-<translation id="7778472311864276518">ანგარიშის ამოშლა ამ მოწყობილობიდან</translation>
 <translation id="7781011649027948662">გსურთ გვერდის თარგმნა?</translation>
 <translation id="7781069478569868053">ახალი ჩანართის გვერდი</translation>
 <translation id="7781829728241885113">გუშინ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
index ee14eb4..9f95612 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Жаңа инкогнито қойындысы беті</translation>
 <translation id="7765158879357617694">Жылжыту</translation>
 <translation id="7772032839648071052">Құпия фразаны растау</translation>
-<translation id="7778472311864276518">Аккаунтты осы құрылғыдан өшіру</translation>
 <translation id="7781011649027948662">Бетті аудару қажет пе?</translation>
 <translation id="7781069478569868053">Жаңа қойынды беті</translation>
 <translation id="7781829728241885113">Кеше</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb
index b6f4d016..470a3c3f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_km.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -356,6 +356,7 @@
 <translation id="4389019817280890563">ចុចដើម្បី​ប្ដូរភាសា។</translation>
 <translation id="4442550905108052454">បើក<ph name="BEGIN_BOLD" />ការកំណត់<ph name="END_BOLD" /></translation>
 <translation id="4454246407045105932">បញ្ចូល​ភាសា</translation>
+<translation id="4462491365653392320">តាមដាន​តម្លៃនៅក្នុងផ្ទាំង</translation>
 <translation id="4469418912670346607">បន្តរៀបចំ</translation>
 <translation id="4474494258097106883">បង្កើតឡើង​សម្រាប់ iPhone របស់អ្នក</translation>
 <translation id="4476574785019001431">ការកំណត់</translation>
@@ -419,6 +420,7 @@
 <translation id="4944543191714094452">ស្វែងរក​ក្នុង​ទំព័រ…</translation>
 <translation id="4945756290001680296">ចូលប្រើការកំណត់​ពាក្យសម្ងាត់</translation>
 <translation id="4979397965658815378">ចូលដោយប្រើគណនី Google របស់អ្នកដើម្បីទទួលយកចំណាំ ពាក្យសម្ងាត់ ប្រវត្តិ និងការកំណត់ផ្សេងទៀតរបស់អ្នកនៅលើឧបករណ៍ទាំងអស់របស់អ្នក</translation>
+<translation id="4986678885919050584">ដកចេញ​ពីឧបករណ៍​នេះ</translation>
 <translation id="5005498671520578047">ថតចម្លងពាក្យសម្ងាត់</translation>
 <translation id="5017828934289857214">រំលឹក​ខ្ញុំ​ពេលក្រោយ</translation>
 <translation id="5037676449506322593">ជ្រើសរើសទាំងអស់</translation>
@@ -520,6 +522,7 @@
 <translation id="5979837087407522202">ស្វែងរកពាក្យសម្ងាត់</translation>
 <translation id="5982717868370722439">បន្ថែមទិន្នន័យដែលមានស្រាប់ទៅ <ph name="USER_EMAIL" /> ។</translation>
 <translation id="5984222099446776634">បានទៅកាន់កន្លងទៅថ្មីៗ</translation>
+<translation id="5988097621740394599">មើលការធ្លាក់ថ្លៃ​នៅក្នុងផ្ទាំង​របស់អ្នក។</translation>
 <translation id="5988851877894965432">បើក URL នៅក្នុង Chrome</translation>
 <translation id="6012140227487808125">កំពុងអ៊ីនគ្រីប…</translation>
 <translation id="6021332621416007159">បើកនៅក្នុង...</translation>
@@ -725,7 +728,6 @@
 <translation id="7741325291586284254">ទំព័រផ្ទាំងឯកជនថ្មី</translation>
 <translation id="7765158879357617694">ផ្លាស់ទី</translation>
 <translation id="7772032839648071052">អះអាងឃ្លាសម្ងាត់</translation>
-<translation id="7778472311864276518">លុបគណនី​ចេញពី​ឧបករណ៍​នេះ</translation>
 <translation id="7781011649027948662">បកប្រែទំព័រ​ឬ?</translation>
 <translation id="7781069478569868053">ទំព័រផ្ទាំងថ្មី</translation>
 <translation id="7781829728241885113">ម្សិលមិញ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
index 8968f05..8434ec7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">ಹೊಸ ಅದೃಶ್ಯ ಟ್ಯಾಬ್ ಪುಟ</translation>
 <translation id="7765158879357617694">ಸರಿಸು</translation>
 <translation id="7772032839648071052">ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ದೃಢೀಕರಿಸಿ</translation>
-<translation id="7778472311864276518">ಈ ಸಾಧನದಿಂದ ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="7781011649027948662">ಪುಟವನ್ನು ಅನುವಾದಿಸಬೇಕೇ?</translation>
 <translation id="7781069478569868053">ಹೊಸ ಟ್ಯಾಬ್‌ ಪುಟ</translation>
 <translation id="7781829728241885113">ನಿನ್ನೆ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
index 8f4c3123..340f3ed1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">새 시크릿 탭 페이지</translation>
 <translation id="7765158879357617694">이동</translation>
 <translation id="7772032839648071052">암호 확인</translation>
-<translation id="7778472311864276518">이 기기에서 계정 삭제</translation>
 <translation id="7781011649027948662">페이지를 번역하시겠습니까?</translation>
 <translation id="7781069478569868053">새 탭 페이지</translation>
 <translation id="7781829728241885113">어제</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
index cf4cbbb..dcc4621 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Жаңы жашыруун өтмөк барагы</translation>
 <translation id="7765158879357617694">Жылуу</translation>
 <translation id="7772032839648071052">Купуя сөз айкашын ырастаңыз</translation>
-<translation id="7778472311864276518">Аккаунтту ушул түзмөктөн алып салуу</translation>
 <translation id="7781011649027948662">Бул баракча которулсунбу?</translation>
 <translation id="7781069478569868053">Жаңы өтмөк бети</translation>
 <translation id="7781829728241885113">Кечээ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
index aa85a07a..79f3eea 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">ໜ້າແຖບບໍ່ເປີດເຜີຍຕົວຕົນໃໝ່</translation>
 <translation id="7765158879357617694">ຍ້າຍ</translation>
 <translation id="7772032839648071052">ຢືນ​ຢັນວະລີຜ່ານ</translation>
-<translation id="7778472311864276518">ລຶບບັນຊີອອກຈາກອຸປະກອນນີ້</translation>
 <translation id="7781011649027948662">ແປໜ້າບໍ?</translation>
 <translation id="7781069478569868053">ໜ້າແຖບໃໝ່</translation>
 <translation id="7781829728241885113">ມື້​ວານ​ນີ້</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
index 7b095725..933a97b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Naujas inkognito skirtuko puslapis</translation>
 <translation id="7765158879357617694">Perkelti</translation>
 <translation id="7772032839648071052">Patvirtinti slaptafrazę</translation>
-<translation id="7778472311864276518">Paskyros pašalinimas iš šio įrenginio</translation>
 <translation id="7781011649027948662">Versti puslapį?</translation>
 <translation id="7781069478569868053">Naujo skirtuko puslapis</translation>
 <translation id="7781829728241885113">Vakar</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
index 013865fb..fea882fe 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Jauna inkognito cilnes lapa</translation>
 <translation id="7765158879357617694">Pārvietot</translation>
 <translation id="7772032839648071052">Apstipriniet ieejas frāzi</translation>
-<translation id="7778472311864276518">Konta noņemšana no šīs ierīces</translation>
 <translation id="7781011649027948662">Vai tulkot lapu?</translation>
 <translation id="7781069478569868053">Jaunas cilnes lapa</translation>
 <translation id="7781829728241885113">Vakar</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
index 40739ef..bb05923 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Нова страница во картичка „Инкогнито“</translation>
 <translation id="7765158879357617694">Премести</translation>
 <translation id="7772032839648071052">Потврди лозинка</translation>
-<translation id="7778472311864276518">Отстранете ја сметката од уредов</translation>
 <translation id="7781011649027948662">Да се преведе страницата?</translation>
 <translation id="7781069478569868053">Страница во нова картичка</translation>
 <translation id="7781829728241885113">Вчера</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
index 20e700ba..86d113b2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">പുതിയ അദൃശ്യ ടാബ് പേജ്</translation>
 <translation id="7765158879357617694">നീക്കുക</translation>
 <translation id="7772032839648071052">പാസ്ഫ്രേസ് സ്ഥിരീകരിക്കുക</translation>
-<translation id="7778472311864276518">ഈ ഉപകരണത്തിൽ നിന്ന് അക്കൗണ്ട് നീക്കം ചെയ്യുക</translation>
 <translation id="7781011649027948662">പേജ് വിവർത്തനം ചെയ്യണോ?</translation>
 <translation id="7781069478569868053">പുതിയ ടാബ് പേജ്</translation>
 <translation id="7781829728241885113">ഇന്നലെ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
index 9f4e3922..08b974e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -724,7 +724,6 @@
 <translation id="7741325291586284254">Шинэ Нууцлалтай таб хуудас</translation>
 <translation id="7765158879357617694">Зөөх</translation>
 <translation id="7772032839648071052">Нэвтрэх үгүүдийг баталгаажуул</translation>
-<translation id="7778472311864276518">Энэ төхөөрөмжөөс бүртгэл хасах</translation>
 <translation id="7781011649027948662">Хуудсыг орчуулах уу?</translation>
 <translation id="7781069478569868053">Цонх нээх хуудас</translation>
 <translation id="7781829728241885113">Өчигдөр</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index 8ffebd0..f79e216 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -727,7 +727,6 @@
 <translation id="7741325291586284254">नवीन गुप्त टॅब पेज</translation>
 <translation id="7765158879357617694">हलवा</translation>
 <translation id="7772032839648071052">सांकेतिक पासफ्रेझ निश्चित करा</translation>
-<translation id="7778472311864276518">या डिव्हाइसवरून खाते काढून टाका</translation>
 <translation id="7781011649027948662">पेजचे भाषांतर करायचे?</translation>
 <translation id="7781069478569868053">नवीन टॅब पृष्‍ठ</translation>
 <translation id="7781829728241885113">काल</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
index 0f6e6a6..23dc6fa 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Halaman Tab Inkognito Baharu</translation>
 <translation id="7765158879357617694">Alih</translation>
 <translation id="7772032839648071052">Sahkan frasa laluan</translation>
-<translation id="7778472311864276518">Alih keluar Akaun daripada Peranti ini</translation>
 <translation id="7781011649027948662">Terjemahkan Halaman?</translation>
 <translation id="7781069478569868053">Halaman Tab Baharu</translation>
 <translation id="7781829728241885113">Semalam</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb
index 61c3154e..8cb800c1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_my.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -724,7 +724,6 @@
 <translation id="7741325291586284254">ရုပ်ဖျက်တဘ် စာမျက်နှာသစ်</translation>
 <translation id="7765158879357617694">ရွှေ့ရန်</translation>
 <translation id="7772032839648071052">စကားစုဝှက်ကို အတည်ပြုရန်</translation>
-<translation id="7778472311864276518">ဤ 'စက်' မှ 'အကောင့်' ဖယ်ရှားခြင်း</translation>
 <translation id="7781011649027948662">စာမျက်နှာကို ဘာသာပြန်လိုပါသလား။</translation>
 <translation id="7781069478569868053">တဘ် စာမျက်နှာ အသစ်</translation>
 <translation id="7781829728241885113">မနေ့က</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
index 426c91ef..985cc8c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">इन्कोग्निटो ट्याबसम्बन्धी नयाँ पेज</translation>
 <translation id="7765158879357617694">सार्नुहोस्</translation>
 <translation id="7772032839648071052">पासफ्रेज पक्का</translation>
-<translation id="7778472311864276518">यो यन्त्रबाट खाता हटाउनुहोस्‌</translation>
 <translation id="7781011649027948662">यो पृष्ठ अनुवाद गर्ने हो?</translation>
 <translation id="7781069478569868053">नयाँ ट्याब पृष्ठ</translation>
 <translation id="7781829728241885113">हिजो</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
index 446d415f..c72558ee 100644
--- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nieuw incognitotabblad</translation>
 <translation id="7765158879357617694">Verplaatsen</translation>
 <translation id="7772032839648071052">Bevestig de wachtwoordzin</translation>
-<translation id="7778472311864276518">Account verwijderen van dit apparaat</translation>
 <translation id="7781011649027948662">Pagina vertalen?</translation>
 <translation id="7781069478569868053">Pagina 'Nieuw tabblad'</translation>
 <translation id="7781829728241885113">Gisteren</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index 961292a..6184138 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Ny side i inkognitofane</translation>
 <translation id="7765158879357617694">Flytt</translation>
 <translation id="7772032839648071052">Bekreft passord</translation>
-<translation id="7778472311864276518">Fjern kontoen fra denne enheten</translation>
 <translation id="7781011649027948662">Vil du oversette siden?</translation>
 <translation id="7781069478569868053">Ny fane-siden</translation>
 <translation id="7781829728241885113">I går</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb
index 0e4ef78..bf7ac37 100644
--- a/ios/chrome/app/strings/resources/ios_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -723,7 +723,6 @@
 <translation id="7741325291586284254">ନୂଆ ଇନକଗ୍ନିଟୋ ଟାବ୍ ପୃଷ୍ଠା</translation>
 <translation id="7765158879357617694">ନିଅନ୍ତୁ</translation>
 <translation id="7772032839648071052">ପାସ୍‍‍ଫ୍ରେଜ୍ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
-<translation id="7778472311864276518">ଏହି ଡିଭାଇସରୁ ଆକାଉଣ୍ଟ କାଢ଼ି ଦିଅନ୍ତୁ</translation>
 <translation id="7781011649027948662">ପୃଷ୍ଠାକୁ ଅନୁବାଦ କରିବେ?</translation>
 <translation id="7781069478569868053">ନୂଆ ଟାବ୍ ପୃଷ୍ଠା</translation>
 <translation id="7781829728241885113">ଗତକଲି</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
index c91f3e9..59096f9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -723,7 +723,6 @@
 <translation id="7741325291586284254">ਨਵਾਂ ਇਨਕੋਗਨਿਟੋ ਟੈਬ ਪੰਨਾ</translation>
 <translation id="7765158879357617694">ਮੂਵ ਕਰੋ</translation>
 <translation id="7772032839648071052">ਪਾਸਫਰੇਜ਼ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation>
-<translation id="7778472311864276518">ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਖਾਤਾ ਹਟਾਓ</translation>
 <translation id="7781011649027948662">ਕੀ ਪੰਨੇ ਦਾ ਅਨੁਵਾਦ ਕਰਨਾ ਹੈ?</translation>
 <translation id="7781069478569868053">ਨਵਾਂ ਟੈਬ ਪੰਨਾ</translation>
 <translation id="7781829728241885113">ਕੱਲ੍ਹ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index 4d214ff..9e13070d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -723,7 +723,6 @@
 <translation id="7741325291586284254">Nowa strona karty incognito</translation>
 <translation id="7765158879357617694">Przenieś</translation>
 <translation id="7772032839648071052">Potwierdź hasło</translation>
-<translation id="7778472311864276518">Usuń konto z tego urządzenia</translation>
 <translation id="7781011649027948662">Przetłumaczyć stronę?</translation>
 <translation id="7781069478569868053">Strona Nowa karta</translation>
 <translation id="7781829728241885113">Wczoraj</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 76b5230..e95caf5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nova página de guia anônima</translation>
 <translation id="7765158879357617694">Mover</translation>
 <translation id="7772032839648071052">Confirmar senha</translation>
-<translation id="7778472311864276518">Remover conta deste dispositivo</translation>
 <translation id="7781011649027948662">Traduzir página?</translation>
 <translation id="7781069478569868053">Página "Nova guia"</translation>
 <translation id="7781829728241885113">Ontem</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 3298a43..1955e8f95 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Página Novo separador de navegação anónima</translation>
 <translation id="7765158879357617694">Mover</translation>
 <translation id="7772032839648071052">Confirmar frase de acesso</translation>
-<translation id="7778472311864276518">Remova a conta deste dispositivo</translation>
 <translation id="7781011649027948662">Pretende traduzir a página?</translation>
 <translation id="7781069478569868053">Página Novo separador</translation>
 <translation id="7781829728241885113">Ontem</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
index b2399cd3..94dbc85 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Pagina Filă incognito nouă</translation>
 <translation id="7765158879357617694">Mută</translation>
 <translation id="7772032839648071052">Confirmă expresia de acces</translation>
-<translation id="7778472311864276518">Elimină contul de pe acest dispozitiv</translation>
 <translation id="7781011649027948662">Traduci pagina?</translation>
 <translation id="7781069478569868053">Pagina Filă nouă</translation>
 <translation id="7781829728241885113">Ieri</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
index 4fd6f4f..f88a25f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Страница "Новая вкладка инкогнито"</translation>
 <translation id="7765158879357617694">Переместить</translation>
 <translation id="7772032839648071052">Подтвердите кодовую фразу</translation>
-<translation id="7778472311864276518">Удалить аккаунт с этого устройства</translation>
 <translation id="7781011649027948662">Перевести страницу?</translation>
 <translation id="7781069478569868053">Страница быстрого доступа</translation>
 <translation id="7781829728241885113">Вчера</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb
index 9d68a0c..bfd76a2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_si.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">නව අප්‍රසිද්ධ ටැබ පිටුව</translation>
 <translation id="7765158879357617694">චලනය කරන්න</translation>
 <translation id="7772032839648071052">රහස්පදය ස්ථිර කරන්න</translation>
-<translation id="7778472311864276518">මෙම උපාංගයෙන් ගිණුම ඉවත් කරන්න</translation>
 <translation id="7781011649027948662">පිටුව පරිවර්තන කරන්නද?</translation>
 <translation id="7781069478569868053">නව පටිති පිටුව</translation>
 <translation id="7781829728241885113">ඊයේ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
index 9c00bc86..ed005dd 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nová stránka s kartou inkognito</translation>
 <translation id="7765158879357617694">Presunúť</translation>
 <translation id="7772032839648071052">Potvrďte prístupovú frázu</translation>
-<translation id="7778472311864276518">Odstrániť účet z tohto zariadenia</translation>
 <translation id="7781011649027948662">Chcete preložiť stránku?</translation>
 <translation id="7781069478569868053">Stránka na novej karte</translation>
 <translation id="7781829728241885113">Včera</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
index 5a72c8a68..1904167c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Stran z novim anonimnim zavihkom</translation>
 <translation id="7765158879357617694">Premakni</translation>
 <translation id="7772032839648071052">Potrdi geslo</translation>
-<translation id="7778472311864276518">Odstrani račun iz te naprave</translation>
 <translation id="7781011649027948662">Želite prevod te strani?</translation>
 <translation id="7781069478569868053">Nov zavihek s povezavami</translation>
 <translation id="7781829728241885113">Včeraj</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
index 495c1a7..b9fba41c8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Faqja e skedës së re "të fshehtë"</translation>
 <translation id="7765158879357617694">Zhvendos</translation>
 <translation id="7772032839648071052">Konfirmo shprehjen e kalimit</translation>
-<translation id="7778472311864276518">Hiqe llogarinë nga kjo pajisje</translation>
 <translation id="7781011649027948662">Të përkthehet faqja?</translation>
 <translation id="7781069478569868053">Faqe e skedës së re</translation>
 <translation id="7781829728241885113">Dje</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 48e8585e..47d316c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Nova stranica na kartici bez arhiviranja</translation>
 <translation id="7765158879357617694">Premesti</translation>
 <translation id="7772032839648071052">Potvrdi pristupnu frazu</translation>
-<translation id="7778472311864276518">Ukloni nalog sa ovog uređaja</translation>
 <translation id="7781011649027948662">Želite da prevedete stranicu?</translation>
 <translation id="7781069478569868053">Stranica nove kartice</translation>
 <translation id="7781829728241885113">Juče</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
index c576bd5..205f5e0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Нова страница на картици без архивирања</translation>
 <translation id="7765158879357617694">Премести</translation>
 <translation id="7772032839648071052">Потврди приступну фразу</translation>
-<translation id="7778472311864276518">Уклони налог са овог уређаја</translation>
 <translation id="7781011649027948662">Желите да преведете страницу?</translation>
 <translation id="7781069478569868053">Страница нове картице</translation>
 <translation id="7781829728241885113">Јуче</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
index 248e2b8..60b59e4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Ny fliksida i inkognitoläge</translation>
 <translation id="7765158879357617694">Flytta</translation>
 <translation id="7772032839648071052">Bekräfta lösenfras</translation>
-<translation id="7778472311864276518">Ta bort kontot från enheten</translation>
 <translation id="7781011649027948662">Vill du översätta sidan?</translation>
 <translation id="7781069478569868053">Sidan Ny flik</translation>
 <translation id="7781829728241885113">Igår</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
index e60384e..2ca7b9f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Ukurasa Mpya wa Kichupo Fiche</translation>
 <translation id="7765158879357617694">Sogeza</translation>
 <translation id="7772032839648071052">Thibitisha kaulisiri</translation>
-<translation id="7778472311864276518">Ondoa Akaunti kwenye Kifaa hiki</translation>
 <translation id="7781011649027948662">Ungependa Kutafsiri Ukurasa?</translation>
 <translation id="7781069478569868053">Ukurasa wa Kichupo Kipya</translation>
 <translation id="7781829728241885113">Jana</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index fb0c4ba..3c79596 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">புதிய மறைநிலைத் தாவல் பக்கம்</translation>
 <translation id="7765158879357617694">நகர்த்து</translation>
 <translation id="7772032839648071052">கடவுச்சொற்றொடரை உறுதி செய்க</translation>
-<translation id="7778472311864276518">இந்தச் சாதனத்திலிருந்து கணக்கை அகற்று</translation>
 <translation id="7781011649027948662">பக்கத்தை மொழிபெயர்க்கவா?</translation>
 <translation id="7781069478569868053">புதிய தாவல் பக்கம்</translation>
 <translation id="7781829728241885113">நேற்று</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index 50291751..639da443 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">కొత్త అజ్ఞాత ట్యాబ్ పేజీ</translation>
 <translation id="7765158879357617694">తరలించు</translation>
 <translation id="7772032839648071052">రహస్య పదబంధాన్ని నిర్ధారించండి</translation>
-<translation id="7778472311864276518">ఈ పరికరం నుండి ఖాతాను తీసివేయండి</translation>
 <translation id="7781011649027948662">పేజీని అనువాదం చేయాలా?</translation>
 <translation id="7781069478569868053">కొత్త ట్యాబ్ పేజీ</translation>
 <translation id="7781829728241885113">నిన్న</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb
index 60e3d5e..59d983a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">หน้าแท็บใหม่ที่ไม่ระบุตัวตน</translation>
 <translation id="7765158879357617694">ย้าย</translation>
 <translation id="7772032839648071052">ยืนยันข้อความรหัสผ่าน</translation>
-<translation id="7778472311864276518">นำบัญชีออกจากอุปกรณ์นี้</translation>
 <translation id="7781011649027948662">แปลหน้าเว็บไหม</translation>
 <translation id="7781069478569868053">หน้าแท็บใหม่</translation>
 <translation id="7781829728241885113">เมื่อวานนี้</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index fff03f23..b93cfc1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Yeni Gizli Sekme Sayfası</translation>
 <translation id="7765158879357617694">Taşı</translation>
 <translation id="7772032839648071052">Parolayı onayla</translation>
-<translation id="7778472311864276518">Hesabı bu Cihazdan kaldır</translation>
 <translation id="7781011649027948662">Sayfa Çevrilsin mi?</translation>
 <translation id="7781069478569868053">Yeni Sekme Sayfası</translation>
 <translation id="7781829728241885113">Dün</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
index 290bb61..bd5b16b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -168,6 +168,7 @@
 <translation id="2584132361465095047">Додати обліковий запис…</translation>
 <translation id="2600682495497606169">Видалити файли cookie сайту</translation>
 <translation id="2625189173221582860">Пароль скопійовано</translation>
+<translation id="2626236249646841566">Перевірте з’єднання та спробуйте ввійти знову.</translation>
 <translation id="2637313651144986786">Шукайте вкладки…</translation>
 <translation id="2647269890314209800">Активні файли cookie</translation>
 <translation id="2648803196158606475">Видалити прочитані</translation>
@@ -364,6 +365,7 @@
 <translation id="4508750114462689118">Закрити заклик до входу</translation>
 <translation id="4526249700380860531">Переглядайте збережені паролі та керуйте ними на сторінці <ph name="BEGIN_LINK" />passwords.google.com<ph name="END_LINK" /></translation>
 <translation id="4536418791685807335">Спробуйте ввійти ще раз.</translation>
+<translation id="4540780316273593836">Сталася помилка</translation>
 <translation id="457386861538956877">Інші...</translation>
 <translation id="4592368184551360546">Клавіатура</translation>
 <translation id="461440297010471931">Пошук у Google</translation>
@@ -479,6 +481,7 @@
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Версія <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Показано 1 вікно Chrome}one{Показано {count} вікно Chrome}few{Показано {count} вікна Chrome}many{Показано {count} вікон Chrome}other{Показано {count} вікна Chrome}}</translation>
+<translation id="5704908597376970822">Не вдається ввійти.</translation>
 <translation id="5706552126692816153">У мережі 1 день тому</translation>
 <translation id="5711039611392265845">Інші налаштування конфіденційності, безпеки та збору даних доступні в розділі <ph name="BEGIN_LINK" />Синхронізація та сервіси Google<ph name="END_LINK" />.</translation>
 <translation id="5724941645893276623">Щоб переглядати веб-сторінки конфіденційно, додайте нову вкладку</translation>
@@ -722,7 +725,6 @@
 <translation id="7741325291586284254">Сторінка нової анонімної вкладки</translation>
 <translation id="7765158879357617694">Перемістити</translation>
 <translation id="7772032839648071052">Підтвердити парольну фразу</translation>
-<translation id="7778472311864276518">Вилучити обліковий запис із цього пристрою</translation>
 <translation id="7781011649027948662">Перекласти сторінку?</translation>
 <translation id="7781069478569868053">Сторінка нової вкладки</translation>
 <translation id="7781829728241885113">Учора</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
index a6a1cc2e..f49fff8c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">پوشیدگی ٹیب کا نیا صفحہ</translation>
 <translation id="7765158879357617694">منتقل کریں</translation>
 <translation id="7772032839648071052">پاس فریز کی توثیق کریں</translation>
-<translation id="7778472311864276518">اس آلہ سے اکاؤنٹ کو ہٹائیں</translation>
 <translation id="7781011649027948662">صفحہ کا ترجمہ کریں؟</translation>
 <translation id="7781069478569868053">نئے ٹیب کا صفحہ</translation>
 <translation id="7781829728241885113">گزشتہ کل</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
index f92a0570..85301fc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Yangi inkognito varagʻi sahifasi</translation>
 <translation id="7765158879357617694">Ko‘chirib o‘tkazish</translation>
 <translation id="7772032839648071052">Kodli iborani tasdiqlang</translation>
-<translation id="7778472311864276518">Hisobni bu qurilmadan olib tashlash</translation>
 <translation id="7781011649027948662">Sahifa tarjima qilinsinmi?</translation>
 <translation id="7781069478569868053">Tezkor kirish sahifasi</translation>
 <translation id="7781829728241885113">Kecha</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
index 843e79a..bda2090 100644
--- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Trang Thẻ ẩn danh mới</translation>
 <translation id="7765158879357617694">Di chuyển</translation>
 <translation id="7772032839648071052">Xác nhận cụm mật khẩu</translation>
-<translation id="7778472311864276518">Xóa tài khoản khỏi thiết bị này</translation>
 <translation id="7781011649027948662">Dịch trang?</translation>
 <translation id="7781069478569868053">Trang thẻ mới</translation>
 <translation id="7781829728241885113">Hôm qua</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 c38153d..ef4920b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">新的无痕式标签页</translation>
 <translation id="7765158879357617694">移动</translation>
 <translation id="7772032839648071052">确认密码</translation>
-<translation id="7778472311864276518">从此设备上移除帐号</translation>
 <translation id="7781011649027948662">翻译网页?</translation>
 <translation id="7781069478569868053">新标签页</translation>
 <translation id="7781829728241885113">昨天</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 be115bf..b5e5e41 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -723,7 +723,6 @@
 <translation id="7741325291586284254">新無痕式分頁頁面</translation>
 <translation id="7765158879357617694">移動</translation>
 <translation id="7772032839648071052">確認複雜密碼</translation>
-<translation id="7778472311864276518">從此裝置移除帳戶</translation>
 <translation id="7781011649027948662">要翻譯網頁嗎?</translation>
 <translation id="7781069478569868053">新分頁</translation>
 <translation id="7781829728241885113">昨天</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 bef892e8..3c70883 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">新的無痕分頁頁面</translation>
 <translation id="7765158879357617694">移動</translation>
 <translation id="7772032839648071052">確認通關密語</translation>
-<translation id="7778472311864276518">從這個裝置移除帳戶</translation>
 <translation id="7781011649027948662">是否要翻譯網頁?</translation>
 <translation id="7781069478569868053">新分頁</translation>
 <translation id="7781829728241885113">昨天</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
index 7134f83b..008a93bf 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -725,7 +725,6 @@
 <translation id="7741325291586284254">Ikhasi Elisha Lethebhu ye-Incognito</translation>
 <translation id="7765158879357617694">Hambisa</translation>
 <translation id="7772032839648071052">Qinisekisa umushwana wokungena</translation>
-<translation id="7778472311864276518">Susa i-akhawunti evela kule Divayisi</translation>
 <translation id="7781011649027948662">Humusha ikhasi?</translation>
 <translation id="7781069478569868053">Ikhasi lethebhu elisha</translation>
 <translation id="7781829728241885113">Izolo</translation>
diff --git a/ios/chrome/browser/ui/authentication/signin/forced_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/forced_signin/BUILD.gn
index d1b650d..9ef8ad0 100644
--- a/ios/chrome/browser/ui/authentication/signin/forced_signin/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/signin/forced_signin/BUILD.gn
@@ -39,6 +39,7 @@
     "//ios/chrome/app/strings:ios_chromium_strings_grit",
     "//ios/chrome/app/strings:ios_strings_grit",
     "//ios/chrome/browser:pref_names",
+    "//ios/chrome/browser/policy:eg_test_support+eg2",
     "//ios/chrome/browser/policy:policy_util",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/authentication:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm b/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm
index 215ff55a..21fed0b0 100644
--- a/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm
+++ b/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm
@@ -7,6 +7,7 @@
 #import "base/test/ios/wait_util.h"
 #include "components/policy/core/common/policy_loader_ios_constants.h"
 #import "components/policy/policy_constants.h"
+#import "ios/chrome/browser/policy/policy_earl_grey_utils.h"
 #import "ios/chrome/browser/policy/policy_util.h"
 #include "ios/chrome/browser/pref_names.h"
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h"
@@ -149,15 +150,8 @@
 
 // Sets up the sign-in policy value dynamically at runtime.
 void SetSigninEnterprisePolicyValue(BrowserSigninMode signinMode) {
-  NSDictionary* policy = @{
-    base::SysUTF8ToNSString(policy::key::kBrowserSignin) :
-        [NSNumber numberWithInt:(int)signinMode]
-  };
-  [[NSUserDefaults standardUserDefaults]
-      setObject:policy
-         forKey:kPolicyLoaderIOSConfigurationKey];
-  [ChromeEarlGrey setIntegerValue:static_cast<int>(signinMode)
-                forLocalStatePref:prefs::kBrowserSigninPolicy];
+  policy_test_utils::SetPolicy(static_cast<int>(signinMode),
+                               policy::key::kBrowserSignin);
 }
 
 // Simulates opening |URL| from another application.
@@ -215,6 +209,7 @@
       "-" + base::SysNSStringToUTF8(kPolicyLoaderIOSConfigurationKey));
   config.additional_args.push_back(
       "<dict><key>BrowserSignin</key><integer>2</integer></dict>");
+  config.relaunch_policy = ForceRelaunchByCleanShutdown;
 
   return config;
 }
diff --git a/ios/chrome/browser/ui/settings/password/BUILD.gn b/ios/chrome/browser/ui/settings/password/BUILD.gn
index 4ce5e096..1665cd1 100644
--- a/ios/chrome/browser/ui/settings/password/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/password/BUILD.gn
@@ -83,7 +83,6 @@
     "//ios/chrome/browser/net:crurl",
     "//ios/chrome/browser/passwords",
     "//ios/chrome/browser/signin",
-    "//ios/chrome/browser/sync",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/elements",
diff --git a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/BUILD.gn b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/BUILD.gn
index 118eea2..a962738 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/BUILD.gn
@@ -13,6 +13,8 @@
   deps = [
     ":passwords_in_other_apps_ui",
     "//base",
+    "//ios/chrome/browser/main:public",
+    "//ios/chrome/browser/sync",
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/settings/utils",
     "//ios/public/provider/chrome/browser/password_auto_fill:password_auto_fill_api",
@@ -30,11 +32,13 @@
   deps = [
     ":constants",
     "//base",
+    "//components/password_manager/core/common",
     "//components/strings",
     "//ios/chrome/app/strings",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/settings:settings_root",
+    "//ios/chrome/browser/ui/settings/resources:legacy_settings_passwords_in_other_apps_banner",
     "//ios/chrome/browser/ui/settings/resources:settings",
     "//ios/chrome/browser/ui/settings/resources:settings_passwords_in_other_apps_banner",
     "//ios/chrome/browser/ui/settings/utils",
diff --git a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.h b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.h
index 19dd98a..0340d94 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.h
+++ b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.h
@@ -16,6 +16,9 @@
 // A11y Identifier for subtitle label.
 extern NSString* const kPasswordsInOtherAppsSubtitleAccessibilityIdentifier;
 
+// A11y Identifier for second subtitle label.
+extern NSString* const kPasswordsInOtherAppsSecondSubtitleAccessibilityIdentifier;
+
 // A11y Identifier for banner image.
 extern NSString* const kPasswordsInOtherAppsImageAccessibilityIdentifier;
 
diff --git a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.mm b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.mm
index 059792e..8387d348 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.mm
+++ b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.mm
@@ -15,6 +15,8 @@
     @"kPasswordsInOtherAppsTitleAccessibilityIdentifier";
 NSString* const kPasswordsInOtherAppsSubtitleAccessibilityIdentifier =
     @"kPasswordsInOtherAppsSubtitleAccessibilityIdentifier";
+NSString* const kPasswordsInOtherAppsSecondSubtitleAccessibilityIdentifier =
+    @"kPasswordsInOtherAppsSecondSubtitleAccessibilityIdentifier";
 NSString* const kPasswordsInOtherAppsImageAccessibilityIdentifier =
     @"kPasswordsInOtherAppsImageAccessibilityIdentifier";
 NSString* const kPasswordsInOtherAppsActionAccessibilityIdentifier =
diff --git a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_coordinator.mm b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_coordinator.mm
index 04833e69..e22a325 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_coordinator.mm
+++ b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_coordinator.mm
@@ -5,6 +5,10 @@
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_coordinator.h"
 
 #import "base/check.h"
+#import "ios/chrome/browser/main/browser.h"
+#import "ios/chrome/browser/sync/sync_service_factory.h"
+#import "ios/chrome/browser/sync/sync_setup_service.h"
+#import "ios/chrome/browser/sync/sync_setup_service_factory.h"
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_mediator.h"
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.h"
 
@@ -34,6 +38,7 @@
   self = [super initWithBaseViewController:navigationController
                                    browser:browser];
   if (self) {
+    DCHECK(browser);
     DCHECK(navigationController);
     _baseNavigationController = navigationController;
   }
@@ -41,7 +46,12 @@
 }
 
 - (void)start {
-  self.viewController = [[PasswordsInOtherAppsViewController alloc] init];
+  SyncSetupService* syncSetupService =
+      SyncSetupServiceFactory::GetForBrowserState(self.browser->GetBrowserState());
+  syncer::ModelType kSyncPasswordsModelType =
+      syncSetupService->GetModelType(SyncSetupService::kSyncPasswords);
+
+  self.viewController = [[PasswordsInOtherAppsViewController alloc] initWithSyncingPasswords:syncSetupService->IsDataTypeActive(kSyncPasswordsModelType)];
   self.viewController.presenter = self;
 
   self.mediator = [[PasswordsInOtherAppsMediator alloc] init];
diff --git a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.h b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.h
index e48dc14..4caf57f3 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.h
+++ b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.h
@@ -31,11 +31,13 @@
 @property(nonatomic, weak) id<PasswordsInOtherAppsViewControllerDelegate>
     delegate;
 
-- (instancetype)init NS_DESIGNATED_INITIALIZER;
+- (instancetype)initWithSyncingPasswords:(BOOL)isSyncingPasswords
+    NS_DESIGNATED_INITIALIZER;
 
-- (instancetype)initWithCoder:(NSCoder*)coder NS_UNAVAILABLE;
-- (instancetype)initWithNibName:(NSString*)nibNAme
+- (instancetype)init NS_UNAVAILABLE;
+- (instancetype)initWithNibName:(NSString*)nibName
                          bundle:(NSBundle*)nibBundle NS_UNAVAILABLE;
+- (instancetype)initWithCoder:(NSCoder*)coder NS_UNAVAILABLE;
 
 @end
 
diff --git a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.mm b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.mm
index ee726019..eeba11d 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.mm
@@ -5,6 +5,9 @@
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller.h"
 
 #include "base/ios/ios_util.h"
+#include "components/password_manager/core/common/password_manager_features.h"
+//#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+//#import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/ui/elements/instruction_view.h"
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/constants.h"
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_view_controller_delegate.h"
@@ -35,6 +38,11 @@
 CGFloat const kDefaultBannerMultiplier = 0.25;
 CGFloat const kContentWidthMultiplier = 0.65;
 CGFloat const kButtonHorizontalMargin = 4;
+
+BOOL isPasswordManagerBrandingUpdateEnabled() {
+  return base::FeatureList::IsEnabled(
+      password_manager::features::kIOSEnablePasswordManagerBrandingUpdate);
+}
 }  // namespace
 
 @interface PasswordsInOtherAppsViewController ()
@@ -42,6 +50,7 @@
 // Properties set on initialization.
 @property(nonatomic, copy, readonly) NSString* titleText;
 @property(nonatomic, copy, readonly) NSString* subtitleText;
+@property(nonatomic, copy, readonly) NSString* secondSubtitleText;
 @property(nonatomic, strong, readonly) UIImage* bannerImage;
 @property(nonatomic, copy, readonly) NSString* actionString;
 
@@ -49,11 +58,14 @@
 @property(nonatomic, strong) UIImageView* imageView;
 @property(nonatomic, strong) UILabel* titleLabel;
 @property(nonatomic, strong) UILabel* subtitleLabel;
+// NOTE: This label will only be displayed if
+// isPasswordManagerBrandingUpdateEnabled() returns true
+@property(nonatomic, strong) UILabel* secondSubtitleLabel;
 @property(nonatomic, strong) UIView* turnOnInstructionView;
 @property(nonatomic, strong) UIView* turnOffInstructionView;
 @property(nonatomic, strong) UIButton* actionButton;
-@property(nonatomic, strong) UIActivityIndicatorView* spinner;
 
+@property(nonatomic, strong) UIActivityIndicatorView* spinner;
 // Views that are used to format the layout of visible UI components.
 @property(nonatomic, strong) UIScrollView* scrollView;
 @property(nonatomic, strong) UIView* scrollContentView;
@@ -78,16 +90,39 @@
 
 @implementation PasswordsInOtherAppsViewController
 
-- (instancetype)init {
+- (instancetype)initWithSyncingPasswords:(BOOL)isSyncingPasswords {
   self = [super initWithNibName:nil bundle:nil];
   if (self) {
     _titleText =
         l10n_util::GetNSString(IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS);
-    _subtitleText = l10n_util::GetNSString(
-        IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE);
-    _bannerImage =
-        [UIImage imageNamed:@"settings_passwords_in_other_apps_banner"];
     _actionString = l10n_util::GetNSString(IDS_IOS_OPEN_SETTINGS);
+    if (isPasswordManagerBrandingUpdateEnabled()) {
+      UIUserInterfaceIdiom idiom =
+          [[UIDevice currentDevice] userInterfaceIdiom];
+      if (idiom == UIUserInterfaceIdiomPad) {
+        _subtitleText = l10n_util::GetNSString(
+            IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPAD);
+      } else {
+        _subtitleText = l10n_util::GetNSString(
+            IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_IPHONE);
+      }
+      if (isSyncingPasswords) {
+        _subtitleText = [NSString
+            stringWithFormat:
+                @"%@ %@", _subtitleText,
+                l10n_util::GetNSString(
+                    IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE_SYNCING_ENABLED)];
+      }
+      _secondSubtitleText = l10n_util::GetNSString(
+          IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SECOND_SUBTITLE);
+      _bannerImage =
+          [UIImage imageNamed:@"settings_passwords_in_other_apps_banner"];
+    } else {
+      _subtitleText = l10n_util::GetNSString(
+          IDS_IOS_SETTINGS_PASSWORDS_IN_OTHER_APPS_SUBTITLE);
+      _bannerImage = [UIImage
+          imageNamed:@"legacy_settings_passwords_in_other_apps_banner"];
+    }
   }
   return self;
 }
@@ -115,6 +150,9 @@
   // Add the labels.
   [self.scrollContentView addSubview:self.titleLabel];
   [self.scrollContentView addSubview:self.subtitleLabel];
+  if (isPasswordManagerBrandingUpdateEnabled()) {
+    [self.scrollContentView addSubview:self.secondSubtitleLabel];
+  }
   [self.view addLayoutGuide:subtitleMarginLayoutGuide];
   [self.scrollContentView addSubview:self.specificContentView];
 
@@ -198,11 +236,6 @@
         constraintEqualToAnchor:self.scrollContentView.centerXAnchor],
     [self.subtitleLabel.widthAnchor
         constraintLessThanOrEqualToAnchor:self.scrollContentView.widthAnchor],
-
-    // Constraints for the screen-specific content view. It should take the
-    // remaining scroll view area, with some margins on the top and sides.
-    [subtitleMarginLayoutGuide.topAnchor
-        constraintEqualToAnchor:self.subtitleLabel.bottomAnchor],
     [subtitleMarginLayoutGuide.heightAnchor
         constraintEqualToConstant:kDefaultMargin],
     [self.specificContentView.topAnchor
@@ -215,6 +248,24 @@
         constraintEqualToAnchor:self.scrollContentView.bottomAnchor],
   ]];
 
+  if (isPasswordManagerBrandingUpdateEnabled()) {
+    [NSLayoutConstraint activateConstraints:@[
+      [self.secondSubtitleLabel.topAnchor
+          constraintEqualToAnchor:self.subtitleLabel.bottomAnchor
+                         constant:kDefaultMargin],
+      [self.secondSubtitleLabel.centerXAnchor
+          constraintEqualToAnchor:self.scrollContentView.centerXAnchor],
+      [self.secondSubtitleLabel.widthAnchor
+          constraintLessThanOrEqualToAnchor:self.scrollContentView.widthAnchor],
+      [subtitleMarginLayoutGuide.topAnchor
+          constraintEqualToAnchor:self.secondSubtitleLabel.bottomAnchor],
+    ]];
+  } else {
+    [subtitleMarginLayoutGuide.topAnchor
+        constraintEqualToAnchor:self.subtitleLabel.bottomAnchor]
+        .active = YES;
+  }
+
   // In iPhone landscape mode, the top image is removed. In that case, we should
   // make sure there is enough distance between the title label and the top edge
   // of the iPhone.
@@ -355,20 +406,21 @@
 }
 
 - (UILabel*)subtitleLabel {
-  if (!_subtitleLabel) {
-    _subtitleLabel = [[UILabel alloc] init];
-    _subtitleLabel.font =
-        [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
-    _subtitleLabel.numberOfLines = 0;
-    _subtitleLabel.textColor = [UIColor colorNamed:kGrey800Color];
-    _subtitleLabel.text = self.subtitleText;
-    _subtitleLabel.textAlignment = NSTextAlignmentCenter;
-    _subtitleLabel.translatesAutoresizingMaskIntoConstraints = NO;
-    _subtitleLabel.adjustsFontForContentSizeCategory = YES;
-    _subtitleLabel.accessibilityIdentifier =
-        kPasswordsInOtherAppsSubtitleAccessibilityIdentifier;
-  }
-  return _subtitleLabel;
+    if(!_subtitleLabel){
+      _subtitleLabel = [self createSubtitle];
+      _subtitleLabel.text = self.subtitleText;
+      _subtitleLabel.accessibilityIdentifier = kPasswordsInOtherAppsSubtitleAccessibilityIdentifier;
+    }
+    return _subtitleLabel;
+}
+
+- (UILabel*)secondSubtitleLabel {
+    if(!_secondSubtitleLabel){
+      _secondSubtitleLabel = [self createSubtitle];
+      _secondSubtitleLabel.text = self.secondSubtitleText;
+      _secondSubtitleLabel.accessibilityIdentifier = kPasswordsInOtherAppsSecondSubtitleAccessibilityIdentifier;
+    }
+    return _secondSubtitleLabel;
 }
 
 - (UIActivityIndicatorView*)spinner {
@@ -576,6 +628,7 @@
   [self.specificContentView addSubview:shouldShowTurnOffInstructions
                                            ? self.turnOffInstructionView
                                            : self.turnOnInstructionView];
+
   [NSLayoutConstraint
       activateConstraints:shouldShowTurnOffInstructions
                               ? self.turnOffInstructionViewConstraints
@@ -632,6 +685,19 @@
 
 #pragma mark - Private
 
+// Creates a label with reasonable defaults
+- (UILabel*)createSubtitle {
+  UILabel* label = [[UILabel alloc] init];
+  label.font =
+      [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
+  label.numberOfLines = 0;
+  label.textColor = [UIColor colorNamed:kGrey800Color];
+  label.textAlignment = NSTextAlignmentCenter;
+  label.translatesAutoresizingMaskIntoConstraints = NO;
+  label.adjustsFontForContentSizeCategory = YES;
+  return label;
+}
+
 // Returns caption text that shows below the subtitle in turnOffInstructions.
 - (UITextView*)drawCaptionTextView {
   NSString* text =
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm
index 36a9b3a..958486e 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm
@@ -29,8 +29,6 @@
 #import "ios/chrome/browser/net/crurl.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service_factory.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service_observer_bridge.h"
-#import "ios/chrome/browser/sync/sync_setup_service.h"
-#import "ios/chrome/browser/sync/sync_setup_service_factory.h"
 #include "ios/chrome/browser/system_flags.h"
 #import "ios/chrome/browser/ui/elements/home_waiting_view.h"
 #import "ios/chrome/browser/ui/settings/cells/settings_check_cell.h"
@@ -630,38 +628,29 @@
 #pragma mark - Items
 
 - (TableViewLinkHeaderFooterItem*)manageAccountLinkItem {
-  SyncSetupService* syncSetupService =
-      SyncSetupServiceFactory::GetForBrowserState(_browserState);
-  syncer::ModelType kSyncPasswordsModelType =
-      syncSetupService->GetModelType(SyncSetupService::kSyncPasswords);
-  BOOL isSyncingPasswords =
-      syncSetupService->IsDataTypePreferred(kSyncPasswordsModelType) &&
-      syncSetupService->IsSyncRequested();
-
   TableViewLinkHeaderFooterItem* footerItem =
       [[TableViewLinkHeaderFooterItem alloc] initWithType:ItemTypeLinkHeader];
 
-  if (!base::FeatureList::IsEnabled(
+  if (base::FeatureList::IsEnabled(
           password_manager::features::
               kIOSEnablePasswordManagerBrandingUpdate)) {
     footerItem.text =
-        l10n_util::GetNSString(IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT);
+        l10n_util::GetNSString(IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT_HEADER);
+
     footerItem.urls = @[ [[CrURL alloc]
         initWithGURL:
             google_util::AppendGoogleLocaleParam(
-                GURL(password_manager::kPasswordManagerAccountDashboardURL),
-                GetApplicationContext()->GetApplicationLocale())] ];
-  } else if (isSyncingPasswords) {
-    footerItem.text =
-        l10n_util::GetNSString(IDS_IOS_PASSWORD_MANAGER_SETTINGS_SYNC_HEADER);
-    footerItem.urls = @[ [[CrURL alloc]
-        initWithGURL:
-            google_util::AppendGoogleLocaleParam(
-                GURL(password_manager::kPasswordManagerAccountDashboardURL),
+                GURL(password_manager::kPasswordManagerHelpCenteriOSURL),
                 GetApplicationContext()->GetApplicationLocale())] ];
   } else {
-    footerItem.text = l10n_util::GetNSString(
-        IDS_IOS_PASSWORD_MANAGER_SETTINGS_NOT_SYNC_HEADER);
+    footerItem.text =
+        l10n_util::GetNSString(IDS_IOS_SAVE_PASSWORDS_MANAGE_ACCOUNT);
+
+    footerItem.urls = @[ [[CrURL alloc]
+        initWithGURL:
+            google_util::AppendGoogleLocaleParam(
+                GURL(password_manager::kPasswordManagerAccountDashboardURL),
+                GetApplicationContext()->GetApplicationLocale())] ];
   }
 
   return footerItem;
diff --git a/ios/chrome/browser/ui/settings/resources/BUILD.gn b/ios/chrome/browser/ui/settings/resources/BUILD.gn
index fafe555..15df4a9f 100644
--- a/ios/chrome/browser/ui/settings/resources/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/resources/BUILD.gn
@@ -132,6 +132,16 @@
   ]
 }
 
+imageset("legacy_settings_passwords_in_other_apps_banner") {
+  sources = [
+    "legacy_settings_passwords_in_other_apps_banner.imageset/Contents.json",
+    "legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png",
+    "legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png",
+    "legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png",
+    "legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png",
+  ]
+}
+
 imageset("settings_passwords_in_other_apps_banner") {
   sources = [
     "settings_passwords_in_other_apps_banner.imageset/Contents.json",
diff --git a/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/Contents.json b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/Contents.json
new file mode 100644
index 0000000..8c91f115
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/Contents.json
@@ -0,0 +1,40 @@
+{
+  "images" : [
+    {
+      "filename" : "settings_passwords_in_other_apps_light@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "filename" : "settings_passwords_in_other_apps_dark@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "settings_passwords_in_other_apps_light@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "filename" : "settings_passwords_in_other_apps_dark@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png
new file mode 100644
index 0000000..89482cb
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png
new file mode 100644
index 0000000..87e0614
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png
new file mode 100644
index 0000000..f06ff5b
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png
new file mode 100644
index 0000000..da907d3
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/resources/legacy_settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png
index 89482cb..78e35f8 100644
--- a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png
+++ b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png
index 87e0614..55abf7f 100644
--- a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png
+++ b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_dark@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png
index f06ff5b..9d28c6e 100644
--- a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png
+++ b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png
index da907d3..e231d339 100644
--- a/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png
+++ b/ios/chrome/browser/ui/settings/resources/settings_passwords_in_other_apps_banner.imageset/settings_passwords_in_other_apps_light@3x.png
Binary files differ
diff --git a/ios/chrome/browser/web/web_performance_metrics/web_performance_metrics_java_script_feature.mm b/ios/chrome/browser/web/web_performance_metrics/web_performance_metrics_java_script_feature.mm
index c78cc772..c25b6fe2 100644
--- a/ios/chrome/browser/web/web_performance_metrics/web_performance_metrics_java_script_feature.mm
+++ b/ios/chrome/browser/web/web_performance_metrics/web_performance_metrics_java_script_feature.mm
@@ -23,7 +23,14 @@
 namespace {
 const char kPerformanceMetricsScript[] = "web_performance_metrics_js";
 const char kWebPerformanceMetricsScriptName[] = "WebPerformanceMetricsHandler";
-}
+
+// The time range's expected min and max values for custom histograms.
+constexpr base::TimeDelta kTimeRangeHistogramMin = base::Milliseconds(10);
+constexpr base::TimeDelta kTimeRangeHistogramMax = base::Minutes(10);
+
+// Number of buckets for the time range histograms.
+constexpr int kTimeRangeHistogramBucketCount = 100;
+}  // namespace
 
 WebPerformanceMetricsJavaScriptFeature::WebPerformanceMetricsJavaScriptFeature()
     : JavaScriptFeature(ContentWorld::kAnyContentWorld,
@@ -95,11 +102,15 @@
     double value,
     bool is_main_frame) {
   if (is_main_frame) {
-    UmaHistogramTimes("IOS.Frame.FirstContentfulPaint.MainFrame",
-                      base::Milliseconds(value));
+    UmaHistogramCustomTimes("IOS.Frame.FirstContentfulPaint.MainFrame",
+                            base::Milliseconds(value), kTimeRangeHistogramMin,
+                            kTimeRangeHistogramMax,
+                            kTimeRangeHistogramBucketCount);
   } else {
-    UmaHistogramTimes("IOS.Frame.FirstContentfulPaint.SubFrame",
-                      base::Milliseconds(value));
+    UmaHistogramCustomTimes("IOS.Frame.FirstContentfulPaint.SubFrame",
+                            base::Milliseconds(value), kTimeRangeHistogramMin,
+                            kTimeRangeHistogramMax,
+                            kTimeRangeHistogramBucketCount);
   }
 }
 
@@ -129,8 +140,10 @@
         web_performance_metrics::CalculateAggregateFirstContentfulPaint(
             aggregate, frame);
 
-    UmaHistogramTimes("PageLoad.PaintTiming.NavigationToFirstContentfulPaint",
-                      aggregate_first_contentful_paint);
+    UmaHistogramCustomTimes(
+        "PageLoad.PaintTiming.NavigationToFirstContentfulPaint",
+        aggregate_first_contentful_paint, kTimeRangeHistogramMin,
+        kTimeRangeHistogramMax, kTimeRangeHistogramBucketCount);
   } else if (aggregate == std::numeric_limits<double>::max()) {
     tab_helper->SetAggregateAbsoluteFirstContentfulPaint(
         web_performance_metrics::CalculateAbsoluteFirstContentfulPaint(
@@ -152,19 +165,25 @@
 
   if (is_main_frame) {
     if (!loaded_from_cache) {
-      UmaHistogramTimes("IOS.Frame.FirstInputDelay.MainFrame", delta);
+      UmaHistogramCustomTimes("IOS.Frame.FirstInputDelay.MainFrame", delta,
+                              kTimeRangeHistogramMin, kTimeRangeHistogramMax,
+                              kTimeRangeHistogramBucketCount);
     } else if (loaded_from_cache && page_show_reliably_supported) {
-      UmaHistogramTimes(
+      UmaHistogramCustomTimes(
           "IOS.Frame.FirstInputDelay.MainFrame.AfterBackForwardCacheRestore",
-          delta);
+          delta, kTimeRangeHistogramMin, kTimeRangeHistogramMax,
+          kTimeRangeHistogramBucketCount);
     }
   } else {
     if (!loaded_from_cache) {
-      UmaHistogramTimes("IOS.Frame.FirstInputDelay.SubFrame", delta);
+      UmaHistogramCustomTimes("IOS.Frame.FirstInputDelay.SubFrame", delta,
+                              kTimeRangeHistogramMin, kTimeRangeHistogramMax,
+                              kTimeRangeHistogramBucketCount);
     } else if (loaded_from_cache && page_show_reliably_supported) {
-      UmaHistogramTimes(
+      UmaHistogramCustomTimes(
           "IOS.Frame.FirstInputDelay.SubFrame.AfterBackForwardCacheRestore",
-          delta);
+          delta, kTimeRangeHistogramMin, kTimeRangeHistogramMax,
+          kTimeRangeHistogramBucketCount);
     }
   }
 }
@@ -186,11 +205,16 @@
   if (!first_input_delay_has_been_logged) {
     base::TimeDelta delta = base::Milliseconds(first_input_delay);
     if (loaded_from_cache) {
-      UmaHistogramTimes("PageLoad.InteractiveTiming.FirstInputDelay."
-                        "AfterBackForwardCacheRestore",
-                        delta);
+      UmaHistogramCustomTimes("PageLoad.InteractiveTiming.FirstInputDelay."
+                              "AfterBackForwardCacheRestore",
+                              delta, kTimeRangeHistogramMin,
+                              kTimeRangeHistogramMax,
+                              kTimeRangeHistogramBucketCount);
     } else {
-      UmaHistogramTimes("PageLoad.InteractiveTiming.FirstInputDelay4", delta);
+      UmaHistogramCustomTimes("PageLoad.InteractiveTiming.FirstInputDelay4",
+                              delta, kTimeRangeHistogramMin,
+                              kTimeRangeHistogramMax,
+                              kTimeRangeHistogramBucketCount);
     }
     tab_helper->SetFirstInputDelayLoggingStatus(true);
   }
diff --git a/ios/chrome/browser/web_state_list/web_state_list_serialization_unittest.mm b/ios/chrome/browser/web_state_list/web_state_list_serialization_unittest.mm
index 263672d..b234aac74 100644
--- a/ios/chrome/browser/web_state_list/web_state_list_serialization_unittest.mm
+++ b/ios/chrome/browser/web_state_list/web_state_list_serialization_unittest.mm
@@ -31,7 +31,7 @@
     CRWSessionStorage* session_storage) {
   std::unique_ptr<web::WebState> web_state = CreateWebState();
   web::SerializableUserDataManager::FromWebState(web_state.get())
-      ->AddSerializableUserData(session_storage.userData);
+      ->SetUserDataFromSession(session_storage.userData);
   return web_state;
 }
 
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_af.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_af.xtb
index 498f953..eebf64e 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_af.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_af.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Jy kan gestoorde wagwoorde in ander programme op jou toestel gebruik. Hulle word in Google Wagwoordbestuurder gestoor vir <ph name="EMAIL" /></translation>
 <translation id="6159839020698489198">opsioneel</translation>
 <translation id="6216401132953873625">Voeg nuwe wagwoord by</translation>
+<translation id="6387994324662817823">Wagwoorde word slegs op hierdie toestel in Google Wagwoordbestuurder gestoor.</translation>
 <translation id="6539092367496845964">Iets is fout. Probeer later weer.</translation>
 <translation id="6657585470893396449">Wagwoord</translation>
 <translation id="666236282349601348">Outovul is aan</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_am.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_am.xtb
index 71a908c..821dc95f 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_am.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_am.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">በመሳሪያዎ ላይ ባሉ ሌሎች መተግበሪያዎች ውስጥ የተቀመጡ የይለፍ ቃላትን መጠቀም ይችላሉ። ለ<ph name="EMAIL" /> ወደ የGoogle የይለፍ ቃል አስተዳዳሪ ይቀመጣሉ።</translation>
 <translation id="6159839020698489198">የግድ አይደለም</translation>
 <translation id="6216401132953873625">አዲስ የይለፍ ቃል ያክሉ</translation>
+<translation id="6387994324662817823">የይለፍ ቃላት የሚቀመጡት በዚህ መሣሪያ ላይ ብቻ ባለው የGoogle የይለፍ ቃል አስተዳዳሪ ላይ ነው።</translation>
 <translation id="6539092367496845964">የሆነ ችግር ተፈጥሯል። ቆይተው እንደገና ይሞክሩ።</translation>
 <translation id="6657585470893396449">የይለፍ ቃል</translation>
 <translation id="666236282349601348">ራስ-ሙላ በርቷል።</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ar.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ar.xtb
index 08ca49e..80fda5b 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ar.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ar.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">‏يمكنك استخدام كلمات المرور المحفوظة في التطبيقات الأخرى على جهازك، حيث تُحفظ كلمات المرور هذه في "مدير كلمات المرور" من Google على عنوان البريد الإلكتروني <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">اختياري</translation>
 <translation id="6216401132953873625">إضافة كلمة مرور جديدة</translation>
+<translation id="6387994324662817823">‏يتم حفظ كلمات المرور في "مدير كلمات المرور" من Google على هذا الجهاز فقط.</translation>
 <translation id="6539092367496845964">حدث خطأ. يُرجى إعادة المحاولة لاحقًا.</translation>
 <translation id="6657585470893396449">كلمة المرور</translation>
 <translation id="666236282349601348">ميزة "الملء التلقائي" مفعَّلة</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_as.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_as.xtb
index 0370ddc..85ec4de51 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_as.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_as.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">পাছৱৰ্ড দেখুৱাওক</translation>
 <translation id="1870148520156231997">পাছৱর্ড দেখুৱাওক</translation>
 <translation id="1977167321677356409">পাছৱৰ্ড</translation>
+<translation id="2211969839027957773">Google পাছৱৰ্ড পৰিচালক</translation>
 <translation id="2320166752086256636">কীব'ৰ্ড লুকুৱাওক</translation>
+<translation id="2489483078139081050">আপুনি ছেভ কৰি ৰখা পাছৱৰ্ডসমূহ আপোনাৰ ডিভাইচত থকা অন্য এপ্‌সমূহত ব্যৱহাৰ কৰিব পাৰে। সেইবোৰ কেৱল এই ডিভাইচটোত থকা Google পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয়।</translation>
+<translation id="2677128368066534822">আপোনাৰ পাছৱৰ্ডসমূহ ক্ষিপ্ৰতাৰে পাবলৈ iCloud কীচ্চেইন বাছনিৰ পৰা আঁতৰাওক</translation>
 <translation id="2712586044587587728">আপোনাৰ Chromeৰ পাছৱৰ্ডসমূহ অন্য এপ্‌সমূহত ব্যৱহাৰৰ বাবে উপলব্ধ হ’ব। আপুনি যিকোনো সময়তে ছেটিংসমূহৰ এপত এইটো অফ কৰিব পাৰে।</translation>
 <translation id="2747003861858887689">আগৰ ক্ষেত্ৰ</translation>
 <translation id="3280734926621805458">ব্যৱহাৰ কৰক</translation>
 <translation id="3580107423202590938">Chromeৰ কোনো পাছৱৰ্ড নাই</translation>
 <translation id="368844171100841558">সলনি কৰক</translation>
+<translation id="3739920431472254679">পাছৱৰ্ডসমূহ Google পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয় যাতে আপুনি সেইবোৰ যিকোনো ডিভাইচত ব্যৱহাৰ কৰিব পাৰে।</translation>
 <translation id="3753678329684433031">স্বয়ংক্রিয়ভাৱে পূৰ হোৱা Chromeৰ পাছৱৰ্ড</translation>
 <translation id="3789385946721385622">ব্যৱহাৰকাৰীৰ নাম</translation>
 <translation id="4064278913989596727">সহায়</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">আপুনি Chromeত ছেভ কৰা পাছৱৰ্ডসমূহ যিকোনো এপৰ পৰা এক্সেছ কৰক।</translation>
 <translation id="579113627088729016">স্বয়ংক্রিয়ভাৱে পূৰ হোৱা সুবিধাটো অন কৰক</translation>
 <translation id="5824290706342306555">আৰম্ভ কৰিবলৈ Chromeত কিছুমান পাছৱৰ্ড ছেভ কৰক অথবা আপোনাৰ Google একাউণ্টৰ জৰিয়তে ছাইন ইন কৰক।</translation>
+<translation id="6002340317268558779">আপুনি ছেভ কৰি ৰখা পাছৱৰ্ডসমূহ আপোনাৰ ডিভাইচত থকা অন্য এপ্‌সমূহত ব্যৱহাৰ কৰিব পাৰে। সেইবোৰ <ph name="EMAIL" />ৰ বাবে Google পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয়।</translation>
 <translation id="6159839020698489198">ঐচ্ছিক</translation>
 <translation id="6216401132953873625">নতুন পাছৱৰ্ড যোগ দিয়ক</translation>
+<translation id="6387994324662817823">পাছৱৰ্ডসমূহ কেৱল এই ডিভাইচটোত থকা Google পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয়।</translation>
 <translation id="6539092367496845964">কিবা ভুল হ’ল। পাছত পুনৰ চেষ্টা কৰক।</translation>
 <translation id="6657585470893396449">পাছৱৰ্ড</translation>
 <translation id="666236282349601348">স্বয়ংক্ৰিয়ভাৱে পূৰ হোৱা সুবিধাটো অন হৈ আছে</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">হ’ল</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" />ৰ বাবে</translation>
+<translation id="9168839987494597225">পাছৱৰ্ডসমূহ কেৱল এই ডিভাইচটোত থকা Google পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয়।</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_az.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_az.xtb
index cf0a885..26d5461 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_az.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_az.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Cihazınızdakı digər tətbiqlərdə saxlanmış parollarınızı istifadə edə bilərsiniz Onlar <ph name="EMAIL" /> üçün Google Parol Menecerində saxlanılır.</translation>
 <translation id="6159839020698489198">istəyə görə</translation>
 <translation id="6216401132953873625">Yeni parol əlavə edin</translation>
+<translation id="6387994324662817823">Parollar yalnız bu cihazda Google Parol Menecerində saxlanılır.</translation>
 <translation id="6539092367496845964">Xəta baş verdi. Sonra cəhd edin.</translation>
 <translation id="6657585470893396449">Parol</translation>
 <translation id="666236282349601348">Avtomatik daxil etmə aktivdir</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_be.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_be.xtb
index f2b02e89..a3c08eae 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_be.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_be.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Паказаць пароль</translation>
 <translation id="1870148520156231997">Паказаць пароль</translation>
 <translation id="1977167321677356409">Пароль</translation>
+<translation id="2211969839027957773">Менеджар пароляў Google</translation>
 <translation id="2320166752086256636">Схаваць клавіятуру</translation>
+<translation id="2489483078139081050">Вы можаце выкарыстоўваць захаваныя паролі ў іншых праграмах на прыладзе. Паролі захоўваюцца ў Менеджары пароляў Google толькі на гэтай прыладзе.</translation>
+<translation id="2677128368066534822">Каб мець хуткі доступ да пароляў, скасуйце выбар звязка ключоў iCloud</translation>
 <translation id="2712586044587587728">Захаваныя ў браўзеры Chrome паролі можна будзе выкарыстоўваць у іншых праграмах. Выкарыстанне пароляў можна ў любы час выключыць у праграме "Налады".</translation>
 <translation id="2747003861858887689">Папярэдняе поле</translation>
 <translation id="3280734926621805458">Скарыстаць</translation>
 <translation id="3580107423202590938">Няма пароляў Chrome</translation>
 <translation id="368844171100841558">Замяніць</translation>
+<translation id="3739920431472254679">Паролі захоўваюцца ў Менеджары пароляў Google, і вы можаце выкарыстоўваць іх на любых прыладах.</translation>
 <translation id="3753678329684433031">Функцыя аўтазапаўнення для пароляў Chrome</translation>
 <translation id="3789385946721385622">Імя карыстальніка</translation>
 <translation id="4064278913989596727">Даведка</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Атрымлівайце доступ да пароляў, захаваных у браўзеры Chrome, з усіх праграм.</translation>
 <translation id="579113627088729016">Уключыць Аўтазапаўненне</translation>
 <translation id="5824290706342306555">Для пачатку захавайце некалькі пароляў у Chrome або ўвайдзіце ва Уліковы запіс Google.</translation>
+<translation id="6002340317268558779">Вы можаце выкарыстоўваць захаваныя паролі ў іншых праграмах на прыладзе. Паролі захоўваюцца ў Менеджары пароляў Google уліковага запісу <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">неабавязкова</translation>
 <translation id="6216401132953873625">Дадаць новы пароль</translation>
+<translation id="6387994324662817823">Паролі захоўваюцца ў Менеджары пароляў Google толькі на гэтай прыладзе.</translation>
 <translation id="6539092367496845964">Нешта пайшло не так. Паўтарыце спробу пазней.</translation>
 <translation id="6657585470893396449">Пароль</translation>
 <translation id="666236282349601348">Аўтазапаўненне ўключана</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Гатова</translation>
 <translation id="8877181643142698531">URL-адрас</translation>
 <translation id="9069288651897538648">Для сайта <ph name="URL" /></translation>
+<translation id="9168839987494597225">Паролі захоўваюцца ў Менеджары пароляў Google толькі на гэтай прыладзе.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bg.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bg.xtb
index e11a548..c116e25 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bg.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bg.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Показване на паролата</translation>
 <translation id="1870148520156231997">Показване на паролата</translation>
 <translation id="1977167321677356409">Парола</translation>
+<translation id="2211969839027957773">Google Мениджър на паролите</translation>
 <translation id="2320166752086256636">Скриване на клавиатурата</translation>
+<translation id="2489483078139081050">Можете да използвате запазените пароли в други приложения на устройството си. Те се запазват в мениджъра на паролите в Google само на това устройство.</translation>
+<translation id="2677128368066534822">За да получавате паролите си по-бързо, премахнете избора от iCloud Keychain</translation>
 <translation id="2712586044587587728">Паролите ви в Chrome ще бъдат достъпни за използване в други приложения. Можете да изключите това по всяко време от приложението „Настройки“.</translation>
 <translation id="2747003861858887689">Предишното поле</translation>
 <translation id="3280734926621805458">Използване</translation>
 <translation id="3580107423202590938">Няма пароли в Chrome</translation>
 <translation id="368844171100841558">Замяна</translation>
+<translation id="3739920431472254679">Паролите се запазват в мениджъра на паролите в Google и можете да ги използвате на всяко устройство.</translation>
 <translation id="3753678329684433031">Автоматично попълване на паролата в Chrome</translation>
 <translation id="3789385946721385622">Потребителско име</translation>
 <translation id="4064278913989596727">Помощ</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Осъществявайте достъп до запазените си пароли в Chrome от всяко приложение.</translation>
 <translation id="579113627088729016">Включване на автоматичното попълване</translation>
 <translation id="5824290706342306555">За да започнете, запазете някои пароли в Chrome или влезте с профила си в Google</translation>
+<translation id="6002340317268558779">Можете да използвате запазените пароли в други приложения на устройството си. Те се запазват в мениджъра на паролите в Google за <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">незадължително</translation>
 <translation id="6216401132953873625">Добавяне на нова парола</translation>
+<translation id="6387994324662817823">Паролите се запазват в мениджъра на паролите в Google само на това устройство.</translation>
 <translation id="6539092367496845964">Нещо се обърка. Опитайте пак по-късно.</translation>
 <translation id="6657585470893396449">Парола</translation>
 <translation id="666236282349601348">AutoFill е включено</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Готово</translation>
 <translation id="8877181643142698531">URL адрес</translation>
 <translation id="9069288651897538648">За <ph name="URL" /></translation>
+<translation id="9168839987494597225">Паролите се запазват в мениджъра на паролите в Google само на това устройство.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bn.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bn.xtb
index b6202d1..8ce5806 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bn.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bn.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">সেভ থাকা পাসওয়ার্ড আপনার ডিভাইসের অন্যান্য অ্যাপেও ব্যবহার করতে পারবেন। এটি <ph name="EMAIL" />-এর Google পাসওয়ার্ড ম্যানেজার বিকল্পে সেভ করা আছে।</translation>
 <translation id="6159839020698489198">ঐচ্ছিক</translation>
 <translation id="6216401132953873625">নতুন পাসওয়ার্ড যোগ করুন</translation>
+<translation id="6387994324662817823">শুধুমাত্র এই ডিভাইসের 'Google পাসওয়ার্ড ম্যানেজারে' পাসওয়ার্ড সেভ করা হয়।</translation>
 <translation id="6539092367496845964">কোনও সমস্যা হয়েছে। পরে আবার চেষ্টা করুন।</translation>
 <translation id="6657585470893396449">পাসওয়ার্ড</translation>
 <translation id="666236282349601348">অটোফিল চালু আছে</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bs.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bs.xtb
index f54220a5..54a161cb 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bs.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_bs.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Sačuvane lozinke možete koristiti u drugim aplikacijama na uređaju. Pohranjuju se u Googleovom Upravitelju lozinki za račun <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">nije obavezno</translation>
 <translation id="6216401132953873625">Dodajte novu lozinku</translation>
+<translation id="6387994324662817823">Lozinke se pohranjuju u Googleovom Upravitelju lozinki samo na ovom uređaju.</translation>
 <translation id="6539092367496845964">Nešto nije uredu. Pokušajte ponovo kasnije.</translation>
 <translation id="6657585470893396449">Lozinka</translation>
 <translation id="666236282349601348">Automatsko popunjavanje je uključeno</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ca.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ca.xtb
index 4c9cb13e..a7ed130 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ca.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ca.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Mostra la contrasenya</translation>
 <translation id="1870148520156231997">Mostra la contrasenya</translation>
 <translation id="1977167321677356409">Contrasenya</translation>
+<translation id="2211969839027957773">Gestor de contrasenyes de Google</translation>
 <translation id="2320166752086256636">Amaga el teclat</translation>
+<translation id="2489483078139081050">Pots utilitzar les contrasenyes desades en altres aplicacions del teu dispositiu. Estan desades al gestor de contrasenyes de Google només en aquest dispositiu.</translation>
+<translation id="2677128368066534822">Per obtenir les contrasenyes més ràpidament, desselecciona el clauer d'iCloud</translation>
 <translation id="2712586044587587728">Les contrasenyes de Chrome estaran disponibles per utilitzar-les en altres aplicacions. Pots desactivar aquesta opció en qualsevol moment a l'aplicació Configuració.</translation>
 <translation id="2747003861858887689">Camp anterior</translation>
 <translation id="3280734926621805458">Utilitza</translation>
 <translation id="3580107423202590938">No hi ha cap contrasenya de Chrome</translation>
 <translation id="368844171100841558">Substitueix</translation>
+<translation id="3739920431472254679">Les contrasenyes es desen al gestor de contrasenyes de Google perquè puguis utilitzar-les en qualsevol dispositiu.</translation>
 <translation id="3753678329684433031">Autocompleta la contrasenya de Chrome</translation>
 <translation id="3789385946721385622">Nom d'usuari</translation>
 <translation id="4064278913989596727">Ajuda</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Accedeix a les contrasenyes que desis a Chrome des de qualsevol aplicació.</translation>
 <translation id="579113627088729016">Activa l'Emplenament automàtic</translation>
 <translation id="5824290706342306555">Per començar, desa algunes contrasenyes a Chrome o inicia la sessió amb el teu Compte de Google.</translation>
+<translation id="6002340317268558779">Pots utilitzar les contrasenyes desades en altres aplicacions del teu dispositiu. Estan desades al gestor de contrasenyes de Google per a <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcional</translation>
 <translation id="6216401132953873625">Afegeix una contrasenya nova</translation>
+<translation id="6387994324662817823">Les contrasenyes es desen al gestor de contrasenyes de Google només en aquest dispositiu.</translation>
 <translation id="6539092367496845964">S'ha produït un error. Torna-ho a provar més tard.</translation>
 <translation id="6657585470893396449">Contrasenya</translation>
 <translation id="666236282349601348">L'opció Emplenament automàtic està activada</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Fet</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Per a <ph name="URL" /></translation>
+<translation id="9168839987494597225">Les contrasenyes es desen al gestor de contrasenyes de Google només en aquest dispositiu.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_cs.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_cs.xtb
index da0811c..854689a 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_cs.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_cs.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Zobrazit heslo</translation>
 <translation id="1870148520156231997">Zobrazit heslo</translation>
 <translation id="1977167321677356409">Heslo</translation>
+<translation id="2211969839027957773">Správce hesel Google</translation>
 <translation id="2320166752086256636">Skrýt klávesnici</translation>
+<translation id="2489483078139081050">Uložená hesla můžete používat v dalších aplikacích v zařízení. Ukládají se do Správce hesel Google pouze na tomto zařízení.</translation>
+<translation id="2677128368066534822">Pokud zprávy chcete dostávat rychleji, zrušte výběr klíčenky iCloud</translation>
 <translation id="2712586044587587728">Vaše hesla z Chromu budou k dispozici k použití v jiných aplikacích. Tuto funkci můžete v aplikaci Nastavení kdykoliv vypnout.</translation>
 <translation id="2747003861858887689">Předchozí pole</translation>
 <translation id="3280734926621805458">Použít</translation>
 <translation id="3580107423202590938">V Chromu nemáte žádná hesla</translation>
 <translation id="368844171100841558">Nahradit</translation>
+<translation id="3739920431472254679">Hesla se ukládají do Správce hesel Google, abyste je mohli používat na všech zařízeních.</translation>
 <translation id="3753678329684433031">Automatické vyplňování hesla Chromu</translation>
 <translation id="3789385946721385622">Uživatelské jméno</translation>
 <translation id="4064278913989596727">Nápověda</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Hesla uložená do Chromu můžete používat v jakékoli aplikaci.</translation>
 <translation id="579113627088729016">Zapnout automatické vyplňování</translation>
 <translation id="5824290706342306555">Chcete-li začít, uložte si do Chromu nějaká hesla nebo se přihlaste pomocí účtu Google.</translation>
+<translation id="6002340317268558779">Uložená hesla můžete používat v dalších aplikacích v zařízení. Ukládají se do Správce hesel Google pro účet <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">volitelné</translation>
 <translation id="6216401132953873625">Přidání nového hesla</translation>
+<translation id="6387994324662817823">Hesla se ukládají do Správce hesel Google pouze na tomto zařízení.</translation>
 <translation id="6539092367496845964">Něco se pokazilo. Zkuste to později.</translation>
 <translation id="6657585470893396449">Heslo</translation>
 <translation id="666236282349601348">Automatické vyplňování je zapnuté</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Hotovo</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Pro <ph name="URL" /></translation>
+<translation id="9168839987494597225">Hesla se ukládají do Správce hesel Google pouze na tomto zařízení.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_da.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_da.xtb
index e039593b..9ea3cf97 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_da.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_da.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Vis adgangskode</translation>
 <translation id="1870148520156231997">Vis adgangskode</translation>
 <translation id="1977167321677356409">Adgangskode</translation>
+<translation id="2211969839027957773">Google Adgangskodeadministrator</translation>
 <translation id="2320166752086256636">Skjul tastaturet</translation>
+<translation id="2489483078139081050">Du kan bruge gemte adgangskoder i andre apps på din enhed. De er kun gemt i Google Adgangskodeadministrator på denne enhed.</translation>
+<translation id="2677128368066534822">Fravælg iCloud keychain for at få hurtigere adgang til dine adgangskoder</translation>
 <translation id="2712586044587587728">Dine Chrome-adgangskoder kan bruges i andre apps. Du kan altid deaktivere dette i appen Indstillinger.</translation>
 <translation id="2747003861858887689">Forrige felt</translation>
 <translation id="3280734926621805458">Brug</translation>
 <translation id="3580107423202590938">Der er ingen Chrome-adgangskoder</translation>
 <translation id="368844171100841558">Erstat</translation>
+<translation id="3739920431472254679">Adgangskoder gemmes i Google Adgangskodeadministrator, så du kan bruge dem på alle enheder.</translation>
 <translation id="3753678329684433031">Udfyld Chrome-adgangskode automatisk</translation>
 <translation id="3789385946721385622">Brugernavn</translation>
 <translation id="4064278913989596727">Hjælp</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Få adgang til de adgangskoder, du har gemt i Chrome, via enhver app.</translation>
 <translation id="579113627088729016">Vil du aktivere Autofyld?</translation>
 <translation id="5824290706342306555">Kom godt i gang ved at gemme adgangskoder i Chrome eller logge ind med din Google-konto.</translation>
+<translation id="6002340317268558779">Du kan bruge gemte adgangskoder i andre apps på din enhed. De er gemt i Google Adgangskodeadministrator for <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">valgfrit</translation>
 <translation id="6216401132953873625">Tilføj ny adgangskode</translation>
+<translation id="6387994324662817823">Adgangskoder gemmes kun i Adgangskodeadministrator på denne enhed.</translation>
 <translation id="6539092367496845964">Noget gik galt. Prøv igen senere.</translation>
 <translation id="6657585470893396449">Adgangskode</translation>
 <translation id="666236282349601348">Autofyld er aktiveret</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Udfør</translation>
 <translation id="8877181643142698531">Webadresse</translation>
 <translation id="9069288651897538648">For <ph name="URL" /></translation>
+<translation id="9168839987494597225">Adgangskoder gemmes kun i Google Adgangskodeadministrator på denne enhed.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_de.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_de.xtb
index 5a584c5..944ad9e4 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_de.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_de.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Passwort anzeigen</translation>
 <translation id="1870148520156231997">Passwort einblenden</translation>
 <translation id="1977167321677356409">Passwort</translation>
+<translation id="2211969839027957773">Passwortmanager von Google</translation>
 <translation id="2320166752086256636">Tastatur ausblenden</translation>
+<translation id="2489483078139081050">Sie können gespeicherte Passwörter auch in anderen Apps auf Ihrem Gerät nutzen. Sie werden nur auf diesem Gerät im Passwortmanager von Google gespeichert.</translation>
+<translation id="2677128368066534822">Ihre Passwörter lassen sich schneller aufrufen, wenn Sie die Auswahl für den iCloud-Schlüsselbund aufheben</translation>
 <translation id="2712586044587587728">Ihre Chrome-Passwörter sind für die Nutzung in anderen Apps verfügbar. Sie können das jederzeit in der App "Einstellungen" deaktivieren.</translation>
 <translation id="2747003861858887689">Vorheriges Feld</translation>
 <translation id="3280734926621805458">Verwenden</translation>
 <translation id="3580107423202590938">Keine Chrome-Passwörter</translation>
 <translation id="368844171100841558">Ersetzen</translation>
+<translation id="3739920431472254679">Passwörter werden im Passwortmanager von Google gespeichert und können auf jedem Gerät verwendet werden.</translation>
 <translation id="3753678329684433031">Chrome-Passwort automatisch ausfüllen</translation>
 <translation id="3789385946721385622">Nutzername</translation>
 <translation id="4064278913989596727">Hilfe</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Auf Passwörter, die Sie in Chrome speichern, können Sie von jeder App aus zugreifen.</translation>
 <translation id="579113627088729016">„Automatisches Ausfüllen“ aktivieren</translation>
 <translation id="5824290706342306555">Speichern Sie Ihre Passwörter in Chrome oder melden Sie sich mit Ihrem Google-Konto an.</translation>
+<translation id="6002340317268558779">Sie können gespeicherte Passwörter auch in anderen Apps auf Ihrem Gerät nutzen. Sie werden im Passwortmanager von Google für <ph name="EMAIL" /> gespeichert.</translation>
 <translation id="6159839020698489198">optional</translation>
 <translation id="6216401132953873625">Neues Passwort hinzufügen</translation>
+<translation id="6387994324662817823">Passwörter werden auf diesem Gerät nur im Google Passwortmanager gespeichert.</translation>
 <translation id="6539092367496845964">Ein Fehler ist aufgetreten. Versuchen Sie es später noch einmal.</translation>
 <translation id="6657585470893396449">Passwort</translation>
 <translation id="666236282349601348">Die Funktion „Automatisches Ausfüllen“ ist aktiviert</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Fertig</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Für <ph name="URL" /></translation>
+<translation id="9168839987494597225">Passwörter werden nur auf diesem Gerät im Passwortmanager von Google gespeichert.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_el.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_el.xtb
index 8f5dc3c..1684e39 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_el.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_el.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Μπορείτε να χρησιμοποιείτε τους αποθηκευμένους κωδικούς πρόσβασης σε άλλες εφαρμογές στη συσκευή σας. Αποθηκεύονται στον Διαχειριστή κωδικών πρόσβασης Google για τον λογαριασμό <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">προαιρετικό</translation>
 <translation id="6216401132953873625">Προσθήκη νέου κωδικού πρόσβασης</translation>
+<translation id="6387994324662817823">Οι κωδικοί πρόσβασης αποθηκεύονται στον Διαχειριστή κωδικών πρόσβασης Google μόνο σε αυτήν τη συσκευή.</translation>
 <translation id="6539092367496845964">Παρουσιάστηκε κάποιο πρόβλημα. Δοκιμάστε ξανά αργότερα.</translation>
 <translation id="6657585470893396449">Κωδικός Πρόσβασης</translation>
 <translation id="666236282349601348">Η αυτόματη συμπλήρωση είναι ενεργοποιημένη</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_en-GB.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_en-GB.xtb
index ef28dc2..a8fefd4 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_en-GB.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_en-GB.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">You can use saved passwords in other apps on your device. They're saved to Google Password Manager for <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">optional</translation>
 <translation id="6216401132953873625">Add new password</translation>
+<translation id="6387994324662817823">Passwords are saved to Google Password Manager on this device only.</translation>
 <translation id="6539092367496845964">Something went wrong. Try again later.</translation>
 <translation id="6657585470893396449">Password</translation>
 <translation id="666236282349601348">Auto-fill is on</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es-419.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es-419.xtb
index 1c00c4b..a6ab882d 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es-419.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es-419.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Mostrar contraseña</translation>
 <translation id="1870148520156231997">Mostrar contraseña</translation>
 <translation id="1977167321677356409">Contraseña</translation>
+<translation id="2211969839027957773">Administrador de contraseñas de Google</translation>
 <translation id="2320166752086256636">Ocultar el teclado</translation>
+<translation id="2489483078139081050">Puedes usar las contraseñas guardadas en otras apps de tu dispositivo. Se guardan en el Administrador de contraseñas de Google solo en este dispositivo.</translation>
+<translation id="2677128368066534822">Para recibir contraseñas más rápido, anula la selección del llavero de iCloud.</translation>
 <translation id="2712586044587587728">Podrás usar tus contraseñas de Chrome en otras apps. Puedes desactivar esta extensión en la app de Configuración cuando quieras.</translation>
 <translation id="2747003861858887689">Campo anterior</translation>
 <translation id="3280734926621805458">Uso</translation>
 <translation id="3580107423202590938">No hay contraseñas de Chrome</translation>
 <translation id="368844171100841558">Reemplazar</translation>
+<translation id="3739920431472254679">Las contraseñas se guardan en el Administrador de contraseñas de Google y puedes usarlas en cualquier dispositivo.</translation>
 <translation id="3753678329684433031">Autocompletar la contraseña de Chrome</translation>
 <translation id="3789385946721385622">Nombre de usuario</translation>
 <translation id="4064278913989596727">Ayuda</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Accede a las contraseñas que guardas en Chrome desde cualquier app.</translation>
 <translation id="579113627088729016">Activar Autocompletar</translation>
 <translation id="5824290706342306555">Para comenzar, guarda algunas contraseñas en Chrome o accede con tu Cuenta de Google.</translation>
+<translation id="6002340317268558779">Puedes usar las contraseñas guardadas en otras apps de tu dispositivo. Se guardan en el Administrador de contraseñas de Google de <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcional</translation>
 <translation id="6216401132953873625">Agregar una nueva contraseña</translation>
+<translation id="6387994324662817823">Las contraseñas se guardan en el Administrador de contraseñas de Google solo en este dispositivo.</translation>
 <translation id="6539092367496845964">Se produjo un error; vuelve a intentarlo más tarde.</translation>
 <translation id="6657585470893396449">Contraseña</translation>
 <translation id="666236282349601348">Autorrelleno está activado</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Listo</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Para <ph name="URL" /></translation>
+<translation id="9168839987494597225">Las contraseñas se guardan en el Administrador de contraseñas de Google solo en este dispositivo.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es.xtb
index 261e696..bf6ed0bc 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_es.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Mostrar contraseña</translation>
 <translation id="1870148520156231997">Mostrar contraseña</translation>
 <translation id="1977167321677356409">Contraseña</translation>
+<translation id="2211969839027957773">Gestor de contraseñas de Google</translation>
 <translation id="2320166752086256636">Ocultar teclado</translation>
+<translation id="2489483078139081050">Puedes usar las contraseñas guardadas en otras aplicaciones de tu dispositivo. Se guardan en el gestor de contraseñas de Google solo en este dispositivo.</translation>
+<translation id="2677128368066534822">Para acceder a tus contraseñas más rápido, desmarca el llavero de iCloud</translation>
 <translation id="2712586044587587728">Podrás usar tus contraseñas de Chrome en otras aplicaciones. Puedes desactivar esta función en cualquier momento desde la aplicación Ajustes.</translation>
 <translation id="2747003861858887689">Campo anterior</translation>
 <translation id="3280734926621805458">Usar</translation>
 <translation id="3580107423202590938">No hay contraseñas de Chrome</translation>
 <translation id="368844171100841558">Sustituir</translation>
+<translation id="3739920431472254679">Las contraseñas se guardan en el gestor de contraseñas de Google y puedes usarlas en cualquier dispositivo.</translation>
 <translation id="3753678329684433031">Autocompletar contraseña de Chrome</translation>
 <translation id="3789385946721385622">Nombre de usuario</translation>
 <translation id="4064278913989596727">Ayuda</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Accede a las contraseñas que guardes en Chrome desde cualquier aplicación.</translation>
 <translation id="579113627088729016">Activar Autorrelleno</translation>
 <translation id="5824290706342306555">Para empezar, guarda algunas contraseñas en Chrome o inicia sesión en tu cuenta de Google.</translation>
+<translation id="6002340317268558779">Puedes usar las contraseñas guardadas en otras aplicaciones de tu dispositivo. Se guardan en el gestor de contraseñas de Google de <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcional</translation>
 <translation id="6216401132953873625">Añadir nueva contraseña</translation>
+<translation id="6387994324662817823">Las contraseñas se guardan en el gestor de contraseñas de Google solo en este dispositivo.</translation>
 <translation id="6539092367496845964">Se ha producido un error. Vuelve a intentarlo más tarde.</translation>
 <translation id="6657585470893396449">Contraseña</translation>
 <translation id="666236282349601348">Autorrelleno está activado</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Hecho</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">De <ph name="URL" /></translation>
+<translation id="9168839987494597225">Las contraseñas se guardan en el gestor de contraseñas de Google solo en este dispositivo.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_et.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_et.xtb
index b3d5199..bf96666c 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_et.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_et.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Kuva parool</translation>
 <translation id="1870148520156231997">Kuva parool</translation>
 <translation id="1977167321677356409">Parool</translation>
+<translation id="2211969839027957773">Google'i paroolihaldur</translation>
 <translation id="2320166752086256636">Peida klaviatuur</translation>
+<translation id="2489483078139081050">Saate salvestatud paroole kasutada oma seadme muudes rakendustes. Need salvestatakse Google'i paroolihaldurisse ainult selles seadmes.</translation>
+<translation id="2677128368066534822">Selleks et paroole kiiremini saada, tühistage iCloudi võtmeahela valik</translation>
 <translation id="2712586044587587728">Teie Chrome'i paroole saab kasutada muudes rakendustes. Selle saab rakenduses Seaded alati välja lülitada.</translation>
 <translation id="2747003861858887689">Eelmine väli</translation>
 <translation id="3280734926621805458">Kasuta</translation>
 <translation id="3580107423202590938">Chrome'i paroole pole</translation>
 <translation id="368844171100841558">Asenda</translation>
+<translation id="3739920431472254679">Paroolid salvestatakse Google'i paroolihaldurisse, et saaksite neid kasutada mis tahes seadmes.</translation>
 <translation id="3753678329684433031">Chrome'i parooli automaatne täitmine</translation>
 <translation id="3789385946721385622">Kasutajanimi</translation>
 <translation id="4064278913989596727">Abi</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Pääsete mis tahes rakenduses juurde paroolidele, mille Chrome'is salvestate.</translation>
 <translation id="579113627088729016">Lülita automaattäide sisse</translation>
 <translation id="5824290706342306555">Alustamiseks salvestage mõned paroolid Chrome'i või logige sisse oma Google'i kontoga.</translation>
+<translation id="6002340317268558779">Saate salvestatud paroole kasutada oma seadme muudes rakendustes. Need salvestatakse konto <ph name="EMAIL" /> puhul Google'i paroolihaldurisse.</translation>
 <translation id="6159839020698489198">valikuline</translation>
 <translation id="6216401132953873625">Uue parooli lisamine</translation>
+<translation id="6387994324662817823">Paroolid salvestatakse Google'i rakendusse Paroolihaldur ainult selles seadmes.</translation>
 <translation id="6539092367496845964">Midagi läks valesti. Proovige hiljem uuesti.</translation>
 <translation id="6657585470893396449">Parool</translation>
 <translation id="666236282349601348">Automaattäide on sees</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Valmis</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Saidi <ph name="URL" /> jaoks</translation>
+<translation id="9168839987494597225">Paroolid salvestatakse Google'i paroolihaldurisse ainult selles seadmes.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_eu.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_eu.xtb
index 355bd2b..7fe358f 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_eu.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_eu.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Gordetako pasahitzak gailuko beste aplikazio batzuetan erabil ditzakezu. <ph name="EMAIL" /> kontuan saioa hasita zeneukala gorde dituzunak Google-ren Pasahitz-kudeatzailea atalean gordetzen dira.</translation>
 <translation id="6159839020698489198">aukerakoa</translation>
 <translation id="6216401132953873625">Gehitu beste pasahitz bat</translation>
+<translation id="6387994324662817823">Pasahitzak gailu honetan soilik gordetzen dira Google-ren Pasahitz-kudeatzailea atalean.</translation>
 <translation id="6539092367496845964">Arazoren bat izan da. Saiatu berriro geroago.</translation>
 <translation id="6657585470893396449">Pasahitza</translation>
 <translation id="666236282349601348">Betetze automatikoa aktibatuta dago</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fa.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fa.xtb
index a55da47..ec4309b 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fa.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fa.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">‏می‌توانید از گذرواژه‌های ذخیره‌شده در سایر برنامه‌های دستگاهتان استفاده کنید. این گذرواژه‌ها در «مدیر گذرواژه Google» <ph name="EMAIL" /> ذخیره شده‌اند.</translation>
 <translation id="6159839020698489198">اختیاری</translation>
 <translation id="6216401132953873625">افزودن گذرواژه جدید</translation>
+<translation id="6387994324662817823">‏گذرواژه‌ها فقط در «مدیر گذرواژه Google» در این دستگاه ذخیره می‌شوند.</translation>
 <translation id="6539092367496845964">مشکلی پیش آمد. بعداً دوباره امتحان کنید.</translation>
 <translation id="6657585470893396449">گذرواژه</translation>
 <translation id="666236282349601348">‏AutoFill (تکمیل خودکار) روشن است</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fi.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fi.xtb
index 050af0a..e7ac480f 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fi.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fi.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Näytä salasana</translation>
 <translation id="1870148520156231997">Näytä salasana</translation>
 <translation id="1977167321677356409">Salasana</translation>
+<translation id="2211969839027957773">Googlen Salasanojen ylläpito</translation>
 <translation id="2320166752086256636">Piilota näppäimistö</translation>
+<translation id="2489483078139081050">Voit käyttää tallennettuja salasanoja muissa laitteesi sovelluksissa. Ne on tallennettu Googlen Salasanojen ylläpitoon vain tällä laitteella.</translation>
+<translation id="2677128368066534822">Poista iCloud-avainnipun valinta, jotta saat salasanat nopeammin</translation>
 <translation id="2712586044587587728">Chromen salasanasi ovat käytettävissä muissa sovelluksissa. Voit milloin tahansa laittaa tämän pois päältä asetussovelluksesta.</translation>
 <translation id="2747003861858887689">Edellinen kenttä</translation>
 <translation id="3280734926621805458">Käytä</translation>
 <translation id="3580107423202590938">Ei Chrome-salasanoja</translation>
 <translation id="368844171100841558">Korvaa</translation>
+<translation id="3739920431472254679">Salasanat tallennetaan Googlen Salasanojen ylläpitoon, ja voit käyttää niitä kaikilla laitteilla.</translation>
 <translation id="3753678329684433031">Chromen automaattisen täytön salasana</translation>
 <translation id="3789385946721385622">Käyttäjänimi</translation>
 <translation id="4064278913989596727">Ohje</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Käytä Chromeen tallentamiasi salasanoja mistä tahansa sovelluksesta.</translation>
 <translation id="579113627088729016">Ota automaattinen täyttö käyttöön</translation>
 <translation id="5824290706342306555">Aloita tallentamalla joitain salasanoja Chromeen tai kirjautumalla sisään Google-tililläsi.</translation>
+<translation id="6002340317268558779">Voit käyttää tallennettuja salasanoja muissa laitteesi sovelluksissa. Ne on tallennettu Googlen Salasanojen ylläpitoon sähköpostiosoitteella <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">valinnainen</translation>
 <translation id="6216401132953873625">Lisää uusi salasana</translation>
+<translation id="6387994324662817823">Salasanat tallennetaan Googlen Salasanojen ylläpitoon vain tällä laitteella.</translation>
 <translation id="6539092367496845964">Jotain meni vikaan. Yritä myöhemmin uudelleen.</translation>
 <translation id="6657585470893396449">Salasana</translation>
 <translation id="666236282349601348">Automaattinen täyttö on päällä</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Valmis</translation>
 <translation id="8877181643142698531">URL-osoite</translation>
 <translation id="9069288651897538648">Osoitteelle <ph name="URL" /></translation>
+<translation id="9168839987494597225">Salasanat tallennetaan Googlen Salasanojen ylläpitoon vain tällä laitteella.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fil.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fil.xtb
index a9bfe1c..855da5a 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fil.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fil.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Ipakita ang Password</translation>
 <translation id="1870148520156231997">Ipakita ang Password</translation>
 <translation id="1977167321677356409">Password</translation>
+<translation id="2211969839027957773">Google Password Manager</translation>
 <translation id="2320166752086256636">Itago ang keyboard</translation>
+<translation id="2489483078139081050">Puwede mong gamitin ang mga naka-save na password sa iba pang app sa iyong device. Sine-save ang mga ito sa Google Password Manager sa device lang na ito.</translation>
+<translation id="2677128368066534822">Para mas mabilis na makuha ang iyong mga password, i-deselect ang iCloud keychain</translation>
 <translation id="2712586044587587728">Magiging available na gamitin sa iba pang app ang iyong mga password sa Chrome. Puwede mo itong i-off sa app na Mga Setting anumang oras.</translation>
 <translation id="2747003861858887689">Nakaraang field</translation>
 <translation id="3280734926621805458">Gamitin</translation>
 <translation id="3580107423202590938">Walang Password sa Chrome</translation>
 <translation id="368844171100841558">Palitan</translation>
+<translation id="3739920431472254679">Sine-save ang mga password sa Google Password Manager at magagamit mo ang mga ito sa anumang device.</translation>
 <translation id="3753678329684433031">Gumamit ng AutoFill sa Password sa Chrome</translation>
 <translation id="3789385946721385622">Username</translation>
 <translation id="4064278913989596727">Tulong</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">I-access ang mga password na sine-save mo sa Chrome mula sa anumang app.</translation>
 <translation id="579113627088729016">I-on ang AutoFill</translation>
 <translation id="5824290706342306555">Para makapagsimula, mag-save ng ilang password sa Chrome o mag-sign sa iyong Google Account.</translation>
+<translation id="6002340317268558779">Puwede mong gamitin ang mga naka-save na password sa iba pang app sa iyong device. Sine-save ang mga ito sa Google Password Manager para sa <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opsyonal</translation>
 <translation id="6216401132953873625">Magdagdag ng Bagong Password</translation>
+<translation id="6387994324662817823">Sine-save ang mga password sa Google Password Manager sa device lang na ito.</translation>
 <translation id="6539092367496845964">Nagkaproblema. Subukan ulit sa ibang pagkakataon.</translation>
 <translation id="6657585470893396449">Password</translation>
 <translation id="666236282349601348">Naka-on ang AutoFill</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Tapos na</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Para sa/kay <ph name="URL" /></translation>
+<translation id="9168839987494597225">Sine-save ang mga password sa Google Password Manager sa device lang na ito.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr-CA.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr-CA.xtb
index a0ae343..af7ac87 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr-CA.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr-CA.xtb
@@ -28,6 +28,7 @@
 <translation id="5824290706342306555">Pour commencer, enregistrez quelques mots de passe dans Chrome ou connectez-vous à votre compte Google.</translation>
 <translation id="6159839020698489198">facultatif</translation>
 <translation id="6216401132953873625">Ajouter un nouveau mot de passe</translation>
+<translation id="6387994324662817823">Les mots de passe sont enregistrés dans le gestionnaire de mots de passe Google sur cet appareil uniquement.</translation>
 <translation id="6539092367496845964">Une erreur s'est produite. Réessayez plus tard.</translation>
 <translation id="6657585470893396449">Mot de passe</translation>
 <translation id="666236282349601348">Le remplissage automatique est activé</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr.xtb
index 3aba7d7..eb993ba 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_fr.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Vous pouvez utiliser les mots de passe enregistrés dans d'autres applis sur votre appareil. Ils sont enregistrés dans le Gestionnaire de mots de passe Google pour <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">facultatif</translation>
 <translation id="6216401132953873625">Ajouter un mot de passe</translation>
+<translation id="6387994324662817823">Les mots de passe sont enregistrés dans le Gestionnaire de mots de passe Google uniquement sur cet appareil.</translation>
 <translation id="6539092367496845964">Un problème est survenu. Réessayez plus tard.</translation>
 <translation id="6657585470893396449">Mot de passe</translation>
 <translation id="666236282349601348">Saisie automatique activée</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gl.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gl.xtb
index d17372a5..16b7726 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gl.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gl.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Mostrar contrasinal</translation>
 <translation id="1870148520156231997">Mostrar contrasinal</translation>
 <translation id="1977167321677356409">Contrasinal</translation>
+<translation id="2211969839027957773">Xestor de contrasinais de Google</translation>
 <translation id="2320166752086256636">Ocultar teclado</translation>
+<translation id="2489483078139081050">Podes utilizar noutras aplicacións do dispositivo os contrasinais gardados. Estes gárdanse no xestor de contrasinais de Google só neste dispositivo.</translation>
+<translation id="2677128368066534822">Para acceder aos teus contrasinais máis axiña, anula a selección do chaveiro iCloud</translation>
 <translation id="2712586044587587728">Os teus contrasinais de Chrome estarán dispoñibles para utilizarse noutras aplicacións. Podes desactivar esta opción cando queiras en Configuración.</translation>
 <translation id="2747003861858887689">Campo anterior</translation>
 <translation id="3280734926621805458">Usar</translation>
 <translation id="3580107423202590938">Non hai ningún contrasinal de Chrome</translation>
 <translation id="368844171100841558">Substituír</translation>
+<translation id="3739920431472254679">Os contrasinais gárdanse no xestor de contrasinais de Google e podes utilizalos en calquera dispositivo.</translation>
 <translation id="3753678329684433031">Autocompletar contrasinal de Chrome</translation>
 <translation id="3789385946721385622">Nome de usuario</translation>
 <translation id="4064278913989596727">Axuda</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Accede aos contrasinais que gardas en Chrome desde calquera aplicación.</translation>
 <translation id="579113627088729016">Activar función de autocompletar</translation>
 <translation id="5824290706342306555">Para comezar, garda algún contrasinal en Chrome ou inicia sesión coa túa Conta de Google.</translation>
+<translation id="6002340317268558779">Podes utilizar noutras aplicacións do dispositivo os contrasinais gardados. Estes gárdanse no xestor de contrasinais de Google asociado a <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcional</translation>
 <translation id="6216401132953873625">Engadir contrasinal novo</translation>
+<translation id="6387994324662817823">Os contrasinais gárdanse no xestor de contrasinais de Google só neste dispositivo.</translation>
 <translation id="6539092367496845964">Produciuse un erro. Téntao de novo máis tarde.</translation>
 <translation id="6657585470893396449">Contrasinal</translation>
 <translation id="666236282349601348">A función de autocompletado está activada</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Feito</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Para <ph name="URL" /></translation>
+<translation id="9168839987494597225">Os contrasinais gárdanse no xestor de contrasinais de Google só neste dispositivo.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gu.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gu.xtb
index 39ef6e60..7ea9aaad 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gu.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_gu.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">તમે સાચવેલા પાસવર્ડનો ઉપયોગ તમારા ડિવાઇસ પર અન્ય ઍપમાં કરી શકો છો. તેને <ph name="EMAIL" />ના Google પાસવર્ડ મેનેજરમાં સાચવવામાં આવે છે.</translation>
 <translation id="6159839020698489198">વૈકલ્પિક</translation>
 <translation id="6216401132953873625">નવો પાસવર્ડ ઉમેરો</translation>
+<translation id="6387994324662817823">આ ડિવાઇસના પાસવર્ડ માત્ર આ ડિવાઇસના Google પાસવર્ડ મેનેજરમાં સાચવવામાં આવે છે.</translation>
 <translation id="6539092367496845964">કંઈક ખોટું થયું હતું. થોડીવાર પછી ફરી પ્રયાસ કરો.</translation>
 <translation id="6657585470893396449">પાસવર્ડ</translation>
 <translation id="666236282349601348">આપમેળે ભરવાની સુવિધા ચાલુ છે</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hi.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hi.xtb
index bd0bf55..02c388b 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hi.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hi.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">पासवर्ड दिखाएं</translation>
 <translation id="1870148520156231997">पासवर्ड दिखाएं</translation>
 <translation id="1977167321677356409">पासवर्ड</translation>
+<translation id="2211969839027957773">Google पासवर्ड मैनेजर</translation>
 <translation id="2320166752086256636">कीबोर्ड छिपाएं</translation>
+<translation id="2489483078139081050">सेव किए गए पासवर्ड का इस्तेमाल, अपने डिवाइस के दूसरे ऐप्लिकेशन के लिए भी किया जा सकता है. Google पासवर्ड मैनेजर में ये पासवर्ड, सिर्फ़ इस डिवाइस पर सेव किए गए हैं.</translation>
+<translation id="2677128368066534822">अपने पासवर्ड ज़्यादा तेज़ी से पाने के लिए, iCloud Keychain से चुने हुए का निशान हटाएं</translation>
 <translation id="2712586044587587728">आप Chrome में सेव किए गए पासवर्ड का इस्तेमाल अन्य ऐप्लिकेशन में कर सकते हैं. आप किसी भी समय सेटिंग ऐप्लिकेशन में जाकर इसे बंद कर सकते हैं.</translation>
 <translation id="2747003861858887689">पिछला फ़ील्‍ड</translation>
 <translation id="3280734926621805458">इस्तेमाल करें</translation>
 <translation id="3580107423202590938">Chrome में कोई पासवर्ड सेव नहीं है</translation>
 <translation id="368844171100841558">बदलें</translation>
+<translation id="3739920431472254679">पासवर्ड, Google पासवर्ड मैनेजर में सेव किए जाते हैं. इससे उनका इस्तेमाल किसी भी डिवाइस पर किया जा सकता है.</translation>
 <translation id="3753678329684433031">Chrome में सेव पासवर्ड को ऑटोमैटिक भरें</translation>
 <translation id="3789385946721385622">उपयोगकर्ता नाम</translation>
 <translation id="4064278913989596727">सहायता</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Chrome में सेव पासवर्ड, किसी भी ऐप्लिकेशन से ऐक्सेस करें.</translation>
 <translation id="579113627088729016">ऑटोमैटिक जानकारी भरने की सुविधा चालू करें</translation>
 <translation id="5824290706342306555">शुरू करने के लिए, Chrome में कुछ पासवर्ड सेव करें या अपने Google खाते में साइन इन करें.</translation>
+<translation id="6002340317268558779">सेव किए गए पासवर्ड का इस्तेमाल, अपने डिवाइस के दूसरे ऐप्लिकेशन के लिए भी किया जा सकता है. <ph name="EMAIL" /> के लिए ये पासवर्ड, Google पासवर्ड मैनेजर में सेव किए गए हैं.</translation>
 <translation id="6159839020698489198">ज़रूरी नहीं</translation>
 <translation id="6216401132953873625">नया पासवर्ड जोड़ें</translation>
+<translation id="6387994324662817823">पासवर्ड, सिर्फ़ इस डिवाइस में Google पासवर्ड मैनेजर में सेव हैं.</translation>
 <translation id="6539092367496845964">कोई गड़बड़ी हुई. बाद में कोशिश करें.</translation>
 <translation id="6657585470893396449">पासवर्ड</translation>
 <translation id="666236282349601348">AutoFill चालू है</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">हो गया</translation>
 <translation id="8877181643142698531">यूआरएल</translation>
 <translation id="9069288651897538648"><ph name="URL" /> के लिए</translation>
+<translation id="9168839987494597225">पासवर्ड, Google पासवर्ड मैनेजर में सिर्फ़ इस डिवाइस में सेव किए गए हैं.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hr.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hr.xtb
index b812230..31bc64c 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hr.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hr.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Spremljene zaporke možete koristiti u drugim aplikacijama na uređaju. Spremaju se u Google upravitelj zaporki za <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">nije obavezno</translation>
 <translation id="6216401132953873625">Dodavanje nove zaporke</translation>
+<translation id="6387994324662817823">Zaporke se spremaju u Google upravitelj zaporki samo na ovom uređaju.</translation>
 <translation id="6539092367496845964">Nešto nije u redu. Pokušajte ponovo kasnije.</translation>
 <translation id="6657585470893396449">Zaporka</translation>
 <translation id="666236282349601348">Automatsko popunjavanje je uključeno</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hu.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hu.xtb
index 2102034c..c3673fb 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hu.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hu.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Jelszó mutatása</translation>
 <translation id="1870148520156231997">Jelszó megjelenítése</translation>
 <translation id="1977167321677356409">Jelszó</translation>
+<translation id="2211969839027957773">Google Jelszókezelő</translation>
 <translation id="2320166752086256636">Billentyűzet elrejtése</translation>
+<translation id="2489483078139081050">A mentett jelszavakat az eszközén található további alkalmazásokban is használhatja. A jelszavakat csak ezen az eszközön menti a rendszer a Google Jelszókezelőbe.</translation>
+<translation id="2677128368066534822">A jelszavak gyorsabb eléréséhez szüntesse meg az iCloud-kulcstár kijelölését</translation>
 <translation id="2712586044587587728">Chrome-jelszavait más alkalmazásokban is használhatja. A funkciót a Beállítások alkalmazásban bármikor kikapcsolhatja.</translation>
 <translation id="2747003861858887689">Előző mező</translation>
 <translation id="3280734926621805458">Használat</translation>
 <translation id="3580107423202590938">Nincsenek Chrome-jelszavak</translation>
 <translation id="368844171100841558">Csere</translation>
+<translation id="3739920431472254679">A jelszavakat a Google Jelszókezelőbe menti a rendszer, így bármely eszközén használhatja őket.</translation>
 <translation id="3753678329684433031">Chrome-jelszó automatikus kitöltése</translation>
 <translation id="3789385946721385622">Felhasználónév</translation>
 <translation id="4064278913989596727">Súgó</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Bármelyik alkalmazással hozzáférhet a Chrome-ba mentett jelszavaihoz.</translation>
 <translation id="579113627088729016">Automatikus kitöltés bekapcsolása</translation>
 <translation id="5824290706342306555">A kezdéshez mentsen jelszavakat a Chrome-ba, vagy jelentkezzen be Google-fiókjával.</translation>
+<translation id="6002340317268558779">A mentett jelszavakat az eszközén található további alkalmazásokban is használhatja. A jelszavakat a Google Jelszókezelő szolgáltatásba menti a rendszer a(z) <ph name="EMAIL" /> fiókhoz.</translation>
 <translation id="6159839020698489198">nem kötelező</translation>
 <translation id="6216401132953873625">Új jelszó hozzáadása</translation>
+<translation id="6387994324662817823">A jelszavakat csak ezen az eszközön menti a rendszer a Google Jelszókezelőbe.</translation>
 <translation id="6539092367496845964">Hiba történt. Próbálja újra később.</translation>
 <translation id="6657585470893396449">Jelszó</translation>
 <translation id="666236282349601348">Az automatikus kitöltés be van kapcsolva</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Kész</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Webhely: <ph name="URL" /></translation>
+<translation id="9168839987494597225">A jelszavakat csak ezen az eszközön menti a rendszer a Google Jelszókezelőbe.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hy.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hy.xtb
index 2f95be7..dffb370 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hy.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_hy.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Պահված գաղտնաբառերը կարող եք օգտագործել ձեր սարքի այլ հավելվածներում։ Դրանք պահված են <ph name="EMAIL" /> հաշվի Google Գաղտնաբառերի կառավարիչում։</translation>
 <translation id="6159839020698489198">կամընտիր</translation>
 <translation id="6216401132953873625">Նոր գաղտնաբառի ավելացում</translation>
+<translation id="6387994324662817823">Գաղտնաբառերը պահվում են միայն այս սարքի Google Գաղտնաբառերի կառավարիչում</translation>
 <translation id="6539092367496845964">Սխալ առաջացավ: Փորձեք ավելի ուշ:</translation>
 <translation id="6657585470893396449">Գաղտնաբառ</translation>
 <translation id="666236282349601348">Ինքնալրացումը միացված է</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_id.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_id.xtb
index dee4288..304a504 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_id.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_id.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Tampilkan Sandi</translation>
 <translation id="1870148520156231997">Tampilkan Sandi</translation>
 <translation id="1977167321677356409">Sandi</translation>
+<translation id="2211969839027957773">Pengelola Sandi Google</translation>
 <translation id="2320166752086256636">Sembunyikan keyboard</translation>
+<translation id="2489483078139081050">Anda dapat menggunakan sandi tersimpan di aplikasi lain pada perangkat. Sandi hanya disimpan ke Pengelola Sandi Google di perangkat ini.</translation>
+<translation id="2677128368066534822">Untuk mengisikan sandi dengan lebih cepat, batalkan pilihan keychain iCloud</translation>
 <translation id="2712586044587587728">Sandi Chrome Anda akan tersedia untuk digunakan di aplikasi lain. Anda dapat menonaktifkannya kapan saja di aplikasi Setelan.</translation>
 <translation id="2747003861858887689">Bidang sebelumnya</translation>
 <translation id="3280734926621805458">Gunakan</translation>
 <translation id="3580107423202590938">Tidak Ada Sandi Chrome</translation>
 <translation id="368844171100841558">Ganti</translation>
+<translation id="3739920431472254679">Sandi disimpan ke Pengelola Sandi Google dan Anda dapat menggunakannya di perangkat mana pun.</translation>
 <translation id="3753678329684433031">Isi Otomatis Sandi Chrome</translation>
 <translation id="3789385946721385622">Nama pengguna</translation>
 <translation id="4064278913989596727">Bantuan</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Akses sandi yang Anda simpan di Chrome dari aplikasi apa pun.</translation>
 <translation id="579113627088729016">Aktifkan Isi Otomatis?</translation>
 <translation id="5824290706342306555">Untuk memulai, simpan beberapa sandi di Chrome atau login dengan Akun Google Anda.</translation>
+<translation id="6002340317268558779">Anda dapat menggunakan sandi tersimpan di aplikasi lain pada perangkat. Sandi disimpan ke Pengelola Sandi Google untuk <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opsional</translation>
 <translation id="6216401132953873625">Menambahkan Sandi Baru</translation>
+<translation id="6387994324662817823">Sandi hanya disimpan ke Pengelola Sandi Google di perangkat ini.</translation>
 <translation id="6539092367496845964">Terjadi masalah. Coba lagi nanti.</translation>
 <translation id="6657585470893396449">Sandi</translation>
 <translation id="666236282349601348">AutoFill aktif</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Selesai</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Untuk <ph name="URL" /></translation>
+<translation id="9168839987494597225">Sandi hanya disimpan ke Pengelola Sandi Google di perangkat ini.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_is.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_is.xtb
index 3497d86..f738dfc 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_is.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_is.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Sýna aðgangsorð</translation>
 <translation id="1870148520156231997">Sýna aðgangsorð</translation>
 <translation id="1977167321677356409">Aðgangsorð</translation>
+<translation id="2211969839027957773">Aðgangsorðastjórnun Google</translation>
 <translation id="2320166752086256636">Fela lyklaborð</translation>
+<translation id="2489483078139081050">Þú getur notað vistuð aðgangsorð í öðrum forritum í tækinu. Þau eru aðeins vistuð í aðgangsorðastjórnun Google í þessu tæki.</translation>
+<translation id="2677128368066534822">Þú getur opnað aðgangsorðin hraðar ef þú afvelur iCloud-lyklakippuna</translation>
 <translation id="2712586044587587728">Hægt verður að nota Chrome aðgangsorðin þín í öðrum forritum. Þú getur slökkt á þessu í stillingaforritinu hvenær sem er.</translation>
 <translation id="2747003861858887689">Fyrri reitur</translation>
 <translation id="3280734926621805458">Nota</translation>
 <translation id="3580107423202590938">Engin aðgangsorð í Chrome</translation>
 <translation id="368844171100841558">Skipta út</translation>
+<translation id="3739920431472254679">Aðgangsorð eru vistuð í aðgangsorðastjórnun Google til að þú getir notað þau í hvaða tæki sem er.</translation>
 <translation id="3753678329684433031">Sjálfvirk útfylling aðgangsorðs í Chrome</translation>
 <translation id="3789385946721385622">Notandanafn</translation>
 <translation id="4064278913989596727">Hjálp</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Hafðu aðgangsorðin sem þú vistar í Chrome aðgengileg í öllum forritum.</translation>
 <translation id="579113627088729016">Kveikja á sjálfvirkri útfyllingu</translation>
 <translation id="5824290706342306555">Til að hefjast handa skaltu vista nokkur aðgangsorð í Chrome eða skrá þig inn með Google reikningnum þínum.</translation>
+<translation id="6002340317268558779">Þú getur notað vistuð aðgangsorð í öðrum forritum í tækinu. Þau eru vistuð í aðgangsorðastjórnun Google fyrir <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">valfrjálst</translation>
 <translation id="6216401132953873625">Bæta við nýju aðgangsorði</translation>
+<translation id="6387994324662817823">Aðgangsorð eru aðeins vistuð í aðgangsorðastjórnun Google í þessu tæki.</translation>
 <translation id="6539092367496845964">Eitthvað fór úrskeiðis. Reyndu aftur síðar.</translation>
 <translation id="6657585470893396449">Aðgangsorð</translation>
 <translation id="666236282349601348">Kveikt er á sjálfvirkri útfyllingu</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Lokið</translation>
 <translation id="8877181643142698531">Vefslóð</translation>
 <translation id="9069288651897538648">Fyrir <ph name="URL" /></translation>
+<translation id="9168839987494597225">Aðgangsorð eru aðeins vistuð í aðgangsorðastjórnun Google í þessu tæki.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_it.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_it.xtb
index 14c11795..078886d 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_it.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_it.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Puoi usare le password salvate in altre app sul tuo dispositivo. Sono salvate in Gestore delle password di Google per <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">facoltativo</translation>
 <translation id="6216401132953873625">Aggiungi nuova password</translation>
+<translation id="6387994324662817823">Le password vengono salvate in Gestore delle password di Google solo su questo dispositivo.</translation>
 <translation id="6539092367496845964">Si è verificato un problema. Riprova più tardi.</translation>
 <translation id="6657585470893396449">Password</translation>
 <translation id="666236282349601348">La compilazione automatica è attiva</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_iw.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_iw.xtb
index fa33c09f..0f8ab79 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_iw.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_iw.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">הצגת הסיסמה</translation>
 <translation id="1870148520156231997">הצגת הסיסמה</translation>
 <translation id="1977167321677356409">סיסמה</translation>
+<translation id="2211969839027957773">‏מנהל הסיסמאות של Google</translation>
 <translation id="2320166752086256636">הסתרת מקלדת</translation>
+<translation id="2489483078139081050">‏אפשר להשתמש בסיסמאות השמורות שלך באפליקציות אחרות במכשיר. הן נשמרות במנהל הסיסמאות של Google במכשיר הזה בלבד.</translation>
+<translation id="2677128368066534822">‏כדי להגיע לסיסמאות שלך מהר יותר, צריך לבטל את הבחירה ב-iCloud keychain</translation>
 <translation id="2712586044587587728">‏הסיסמאות שלך ב-Chrome יהיו זמינות לשימוש באפליקציות אחרות. אפשר להשבית את האפשרות הזו בכל שלב דרך האפליקציה 'הגדרות'.</translation>
 <translation id="2747003861858887689">השדה הקודם</translation>
 <translation id="3280734926621805458">שימוש</translation>
 <translation id="3580107423202590938">‏אין סיסמאות מ-Chrome</translation>
 <translation id="368844171100841558">החלפה</translation>
+<translation id="3739920431472254679">‏סיסמאות נשמרות במנהל הסיסמאות של Google ואפשר להשתמש בהן בכל מכשיר.</translation>
 <translation id="3753678329684433031">‏מילוי אוטומטי של הסיסמה ל-Chrome</translation>
 <translation id="3789385946721385622">שם משתמש</translation>
 <translation id="4064278913989596727">עזרה</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">‏ניתן לגשת לסיסמאות השמורות ב-Chrome מכל אפליקציה.</translation>
 <translation id="579113627088729016">הפעלת מילוי אוטומטי</translation>
 <translation id="5824290706342306555">‏כדי להתחיל יש לשמור כמה סיסמאות ב-Chrome או להיכנס אל חשבון Google.</translation>
+<translation id="6002340317268558779">‏אפשר להשתמש בסיסמאות השמורות שלך באפליקציות אחרות במכשיר. הן נשמרות במנהל הסיסמאות של Google עבור <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">אופציונלי</translation>
 <translation id="6216401132953873625">הוספת סיסמה חדשה</translation>
+<translation id="6387994324662817823">‏סיסמאות נשמרות במנהל הסיסמאות של Google במכשיר הזה בלבד.</translation>
 <translation id="6539092367496845964">משהו השתבש. יש לנסות שוב מאוחר יותר.</translation>
 <translation id="6657585470893396449">סיסמה</translation>
 <translation id="666236282349601348">המילוי האוטומטי פועל</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">בוצע</translation>
 <translation id="8877181643142698531">‏כתובת URL</translation>
 <translation id="9069288651897538648">לאתר <ph name="URL" /></translation>
+<translation id="9168839987494597225">‏סיסמאות נשמרות במנהל הסיסמאות של Google במכשיר הזה בלבד.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ja.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ja.xtb
index 9fdc4dd4..dfaadfa 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ja.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ja.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">パスワードを表示</translation>
 <translation id="1870148520156231997">パスワードを表示します</translation>
 <translation id="1977167321677356409">パスワード</translation>
+<translation id="2211969839027957773">Google パスワード マネージャー</translation>
 <translation id="2320166752086256636">キーボードを非表示</translation>
+<translation id="2489483078139081050">保存したパスワードをデバイスの他のアプリで使用できます。パスワードは、このデバイスの Google パスワード マネージャーにのみ保存されます。</translation>
+<translation id="2677128368066534822">パスワードをすばやく表示するには、iCloud キーチェーンの選択を解除します</translation>
 <translation id="2712586044587587728">Chrome に保存したパスワードを他のアプリで使えるようになります。この機能は設定アプリでいつでも無効にできます。</translation>
 <translation id="2747003861858887689">前の項目</translation>
 <translation id="3280734926621805458">使用</translation>
 <translation id="3580107423202590938">Chrome パスワードはありません</translation>
 <translation id="368844171100841558">置き換える</translation>
+<translation id="3739920431472254679">パスワードは Google パスワード マネージャーに保存され、どのデバイスからでも使用できます。</translation>
 <translation id="3753678329684433031">Chrome のパスワード自動入力</translation>
 <translation id="3789385946721385622">ユーザー名</translation>
 <translation id="4064278913989596727">ヘルプ</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">どのアプリからでも Chrome で保存したパスワードにアクセスできます。</translation>
 <translation id="579113627088729016">自動入力をオンにする</translation>
 <translation id="5824290706342306555">開始するには Chrome でパスワードを保存するか、Google アカウントでログインしてください。</translation>
+<translation id="6002340317268558779">保存したパスワードをデバイスの他のアプリで使用できます。パスワードは、<ph name="EMAIL" /> の Google パスワード マネージャーに保存されます。</translation>
 <translation id="6159839020698489198">任意</translation>
 <translation id="6216401132953873625">新しいパスワードを追加</translation>
+<translation id="6387994324662817823">パスワードは、このデバイスの Google パスワード マネージャーにのみ保存されます。</translation>
 <translation id="6539092367496845964">エラーが発生しました。しばらくしてからもう一度お試しください。</translation>
 <translation id="6657585470893396449">パスワード</translation>
 <translation id="666236282349601348">自動入力はオンです</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">完了</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">対象のサイト: <ph name="URL" /></translation>
+<translation id="9168839987494597225">パスワードは、このデバイスの Google パスワード マネージャーにのみ保存されます。</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ka.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ka.xtb
index c8a193d..eb7775c3 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ka.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ka.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">შენახული პაროლების გამოყენება თქვენს მოწყობილობაზე არსებულ სხვა აპებში შეგიძლიათ. ისინი Google პაროლების მმართველის მიერ <ph name="EMAIL" />-ისთვის ინახება.</translation>
 <translation id="6159839020698489198">არასავალდებულო</translation>
 <translation id="6216401132953873625">დაამატეთ ახალი პაროლი</translation>
+<translation id="6387994324662817823">პაროლები ინახება Google პაროლების მმართველში მხოლოდ ამ მოწყობილობაზე.</translation>
 <translation id="6539092367496845964">წარმოიქმნა შეფერხება. ცადეთ მოგვიანებით.</translation>
 <translation id="6657585470893396449">პაროლი</translation>
 <translation id="666236282349601348">ავტომატური შევსება ჩართულია</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kk.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kk.xtb
index c514ad9..c329c90 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kk.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kk.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Сақталған құпия сөздерді құрылғыңыздағы басқа қолданбаларда пайдалана аласыз. Олар <ph name="EMAIL" /> аккаунтына арналған Google Құпия сөздер реттегішіне сақталады.</translation>
 <translation id="6159839020698489198">міндетті емес</translation>
 <translation id="6216401132953873625">Жаңа құпия сөз енгізу</translation>
+<translation id="6387994324662817823">Құпия сөздер осы құрылғыда ғана Google Құпия сөздер реттегішіне сақталады.</translation>
 <translation id="6539092367496845964">Бірдеңе дұрыс болмады. Кейінірек қайталап көріңіз.</translation>
 <translation id="6657585470893396449">Құпия сөз</translation>
 <translation id="666236282349601348">Автотолтыру қосулы</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_km.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_km.xtb
index 5403036..8cb3343 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_km.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_km.xtb
@@ -9,14 +9,19 @@
 <translation id="1706288056912586527">បង្ហាញពាក្យសម្ងាត់</translation>
 <translation id="1870148520156231997">បង្ហាញ​ពាក្យសម្ងាត់</translation>
 <translation id="1977167321677356409">ពាក្យសម្ងាត់</translation>
+<translation id="2211969839027957773">កម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google</translation>
 <translation id="2320166752086256636">លាក់ក្តារចុច</translation>
+<translation id="2489483078139081050">អ្នកអាចប្រើ​ពាក្យសម្ងាត់​ដែលបានរក្សាទុក នៅក្នុងកម្មវិធី​ផ្សេងទៀត​នៅលើ​ឧបករណ៍​របស់អ្នកបាន។ ពាក្យសម្ងាត់​ទាំងនោះ​ត្រូវបានរក្សាទុក​ទៅក្នុងកម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google នៅលើឧបករណ៍នេះ​តែប៉ុណ្ណោះ។</translation>
+<translation id="2677128368066534822">ដើម្បី​ទទួលបាន​ពាក្យសម្ងាត់​របស់អ្នកកាន់តែរហ័ស សូមដកការ​ជ្រើសរើស iCloud keychain</translation>
 <translation id="2712586044587587728">ពាក្យសម្ងាត់ Chrome របស់អ្នក​នឹងអាចប្រើ​បាននៅក្នុង​កម្មវិធីផ្សេងទៀត។ អ្នកអាចបិទវានៅក្នុងកម្មវិធី​ការកំណត់​បានគ្រប់ពេល។</translation>
 <translation id="2747003861858887689">ប្រអប់បំពេញពីមុន</translation>
 <translation id="3280734926621805458">ប្រើ</translation>
 <translation id="3580107423202590938">គ្មានពាក្យសម្ងាត់ Chrome ទេ</translation>
 <translation id="368844171100841558">ជំនួស</translation>
+<translation id="3739920431472254679">ពាក្យសម្ងាត់​ត្រូវបានរក្សាទុក​ទៅក្នុងកម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google ដើម្បីអាចឱ្យអ្នកប្រើវា​នៅលើឧបករណ៍​ណាក៏បាន។</translation>
 <translation id="3753678329684433031">បំពេញ​ពាក្យសម្ងាត់ Chrome ដោយ​ស្វ័យប្រវត្តិ</translation>
 <translation id="3789385946721385622">ឈ្មោះអ្នក​ប្រើប្រាស់</translation>
+<translation id="3830647155781949426">ពាក្យសម្ងាត់​របស់អ្នកនឹងត្រូវ​បានរក្សាទុកទៅកម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google សម្រាប់ <ph name="EMAIL" /> នៅពេលអ្នក​ត្រឡប់ទៅ Chrome វិញ។</translation>
 <translation id="4064278913989596727">ជំនួយ</translation>
 <translation id="4241076354893135477">គ្មានពាក្យសម្ងាត់ Chrome ទេ</translation>
 <translation id="4452240207605337349">មិនអាចរក្សាទុកពាក្យសម្ងាត់បានទេ</translation>
@@ -26,8 +31,10 @@
 <translation id="5366190986669335938">​ចូលប្រើ​ពាក្យសម្ងាត់​ដែលអ្នក​រក្សាទុក​នៅក្នុង Chrome ពីកម្មវិធីនានា។</translation>
 <translation id="579113627088729016">បើកការបំពេញស្វ័យប្រវត្តិ</translation>
 <translation id="5824290706342306555">ដើម្បីចាប់ផ្តើម សូមរក្សាទុកពាក្យសម្ងាត់មួយចំនួននៅក្នុង Chrome ឬចូលដោយប្រើគណនី Google របស់អ្នក។</translation>
+<translation id="6002340317268558779">អ្នកអាចប្រើ​ពាក្យសម្ងាត់​ដែលបានរក្សាទុក នៅក្នុងកម្មវិធី​ផ្សេងទៀត​នៅលើ​ឧបករណ៍​របស់អ្នកបាន។ ពាក្យសម្ងាត់​ទាំងនោះ​ត្រូវបានរក្សាទុក​ទៅក្នុង​កម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google សម្រាប់ <ph name="EMAIL" />។</translation>
 <translation id="6159839020698489198">មិនតម្រូវ</translation>
 <translation id="6216401132953873625">បញ្ចូល​ពាក្យសម្ងាត់​ថ្មី</translation>
+<translation id="6387994324662817823">ពាក្យសម្ងាត់ត្រូវបានរក្សាទុកទៅក្នុងកម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google នៅលើឧបករណ៍នេះតែប៉ុណ្ណោះ។</translation>
 <translation id="6539092367496845964">មានអ្វីមួយខុសប្រក្រតី។ សូមព្យាយាមម្តង​ទៀតនៅ​ពេលក្រោយ។</translation>
 <translation id="6657585470893396449">ពាក្យសម្ងាត់</translation>
 <translation id="666236282349601348">ការបំពេញស្វ័យប្រវត្តិត្រូវបានបើក</translation>
@@ -53,4 +60,5 @@
 <translation id="8730621377337864115">រួចរាល់</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">សម្រាប់ <ph name="URL" /></translation>
+<translation id="9168839987494597225">ពាក្យសម្ងាត់ត្រូវបានរក្សាទុកទៅក្នុងកម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google នៅលើឧបករណ៍នេះតែប៉ុណ្ណោះ។</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kn.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kn.xtb
index 6867521..e1711117 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kn.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_kn.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">ಪಾಸ್‌ವರ್ಡ್ ತೋರಿಸಿ</translation>
 <translation id="1870148520156231997">ಪಾಸ್‌ವರ್ಡ್‌ ತೋರಿಸಿ</translation>
 <translation id="1977167321677356409">ಪಾಸ್‌ವರ್ಡ್</translation>
+<translation id="2211969839027957773">Google ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕ</translation>
 <translation id="2320166752086256636">ಕೀಬೋರ್ಡ್ ಮರೆಮಾಡಿ</translation>
+<translation id="2489483078139081050">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಇತರ ಆ್ಯಪ್‌ಗಳಲ್ಲಿ ಉಳಿಸಿದ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನೀವು ಬಳಸಬಹುದು. ಅವುಗಳನ್ನು ಈ ಸಾಧನದಲ್ಲಿನ Google ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಮಾತ್ರ ಉಳಿಸಲಾಗುತ್ತದೆ.</translation>
+<translation id="2677128368066534822">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ಪಡೆಯಲು, iCloud ಕೀಚೈನ್‌ನ ಆಯ್ಕೆಯನ್ನು ರದ್ದುಮಾಡಿ</translation>
 <translation id="2712586044587587728">ನಿಮ್ಮ Chrome ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಇತರ ಆ್ಯಪ್‌ಗಳಲ್ಲಿ ಬಳಸಲು ಲಭ್ಯವಿರುತ್ತವೆ. ನೀವು ಇದನ್ನು ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಆ್ಯಪ್‌ನಲ್ಲಿ ಯಾವಾಗ ಬೇಕಾದರೂ ಆಫ್ ಮಾಡಬಹುದು.</translation>
 <translation id="2747003861858887689">ಹಿಂದಿನ ಕ್ಷೇತ್ರ</translation>
 <translation id="3280734926621805458">ಬಳಸಿ</translation>
 <translation id="3580107423202590938">ಯಾವುದೇ Chrome ಪಾಸ್‌ವರ್ಡ್‌ಗಳಿಲ್ಲ</translation>
 <translation id="368844171100841558">ಬದಲಿಸಿ</translation>
+<translation id="3739920431472254679">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು Google ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ ಹಾಗೂ ನೀವು ಅವುಗಳನ್ನು ಯಾವುದೇ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದು.</translation>
 <translation id="3753678329684433031">ಸ್ವಯಂ ಭರ್ತಿ Chrome ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="3789385946721385622">ಬಳಕೆದಾರರ ಹೆಸರು</translation>
 <translation id="4064278913989596727">ಸಹಾಯ</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">ನೀವು Chrome ನಲ್ಲಿ ಉಳಿಸುವ ಯಾವುದೇ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಯಾವುದೇ ಆ್ಯಪ್‌ನಿಂದ ಪ್ರವೇಶಿಸಿ.</translation>
 <translation id="579113627088729016">ಸ್ವಯಂ ಭರ್ತಿ ಆನ್ ಮಾಡಿ</translation>
 <translation id="5824290706342306555">ಪ್ರಾರಂಭಿಸಲು, Chrome ನಲ್ಲಿ ಕೆಲವು ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಿ ಅಥವಾ ನಿಮ್ಮ Google ಖಾತೆಯ ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
+<translation id="6002340317268558779">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಇತರ ಆ್ಯಪ್‌ಗಳಲ್ಲಿ ಉಳಿಸಿದ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನೀವು ಬಳಸಬಹುದು. ಅವುಗಳನ್ನು <ph name="EMAIL" /> ನ Google ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="6159839020698489198">ಐಚ್ಛಿಕ</translation>
 <translation id="6216401132953873625">ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಸೇರಿಸಿ</translation>
+<translation id="6387994324662817823">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಈ ಸಾಧನದಲ್ಲಿನ Google ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಮಾತ್ರ ಉಳಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="6539092367496845964">ಏನೋ ತಪ್ಪಾಗಿದೆ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="6657585470893396449">ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="666236282349601348">ಸ್ವಯಂ ಭರ್ತಿ ಆನ್ ಆಗಿದೆ</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">ಮುಗಿದಿದೆ</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> ಗಾಗಿ</translation>
+<translation id="9168839987494597225">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಈ ಸಾಧನದಲ್ಲಿನ Google ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಮಾತ್ರ ಉಳಿಸಲಾಗುತ್ತದೆ.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ko.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ko.xtb
index fc2219e2..551b2c76 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ko.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ko.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">비밀번호 표시</translation>
 <translation id="1870148520156231997">비밀번호 표시</translation>
 <translation id="1977167321677356409">비밀번호</translation>
+<translation id="2211969839027957773">Google 비밀번호 관리자</translation>
 <translation id="2320166752086256636">키보드 숨기기</translation>
+<translation id="2489483078139081050">기기의 다른 앱에서 저장된 비밀번호를 사용할 수 있습니다. 이 기기의 Google 비밀번호 관리자에만 비밀번호가 저장됩니다</translation>
+<translation id="2677128368066534822">비밀번호로 더 빠르게 이동하려면 iCloud 키체인을 해제하세요.</translation>
 <translation id="2712586044587587728">Chrome 비밀번호를 다른 앱에서 사용할 수 있게 됩니다. 이 기능은 언제든지 설정 앱에서 사용 중지할 수 있습니다.</translation>
 <translation id="2747003861858887689">이전 필드</translation>
 <translation id="3280734926621805458">사용</translation>
 <translation id="3580107423202590938">Chrome 비밀번호 없음</translation>
 <translation id="368844171100841558">바꾸기</translation>
+<translation id="3739920431472254679">비밀번호가 Google 비밀번호 관리자에 저장되므로 모든 기기에서 비밀번호를 사용할 수 있습니다</translation>
 <translation id="3753678329684433031">Chrome 비밀번호 자동 완성</translation>
 <translation id="3789385946721385622">사용자 이름</translation>
 <translation id="4064278913989596727">도움말</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">모든 앱에서 Chrome에 저장한 비밀번호에 액세스합니다.</translation>
 <translation id="579113627088729016">자동 완성 사용 설정</translation>
 <translation id="5824290706342306555">시작하려면 Chrome에 비밀번호를 저장하거나 Google 계정으로 로그인하세요.</translation>
+<translation id="6002340317268558779">기기의 다른 앱에서 저장된 비밀번호를 사용할 수 있습니다. <ph name="EMAIL" />의 Google 비밀번호 관리자에 비밀번호가 저장됩니다</translation>
 <translation id="6159839020698489198">선택사항</translation>
 <translation id="6216401132953873625">새 비밀번호 추가</translation>
+<translation id="6387994324662817823">비밀번호가 이 기기의 Google 비밀번호 관리자에만 저장됩니다</translation>
 <translation id="6539092367496845964">문제가 발생했습니다. 나중에 다시 시도해 보세요.</translation>
 <translation id="6657585470893396449">비밀번호</translation>
 <translation id="666236282349601348">자동 완성 사용 설정됨</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">완료</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /></translation>
+<translation id="9168839987494597225">비밀번호가 이 기기의 Google 비밀번호 관리자에만 저장됩니다</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ky.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ky.xtb
index dd5c148..34dd269 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ky.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ky.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Сакталган сырсөздөрдү түзмөгүңүздөгү башка колдонмолордо пайдалана аласыз. Алар <ph name="EMAIL" /> аккаунту үчүн Google'дун Сырсөздөрдү башкаргычына сакталат.</translation>
 <translation id="6159839020698489198">кошумча</translation>
 <translation id="6216401132953873625">Жаңы сырсөздү кошуу</translation>
+<translation id="6387994324662817823">Сырсөздөр ушул түзмөктө гана Google Сырсөздөрдү башкаргычка сакталат.</translation>
 <translation id="6539092367496845964">Бир жерден ката кетти. Бир аздан кийин кайталап көрүңүз.</translation>
 <translation id="6657585470893396449">Сырсөз</translation>
 <translation id="666236282349601348">Автотолтуруу күйүк</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lo.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lo.xtb
index 9fd22d1..52e0c0205 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lo.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lo.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">ທ່ານສາມາດໃຊ້ລະຫັດຜ່ານທີ່ບັນທຶກໄວ້ໃນແອັບອື່ນໆຢູ່ອຸປະກອນຂອງທ່ານໄດ້. ພວກມັນຖືກບັນທຶກໄປໃສ່ຕົວຈັດການລະຫັດຜ່ານຂອງ Google ສຳລັບ <ph name="EMAIL" /> ແລ້ວ.</translation>
 <translation id="6159839020698489198">ບໍ່ບັງຄັບ</translation>
 <translation id="6216401132953873625">ເພີ່ມລະຫັດຜ່ານໃໝ່</translation>
+<translation id="6387994324662817823">ລະຫັດຜ່ານແມ່ນຖືກບັນທຶກໄປໃສ່ຕົວຈັດການລະຫັດຜ່ານ Google ຢູ່ອຸປະກອນນີ້ເທົ່ານັ້ນ.</translation>
 <translation id="6539092367496845964">ມີບາງຢ່າງຜິດພາດ. ລອງໃໝ່ໃນພາຍຫລັງ.</translation>
 <translation id="6657585470893396449">ລະຫັດຜ່ານ</translation>
 <translation id="666236282349601348">ເປີດໃຊ້ການຕື່ມຂໍ້ມູນອັດຕະໂນມັດແລ້ວ</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lt.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lt.xtb
index 7261238d..953efaa5 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lt.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lt.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Rodyti slaptažodį</translation>
 <translation id="1870148520156231997">Rodyti slaptažodį</translation>
 <translation id="1977167321677356409">Slaptažodis</translation>
+<translation id="2211969839027957773">„Google“ slaptažodžių tvarkytuvė</translation>
 <translation id="2320166752086256636">Slėpti klaviatūrą</translation>
+<translation id="2489483078139081050">Išsaugotus slaptažodžius galite naudoti kitose įrenginio programose. Jie išsaugomi „Google“ slaptažodžių tvarkytuvėje tik šiame įrenginyje.</translation>
+<translation id="2677128368066534822">Kad sparčiau pasiektumėte slaptažodžius, panaikinkite „iCloud“ slaptažodžių saugyklos pasirinkimą</translation>
 <translation id="2712586044587587728">„Chrome“ slaptažodžius galėsite naudoti kitose programose. Tai bet kada galite išjungti Nustatymų programoje.</translation>
 <translation id="2747003861858887689">Ankstesnis laukas</translation>
 <translation id="3280734926621805458">Naudoti</translation>
 <translation id="3580107423202590938">„Chrome“ slaptažodžių nėra</translation>
 <translation id="368844171100841558">Pakeisti</translation>
+<translation id="3739920431472254679">Slaptažodžiai saugomi „Google“ slaptažodžių tvarkytuvėje, todėl juos galite naudoti bet kuriame įrenginyje.</translation>
 <translation id="3753678329684433031">Automatinis „Chrome“ slaptažodžių pildymas</translation>
 <translation id="3789385946721385622">Naudotojo vardas</translation>
 <translation id="4064278913989596727">Pagalba</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Pasiekite naršyklėje „Chrome“ išsaugotus slaptažodžius iš bet kurios programos.</translation>
 <translation id="579113627088729016">Įjungti automatinį pildymą</translation>
 <translation id="5824290706342306555">Jei norite pradėti, išsaugokite kelis slaptažodžius naršyklėje „Chrome“ arba prisijunkite naudodami „Google“ paskyrą.</translation>
+<translation id="6002340317268558779">Išsaugotus slaptažodžius galite naudoti kitose įrenginio programose. Jie išsaugomi „Google“ slaptažodžių tvarkytuvėje kaip priskirti el. pašto adresui <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">nebūtinas</translation>
 <translation id="6216401132953873625">Naujo slaptažodžio pridėjimas</translation>
+<translation id="6387994324662817823">Slaptažodžiai saugomi „Google“ slaptažodžių tvarkytuvėje tik šiame įrenginyje.</translation>
 <translation id="6539092367496845964">Įvyko klaida. Vėliau bandykite dar kartą.</translation>
 <translation id="6657585470893396449">Slaptažodis</translation>
 <translation id="666236282349601348">Automatinio pildymo funkcija įjungta</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Atlikta</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Skirta <ph name="URL" /></translation>
+<translation id="9168839987494597225">Slaptažodžiai saugomi „Google“ slaptažodžių tvarkytuvėje tik šiame įrenginyje.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lv.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lv.xtb
index 64d5d8cf8..2013561 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lv.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_lv.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Rādīt paroli</translation>
 <translation id="1870148520156231997">Rādīt paroli</translation>
 <translation id="1977167321677356409">Parole</translation>
+<translation id="2211969839027957773">Google paroļu pārvaldnieks</translation>
 <translation id="2320166752086256636">Paslēpt tastatūru</translation>
+<translation id="2489483078139081050">Varat izmantot saglabātās paroles citās lietotnēs savā ierīcē. Tās ir saglabātas Google paroļu pārvaldniekā tikai šajā ierīcē.</translation>
+<translation id="2677128368066534822">Lai ātrāk piekļūtu savām parolēm, noņemiet iCloud Keychain atlasi.</translation>
 <translation id="2712586044587587728">Jūsu Chrome paroles būs pieejamas izmantošanai citās lietotnēs. Varat jebkurā laikā izslēgt šo funkciju lietotnē Iestatījumi.</translation>
 <translation id="2747003861858887689">Iepriekšējais lauks</translation>
 <translation id="3280734926621805458">Lietot</translation>
 <translation id="3580107423202590938">Nav Chrome paroļu</translation>
 <translation id="368844171100841558">Aizstāt</translation>
+<translation id="3739920431472254679">Paroles tiek saglabātas Google paroļu pārvaldniekā, un jūs varat tās izmantot jebkurā ierīcē.</translation>
 <translation id="3753678329684433031">Chrome paroles automātiskā aizpilde</translation>
 <translation id="3789385946721385622">Lietotājvārds</translation>
 <translation id="4064278913989596727">Palīdzība</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">No jebkuras lietotnes piekļūstiet pārlūkā Chrome saglabātajām parolēm.</translation>
 <translation id="579113627088729016">Ieslēgt funkciju AutoFill (Automātiskā aizpilde)</translation>
 <translation id="5824290706342306555">Vispirms saglabājiet paroles pārlūkā Chrome vai pierakstieties Google kontā.</translation>
+<translation id="6002340317268558779">Varat izmantot saglabātās paroles citās lietotnēs savā ierīcē. Tās ir saglabātas Google paroļu pārvaldniekā kontā <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">neobligāts</translation>
 <translation id="6216401132953873625">Jaunas paroles pievienošana</translation>
+<translation id="6387994324662817823">Paroles tiek saglabātas tikai šīs ierīces Google paroļu pārvaldniekā.</translation>
 <translation id="6539092367496845964">Radās kļūda. Vēlāk mēģiniet vēlreiz.</translation>
 <translation id="6657585470893396449">Parole</translation>
 <translation id="666236282349601348">Automātiskā aizpilde ir ieslēgta</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Gatavs</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Vietnei <ph name="URL" /></translation>
+<translation id="9168839987494597225">Paroles tiek saglabātas Google paroļu pārvaldniekā tikai šajā ierīcē.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mk.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mk.xtb
index ad49948a1..fbc9e5b5 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mk.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mk.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Зачуваните лозинки може да ги користите во другите апликации на уредот. Тие се зачувани во „Управникот со лозинки на Google“ за <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">изборно</translation>
 <translation id="6216401132953873625">Додајте нова лозинка</translation>
+<translation id="6387994324662817823">Лозинките се зачувани во „Управникот со лозинки на Google“ само на уредов.</translation>
 <translation id="6539092367496845964">Нешто тргна наопаку. Обидете се повторно подоцна.</translation>
 <translation id="6657585470893396449">Лозинка</translation>
 <translation id="666236282349601348">Автоматското пополнување е вклучено</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ml.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ml.xtb
index fd9f2ff..4476917 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ml.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ml.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">സംരക്ഷിച്ച പാസ്‌വേഡുകൾ നിങ്ങളുടെ ഉപകരണത്തിലെ മറ്റ് ആപ്പുകളിൽ ഉപയോഗിക്കാം. <ph name="EMAIL" /> എന്നതിനുള്ള Google പാസ്‌വേഡ് മാനേജറിൽ അവ സംരക്ഷിക്കുന്നു.</translation>
 <translation id="6159839020698489198">ഓപ്‌ഷണൽ</translation>
 <translation id="6216401132953873625">പുതിയ പാസ്‌വേഡ് ചേർക്കുക</translation>
+<translation id="6387994324662817823">നിങ്ങളുടെ ഈ ഉപകരണത്തിലെ Google പാസ്‌വേഡ് മാനേജറിൽ മാത്രമേ പാസ്‌വേഡുകൾ സംരക്ഷിക്കൂ.</translation>
 <translation id="6539092367496845964">എന്തോ കുഴപ്പം സംഭവിച്ചു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="6657585470893396449">പാസ്‌വേഡ്</translation>
 <translation id="666236282349601348">സ്വയമേവ പൂരിപ്പിക്കൽ ഓണാണ്</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mn.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mn.xtb
index 84728ab6..39bae93 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mn.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mn.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Та төхөөрөмж дээрх бусад аппдаа хадгалсан нууц үгийг ашиглах боломжтой. Тэдгээрийг <ph name="EMAIL" />-д зориулж Google-н Нууц үгний менежерт хадгалдаг.</translation>
 <translation id="6159839020698489198">заавал биш</translation>
 <translation id="6216401132953873625">Шинэ нууц үг нэмэх</translation>
+<translation id="6387994324662817823">Зөвхөн энэ төхөөрөмж дээр нууц үгийг Google-н Нууц үгний менежерт хадгалдаг.</translation>
 <translation id="6539092367496845964">Алдаа гарлаа. Дараа дахин оролдоно уу.</translation>
 <translation id="6657585470893396449">Нууц үг</translation>
 <translation id="666236282349601348">Автоматаар бөглөх хэсэг асаалттай байна</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mr.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mr.xtb
index df8c3ce..190922a6e 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mr.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_mr.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">पासवर्ड दाखवा</translation>
 <translation id="1870148520156231997">पासवर्ड दाखवा</translation>
 <translation id="1977167321677356409">पासवर्ड</translation>
+<translation id="2211969839027957773">Google पासवर्ड व्यवस्थापक</translation>
 <translation id="2320166752086256636">कीबोर्ड लपवा</translation>
+<translation id="2489483078139081050">तुम्ही सेव्ह केलेले पासवर्ड हे तुमच्या डिव्हाइसवरील इतर अ‍ॅप्समध्ये वापरू शकता. ते Google पासवर्ड व्यवस्थापक यामध्ये फक्त या डिव्हाइसवर सेव्ह केले जातात.</translation>
+<translation id="2677128368066534822">तुमचे पासवर्ड आणखी जलद मिळवण्यासाठी, iCloud keychain ची निवड रद्द करा</translation>
 <translation id="2712586044587587728">तुमचे Chrome पासवर्ड इतर अ‍ॅप्समध्ये वापरण्यासाठी उपलब्ध असतील. तुम्ही ते सेटिंग्ज अ‍ॅपमध्ये कधीही बंद करू शकता.</translation>
 <translation id="2747003861858887689">मागील फील्ड</translation>
 <translation id="3280734926621805458">वापरा</translation>
 <translation id="3580107423202590938">Chrome पासवर्ड नाहीत</translation>
 <translation id="368844171100841558">बदला</translation>
+<translation id="3739920431472254679">पासवर्ड हे Google पासवर्ड व्यवस्थापक यामध्ये सेव्ह केले जातात आणि तुम्ही ते कोणत्याही डिव्हाइसवर वापरू शकता.</translation>
 <translation id="3753678329684433031">Chrome पासवर्ड ऑटोफिल करा</translation>
 <translation id="3789385946721385622">वापरकर्ता नाव</translation>
 <translation id="4064278913989596727">मदत</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">तुम्ही Chrome मध्ये सेव्ह करत असलेले पासवर्ड अ‍ॅक्सेस करा.</translation>
 <translation id="579113627088729016">ऑटोफिल सुरू करा</translation>
 <translation id="5824290706342306555">सुरुवात करण्यासाठी, Chrome मध्ये काही पासवर्ड सेव्ह करा किंवा तुमच्या Google खाते ने साइन इन करा.</translation>
+<translation id="6002340317268558779">तुम्ही सेव्ह केलेले पासवर्ड हे तुमच्या डिव्हाइसवरील इतर अ‍ॅप्समध्ये वापरू शकता. ते <ph name="EMAIL" /> साठी Google पासवर्ड व्यवस्थापक यामध्ये सेव्ह केले आहेत.</translation>
 <translation id="6159839020698489198">पर्यायी</translation>
 <translation id="6216401132953873625">नवीन पासवर्ड जोडा</translation>
+<translation id="6387994324662817823">पासवर्ड फक्त या डिव्हाइसवर Google पासवर्ड व्यवस्थापक यामध्ये सेव्ह केले जातात.</translation>
 <translation id="6539092367496845964">काहीतरी चूक झाली. पुन्हा प्रयत्न करा.</translation>
 <translation id="6657585470893396449">पासवर्ड</translation>
 <translation id="666236282349601348">AutoFill सुरू आहे</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">पूर्ण झाले</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> साठी</translation>
+<translation id="9168839987494597225">पासवर्ड हे Google पासवर्ड व्यवस्थापक यामध्ये फक्त या डिव्हाइसवर सेव्ह केले जातात.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ms.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ms.xtb
index a5ae1a4..69c165c 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ms.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ms.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Paparkan Kata Laluan</translation>
 <translation id="1870148520156231997">Dedahkan Kata Laluan</translation>
 <translation id="1977167321677356409">Kata laluan</translation>
+<translation id="2211969839027957773">Pengurus Kata Laluan Google</translation>
 <translation id="2320166752086256636">Sembunyikan papan kekunci</translation>
+<translation id="2489483078139081050">Anda boleh menggunakan kata laluan yang disimpan dalam apl lain pada peranti anda. Kata laluan tersebut disimpan pada Pengurus Kata Laluan Google pada peranti ini sahaja.</translation>
+<translation id="2677128368066534822">Untuk pergi ke kata laluan anda dengan lebih cepat, nyahpilih iCloud keychain</translation>
 <translation id="2712586044587587728">Kata laluan Chrome anda akan tersedia untuk digunakan dalam apl lain. Anda boleh mematikan pilihan ini dalam apl Tetapan pada bila-bila masa.</translation>
 <translation id="2747003861858887689">Medan sebelumnya</translation>
 <translation id="3280734926621805458">Gunakan</translation>
 <translation id="3580107423202590938">Tiada Kata Laluan Chrome</translation>
 <translation id="368844171100841558">Gantikan</translation>
+<translation id="3739920431472254679">Kata laluan disimpan pada Pengurus Kata Laluan Google supaya anda boleh menggunakan kata laluan tersebut pada mana-mana peranti.</translation>
 <translation id="3753678329684433031">Autolengkap Kata Laluan Chrome</translation>
 <translation id="3789385946721385622">Nama pengguna</translation>
 <translation id="4064278913989596727">Bantuan</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Akses kata laluan yang anda simpan di Chrome daripada mana-mana apl.</translation>
 <translation id="579113627088729016">Hidupkan Autolengkap</translation>
 <translation id="5824290706342306555">Untuk bermula, simpan beberapa kata laluan dalam Chrome atau log masuk dengan Akaun Google anda.</translation>
+<translation id="6002340317268558779">Anda boleh menggunakan kata laluan yang disimpan dalam apl lain pada peranti anda. Kata laluan tersebut disimpan pada Pengurus Kata Laluan Google untuk <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">pilihan</translation>
 <translation id="6216401132953873625">Tambah Kata Laluan Baharu</translation>
+<translation id="6387994324662817823">Kata laluan disimpan pada Pengurus Kata Laluan Google pada peranti ini sahaja.</translation>
 <translation id="6539092367496845964">Kesilapan telah berlaku. Cuba sebentar lagi.</translation>
 <translation id="6657585470893396449">Kata laluan</translation>
 <translation id="666236282349601348">Autolengkap dihidupkan</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Selesai</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Untuk <ph name="URL" /></translation>
+<translation id="9168839987494597225">Kata laluan disimpan pada Pengurus Kata Laluan Google pada peranti ini sahaja.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_my.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_my.xtb
index 766413b..2e3ba6c 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_my.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_my.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">သိမ်းထားသော စကားဝှက်များကို သင့်စက်ရှိ အခြားအက်ပ်များတွင် သုံးနိုင်သည်။ ၎င်းတို့ကို <ph name="EMAIL" /> အတွက် ‘Google စကားဝှက်မန်နေဂျာ’ ၌သိမ်းထားသည်။</translation>
 <translation id="6159839020698489198">ချန်လှပ်ထားနိုင်သည်</translation>
 <translation id="6216401132953873625">စကားဝှက်အသစ် ထည့်ပါ</translation>
+<translation id="6387994324662817823">စကားဝှက်များကို ဤစက်တွင်သာရှိသော ‘Google စကားဝှက်မန်နေဂျာ’ သို့ သိမ်းထားသည်။</translation>
 <translation id="6539092367496845964">တစ်ခုခု မှားသွားသည်။ နောက်မှ ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="6657585470893396449">စကားဝှက်</translation>
 <translation id="666236282349601348">အော်တိုဖြည့် ဖွင့်ထားသည်</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ne.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ne.xtb
index 55e3b624..c5f7f29 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ne.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ne.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">पासवर्ड देखाइयोस्</translation>
 <translation id="1870148520156231997">पासवर्ड देखाउनुहोस्</translation>
 <translation id="1977167321677356409">पासवर्ड</translation>
+<translation id="2211969839027957773">Google पासवर्ड म्यानेजर</translation>
 <translation id="2320166752086256636">किबोर्ड लुकाउनुहोस्</translation>
+<translation id="2489483078139081050">तपाईं तपाईंको डिभाइसमा भएका अन्य एपहरूमा पनि सेभ गरिएका पासवर्डहरू प्रयोग गर्न सक्नुहुन्छ। ती पासवर्डहरू यो डिभाइसको Google पासवर्ड म्यानेजरमा मात्र सेभ गरिन्छन्।</translation>
+<translation id="2677128368066534822">तपाईं आफ्ना पासवर्डहरू अझ छिटो प्राप्त गर्न चाहनुहुन्छ भने iCloud keychain को चयन रद्द गर्नुहोस्</translation>
 <translation id="2712586044587587728">Chrome मा सुरक्षित गरिएका तपाईंका पासवर्डहरू अन्य एपहरूमा पनि प्रयोग गर्न सकिने छ। तपाईं सेटिङ एपमा गएर जुनसुकै बेला यो सुविधा निष्क्रिय पार्न सक्नुहुन्छ।</translation>
 <translation id="2747003861858887689">अघिल्लो क्षेत्र</translation>
 <translation id="3280734926621805458">प्रयोग गर्नु…</translation>
 <translation id="3580107423202590938">Chrome मा कुनै पनि पासवर्ड सुरक्षित गरिएको छैन</translation>
 <translation id="368844171100841558">बदल्नुहोस्</translation>
+<translation id="3739920431472254679">पासवर्डहरू Google पासवर्ड म्यानेजरमा सेभ गरिन्छन् र तपाईं ती पासवर्डहरू जुनसुकै डिभाइसमा प्रयोग गर्न सक्नुहुन्छ।</translation>
 <translation id="3753678329684433031">Chrome मा सुरक्षित गरिएको पासवर्ड स्वतः भरियोस्</translation>
 <translation id="3789385946721385622">युजरनेम</translation>
 <translation id="4064278913989596727">मद्दत</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">कुनै पनि एपमार्फत आफूले Chrome मा सुरक्षित गर्नुभएका पासवर्डहरू प्रयोग गर्नुहोस्।</translation>
 <translation id="579113627088729016">अटोफिल अन गर्नुहोस्</translation>
 <translation id="5824290706342306555">सुरु गर्न Chrome मा केही पासवर्डहरू सेभ गर्नुहोस् वा आफ्नो Google खातामा साइन इन गर्नुहोस्।</translation>
+<translation id="6002340317268558779">तपाईं तपाईंको डिभाइसमा भएका अन्य एपहरूमा पनि सेभ गरिएका पासवर्डहरू प्रयोग गर्न सक्नुहुन्छ। ती पासवर्डहरू <ph name="EMAIL" /> को Google पासवर्ड म्यानेजरमा सेभ गरिन्छन्।</translation>
 <translation id="6159839020698489198">ऐच्छिक</translation>
 <translation id="6216401132953873625">नयाँ पासवर्ड हाल्नुहोस्</translation>
+<translation id="6387994324662817823">पासवर्डहरू यो डिभाइसको Google पासवर्ड म्यानेजरमा मात्र सेभ गरिन्छन्।</translation>
 <translation id="6539092367496845964">केही चिज गडबड भयो। पछि फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="6657585470893396449">पासवर्ड</translation>
 <translation id="666236282349601348">अटोफिल अन छ</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">गरियो</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> को साइट</translation>
+<translation id="9168839987494597225">पासवर्डहरू यो डिभाइसको Google पासवर्ड म्यानेजरमा मात्र सेभ गरिन्छन्।</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_nl.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_nl.xtb
index 5b706b2..3ebb761 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_nl.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_nl.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Je kunt opgeslagen wachtwoorden gebruiken in andere apps op je apparaat. Ze worden opgeslagen in Google Wachtwoordmanager voor <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">optioneel</translation>
 <translation id="6216401132953873625">Nieuw wachtwoord toevoegen</translation>
+<translation id="6387994324662817823">Wachtwoorden worden alleen opgeslagen in Google Wachtwoordmanager op dit apparaat.</translation>
 <translation id="6539092367496845964">Er is iets misgegaan. Probeer het later opnieuw.</translation>
 <translation id="6657585470893396449">Wachtwoord</translation>
 <translation id="666236282349601348">Automatisch invullen staat aan</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_no.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_no.xtb
index f9d1894..7704988 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_no.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_no.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Du kan bruke lagrede passord i andre apper på enheten din. De lagres i Google Passordlagring for <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">valgfritt</translation>
 <translation id="6216401132953873625">Legg til nytt passord</translation>
+<translation id="6387994324662817823">Passord lagres i Google Passordlagring kun på denne enheten.</translation>
 <translation id="6539092367496845964">Noe gikk galt. Prøv på nytt senere.</translation>
 <translation id="6657585470893396449">Passord</translation>
 <translation id="666236282349601348">Autofyll er påslått</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_or.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_or.xtb
index 7ee1e3c..e451e77 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_or.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_or.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">ପାସୱାର୍ଡ ଦେଖାନ୍ତୁ</translation>
 <translation id="1870148520156231997">ପାସ୍‌ୱାର୍ଡ ପ୍ରକାଶ କରନ୍ତୁ</translation>
 <translation id="1977167321677356409">ପାସୱାର୍ଡ</translation>
+<translation id="2211969839027957773">Google ପାସୱାର୍ଡ ମ୍ୟାନେଜର</translation>
 <translation id="2320166752086256636">କୀବୋର୍ଡ୍ ଲୁଚାନ୍ତୁ</translation>
+<translation id="2489483078139081050">ଆପଣ ଆପଣଙ୍କ ଡିଭାଇସରେ ଥିବା ଅନ୍ୟ ଆପଗୁଡ଼ିକରେ ସେଭ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରିବେ। ସେଗୁଡ଼ିକ କେବଳ ଏହି ଡିଭାଇସରେ Google ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ସେଭ କରାଯାଏ।</translation>
+<translation id="2677128368066534822">ଆପଣଙ୍କ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଅତି ଶୀଘ୍ର ପାଇବା ପାଇଁ, iCloud କୀଚେନକୁ ଅଚୟନ କରନ୍ତୁ</translation>
 <translation id="2712586044587587728">ଆପଣଙ୍କ Chrome ପାସୱାର୍ଡଗୁଡ଼ିକ ଅନ୍ୟ ଆପଗୁଡ଼ିକରେ ବ୍ୟବହାର କରିବାକୁ ଉପଲବ୍ଧ ହେବ। ଆପଣ ଯେ କୌଣସି ସମୟରେ ଏହାକୁ ସେଟିଂସ୍ ଆପରେ ବନ୍ଦ କରିପାରିବେ।</translation>
 <translation id="2747003861858887689">ପୂର୍ବବର୍ତ୍ତୀ ଫିଲ୍ଡ</translation>
 <translation id="3280734926621805458">ବ୍ୟବହାର କର</translation>
 <translation id="3580107423202590938">କୌଣସି Chrome ପାସୱାର୍ଡ ନାହିଁ</translation>
 <translation id="368844171100841558">ବଦଳାନ୍ତୁ</translation>
+<translation id="3739920431472254679">ପାସୱାର୍ଡଗୁଡ଼ିକ Google ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ସେଭ କରାଯାଏ ଏବଂ ଆପଣ ଯେ କୌଣସି ଡିଭାଇସରେ ସେଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରିବେ।</translation>
 <translation id="3753678329684433031">Chrome ପାସୱାର୍ଡ ସ୍ୱତଃପୂରଣ କରନ୍ତୁ</translation>
 <translation id="3789385946721385622">ଉପଯୋଗକର୍ତ୍ତାନାମ</translation>
 <translation id="4064278913989596727">ସହାୟତା</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">ଆପଣ Chromeରେ ସେଭ୍ କରିଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯେ କୌଣସି ଆପରୁ ଆକ୍ସେସ୍ କରନ୍ତୁ।</translation>
 <translation id="579113627088729016">ସ୍ୱତଃପୂରଣ ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="5824290706342306555">ଆରମ୍ଭ କରିବାକୁ, Chromeରେ କିଛି ପାସୱାର୍ଡ ସେଭ୍ କରନ୍ତୁ କିମ୍ବା ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ ମାଧ୍ୟମରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation>
+<translation id="6002340317268558779">ଆପଣ ଆପଣଙ୍କ ଡିଭାଇସରେ ଥିବା ଅନ୍ୟ ଆପଗୁଡ଼ିକରେ ସେଭ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରିବେ। ସେଗୁଡ଼ିକ <ph name="EMAIL" />ର Google ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ସେଭ କରାଯାଏ।</translation>
 <translation id="6159839020698489198">ଇଚ୍ଛାଧୀନ</translation>
 <translation id="6216401132953873625">ନୂଆ ପାସୱାର୍ଡ ଯୋଗ କରନ୍ତୁ</translation>
+<translation id="6387994324662817823">ଏହି ଡିଭାଇସରେ ପାସୱାର୍ଡଗୁଡ଼ିକ କେବଳ Google ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ସେଭ କରାଯାଏ।</translation>
 <translation id="6539092367496845964">କିଛି ଭୁଲ ହୋଇଗଲା। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="6657585470893396449">ପାସ୍‌ୱର୍ଡ</translation>
 <translation id="666236282349601348">ସ୍ୱତଃପୂରଣ ଚାଲୁ ଅଛି</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">ସମାପ୍ତ ହୋଇଛି</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> ପାଇଁ</translation>
+<translation id="9168839987494597225">ପାସୱାର୍ଡଗୁଡ଼ିକ କେବଳ ଏହି ଡିଭାଇସରେ Google ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ସେଭ କରାଯାଏ।</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pa.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pa.xtb
index 164954c0..fcd5bb62 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pa.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pa.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">ਪਾਸਵਰਡ ਦਿਖਾਓ</translation>
 <translation id="1870148520156231997">ਪਾਸਵਰਡ ਦਿਖਾਓ</translation>
 <translation id="1977167321677356409">ਪਾਸਵਰਡ</translation>
+<translation id="2211969839027957773">Google ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ</translation>
 <translation id="2320166752086256636">ਕੀ-ਬੋਰਡ ਲੁੁਕਾਓ</translation>
+<translation id="2489483078139081050">ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਹੋਰ ਐਪਾਂ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਵਰਤ ਸਕਦੇ ਹੋ। ਉਹ ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ Google ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਗਏ ਹਨ।</translation>
+<translation id="2677128368066534822">ਆਪਣੇ ਪਾਸਵਰਡ ਤੇਜ਼ੀ ਨਾਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, iCloud keychain ਨੂੰ ਅਣ-ਚੁਣਿਆ ਕਰੋ</translation>
 <translation id="2712586044587587728">ਤੁਹਾਡੇ Chrome ਪਾਸਵਰਡ ਹੋਰ ਐਪਾਂ ਵਿੱਚ ਵਰਤਣ ਲਈ ਉਪਲਬਧ ਹੋਣਗੇ। ਤੁਸੀਂ ਕਿਸੇ ਵੇਲੇ ਵੀ ਇਸ ਨੂੰ ਸੈਟਿੰਗਾਂ ਐਪ ਵਿੱਚ ਜਾ ਕੇ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ।</translation>
 <translation id="2747003861858887689">ਪਿਛਲਾ ਖੇਤਰ</translation>
 <translation id="3280734926621805458">ਵਰਤੋ</translation>
 <translation id="3580107423202590938">ਕੋਈ Chrome ਪਾਸਵਰਡ ਨਹੀਂ</translation>
 <translation id="368844171100841558">ਬਦਲੋ</translation>
+<translation id="3739920431472254679">ਪਾਸਵਰਡ Google ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਗਏ ਹਨ ਅਤੇ ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਡੀਵਾਈਸ 'ਤੇ ਵਰਤ ਸਕਦੇ ਹੋ।</translation>
 <translation id="3753678329684433031">ਆਟੋਫਿਲ Chrome ਪਾਸਵਰਡ</translation>
 <translation id="3789385946721385622">ਵਰਤੋਂਕਾਰ ਨਾਮ</translation>
 <translation id="4064278913989596727">ਮਦਦ</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">ਕਿਸੇ ਵੀ ਐਪ ਤੋਂ Chrome ਵਿੱਚ ਆਪਣੇ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰੋ।</translation>
 <translation id="579113627088729016">ਆਟੋਫਿਲ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="5824290706342306555">ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ, ਕੁਝ ਪਾਸਵਰਡ Chrome ਵਿੱਚ ਰੱਖਿਅਤ ਕਰੋ ਜਾਂ ਆਪਣੇ Google ਖਾਤੇ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation>
+<translation id="6002340317268558779">ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਹੋਰ ਐਪਾਂ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਵਰਤ ਸਕਦੇ ਹੋ। ਉਹ <ph name="EMAIL" /> ਦੇ ਲਈ Google ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਗਏ ਹਨ।</translation>
 <translation id="6159839020698489198">ਵਿਕਲਪਿਕ</translation>
 <translation id="6216401132953873625">ਨਵਾਂ ਪਾਸਵਰਡ ਸ਼ਾਮਲ ਕਰੋ</translation>
+<translation id="6387994324662817823">ਪਾਸਵਰਡ ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ Google ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਗਏ ਹਨ।</translation>
 <translation id="6539092367496845964">ਕੋਈ ਗੜਬੜ ਹੋਈ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="6657585470893396449">ਪਾਸਵਰਡ</translation>
 <translation id="666236282349601348">ਆਟੋਫਿਲ ਚਾਲੂ ਹੈ</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">ਹੋ ਗਿਆ</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> ਲਈ</translation>
+<translation id="9168839987494597225">ਪਾਸਵਰਡ ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ Google ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਗਏ ਹਨ।</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pl.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pl.xtb
index 998916b..8e241b1 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pl.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pl.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Zapisanych haseł możesz używać w innych aplikacjach na urządzeniu. Są one zapisane w Menedżerze haseł Google należących do użytkownika <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcjonalnie</translation>
 <translation id="6216401132953873625">Dodaj nowe hasło</translation>
+<translation id="6387994324662817823">Hasła są zapisywane w Menedżerze haseł Google tylko na tym urządzeniu.</translation>
 <translation id="6539092367496845964">Coś poszło nie tak. Spróbuj później.</translation>
 <translation id="6657585470893396449">Hasło</translation>
 <translation id="666236282349601348">Autouzupełnianie jest włączone</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-BR.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-BR.xtb
index 461af71..640d445b 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-BR.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-BR.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Você pode usar as senhas salvas em outros apps no seu dispositivo. Elas são armazenadas do Gerenciador de senhas do Google da conta <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcional</translation>
 <translation id="6216401132953873625">Adicionar nova senha</translation>
+<translation id="6387994324662817823">As senhas são salvas no Gerenciador de senhas do Google somente neste dispositivo.</translation>
 <translation id="6539092367496845964">Algo deu errado. Tente novamente mais tarde.</translation>
 <translation id="6657585470893396449">Senha</translation>
 <translation id="666236282349601348">O Preenchimento Automático está ativado</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-PT.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-PT.xtb
index 7e7c73b..206bc12 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-PT.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_pt-PT.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Mostrar palavra-passe</translation>
 <translation id="1870148520156231997">Mostrar palavra-passe</translation>
 <translation id="1977167321677356409">Palavra-passe</translation>
+<translation id="2211969839027957773">Gestor de palavras-passe da Google</translation>
 <translation id="2320166752086256636">Ocultar teclado</translation>
+<translation id="2489483078139081050">Pode usar palavras-passe guardadas noutras apps no seu dispositivo. São guardadas no Gestor de palavras-passe da Google apenas neste dispositivo.</translation>
+<translation id="2677128368066534822">Para aceder às suas palavras-passe mais rapidamente, desselecione o porta-chaves do iCloud</translation>
 <translation id="2712586044587587728">As suas palavras-passe do Chrome estarão disponíveis para utilizar noutras apps. Pode desativar esta opção na app Definições em qualquer altura.</translation>
 <translation id="2747003861858887689">Campo anterior</translation>
 <translation id="3280734926621805458">Utilizar</translation>
 <translation id="3580107423202590938">Sem palavras-passe do Chrome</translation>
 <translation id="368844171100841558">Substituir</translation>
+<translation id="3739920431472254679">As palavras-passe são guardadas no Gestor de palavras-passe da Google para poder usá-las em qualquer dispositivo.</translation>
 <translation id="3753678329684433031">Preenchimento automático de palavra-passe do Chrome</translation>
 <translation id="3789385946721385622">Nome de utilizador</translation>
 <translation id="4064278913989596727">Ajuda</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Aceda às palavras-passe que guarda no Chrome a partir de qualquer app.</translation>
 <translation id="579113627088729016">Ativar preenchimento automático</translation>
 <translation id="5824290706342306555">Para começar, guarde algumas palavras-passe no Chrome ou inicie sessão com a sua Conta Google.</translation>
+<translation id="6002340317268558779">Pode usar palavras-passe guardadas noutras apps no seu dispositivo. São guardadas no Gestor de palavras-passe da Google de <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcional</translation>
 <translation id="6216401132953873625">Adicione uma nova palavra-passe</translation>
+<translation id="6387994324662817823">As palavras-passe são guardadas no Gestor de palavras-passe da Google apenas neste dispositivo.</translation>
 <translation id="6539092367496845964">Ocorreu um erro. Tente novamente mais tarde.</translation>
 <translation id="6657585470893396449">Palavra-passe</translation>
 <translation id="666236282349601348">O preenchimento automático está ativado</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Concluído</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Para <ph name="URL" /></translation>
+<translation id="9168839987494597225">As palavras-passe são guardadas no Gestor de palavras-passe da Google apenas neste dispositivo.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ro.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ro.xtb
index b81ade9..89f868a 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ro.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ro.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Afișează parola</translation>
 <translation id="1870148520156231997">Afișează parola</translation>
 <translation id="1977167321677356409">Parolă</translation>
+<translation id="2211969839027957773">Manager de parole Google</translation>
 <translation id="2320166752086256636">Ascunde tastatura</translation>
+<translation id="2489483078139081050">Poți să folosești parolele salvate în alte aplicații de pe dispozitiv. Acestea sunt salvate în Managerul de parole Google numai pe acest dispozitiv.</translation>
+<translation id="2677128368066534822">Pentru a accesa mai rapid parolele, debifează iCloud Keychain</translation>
 <translation id="2712586044587587728">Parolele din Chrome vor fi disponibile pentru a fi folosite în alte aplicații. Poți să dezactivezi oricând această opțiune din aplicația Setări.</translation>
 <translation id="2747003861858887689">Câmpul anterior</translation>
 <translation id="3280734926621805458">Folosește</translation>
 <translation id="3580107423202590938">Nu există parole în Chrome</translation>
 <translation id="368844171100841558">Înlocuiește</translation>
+<translation id="3739920431472254679">Parolele sunt salvate în Managerul de parole Google și le poți folosi pe orice dispozitiv.</translation>
 <translation id="3753678329684433031">Completează automat parola Chrome</translation>
 <translation id="3789385946721385622">Nume de utilizator</translation>
 <translation id="4064278913989596727">Ajutor</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Accesează parolele pe care le salvezi în Chrome din orice aplicație.</translation>
 <translation id="579113627088729016">Activează completarea automată</translation>
 <translation id="5824290706342306555">Pentru a începe, salvează câteva parole în Chrome sau conectează-te cu Contul Google.</translation>
+<translation id="6002340317268558779">Poți să folosești parolele salvate în alte aplicații de pe dispozitiv. Acestea sunt salvate în Managerul de parole Google pentru <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opțional</translation>
 <translation id="6216401132953873625">Adaugă o parolă nouă</translation>
+<translation id="6387994324662817823">Parolele sunt salvate în Managerul de parole Google numai pe acest dispozitiv.</translation>
 <translation id="6539092367496845964">A apărut o eroare. Încearcă din nou mai târziu.</translation>
 <translation id="6657585470893396449">Parolă</translation>
 <translation id="666236282349601348">Completarea automată este activată</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Terminat</translation>
 <translation id="8877181643142698531">Adresa URL</translation>
 <translation id="9069288651897538648">Pentru <ph name="URL" /></translation>
+<translation id="9168839987494597225">Parolele sunt salvate în Managerul de parole Google numai pe acest dispozitiv.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ru.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ru.xtb
index 90290b3..d5c147e 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ru.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ru.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Показать пароль</translation>
 <translation id="1870148520156231997">Показать пароль</translation>
 <translation id="1977167321677356409">Пароль</translation>
+<translation id="2211969839027957773">Диспетчер паролей Google</translation>
 <translation id="2320166752086256636">Скрыть клавиатуру</translation>
+<translation id="2489483078139081050">Вы можете использовать сохраненные пароли в других установленных приложениях. Они сохраняются в Диспетчере паролей Google и доступны только на этом устройстве.</translation>
+<translation id="2677128368066534822">Чтобы получать пароли быстрее, отмените выбор связки ключей iCloud.</translation>
 <translation id="2712586044587587728">Пароли, сохраненные в Chrome, можно использовать в других приложениях. Эту функцию можно в любое время отключить в приложении "Настройки".</translation>
 <translation id="2747003861858887689">Предыдущее поле</translation>
 <translation id="3280734926621805458">Выбрать</translation>
 <translation id="3580107423202590938">Нет паролей Chrome</translation>
 <translation id="368844171100841558">Заменить</translation>
+<translation id="3739920431472254679">Пароли сохраняются в Диспетчере паролей Google и синхронизируются на всех устройствах</translation>
 <translation id="3753678329684433031">Автозаполнение пароля из Chrome</translation>
 <translation id="3789385946721385622">Имя пользователя</translation>
 <translation id="4064278913989596727">Справка</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Используйте пароли, сохраненные в Chrome, в любом приложении.</translation>
 <translation id="579113627088729016">Включить автозаполнение</translation>
 <translation id="5824290706342306555">Сохраните какие-нибудь пароли в Chrome или войдите, используя аккаунт Google.</translation>
+<translation id="6002340317268558779">Вы можете использовать сохраненные пароли в других установленных приложениях. Они сохраняются в Диспетчере паролей Google для аккаунта <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">(необязательно)</translation>
 <translation id="6216401132953873625">Добавление пароля</translation>
+<translation id="6387994324662817823">Пароли сохранены в Google Диспетчере паролей только на этом устройстве.</translation>
 <translation id="6539092367496845964">Произошла ошибка. Повторите попытку позже.</translation>
 <translation id="6657585470893396449">Пароль</translation>
 <translation id="666236282349601348">Автозаполнение включено</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Готово</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Для сайта <ph name="URL" /></translation>
+<translation id="9168839987494597225">Пароли сохраняются в Диспетчере паролей Google и доступны только на этом устройстве</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_si.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_si.xtb
index 7f889d4f..96490bf 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_si.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_si.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">ඔබට ඔබගේ උපාංගයේ වෙනත් යෙදුම්වල සුරැකි මුරපද භාවිත කළ හැකිය. ඒවා <ph name="EMAIL" /> සඳහා වන Google මුරපද කළමනාකරු තුළ සුරැකේ.</translation>
 <translation id="6159839020698489198">විකල්පමය</translation>
 <translation id="6216401132953873625">නව මුරපදය එක් කරන්න</translation>
+<translation id="6387994324662817823">මුරපද මෙම උපාංගයේ Google මුරපද කළමනාකරු තුළ පමණක් සුරැකේ.</translation>
 <translation id="6539092367496845964">යම් දෙයක් වැරදිණි. පසුව නැවත උත්සාහ කරන්න.</translation>
 <translation id="6657585470893396449">මුරපදය</translation>
 <translation id="666236282349601348">ස්වයං පිරවුම ක්‍රියාත්මකයි</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sk.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sk.xtb
index 3ccb5ca..660a695b 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sk.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sk.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Uložené heslá môžete používať v ďalších aplikáciách v zariadení. Sú uložené v správcovi hesiel Google v účte <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">nepovinné</translation>
 <translation id="6216401132953873625">Pridanie nového hesla</translation>
+<translation id="6387994324662817823">Heslá sa ukladajú do správcu hesiel od Googlu iba v tomto zariadení.</translation>
 <translation id="6539092367496845964">Vyskytol sa problém. Skúste to neskôr.</translation>
 <translation id="6657585470893396449">Heslo</translation>
 <translation id="666236282349601348">Automatické dopĺňanie je zapnuté</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sl.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sl.xtb
index dfa16cd..db9a6bc 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sl.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sl.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Shranjena gesla lahko uporabljate v drugih aplikacijah v napravi. V Google Upravitelju gesel so shranjena za račun <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">izbirno</translation>
 <translation id="6216401132953873625">Dodajanje novega gesla</translation>
+<translation id="6387994324662817823">Gesla so shranjena v Google Upravitelju gesel samo v tej napravi.</translation>
 <translation id="6539092367496845964">Prišlo je do napake. Poskusite znova pozneje.</translation>
 <translation id="6657585470893396449">Geslo</translation>
 <translation id="666236282349601348">Samodejno izpolnjevanje je vklopljeno</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sq.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sq.xtb
index 93656d6..b6cda693 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sq.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sq.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Shfaq fjalëkalimin</translation>
 <translation id="1870148520156231997">Zbulo fjalëkalimin</translation>
 <translation id="1977167321677356409">Fjalëkalimi</translation>
+<translation id="2211969839027957773">Menaxheri i fjalëkalimeve i Google</translation>
 <translation id="2320166752086256636">Fshih tastierën</translation>
+<translation id="2489483078139081050">Mund t'i përdorësh fjalëkalimet e ruajtura në aplikacione të tjera në pajisjen tënde. Ato janë të ruajtura në "Menaxherin e fjalëkalimeve" të Google vetëm në këtë pajisje.</translation>
+<translation id="2677128368066534822">Për t'i marrë më shpejt fjalëkalimet, hiq përzgjedhjen e iCloud Keychain</translation>
 <translation id="2712586044587587728">Fjalëkalimet e tua të Chrome do të ofrohen për përdorim në aplikacione të tjera. Këtë mund ta çaktivizosh në çdo kohë tek aplikacioni "Cilësimet".</translation>
 <translation id="2747003861858887689">Fusha e mëparshme</translation>
 <translation id="3280734926621805458">Përdor</translation>
 <translation id="3580107423202590938">Nuk ka asnjë fjalëkalim të Chrome</translation>
 <translation id="368844171100841558">Zëvendëso</translation>
+<translation id="3739920431472254679">Fjalëkalimet ruhen në "Menaxherin e fjalëkalimeve" të Google në mënyrë që t'i përdorësh ato në çdo pajisje.</translation>
 <translation id="3753678329684433031">Plotëso automatikisht fjalëkalimin e Chrome</translation>
 <translation id="3789385946721385622">Emri i përdoruesit</translation>
 <translation id="4064278913989596727">Ndihma</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Qasu në fjalëkalimet që ruan në Chrome nga çdo aplikacion.</translation>
 <translation id="579113627088729016">Aktivizo "Plotësimin automatik"</translation>
 <translation id="5824290706342306555">Për të filluar, ruaj disa fjalëkalime në Chrome ose identifikohu me "Llogarinë tënde të Google".</translation>
+<translation id="6002340317268558779">Mund t'i përdorësh fjalëkalimet e ruajtura në aplikacione të tjera në pajisjen tënde. Ato janë të ruajtura në "Menaxherin e fjalëkalimeve" të Google për <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opsionale</translation>
 <translation id="6216401132953873625">Shto fjalëkalim të ri</translation>
+<translation id="6387994324662817823">Fjalëkalimet ruhen në "Menaxherin e fjalëkalimeve" të Google vetëm në këtë pajisje.</translation>
 <translation id="6539092367496845964">Ndodhi një gabim. Provo përsëri më vonë.</translation>
 <translation id="6657585470893396449">Fjalëkalimi</translation>
 <translation id="666236282349601348">"Plotësimi automatik" është aktiv</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">U krye</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Për <ph name="URL" /></translation>
+<translation id="9168839987494597225">Fjalëkalimet ruhen në "Menaxherin e fjalëkalimeve" të Google vetëm në këtë pajisje.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr-Latn.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr-Latn.xtb
index 6a3aa66..297ecf2 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr-Latn.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr-Latn.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Prikaži lozinku</translation>
 <translation id="1870148520156231997">Prikažite lozinku</translation>
 <translation id="1977167321677356409">Lozinka</translation>
+<translation id="2211969839027957773">Google menadžer lozinki</translation>
 <translation id="2320166752086256636">Sakrij tastaturu</translation>
+<translation id="2489483078139081050">Možete da koristite sačuvane lozinke u drugim aplikacijama na uređaju. Čuvaju se u Google menadžeru lozinki samo na ovom uređaju.</translation>
+<translation id="2677128368066534822">Da biste brže pristupali lozinkama, poništite izbor iCloud sistema za upravljanje lozinkama</translation>
 <translation id="2712586044587587728">Moći ćete da koristite Chrome lozinke u drugim aplikacijama. Ovo možete da isključite u bilo kom trenutku u aplikaciji Podešavanja.</translation>
 <translation id="2747003861858887689">Prethodno polje</translation>
 <translation id="3280734926621805458">Koristi</translation>
 <translation id="3580107423202590938">Nema lozinki za Chrome</translation>
 <translation id="368844171100841558">Zameni</translation>
+<translation id="3739920431472254679">Lozinke se čuvaju u Google menadžeru lozinki da biste mogli da ih koristite na bilo kom uređaju.</translation>
 <translation id="3753678329684433031">Automatsko popunjavanje lozinke za Chrome</translation>
 <translation id="3789385946721385622">Korisničko ime</translation>
 <translation id="4064278913989596727">Pomoć</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Pristupajte lozinkama koje čuvate u Chrome-u iz bilo koje aplikacije.</translation>
 <translation id="579113627088729016">Uključi automatsko popunjavanje</translation>
 <translation id="5824290706342306555">Da biste počeli, sačuvajte neke lozinke u Chrome-u ili se prijavite pomoću Google naloga.</translation>
+<translation id="6002340317268558779">Možete da koristite sačuvane lozinke u drugim aplikacijama na uređaju. Čuvaju se u Google menadžeru lozinki za <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">opcionalno</translation>
 <translation id="6216401132953873625">Dodajte novu lozinku</translation>
+<translation id="6387994324662817823">Lozinke se čuvaju u Google menadžeru lozinki samo na ovom uređaju.</translation>
 <translation id="6539092367496845964">Nešto nije u redu. Probajte ponovo kasnije.</translation>
 <translation id="6657585470893396449">Lozinka</translation>
 <translation id="666236282349601348">Automatsko popunjavanje je uključeno</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Gotovo</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Za <ph name="URL" /></translation>
+<translation id="9168839987494597225">Lozinke se čuvaju u Google menadžeru lozinki samo na ovom uređaju.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr.xtb
index 44a919a..b10367b 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sr.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Прикажи лозинку</translation>
 <translation id="1870148520156231997">Прикажите лозинку</translation>
 <translation id="1977167321677356409">Лозинка</translation>
+<translation id="2211969839027957773">Google менаџер лозинки</translation>
 <translation id="2320166752086256636">Сакриј тастатуру</translation>
+<translation id="2489483078139081050">Можете да користите сачуване лозинке у другим апликацијама на уређају. Чувају се у Google менаџеру лозинки само на овом уређају.</translation>
+<translation id="2677128368066534822">Да бисте брже приступали лозинкама, поништите избор iCloud система за управљање лозинкама</translation>
 <translation id="2712586044587587728">Моћи ћете да користите Chrome лозинке у другим апликацијама. Ово можете да искључите у било ком тренутку у апликацији Подешавања.</translation>
 <translation id="2747003861858887689">Претходно поље</translation>
 <translation id="3280734926621805458">Користи</translation>
 <translation id="3580107423202590938">Нема лозинки за Chrome</translation>
 <translation id="368844171100841558">Замени</translation>
+<translation id="3739920431472254679">Лозинке се чувају у Google менаџеру лозинки да бисте могли да их користите на било ком уређају.</translation>
 <translation id="3753678329684433031">Аутоматско попуњавање лозинке за Chrome</translation>
 <translation id="3789385946721385622">Корисничко име</translation>
 <translation id="4064278913989596727">Помоћ</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Приступајте лозинкама које чувате у Chrome-у из било које апликације.</translation>
 <translation id="579113627088729016">Укључи аутоматско попуњавање</translation>
 <translation id="5824290706342306555">Да бисте почели, сачувајте неке лозинке у Chrome-у или се пријавите помоћу Google налога.</translation>
+<translation id="6002340317268558779">Можете да користите сачуване лозинке у другим апликацијама на уређају. Чувају се у Google менаџеру лозинки за <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">опционално</translation>
 <translation id="6216401132953873625">Додајте нову лозинку</translation>
+<translation id="6387994324662817823">Лозинке се чувају у Google менаџеру лозинки само на овом уређају.</translation>
 <translation id="6539092367496845964">Нешто није у реду. Пробајте поново касније.</translation>
 <translation id="6657585470893396449">Лозинка</translation>
 <translation id="666236282349601348">Аутоматско попуњавање је укључено</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Готово</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">За <ph name="URL" /></translation>
+<translation id="9168839987494597225">Лозинке се чувају у Google менаџеру лозинки само на овом уређају.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sv.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sv.xtb
index 3f399b58..a32794a8 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sv.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sv.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Visa lösenord</translation>
 <translation id="1870148520156231997">Visa lösenord</translation>
 <translation id="1977167321677356409">Lösenord</translation>
+<translation id="2211969839027957773">Google Lösenordshantering</translation>
 <translation id="2320166752086256636">Dölj tangentbordet</translation>
+<translation id="2489483078139081050">Du kan använda lösenorden du har sparat i andra appar på enheten. De sparas med Google Lösenordshantering endast på den här enheten.</translation>
+<translation id="2677128368066534822">Avmarkera iClouds nyckelhanterare så får du dina lösenord snabbare</translation>
 <translation id="2712586044587587728">Du kan använda lösenorden i Chrome i andra appar. Du kan inaktivera detta i appen Inställningar när du vill.</translation>
 <translation id="2747003861858887689">Föregående fält</translation>
 <translation id="3280734926621805458">Använd</translation>
 <translation id="3580107423202590938">Inga lösenord i Chrome</translation>
 <translation id="368844171100841558">Ersätt</translation>
+<translation id="3739920431472254679">Lösenorden sparas med Google Lösenordshantering så att du kan använda dem på vilken enhet som helst.</translation>
 <translation id="3753678329684433031">Autofyll lösenord i Chrome</translation>
 <translation id="3789385946721385622">Användarnamn</translation>
 <translation id="4064278913989596727">Hjälp</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Få åtkomst till lösenord som du har sparat i Chrome via vilken app som helst.</translation>
 <translation id="579113627088729016">Aktivera autofyll</translation>
 <translation id="5824290706342306555">Kom igång genom att spara några lösenord i Chrome eller logga in på Google-kontot.</translation>
+<translation id="6002340317268558779">Du kan använda lösenorden du har sparat i andra appar på enheten. De sparas i Google Lösenordshantering för <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">valfritt</translation>
 <translation id="6216401132953873625">Lägg till nytt lösenord</translation>
+<translation id="6387994324662817823">Lösenorden sparas med Google Lösenordshantering endast på den här enheten.</translation>
 <translation id="6539092367496845964">Något gick fel. Försök igen senare.</translation>
 <translation id="6657585470893396449">Lösenord</translation>
 <translation id="666236282349601348">Autofyll har aktiverats</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Klart</translation>
 <translation id="8877181643142698531">Webbadress</translation>
 <translation id="9069288651897538648">För <ph name="URL" /></translation>
+<translation id="9168839987494597225">Lösenorden sparas med Google Lösenordshantering endast på den här enheten.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sw.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sw.xtb
index c4f7b08..bfd94292 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sw.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_sw.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Onyesha Nenosiri</translation>
 <translation id="1870148520156231997">Fichua Nenosiri</translation>
 <translation id="1977167321677356409">Nenosiri</translation>
+<translation id="2211969839027957773">Kidhibiti cha Manenosiri cha Google</translation>
 <translation id="2320166752086256636">Ficha kibodi</translation>
+<translation id="2489483078139081050">Unaweza kutumia manenosiri uliyohifadhi katika programu zingine kwenye kifaa chako. Manenosiri hayo huhifadhiwa kwenye Kidhibiti cha Manenosiri cha Google kwenye kifaa hiki tu.</translation>
+<translation id="2677128368066534822">Ili upate manenosiri yako kwa haraka zaidi, acha kuchagua mfumo wa manenosiri wa iCloud</translation>
 <translation id="2712586044587587728">Nenosiri lako la Chrome litaweza kutumiwa kwenye programu zingine. Unaweza kuzima hali hii kwenye programu ya Mipangilio wakati wowote.</translation>
 <translation id="2747003861858887689">Sehemu iliyotangulia</translation>
 <translation id="3280734926621805458">Tumia</translation>
 <translation id="3580107423202590938">Hamna Manenosiri ya Chrome</translation>
 <translation id="368844171100841558">Badilisha</translation>
+<translation id="3739920431472254679">Manenosiri huhifadhiwa kwenye Kidhibiti cha Manenosiri cha Google na unaweza kuyatumia kwenye kifaa chochote.</translation>
 <translation id="3753678329684433031">Jaza Kiotomatiki Nenosiri la Chrome</translation>
 <translation id="3789385946721385622">Jina la mtumiaji</translation>
 <translation id="4064278913989596727">Usaidizi</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Fikia manenosiri unayohifadhi katika Chrome kwenye programu yoyote.</translation>
 <translation id="579113627088729016">Washa kipengele cha Kujaza Kiotomatiki</translation>
 <translation id="5824290706342306555">Ili uanze, hifadhi baadhi ya manenosiri kwenye Chrome au uingie ukitumia Akaunti yako ya Google.</translation>
+<translation id="6002340317268558779">Unaweza kutumia manenosiri uliyohifadhi katika programu zingine kwenye kifaa chako. Manenosiri hayo huhifadhiwa kwenye Kidhibiti cha Manenosiri cha Google kwa ajili ya <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">si lazima</translation>
 <translation id="6216401132953873625">Weka Nenosiri Jipya</translation>
+<translation id="6387994324662817823">Manenosiri huhifadhiwa kwenye Kidhibiti cha Manenosiri cha Google kwenye kifaa hiki tu.</translation>
 <translation id="6539092367496845964">Hitilafu fulani imetokea. Jaribu tena baadaye.</translation>
 <translation id="6657585470893396449">Nenosiri</translation>
 <translation id="666236282349601348">Kipengele cha kujaza kiotomatiki kimewashwa</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Nimemaliza</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /></translation>
+<translation id="9168839987494597225">Manenosiri huhifadhiwa kwenye Kidhibiti cha Manenosiri cha Google kwenye kifaa hiki tu.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ta.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ta.xtb
index 1974572..6ed64c28 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ta.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ta.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">கடவுச்சொல்லைக் காட்டு</translation>
 <translation id="1870148520156231997">கடவுச்சொல்லைக் காட்டும்</translation>
 <translation id="1977167321677356409">கடவுச்சொல்</translation>
+<translation id="2211969839027957773">Google கடவுச்சொல் நிர்வாகி</translation>
 <translation id="2320166752086256636">கீபோர்டை மறை</translation>
+<translation id="2489483078139081050">சேமிக்கப்பட்டுள்ள கடவுச்சொற்களை உங்கள் சாதனத்தில் உள்ள பிற ஆப்ஸில் பயன்படுத்தலாம். அவை இந்தச் சாதனத்தில் உள்ள Google கடவுச்சொல் நிர்வாகியில் மட்டுமே சேமிக்கப்படும்.</translation>
+<translation id="2677128368066534822">கடவுச்சொற்களை விரைவாகப் பெற, iCloud keychainனைத் தேர்வு நீக்கவும்</translation>
 <translation id="2712586044587587728">Chromeமில் சேமிக்கப்பட்டுள்ள உங்கள் கடவுச்சொற்களைப் பிற ஆப்ஸில் பயன்படுத்த முடியும். இதை ‘அமைப்புகள்’ ஆப்ஸில் எப்போது வேண்டுமானாலும் முடக்கலாம்.</translation>
 <translation id="2747003861858887689">முந்தைய புலம்</translation>
 <translation id="3280734926621805458">பயன்படுத்து</translation>
 <translation id="3580107423202590938">Chrome கடவுச்சொற்கள் எதுவுமில்லை</translation>
 <translation id="368844171100841558">மாற்று</translation>
+<translation id="3739920431472254679">எந்தச் சாதனத்திலும் பயன்படுத்தும் வகையில் Google கடவுச்சொல் நிர்வாகியில் கடவுச்சொற்கள் சேமிக்கப்படும்.</translation>
 <translation id="3753678329684433031">Chrome கடவுச்சொல்லைத் தன்னிரப்புதல்</translation>
 <translation id="3789385946721385622">பயனர்பெயர்</translation>
 <translation id="4064278913989596727">உதவி</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Chromeமில் நீங்கள் சேமித்துள்ள கடவுச்சொற்களை எந்த ஆப்ஸிலிருந்தும் அணுகலாம்.</translation>
 <translation id="579113627088729016">தன்னிரப்பி அம்சத்தை இயக்கு</translation>
 <translation id="5824290706342306555">தொடங்க, Chromeமில் சில கடவுச்சொற்களைச் சேமிக்கவும் அல்லது உங்கள் Google கணக்கு மூலம் உள்நுழையவும்.</translation>
+<translation id="6002340317268558779">சேமிக்கப்பட்டுள்ள கடவுச்சொற்களை உங்கள் சாதனத்தில் உள்ள பிற ஆப்ஸில் பயன்படுத்தலாம். அவை <ph name="EMAIL" /> கணக்கிற்கான Google கடவுச்சொல் நிர்வாகியில் சேமிக்கப்படும்.</translation>
 <translation id="6159839020698489198">விரும்பினால்</translation>
 <translation id="6216401132953873625">புதிய கடவுச்சொல்லைச் சேருங்கள்</translation>
+<translation id="6387994324662817823">இந்தச் சாதனத்தில் மட்டுமே உள்ள Google கடவுச்சொல் நிர்வாகியில் கடவுச்சொற்கள் சேமிக்கப்படுகின்றன.</translation>
 <translation id="6539092367496845964">ஏதோ தவறாகிவிட்டது. பிறகு முயலவும்.</translation>
 <translation id="6657585470893396449">கடவுச்சொல்</translation>
 <translation id="666236282349601348">தன்னிரப்பி இயக்கப்பட்டுள்ளது</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">முடிந்தது</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> தளத்திற்கு</translation>
+<translation id="9168839987494597225">இந்தச் சாதனத்தில் உள்ள Google கடவுச்சொல் நிர்வாகியில் மட்டுமே கடவுச்சொற்கள் சேமிக்கப்படும்.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb
index 6e7e4af..e5e2697e 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">మీరు మీ పరికరంలోని ఇతర యాప్‌లలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు. <ph name="EMAIL" /> కోసం అవి Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడతాయి.</translation>
 <translation id="6159839020698489198">ఆప్షనల్</translation>
 <translation id="6216401132953873625">కొత్త పాస్‌వర్డ్‌ను జోడించండి</translation>
+<translation id="6387994324662817823">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google పాస్‌వర్డ్ మేనేజర్‌లో మాత్రమే సేవ్ చేయబడతాయి.</translation>
 <translation id="6539092367496845964">ఏదో తప్పు జరిగింది. తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="6657585470893396449">పాస్‌వర్డ్</translation>
 <translation id="666236282349601348">ఆటోఫిల్ ఆన్‌లో ఉంది</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_th.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_th.xtb
index 776e3f5..26cfd29a 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_th.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_th.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">คุณใช้รหัสผ่านที่บันทึกไว้ได้ในแอปอื่นๆ บนอุปกรณ์ โดยจะบันทึกอยู่ในเครื่องมือจัดการรหัสผ่านของ Google สำหรับ <ph name="EMAIL" /></translation>
 <translation id="6159839020698489198">ไม่บังคับ</translation>
 <translation id="6216401132953873625">เพิ่มรหัสผ่านใหม่</translation>
+<translation id="6387994324662817823">รหัสผ่านจะบันทึกอยู่ในเครื่องมือจัดการรหัสผ่านของ Google ในอุปกรณ์นี้เท่านั้น</translation>
 <translation id="6539092367496845964">เกิดข้อผิดพลาด ลองอีกครั้งภายหลัง</translation>
 <translation id="6657585470893396449">รหัสผ่าน</translation>
 <translation id="666236282349601348">การป้อนอัตโนมัติเปิดอยู่</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_tr.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_tr.xtb
index 013df06a..56cb995 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_tr.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_tr.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Şifreyi Göster</translation>
 <translation id="1870148520156231997">Şifreyi Göster</translation>
 <translation id="1977167321677356409">Şifre</translation>
+<translation id="2211969839027957773">Google Şifre Yöneticisi</translation>
 <translation id="2320166752086256636">Klavyeyi gizle</translation>
+<translation id="2489483078139081050">Kayıtlı şifrelerinizi cihazınızdaki diğer uygulamalarda kullanabilirsiniz. Şifreler yalnızca bu cihazda Google Şifre Yöneticisi'ne kaydedilir.</translation>
+<translation id="2677128368066534822">Şifrelerinize daha hızlı ulaşmak için iCloud keychain'in seçimini kaldırın</translation>
 <translation id="2712586044587587728">Chrome şifreleriniz diğer uygulamalarda kullanılabilir. Bu özelliği istediğiniz zaman Ayarlar uygulamasından kapatabilirsiniz.</translation>
 <translation id="2747003861858887689">Önceki alan</translation>
 <translation id="3280734926621805458">Kullan</translation>
 <translation id="3580107423202590938">Chrome Şifresi Yok</translation>
 <translation id="368844171100841558">Değiştir</translation>
+<translation id="3739920431472254679">Şifreler herhangi bir cihazda kullanabilmeniz için Google Şifre Yöneticisi'ne kaydedilir.</translation>
 <translation id="3753678329684433031">Chrome Şifresini Otomatik Doldur</translation>
 <translation id="3789385946721385622">Kullanıcı adı</translation>
 <translation id="4064278913989596727">Yardım</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Chrome'da kaydettiğiniz şifrelere tüm uygulamalardan erişin.</translation>
 <translation id="579113627088729016">Otomatik doldurma'yı aç</translation>
 <translation id="5824290706342306555">Başlamak için bazı şifreleri Chrome'da kaydedin veya Google Hesabınızla oturum açın.</translation>
+<translation id="6002340317268558779">Kayıtlı şifrelerinizi cihazınızdaki diğer uygulamalarda kullanabilirsiniz. Şifreleriniz <ph name="EMAIL" /> için Google Şifre Yöneticisi'ne kaydedilir.</translation>
 <translation id="6159839020698489198">isteğe bağlı</translation>
 <translation id="6216401132953873625">Yeni Şifre Ekle</translation>
+<translation id="6387994324662817823">Şifreler yalnızca bu cihazda Google Şifre Yöneticisi'ne kaydedilir.</translation>
 <translation id="6539092367496845964">Bir sorun oldu. Daha sonra tekrar deneyin.</translation>
 <translation id="6657585470893396449">Şifre</translation>
 <translation id="666236282349601348">Otomatik Doldur açık</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Bitti</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> için</translation>
+<translation id="9168839987494597225">Şifreler yalnızca bu cihazda Google Şifre Yöneticisi'ne kaydedilir.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uk.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uk.xtb
index bf01606..4ed6f67 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uk.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uk.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Ви можете використовувати збережені паролі в інших додатках на пристрої. Вони зберігаються в Менеджері паролів Google для електронної адреси <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">необов’язково</translation>
 <translation id="6216401132953873625">Додайте новий пароль</translation>
+<translation id="6387994324662817823">Паролі збережено в Менеджері паролів Google лише на цьому пристрої.</translation>
 <translation id="6539092367496845964">Сталася помилка. Спробуйте пізніше.</translation>
 <translation id="6657585470893396449">Пароль</translation>
 <translation id="666236282349601348">Автозаповнення ввімкнено</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ur.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ur.xtb
index ab51dae..c7b0f3be 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ur.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_ur.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">‏آپ اپنے آلے پر دیگر ایپس میں محفوظ کردہ پاس ورڈز استعمال کر سکتے ہیں۔ وہ <ph name="EMAIL" /> کے لیے Google پاس ورڈ مینیجر میں محفوظ ہوتے ہیں۔</translation>
 <translation id="6159839020698489198">اختیاری</translation>
 <translation id="6216401132953873625">نیا پاس ورڈ شامل کریں</translation>
+<translation id="6387994324662817823">‏پاس ورڈز صرف اس آلہ پر Google پاس ورڈ مینیجر میں محفوظ کیے جاتے ہیں۔</translation>
 <translation id="6539092367496845964">کچھ غلط ہو گیا۔ بعد میں دوبارہ کوشش کریں۔</translation>
 <translation id="6657585470893396449">پاس ورڈ</translation>
 <translation id="666236282349601348">‏AutoFill آن ہے</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uz.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uz.xtb
index d7e9ae5..e14ed92 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uz.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_uz.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Qurilmada saqlangan parollarni boshqa ilovalarda ham ishlatish mumkin. Ular Google Parollar menejerida <ph name="EMAIL" /> hisobiga saqlangan.</translation>
 <translation id="6159839020698489198">ixtiyoriy</translation>
 <translation id="6216401132953873625">Yangi parol kiritish</translation>
+<translation id="6387994324662817823">Parollar faqat shu qurilmadagi Google Parollar menejeriga saqlanadi.</translation>
 <translation id="6539092367496845964">Xatolik yuz berdi. Keyinroq qaytadan urining.</translation>
 <translation id="6657585470893396449">Parol</translation>
 <translation id="666236282349601348">Avtomatik kiritish yoniq</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_vi.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_vi.xtb
index b3122d1..8f9c01d 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_vi.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_vi.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">Hiện mật khẩu</translation>
 <translation id="1870148520156231997">Hiện mật khẩu</translation>
 <translation id="1977167321677356409">Mật khẩu</translation>
+<translation id="2211969839027957773">Trình quản lý mật khẩu của Google</translation>
 <translation id="2320166752086256636">Ẩn bàn phím</translation>
+<translation id="2489483078139081050">Bạn có thể sử dụng mật khẩu đã lưu trong các ứng dụng khác trên thiết bị của bạn. Những mật khẩu này chỉ được lưu vào Trình quản lý mật khẩu của Google trên thiết bị này.</translation>
+<translation id="2677128368066534822">Để truy cập mật khẩu của bạn nhanh hơn, hãy bỏ chọn hệ thống quản lý mật khẩu iCloud Keychain</translation>
 <translation id="2712586044587587728">Bạn có thể dùng mật khẩu của mình trên Chrome cho các ứng dụng khác. Bạn có thể tắt tùy chọn này bất cứ lúc nào trong ứng dụng Cài đặt.</translation>
 <translation id="2747003861858887689">Trường trước</translation>
 <translation id="3280734926621805458">Sử dụng</translation>
 <translation id="3580107423202590938">Không có mật khẩu trên Chrome</translation>
 <translation id="368844171100841558">Thay thế</translation>
+<translation id="3739920431472254679">Mật khẩu được lưu vào Trình quản lý mật khẩu của Google để bạn có thể dùng trên mọi thiết bị.</translation>
 <translation id="3753678329684433031">Tự động điền mật khẩu trên Chrome</translation>
 <translation id="3789385946721385622">Tên người dùng</translation>
 <translation id="4064278913989596727">Trợ giúp</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">Xem các mật khẩu bạn lưu trong Chrome trên bất kỳ ứng dụng nào.</translation>
 <translation id="579113627088729016">Bật tính năng Tự động điền</translation>
 <translation id="5824290706342306555">Để bắt đầu, hãy lưu một số mật khẩu trong Chrome hoặc đăng nhập bằng Tài khoản Google của bạn.</translation>
+<translation id="6002340317268558779">Bạn có thể sử dụng mật khẩu đã lưu trong các ứng dụng khác trên thiết bị của bạn. Những mật khẩu này được lưu vào Trình quản lý mật khẩu của Google cho tài khoản <ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">không bắt buộc</translation>
 <translation id="6216401132953873625">Thêm mật khẩu mới</translation>
+<translation id="6387994324662817823">Chỉ lưu mật khẩu vào Trình quản lý mật khẩu của Google trên thiết bị này.</translation>
 <translation id="6539092367496845964">Đã xảy ra lỗi. Hãy thử lại sau.</translation>
 <translation id="6657585470893396449">Mật khẩu</translation>
 <translation id="666236282349601348">Đang bật tính năng Tự động điền</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">Xong</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648">Đối với <ph name="URL" /></translation>
+<translation id="9168839987494597225">Chỉ lưu mật khẩu vào Trình quản lý mật khẩu của Google trên thiết bị này.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-CN.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-CN.xtb
index 60e008287..5fbf91c 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-CN.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-CN.xtb
@@ -9,12 +9,16 @@
 <translation id="1706288056912586527">显示密码</translation>
 <translation id="1870148520156231997">显示密码</translation>
 <translation id="1977167321677356409">密码</translation>
+<translation id="2211969839027957773">Google 密码管理器</translation>
 <translation id="2320166752086256636">隐藏键盘</translation>
+<translation id="2489483078139081050">您可在设备上的其他应用中使用已存密码。系统会将已存密码仅保存到此设备上的 Google 密码管理器中。</translation>
+<translation id="2677128368066534822">若要更快速地获取密码,请取消选择 iCloud 密钥链</translation>
 <translation id="2712586044587587728">您在 Chrome 中保存的密码可在其他应用中使用。您随时可在“设置”应用中关闭此功能。</translation>
 <translation id="2747003861858887689">上一个字段</translation>
 <translation id="3280734926621805458">使用</translation>
 <translation id="3580107423202590938">您未在 Chrome 中存储任何密码</translation>
 <translation id="368844171100841558">替换</translation>
+<translation id="3739920431472254679">系统会将密码保存到 Google 密码管理器中,以便您在任意设备上使用。</translation>
 <translation id="3753678329684433031">自动填充 Chrome 中存储的密码</translation>
 <translation id="3789385946721385622">用户名</translation>
 <translation id="4064278913989596727">帮助</translation>
@@ -26,8 +30,10 @@
 <translation id="5366190986669335938">从任意应用中获取您在 Chrome 中保存的密码。</translation>
 <translation id="579113627088729016">开启自动填充功能</translation>
 <translation id="5824290706342306555">您需要先在 Chrome 中保存一些密码,或使用您的 Google 帐号登录,才能在此处看到相应凭据。</translation>
+<translation id="6002340317268558779">您可在设备上的其他应用中使用已存密码。系统会将已存密码保存到 <ph name="EMAIL" /> 的 Google 密码管理器中。</translation>
 <translation id="6159839020698489198">可选</translation>
 <translation id="6216401132953873625">添加新密码</translation>
+<translation id="6387994324662817823">系统会将密码仅保存到此设备上的 Google 密码管理器中。</translation>
 <translation id="6539092367496845964">出了点问题。请稍后重试。</translation>
 <translation id="6657585470893396449">密码</translation>
 <translation id="666236282349601348">自动填充已开启</translation>
@@ -53,4 +59,5 @@
 <translation id="8730621377337864115">完成</translation>
 <translation id="8877181643142698531">网址</translation>
 <translation id="9069288651897538648">适用于 <ph name="URL" /></translation>
+<translation id="9168839987494597225">系统会将密码仅保存到此设备上的 Google 密码管理器中。</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-HK.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-HK.xtb
index 5394282..09b235fcf 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-HK.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-HK.xtb
@@ -9,16 +9,16 @@
 <translation id="1706288056912586527">顯示密碼</translation>
 <translation id="1870148520156231997">顯示密碼</translation>
 <translation id="1977167321677356409">密碼</translation>
-<translation id="2211969839027957773">Google 密碼管理員</translation>
+<translation id="2211969839027957773">Google 密碼管理工具</translation>
 <translation id="2320166752086256636">隱藏鍵盤</translation>
-<translation id="2489483078139081050">你可以在裝置上的其他應用程式使用儲存的密碼。系統只會將密碼儲存至這部裝置上的 Google 密碼管理員。</translation>
+<translation id="2489483078139081050">您可在裝置上的其他應用程式使用已儲存的密碼。密碼只會儲存至此裝置上的「Google 密碼管理工具」。</translation>
 <translation id="2677128368066534822">如要更快查看密碼,請取消選取 iCloud 鑰匙圈</translation>
 <translation id="2712586044587587728">您的 Chrome 密碼可在其他應用程式使用。您可隨時在「設定」應用程式關閉此功能。</translation>
 <translation id="2747003861858887689">上一個欄位</translation>
 <translation id="3280734926621805458">使用</translation>
 <translation id="3580107423202590938">沒有 Chrome 密碼</translation>
 <translation id="368844171100841558">取代</translation>
-<translation id="3739920431472254679">密碼已儲存至 Google 密碼管理員,你可以在任何裝置上使用。</translation>
+<translation id="3739920431472254679">密碼已儲存至「Google 密碼管理工具」,您可在任何裝置上使用。</translation>
 <translation id="3753678329684433031">自動填入 Chrome 密碼</translation>
 <translation id="3789385946721385622">使用者名稱</translation>
 <translation id="4064278913989596727">說明</translation>
@@ -30,9 +30,10 @@
 <translation id="5366190986669335938">從任何應用程式存取您儲存在 Chrome 中的密碼。</translation>
 <translation id="579113627088729016">開啟自動填入功能</translation>
 <translation id="5824290706342306555">如要開始使用,請在 Chrome 中儲存一些密碼,或登入 Google 帳戶。</translation>
-<translation id="6002340317268558779">你可以在裝置上的其他應用程式使用儲存的密碼。系統會將密碼儲存至 <ph name="EMAIL" /> 的 Google 密碼管理員。</translation>
+<translation id="6002340317268558779">您可在裝置上的其他應用程式使用已儲存的密碼。密碼已儲存至 <ph name="EMAIL" /> 的「Google 密碼管理工具」。</translation>
 <translation id="6159839020698489198">選填</translation>
 <translation id="6216401132953873625">新增密碼</translation>
+<translation id="6387994324662817823">密碼只會儲存至此裝置上的「Google 密碼管理工具」。</translation>
 <translation id="6539092367496845964">發生錯誤,請稍後再試。</translation>
 <translation id="6657585470893396449">密碼</translation>
 <translation id="666236282349601348">自動填入已開啟</translation>
@@ -58,5 +59,5 @@
 <translation id="8730621377337864115">完成</translation>
 <translation id="8877181643142698531">網址</translation>
 <translation id="9069288651897538648">適用於 <ph name="URL" /></translation>
-<translation id="9168839987494597225">密碼只會儲存至這部裝置上的 Google 密碼管理員。</translation>
+<translation id="9168839987494597225">密碼只會儲存至此裝置上的「Google 密碼管理工具」。</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-TW.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-TW.xtb
index 858485b..6be7073 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-TW.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zh-TW.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">你可以在裝置上的其他應用程式使用儲存的密碼。系統會將密碼儲存至 <ph name="EMAIL" /> 的 Google 密碼管理員。</translation>
 <translation id="6159839020698489198">選填</translation>
 <translation id="6216401132953873625">新增密碼</translation>
+<translation id="6387994324662817823">密碼只會儲存至這部裝置上的 Google 密碼管理員。</translation>
 <translation id="6539092367496845964">發生錯誤,請稍後再試。</translation>
 <translation id="6657585470893396449">密碼</translation>
 <translation id="666236282349601348">已開啟自動填入功能</translation>
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zu.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zu.xtb
index 17bfc0cc..d88cc32 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zu.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_zu.xtb
@@ -33,6 +33,7 @@
 <translation id="6002340317268558779">Ungasebenzisa amaphasiwedi alondoloziwe kwamanye ama-app kudivayisi yakho. Alondolozwe ku-Google Password Manager ye-<ph name="EMAIL" />.</translation>
 <translation id="6159839020698489198">ongakukhetha</translation>
 <translation id="6216401132953873625">Engeza Iphasiwedi Entsha</translation>
+<translation id="6387994324662817823">Amaphasiwedi alondolozwa Kwisiphathi Sephasiwedi se-Google kule divayisi kuphela.</translation>
 <translation id="6539092367496845964">Okuthile akuhambanga kahle. Zama futhi emuva kwesikhathi.</translation>
 <translation id="6657585470893396449">Igama lokungena</translation>
 <translation id="666236282349601348">I-AutoFill ivuliwe</translation>
diff --git a/ios/web/BUILD.gn b/ios/web/BUILD.gn
index cc9ec29..1baf37cb 100644
--- a/ios/web/BUILD.gn
+++ b/ios/web/BUILD.gn
@@ -253,6 +253,7 @@
     "//ios/web/public/session",
     "//ios/web/public/test",
     "//ios/web/public/test/fakes",
+    "//ios/web/session",
     "//ios/web/test:mojo_bindings",
     "//ios/web/test:test_constants",
     "//ios/web/test:test_support",
diff --git a/ios/web/navigation/BUILD.gn b/ios/web/navigation/BUILD.gn
index 2a03d56..04114d7a 100644
--- a/ios/web/navigation/BUILD.gn
+++ b/ios/web/navigation/BUILD.gn
@@ -73,10 +73,6 @@
   ]
 
   configs += [ "//build/config/compiler:enable_arc" ]
-
-  # TODO(crbug.com/1278306): Remove once SerializableUserData has been
-  # removed and the serialisation of user data simplied.
-  allow_circular_includes_from = [ "//ios/web/session" ]
 }
 
 source_set("core") {
diff --git a/ios/web/navigation/crw_session_storage_unittest.mm b/ios/web/navigation/crw_session_storage_unittest.mm
index 4d23cc1..4ab957d 100644
--- a/ios/web/navigation/crw_session_storage_unittest.mm
+++ b/ios/web/navigation/crw_session_storage_unittest.mm
@@ -14,6 +14,7 @@
 #import "ios/web/navigation/serializable_user_data_manager_impl.h"
 #include "ios/web/public/navigation/referrer.h"
 #import "ios/web/public/session/crw_navigation_item_storage.h"
+#import "ios/web/session/crw_session_user_data.h"
 #import "net/base/mac/url_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #import "testing/gtest_mac.h"
@@ -26,6 +27,7 @@
 #endif
 
 namespace {
+
 // Checks for equality between the item storages in |items1| and |items2|.
 BOOL ItemStorageListsAreEqual(NSArray* items1, NSArray* items2) {
   __block BOOL items_are_equal = items1.count == items2.count;
@@ -38,16 +40,7 @@
   }];
   return items_are_equal;
 }
-// Checks for equality between |user_data1| and |user_data2|.
-BOOL UserDataAreEqual(web::SerializableUserData* user_data1,
-                      web::SerializableUserData* user_data2) {
-  web::SerializableUserDataImpl* data1 =
-      static_cast<web::SerializableUserDataImpl*>(user_data1);
-  web::SerializableUserDataImpl* data2 =
-      static_cast<web::SerializableUserDataImpl*>(user_data2);
-  return (data1 == nullptr) == (data2 == nullptr) &&
-         (!data1 || [data1->data() isEqualToDictionary:data2->data()]);
-}
+
 // Checks for equality between |session1| and |session2|.
 BOOL SessionStoragesAreEqual(CRWSessionStorage* session1,
                              CRWSessionStorage* session2) {
@@ -57,9 +50,20 @@
   return ItemStorageListsAreEqual(items1, items2) &&
          session1.hasOpener == session2.hasOpener &&
          session1.lastCommittedItemIndex == session2.lastCommittedItemIndex &&
-         UserDataAreEqual(session1.userData, session2.userData) &&
-         session1.userAgentType == session2.userAgentType;
+         session1.userAgentType == session2.userAgentType &&
+         [session1.userData isEqual:session2.userData];
 }
+
+// Creates a CRWSessionUserData from an NSDictionary.
+CRWSessionUserData* SessionUserDataFromDictionary(
+    NSDictionary<NSString*, id<NSCoding>>* dictionary) {
+  CRWSessionUserData* data = [[CRWSessionUserData alloc] init];
+  for (NSString* key in dictionary) {
+    [data setObject:dictionary[key] forKey:key];
+  }
+  return data;
+}
+
 }  // namespace
 
 class CRWSessionStorageTest : public PlatformTest {
@@ -70,6 +74,8 @@
     session_storage_.lastCommittedItemIndex = 4;
     session_storage_.userAgentType = web::UserAgentType::DESKTOP;
     session_storage_.stableIdentifier = [[NSUUID UUID] UUIDString];
+    session_storage_.userData =
+        SessionUserDataFromDictionary(@{@"key" : @"value"});
 
     // Create an item storage.
     CRWNavigationItemStorage* item_storage =
@@ -83,12 +89,6 @@
         web::PageDisplayState(CGPointZero, UIEdgeInsetsZero, 0.0, 0.0, 0.0);
     item_storage.HTTPRequestHeaders = @{@"HeaderKey" : @"HeaderValue"};
     session_storage_.itemStorages = @[ item_storage ];
-
-    // Create serializable user data.
-    std::unique_ptr<web::SerializableUserDataImpl> user_data(
-        new web::SerializableUserDataImpl(
-            @{ @"key" : @"value" }));
-    [session_storage_ setSerializableUserData:std::move(user_data)];
   }
 
  protected:
@@ -139,9 +139,7 @@
 // Tests that unarchiving CRWSessionStorage correctly creates a fresh
 // stable identifier if missing from the serialized data.
 TEST_F(CRWSessionStorageTest, DecodeStableIdentifierMissing) {
-  std::unique_ptr<web::SerializableUserDataImpl> user_data(
-      new web::SerializableUserDataImpl(@{}));
-  [session_storage_ setSerializableUserData:std::move(user_data)];
+  session_storage_.userData = SessionUserDataFromDictionary(@{});
   session_storage_.stableIdentifier = nil;
 
   CRWSessionStorage* decoded =
@@ -154,16 +152,13 @@
 // present, and that the value is cleared from the decoded object user
 // data.
 TEST_F(CRWSessionStorageTest, DecodeStableIdentifierFromTabId) {
-  std::unique_ptr<web::SerializableUserDataImpl> user_data(
-      new web::SerializableUserDataImpl(@{@"TabId" : @"tabid-identifier"}));
-  [session_storage_ setSerializableUserData:std::move(user_data)];
+  session_storage_.userData =
+      SessionUserDataFromDictionary(@{@"TabId" : @"tabid-identifier"});
   session_storage_.stableIdentifier = nil;
 
   CRWSessionStorage* decoded =
       DecodeSessionStorage(EncodeSessionStorage(session_storage_));
   EXPECT_NSEQ(decoded.stableIdentifier, @"tabid-identifier");
 
-  web::SerializableUserDataImpl* decoded_user_data =
-      static_cast<web::SerializableUserDataImpl*>(decoded.userData);
-  EXPECT_FALSE([decoded_user_data->data() objectForKey:@"TabId"]);
+  EXPECT_FALSE([decoded.userData objectForKey:@"TabId"]);
 }
diff --git a/ios/web/navigation/crw_wk_navigation_handler.mm b/ios/web/navigation/crw_wk_navigation_handler.mm
index bd46f0c..7c292f9 100644
--- a/ios/web/navigation/crw_wk_navigation_handler.mm
+++ b/ios/web/navigation/crw_wk_navigation_handler.mm
@@ -82,6 +82,10 @@
   // DownloadNativeTaskBridge objects will help provide a valid
   // |navigationAction| or |navigationResponse|.
   NSMutableSet<DownloadNativeTaskBridge*>* _nativeTaskBridges;
+
+  // Stores navigation policy state of download task to indicate if a download
+  // should be performed.
+  BOOL _shouldPerformDownload;
 }
 
 @property(nonatomic, weak) id<CRWWKNavigationHandlerDelegate> delegate;
@@ -117,6 +121,8 @@
 
     _nativeTaskBridges = [NSMutableSet new];
 
+    _shouldPerformDownload = NO;
+
     _delegate = delegate;
   }
   return self;
@@ -340,10 +346,10 @@
       requestURL.SchemeIs(url::kAboutScheme) ||
       requestURL.SchemeIs(url::kBlobScheme);
 
-  BOOL shouldPerformDownload = NO;
+  _shouldPerformDownload = NO;
   if (web::features::IsNewDownloadAPIEnabled()) {
     if (@available(iOS 15, *)) {
-      shouldPerformDownload = action.shouldPerformDownload;
+      _shouldPerformDownload = action.shouldPerformDownload;
     }
   }
 
@@ -365,8 +371,7 @@
                       forNavigationAction:action
                        withPolicyDecision:policyDecision
                                   webView:webView
-                 forceBlockUniversalLinks:forceBlockUniversalLinks
-                    shouldPerformDownload:shouldPerformDownload];
+                 forceBlockUniversalLinks:forceBlockUniversalLinks];
       });
 
   if (!policyDecision.ShouldAllowNavigation()) {
@@ -1043,13 +1048,10 @@
 - (void)webView:(WKWebView*)webView
      navigationAction:(WKNavigationAction*)navigationAction
     didBecomeDownload:(WKDownload*)WKDownload API_AVAILABLE(ios(15)) {
-  // Discard the pending item to ensure that the current URL is not different
-  // from what is displayed on the view.
-  self.navigationManagerImpl->DiscardNonCommittedItems();
-
-  [_nativeTaskBridges
-      addObject:[[DownloadNativeTaskBridge alloc] initWithDownload:WKDownload
-                                             downloadReadyDelegate:self]];
+  // As Chromium never return WKNavigationResponsePolicyDownload
+  // when deciding the policy for an action, WebKit should never
+  // invoke this delegate method.
+  NOTREACHED();
 }
 
 - (void)webView:(WKWebView*)webView
@@ -1350,6 +1352,11 @@
 
 // Returns YES if response should be rendered in WKWebView.
 - (BOOL)shouldRenderResponse:(WKNavigationResponse*)WKResponse {
+  if (_shouldPerformDownload) {
+    DCHECK(web::features::IsNewDownloadAPIEnabled());
+    return NO;
+  }
+
   if (!WKResponse.canShowMIMEType) {
     return NO;
   }
@@ -1449,8 +1456,7 @@
            withPolicyDecision:
                (web::WebStatePolicyDecider::PolicyDecision)policyDecision
                       webView:(WKWebView*)webView
-     forceBlockUniversalLinks:(BOOL)forceBlockUniversalLinks
-        shouldPerformDownload:(BOOL)shouldPerformDownload {
+     forceBlockUniversalLinks:(BOOL)forceBlockUniversalLinks {
   if (policyDecision.ShouldAllowNavigation()) {
     if ([[action.request HTTPMethod] isEqualToString:@"POST"]) {
       // Display the confirmation dialog if a form repost is detected.
@@ -1529,14 +1535,6 @@
     return;
   }
 
-  if (shouldPerformDownload) {
-    DCHECK(web::features::IsNewDownloadAPIEnabled());
-    if (@available(iOS 15, *)) {
-      decisionHandler(WKNavigationActionPolicyDownload);
-      return;
-    }
-  }
-
   BOOL isOffTheRecord = self.webStateImpl->GetBrowserState()->IsOffTheRecord();
   decisionHandler(web::GetAllowNavigationActionPolicy(
       isOffTheRecord || forceBlockUniversalLinks));
diff --git a/ios/web/navigation/serializable_user_data_manager_impl.h b/ios/web/navigation/serializable_user_data_manager_impl.h
index e6e21cc7..99e4a15 100644
--- a/ios/web/navigation/serializable_user_data_manager_impl.h
+++ b/ios/web/navigation/serializable_user_data_manager_impl.h
@@ -9,32 +9,6 @@
 
 namespace web {
 
-class SerializableUserDataImpl : public SerializableUserData {
- public:
-  SerializableUserDataImpl();
-
-  SerializableUserDataImpl(const SerializableUserDataImpl&) = delete;
-  SerializableUserDataImpl& operator=(const SerializableUserDataImpl&) = delete;
-
-  ~SerializableUserDataImpl() override;
-
-  // Constructor taking the NSDictionary holding the serializable data.
-  explicit SerializableUserDataImpl(
-      NSDictionary<NSString*, id<NSCoding>>* data);
-
-  // SerializableUserData:
-  void Encode(NSCoder* coder) override;
-  void Decode(NSCoder* coder) override;
-
-  // Returns the serializable data.
-  NSDictionary<NSString*, id<NSCoding>>* data() { return data_; }
-
- private:
-  // The dictionary passed on initialization.  After calling Decode(), this will
-  // contain the data that is decoded from the NSCoder.
-  NSDictionary<NSString*, id<NSCoding>>* data_;
-};
-
 class SerializableUserDataManagerImpl : public SerializableUserDataManager {
  public:
   SerializableUserDataManagerImpl();
@@ -49,13 +23,12 @@
   // SerializableUserDataManager:
   void AddSerializableData(id<NSCoding> data, NSString* key) override;
   id<NSCoding> GetValueForSerializationKey(NSString* key) override;
-  std::unique_ptr<SerializableUserData> CreateSerializableUserData()
-      const override;
-  void AddSerializableUserData(SerializableUserData* data) override;
+  CRWSessionUserData* GetUserDataForSession() const override;
+  void SetUserDataFromSession(CRWSessionUserData* data) override;
 
  private:
-  // The dictionary that stores serializable user data.
-  NSMutableDictionary<NSString*, id<NSCoding>>* data_;
+  // The object storing the user data.
+  __strong CRWSessionUserData* data_;
 };
 
 }  // namespace web
diff --git a/ios/web/navigation/serializable_user_data_manager_impl.mm b/ios/web/navigation/serializable_user_data_manager_impl.mm
index 882b95d..e0d351c 100644
--- a/ios/web/navigation/serializable_user_data_manager_impl.mm
+++ b/ios/web/navigation/serializable_user_data_manager_impl.mm
@@ -6,6 +6,7 @@
 
 #import "base/mac/foundation_util.h"
 #import "ios/web/public/web_state.h"
+#import "ios/web/session/crw_session_user_data.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -17,8 +18,6 @@
 // WebState's user data.
 const void* const kSerializableUserDataManagerKey =
     &kSerializableUserDataManagerKey;
-// The key under which SerializableUserDataImpl's data is encoded.
-NSString* const kSerializedUserDataKey = @"serializedUserData";
 
 // Wrapper class used to associate SerializableUserDataManagerImpls with its
 // associated WebState.
@@ -61,36 +60,6 @@
 }  // namespace
 
 // static
-std::unique_ptr<SerializableUserData> SerializableUserData::Create() {
-  return std::make_unique<SerializableUserDataImpl>();
-}
-
-SerializableUserDataImpl::SerializableUserDataImpl() : data_(@{}) {}
-
-SerializableUserDataImpl::~SerializableUserDataImpl() {}
-
-SerializableUserDataImpl::SerializableUserDataImpl(
-    NSDictionary<NSString*, id<NSCoding>>* data)
-    : data_([data copy]) {
-  DCHECK(data_);
-}
-
-void SerializableUserDataImpl::Encode(NSCoder* coder) {
-  [coder encodeObject:data_ forKey:kSerializedUserDataKey];
-}
-
-void SerializableUserDataImpl::Decode(NSCoder* coder) {
-  data_ = [[coder decodeObjectForKey:kSerializedUserDataKey] mutableCopy];
-  if (!data_) {
-    // Ensure that there is always a dictionary even if there was no data
-    // loaded from the coder (this can happen during unit testing or when
-    // loading really old session).
-    data_ = [NSMutableDictionary dictionary];
-  }
-  DCHECK(data_);
-}
-
-// static
 SerializableUserDataManager* SerializableUserDataManager::FromWebState(
     WebState* web_state) {
   DCHECK(web_state);
@@ -107,7 +76,7 @@
 }
 
 SerializableUserDataManagerImpl::SerializableUserDataManagerImpl()
-    : data_([[NSMutableDictionary alloc] init]) {}
+    : data_([[CRWSessionUserData alloc] init]) {}
 
 SerializableUserDataManagerImpl::~SerializableUserDataManagerImpl() {}
 
@@ -123,18 +92,17 @@
   return [data_ objectForKey:key];
 }
 
-std::unique_ptr<SerializableUserData>
-SerializableUserDataManagerImpl::CreateSerializableUserData() const {
-  return std::make_unique<SerializableUserDataImpl>(data_);
+CRWSessionUserData* SerializableUserDataManagerImpl::GetUserDataForSession()
+    const {
+  return data_;
 }
 
-void SerializableUserDataManagerImpl::AddSerializableUserData(
-    SerializableUserData* data) {
+void SerializableUserDataManagerImpl::SetUserDataFromSession(
+    CRWSessionUserData* data) {
   if (data) {
-    SerializableUserDataImpl* data_impl =
-        static_cast<SerializableUserDataImpl*>(data);
-    data_ = [data_impl->data() mutableCopy];
-    DCHECK(data_);
+    data_ = data;
+  } else {
+    data = [[CRWSessionUserData alloc] init];
   }
 }
 
diff --git a/ios/web/navigation/session_storage_builder.mm b/ios/web/navigation/session_storage_builder.mm
index a5d0ae2..bccb3865 100644
--- a/ios/web/navigation/session_storage_builder.mm
+++ b/ios/web/navigation/session_storage_builder.mm
@@ -82,9 +82,7 @@
   const SerializableUserDataManager* user_data_manager =
       SerializableUserDataManager::FromWebState(&web_state);
   if (user_data_manager) {
-    [session_storage
-        setSerializableUserData:user_data_manager
-                                    ->CreateSerializableUserData()];
+    session_storage.userData = user_data_manager->GetUserDataForSession();
   }
   session_storage.userAgentType = web_state.GetUserAgentForSessionRestoration();
 
@@ -127,7 +125,7 @@
   web_state.SetSessionCertificatePolicyCacheImpl(std::move(cert_policy_cache));
 
   SerializableUserDataManager::FromWebState(&web_state)
-      ->AddSerializableUserData(session_storage.userData);
+      ->SetUserDataFromSession(session_storage.userData);
   UserAgentType user_agent_type = session_storage.userAgentType;
   web_state.SetUserAgent(user_agent_type);
 }
diff --git a/ios/web/public/session/crw_session_storage.h b/ios/web/public/session/crw_session_storage.h
index 16311b5..d92abc3 100644
--- a/ios/web/public/session/crw_session_storage.h
+++ b/ios/web/public/session/crw_session_storage.h
@@ -6,17 +6,13 @@
 #define IOS_WEB_PUBLIC_SESSION_CRW_SESSION_STORAGE_H_
 
 #import <Foundation/Foundation.h>
-#include <memory>
 
 #include "ios/web/common/user_agent.h"
 
 @class CRWNavigationItemStorage;
+@class CRWSessionUserData;
 @class CRWSessionCertificatePolicyCacheStorage;
 
-namespace web {
-class SerializableUserData;
-}
-
 // NSCoding-compliant class used to serialize session state.
 // TODO(crbug.com/685388): Investigate using code from the sessions component.
 @interface CRWSessionStorage : NSObject <NSCoding>
@@ -26,14 +22,10 @@
 @property(nonatomic, copy) NSArray<CRWNavigationItemStorage*>* itemStorages;
 @property(nonatomic, strong)
     CRWSessionCertificatePolicyCacheStorage* certPolicyCacheStorage;
-@property(nonatomic, readonly) web::SerializableUserData* userData;
+@property(nonatomic, strong) CRWSessionUserData* userData;
 @property(nonatomic, assign) web::UserAgentType userAgentType;
 @property(nonatomic, copy) NSString* stableIdentifier;
 
-// Setter for |userData|.  The receiver takes ownership of |userData|.
-- (void)setSerializableUserData:
-    (std::unique_ptr<web::SerializableUserData>)userData;
-
 @end
 
 #endif  // IOS_WEB_PUBLIC_SESSION_CRW_SESSION_STORAGE_H_
diff --git a/ios/web/public/session/serializable_user_data_manager.h b/ios/web/public/session/serializable_user_data_manager.h
index c2fd8a1..3747e3f 100644
--- a/ios/web/public/session/serializable_user_data_manager.h
+++ b/ios/web/public/session/serializable_user_data_manager.h
@@ -6,33 +6,13 @@
 #define IOS_WEB_PUBLIC_SESSION_SERIALIZABLE_USER_DATA_MANAGER_H_
 
 #import <Foundation/Foundation.h>
-#include <memory>
+
+@class CRWSessionUserData;
 
 namespace web {
 
 class WebState;
 
-// Class used to serialize values added to SerializableUserDataManager.
-class SerializableUserData {
- public:
-  SerializableUserData(const SerializableUserData&) = delete;
-  SerializableUserData& operator=(const SerializableUserData&) = delete;
-
-  virtual ~SerializableUserData() = default;
-
-  // Factory method.
-  static std::unique_ptr<SerializableUserData> Create();
-
-  // Encodes the data with |coder|.
-  virtual void Encode(NSCoder* coder) = 0;
-
-  // Decodes the data from |coder|.
-  virtual void Decode(NSCoder* coder) = 0;
-
- protected:
-  SerializableUserData() = default;
-};
-
 // Class that can be used to add serializable user data to a WebState.
 class SerializableUserDataManager {
  public:
@@ -55,13 +35,12 @@
   // Returns the value that has been stored under |key|.
   virtual id<NSCoding> GetValueForSerializationKey(NSString* key) = 0;
 
-  // Creates a SerializableUserData that can be used to encode the values added
-  // to the manager.
-  virtual std::unique_ptr<SerializableUserData> CreateSerializableUserData()
-      const = 0;
+  // Returns a representation of the user data that can be serialized as
+  // part of the session serialization.
+  virtual CRWSessionUserData* GetUserDataForSession() const = 0;
 
-  // Adds the values decoded from |data| to the manager.
-  virtual void AddSerializableUserData(SerializableUserData* data) = 0;
+  // Sets the user data the serialized object read from the session.
+  virtual void SetUserDataFromSession(CRWSessionUserData* data) = 0;
 
  protected:
   SerializableUserDataManager() = default;
diff --git a/ios/web/public/test/fakes/fake_web_state.mm b/ios/web/public/test/fakes/fake_web_state.mm
index d132d022..e1fb84a 100644
--- a/ios/web/public/test/fakes/fake_web_state.mm
+++ b/ios/web/public/test/fakes/fake_web_state.mm
@@ -149,11 +149,10 @@
 }
 
 CRWSessionStorage* FakeWebState::BuildSessionStorage() {
-  std::unique_ptr<web::SerializableUserData> serializable_user_data =
-      web::SerializableUserDataManager::FromWebState(this)
-          ->CreateSerializableUserData();
   CRWSessionStorage* session_storage = [[CRWSessionStorage alloc] init];
-  [session_storage setSerializableUserData:std::move(serializable_user_data)];
+  session_storage.userData =
+      web::SerializableUserDataManager::FromWebState(this)
+          ->GetUserDataForSession();
   session_storage.itemStorages = @[ [[CRWNavigationItemStorage alloc] init] ];
   session_storage.stableIdentifier = stable_identifier_;
   return session_storage;
diff --git a/ios/web/session/BUILD.gn b/ios/web/session/BUILD.gn
index 62c5069..e2efab3a 100644
--- a/ios/web/session/BUILD.gn
+++ b/ios/web/session/BUILD.gn
@@ -16,6 +16,8 @@
   sources = [
     "crw_session_certificate_policy_cache_storage.mm",
     "crw_session_storage.mm",
+    "crw_session_user_data.h",
+    "crw_session_user_data.mm",
     "session_certificate_policy_cache_impl.h",
     "session_certificate_policy_cache_impl.mm",
     "session_certificate_policy_cache_storage_builder.h",
diff --git a/ios/web/session/crw_session_storage.mm b/ios/web/session/crw_session_storage.mm
index c56252a2..3b6c8bf2 100644
--- a/ios/web/session/crw_session_storage.mm
+++ b/ios/web/session/crw_session_storage.mm
@@ -9,8 +9,8 @@
 #include "base/metrics/histogram_functions.h"
 #include "ios/web/common/features.h"
 #import "ios/web/navigation/nscoder_util.h"
-#import "ios/web/navigation/serializable_user_data_manager_impl.h"
 #import "ios/web/public/session/crw_session_certificate_policy_cache_storage.h"
+#import "ios/web/session/crw_session_user_data.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -27,6 +27,7 @@
 NSString* const kLastCommittedItemIndexKey = @"lastCommittedItemIndex";
 NSString* const kUserAgentKey = @"userAgentKey";
 NSString* const kStableIdentifierKey = @"stableIdentifier";
+NSString* const kSerializedUserDataKey = @"serializedUserData";
 
 // Deprecated, used for backward compatibility.
 // TODO(crbug.com/1278308): Remove this key.
@@ -40,26 +41,8 @@
 NSString* const kTabIdKey = @"TabId";
 }
 
-@interface CRWSessionStorage () {
-  // Backing object for property of same name.
-  std::unique_ptr<web::SerializableUserData> _userData;
-}
-
-@end
-
 @implementation CRWSessionStorage
 
-#pragma mark - Accessors
-
-- (web::SerializableUserData*)userData {
-  return _userData.get();
-}
-
-- (void)setSerializableUserData:
-    (std::unique_ptr<web::SerializableUserData>)userData {
-  _userData = std::move(userData);
-}
-
 #pragma mark - NSCoding
 
 - (instancetype)initWithCoder:(nonnull NSCoder*)decoder {
@@ -91,8 +74,25 @@
       _certPolicyCacheStorage = [decoder
           decodeObjectForKey:kCertificatePolicyCacheStorageDeprecatedKey];
     }
-    _userData = web::SerializableUserData::Create();
-    _userData->Decode(decoder);
+
+    id<NSCoding, NSObject> userData =
+        [decoder decodeObjectForKey:kSerializedUserDataKey];
+    if ([userData isKindOfClass:[CRWSessionUserData class]]) {
+      _userData = base::mac::ObjCCastStrict<CRWSessionUserData>(userData);
+    } else if ([userData isKindOfClass:[NSDictionary class]]) {
+      // Before M99, the user data was serialized by a C++ class that did
+      // serialize a NSDictionary<NSString*, id<NSCoding>>* directly.
+      // TODO(crbug.com/1278308): Remove this deprecated logic when we remove
+      // support for loading legacy sessions.
+      NSDictionary<NSString*, id<NSCoding>>* dictionary =
+          base::mac::ObjCCastStrict<NSDictionary>(userData);
+
+      _userData = [[CRWSessionUserData alloc] init];
+      for (NSString* key in dictionary) {
+        [_userData setObject:dictionary[key] forKey:key];
+      }
+    }
+
     if ([decoder containsValueForKey:kUserAgentKey]) {
       std::string userAgentDescription =
           web::nscoder_util::DecodeString(decoder, kUserAgentKey);
@@ -110,26 +110,13 @@
       // Before M99, the stable identifier was managed by a tab helper and
       // saved as part of the serializable user data. To support migration
       // of pre M99 session, read the data from there if not found.
-      //
-      // TODO(crbug.com/1278306): remove this cast when SerializableUserData
-      // has been removed and a simpler alternative has been put in place.
-      // For the moment the cast is safe, since SerializableUserData only has
-      // one sub-class SerializableUserDataImpl.
-      web::SerializableUserDataImpl* userDataImpl =
-          static_cast<web::SerializableUserDataImpl*>(_userData.get());
-      NSDictionary<NSString*, id<NSCoding>>* data = userDataImpl->data();
 
       // If "TabId" is set, clear it and initialise the `stableIdentifier`
       // from it (if it is a NSString and non empty, otherwise a new value
       // will be created below).
-      id<NSCoding> tabIdValue = [data objectForKey:kTabIdKey];
+      id<NSCoding> tabIdValue = [_userData objectForKey:kTabIdKey];
       if (tabIdValue) {
-        NSMutableDictionary<NSString*, id<NSCoding>>* mutableData =
-            [data mutableCopy];
-        [mutableData removeObjectForKey:kTabIdKey];
-
-        _userData = base::WrapUnique(
-            new web::SerializableUserDataImpl([mutableData copy]));
+        [_userData removeObjectForKey:kTabIdKey];
 
         // If the value is not an NSString or is empty, a random identifier
         // will be generated below.
@@ -163,8 +150,11 @@
   base::UmaHistogramCounts100000(
       "Session.WebStates.SerializedCertPolicyCacheSize",
       web::GetCertPolicyBytesEncoded() - previous_cert_policy_bytes / 1024);
-  if (_userData)
-    _userData->Encode(coder);
+
+  if (_userData) {
+    [coder encodeObject:_userData forKey:kSerializedUserDataKey];
+  }
+
   web::UserAgentType userAgentType = _userAgentType;
   web::nscoder_util::EncodeString(
       coder, kUserAgentKey, web::GetUserAgentTypeDescription(userAgentType));
diff --git a/ios/web/session/crw_session_user_data.h b/ios/web/session/crw_session_user_data.h
new file mode 100644
index 0000000..65b0e35
--- /dev/null
+++ b/ios/web/session/crw_session_user_data.h
@@ -0,0 +1,30 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_WEB_SESSION_CRW_SESSION_USER_DATA_H_
+#define IOS_WEB_SESSION_CRW_SESSION_USER_DATA_H_
+
+#import <Foundation/Foundation.h>
+
+// CRWSessionUserData serializes a mapping of key=value that corresponds
+// to the user data attached to a WebState (via SerializableUserDataManager).
+//
+// This class is used as its interface can be kept private to //ios/web while
+// being forward-declared in a public header. Code outside of //ios/web cannot
+// create instances and thus cannot break the invariant of the session saving
+// code.
+@interface CRWSessionUserData : NSObject <NSCoding>
+
+// Adds a mapping from `key` to `object`.
+- (void)setObject:(id<NSCoding>)object forKey:(NSString*)key;
+
+// Gets the object mapped to `key` or nil if not present.
+- (id<NSCoding>)objectForKey:(NSString*)key;
+
+// Removes the mapping for `key`.
+- (void)removeObjectForKey:(NSString*)key;
+
+@end
+
+#endif  // IOS_WEB_SESSION_CRW_SESSION_USER_DATA_H_
diff --git a/ios/web/session/crw_session_user_data.mm b/ios/web/session/crw_session_user_data.mm
new file mode 100644
index 0000000..b7d1dce5
--- /dev/null
+++ b/ios/web/session/crw_session_user_data.mm
@@ -0,0 +1,66 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/web/session/crw_session_user_data.h"
+
+#import "base/mac/foundation_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@implementation CRWSessionUserData {
+  NSMutableDictionary<NSString*, id<NSCoding>>* _data;
+}
+
+#pragma mark - Public methods
+
+- (void)setObject:(id<NSCoding>)object forKey:(NSString*)key {
+  [_data setObject:object forKey:key];
+}
+
+- (id<NSCoding>)objectForKey:(NSString*)key {
+  return [_data objectForKey:key];
+}
+
+- (void)removeObjectForKey:(NSString*)key {
+  [_data removeObjectForKey:key];
+}
+
+#pragma mark - NSCoding
+
+- (instancetype)init {
+  if ((self = [super init])) {
+    _data = [[NSMutableDictionary alloc] init];
+  }
+  return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder*)decoder {
+  if ((self = [super init])) {
+    _data = [[decoder decodeObject] mutableCopy];
+    if (!_data) {
+      _data = [[NSMutableDictionary alloc] init];
+    }
+  }
+  return self;
+}
+
+- (void)encodeWithCoder:(NSCoder*)coder {
+  [coder encodeObject:[_data copy]];
+}
+
+#pragma mark - NSObject
+
+- (BOOL)isEqual:(id)object {
+  if (![object isKindOfClass:[self class]])
+    return NO;
+
+  CRWSessionUserData* other =
+      base::mac::ObjCCastStrict<CRWSessionUserData>(object);
+
+  return [_data isEqual:other->_data];
+}
+
+@end
diff --git a/ios/web/session/serializable_user_data_manager_unittest.mm b/ios/web/session/serializable_user_data_manager_unittest.mm
index ead19c14..aaec00c 100644
--- a/ios/web/session/serializable_user_data_manager_unittest.mm
+++ b/ios/web/session/serializable_user_data_manager_unittest.mm
@@ -5,6 +5,7 @@
 #import "ios/web/public/session/serializable_user_data_manager.h"
 
 #import "ios/web/public/test/fakes/fake_web_state.h"
+#import "ios/web/session/crw_session_user_data.h"
 #import "testing/gtest_mac.h"
 #include "testing/platform_test.h"
 
@@ -39,13 +40,12 @@
 TEST_F(SerializableUserDataManagerTest, EncodeDecode) {
   // Create a SerializableUserData instance for the test data.
   manager()->AddSerializableData(kTestUserData, kTestUserDataKey);
-  std::unique_ptr<web::SerializableUserData> user_data =
-      manager()->CreateSerializableUserData();
+  CRWSessionUserData* user_data = manager()->GetUserDataForSession();
 
   // Archive the serializable user data.
   NSKeyedArchiver* archiver =
       [[NSKeyedArchiver alloc] initRequiringSecureCoding:NO];
-  user_data->Encode(archiver);
+  [archiver encodeObject:user_data forKey:NSKeyedArchiveRootObjectKey];
   [archiver finishEncoding];
   NSData* data = [archiver encodedData];
 
@@ -53,15 +53,14 @@
   NSKeyedUnarchiver* unarchiver =
       [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:nil];
   unarchiver.requiresSecureCoding = NO;
-  std::unique_ptr<web::SerializableUserData> decoded_data =
-      web::SerializableUserData::Create();
-  decoded_data->Decode(unarchiver);
+  CRWSessionUserData* decoded_data =
+      [unarchiver decodeObjectForKey:NSKeyedArchiveRootObjectKey];
 
   // Add the decoded user data to a new WebState and verify its contents.
   web::FakeWebState decoded_web_state;
   web::SerializableUserDataManager* decoded_manager =
       web::SerializableUserDataManager::FromWebState(&decoded_web_state);
-  decoded_manager->AddSerializableUserData(decoded_data.get());
+  decoded_manager->SetUserDataFromSession(decoded_data);
   id decoded_value =
       decoded_manager->GetValueForSerializationKey(kTestUserDataKey);
   EXPECT_NSEQ(decoded_value, kTestUserData);
@@ -76,18 +75,16 @@
   [archiver finishEncoding];
   NSData* data = [archiver encodedData];
 
-  std::unique_ptr<web::SerializableUserData> user_data =
-      web::SerializableUserData::Create();
-
   NSKeyedUnarchiver* unarchiver =
       [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:nil];
   unarchiver.requiresSecureCoding = NO;
-  user_data->Decode(unarchiver);
+  CRWSessionUserData* user_data =
+      [unarchiver decodeObjectForKey:NSKeyedArchiveRootObjectKey];
 
   web::FakeWebState web_state;
   web::SerializableUserDataManager* user_data_manager =
       web::SerializableUserDataManager::FromWebState(&web_state);
-  user_data_manager->AddSerializableUserData(user_data.get());
+  user_data_manager->SetUserDataFromSession(user_data);
 
   id value = user_data_manager->GetValueForSerializationKey(kTestUserDataKey);
   EXPECT_NSEQ(nil, value);
diff --git a/ios/web/web_state/web_state_impl_realized_web_state.mm b/ios/web/web_state/web_state_impl_realized_web_state.mm
index 0d3fd04d..09a988bd4 100644
--- a/ios/web/web_state/web_state_impl_realized_web_state.mm
+++ b/ios/web/web_state/web_state_impl_realized_web_state.mm
@@ -585,13 +585,11 @@
 CRWSessionStorage* WebStateImpl::RealizedWebState::BuildSessionStorage() {
   [web_controller_ recordStateInHistory];
   if (restored_session_storage_) {
-    // UserData can be updated in an uncommitted WebState. Even
-    // if a WebState hasn't been restored, its opener value may have changed.
-    std::unique_ptr<SerializableUserData> serializable_user_data =
+    // UserData can be updated in an uncommitted WebState. Even if a WebState
+    // hasn't been restored, its opener value may have changed.
+    restored_session_storage_.userData =
         SerializableUserDataManager::FromWebState(owner_)
-            ->CreateSerializableUserData();
-    [restored_session_storage_
-        setSerializableUserData:std::move(serializable_user_data)];
+            ->GetUserDataForSession();
     return restored_session_storage_;
   }
   return SessionStorageBuilder::BuildStorage(*owner_, *navigation_manager_,
diff --git a/ios/web/web_state/web_state_impl_serialized_data.mm b/ios/web/web_state/web_state_impl_serialized_data.mm
index 58975e14..6bd9102 100644
--- a/ios/web/web_state/web_state_impl_serialized_data.mm
+++ b/ios/web/web_state/web_state_impl_serialized_data.mm
@@ -33,7 +33,7 @@
   // Restore the serializable user data as user code may depend on accessing
   // on those values even for an unrealized WebState.
   if (session_storage_.userData) {
-    SerializableUserDataManager::FromWebState(owner_)->AddSerializableUserData(
+    SerializableUserDataManager::FromWebState(owner_)->SetUserDataFromSession(
         session_storage_.userData);
   }
 }
@@ -63,9 +63,7 @@
           const_cast<const WebStateImpl*>(owner_));
 
   if (user_data_manager) {
-    std::unique_ptr<SerializableUserData> user_data =
-        user_data_manager->CreateSerializableUserData();
-    [session_storage_ setSerializableUserData:std::move(user_data)];
+    session_storage_.userData = user_data_manager->GetUserDataForSession();
   }
 
   return session_storage_;
diff --git a/net/BUILD.gn b/net/BUILD.gn
index c50c247..f415d1b2 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1071,6 +1071,7 @@
   deps = [
     ":net_deps",
     "//build:chromeos_buildflags",
+    "//net/data/ssl/ev_roots:gen_ev_root_store_inc",
     "//net/http:transport_security_state_generated_files",
   ]
 
diff --git a/net/base/url_util.cc b/net/base/url_util.cc
index 7880bb4..33f6139 100644
--- a/net/base/url_util.cc
+++ b/net/base/url_util.cc
@@ -21,6 +21,7 @@
 #include "net/base/ip_address.h"
 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 #include "url/url_canon.h"
 #include "url/url_canon_ip.h"
 #include "url/url_constants.h"
@@ -248,6 +249,18 @@
   return url.host();
 }
 
+NET_EXPORT std::string GetHostAndOptionalPort(
+    const url::SchemeHostPort& scheme_host_port) {
+  int default_port = url::DefaultPortForScheme(
+      scheme_host_port.scheme().data(),
+      static_cast<int>(scheme_host_port.scheme().length()));
+  if (default_port != scheme_host_port.port()) {
+    return base::StringPrintf("%s:%i", scheme_host_port.host().c_str(),
+                              scheme_host_port.port());
+  }
+  return scheme_host_port.host();
+}
+
 std::string TrimEndingDot(base::StringPiece host) {
   base::StringPiece host_trimmed = host;
   size_t len = host_trimmed.length();
diff --git a/net/base/url_util.h b/net/base/url_util.h
index 962777d..1ae5998 100644
--- a/net/base/url_util.h
+++ b/net/base/url_util.h
@@ -20,6 +20,7 @@
 
 namespace url {
 struct CanonHostInfo;
+class SchemeHostPort;
 }
 
 namespace net {
@@ -111,6 +112,10 @@
 // if it is the default for the URL's scheme.
 NET_EXPORT std::string GetHostAndOptionalPort(const GURL& url);
 
+// Just like above, but takes a SchemeHostPort.
+NET_EXPORT std::string GetHostAndOptionalPort(
+    const url::SchemeHostPort& scheme_host_port);
+
 // Returns the hostname by trimming the ending dot, if one exists.
 NET_EXPORT std::string TrimEndingDot(base::StringPiece host);
 
diff --git a/net/base/url_util_unittest.cc b/net/base/url_util_unittest.cc
index 6c07bc4..0fea493b 100644
--- a/net/base/url_util_unittest.cc
+++ b/net/base/url_util_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 #include "url/url_util.h"
 
 using base::ASCIIToUTF16;
@@ -246,16 +247,22 @@
     GURL url;
     const char* const expected_host_and_port;
   } tests[] = {
-    { GURL("http://www.foo.com/x"), "www.foo.com"},
-    { GURL("http://www.foo.com:21/x"), "www.foo.com:21"},
+      {GURL("http://www.foo.com/x"), "www.foo.com"},
+      {GURL("http://www.foo.com:21/x"), "www.foo.com:21"},
+      {GURL("http://www.foo.com:443/x"), "www.foo.com:443"},
 
-    // For IPv6 literals should always include the brackets.
-    { GURL("http://[1::2]/x"), "[1::2]"},
-    { GURL("http://[::a]:33/x"), "[::a]:33"},
+      {GURL("https://www.foo.com/x"), "www.foo.com"},
+      {GURL("https://www.foo.com:80/x"), "www.foo.com:80"},
+
+      // For IPv6 literals should always include the brackets.
+      {GURL("http://[1::2]/x"), "[1::2]"},
+      {GURL("http://[::a]:33/x"), "[::a]:33"},
   };
   for (const auto& test : tests) {
-    std::string host_and_port = GetHostAndOptionalPort(test.url);
-    EXPECT_EQ(std::string(test.expected_host_and_port), host_and_port);
+    EXPECT_EQ(test.expected_host_and_port, GetHostAndOptionalPort(test.url));
+    // Also test the SchemeHostPort variant.
+    EXPECT_EQ(test.expected_host_and_port,
+              GetHostAndOptionalPort(url::SchemeHostPort(test.url)));
   }
 }
 
diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
index 13b5a55d..d240819 100644
--- a/net/cert/ev_root_ca_metadata.cc
+++ b/net/cert/ev_root_ca_metadata.cc
@@ -39,558 +39,7 @@
   const base::StringPiece policy_oids[kMaxOIDsPerCA];
 };
 
-// These certificates may be found in net/data/ssl/ev_roots.
-static const EVMetadata kEvRootCaMetadata[] = {
-    // AC Camerfirma S.A. Chambers of Commerce Root - 2008
-    // https://www.camerfirma.com
-    {
-        {{0x06, 0x3e, 0x4a, 0xfa, 0xc4, 0x91, 0xdf, 0xd3, 0x32, 0xf3, 0x08,
-          0x9b, 0x85, 0x42, 0xe9, 0x46, 0x17, 0xd8, 0x93, 0xd7, 0xfe, 0x94,
-          0x4e, 0x10, 0xa7, 0x93, 0x7e, 0xe2, 0x9d, 0x96, 0x93, 0xc0}},
-        {
-            // AC Camerfirma uses the last two arcs to track how the private key
-            // is managed - the effective verification policy is the same.
-            "1.3.6.1.4.1.17326.10.14.2.1.2",
-            "1.3.6.1.4.1.17326.10.14.2.2.2",
-        },
-    },
-    // AddTrust External CA Root
-    // https://addtrustexternalcaroot-ev.comodoca.com
-    {
-        {{0x68, 0x7f, 0xa4, 0x51, 0x38, 0x22, 0x78, 0xff, 0xf0, 0xc8, 0xb1,
-          0x1f, 0x8d, 0x43, 0xd5, 0x76, 0x67, 0x1c, 0x6e, 0xb2, 0xbc, 0xea,
-          0xb4, 0x13, 0xfb, 0x83, 0xd9, 0x65, 0xd0, 0x6d, 0x2f, 0xf2}},
-        {
-            "1.3.6.1.4.1.6449.1.2.1.5.1",
-            // This is the Network Solutions EV OID. However, this root
-            // cross-certifies NetSol and so we need it here too.
-            "1.3.6.1.4.1.782.1.2.1.8.1",
-        },
-    },
-    // Actalis Authentication Root CA
-    // https://ssltest-a.actalis.it:8443
-    {
-        {{0x55, 0x92, 0x60, 0x84, 0xec, 0x96, 0x3a, 0x64, 0xb9, 0x6e, 0x2a,
-          0xbe, 0x01, 0xce, 0x0b, 0xa8, 0x6a, 0x64, 0xfb, 0xfe, 0xbc, 0xc7,
-          0xaa, 0xb5, 0xaf, 0xc1, 0x55, 0xb3, 0x7f, 0xd7, 0x60, 0x66}},
-        {"1.3.159.1.17.1", ""},
-    },
-    // AffirmTrust Commercial
-    // https://commercial.affirmtrust.com/
-    {
-        {{0x03, 0x76, 0xab, 0x1d, 0x54, 0xc5, 0xf9, 0x80, 0x3c, 0xe4, 0xb2,
-          0xe2, 0x01, 0xa0, 0xee, 0x7e, 0xef, 0x7b, 0x57, 0xb6, 0x36, 0xe8,
-          0xa9, 0x3c, 0x9b, 0x8d, 0x48, 0x60, 0xc9, 0x6f, 0x5f, 0xa7}},
-        {"1.3.6.1.4.1.34697.2.1", ""},
-    },
-    // AffirmTrust Networking
-    // https://networking.affirmtrust.com:4431
-    {
-        {{0x0a, 0x81, 0xec, 0x5a, 0x92, 0x97, 0x77, 0xf1, 0x45, 0x90, 0x4a,
-          0xf3, 0x8d, 0x5d, 0x50, 0x9f, 0x66, 0xb5, 0xe2, 0xc5, 0x8f, 0xcd,
-          0xb5, 0x31, 0x05, 0x8b, 0x0e, 0x17, 0xf3, 0xf0, 0xb4, 0x1b}},
-        {"1.3.6.1.4.1.34697.2.2", ""},
-    },
-    // AffirmTrust Premium
-    // https://premium.affirmtrust.com:4432/
-    {
-        {{0x70, 0xa7, 0x3f, 0x7f, 0x37, 0x6b, 0x60, 0x07, 0x42, 0x48, 0x90,
-          0x45, 0x34, 0xb1, 0x14, 0x82, 0xd5, 0xbf, 0x0e, 0x69, 0x8e, 0xcc,
-          0x49, 0x8d, 0xf5, 0x25, 0x77, 0xeb, 0xf2, 0xe9, 0x3b, 0x9a}},
-        {"1.3.6.1.4.1.34697.2.3", ""},
-    },
-    // AffirmTrust Premium ECC
-    // https://premiumecc.affirmtrust.com:4433/
-    {
-        {{0xbd, 0x71, 0xfd, 0xf6, 0xda, 0x97, 0xe4, 0xcf, 0x62, 0xd1, 0x64,
-          0x7a, 0xdd, 0x25, 0x81, 0xb0, 0x7d, 0x79, 0xad, 0xf8, 0x39, 0x7e,
-          0xb4, 0xec, 0xba, 0x9c, 0x5e, 0x84, 0x88, 0x82, 0x14, 0x23}},
-        {"1.3.6.1.4.1.34697.2.4", ""},
-    },
-    // Amazon Root CA 1
-    // https://good.sca1a.amazontrust.com/
-    {
-        {{0x8e, 0xcd, 0xe6, 0x88, 0x4f, 0x3d, 0x87, 0xb1, 0x12, 0x5b, 0xa3,
-          0x1a, 0xc3, 0xfc, 0xb1, 0x3d, 0x70, 0x16, 0xde, 0x7f, 0x57, 0xcc,
-          0x90, 0x4f, 0xe1, 0xcb, 0x97, 0xc6, 0xae, 0x98, 0x19, 0x6e}},
-        {"2.23.140.1.1", ""},
-    },
-    // Amazon Root CA 2
-    // https://good.sca2a.amazontrust.com/
-    {
-        {{0x1b, 0xa5, 0xb2, 0xaa, 0x8c, 0x65, 0x40, 0x1a, 0x82, 0x96, 0x01,
-          0x18, 0xf8, 0x0b, 0xec, 0x4f, 0x62, 0x30, 0x4d, 0x83, 0xce, 0xc4,
-          0x71, 0x3a, 0x19, 0xc3, 0x9c, 0x01, 0x1e, 0xa4, 0x6d, 0xb4}},
-        {"2.23.140.1.1", ""},
-    },
-    // Amazon Root CA 3
-    // https://good.sca3a.amazontrust.com/
-    {
-        {{0x18, 0xce, 0x6c, 0xfe, 0x7b, 0xf1, 0x4e, 0x60, 0xb2, 0xe3, 0x47,
-          0xb8, 0xdf, 0xe8, 0x68, 0xcb, 0x31, 0xd0, 0x2e, 0xbb, 0x3a, 0xda,
-          0x27, 0x15, 0x69, 0xf5, 0x03, 0x43, 0xb4, 0x6d, 0xb3, 0xa4}},
-        {"2.23.140.1.1", ""},
-    },
-    // Amazon Root CA 4
-    // https://good.sca4a.amazontrust.com/
-    {
-        {{0xe3, 0x5d, 0x28, 0x41, 0x9e, 0xd0, 0x20, 0x25, 0xcf, 0xa6, 0x90,
-          0x38, 0xcd, 0x62, 0x39, 0x62, 0x45, 0x8d, 0xa5, 0xc6, 0x95, 0xfb,
-          0xde, 0xa3, 0xc2, 0x2b, 0x0b, 0xfb, 0x25, 0x89, 0x70, 0x92}},
-        {"2.23.140.1.1", ""},
-    },
-    // Autoridad de Certificacion Firmaprofesional CIF A62634068
-    // https://publifirma.firmaprofesional.com/
-    {
-        {{0x04, 0x04, 0x80, 0x28, 0xbf, 0x1f, 0x28, 0x64, 0xd4, 0x8f, 0x9a,
-          0xd4, 0xd8, 0x32, 0x94, 0x36, 0x6a, 0x82, 0x88, 0x56, 0x55, 0x3f,
-          0x3b, 0x14, 0x30, 0x3f, 0x90, 0x14, 0x7f, 0x5d, 0x40, 0xef}},
-        {"1.3.6.1.4.1.13177.10.1.3.10", ""},
-    },
-    // Baltimore CyberTrust Root
-    // https://secure.omniroot.com/repository/
-    {
-        {{0x16, 0xaf, 0x57, 0xa9, 0xf6, 0x76, 0xb0, 0xab, 0x12, 0x60, 0x95,
-          0xaa, 0x5e, 0xba, 0xde, 0xf2, 0x2a, 0xb3, 0x11, 0x19, 0xd6, 0x44,
-          0xac, 0x95, 0xcd, 0x4b, 0x93, 0xdb, 0xf3, 0xf2, 0x6a, 0xeb}},
-        {"1.3.6.1.4.1.6334.1.100.1", ""},
-    },
-    // Buypass Class 3 Root CA
-    // https://valid.evident.ca23.ssl.buypass.no/
-    {
-        {{0xed, 0xf7, 0xeb, 0xbc, 0xa2, 0x7a, 0x2a, 0x38, 0x4d, 0x38, 0x7b,
-          0x7d, 0x40, 0x10, 0xc6, 0x66, 0xe2, 0xed, 0xb4, 0x84, 0x3e, 0x4c,
-          0x29, 0xb4, 0xae, 0x1d, 0x5b, 0x93, 0x32, 0xe6, 0xb2, 0x4d}},
-        {"2.16.578.1.26.1.3.3", ""},
-    },
-    // Certum Trusted Network CA
-    // https://juice.certum.pl/
-    {
-        {{0x5c, 0x58, 0x46, 0x8d, 0x55, 0xf5, 0x8e, 0x49, 0x7e, 0x74, 0x39,
-          0x82, 0xd2, 0xb5, 0x00, 0x10, 0xb6, 0xd1, 0x65, 0x37, 0x4a, 0xcf,
-          0x83, 0xa7, 0xd4, 0xa3, 0x2d, 0xb7, 0x68, 0xc4, 0x40, 0x8e}},
-        {"1.2.616.1.113527.2.5.1.1", ""},
-    },
-    // CFCA EV ROOT
-    // https://www.erenepu.com/
-    {
-        {{0x5c, 0xc3, 0xd7, 0x8e, 0x4e, 0x1d, 0x5e, 0x45, 0x54, 0x7a, 0x04,
-          0xe6, 0x87, 0x3e, 0x64, 0xf9, 0x0c, 0xf9, 0x53, 0x6d, 0x1c, 0xcc,
-          0x2e, 0xf8, 0x00, 0xf3, 0x55, 0xc4, 0xc5, 0xfd, 0x70, 0xfd}},
-        {"2.16.156.112554.3", ""},
-    },
-    // COMODO Certification Authority
-    // https://secure.comodo.com/
-    {
-        {{0x0c, 0x2c, 0xd6, 0x3d, 0xf7, 0x80, 0x6f, 0xa3, 0x99, 0xed, 0xe8,
-          0x09, 0x11, 0x6b, 0x57, 0x5b, 0xf8, 0x79, 0x89, 0xf0, 0x65, 0x18,
-          0xf9, 0x80, 0x8c, 0x86, 0x05, 0x03, 0x17, 0x8b, 0xaf, 0x66}},
-        {"1.3.6.1.4.1.6449.1.2.1.5.1", ""},
-    },
-    // COMODO Certification Authority (reissued certificate with NotBefore of
-    // Jan 1 00:00:00 2011 GMT)
-    // https://secure.comodo.com/
-    {
-        {{0x1a, 0x0d, 0x20, 0x44, 0x5d, 0xe5, 0xba, 0x18, 0x62, 0xd1, 0x9e,
-          0xf8, 0x80, 0x85, 0x8c, 0xbc, 0xe5, 0x01, 0x02, 0xb3, 0x6e, 0x8f,
-          0x0a, 0x04, 0x0c, 0x3c, 0x69, 0xe7, 0x45, 0x22, 0xfe, 0x6e}},
-        {"1.3.6.1.4.1.6449.1.2.1.5.1", ""},
-    },
-    // COMODO ECC Certification Authority
-    // https://comodoecccertificationauthority-ev.comodoca.com/
-    {
-        {{0x17, 0x93, 0x92, 0x7a, 0x06, 0x14, 0x54, 0x97, 0x89, 0xad, 0xce,
-          0x2f, 0x8f, 0x34, 0xf7, 0xf0, 0xb6, 0x6d, 0x0f, 0x3a, 0xe3, 0xa3,
-          0xb8, 0x4d, 0x21, 0xec, 0x15, 0xdb, 0xba, 0x4f, 0xad, 0xc7}},
-        {"1.3.6.1.4.1.6449.1.2.1.5.1", ""},
-    },
-    // COMODO RSA Certification Authority
-    // https://comodorsacertificationauthority-ev.comodoca.com/
-    {
-        {{0x52, 0xf0, 0xe1, 0xc4, 0xe5, 0x8e, 0xc6, 0x29, 0x29, 0x1b, 0x60,
-          0x31, 0x7f, 0x07, 0x46, 0x71, 0xb8, 0x5d, 0x7e, 0xa8, 0x0d, 0x5b,
-          0x07, 0x27, 0x34, 0x63, 0x53, 0x4b, 0x32, 0xb4, 0x02, 0x34}},
-        {"1.3.6.1.4.1.6449.1.2.1.5.1", ""},
-    },
-    // Cybertrust Global Root
-    // https://evup.cybertrust.ne.jp/ctj-ev-upgrader/evseal.gif
-    {
-        {{0x96, 0x0a, 0xdf, 0x00, 0x63, 0xe9, 0x63, 0x56, 0x75, 0x0c, 0x29,
-          0x65, 0xdd, 0x0a, 0x08, 0x67, 0xda, 0x0b, 0x9c, 0xbd, 0x6e, 0x77,
-          0x71, 0x4a, 0xea, 0xfb, 0x23, 0x49, 0xab, 0x39, 0x3d, 0xa3}},
-        {"1.3.6.1.4.1.6334.1.100.1", ""},
-    },
-    // DigiCert Assured ID Root CA
-    // https://assured-id-root-ca.chain-demos.digicert.com/
-    {
-        {{0x3e, 0x90, 0x99, 0xb5, 0x01, 0x5e, 0x8f, 0x48, 0x6c, 0x00, 0xbc,
-          0xea, 0x9d, 0x11, 0x1e, 0xe7, 0x21, 0xfa, 0xba, 0x35, 0x5a, 0x89,
-          0xbc, 0xf1, 0xdf, 0x69, 0x56, 0x1e, 0x3d, 0xc6, 0x32, 0x5c}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // DigiCert Assured ID Root G2
-    // https://assured-id-root-g2.chain-demos.digicert.com/
-    {
-        {{0x7d, 0x05, 0xeb, 0xb6, 0x82, 0x33, 0x9f, 0x8c, 0x94, 0x51, 0xee,
-          0x09, 0x4e, 0xeb, 0xfe, 0xfa, 0x79, 0x53, 0xa1, 0x14, 0xed, 0xb2,
-          0xf4, 0x49, 0x49, 0x45, 0x2f, 0xab, 0x7d, 0x2f, 0xc1, 0x85}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // DigiCert Assured ID Root G3
-    // https://assured-id-root-g3.chain-demos.digicert.com/
-    {
-        {{0x7e, 0x37, 0xcb, 0x8b, 0x4c, 0x47, 0x09, 0x0c, 0xab, 0x36, 0x55,
-          0x1b, 0xa6, 0xf4, 0x5d, 0xb8, 0x40, 0x68, 0x0f, 0xba, 0x16, 0x6a,
-          0x95, 0x2d, 0xb1, 0x00, 0x71, 0x7f, 0x43, 0x05, 0x3f, 0xc2}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // DigiCert Global Root CA
-    // https://global-root-ca.chain-demos.digicert.com/
-    {
-        {{0x43, 0x48, 0xa0, 0xe9, 0x44, 0x4c, 0x78, 0xcb, 0x26, 0x5e, 0x05,
-          0x8d, 0x5e, 0x89, 0x44, 0xb4, 0xd8, 0x4f, 0x96, 0x62, 0xbd, 0x26,
-          0xdb, 0x25, 0x7f, 0x89, 0x34, 0xa4, 0x43, 0xc7, 0x01, 0x61}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // DigiCert Global Root G2
-    // https://global-root-g2.chain-demos.digicert.com/
-    {
-        {{0xcb, 0x3c, 0xcb, 0xb7, 0x60, 0x31, 0xe5, 0xe0, 0x13, 0x8f, 0x8d,
-          0xd3, 0x9a, 0x23, 0xf9, 0xde, 0x47, 0xff, 0xc3, 0x5e, 0x43, 0xc1,
-          0x14, 0x4c, 0xea, 0x27, 0xd4, 0x6a, 0x5a, 0xb1, 0xcb, 0x5f}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // DigiCert Global Root G3
-    // https://global-root-g3.chain-demos.digicert.com/
-    {
-        {{0x31, 0xad, 0x66, 0x48, 0xf8, 0x10, 0x41, 0x38, 0xc7, 0x38, 0xf3,
-          0x9e, 0xa4, 0x32, 0x01, 0x33, 0x39, 0x3e, 0x3a, 0x18, 0xcc, 0x02,
-          0x29, 0x6e, 0xf9, 0x7c, 0x2a, 0xc9, 0xef, 0x67, 0x31, 0xd0}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // DigiCert High Assurance EV Root CA
-    // https://www.digicert.com
-    {
-        {{0x74, 0x31, 0xe5, 0xf4, 0xc3, 0xc1, 0xce, 0x46, 0x90, 0x77, 0x4f,
-          0x0b, 0x61, 0xe0, 0x54, 0x40, 0x88, 0x3b, 0xa9, 0xa0, 0x1e, 0xd0,
-          0x0b, 0xa6, 0xab, 0xd7, 0x80, 0x6e, 0xd3, 0xb1, 0x18, 0xcf}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // DigiCert Trusted Root G4
-    // https://trusted-root-g4.chain-demos.digicert.com/
-    {
-        {{0x55, 0x2f, 0x7b, 0xdc, 0xf1, 0xa7, 0xaf, 0x9e, 0x6c, 0xe6, 0x72,
-          0x01, 0x7f, 0x4f, 0x12, 0xab, 0xf7, 0x72, 0x40, 0xc7, 0x8e, 0x76,
-          0x1a, 0xc2, 0x03, 0xd1, 0xd9, 0xd2, 0x0a, 0xc8, 0x99, 0x88}},
-        {"2.16.840.1.114412.2.1", ""},
-    },
-    // D-TRUST Root Class 3 CA 2 EV 2009
-    // https://certdemo-ev-valid.ssl.d-trust.net/
-    {
-        {{0xee, 0xc5, 0x49, 0x6b, 0x98, 0x8c, 0xe9, 0x86, 0x25, 0xb9, 0x34,
-          0x09, 0x2e, 0xec, 0x29, 0x08, 0xbe, 0xd0, 0xb0, 0xf3, 0x16, 0xc2,
-          0xd4, 0x73, 0x0c, 0x84, 0xea, 0xf1, 0xf3, 0xd3, 0x48, 0x81}},
-        {"1.3.6.1.4.1.4788.2.202.1", ""},
-    },
-    // emSign Root CA - G1
-    // https://testevg1.emsign.com/
-    {
-        {{0x40, 0xf6, 0xaf, 0x03, 0x46, 0xa9, 0x9a, 0xa1, 0xcd, 0x1d, 0x55,
-          0x5a, 0x4e, 0x9c, 0xce, 0x62, 0xc7, 0xf9, 0x63, 0x46, 0x03, 0xee,
-          0x40, 0x66, 0x15, 0x83, 0x3d, 0xc8, 0xc8, 0xd0, 0x03, 0x67}},
-        {"2.23.140.1.1", ""},
-    },
-    // Entrust Root Certification Authority
-    // https://www.entrust.net/
-    {
-        {{0x73, 0xc1, 0x76, 0x43, 0x4f, 0x1b, 0xc6, 0xd5, 0xad, 0xf4, 0x5b,
-          0x0e, 0x76, 0xe7, 0x27, 0x28, 0x7c, 0x8d, 0xe5, 0x76, 0x16, 0xc1,
-          0xe6, 0xe6, 0x14, 0x1a, 0x2b, 0x2c, 0xbc, 0x7d, 0x8e, 0x4c}},
-        {"2.16.840.1.114028.10.1.2", ""},
-    },
-    // Entrust Root Certification Authority – G2
-    // https://validg2.entrust.net
-    {
-        {{0x43, 0xdf, 0x57, 0x74, 0xb0, 0x3e, 0x7f, 0xef, 0x5f, 0xe4, 0x0d,
-          0x93, 0x1a, 0x7b, 0xed, 0xf1, 0xbb, 0x2e, 0x6b, 0x42, 0x73, 0x8c,
-          0x4e, 0x6d, 0x38, 0x41, 0x10, 0x3d, 0x3a, 0xa7, 0xf3, 0x39}},
-        {"2.16.840.1.114028.10.1.2", ""},
-    },
-    // Entrust Root Certification Authority – EC1
-    // https://validec.entrust.net
-    {
-        {{0x02, 0xed, 0x0e, 0xb2, 0x8c, 0x14, 0xda, 0x45, 0x16, 0x5c, 0x56,
-          0x67, 0x91, 0x70, 0x0d, 0x64, 0x51, 0xd7, 0xfb, 0x56, 0xf0, 0xb2,
-          0xab, 0x1d, 0x3b, 0x8e, 0xb0, 0x70, 0xe5, 0x6e, 0xdf, 0xf5}},
-        {"2.16.840.1.114028.10.1.2", ""},
-    },
-    // E-Tugra Certification Authority
-    // https://sslev.e-tugra.com.tr
-    {
-        {{0xb0, 0xbf, 0xd5, 0x2b, 0xb0, 0xd7, 0xd9, 0xbd, 0x92, 0xbf, 0x5d,
-          0x4d, 0xc1, 0x3d, 0xa2, 0x55, 0xc0, 0x2c, 0x54, 0x2f, 0x37, 0x83,
-          0x65, 0xea, 0x89, 0x39, 0x11, 0xf5, 0x5e, 0x55, 0xf2, 0x3c}},
-        {"2.16.792.3.0.4.1.1.4", ""},
-    },
-    // GlobalSign Root CA
-    {
-        {{0xeb, 0xd4, 0x10, 0x40, 0xe4, 0xbb, 0x3e, 0xc7, 0x42, 0xc9, 0xe3,
-          0x81, 0xd3, 0x1e, 0xf2, 0xa4, 0x1a, 0x48, 0xb6, 0x68, 0x5c, 0x96,
-          0xe7, 0xce, 0xf3, 0xc1, 0xdf, 0x6c, 0xd4, 0x33, 0x1c, 0x99}},
-        {"1.3.6.1.4.1.4146.1.1", ""},
-    },
-    // GlobalSign Root CA - R3
-    // https://2029.globalsign.com/
-    {
-        {{0xcb, 0xb5, 0x22, 0xd7, 0xb7, 0xf1, 0x27, 0xad, 0x6a, 0x01, 0x13,
-          0x86, 0x5b, 0xdf, 0x1c, 0xd4, 0x10, 0x2e, 0x7d, 0x07, 0x59, 0xaf,
-          0x63, 0x5a, 0x7c, 0xf4, 0x72, 0x0d, 0xc9, 0x63, 0xc5, 0x3b}},
-        {"1.3.6.1.4.1.4146.1.1", ""},
-    },
-    // GlobalSign ECC Root CA - R5
-    // https://2038r5.globalsign.com/
-    {
-        {{0x17, 0x9f, 0xbc, 0x14, 0x8a, 0x3d, 0xd0, 0x0f, 0xd2, 0x4e, 0xa1,
-          0x34, 0x58, 0xcc, 0x43, 0xbf, 0xa7, 0xf5, 0x9c, 0x81, 0x82, 0xd7,
-          0x83, 0xa5, 0x13, 0xf6, 0xeb, 0xec, 0x10, 0x0c, 0x89, 0x24}},
-        {"1.3.6.1.4.1.4146.1.1", ""},
-    },
-    // Go Daddy Class 2 Certification Authority
-    // https://www.godaddy.com/
-    {
-        {{0xc3, 0x84, 0x6b, 0xf2, 0x4b, 0x9e, 0x93, 0xca, 0x64, 0x27, 0x4c,
-          0x0e, 0xc6, 0x7c, 0x1e, 0xcc, 0x5e, 0x02, 0x4f, 0xfc, 0xac, 0xd2,
-          0xd7, 0x40, 0x19, 0x35, 0x0e, 0x81, 0xfe, 0x54, 0x6a, 0xe4}},
-        {"2.16.840.1.114413.1.7.23.3", ""},
-    },
-    // Go Daddy Root Certificate Authority - G2
-    // https://valid.gdig2.catest.godaddy.com/
-    {
-        {{0x45, 0x14, 0x0b, 0x32, 0x47, 0xeb, 0x9c, 0xc8, 0xc5, 0xb4, 0xf0,
-          0xd7, 0xb5, 0x30, 0x91, 0xf7, 0x32, 0x92, 0x08, 0x9e, 0x6e, 0x5a,
-          0x63, 0xe2, 0x74, 0x9d, 0xd3, 0xac, 0xa9, 0x19, 0x8e, 0xda}},
-        {"2.16.840.1.114413.1.7.23.3", ""},
-    },
-    // Hongkong Post Root CA 3
-    // https://valid-ev.ecert.gov.hk/
-    {
-        {{0x5a, 0x2f, 0xc0, 0x3f, 0x0c, 0x83, 0xb0, 0x90, 0xbb, 0xfa, 0x40,
-          0x60, 0x4b, 0x09, 0x88, 0x44, 0x6c, 0x76, 0x36, 0x18, 0x3d, 0xf9,
-          0x84, 0x6e, 0x17, 0x10, 0x1a, 0x44, 0x7f, 0xb8, 0xef, 0xd6}},
-        {"2.23.140.1.1", ""},
-    },
-    // Izenpe.com - SHA256 root
-    // The first OID is for businesses and the second for government entities.
-    // These are the test sites, respectively:
-    // https://servicios.izenpe.com
-    // https://servicios1.izenpe.com
-    {
-        {{0x25, 0x30, 0xcc, 0x8e, 0x98, 0x32, 0x15, 0x02, 0xba, 0xd9, 0x6f,
-          0x9b, 0x1f, 0xba, 0x1b, 0x09, 0x9e, 0x2d, 0x29, 0x9e, 0x0f, 0x45,
-          0x48, 0xbb, 0x91, 0x4f, 0x36, 0x3b, 0xc0, 0xd4, 0x53, 0x1f}},
-        {"1.3.6.1.4.1.14777.6.1.1", "1.3.6.1.4.1.14777.6.1.2"},
-    },
-    // Izenpe.com - SHA1 root
-    // Windows XP finds this, SHA1, root instead. The policy OIDs are the same
-    // as for the SHA256 root, above.
-    {
-        {{0x23, 0x80, 0x42, 0x03, 0xca, 0x45, 0xd8, 0xcd, 0xe7, 0x16, 0xb8,
-          0xc1, 0x3b, 0xf3, 0xb4, 0x48, 0x45, 0x7f, 0xa0, 0x6c, 0xc1, 0x02,
-          0x50, 0x99, 0x7f, 0xa0, 0x14, 0x58, 0x31, 0x7c, 0x41, 0xe5}},
-        {"1.3.6.1.4.1.14777.6.1.1", "1.3.6.1.4.1.14777.6.1.2"},
-    },
-    // LuxTrust Global Root 2
-    // https://ltsslca5.trustme.lu/
-    {
-        {{0x54, 0x45, 0x5f, 0x71, 0x29, 0xc2, 0x0b, 0x14, 0x47, 0xc4, 0x18,
-          0xf9, 0x97, 0x16, 0x8f, 0x24, 0xc5, 0x8f, 0xc5, 0x02, 0x3b, 0xf5,
-          0xda, 0x5b, 0xe2, 0xeb, 0x6e, 0x1d, 0xd8, 0x90, 0x2e, 0xd5}},
-        {"1.3.171.1.1.10.5.2", ""},
-    },
-    // Network Solutions Certificate Authority
-    // https://www.networksolutions.com/website-packages/index.jsp
-    {
-        {{0x15, 0xf0, 0xba, 0x00, 0xa3, 0xac, 0x7a, 0xf3, 0xac, 0x88, 0x4c,
-          0x07, 0x2b, 0x10, 0x11, 0xa0, 0x77, 0xbd, 0x77, 0xc0, 0x97, 0xf4,
-          0x01, 0x64, 0xb2, 0xf8, 0x59, 0x8a, 0xbd, 0x83, 0x86, 0x0c}},
-        {"1.3.6.1.4.1.782.1.2.1.8.1", ""},
-    },
-    // Network Solutions Certificate Authority (reissued certificate with
-    // NotBefore of Jan  1 00:00:00 2011 GMT).
-    // https://www.networksolutions.com/website-packages/index.jsp
-    {
-        {{0x00, 0x16, 0x86, 0xcd, 0x18, 0x1f, 0x83, 0xa1, 0xb1, 0x21, 0x7d,
-          0x30, 0x5b, 0x36, 0x5c, 0x41, 0xe3, 0x47, 0x0a, 0x78, 0xa1, 0xd3,
-          0x7b, 0x13, 0x4a, 0x98, 0xcd, 0x54, 0x7b, 0x92, 0xda, 0xb3}},
-        {"1.3.6.1.4.1.782.1.2.1.8.1", ""},
-    },
-    // OISTE WISeKey Global Root GB CA
-    // https://goodevssl.wisekey.com
-    {
-        {{0x6b, 0x9c, 0x08, 0xe8, 0x6e, 0xb0, 0xf7, 0x67, 0xcf, 0xad, 0x65,
-          0xcd, 0x98, 0xb6, 0x21, 0x49, 0xe5, 0x49, 0x4a, 0x67, 0xf5, 0x84,
-          0x5e, 0x7b, 0xd1, 0xed, 0x01, 0x9f, 0x27, 0xb8, 0x6b, 0xd6}},
-        {"2.16.756.5.14.7.4.8", ""},
-    },
-    // QuoVadis Root CA 2
-    // https://www.quovadis.bm/
-    {
-        {{0x85, 0xa0, 0xdd, 0x7d, 0xd7, 0x20, 0xad, 0xb7, 0xff, 0x05, 0xf8,
-          0x3d, 0x54, 0x2b, 0x20, 0x9d, 0xc7, 0xff, 0x45, 0x28, 0xf7, 0xd6,
-          0x77, 0xb1, 0x83, 0x89, 0xfe, 0xa5, 0xe5, 0xc4, 0x9e, 0x86}},
-        {"1.3.6.1.4.1.8024.0.2.100.1.2", ""},
-    },
-    // QuoVadis Root CA 2 G3
-    // https://evsslicag3-v.quovadisglobal.com/
-    {
-        {{0x8f, 0xe4, 0xfb, 0x0a, 0xf9, 0x3a, 0x4d, 0x0d, 0x67, 0xdb, 0x0b,
-          0xeb, 0xb2, 0x3e, 0x37, 0xc7, 0x1b, 0xf3, 0x25, 0xdc, 0xbc, 0xdd,
-          0x24, 0x0e, 0xa0, 0x4d, 0xaf, 0x58, 0xb4, 0x7e, 0x18, 0x40}},
-        {"1.3.6.1.4.1.8024.0.2.100.1.2", ""},
-    },
-    // SecureTrust CA, SecureTrust Corporation
-    // https://www.securetrust.com
-    // https://www.trustwave.com/
-    {
-        {{0xf1, 0xc1, 0xb5, 0x0a, 0xe5, 0xa2, 0x0d, 0xd8, 0x03, 0x0e, 0xc9,
-          0xf6, 0xbc, 0x24, 0x82, 0x3d, 0xd3, 0x67, 0xb5, 0x25, 0x57, 0x59,
-          0xb4, 0xe7, 0x1b, 0x61, 0xfc, 0xe9, 0xf7, 0x37, 0x5d, 0x73}},
-        {"2.16.840.1.114404.1.1.2.4.1", ""},
-    },
-    // Secure Global CA, SecureTrust Corporation
-    {
-        {{0x42, 0x00, 0xf5, 0x04, 0x3a, 0xc8, 0x59, 0x0e, 0xbb, 0x52, 0x7d,
-          0x20, 0x9e, 0xd1, 0x50, 0x30, 0x29, 0xfb, 0xcb, 0xd4, 0x1c, 0xa1,
-          0xb5, 0x06, 0xec, 0x27, 0xf1, 0x5a, 0xde, 0x7d, 0xac, 0x69}},
-        {"2.16.840.1.114404.1.1.2.4.1", ""},
-    },
-    // Security Communication RootCA1
-    // https://www.secomtrust.net/contact/form.html
-    {
-        {{0xe7, 0x5e, 0x72, 0xed, 0x9f, 0x56, 0x0e, 0xec, 0x6e, 0xb4, 0x80,
-          0x00, 0x73, 0xa4, 0x3f, 0xc3, 0xad, 0x19, 0x19, 0x5a, 0x39, 0x22,
-          0x82, 0x01, 0x78, 0x95, 0x97, 0x4a, 0x99, 0x02, 0x6b, 0x6c}},
-        {"1.2.392.200091.100.721.1", ""},
-    },
-    // Security Communication EV RootCA2
-    // https://www.secomtrust.net/contact/form.html
-    {
-        {{0x51, 0x3b, 0x2c, 0xec, 0xb8, 0x10, 0xd4, 0xcd, 0xe5, 0xdd, 0x85,
-          0x39, 0x1a, 0xdf, 0xc6, 0xc2, 0xdd, 0x60, 0xd8, 0x7b, 0xb7, 0x36,
-          0xd2, 0xb5, 0x21, 0x48, 0x4a, 0xa4, 0x7a, 0x0e, 0xbe, 0xf6}},
-        {"1.2.392.200091.100.721.1", ""},
-    },
-    // SSL.com EV Root Certification Authority ECC
-    // https://test-ev-ecc.ssl.com/
-    {
-        {{0x22, 0xa2, 0xc1, 0xf7, 0xbd, 0xed, 0x70, 0x4c, 0xc1, 0xe7, 0x01,
-          0xb5, 0xf4, 0x08, 0xc3, 0x10, 0x88, 0x0f, 0xe9, 0x56, 0xb5, 0xde,
-          0x2a, 0x4a, 0x44, 0xf9, 0x9c, 0x87, 0x3a, 0x25, 0xa7, 0xc8}},
-        {"2.23.140.1.1", ""},
-    },
-    // SSL.com EV Root Certification Authority RSA R2
-    // https://test-ev-rsa.ssl.com/
-    {
-        {{0x2e, 0x7b, 0xf1, 0x6c, 0xc2, 0x24, 0x85, 0xa7, 0xbb, 0xe2, 0xaa,
-          0x86, 0x96, 0x75, 0x07, 0x61, 0xb0, 0xae, 0x39, 0xbe, 0x3b, 0x2f,
-          0xe9, 0xd0, 0xcc, 0x6d, 0x4e, 0xf7, 0x34, 0x91, 0x42, 0x5c}},
-        {"2.23.140.1.1", ""},
-    },
-    // Staat der Nederlanden EV Root CA
-    // https://pkioevssl-v.quovadisglobal.com/
-    {
-        {{0x4d, 0x24, 0x91, 0x41, 0x4c, 0xfe, 0x95, 0x67, 0x46, 0xec, 0x4c,
-          0xef, 0xa6, 0xcf, 0x6f, 0x72, 0xe2, 0x8a, 0x13, 0x29, 0x43, 0x2f,
-          0x9d, 0x8a, 0x90, 0x7a, 0xc4, 0xcb, 0x5d, 0xad, 0xc1, 0x5a}},
-        {"2.16.528.1.1003.1.2.7", ""},
-    },
-    // Starfield Class 2 Certification Authority
-    // https://www.starfieldtech.com/
-    {
-        {{0x14, 0x65, 0xfa, 0x20, 0x53, 0x97, 0xb8, 0x76, 0xfa, 0xa6, 0xf0,
-          0xa9, 0x95, 0x8e, 0x55, 0x90, 0xe4, 0x0f, 0xcc, 0x7f, 0xaa, 0x4f,
-          0xb7, 0xc2, 0xc8, 0x67, 0x75, 0x21, 0xfb, 0x5f, 0xb6, 0x58}},
-        {"2.16.840.1.114414.1.7.23.3", ""},
-    },
-    // Starfield Root Certificate Authority - G2
-    // https://valid.sfig2.catest.starfieldtech.com/
-    {
-        {{0x2c, 0xe1, 0xcb, 0x0b, 0xf9, 0xd2, 0xf9, 0xe1, 0x02, 0x99, 0x3f,
-          0xbe, 0x21, 0x51, 0x52, 0xc3, 0xb2, 0xdd, 0x0c, 0xab, 0xde, 0x1c,
-          0x68, 0xe5, 0x31, 0x9b, 0x83, 0x91, 0x54, 0xdb, 0xb7, 0xf5}},
-        {"2.16.840.1.114414.1.7.23.3", ""},
-    },
-    // Starfield Services Root Certificate Authority - G2
-    // https://valid.sfsg2.catest.starfieldtech.com/
-    {
-        {{0x56, 0x8d, 0x69, 0x05, 0xa2, 0xc8, 0x87, 0x08, 0xa4, 0xb3, 0x02,
-          0x51, 0x90, 0xed, 0xcf, 0xed, 0xb1, 0x97, 0x4a, 0x60, 0x6a, 0x13,
-          0xc6, 0xe5, 0x29, 0x0f, 0xcb, 0x2a, 0xe6, 0x3e, 0xda, 0xb5}},
-        {"2.16.840.1.114414.1.7.24.3", "2.23.140.1.1"},
-    },
-    // SwissSign Gold CA - G2
-    // https://testevg2.swisssign.net/
-    {
-        {{0x62, 0xdd, 0x0b, 0xe9, 0xb9, 0xf5, 0x0a, 0x16, 0x3e, 0xa0, 0xf8,
-          0xe7, 0x5c, 0x05, 0x3b, 0x1e, 0xca, 0x57, 0xea, 0x55, 0xc8, 0x68,
-          0x8f, 0x64, 0x7c, 0x68, 0x81, 0xf2, 0xc8, 0x35, 0x7b, 0x95}},
-        {"2.16.756.1.89.1.2.1.1", ""},
-    },
-    // TWCA Global Root CA
-    // https://evssldemo3.twca.com.tw/index.html
-    {
-        {{0x59, 0x76, 0x90, 0x07, 0xf7, 0x68, 0x5d, 0x0f, 0xcd, 0x50, 0x87,
-          0x2f, 0x9f, 0x95, 0xd5, 0x75, 0x5a, 0x5b, 0x2b, 0x45, 0x7d, 0x81,
-          0xf3, 0x69, 0x2b, 0x61, 0x0a, 0x98, 0x67, 0x2f, 0x0e, 0x1b}},
-        {"1.3.6.1.4.1.40869.1.1.22.3", ""},
-    },
-    // TWCA Root Certification Authority
-    // https://evssldemo.twca.com.tw/index.html
-    {
-        {{0xbf, 0xd8, 0x8f, 0xe1, 0x10, 0x1c, 0x41, 0xae, 0x3e, 0x80, 0x1b,
-          0xf8, 0xbe, 0x56, 0x35, 0x0e, 0xe9, 0xba, 0xd1, 0xa6, 0xb9, 0xbd,
-          0x51, 0x5e, 0xdc, 0x5c, 0x6d, 0x5b, 0x87, 0x11, 0xac, 0x44}},
-        {"1.3.6.1.4.1.40869.1.1.22.3", ""},
-    },
-    // T-TeleSec GlobalRoot Class 3
-    // http://www.telesec.de/ / https://root-class3.test.telesec.de/
-    {
-        {{0xfd, 0x73, 0xda, 0xd3, 0x1c, 0x64, 0x4f, 0xf1, 0xb4, 0x3b, 0xef,
-          0x0c, 0xcd, 0xda, 0x96, 0x71, 0x0b, 0x9c, 0xd9, 0x87, 0x5e, 0xca,
-          0x7e, 0x31, 0x70, 0x7a, 0xf3, 0xe9, 0x6d, 0x52, 0x2b, 0xbd}},
-        {"1.3.6.1.4.1.7879.13.24.1", ""},
-    },
-    // UCA Extended Validation Root
-    // https://rsaevg1.good.sheca.com/
-    {
-        {{0xd4, 0x3a, 0xf9, 0xb3, 0x54, 0x73, 0x75, 0x5c, 0x96, 0x84, 0xfc,
-          0x06, 0xd7, 0xd8, 0xcb, 0x70, 0xee, 0x5c, 0x28, 0xe7, 0x73, 0xfb,
-          0x29, 0x4e, 0xb4, 0x1e, 0xe7, 0x17, 0x22, 0x92, 0x4d, 0x24}},
-        {"2.23.140.1.1", ""},
-    },
-    // USERTrust ECC Certification Authority
-    // https://usertrustecccertificationauthority-ev.comodoca.com/
-    {
-        {{0x4f, 0xf4, 0x60, 0xd5, 0x4b, 0x9c, 0x86, 0xda, 0xbf, 0xbc, 0xfc,
-          0x57, 0x12, 0xe0, 0x40, 0x0d, 0x2b, 0xed, 0x3f, 0xbc, 0x4d, 0x4f,
-          0xbd, 0xaa, 0x86, 0xe0, 0x6a, 0xdc, 0xd2, 0xa9, 0xad, 0x7a}},
-        {"1.3.6.1.4.1.6449.1.2.1.5.1", ""},
-    },
-    // USERTrust RSA Certification Authority
-    // https://usertrustrsacertificationauthority-ev.comodoca.com/
-    {
-        {{0xe7, 0x93, 0xc9, 0xb0, 0x2f, 0xd8, 0xaa, 0x13, 0xe2, 0x1c, 0x31,
-          0x22, 0x8a, 0xcc, 0xb0, 0x81, 0x19, 0x64, 0x3b, 0x74, 0x9c, 0x89,
-          0x89, 0x64, 0xb1, 0x74, 0x6d, 0x46, 0xc3, 0xd4, 0xcb, 0xd2}},
-        {"1.3.6.1.4.1.6449.1.2.1.5.1", ""},
-    },
-    // XRamp Global Certification Authority
-    {
-        {{0xce, 0xcd, 0xdc, 0x90, 0x50, 0x99, 0xd8, 0xda, 0xdf, 0xc5, 0xb1,
-          0xd2, 0x09, 0xb7, 0x37, 0xcb, 0xe2, 0xc1, 0x8c, 0xfb, 0x2c, 0x10,
-          0xc0, 0xff, 0x0b, 0xcf, 0x0d, 0x32, 0x86, 0xfc, 0x1a, 0xa2}},
-        {"2.16.840.1.114404.1.1.2.4.1", ""},
-    }};
+#include "net/data/ssl/ev_roots/chrome-ev-root-store-inc.cc"
 
 #endif  // defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
 }  // namespace
diff --git a/net/data/ssl/ev_roots/BUILD.gn b/net/data/ssl/ev_roots/BUILD.gn
new file mode 100644
index 0000000..17ef2f8
--- /dev/null
+++ b/net/data/ssl/ev_roots/BUILD.gn
@@ -0,0 +1,90 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+import("//build/compiled_action.gni")
+
+# Generate C++ include file for the Chrome root store.
+compiled_action("gen_ev_root_store_inc") {
+  tool = "//net/tools/ev_store_tool:ev_store_tool"
+
+  # It'd be really nice to list an input as "store/certs/*", but it doesn't seem
+  # to work. So we list them all out.
+  inputs = [
+    "root_store.textproto",
+    "certs/063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem",
+    "certs/687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2.pem",
+    "certs/001686cd181f83a1b1217d305b365c41e3470a78a1d37b134a98cd547b92dab3.pem",
+    "certs/02ed0eb28c14da45165c566791700d6451d7fb56f0b2ab1d3b8eb070e56edff5.pem",
+    "certs/0376ab1d54c5f9803ce4b2e201a0ee7eef7b57b636e8a93c9b8d4860c96f5fa7.pem",
+    "certs/04048028bf1f2864d48f9ad4d83294366a828856553f3b14303f90147f5d40ef.pem",
+    "certs/063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem",
+    "certs/0a81ec5a929777f145904af38d5d509f66b5e2c58fcdb531058b0e17f3f0b41b.pem",
+    "certs/0c2cd63df7806fa399ede809116b575bf87989f06518f9808c860503178baf66.pem",
+    "certs/1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658.pem",
+    "certs/15f0ba00a3ac7af3ac884c072b1011a077bd77c097f40164b2f8598abd83860c.pem",
+    "certs/16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb.pem",
+    "certs/1793927a0614549789adce2f8f34f7f0b66d0f3ae3a3b84d21ec15dbba4fadc7.pem",
+    "certs/179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924.pem",
+    "certs/18ce6cfe7bf14e60b2e347b8dfe868cb31d02ebb3ada271569f50343b46db3a4.pem",
+    "certs/1a0d20445de5ba1862d19ef880858cbce50102b36e8f0a040c3c69e74522fe6e.pem",
+    "certs/1ba5b2aa8c65401a82960118f80bec4f62304d83cec4713a19c39c011ea46db4.pem",
+    "certs/22a2c1f7bded704cc1e701b5f408c310880fe956b5de2a4a44f99c873a25a7c8.pem",
+    "certs/23804203ca45d8cde716b8c13bf3b448457fa06cc10250997fa01458317c41e5.pem",
+    "certs/2530cc8e98321502bad96f9b1fba1b099e2d299e0f4548bb914f363bc0d4531f.pem",
+    "certs/2ce1cb0bf9d2f9e102993fbe215152c3b2dd0cabde1c68e5319b839154dbb7f5.pem",
+    "certs/2e7bf16cc22485a7bbe2aa8696750761b0ae39be3b2fe9d0cc6d4ef73491425c.pem",
+    "certs/31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0.pem",
+    "certs/3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c.pem",
+    "certs/40f6af0346a99aa1cd1d555a4e9cce62c7f9634603ee406615833dc8c8d00367.pem",
+    "certs/4200f5043ac8590ebb527d209ed1503029fbcbd41ca1b506ec27f15ade7dac69.pem",
+    "certs/4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161.pem",
+    "certs/43df5774b03e7fef5fe40d931a7bedf1bb2e6b42738c4e6d3841103d3aa7f339.pem",
+    "certs/45140b3247eb9cc8c5b4f0d7b53091f73292089e6e5a63e2749dd3aca9198eda.pem",
+    "certs/4d2491414cfe956746ec4cefa6cf6f72e28a1329432f9d8a907ac4cb5dadc15a.pem",
+    "certs/4ff460d54b9c86dabfbcfc5712e0400d2bed3fbc4d4fbdaa86e06adcd2a9ad7a.pem",
+    "certs/513b2cecb810d4cde5dd85391adfc6c2dd60d87bb736d2b521484aa47a0ebef6.pem",
+    "certs/52f0e1c4e58ec629291b60317f074671b85d7ea80d5b07273463534b32b40234.pem",
+    "certs/54455f7129c20b1447c418f997168f24c58fc5023bf5da5be2eb6e1dd8902ed5.pem",
+    "certs/552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988.pem",
+    "certs/55926084ec963a64b96e2abe01ce0ba86a64fbfebcc7aab5afc155b37fd76066.pem",
+    "certs/568d6905a2c88708a4b3025190edcfedb1974a606a13c6e5290fcb2ae63edab5.pem",
+    "certs/59769007f7685d0fcd50872f9f95d5755a5b2b457d81f3692b610a98672f0e1b.pem",
+    "certs/5a2fc03f0c83b090bbfa40604b0988446c7636183df9846e17101a447fb8efd6.pem",
+    "certs/5c58468d55f58e497e743982d2b50010b6d165374acf83a7d4a32db768c4408e.pem",
+    "certs/5cc3d78e4e1d5e45547a04e6873e64f90cf9536d1ccc2ef800f355c4c5fd70fd.pem",
+    "certs/62dd0be9b9f50a163ea0f8e75c053b1eca57ea55c8688f647c6881f2c8357b95.pem",
+    "certs/687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2.pem",
+    "certs/6b9c08e86eb0f767cfad65cd98b62149e5494a67f5845e7bd1ed019f27b86bd6.pem",
+    "certs/70a73f7f376b60074248904534b11482d5bf0e698ecc498df52577ebf2e93b9a.pem",
+    "certs/73c176434f1bc6d5adf45b0e76e727287c8de57616c1e6e6141a2b2cbc7d8e4c.pem",
+    "certs/7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf.pem",
+    "certs/7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185.pem",
+    "certs/7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2.pem",
+    "certs/85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86.pem",
+    "certs/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e.pem",
+    "certs/8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840.pem",
+    "certs/960adf0063e96356750c2965dd0a0867da0b9cbd6e77714aeafb2349ab393da3.pem",
+    "certs/b0bfd52bb0d7d9bd92bf5d4dc13da255c02c542f378365ea893911f55e55f23c.pem",
+    "certs/bd71fdf6da97e4cf62d1647add2581b07d79adf8397eb4ecba9c5e8488821423.pem",
+    "certs/bfd88fe1101c41ae3e801bf8be56350ee9bad1a6b9bd515edc5c6d5b8711ac44.pem",
+    "certs/c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4.pem",
+    "certs/cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f.pem",
+    "certs/cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b.pem",
+    "certs/cecddc905099d8dadfc5b1d209b737cbe2c18cfb2c10c0ff0bcf0d3286fc1aa2.pem",
+    "certs/d43af9b35473755c9684fc06d7d8cb70ee5c28e773fb294eb41ee71722924d24.pem",
+    "certs/e35d28419ed02025cfa69038cd623962458da5c695fbdea3c22b0bfb25897092.pem",
+    "certs/e75e72ed9f560eec6eb4800073a43fc3ad19195a392282017895974a99026b6c.pem",
+    "certs/e793c9b02fd8aa13e21c31228accb08119643b749c898964b1746d46c3d4cbd2.pem",
+    "certs/ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99.pem",
+    "certs/edf7ebbca27a2a384d387b7d4010c666e2edb4843e4c29b4ae1d5b9332e6b24d.pem",
+    "certs/eec5496b988ce98625b934092eec2908bed0b0f316c2d4730c84eaf1f3d34881.pem",
+  ]
+
+  outputs = [ "${target_gen_dir}/chrome-ev-root-store-inc.cc" ]
+  args = [
+    "--root-store-dir=" + rebase_path("../ev_roots", root_build_dir),
+    "--write-cpp=" +
+        rebase_path("${target_gen_dir}/chrome-ev-root-store-inc.cc",
+                    root_build_dir),
+  ]
+}
diff --git a/net/data/ssl/ev_roots/001686cd181f83a1b1217d305b365c41e3470a78a1d37b134a98cd547b92dab3.pem b/net/data/ssl/ev_roots/certs/001686cd181f83a1b1217d305b365c41e3470a78a1d37b134a98cd547b92dab3.pem
similarity index 100%
rename from net/data/ssl/ev_roots/001686cd181f83a1b1217d305b365c41e3470a78a1d37b134a98cd547b92dab3.pem
rename to net/data/ssl/ev_roots/certs/001686cd181f83a1b1217d305b365c41e3470a78a1d37b134a98cd547b92dab3.pem
diff --git a/net/data/ssl/ev_roots/02ed0eb28c14da45165c566791700d6451d7fb56f0b2ab1d3b8eb070e56edff5.pem b/net/data/ssl/ev_roots/certs/02ed0eb28c14da45165c566791700d6451d7fb56f0b2ab1d3b8eb070e56edff5.pem
similarity index 100%
rename from net/data/ssl/ev_roots/02ed0eb28c14da45165c566791700d6451d7fb56f0b2ab1d3b8eb070e56edff5.pem
rename to net/data/ssl/ev_roots/certs/02ed0eb28c14da45165c566791700d6451d7fb56f0b2ab1d3b8eb070e56edff5.pem
diff --git a/net/data/ssl/ev_roots/0376ab1d54c5f9803ce4b2e201a0ee7eef7b57b636e8a93c9b8d4860c96f5fa7.pem b/net/data/ssl/ev_roots/certs/0376ab1d54c5f9803ce4b2e201a0ee7eef7b57b636e8a93c9b8d4860c96f5fa7.pem
similarity index 100%
rename from net/data/ssl/ev_roots/0376ab1d54c5f9803ce4b2e201a0ee7eef7b57b636e8a93c9b8d4860c96f5fa7.pem
rename to net/data/ssl/ev_roots/certs/0376ab1d54c5f9803ce4b2e201a0ee7eef7b57b636e8a93c9b8d4860c96f5fa7.pem
diff --git a/net/data/ssl/ev_roots/04048028bf1f2864d48f9ad4d83294366a828856553f3b14303f90147f5d40ef.pem b/net/data/ssl/ev_roots/certs/04048028bf1f2864d48f9ad4d83294366a828856553f3b14303f90147f5d40ef.pem
similarity index 100%
rename from net/data/ssl/ev_roots/04048028bf1f2864d48f9ad4d83294366a828856553f3b14303f90147f5d40ef.pem
rename to net/data/ssl/ev_roots/certs/04048028bf1f2864d48f9ad4d83294366a828856553f3b14303f90147f5d40ef.pem
diff --git a/net/data/ssl/ev_roots/063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem b/net/data/ssl/ev_roots/certs/063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem
similarity index 100%
rename from net/data/ssl/ev_roots/063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem
rename to net/data/ssl/ev_roots/certs/063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem
diff --git a/net/data/ssl/ev_roots/0a81ec5a929777f145904af38d5d509f66b5e2c58fcdb531058b0e17f3f0b41b.pem b/net/data/ssl/ev_roots/certs/0a81ec5a929777f145904af38d5d509f66b5e2c58fcdb531058b0e17f3f0b41b.pem
similarity index 100%
rename from net/data/ssl/ev_roots/0a81ec5a929777f145904af38d5d509f66b5e2c58fcdb531058b0e17f3f0b41b.pem
rename to net/data/ssl/ev_roots/certs/0a81ec5a929777f145904af38d5d509f66b5e2c58fcdb531058b0e17f3f0b41b.pem
diff --git a/net/data/ssl/ev_roots/0c2cd63df7806fa399ede809116b575bf87989f06518f9808c860503178baf66.pem b/net/data/ssl/ev_roots/certs/0c2cd63df7806fa399ede809116b575bf87989f06518f9808c860503178baf66.pem
similarity index 100%
rename from net/data/ssl/ev_roots/0c2cd63df7806fa399ede809116b575bf87989f06518f9808c860503178baf66.pem
rename to net/data/ssl/ev_roots/certs/0c2cd63df7806fa399ede809116b575bf87989f06518f9808c860503178baf66.pem
diff --git a/net/data/ssl/ev_roots/1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658.pem b/net/data/ssl/ev_roots/certs/1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658.pem
similarity index 100%
rename from net/data/ssl/ev_roots/1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658.pem
rename to net/data/ssl/ev_roots/certs/1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658.pem
diff --git a/net/data/ssl/ev_roots/15f0ba00a3ac7af3ac884c072b1011a077bd77c097f40164b2f8598abd83860c.pem b/net/data/ssl/ev_roots/certs/15f0ba00a3ac7af3ac884c072b1011a077bd77c097f40164b2f8598abd83860c.pem
similarity index 100%
rename from net/data/ssl/ev_roots/15f0ba00a3ac7af3ac884c072b1011a077bd77c097f40164b2f8598abd83860c.pem
rename to net/data/ssl/ev_roots/certs/15f0ba00a3ac7af3ac884c072b1011a077bd77c097f40164b2f8598abd83860c.pem
diff --git a/net/data/ssl/ev_roots/16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb.pem b/net/data/ssl/ev_roots/certs/16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb.pem
similarity index 100%
rename from net/data/ssl/ev_roots/16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb.pem
rename to net/data/ssl/ev_roots/certs/16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb.pem
diff --git a/net/data/ssl/ev_roots/1793927a0614549789adce2f8f34f7f0b66d0f3ae3a3b84d21ec15dbba4fadc7.pem b/net/data/ssl/ev_roots/certs/1793927a0614549789adce2f8f34f7f0b66d0f3ae3a3b84d21ec15dbba4fadc7.pem
similarity index 100%
rename from net/data/ssl/ev_roots/1793927a0614549789adce2f8f34f7f0b66d0f3ae3a3b84d21ec15dbba4fadc7.pem
rename to net/data/ssl/ev_roots/certs/1793927a0614549789adce2f8f34f7f0b66d0f3ae3a3b84d21ec15dbba4fadc7.pem
diff --git a/net/data/ssl/ev_roots/179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924.pem b/net/data/ssl/ev_roots/certs/179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924.pem
similarity index 100%
rename from net/data/ssl/ev_roots/179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924.pem
rename to net/data/ssl/ev_roots/certs/179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924.pem
diff --git a/net/data/ssl/ev_roots/18ce6cfe7bf14e60b2e347b8dfe868cb31d02ebb3ada271569f50343b46db3a4.pem b/net/data/ssl/ev_roots/certs/18ce6cfe7bf14e60b2e347b8dfe868cb31d02ebb3ada271569f50343b46db3a4.pem
similarity index 100%
rename from net/data/ssl/ev_roots/18ce6cfe7bf14e60b2e347b8dfe868cb31d02ebb3ada271569f50343b46db3a4.pem
rename to net/data/ssl/ev_roots/certs/18ce6cfe7bf14e60b2e347b8dfe868cb31d02ebb3ada271569f50343b46db3a4.pem
diff --git a/net/data/ssl/ev_roots/1a0d20445de5ba1862d19ef880858cbce50102b36e8f0a040c3c69e74522fe6e.pem b/net/data/ssl/ev_roots/certs/1a0d20445de5ba1862d19ef880858cbce50102b36e8f0a040c3c69e74522fe6e.pem
similarity index 100%
rename from net/data/ssl/ev_roots/1a0d20445de5ba1862d19ef880858cbce50102b36e8f0a040c3c69e74522fe6e.pem
rename to net/data/ssl/ev_roots/certs/1a0d20445de5ba1862d19ef880858cbce50102b36e8f0a040c3c69e74522fe6e.pem
diff --git a/net/data/ssl/ev_roots/1ba5b2aa8c65401a82960118f80bec4f62304d83cec4713a19c39c011ea46db4.pem b/net/data/ssl/ev_roots/certs/1ba5b2aa8c65401a82960118f80bec4f62304d83cec4713a19c39c011ea46db4.pem
similarity index 100%
rename from net/data/ssl/ev_roots/1ba5b2aa8c65401a82960118f80bec4f62304d83cec4713a19c39c011ea46db4.pem
rename to net/data/ssl/ev_roots/certs/1ba5b2aa8c65401a82960118f80bec4f62304d83cec4713a19c39c011ea46db4.pem
diff --git a/net/data/ssl/ev_roots/22a2c1f7bded704cc1e701b5f408c310880fe956b5de2a4a44f99c873a25a7c8.pem b/net/data/ssl/ev_roots/certs/22a2c1f7bded704cc1e701b5f408c310880fe956b5de2a4a44f99c873a25a7c8.pem
similarity index 100%
rename from net/data/ssl/ev_roots/22a2c1f7bded704cc1e701b5f408c310880fe956b5de2a4a44f99c873a25a7c8.pem
rename to net/data/ssl/ev_roots/certs/22a2c1f7bded704cc1e701b5f408c310880fe956b5de2a4a44f99c873a25a7c8.pem
diff --git a/net/data/ssl/ev_roots/23804203ca45d8cde716b8c13bf3b448457fa06cc10250997fa01458317c41e5.pem b/net/data/ssl/ev_roots/certs/23804203ca45d8cde716b8c13bf3b448457fa06cc10250997fa01458317c41e5.pem
similarity index 100%
rename from net/data/ssl/ev_roots/23804203ca45d8cde716b8c13bf3b448457fa06cc10250997fa01458317c41e5.pem
rename to net/data/ssl/ev_roots/certs/23804203ca45d8cde716b8c13bf3b448457fa06cc10250997fa01458317c41e5.pem
diff --git a/net/data/ssl/ev_roots/2530cc8e98321502bad96f9b1fba1b099e2d299e0f4548bb914f363bc0d4531f.pem b/net/data/ssl/ev_roots/certs/2530cc8e98321502bad96f9b1fba1b099e2d299e0f4548bb914f363bc0d4531f.pem
similarity index 100%
rename from net/data/ssl/ev_roots/2530cc8e98321502bad96f9b1fba1b099e2d299e0f4548bb914f363bc0d4531f.pem
rename to net/data/ssl/ev_roots/certs/2530cc8e98321502bad96f9b1fba1b099e2d299e0f4548bb914f363bc0d4531f.pem
diff --git a/net/data/ssl/ev_roots/2ce1cb0bf9d2f9e102993fbe215152c3b2dd0cabde1c68e5319b839154dbb7f5.pem b/net/data/ssl/ev_roots/certs/2ce1cb0bf9d2f9e102993fbe215152c3b2dd0cabde1c68e5319b839154dbb7f5.pem
similarity index 100%
rename from net/data/ssl/ev_roots/2ce1cb0bf9d2f9e102993fbe215152c3b2dd0cabde1c68e5319b839154dbb7f5.pem
rename to net/data/ssl/ev_roots/certs/2ce1cb0bf9d2f9e102993fbe215152c3b2dd0cabde1c68e5319b839154dbb7f5.pem
diff --git a/net/data/ssl/ev_roots/2e7bf16cc22485a7bbe2aa8696750761b0ae39be3b2fe9d0cc6d4ef73491425c.pem b/net/data/ssl/ev_roots/certs/2e7bf16cc22485a7bbe2aa8696750761b0ae39be3b2fe9d0cc6d4ef73491425c.pem
similarity index 100%
rename from net/data/ssl/ev_roots/2e7bf16cc22485a7bbe2aa8696750761b0ae39be3b2fe9d0cc6d4ef73491425c.pem
rename to net/data/ssl/ev_roots/certs/2e7bf16cc22485a7bbe2aa8696750761b0ae39be3b2fe9d0cc6d4ef73491425c.pem
diff --git a/net/data/ssl/ev_roots/31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0.pem b/net/data/ssl/ev_roots/certs/31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0.pem
similarity index 100%
rename from net/data/ssl/ev_roots/31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0.pem
rename to net/data/ssl/ev_roots/certs/31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0.pem
diff --git a/net/data/ssl/ev_roots/3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c.pem b/net/data/ssl/ev_roots/certs/3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c.pem
similarity index 100%
rename from net/data/ssl/ev_roots/3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c.pem
rename to net/data/ssl/ev_roots/certs/3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c.pem
diff --git a/net/data/ssl/ev_roots/40f6af0346a99aa1cd1d555a4e9cce62c7f9634603ee406615833dc8c8d00367.pem b/net/data/ssl/ev_roots/certs/40f6af0346a99aa1cd1d555a4e9cce62c7f9634603ee406615833dc8c8d00367.pem
similarity index 100%
rename from net/data/ssl/ev_roots/40f6af0346a99aa1cd1d555a4e9cce62c7f9634603ee406615833dc8c8d00367.pem
rename to net/data/ssl/ev_roots/certs/40f6af0346a99aa1cd1d555a4e9cce62c7f9634603ee406615833dc8c8d00367.pem
diff --git a/net/data/ssl/ev_roots/4200f5043ac8590ebb527d209ed1503029fbcbd41ca1b506ec27f15ade7dac69.pem b/net/data/ssl/ev_roots/certs/4200f5043ac8590ebb527d209ed1503029fbcbd41ca1b506ec27f15ade7dac69.pem
similarity index 100%
rename from net/data/ssl/ev_roots/4200f5043ac8590ebb527d209ed1503029fbcbd41ca1b506ec27f15ade7dac69.pem
rename to net/data/ssl/ev_roots/certs/4200f5043ac8590ebb527d209ed1503029fbcbd41ca1b506ec27f15ade7dac69.pem
diff --git a/net/data/ssl/ev_roots/4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161.pem b/net/data/ssl/ev_roots/certs/4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161.pem
similarity index 100%
rename from net/data/ssl/ev_roots/4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161.pem
rename to net/data/ssl/ev_roots/certs/4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161.pem
diff --git a/net/data/ssl/ev_roots/43df5774b03e7fef5fe40d931a7bedf1bb2e6b42738c4e6d3841103d3aa7f339.pem b/net/data/ssl/ev_roots/certs/43df5774b03e7fef5fe40d931a7bedf1bb2e6b42738c4e6d3841103d3aa7f339.pem
similarity index 100%
rename from net/data/ssl/ev_roots/43df5774b03e7fef5fe40d931a7bedf1bb2e6b42738c4e6d3841103d3aa7f339.pem
rename to net/data/ssl/ev_roots/certs/43df5774b03e7fef5fe40d931a7bedf1bb2e6b42738c4e6d3841103d3aa7f339.pem
diff --git a/net/data/ssl/ev_roots/45140b3247eb9cc8c5b4f0d7b53091f73292089e6e5a63e2749dd3aca9198eda.pem b/net/data/ssl/ev_roots/certs/45140b3247eb9cc8c5b4f0d7b53091f73292089e6e5a63e2749dd3aca9198eda.pem
similarity index 100%
rename from net/data/ssl/ev_roots/45140b3247eb9cc8c5b4f0d7b53091f73292089e6e5a63e2749dd3aca9198eda.pem
rename to net/data/ssl/ev_roots/certs/45140b3247eb9cc8c5b4f0d7b53091f73292089e6e5a63e2749dd3aca9198eda.pem
diff --git a/net/data/ssl/ev_roots/4d2491414cfe956746ec4cefa6cf6f72e28a1329432f9d8a907ac4cb5dadc15a.pem b/net/data/ssl/ev_roots/certs/4d2491414cfe956746ec4cefa6cf6f72e28a1329432f9d8a907ac4cb5dadc15a.pem
similarity index 100%
rename from net/data/ssl/ev_roots/4d2491414cfe956746ec4cefa6cf6f72e28a1329432f9d8a907ac4cb5dadc15a.pem
rename to net/data/ssl/ev_roots/certs/4d2491414cfe956746ec4cefa6cf6f72e28a1329432f9d8a907ac4cb5dadc15a.pem
diff --git a/net/data/ssl/ev_roots/4ff460d54b9c86dabfbcfc5712e0400d2bed3fbc4d4fbdaa86e06adcd2a9ad7a.pem b/net/data/ssl/ev_roots/certs/4ff460d54b9c86dabfbcfc5712e0400d2bed3fbc4d4fbdaa86e06adcd2a9ad7a.pem
similarity index 100%
rename from net/data/ssl/ev_roots/4ff460d54b9c86dabfbcfc5712e0400d2bed3fbc4d4fbdaa86e06adcd2a9ad7a.pem
rename to net/data/ssl/ev_roots/certs/4ff460d54b9c86dabfbcfc5712e0400d2bed3fbc4d4fbdaa86e06adcd2a9ad7a.pem
diff --git a/net/data/ssl/ev_roots/513b2cecb810d4cde5dd85391adfc6c2dd60d87bb736d2b521484aa47a0ebef6.pem b/net/data/ssl/ev_roots/certs/513b2cecb810d4cde5dd85391adfc6c2dd60d87bb736d2b521484aa47a0ebef6.pem
similarity index 100%
rename from net/data/ssl/ev_roots/513b2cecb810d4cde5dd85391adfc6c2dd60d87bb736d2b521484aa47a0ebef6.pem
rename to net/data/ssl/ev_roots/certs/513b2cecb810d4cde5dd85391adfc6c2dd60d87bb736d2b521484aa47a0ebef6.pem
diff --git a/net/data/ssl/ev_roots/52f0e1c4e58ec629291b60317f074671b85d7ea80d5b07273463534b32b40234.pem b/net/data/ssl/ev_roots/certs/52f0e1c4e58ec629291b60317f074671b85d7ea80d5b07273463534b32b40234.pem
similarity index 100%
rename from net/data/ssl/ev_roots/52f0e1c4e58ec629291b60317f074671b85d7ea80d5b07273463534b32b40234.pem
rename to net/data/ssl/ev_roots/certs/52f0e1c4e58ec629291b60317f074671b85d7ea80d5b07273463534b32b40234.pem
diff --git a/net/data/ssl/ev_roots/54455f7129c20b1447c418f997168f24c58fc5023bf5da5be2eb6e1dd8902ed5.pem b/net/data/ssl/ev_roots/certs/54455f7129c20b1447c418f997168f24c58fc5023bf5da5be2eb6e1dd8902ed5.pem
similarity index 100%
rename from net/data/ssl/ev_roots/54455f7129c20b1447c418f997168f24c58fc5023bf5da5be2eb6e1dd8902ed5.pem
rename to net/data/ssl/ev_roots/certs/54455f7129c20b1447c418f997168f24c58fc5023bf5da5be2eb6e1dd8902ed5.pem
diff --git a/net/data/ssl/ev_roots/552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988.pem b/net/data/ssl/ev_roots/certs/552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988.pem
similarity index 100%
rename from net/data/ssl/ev_roots/552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988.pem
rename to net/data/ssl/ev_roots/certs/552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988.pem
diff --git a/net/data/ssl/ev_roots/55926084ec963a64b96e2abe01ce0ba86a64fbfebcc7aab5afc155b37fd76066.pem b/net/data/ssl/ev_roots/certs/55926084ec963a64b96e2abe01ce0ba86a64fbfebcc7aab5afc155b37fd76066.pem
similarity index 100%
rename from net/data/ssl/ev_roots/55926084ec963a64b96e2abe01ce0ba86a64fbfebcc7aab5afc155b37fd76066.pem
rename to net/data/ssl/ev_roots/certs/55926084ec963a64b96e2abe01ce0ba86a64fbfebcc7aab5afc155b37fd76066.pem
diff --git a/net/data/ssl/ev_roots/568d6905a2c88708a4b3025190edcfedb1974a606a13c6e5290fcb2ae63edab5.pem b/net/data/ssl/ev_roots/certs/568d6905a2c88708a4b3025190edcfedb1974a606a13c6e5290fcb2ae63edab5.pem
similarity index 100%
rename from net/data/ssl/ev_roots/568d6905a2c88708a4b3025190edcfedb1974a606a13c6e5290fcb2ae63edab5.pem
rename to net/data/ssl/ev_roots/certs/568d6905a2c88708a4b3025190edcfedb1974a606a13c6e5290fcb2ae63edab5.pem
diff --git a/net/data/ssl/ev_roots/59769007f7685d0fcd50872f9f95d5755a5b2b457d81f3692b610a98672f0e1b.pem b/net/data/ssl/ev_roots/certs/59769007f7685d0fcd50872f9f95d5755a5b2b457d81f3692b610a98672f0e1b.pem
similarity index 100%
rename from net/data/ssl/ev_roots/59769007f7685d0fcd50872f9f95d5755a5b2b457d81f3692b610a98672f0e1b.pem
rename to net/data/ssl/ev_roots/certs/59769007f7685d0fcd50872f9f95d5755a5b2b457d81f3692b610a98672f0e1b.pem
diff --git a/net/data/ssl/ev_roots/5a2fc03f0c83b090bbfa40604b0988446c7636183df9846e17101a447fb8efd6.pem b/net/data/ssl/ev_roots/certs/5a2fc03f0c83b090bbfa40604b0988446c7636183df9846e17101a447fb8efd6.pem
similarity index 100%
rename from net/data/ssl/ev_roots/5a2fc03f0c83b090bbfa40604b0988446c7636183df9846e17101a447fb8efd6.pem
rename to net/data/ssl/ev_roots/certs/5a2fc03f0c83b090bbfa40604b0988446c7636183df9846e17101a447fb8efd6.pem
diff --git a/net/data/ssl/ev_roots/5c58468d55f58e497e743982d2b50010b6d165374acf83a7d4a32db768c4408e.pem b/net/data/ssl/ev_roots/certs/5c58468d55f58e497e743982d2b50010b6d165374acf83a7d4a32db768c4408e.pem
similarity index 100%
rename from net/data/ssl/ev_roots/5c58468d55f58e497e743982d2b50010b6d165374acf83a7d4a32db768c4408e.pem
rename to net/data/ssl/ev_roots/certs/5c58468d55f58e497e743982d2b50010b6d165374acf83a7d4a32db768c4408e.pem
diff --git a/net/data/ssl/ev_roots/5cc3d78e4e1d5e45547a04e6873e64f90cf9536d1ccc2ef800f355c4c5fd70fd.pem b/net/data/ssl/ev_roots/certs/5cc3d78e4e1d5e45547a04e6873e64f90cf9536d1ccc2ef800f355c4c5fd70fd.pem
similarity index 100%
rename from net/data/ssl/ev_roots/5cc3d78e4e1d5e45547a04e6873e64f90cf9536d1ccc2ef800f355c4c5fd70fd.pem
rename to net/data/ssl/ev_roots/certs/5cc3d78e4e1d5e45547a04e6873e64f90cf9536d1ccc2ef800f355c4c5fd70fd.pem
diff --git a/net/data/ssl/ev_roots/62dd0be9b9f50a163ea0f8e75c053b1eca57ea55c8688f647c6881f2c8357b95.pem b/net/data/ssl/ev_roots/certs/62dd0be9b9f50a163ea0f8e75c053b1eca57ea55c8688f647c6881f2c8357b95.pem
similarity index 100%
rename from net/data/ssl/ev_roots/62dd0be9b9f50a163ea0f8e75c053b1eca57ea55c8688f647c6881f2c8357b95.pem
rename to net/data/ssl/ev_roots/certs/62dd0be9b9f50a163ea0f8e75c053b1eca57ea55c8688f647c6881f2c8357b95.pem
diff --git a/net/data/ssl/ev_roots/687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2.pem b/net/data/ssl/ev_roots/certs/687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2.pem
similarity index 100%
rename from net/data/ssl/ev_roots/687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2.pem
rename to net/data/ssl/ev_roots/certs/687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2.pem
diff --git a/net/data/ssl/ev_roots/6b9c08e86eb0f767cfad65cd98b62149e5494a67f5845e7bd1ed019f27b86bd6.pem b/net/data/ssl/ev_roots/certs/6b9c08e86eb0f767cfad65cd98b62149e5494a67f5845e7bd1ed019f27b86bd6.pem
similarity index 100%
rename from net/data/ssl/ev_roots/6b9c08e86eb0f767cfad65cd98b62149e5494a67f5845e7bd1ed019f27b86bd6.pem
rename to net/data/ssl/ev_roots/certs/6b9c08e86eb0f767cfad65cd98b62149e5494a67f5845e7bd1ed019f27b86bd6.pem
diff --git a/net/data/ssl/ev_roots/70a73f7f376b60074248904534b11482d5bf0e698ecc498df52577ebf2e93b9a.pem b/net/data/ssl/ev_roots/certs/70a73f7f376b60074248904534b11482d5bf0e698ecc498df52577ebf2e93b9a.pem
similarity index 100%
rename from net/data/ssl/ev_roots/70a73f7f376b60074248904534b11482d5bf0e698ecc498df52577ebf2e93b9a.pem
rename to net/data/ssl/ev_roots/certs/70a73f7f376b60074248904534b11482d5bf0e698ecc498df52577ebf2e93b9a.pem
diff --git a/net/data/ssl/ev_roots/73c176434f1bc6d5adf45b0e76e727287c8de57616c1e6e6141a2b2cbc7d8e4c.pem b/net/data/ssl/ev_roots/certs/73c176434f1bc6d5adf45b0e76e727287c8de57616c1e6e6141a2b2cbc7d8e4c.pem
similarity index 100%
rename from net/data/ssl/ev_roots/73c176434f1bc6d5adf45b0e76e727287c8de57616c1e6e6141a2b2cbc7d8e4c.pem
rename to net/data/ssl/ev_roots/certs/73c176434f1bc6d5adf45b0e76e727287c8de57616c1e6e6141a2b2cbc7d8e4c.pem
diff --git a/net/data/ssl/ev_roots/7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf.pem b/net/data/ssl/ev_roots/certs/7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf.pem
similarity index 100%
rename from net/data/ssl/ev_roots/7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf.pem
rename to net/data/ssl/ev_roots/certs/7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf.pem
diff --git a/net/data/ssl/ev_roots/7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185.pem b/net/data/ssl/ev_roots/certs/7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185.pem
similarity index 100%
rename from net/data/ssl/ev_roots/7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185.pem
rename to net/data/ssl/ev_roots/certs/7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185.pem
diff --git a/net/data/ssl/ev_roots/7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2.pem b/net/data/ssl/ev_roots/certs/7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2.pem
similarity index 100%
rename from net/data/ssl/ev_roots/7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2.pem
rename to net/data/ssl/ev_roots/certs/7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2.pem
diff --git a/net/data/ssl/ev_roots/85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86.pem b/net/data/ssl/ev_roots/certs/85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86.pem
similarity index 100%
rename from net/data/ssl/ev_roots/85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86.pem
rename to net/data/ssl/ev_roots/certs/85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86.pem
diff --git a/net/data/ssl/ev_roots/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e.pem b/net/data/ssl/ev_roots/certs/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e.pem
similarity index 100%
rename from net/data/ssl/ev_roots/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e.pem
rename to net/data/ssl/ev_roots/certs/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e.pem
diff --git a/net/data/ssl/ev_roots/8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840.pem b/net/data/ssl/ev_roots/certs/8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840.pem
similarity index 100%
rename from net/data/ssl/ev_roots/8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840.pem
rename to net/data/ssl/ev_roots/certs/8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840.pem
diff --git a/net/data/ssl/ev_roots/960adf0063e96356750c2965dd0a0867da0b9cbd6e77714aeafb2349ab393da3.pem b/net/data/ssl/ev_roots/certs/960adf0063e96356750c2965dd0a0867da0b9cbd6e77714aeafb2349ab393da3.pem
similarity index 100%
rename from net/data/ssl/ev_roots/960adf0063e96356750c2965dd0a0867da0b9cbd6e77714aeafb2349ab393da3.pem
rename to net/data/ssl/ev_roots/certs/960adf0063e96356750c2965dd0a0867da0b9cbd6e77714aeafb2349ab393da3.pem
diff --git a/net/data/ssl/ev_roots/b0bfd52bb0d7d9bd92bf5d4dc13da255c02c542f378365ea893911f55e55f23c.pem b/net/data/ssl/ev_roots/certs/b0bfd52bb0d7d9bd92bf5d4dc13da255c02c542f378365ea893911f55e55f23c.pem
similarity index 100%
rename from net/data/ssl/ev_roots/b0bfd52bb0d7d9bd92bf5d4dc13da255c02c542f378365ea893911f55e55f23c.pem
rename to net/data/ssl/ev_roots/certs/b0bfd52bb0d7d9bd92bf5d4dc13da255c02c542f378365ea893911f55e55f23c.pem
diff --git a/net/data/ssl/ev_roots/bd71fdf6da97e4cf62d1647add2581b07d79adf8397eb4ecba9c5e8488821423.pem b/net/data/ssl/ev_roots/certs/bd71fdf6da97e4cf62d1647add2581b07d79adf8397eb4ecba9c5e8488821423.pem
similarity index 100%
rename from net/data/ssl/ev_roots/bd71fdf6da97e4cf62d1647add2581b07d79adf8397eb4ecba9c5e8488821423.pem
rename to net/data/ssl/ev_roots/certs/bd71fdf6da97e4cf62d1647add2581b07d79adf8397eb4ecba9c5e8488821423.pem
diff --git a/net/data/ssl/ev_roots/bfd88fe1101c41ae3e801bf8be56350ee9bad1a6b9bd515edc5c6d5b8711ac44.pem b/net/data/ssl/ev_roots/certs/bfd88fe1101c41ae3e801bf8be56350ee9bad1a6b9bd515edc5c6d5b8711ac44.pem
similarity index 100%
rename from net/data/ssl/ev_roots/bfd88fe1101c41ae3e801bf8be56350ee9bad1a6b9bd515edc5c6d5b8711ac44.pem
rename to net/data/ssl/ev_roots/certs/bfd88fe1101c41ae3e801bf8be56350ee9bad1a6b9bd515edc5c6d5b8711ac44.pem
diff --git a/net/data/ssl/ev_roots/c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4.pem b/net/data/ssl/ev_roots/certs/c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4.pem
similarity index 100%
rename from net/data/ssl/ev_roots/c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4.pem
rename to net/data/ssl/ev_roots/certs/c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4.pem
diff --git a/net/data/ssl/ev_roots/cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f.pem b/net/data/ssl/ev_roots/certs/cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f.pem
similarity index 100%
rename from net/data/ssl/ev_roots/cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f.pem
rename to net/data/ssl/ev_roots/certs/cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f.pem
diff --git a/net/data/ssl/ev_roots/cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b.pem b/net/data/ssl/ev_roots/certs/cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b.pem
similarity index 100%
rename from net/data/ssl/ev_roots/cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b.pem
rename to net/data/ssl/ev_roots/certs/cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b.pem
diff --git a/net/data/ssl/ev_roots/cecddc905099d8dadfc5b1d209b737cbe2c18cfb2c10c0ff0bcf0d3286fc1aa2.pem b/net/data/ssl/ev_roots/certs/cecddc905099d8dadfc5b1d209b737cbe2c18cfb2c10c0ff0bcf0d3286fc1aa2.pem
similarity index 100%
rename from net/data/ssl/ev_roots/cecddc905099d8dadfc5b1d209b737cbe2c18cfb2c10c0ff0bcf0d3286fc1aa2.pem
rename to net/data/ssl/ev_roots/certs/cecddc905099d8dadfc5b1d209b737cbe2c18cfb2c10c0ff0bcf0d3286fc1aa2.pem
diff --git a/net/data/ssl/ev_roots/d43af9b35473755c9684fc06d7d8cb70ee5c28e773fb294eb41ee71722924d24.pem b/net/data/ssl/ev_roots/certs/d43af9b35473755c9684fc06d7d8cb70ee5c28e773fb294eb41ee71722924d24.pem
similarity index 100%
rename from net/data/ssl/ev_roots/d43af9b35473755c9684fc06d7d8cb70ee5c28e773fb294eb41ee71722924d24.pem
rename to net/data/ssl/ev_roots/certs/d43af9b35473755c9684fc06d7d8cb70ee5c28e773fb294eb41ee71722924d24.pem
diff --git a/net/data/ssl/ev_roots/e35d28419ed02025cfa69038cd623962458da5c695fbdea3c22b0bfb25897092.pem b/net/data/ssl/ev_roots/certs/e35d28419ed02025cfa69038cd623962458da5c695fbdea3c22b0bfb25897092.pem
similarity index 100%
rename from net/data/ssl/ev_roots/e35d28419ed02025cfa69038cd623962458da5c695fbdea3c22b0bfb25897092.pem
rename to net/data/ssl/ev_roots/certs/e35d28419ed02025cfa69038cd623962458da5c695fbdea3c22b0bfb25897092.pem
diff --git a/net/data/ssl/ev_roots/e75e72ed9f560eec6eb4800073a43fc3ad19195a392282017895974a99026b6c.pem b/net/data/ssl/ev_roots/certs/e75e72ed9f560eec6eb4800073a43fc3ad19195a392282017895974a99026b6c.pem
similarity index 100%
rename from net/data/ssl/ev_roots/e75e72ed9f560eec6eb4800073a43fc3ad19195a392282017895974a99026b6c.pem
rename to net/data/ssl/ev_roots/certs/e75e72ed9f560eec6eb4800073a43fc3ad19195a392282017895974a99026b6c.pem
diff --git a/net/data/ssl/ev_roots/e793c9b02fd8aa13e21c31228accb08119643b749c898964b1746d46c3d4cbd2.pem b/net/data/ssl/ev_roots/certs/e793c9b02fd8aa13e21c31228accb08119643b749c898964b1746d46c3d4cbd2.pem
similarity index 100%
rename from net/data/ssl/ev_roots/e793c9b02fd8aa13e21c31228accb08119643b749c898964b1746d46c3d4cbd2.pem
rename to net/data/ssl/ev_roots/certs/e793c9b02fd8aa13e21c31228accb08119643b749c898964b1746d46c3d4cbd2.pem
diff --git a/net/data/ssl/ev_roots/ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99.pem b/net/data/ssl/ev_roots/certs/ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99.pem
similarity index 100%
rename from net/data/ssl/ev_roots/ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99.pem
rename to net/data/ssl/ev_roots/certs/ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99.pem
diff --git a/net/data/ssl/ev_roots/edf7ebbca27a2a384d387b7d4010c666e2edb4843e4c29b4ae1d5b9332e6b24d.pem b/net/data/ssl/ev_roots/certs/edf7ebbca27a2a384d387b7d4010c666e2edb4843e4c29b4ae1d5b9332e6b24d.pem
similarity index 100%
rename from net/data/ssl/ev_roots/edf7ebbca27a2a384d387b7d4010c666e2edb4843e4c29b4ae1d5b9332e6b24d.pem
rename to net/data/ssl/ev_roots/certs/edf7ebbca27a2a384d387b7d4010c666e2edb4843e4c29b4ae1d5b9332e6b24d.pem
diff --git a/net/data/ssl/ev_roots/eec5496b988ce98625b934092eec2908bed0b0f316c2d4730c84eaf1f3d34881.pem b/net/data/ssl/ev_roots/certs/eec5496b988ce98625b934092eec2908bed0b0f316c2d4730c84eaf1f3d34881.pem
similarity index 100%
rename from net/data/ssl/ev_roots/eec5496b988ce98625b934092eec2908bed0b0f316c2d4730c84eaf1f3d34881.pem
rename to net/data/ssl/ev_roots/certs/eec5496b988ce98625b934092eec2908bed0b0f316c2d4730c84eaf1f3d34881.pem
diff --git a/net/data/ssl/ev_roots/f1c1b50ae5a20dd8030ec9f6bc24823dd367b5255759b4e71b61fce9f7375d73.pem b/net/data/ssl/ev_roots/certs/f1c1b50ae5a20dd8030ec9f6bc24823dd367b5255759b4e71b61fce9f7375d73.pem
similarity index 100%
rename from net/data/ssl/ev_roots/f1c1b50ae5a20dd8030ec9f6bc24823dd367b5255759b4e71b61fce9f7375d73.pem
rename to net/data/ssl/ev_roots/certs/f1c1b50ae5a20dd8030ec9f6bc24823dd367b5255759b4e71b61fce9f7375d73.pem
diff --git a/net/data/ssl/ev_roots/fd73dad31c644ff1b43bef0ccdda96710b9cd9875eca7e31707af3e96d522bbd.pem b/net/data/ssl/ev_roots/certs/fd73dad31c644ff1b43bef0ccdda96710b9cd9875eca7e31707af3e96d522bbd.pem
similarity index 100%
rename from net/data/ssl/ev_roots/fd73dad31c644ff1b43bef0ccdda96710b9cd9875eca7e31707af3e96d522bbd.pem
rename to net/data/ssl/ev_roots/certs/fd73dad31c644ff1b43bef0ccdda96710b9cd9875eca7e31707af3e96d522bbd.pem
diff --git a/net/data/ssl/ev_roots/root_store.textproto b/net/data/ssl/ev_roots/root_store.textproto
new file mode 100644
index 0000000..239aa43
--- /dev/null
+++ b/net/data/ssl/ev_roots/root_store.textproto
@@ -0,0 +1,540 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# When adding a trust anchor, name the PEM based on the SHA-256 fingerprint of
+# the certificate. Also make sure to add the PEM file to the inputs section of
+# BUILD.gn.
+
+# AC Camerfirma S.A. Chambers of Commerce Root - 2008
+# https://www.camerfirma.com
+trust_anchors {
+  filename: "063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem"
+
+  # AC Camerfirma uses the last two arcs to track how the private key
+  # is managed - the effective verification policy is the same.
+  ev_policy_oids: "1.3.6.1.4.1.17326.10.14.2.1.2"
+  ev_policy_oids: "1.3.6.1.4.1.17326.10.14.2.2.2"
+}
+
+# AddTrust External CA Root
+# https://addtrustexternalcaroot-ev.comodoca.com
+trust_anchors {
+  filename: "687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6449.1.2.1.5.1"
+  # This is the Network Solutions EV OID. However, this root
+  # cross-certifies NetSol and so we need it here too.
+  ev_policy_oids: "1.3.6.1.4.1.782.1.2.1.8.1"
+}
+
+# Actalis Authentication Root CA
+# https://ssltest-a.actalis.it:8443
+trust_anchors {
+  filename: "55926084ec963a64b96e2abe01ce0ba86a64fbfebcc7aab5afc155b37fd76066.pem"
+  ev_policy_oids: "1.3.159.1.17.1"
+}
+
+# AffirmTrust Commercial
+# https://commercial.affirmtrust.com/
+trust_anchors {
+  filename: "0376ab1d54c5f9803ce4b2e201a0ee7eef7b57b636e8a93c9b8d4860c96f5fa7.pem"
+  ev_policy_oids: "1.3.6.1.4.1.34697.2.1"
+}
+
+# AffirmTrust Networking
+# https://networking.affirmtrust.com:4431
+trust_anchors {
+  filename: "0a81ec5a929777f145904af38d5d509f66b5e2c58fcdb531058b0e17f3f0b41b.pem"
+  ev_policy_oids: "1.3.6.1.4.1.34697.2.2"
+}
+
+# AffirmTrust Premium
+# https://premium.affirmtrust.com:4432/
+trust_anchors {
+  filename: "70a73f7f376b60074248904534b11482d5bf0e698ecc498df52577ebf2e93b9a.pem"
+  ev_policy_oids: "1.3.6.1.4.1.34697.2.3"
+}
+
+# AffirmTrust Premium ECC
+# https://premiumecc.affirmtrust.com:4433/
+trust_anchors {
+  filename: "bd71fdf6da97e4cf62d1647add2581b07d79adf8397eb4ecba9c5e8488821423.pem"
+  ev_policy_oids: "1.3.6.1.4.1.34697.2.4"
+}
+
+# Amazon Root CA 1
+# https://good.sca1a.amazontrust.com/
+trust_anchors {
+  filename: "8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e.pem"
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# Amazon Root CA 2
+# https://good.sca2a.amazontrust.com/
+trust_anchors {
+  filename: "1ba5b2aa8c65401a82960118f80bec4f62304d83cec4713a19c39c011ea46db4.pem"
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# Amazon Root CA 3
+# https://good.sca3a.amazontrust.com/
+trust_anchors {
+  filename: "18ce6cfe7bf14e60b2e347b8dfe868cb31d02ebb3ada271569f50343b46db3a4.pem"
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# Amazon Root CA 4
+# https://good.sca4a.amazontrust.com/
+trust_anchors {
+  filename: "e35d28419ed02025cfa69038cd623962458da5c695fbdea3c22b0bfb25897092.pem"
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# Autoridad de Certificacion Firmaprofesional CIF A62634068
+# https://publifirma.firmaprofesional.com/
+trust_anchors {
+  filename: "04048028bf1f2864d48f9ad4d83294366a828856553f3b14303f90147f5d40ef.pem"
+  ev_policy_oids: "1.3.6.1.4.1.13177.10.1.3.10"
+}
+
+# Baltimore CyberTrust Root
+# https://secure.omniroot.com/repository/
+trust_anchors {
+  filename: "16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb.pem"
+  ev_policy_oids: "1.3.6.1.4.1.6334.1.100.1"
+}
+
+# Buypass Class 3 Root CA
+# https://valid.evident.ca23.ssl.buypass.no/
+trust_anchors {
+  filename: "edf7ebbca27a2a384d387b7d4010c666e2edb4843e4c29b4ae1d5b9332e6b24d.pem"
+  ev_policy_oids: "2.16.578.1.26.1.3.3"
+}
+# Certum Trusted Network CA
+# https://juice.certum.pl/
+trust_anchors {
+  filename: "5c58468d55f58e497e743982d2b50010b6d165374acf83a7d4a32db768c4408e.pem"
+  ev_policy_oids: "1.2.616.1.113527.2.5.1.1"
+}
+
+# CFCA EV ROOT
+# https://www.erenepu.com/
+trust_anchors {
+  filename: "5cc3d78e4e1d5e45547a04e6873e64f90cf9536d1ccc2ef800f355c4c5fd70fd.pem"
+  ev_policy_oids: "2.16.156.112554.3"
+}
+
+# COMODO Certification Authority
+# https://secure.comodo.com/
+trust_anchors {
+  filename: "0c2cd63df7806fa399ede809116b575bf87989f06518f9808c860503178baf66.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6449.1.2.1.5.1"
+}
+
+# COMODO Certification Authority (reissued certificate with NotBefore of
+# Jan 1 00:00:00 2011 GMT)
+# https://secure.comodo.com/
+trust_anchors {
+  filename: "1a0d20445de5ba1862d19ef880858cbce50102b36e8f0a040c3c69e74522fe6e.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6449.1.2.1.5.1"
+}
+
+# COMODO ECC Certification Authority
+# https://comodoecccertificationauthority-ev.comodoca.com/
+trust_anchors {
+  filename: "1793927a0614549789adce2f8f34f7f0b66d0f3ae3a3b84d21ec15dbba4fadc7.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6449.1.2.1.5.1"
+}
+
+# COMODO RSA Certification Authority
+# https://comodorsacertificationauthority-ev.comodoca.com/
+trust_anchors {
+  filename: "52f0e1c4e58ec629291b60317f074671b85d7ea80d5b07273463534b32b40234.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6449.1.2.1.5.1"
+}
+
+# Cybertrust Global Root
+# https://evup.cybertrust.ne.jp/ctj-ev-upgrader/evseal.gif
+trust_anchors {
+  filename: "960adf0063e96356750c2965dd0a0867da0b9cbd6e77714aeafb2349ab393da3.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6334.1.100.1"
+}
+
+# DigiCert Assured ID Root CA
+# https://assured-id-root-ca.chain-demos.digicert.com/
+trust_anchors {
+  filename: "3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# DigiCert Assured ID Root G2
+# https://assured-id-root-g2.chain-demos.digicert.com/
+trust_anchors {
+  filename: "7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# DigiCert Assured ID Root G3
+# https://assured-id-root-g3.chain-demos.digicert.com/
+trust_anchors {
+  filename: "7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# DigiCert Global Root CA
+# https://global-root-ca.chain-demos.digicert.com/
+trust_anchors {
+  filename: "4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# DigiCert Global Root G2
+# https://global-root-g2.chain-demos.digicert.com/
+trust_anchors {
+  filename: "cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# DigiCert Global Root G3
+# https://global-root-g3.chain-demos.digicert.com/
+trust_anchors {
+  filename: "31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# DigiCert High Assurance EV Root CA
+# https://www.digicert.com
+trust_anchors {
+  filename: "7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# DigiCert Trusted Root G4
+# https://trusted-root-g4.chain-demos.digicert.com/
+trust_anchors {
+  filename: "552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988.pem"
+
+  ev_policy_oids: "2.16.840.1.114412.2.1"
+}
+
+# D-TRUST Root Class 3 CA 2 EV 2009
+# https://certdemo-ev-valid.ssl.d-trust.net/
+trust_anchors {
+  filename: "eec5496b988ce98625b934092eec2908bed0b0f316c2d4730c84eaf1f3d34881.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.4788.2.202.1"
+}
+
+# emSign Root CA - G1
+# https://testevg1.emsign.com/
+trust_anchors {
+  filename: "40f6af0346a99aa1cd1d555a4e9cce62c7f9634603ee406615833dc8c8d00367.pem"
+
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# Entrust Root Certification Authority
+# https://www.entrust.net/
+trust_anchors {
+  filename: "73c176434f1bc6d5adf45b0e76e727287c8de57616c1e6e6141a2b2cbc7d8e4c.pem"
+
+  ev_policy_oids: "2.16.840.1.114028.10.1.2"
+}
+
+# Entrust Root Certification Authority – G2
+# https://validg2.entrust.net
+trust_anchors {
+  filename: "43df5774b03e7fef5fe40d931a7bedf1bb2e6b42738c4e6d3841103d3aa7f339.pem"
+
+  ev_policy_oids: "2.16.840.1.114028.10.1.2"
+}
+
+# Entrust Root Certification Authority – EC1
+# https://validec.entrust.net
+trust_anchors {
+  filename: "02ed0eb28c14da45165c566791700d6451d7fb56f0b2ab1d3b8eb070e56edff5.pem"
+
+  ev_policy_oids: "2.16.840.1.114028.10.1.2"
+}
+
+# E-Tugra Certification Authority
+# https://sslev.e-tugra.com.tr
+trust_anchors {
+  filename: "b0bfd52bb0d7d9bd92bf5d4dc13da255c02c542f378365ea893911f55e55f23c.pem"
+
+  ev_policy_oids: "2.16.792.3.0.4.1.1.4"
+}
+
+# GlobalSign Root CA
+trust_anchors {
+  filename: "ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.4146.1.1"
+}
+
+# GlobalSign Root CA - R3
+# https://2029.globalsign.com/
+trust_anchors {
+  filename: "cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.4146.1.1"
+}
+
+# GlobalSign ECC Root CA - R5
+# https://2038r5.globalsign.com/
+trust_anchors {
+  filename: "179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.4146.1.1"
+}
+
+# Go Daddy Class 2 Certification Authority
+# https://www.godaddy.com/
+trust_anchors {
+  filename: "c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4.pem"
+
+  ev_policy_oids: "2.16.840.1.114413.1.7.23.3"
+}
+
+# Go Daddy Root Certificate Authority - G2
+# https://valid.gdig2.catest.godaddy.com/
+trust_anchors {
+  filename: "45140b3247eb9cc8c5b4f0d7b53091f73292089e6e5a63e2749dd3aca9198eda.pem"
+
+  ev_policy_oids: "2.16.840.1.114413.1.7.23.3"
+}
+# Hongkong Post Root CA 3
+# https://valid-ev.ecert.gov.hk/
+trust_anchors {
+  filename: "5a2fc03f0c83b090bbfa40604b0988446c7636183df9846e17101a447fb8efd6.pem"
+
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# Izenpe.com - SHA256 root
+# The first OID is for businesses and the second for government entities.
+# These are the test sites, respectively:
+# https://servicios.izenpe.com
+# https://servicios1.izenpe.com
+trust_anchors {
+  filename: "2530cc8e98321502bad96f9b1fba1b099e2d299e0f4548bb914f363bc0d4531f.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.14777.6.1.1",
+  ev_policy_oids: "1.3.6.1.4.1.14777.6.1.2"
+}
+
+# Izenpe.com - SHA1 root
+# Windows XP finds this, SHA1, root instead. The policy OIDs are the same
+# as for the SHA256 root, above.
+trust_anchors {
+  filename: "23804203ca45d8cde716b8c13bf3b448457fa06cc10250997fa01458317c41e5.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.14777.6.1.1"
+  ev_policy_oids: "1.3.6.1.4.1.14777.6.1.2"
+}
+
+# LuxTrust Global Root 2
+# https://ltsslca5.trustme.lu/
+trust_anchors {
+  filename: "54455f7129c20b1447c418f997168f24c58fc5023bf5da5be2eb6e1dd8902ed5.pem"
+
+  ev_policy_oids: "1.3.171.1.1.10.5.2"
+}
+
+# Network Solutions Certificate Authority
+# https://www.networksolutions.com/website-packages/index.jsp
+trust_anchors {
+  filename: "15f0ba00a3ac7af3ac884c072b1011a077bd77c097f40164b2f8598abd83860c.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.782.1.2.1.8.1"
+}
+
+# Network Solutions Certificate Authority (reissued certificate with
+# NotBefore of Jan  1 00:00:00 2011 GMT).
+# https://www.networksolutions.com/website-packages/index.jsp
+trust_anchors {
+  filename: "001686cd181f83a1b1217d305b365c41e3470a78a1d37b134a98cd547b92dab3.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.782.1.2.1.8.1"
+}
+
+# OISTE WISeKey Global Root GB CA
+# https://goodevssl.wisekey.com
+trust_anchors {
+  filename: "6b9c08e86eb0f767cfad65cd98b62149e5494a67f5845e7bd1ed019f27b86bd6.pem"
+
+  ev_policy_oids: "2.16.756.5.14.7.4.8"
+}
+
+# QuoVadis Root CA 2
+# https://www.quovadis.bm/
+trust_anchors {
+  filename: "85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.8024.0.2.100.1.2"
+}
+
+# QuoVadis Root CA 2 G3
+# https://evsslicag3-v.quovadisglobal.com/
+trust_anchors {
+  filename: "8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.8024.0.2.100.1.2"
+}
+
+# SecureTrust CA, SecureTrust Corporation
+# https://www.securetrust.com
+# https://www.trustwave.com/
+trust_anchors {
+  filename: "f1c1b50ae5a20dd8030ec9f6bc24823dd367b5255759b4e71b61fce9f7375d73.pem"
+
+  ev_policy_oids: "2.16.840.1.114404.1.1.2.4.1"
+}
+
+# Secure Global CA, SecureTrust Corporation
+trust_anchors {
+  filename: "4200f5043ac8590ebb527d209ed1503029fbcbd41ca1b506ec27f15ade7dac69.pem"
+
+  ev_policy_oids: "2.16.840.1.114404.1.1.2.4.1"
+}
+
+# Security Communication RootCA1
+# https://www.secomtrust.net/contact/form.html
+trust_anchors {
+  filename: "e75e72ed9f560eec6eb4800073a43fc3ad19195a392282017895974a99026b6c.pem"
+
+  ev_policy_oids: "1.2.392.200091.100.721.1"
+}
+
+# Security Communication EV RootCA2
+# https://www.secomtrust.net/contact/form.html
+trust_anchors {
+  filename: "513b2cecb810d4cde5dd85391adfc6c2dd60d87bb736d2b521484aa47a0ebef6.pem"
+
+  ev_policy_oids: "1.2.392.200091.100.721.1"
+}
+
+# SSL.com EV Root Certification Authority ECC
+# https://test-ev-ecc.ssl.com/
+trust_anchors {
+  filename: "22a2c1f7bded704cc1e701b5f408c310880fe956b5de2a4a44f99c873a25a7c8.pem"
+
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# SSL.com EV Root Certification Authority RSA R2
+# https://test-ev-rsa.ssl.com/
+trust_anchors {
+  filename: "2e7bf16cc22485a7bbe2aa8696750761b0ae39be3b2fe9d0cc6d4ef73491425c.pem"
+
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# Staat der Nederlanden EV Root CA
+# https://pkioevssl-v.quovadisglobal.com/
+trust_anchors {
+  filename: "4d2491414cfe956746ec4cefa6cf6f72e28a1329432f9d8a907ac4cb5dadc15a.pem"
+
+  ev_policy_oids: "2.16.528.1.1003.1.2.7"
+}
+
+# Starfield Class 2 Certification Authority
+# https://www.starfieldtech.com/
+trust_anchors {
+  filename: "1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658.pem"
+
+  ev_policy_oids: "2.16.840.1.114414.1.7.23.3"
+}
+
+# Starfield Root Certificate Authority - G2
+# https://valid.sfig2.catest.starfieldtech.com/
+trust_anchors {
+  filename: "2ce1cb0bf9d2f9e102993fbe215152c3b2dd0cabde1c68e5319b839154dbb7f5.pem"
+
+  ev_policy_oids: "2.16.840.1.114414.1.7.23.3"
+}
+
+# Starfield Services Root Certificate Authority - G2
+# https://valid.sfsg2.catest.starfieldtech.com/
+trust_anchors {
+  filename: "568d6905a2c88708a4b3025190edcfedb1974a606a13c6e5290fcb2ae63edab5.pem"
+
+  ev_policy_oids: "2.16.840.1.114414.1.7.24.3"
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# SwissSign Gold CA - G2
+# https://testevg2.swisssign.net/
+trust_anchors {
+  filename: "62dd0be9b9f50a163ea0f8e75c053b1eca57ea55c8688f647c6881f2c8357b95.pem"
+
+  ev_policy_oids: "2.16.756.1.89.1.2.1.1"
+}
+
+# TWCA Global Root CA
+# https://evssldemo3.twca.com.tw/index.html
+trust_anchors {
+  filename: "59769007f7685d0fcd50872f9f95d5755a5b2b457d81f3692b610a98672f0e1b.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.40869.1.1.22.3"
+}
+
+# TWCA Root Certification Authority
+# https://evssldemo.twca.com.tw/index.html
+trust_anchors {
+  filename: "bfd88fe1101c41ae3e801bf8be56350ee9bad1a6b9bd515edc5c6d5b8711ac44.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.40869.1.1.22.3"
+}
+
+# T-TeleSec GlobalRoot Class 3
+# http://www.telesec.de/ / https://root-class3.test.telesec.de/
+trust_anchors {
+  filename: "fd73dad31c644ff1b43bef0ccdda96710b9cd9875eca7e31707af3e96d522bbd.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.7879.13.24.1"
+}
+
+# UCA Extended Validation Root
+# https://rsaevg1.good.sheca.com/
+trust_anchors {
+  filename: "d43af9b35473755c9684fc06d7d8cb70ee5c28e773fb294eb41ee71722924d24.pem"
+
+  ev_policy_oids: "2.23.140.1.1"
+}
+
+# USERTrust ECC Certification Authority
+# https://usertrustecccertificationauthority-ev.comodoca.com/
+trust_anchors {
+  filename: "4ff460d54b9c86dabfbcfc5712e0400d2bed3fbc4d4fbdaa86e06adcd2a9ad7a.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6449.1.2.1.5.1"
+}
+
+# USERTrust RSA Certification Authority
+# https://usertrustrsacertificationauthority-ev.comodoca.com/
+trust_anchors {
+  filename: "e793c9b02fd8aa13e21c31228accb08119643b749c898964b1746d46c3d4cbd2.pem"
+
+  ev_policy_oids: "1.3.6.1.4.1.6449.1.2.1.5.1"
+}
+
+# XRamp Global Certification Authority
+trust_anchors {
+  filename: "cecddc905099d8dadfc5b1d209b737cbe2c18cfb2c10c0ff0bcf0d3286fc1aa2.pem"
+
+  ev_policy_oids: "2.16.840.1.114404.1.1.2.4.1"
+}
diff --git a/net/http/http_auth.cc b/net/http/http_auth.cc
index 081944c9..be1cda1 100644
--- a/net/http/http_auth.cc
+++ b/net/http/http_auth.cc
@@ -39,7 +39,7 @@
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
     Target target,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     const std::set<Scheme>& disabled_schemes,
     const NetLogWithSource& net_log,
     HostResolver* host_resolver,
@@ -55,8 +55,8 @@
   while (response_headers.EnumerateHeader(&iter, header_name, &cur_challenge)) {
     std::unique_ptr<HttpAuthHandler> cur;
     int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
-        cur_challenge, target, ssl_info, network_isolation_key, origin, net_log,
-        host_resolver, &cur);
+        cur_challenge, target, ssl_info, network_isolation_key,
+        scheme_host_port, net_log, host_resolver, &cur);
     if (rv != OK) {
       VLOG(1) << "Unable to create AuthHandler. Status: "
               << ErrorToString(rv) << " Challenge: " << cur_challenge;
diff --git a/net/http/http_auth.h b/net/http/http_auth.h
index a3bf9644..4eeddf00 100644
--- a/net/http/http_auth.h
+++ b/net/http/http_auth.h
@@ -19,6 +19,10 @@
 class Value;
 }
 
+namespace url {
+class SchemeHostPort;
+}
+
 namespace net {
 
 class HttpAuthHandler;
@@ -165,8 +169,9 @@
   //
   // |disabled_schemes| is the set of schemes that we should not use.
   //
-  // |origin| is used by the NTLM and Negotiation authentication scheme to
-  // construct the service principal name. It is ignored by other schemes.
+  // |scheme_host_port| is used by the NTLM and Negotiation authentication
+  // scheme to construct the service principal name. It is ignored by other
+  // schemes.
   //
   // |ssl_info| is passed through to the scheme specific authentication handlers
   // to use as appropriate.
@@ -176,7 +181,7 @@
       const SSLInfo& ssl_info,
       const NetworkIsolationKey& network_isolation_key,
       Target target,
-      const GURL& origin,
+      const url::SchemeHostPort& scheme_host_port,
       const std::set<Scheme>& disabled_schemes,
       const NetLogWithSource& net_log,
       HostResolver* host_resolver,
diff --git a/net/http/http_auth_controller.cc b/net/http/http_auth_controller.cc
index 43f4281f..40e13b03 100644
--- a/net/http/http_auth_controller.cc
+++ b/net/http/http_auth_controller.cc
@@ -49,12 +49,12 @@
 AuthTarget DetermineAuthTarget(const HttpAuthHandler* handler) {
   switch (handler->target()) {
     case HttpAuth::AUTH_PROXY:
-      if (handler->origin().SchemeIsCryptographic())
+      if (GURL::SchemeIsCryptographic(handler->scheme_host_port().scheme()))
         return AUTH_TARGET_SECURE_PROXY;
       else
         return AUTH_TARGET_PROXY;
     case HttpAuth::AUTH_SERVER:
-      if (handler->origin().SchemeIsCryptographic())
+      if (GURL::SchemeIsCryptographic(handler->scheme_host_port().scheme()))
         return AUTH_TARGET_SECURE_SERVER;
       else
         return AUTH_TARGET_SERVER;
@@ -234,8 +234,8 @@
   int rv_create =
       http_auth_handler_factory_->CreatePreemptiveAuthHandlerFromString(
           entry->auth_challenge(), target_, network_isolation_key_,
-          auth_scheme_host_port_.GetURL(), entry->IncrementNonceCount(),
-          net_log_, host_resolver_, &handler_preemptive);
+          auth_scheme_host_port_, entry->IncrementNonceCount(), net_log_,
+          host_resolver_, &handler_preemptive);
   if (rv_create != OK)
     return false;
 
@@ -330,10 +330,10 @@
   do {
     if (!handler_.get() && can_send_auth) {
       // Find the best authentication challenge that we support.
-      HttpAuth::ChooseBestChallenge(
-          http_auth_handler_factory_, *headers, ssl_info,
-          network_isolation_key_, target_, auth_scheme_host_port_.GetURL(),
-          disabled_schemes_, net_log_, host_resolver_, &handler_);
+      HttpAuth::ChooseBestChallenge(http_auth_handler_factory_, *headers,
+                                    ssl_info, network_isolation_key_, target_,
+                                    auth_scheme_host_port_, disabled_schemes_,
+                                    net_log_, host_resolver_, &handler_);
       if (handler_.get())
         HistogramAuthEvent(handler_.get(), AUTH_EVENT_START);
     }
diff --git a/net/http/http_auth_filter.cc b/net/http/http_auth_filter.cc
index 33f0eac..4ba89ced 100644
--- a/net/http/http_auth_filter.cc
+++ b/net/http/http_auth_filter.cc
@@ -2,9 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/strings/string_util.h"
 #include "net/http/http_auth_filter.h"
+
+#include "base/strings/string_util.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -32,14 +34,15 @@
   return true;
 }
 
-bool HttpAuthFilterAllowlist::IsValid(const GURL& url,
-                                      HttpAuth::Target target) const {
+bool HttpAuthFilterAllowlist::IsValid(
+    const url::SchemeHostPort& scheme_host_port,
+    HttpAuth::Target target) const {
   if ((target != HttpAuth::AUTH_SERVER) && (target != HttpAuth::AUTH_PROXY))
     return false;
   // All proxies pass
   if (target == HttpAuth::AUTH_PROXY)
     return true;
-  return rules_.Matches(url);
+  return rules_.Matches(scheme_host_port.GetURL());
 }
 
 void HttpAuthFilterAllowlist::SetAllowlist(
diff --git a/net/http/http_auth_filter.h b/net/http/http_auth_filter.h
index fe11eba..4048b13 100644
--- a/net/http/http_auth_filter.h
+++ b/net/http/http_auth_filter.h
@@ -12,19 +12,22 @@
 #include "net/http/http_auth.h"
 #include "net/proxy_resolution/proxy_bypass_rules.h"
 
-class GURL;
+namespace url {
+class SchemeHostPort;
+}
 
 namespace net {
 
-// |HttpAuthFilter|s determine whether an authentication scheme should be
+// HttpAuthFilters determine whether an authentication scheme should be
 // allowed for a particular peer.
 class NET_EXPORT_PRIVATE HttpAuthFilter {
  public:
   virtual ~HttpAuthFilter() {}
 
-  // Checks if (|url|, |target|) is supported by the authentication scheme.
-  // Only the host of |url| is examined.
-  virtual bool IsValid(const GURL& url, HttpAuth::Target target) const = 0;
+  // Checks if (`scheme_host_port`, `target`) is supported by the authentication
+  // scheme. Only the host of `scheme_host_port` is examined.
+  virtual bool IsValid(const url::SchemeHostPort& scheme_host_port,
+                       HttpAuth::Target target) const = 0;
 };
 
 // Allowlist HTTP authentication filter.
@@ -41,17 +44,18 @@
 
   ~HttpAuthFilterAllowlist() override;
 
-  // Adds an individual URL |filter| to the list, of the specified |target|.
+  // Adds an individual URL `filter` to the list, of the specified `target`.
   bool AddFilter(const std::string& filter, HttpAuth::Target target);
 
   const ProxyBypassRules& rules() const { return rules_; }
 
   // HttpAuthFilter methods:
-  bool IsValid(const GURL& url, HttpAuth::Target target) const override;
+  bool IsValid(const url::SchemeHostPort& scheme_host_port,
+               HttpAuth::Target target) const override;
 
  private:
   // Installs the allowlist.
-  // |server_allowlist| is parsed by ProxyBypassRules.
+  // `server_allowlist` is parsed by ProxyBypassRules.
   void SetAllowlist(const std::string& server_allowlist);
 
   // We are using ProxyBypassRules because they have the functionality that we
diff --git a/net/http/http_auth_filter_unittest.cc b/net/http/http_auth_filter_unittest.cc
index e009a63c..625ac69 100644
--- a/net/http/http_auth_filter_unittest.cc
+++ b/net/http/http_auth_filter_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -18,47 +19,38 @@
 static const char* const server_allowlist_array[] = {
     "google.com", "linkedin.com", "book.com", ".chromium.org", ".gag", "gog"};
 
-enum { ALL_SERVERS_MATCH = (1 << base::size(server_allowlist_array)) - 1 };
-
-struct UrlData {
-  GURL url;
+struct SchemeHostPortData {
+  url::SchemeHostPort scheme_host_port;
   HttpAuth::Target target;
   bool matches;
-  int match_bits;
 };
 
-static const UrlData urls[] = {
-  { GURL(std::string()), HttpAuth::AUTH_NONE, false, 0 },
-  { GURL("http://foo.cn"), HttpAuth::AUTH_PROXY, true, ALL_SERVERS_MATCH },
-  { GURL("http://foo.cn"), HttpAuth::AUTH_SERVER, false, 0 },
-  { GURL("http://slashdot.org"), HttpAuth::AUTH_NONE, false, 0 },
-  { GURL("http://www.google.com"), HttpAuth::AUTH_SERVER, true, 1 << 0 },
-  { GURL("http://www.google.com"), HttpAuth::AUTH_PROXY, true,
-    ALL_SERVERS_MATCH },
-  { GURL("https://login.facebook.com/login.php?login_attempt=1"),
-    HttpAuth::AUTH_NONE, false, 0 },
-  { GURL("http://codereview.chromium.org/634002/show"), HttpAuth::AUTH_SERVER,
-    true, 1 << 3 },
-  { GURL("http://code.google.com/p/chromium/issues/detail?id=34505"),
-    HttpAuth::AUTH_SERVER, true, 1 << 0 },
-  { GURL("http://code.google.com/p/chromium/issues/list?can=2&q=label:"
-         "spdy&sort=owner&colspec=ID%20Stars%20Pri%20Area%20Type%20Status%20"
-         "Summary%20Modified%20Owner%20Mstone%20OS"),
-    HttpAuth::AUTH_SERVER, true, 1 << 3 },
-  { GURL("https://www.linkedin.com/secure/login?trk=hb_signin"),
-    HttpAuth::AUTH_SERVER, true, 1 << 1 },
-  { GURL("http://www.linkedin.com/mbox?displayMBoxItem=&"
-         "itemID=I1717980652_2&trk=COMM_HP_MSGVW_MEBC_MEBC&goback=.hom"),
-    HttpAuth::AUTH_SERVER, true, 1 << 1 },
-  { GURL("http://news.slashdot.org/story/10/02/18/190236/"
-         "New-Plan-Lets-Top-HS-Students-Graduate-2-Years-Early"),
-    HttpAuth::AUTH_PROXY, true, ALL_SERVERS_MATCH },
-  { GURL("http://codereview.chromium.org/646068/diff/4001/5003"),
-    HttpAuth::AUTH_SERVER, true, 1 << 3 },
-  { GURL("http://codereview.chromium.gag/646068/diff/4001/5003"),
-    HttpAuth::AUTH_SERVER, true, 1 << 4 },
-  { GURL("http://codereview.chromium.gog/646068/diff/4001/5003"),
-    HttpAuth::AUTH_SERVER, true, 1 << 5 },
+static const SchemeHostPortData kTestCases[] = {
+    {url::SchemeHostPort(), HttpAuth::AUTH_NONE, false},
+    {url::SchemeHostPort(GURL("http://foo.cn")), HttpAuth::AUTH_PROXY, true},
+    {url::SchemeHostPort(GURL("http://foo.cn")), HttpAuth::AUTH_SERVER, false},
+    {url::SchemeHostPort(GURL("http://slashdot.org")), HttpAuth::AUTH_NONE,
+     false},
+    {url::SchemeHostPort(GURL("http://www.google.com")), HttpAuth::AUTH_SERVER,
+     true},
+    {url::SchemeHostPort(GURL("http://www.google.com")), HttpAuth::AUTH_PROXY,
+     true},
+    {url::SchemeHostPort(GURL("https://login.facebook.com")),
+     HttpAuth::AUTH_NONE, false},
+    {url::SchemeHostPort(GURL("http://codereview.chromium.org")),
+     HttpAuth::AUTH_SERVER, true},
+    {url::SchemeHostPort(GURL("http://code.google.com")), HttpAuth::AUTH_SERVER,
+     true},
+    {url::SchemeHostPort(GURL("https://www.linkedin.com")),
+     HttpAuth::AUTH_SERVER, true},
+    {url::SchemeHostPort(GURL("http://news.slashdot.org")),
+     HttpAuth::AUTH_PROXY, true},
+    {url::SchemeHostPort(GURL("http://codereview.chromium.org")),
+     HttpAuth::AUTH_SERVER, true},
+    {url::SchemeHostPort(GURL("http://codereview.chromium.gag")),
+     HttpAuth::AUTH_SERVER, true},
+    {url::SchemeHostPort(GURL("http://codereview.chromium.gog")),
+     HttpAuth::AUTH_SERVER, true},
 };
 
 }   // namespace
@@ -66,10 +58,10 @@
 TEST(HttpAuthFilterTest, EmptyFilter) {
   // Create an empty filter
   HttpAuthFilterAllowlist filter((std::string()));
-  for (size_t i = 0; i < base::size(urls); i++) {
-    EXPECT_EQ(urls[i].target == HttpAuth::AUTH_PROXY,
-              filter.IsValid(urls[i].url, urls[i].target))
-        << " " << i << ": " << urls[i].url;
+  for (const auto& test_case : kTestCases) {
+    EXPECT_EQ(test_case.target == HttpAuth::AUTH_PROXY,
+              filter.IsValid(test_case.scheme_host_port, test_case.target))
+        << test_case.scheme_host_port.Serialize();
   }
 }
 
@@ -83,9 +75,10 @@
     server_allowlist_filter_string += server_allowlist_array[i];
   }
   HttpAuthFilterAllowlist filter(server_allowlist_filter_string);
-  for (size_t i = 0; i < base::size(urls); i++) {
-    EXPECT_EQ(urls[i].matches, filter.IsValid(urls[i].url, urls[i].target))
-        << " " << i << ": " << urls[i].url;
+  for (const auto& test_case : kTestCases) {
+    EXPECT_EQ(test_case.matches,
+              filter.IsValid(test_case.scheme_host_port, test_case.target))
+        << test_case.scheme_host_port.Serialize();
   }
 }
 
diff --git a/net/http/http_auth_handler.cc b/net/http/http_auth_handler.cc
index f24d222..64f7851 100644
--- a/net/http/http_auth_handler.cc
+++ b/net/http/http_auth_handler.cc
@@ -30,9 +30,9 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     const NetLogWithSource& net_log) {
-  origin_ = origin;
+  scheme_host_port_ = scheme_host_port;
   target_ = target;
   score_ = -1;
   properties_ = -1;
diff --git a/net/http/http_auth_handler.h b/net/http/http_auth_handler.h
index d752f77..b0b4de8 100644
--- a/net/http/http_auth_handler.h
+++ b/net/http/http_auth_handler.h
@@ -11,6 +11,7 @@
 #include "net/base/net_export.h"
 #include "net/http/http_auth.h"
 #include "net/log/net_log_with_source.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -44,8 +45,8 @@
   // |challenge| must be non-nullptr and have already tokenized the
   //      authentication scheme, but none of the tokens occurring after the
   //      authentication scheme.
-  // |target| and |origin| are both stored for later use, and are not part of
-  //      the initial challenge.
+  // |target| and |scheme_host_port| are both stored for later use, and are not
+  //      part of the initial challenge.
   // |ssl_info| must be valid if the underlying connection used a certificate.
   // |network_isolation_key| the NetworkIsolationKey associated with the
   //      challenge. Used for host resolutions, if any are needed.
@@ -54,7 +55,7 @@
                          HttpAuth::Target target,
                          const SSLInfo& ssl_info,
                          const NetworkIsolationKey& network_isolation_key,
-                         const GURL& origin,
+                         const url::SchemeHostPort& scheme_host_port,
                          const NetLogWithSource& net_log);
 
   // Determines how the previous authorization attempt was received.
@@ -122,10 +123,9 @@
   }
 
   // Returns the proxy or server which issued the authentication challenge
-  // that this HttpAuthHandler is handling. The URL includes scheme, host, and
-  // port, but does not include path.
-  const GURL& origin() const {
-    return origin_;
+  // that this HttpAuthHandler is handling.
+  const url::SchemeHostPort& scheme_host_port() const {
+    return scheme_host_port_;
   }
 
   // Returns true if the authentication scheme does not send the username and
@@ -218,7 +218,7 @@
 
   // The {scheme, host, port} for the authentication target.  Used by "ntlm"
   // and "negotiate" to construct the service principal name.
-  GURL origin_;
+  url::SchemeHostPort scheme_host_port_;
 
   // The score for this challenge. Higher numbers are better.
   int score_;
diff --git a/net/http/http_auth_handler_basic.cc b/net/http/http_auth_handler_basic.cc
index 61fb629c..009f847d 100644
--- a/net/http/http_auth_handler_basic.cc
+++ b/net/http/http_auth_handler_basic.cc
@@ -16,6 +16,8 @@
 #include "net/http/http_auth_challenge_tokenizer.h"
 #include "net/http/http_auth_preferences.h"
 #include "net/http/http_auth_scheme.h"
+#include "url/scheme_host_port.h"
+#include "url/url_constants.h"
 
 namespace net {
 
@@ -117,7 +119,7 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     CreateReason reason,
     int digest_nonce_count,
     const NetLogWithSource& net_log,
@@ -125,14 +127,15 @@
     std::unique_ptr<HttpAuthHandler>* handler) {
   if (http_auth_preferences() &&
       !http_auth_preferences()->basic_over_http_enabled() &&
-      origin.SchemeIs(url::kHttpScheme)) {
+      scheme_host_port.scheme() == url::kHttpScheme) {
     return ERR_UNSUPPORTED_AUTH_SCHEME;
   }
   // TODO(cbentzel): Move towards model of parsing in the factory
   //                 method and only constructing when valid.
   std::unique_ptr<HttpAuthHandler> tmp_handler(new HttpAuthHandlerBasic());
   if (!tmp_handler->InitFromChallenge(challenge, target, ssl_info,
-                                      network_isolation_key, origin, net_log)) {
+                                      network_isolation_key, scheme_host_port,
+                                      net_log)) {
     return ERR_INVALID_RESPONSE;
   }
   handler->swap(tmp_handler);
diff --git a/net/http/http_auth_handler_basic.h b/net/http/http_auth_handler_basic.h
index 8042182..eb5688c 100644
--- a/net/http/http_auth_handler_basic.h
+++ b/net/http/http_auth_handler_basic.h
@@ -27,7 +27,7 @@
                           HttpAuth::Target target,
                           const SSLInfo& ssl_info,
                           const NetworkIsolationKey& network_isolation_key,
-                          const GURL& origin,
+                          const url::SchemeHostPort& scheme_host_port,
                           CreateReason reason,
                           int digest_nonce_count,
                           const NetLogWithSource& net_log,
diff --git a/net/http/http_auth_handler_basic_fuzzer.cc b/net/http/http_auth_handler_basic_fuzzer.cc
index 498452e..29299ab 100644
--- a/net/http/http_auth_handler_basic_fuzzer.cc
+++ b/net/http/http_auth_handler_basic_fuzzer.cc
@@ -12,6 +12,7 @@
 #include "net/log/net_log_with_source.h"
 #include "net/ssl/ssl_info.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   std::string input(reinterpret_cast<const char*>(data), size);
@@ -19,14 +20,14 @@
 
   // Dummies
   net::SSLInfo null_ssl_info;
-  GURL origin("https://foo.test/");
+  url::SchemeHostPort scheme_host_port(GURL("https://foo.test/"));
   auto host_resolver = std::make_unique<net::MockHostResolver>();
   std::unique_ptr<net::HttpAuthHandler> basic;
 
   net::HttpAuthHandlerBasic::Factory factory;
   factory.CreateAuthHandlerFromString(challenge, net::HttpAuth::AUTH_SERVER,
                                       null_ssl_info, net::NetworkIsolationKey(),
-                                      origin, net::NetLogWithSource(),
+                                      scheme_host_port, net::NetLogWithSource(),
                                       host_resolver.get(), &basic);
   return 0;
 }
diff --git a/net/http/http_auth_handler_basic_unittest.cc b/net/http/http_auth_handler_basic_unittest.cc
index 1c05b81..ce3064a 100644
--- a/net/http/http_auth_handler_basic_unittest.cc
+++ b/net/http/http_auth_handler_basic_unittest.cc
@@ -22,6 +22,7 @@
 #include "net/test/gtest_util.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/scheme_host_port.h"
 
 using net::test::IsError;
 using net::test::IsOk;
@@ -42,7 +43,7 @@
     // Empty username and empty password.
     { "", "", "Basic Og==" },
   };
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   HttpAuthHandlerBasic::Factory factory;
   for (size_t i = 0; i < base::size(tests); ++i) {
     std::string challenge = "Basic realm=\"Atlantis\"";
@@ -51,8 +52,8 @@
     std::unique_ptr<HttpAuthHandler> basic;
     EXPECT_EQ(OK, factory.CreateAuthHandlerFromString(
                       challenge, HttpAuth::AUTH_SERVER, null_ssl_info,
-                      NetworkIsolationKey(), origin, NetLogWithSource(),
-                      host_resolver.get(), &basic));
+                      NetworkIsolationKey(), scheme_host_port,
+                      NetLogWithSource(), host_resolver.get(), &basic));
     AuthCredentials credentials(base::ASCIIToUTF16(tests[i].username),
                                 base::ASCIIToUTF16(tests[i].password));
     HttpRequestInfo request_info;
@@ -100,14 +101,14 @@
     }
   };
 
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   HttpAuthHandlerBasic::Factory factory;
   SSLInfo null_ssl_info;
   auto host_resolver = std::make_unique<MockHostResolver>();
   std::unique_ptr<HttpAuthHandler> basic;
   EXPECT_EQ(OK, factory.CreateAuthHandlerFromString(
                     tests[0].challenge, HttpAuth::AUTH_SERVER, null_ssl_info,
-                    NetworkIsolationKey(), origin, NetLogWithSource(),
+                    NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
                     host_resolver.get(), &basic));
 
   for (size_t i = 0; i < base::size(tests); ++i) {
@@ -202,7 +203,7 @@
     },
   };
   HttpAuthHandlerBasic::Factory factory;
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   for (size_t i = 0; i < base::size(tests); ++i) {
     std::string challenge = tests[i].challenge;
     SSLInfo null_ssl_info;
@@ -210,7 +211,7 @@
     std::unique_ptr<HttpAuthHandler> basic;
     int rv = factory.CreateAuthHandlerFromString(
         challenge, HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-        origin, NetLogWithSource(), host_resolver.get(), &basic);
+        scheme_host_port, NetLogWithSource(), host_resolver.get(), &basic);
     EXPECT_EQ(tests[i].expected_rv, rv);
     if (rv == OK)
       EXPECT_EQ(tests[i].expected_realm, basic->realm());
@@ -220,7 +221,8 @@
 // Test that when Basic is configured to forbid HTTP, attempting to create a
 // Basic auth handler for a HTTP context is rejected.
 TEST(HttpAuthHandlerBasicTest, BasicAuthRequiresHTTPS) {
-  GURL nonsecure_origin("http://www.example.com");
+  url::SchemeHostPort nonsecure_scheme_host_port(
+      GURL("http://www.example.com"));
   HttpAuthHandlerBasic::Factory factory;
   HttpAuthPreferences http_auth_preferences;
   http_auth_preferences.set_basic_over_http_enabled(false);
@@ -234,16 +236,16 @@
   // Ensure that HTTP is disallowed.
   EXPECT_THAT(factory.CreateAuthHandlerFromString(
                   challenge, HttpAuth::AUTH_SERVER, null_ssl_info,
-                  NetworkIsolationKey(), nonsecure_origin, NetLogWithSource(),
-                  host_resolver.get(), &basic),
+                  NetworkIsolationKey(), nonsecure_scheme_host_port,
+                  NetLogWithSource(), host_resolver.get(), &basic),
               IsError(ERR_UNSUPPORTED_AUTH_SCHEME));
 
   // Ensure that HTTPS is allowed.
-  GURL secure_origin("https://www.example.com");
+  url::SchemeHostPort secure_scheme_host_port(GURL("https://www.example.com"));
   EXPECT_THAT(factory.CreateAuthHandlerFromString(
                   challenge, HttpAuth::AUTH_SERVER, null_ssl_info,
-                  NetworkIsolationKey(), secure_origin, NetLogWithSource(),
-                  host_resolver.get(), &basic),
+                  NetworkIsolationKey(), secure_scheme_host_port,
+                  NetLogWithSource(), host_resolver.get(), &basic),
               IsOk());
 }
 
diff --git a/net/http/http_auth_handler_digest.cc b/net/http/http_auth_handler_digest.cc
index ffc1ae75..a8018dc 100644
--- a/net/http/http_auth_handler_digest.cc
+++ b/net/http/http_auth_handler_digest.cc
@@ -93,7 +93,7 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     CreateReason reason,
     int digest_nonce_count,
     const NetLogWithSource& net_log,
@@ -104,7 +104,8 @@
   std::unique_ptr<HttpAuthHandler> tmp_handler(
       new HttpAuthHandlerDigest(digest_nonce_count, nonce_generator_.get()));
   if (!tmp_handler->InitFromChallenge(challenge, target, ssl_info,
-                                      network_isolation_key, origin, net_log)) {
+                                      network_isolation_key, scheme_host_port,
+                                      net_log)) {
     return ERR_INVALID_RESPONSE;
   }
   handler->swap(tmp_handler);
diff --git a/net/http/http_auth_handler_digest.h b/net/http/http_auth_handler_digest.h
index c7dc2f0..dad4683 100644
--- a/net/http/http_auth_handler_digest.h
+++ b/net/http/http_auth_handler_digest.h
@@ -16,6 +16,10 @@
 #include "net/http/http_auth_handler.h"
 #include "net/http/http_auth_handler_factory.h"
 
+namespace url {
+class SchemeHostPort;
+}
+
 namespace net {
 
 // Code for handling http digest authentication.
@@ -76,7 +80,7 @@
                           HttpAuth::Target target,
                           const SSLInfo& ssl_info,
                           const NetworkIsolationKey& network_isolation_key,
-                          const GURL& origin,
+                          const url::SchemeHostPort& scheme_host_port,
                           CreateReason reason,
                           int digest_nonce_count,
                           const NetLogWithSource& net_log,
diff --git a/net/http/http_auth_handler_digest_fuzzer.cc b/net/http/http_auth_handler_digest_fuzzer.cc
index 20e452b..4c258f8 100644
--- a/net/http/http_auth_handler_digest_fuzzer.cc
+++ b/net/http/http_auth_handler_digest_fuzzer.cc
@@ -15,6 +15,7 @@
 #include "net/log/net_log_with_source.h"
 #include "net/ssl/ssl_info.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   FuzzedDataProvider data_provider{data, size};
@@ -24,14 +25,14 @@
 
   // Dummies
   net::SSLInfo null_ssl_info;
-  GURL origin("https://foo.test/");
+  url::SchemeHostPort scheme_host_port(GURL("https://foo.test/"));
   auto host_resolver = std::make_unique<net::MockHostResolver>();
   std::unique_ptr<net::HttpAuthHandler> handler;
 
   net::HttpAuthHandlerDigest::Factory factory;
   factory.CreateAuthHandlerFromString(challenge, net::HttpAuth::AUTH_SERVER,
                                       null_ssl_info, net::NetworkIsolationKey(),
-                                      origin, net::NetLogWithSource(),
+                                      scheme_host_port, net::NetLogWithSource(),
                                       host_resolver.get(), &handler);
 
   if (handler) {
diff --git a/net/http/http_auth_handler_digest_unittest.cc b/net/http/http_auth_handler_digest_unittest.cc
index e208689..1fd6c27 100644
--- a/net/http/http_auth_handler_digest_unittest.cc
+++ b/net/http/http_auth_handler_digest_unittest.cc
@@ -19,6 +19,8 @@
 #include "net/test/gtest_util.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 using net::test::IsOk;
 
@@ -63,11 +65,11 @@
 
   // Create a handler for a particular challenge.
   SSLInfo null_ssl_info;
-  GURL url_origin(target == HttpAuth::AUTH_SERVER ? request_url : proxy_name);
+  url::SchemeHostPort scheme_host_port(
+      target == HttpAuth::AUTH_SERVER ? GURL(request_url) : GURL(proxy_name));
   int rv_create = factory->CreateAuthHandlerFromString(
-      challenge, target, null_ssl_info, NetworkIsolationKey(),
-      url_origin.DeprecatedGetOriginAsURL(), NetLogWithSource(),
-      host_resolver.get(), &handler);
+      challenge, target, null_ssl_info, NetworkIsolationKey(), scheme_host_port,
+      NetLogWithSource(), host_resolver.get(), &handler);
   if (rv_create != OK || handler.get() == nullptr) {
     ADD_FAILURE() << "Unable to create auth handler.";
     return false;
@@ -359,7 +361,7 @@
     },
   };
 
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   std::unique_ptr<HttpAuthHandlerDigest::Factory> factory(
       new HttpAuthHandlerDigest::Factory());
   for (size_t i = 0; i < base::size(tests); ++i) {
@@ -368,8 +370,8 @@
     std::unique_ptr<HttpAuthHandler> handler;
     int rv = factory->CreateAuthHandlerFromString(
         tests[i].challenge, HttpAuth::AUTH_SERVER, null_ssl_info,
-        NetworkIsolationKey(), origin, NetLogWithSource(), host_resolver.get(),
-        &handler);
+        NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
+        host_resolver.get(), &handler);
     if (tests[i].parsed_success) {
       EXPECT_THAT(rv, IsOk());
     } else {
@@ -525,7 +527,7 @@
       "qop=auth, nc=00000001, cnonce=\"15c07961ed8575c4\""
     }
   };
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   std::unique_ptr<HttpAuthHandlerDigest::Factory> factory(
       new HttpAuthHandlerDigest::Factory());
   for (size_t i = 0; i < base::size(tests); ++i) {
@@ -534,8 +536,8 @@
     std::unique_ptr<HttpAuthHandler> handler;
     int rv = factory->CreateAuthHandlerFromString(
         tests[i].challenge, HttpAuth::AUTH_SERVER, null_ssl_info,
-        NetworkIsolationKey(), origin, NetLogWithSource(), host_resolver.get(),
-        &handler);
+        NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
+        host_resolver.get(), &handler);
     EXPECT_THAT(rv, IsOk());
     ASSERT_TRUE(handler != nullptr);
 
@@ -561,12 +563,12 @@
   std::unique_ptr<HttpAuthHandler> handler;
   std::string default_challenge =
       "Digest realm=\"Oblivion\", nonce=\"nonce-value\"";
-  GURL origin("intranet.google.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://intranet.google.com"));
   SSLInfo null_ssl_info;
   int rv = factory->CreateAuthHandlerFromString(
       default_challenge, HttpAuth::AUTH_SERVER, null_ssl_info,
-      NetworkIsolationKey(), origin, NetLogWithSource(), host_resolver.get(),
-      &handler);
+      NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
+      host_resolver.get(), &handler);
   EXPECT_THAT(rv, IsOk());
   ASSERT_TRUE(handler.get() != nullptr);
   HttpAuthChallengeTokenizer tok_default(default_challenge.begin(),
diff --git a/net/http/http_auth_handler_factory.cc b/net/http/http_auth_handler_factory.cc
index 516066c..b414b17 100644
--- a/net/http/http_auth_handler_factory.cc
+++ b/net/http/http_auth_handler_factory.cc
@@ -22,6 +22,7 @@
 #include "net/log/net_log_values.h"
 #include "net/net_buildflags.h"
 #include "net/ssl/ssl_info.h"
+#include "url/scheme_host_port.h"
 
 #if BUILDFLAG(USE_KERBEROS)
 #include "net/http/http_auth_handler_negotiate.h"
@@ -33,14 +34,14 @@
     const std::string& scheme,
     const std::string& challenge,
     const int net_error,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     const absl::optional<bool>& allows_default_credentials,
     net::NetLogCaptureMode capture_mode) {
   base::Value dict(base::Value::Type::DICTIONARY);
   dict.SetKey("scheme", net::NetLogStringValue(scheme));
   if (net::NetLogCaptureIncludesSensitive(capture_mode))
     dict.SetKey("challenge", net::NetLogStringValue(challenge));
-  dict.SetStringKey("origin", origin.spec());
+  dict.SetStringKey("origin", scheme_host_port.Serialize());
   if (allows_default_credentials)
     dict.SetBoolKey("allows_default_credentials", *allows_default_credentials);
   if (net_error < 0)
@@ -57,21 +58,21 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     const NetLogWithSource& net_log,
     HostResolver* host_resolver,
     std::unique_ptr<HttpAuthHandler>* handler) {
   HttpAuthChallengeTokenizer props(challenge.begin(), challenge.end());
   return CreateAuthHandler(&props, target, ssl_info, network_isolation_key,
-                           origin, CREATE_CHALLENGE, 1, net_log, host_resolver,
-                           handler);
+                           scheme_host_port, CREATE_CHALLENGE, 1, net_log,
+                           host_resolver, handler);
 }
 
 int HttpAuthHandlerFactory::CreatePreemptiveAuthHandlerFromString(
     const std::string& challenge,
     HttpAuth::Target target,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     int digest_nonce_count,
     const NetLogWithSource& net_log,
     HostResolver* host_resolver,
@@ -79,8 +80,8 @@
   HttpAuthChallengeTokenizer props(challenge.begin(), challenge.end());
   SSLInfo null_ssl_info;
   return CreateAuthHandler(&props, target, null_ssl_info, network_isolation_key,
-                           origin, CREATE_PREEMPTIVE, digest_nonce_count,
-                           net_log, host_resolver, handler);
+                           scheme_host_port, CREATE_PREEMPTIVE,
+                           digest_nonce_count, net_log, host_resolver, handler);
 }
 
 namespace {
@@ -223,7 +224,7 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     CreateReason reason,
     int digest_nonce_count,
     const NetLogWithSource& net_log,
@@ -244,20 +245,21 @@
     } else {
       DCHECK(it->second);
       net_error = it->second->CreateAuthHandler(
-          challenge, target, ssl_info, network_isolation_key, origin, reason,
-          digest_nonce_count, net_log, host_resolver, handler);
+          challenge, target, ssl_info, network_isolation_key, scheme_host_port,
+          reason, digest_nonce_count, net_log, host_resolver, handler);
     }
   }
 
-  net_log.AddEvent(NetLogEventType::AUTH_HANDLER_CREATE_RESULT,
-                   [&](NetLogCaptureMode capture_mode) {
-                     return NetLogParamsForCreateAuth(
-                         scheme, challenge->challenge_text(), net_error, origin,
-                         *handler ? absl::make_optional(
-                                        (*handler)->AllowsDefaultCredentials())
-                                  : absl::nullopt,
-                         capture_mode);
-                   });
+  net_log.AddEvent(
+      NetLogEventType::AUTH_HANDLER_CREATE_RESULT,
+      [&](NetLogCaptureMode capture_mode) {
+        return NetLogParamsForCreateAuth(
+            scheme, challenge->challenge_text(), net_error, scheme_host_port,
+            *handler
+                ? absl::make_optional((*handler)->AllowsDefaultCredentials())
+                : absl::nullopt,
+            capture_mode);
+      });
   return net_error;
 }
 
diff --git a/net/http/http_auth_handler_factory.h b/net/http/http_auth_handler_factory.h
index 7e7698cd..972fdc44 100644
--- a/net/http/http_auth_handler_factory.h
+++ b/net/http/http_auth_handler_factory.h
@@ -18,7 +18,9 @@
 #include "net/http/url_security_manager.h"
 #include "net/net_buildflags.h"
 
-class GURL;
+namespace url {
+class SchemeHostPort;
+}
 
 namespace net {
 
@@ -100,7 +102,7 @@
       HttpAuth::Target target,
       const SSLInfo& ssl_info,
       const NetworkIsolationKey& network_isolation_key,
-      const GURL& origin,
+      const url::SchemeHostPort& scheme_host_port,
       CreateReason create_reason,
       int digest_nonce_count,
       const NetLogWithSource& net_log,
@@ -117,7 +119,7 @@
       HttpAuth::Target target,
       const SSLInfo& ssl_info,
       const NetworkIsolationKey& network_isolation_key,
-      const GURL& origin,
+      const url::SchemeHostPort& scheme_host_port,
       const NetLogWithSource& net_log,
       HostResolver* host_resolver,
       std::unique_ptr<HttpAuthHandler>* handler);
@@ -131,7 +133,7 @@
       const std::string& challenge,
       HttpAuth::Target target,
       const NetworkIsolationKey& network_isolation_key,
-      const GURL& origin,
+      const url::SchemeHostPort& scheme_host_port,
       int digest_nonce_count,
       const NetLogWithSource& net_log,
       HostResolver* host_resolver,
@@ -234,7 +236,7 @@
                         HttpAuth::Target target,
                         const SSLInfo& ssl_info,
                         const NetworkIsolationKey& network_isolation_key,
-                        const GURL& origin,
+                        const url::SchemeHostPort& scheme_host_port,
                         CreateReason reason,
                         int digest_nonce_count,
                         const NetLogWithSource& net_log,
diff --git a/net/http/http_auth_handler_factory_unittest.cc b/net/http/http_auth_handler_factory_unittest.cc
index cd8b3d71..645135f 100644
--- a/net/http/http_auth_handler_factory_unittest.cc
+++ b/net/http/http_auth_handler_factory_unittest.cc
@@ -23,6 +23,8 @@
 #include "net/test/gtest_util.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 using net::test::IsError;
 using net::test::IsOk;
@@ -41,7 +43,7 @@
                         HttpAuth::Target target,
                         const SSLInfo& ssl_info,
                         const NetworkIsolationKey& network_isolation_key,
-                        const GURL& origin,
+                        const url::SchemeHostPort& scheme_host_port,
                         CreateReason reason,
                         int nonce_count,
                         const NetLogWithSource& net_log,
@@ -60,7 +62,7 @@
 TEST(HttpAuthHandlerFactoryTest, RegistryFactory) {
   SSLInfo null_ssl_info;
   HttpAuthHandlerRegistryFactory registry_factory;
-  GURL gurl("www.google.com");
+  url::SchemeHostPort scheme_host_port(GURL("https://www.google.com"));
   const int kBasicReturnCode = -1;
   MockHttpAuthHandlerFactory* mock_factory_basic =
       new MockHttpAuthHandlerFactory(kBasicReturnCode);
@@ -81,7 +83,7 @@
       ERR_UNSUPPORTED_AUTH_SCHEME,
       registry_factory.CreateAuthHandlerFromString(
           "Basic", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
 
   // Test what happens with a single scheme.
   registry_factory.RegisterSchemeFactory("Basic", mock_factory_basic);
@@ -89,12 +91,12 @@
       kBasicReturnCode,
       registry_factory.CreateAuthHandlerFromString(
           "Basic", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
   EXPECT_EQ(
       ERR_UNSUPPORTED_AUTH_SCHEME,
       registry_factory.CreateAuthHandlerFromString(
           "Digest", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
 
   // Test multiple schemes
   registry_factory.RegisterSchemeFactory("Digest", mock_factory_digest);
@@ -102,19 +104,19 @@
       kBasicReturnCode,
       registry_factory.CreateAuthHandlerFromString(
           "Basic", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
   EXPECT_EQ(
       kDigestReturnCode,
       registry_factory.CreateAuthHandlerFromString(
           "Digest", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
 
   // Test case-insensitivity
   EXPECT_EQ(
       kBasicReturnCode,
       registry_factory.CreateAuthHandlerFromString(
           "basic", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
 
   // Test replacement of existing auth scheme
   registry_factory.RegisterSchemeFactory("Digest", mock_factory_digest_replace);
@@ -122,12 +124,12 @@
       kBasicReturnCode,
       registry_factory.CreateAuthHandlerFromString(
           "Basic", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
   EXPECT_EQ(
       kDigestReturnCodeReplace,
       registry_factory.CreateAuthHandlerFromString(
           "Digest", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resovler.get(), &handler));
+          scheme_host_port, NetLogWithSource(), host_resovler.get(), &handler));
 }
 
 TEST(HttpAuthHandlerFactoryTest, DefaultFactory) {
@@ -137,14 +139,15 @@
       HttpAuthHandlerFactory::CreateDefault());
   http_auth_handler_factory->SetHttpAuthPreferences(kNegotiateAuthScheme,
                                                     &http_auth_preferences);
-  GURL server_origin("http://www.example.com");
-  GURL proxy_origin("http://cache.example.com:3128");
+  url::SchemeHostPort server_scheme_host_port(GURL("http://www.example.com"));
+  url::SchemeHostPort proxy_scheme_host_port(
+      GURL("http://cache.example.com:3128"));
   SSLInfo null_ssl_info;
   {
     std::unique_ptr<HttpAuthHandler> handler;
     int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
         "Basic realm=\"FooBar\"", HttpAuth::AUTH_SERVER, null_ssl_info,
-        NetworkIsolationKey(), server_origin, NetLogWithSource(),
+        NetworkIsolationKey(), server_scheme_host_port, NetLogWithSource(),
         host_resolver.get(), &handler);
     EXPECT_THAT(rv, IsOk());
     ASSERT_FALSE(handler.get() == nullptr);
@@ -158,7 +161,7 @@
     std::unique_ptr<HttpAuthHandler> handler;
     int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
         "UNSUPPORTED realm=\"FooBar\"", HttpAuth::AUTH_SERVER, null_ssl_info,
-        NetworkIsolationKey(), server_origin, NetLogWithSource(),
+        NetworkIsolationKey(), server_scheme_host_port, NetLogWithSource(),
         host_resolver.get(), &handler);
     EXPECT_THAT(rv, IsError(ERR_UNSUPPORTED_AUTH_SCHEME));
     EXPECT_TRUE(handler.get() == nullptr);
@@ -167,8 +170,8 @@
     std::unique_ptr<HttpAuthHandler> handler;
     int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
         "Digest realm=\"FooBar\", nonce=\"xyz\"", HttpAuth::AUTH_PROXY,
-        null_ssl_info, NetworkIsolationKey(), proxy_origin, NetLogWithSource(),
-        host_resolver.get(), &handler);
+        null_ssl_info, NetworkIsolationKey(), proxy_scheme_host_port,
+        NetLogWithSource(), host_resolver.get(), &handler);
     EXPECT_THAT(rv, IsOk());
     ASSERT_FALSE(handler.get() == nullptr);
     EXPECT_EQ(HttpAuth::AUTH_SCHEME_DIGEST, handler->auth_scheme());
@@ -181,7 +184,8 @@
     std::unique_ptr<HttpAuthHandler> handler;
     int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
         "NTLM", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-        server_origin, NetLogWithSource(), host_resolver.get(), &handler);
+        server_scheme_host_port, NetLogWithSource(), host_resolver.get(),
+        &handler);
     EXPECT_THAT(rv, IsOk());
     ASSERT_FALSE(handler.get() == nullptr);
     EXPECT_EQ(HttpAuth::AUTH_SCHEME_NTLM, handler->auth_scheme());
@@ -194,7 +198,7 @@
     std::unique_ptr<HttpAuthHandler> handler;
     int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
         "Negotiate", HttpAuth::AUTH_SERVER, null_ssl_info,
-        NetworkIsolationKey(), server_origin, NetLogWithSource(),
+        NetworkIsolationKey(), server_scheme_host_port, NetLogWithSource(),
         host_resolver.get(), &handler);
 // Note the default factory doesn't support Kerberos on Android
 #if BUILDFLAG(USE_KERBEROS) && !defined(OS_ANDROID)
@@ -230,29 +234,31 @@
   http_auth_handler_factory->SetHttpAuthPreferences(kNegotiateAuthScheme,
                                                     &http_auth_preferences);
 
-  GURL nonsecure_origin("http://www.example.com");
-  GURL secure_origin("https://www.example.com");
+  url::SchemeHostPort nonsecure_scheme_host_port(
+      GURL("http://www.example.com"));
+  url::SchemeHostPort secure_scheme_host_port(GURL("https://www.example.com"));
   SSLInfo null_ssl_info;
 
   const HttpAuth::Target kTargets[] = {HttpAuth::AUTH_SERVER,
                                        HttpAuth::AUTH_PROXY};
   struct TestCase {
     int expected_net_error;
-    const GURL origin;
+    const url::SchemeHostPort scheme_host_port;
     const char* challenge;
   } const kTestCases[] = {
     // Challenges that result in success results.
-    {OK, secure_origin, "Basic realm=\"FooBar\""},
-    {OK, secure_origin, "Digest realm=\"FooBar\", nonce=\"xyz\""},
-    {OK, nonsecure_origin, "Digest realm=\"FooBar\", nonce=\"xyz\""},
-    {OK, secure_origin, "Ntlm"},
-    {OK, nonsecure_origin, "Ntlm"},
+    {OK, secure_scheme_host_port, "Basic realm=\"FooBar\""},
+    {OK, secure_scheme_host_port, "Digest realm=\"FooBar\", nonce=\"xyz\""},
+    {OK, nonsecure_scheme_host_port, "Digest realm=\"FooBar\", nonce=\"xyz\""},
+    {OK, secure_scheme_host_port, "Ntlm"},
+    {OK, nonsecure_scheme_host_port, "Ntlm"},
 #if BUILDFLAG(USE_KERBEROS) && !defined(OS_ANDROID)
-    {OK, secure_origin, "Negotiate"},
-    {OK, nonsecure_origin, "Negotiate"},
+    {OK, secure_scheme_host_port, "Negotiate"},
+    {OK, nonsecure_scheme_host_port, "Negotiate"},
 #endif
     // Challenges that result in error results.
-    {ERR_UNSUPPORTED_AUTH_SCHEME, nonsecure_origin, "Basic realm=\"FooBar\""},
+    {ERR_UNSUPPORTED_AUTH_SCHEME, nonsecure_scheme_host_port,
+     "Basic realm=\"FooBar\""},
   };
 
   for (const auto target : kTargets) {
@@ -260,7 +266,8 @@
       std::unique_ptr<HttpAuthHandler> handler;
       int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
           test_case.challenge, target, null_ssl_info, NetworkIsolationKey(),
-          test_case.origin, NetLogWithSource(), host_resolver.get(), &handler);
+          test_case.scheme_host_port, NetLogWithSource(), host_resolver.get(),
+          &handler);
       EXPECT_THAT(rv, IsError(test_case.expected_net_error));
     }
   }
@@ -270,7 +277,7 @@
   std::unique_ptr<HostResolver> host_resolver(new MockHostResolver());
   std::unique_ptr<HttpAuthHandlerRegistryFactory> http_auth_handler_factory(
       HttpAuthHandlerFactory::CreateDefault());
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   SSLInfo null_ssl_info;
   RecordingNetLogObserver net_log_observer;
 
@@ -308,7 +315,7 @@
       std::unique_ptr<HttpAuthHandler> handler;
       int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
           test_case.challenge, test_case.auth_target, null_ssl_info,
-          NetworkIsolationKey(), origin,
+          NetworkIsolationKey(), scheme_host_port,
           NetLogWithSource::Make(NetLogSourceType::NONE), host_resolver.get(),
           &handler);
       EXPECT_THAT(rv, IsError(test_case.expected_net_error));
diff --git a/net/http/http_auth_handler_fuzzer.cc b/net/http/http_auth_handler_fuzzer.cc
index c66e988..8608a23 100644
--- a/net/http/http_auth_handler_fuzzer.cc
+++ b/net/http/http_auth_handler_fuzzer.cc
@@ -16,6 +16,7 @@
 #include "net/log/net_log_with_source.h"
 #include "net/ssl/ssl_info.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   FuzzedDataProvider data_provider{data, size};
@@ -40,13 +41,13 @@
 
   // Dummies
   net::SSLInfo null_ssl_info;
-  GURL origin("https://foo.test/");
+  url::SchemeHostPort scheme_host_port(GURL("https://foo.test/"));
   auto host_resolver = std::make_unique<net::MockHostResolver>();
   std::unique_ptr<net::HttpAuthHandler> handler;
 
   scheme_factory->CreateAuthHandlerFromString(
       challenge, net::HttpAuth::AUTH_SERVER, null_ssl_info,
-      net::NetworkIsolationKey(), origin, net::NetLogWithSource(),
+      net::NetworkIsolationKey(), scheme_host_port, net::NetLogWithSource(),
       host_resolver.get(), &handler);
 
   if (handler) {
diff --git a/net/http/http_auth_handler_mock.cc b/net/http/http_auth_handler_mock.cc
index 56daaa2..0e7fb96c 100644
--- a/net/http/http_auth_handler_mock.cc
+++ b/net/http/http_auth_handler_mock.cc
@@ -164,7 +164,7 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     CreateReason reason,
     int nonce_count,
     const NetLogWithSource& net_log,
@@ -178,7 +178,8 @@
   handlers.erase(handlers.begin());
   if (do_init_from_challenge_ &&
       !tmp_handler->InitFromChallenge(challenge, target, ssl_info,
-                                      network_isolation_key, origin, net_log)) {
+                                      network_isolation_key, scheme_host_port,
+                                      net_log)) {
     return ERR_INVALID_RESPONSE;
   }
   handler->swap(tmp_handler);
diff --git a/net/http/http_auth_handler_mock.h b/net/http/http_auth_handler_mock.h
index 0e17de6a..b98a924 100644
--- a/net/http/http_auth_handler_mock.h
+++ b/net/http/http_auth_handler_mock.h
@@ -17,6 +17,10 @@
 #include "net/http/http_auth_handler_factory.h"
 #include "url/gurl.h"
 
+namespace url {
+class SchemeHostPort;
+}
+
 namespace net {
 
 // MockAuthHandler is used in tests to reliably trigger edge cases.
@@ -48,7 +52,7 @@
                           HttpAuth::Target target,
                           const SSLInfo& ssl_info,
                           const NetworkIsolationKey& network_isolation_key,
-                          const GURL& origin,
+                          const url::SchemeHostPort& scheme_host_port,
                           CreateReason reason,
                           int nonce_count,
                           const NetLogWithSource& net_log,
diff --git a/net/http/http_auth_handler_negotiate.cc b/net/http/http_auth_handler_negotiate.cc
index 010599b..3c15a91a 100644
--- a/net/http/http_auth_handler_negotiate.cc
+++ b/net/http/http_auth_handler_negotiate.cc
@@ -27,6 +27,7 @@
 #include "net/log/net_log_event_type.h"
 #include "net/log/net_log_with_source.h"
 #include "net/ssl/ssl_info.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -87,7 +88,7 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     CreateReason reason,
     int digest_nonce_count,
     const NetLogWithSource& net_log,
@@ -133,7 +134,8 @@
       http_auth_preferences(), host_resolver));
 #endif
   if (!tmp_handler->InitFromChallenge(challenge, target, ssl_info,
-                                      network_isolation_key, origin, net_log)) {
+                                      network_isolation_key, scheme_host_port,
+                                      net_log)) {
     return ERR_INVALID_RESPONSE;
   }
   handler->swap(tmp_handler);
@@ -164,7 +166,7 @@
     return true;
   if (!http_auth_preferences_)
     return false;
-  return http_auth_preferences_->CanUseDefaultCredentials(origin_);
+  return http_auth_preferences_->CanUseDefaultCredentials(scheme_host_port_);
 }
 
 bool HttpAuthHandlerNegotiate::AllowsExplicitCredentials() {
@@ -245,8 +247,9 @@
   return auth_system_->ParseChallenge(challenge);
 }
 
-std::string HttpAuthHandlerNegotiate::CreateSPN(const std::string& server,
-                                                const GURL& origin) {
+std::string HttpAuthHandlerNegotiate::CreateSPN(
+    const std::string& server,
+    const url::SchemeHostPort& scheme_host_port) {
   // Kerberos Web Server SPNs are in the form HTTP/<host>:<port> through SSPI,
   // and in the form HTTP@<host>:<port> through GSSAPI
   //   http://msdn.microsoft.com/en-us/library/ms677601%28VS.85%29.aspx
@@ -276,7 +279,7 @@
   // Without any command-line flags, Chrome matches the behavior of Firefox
   // and IE. Users can override the behavior so aliases are allowed and
   // non-standard ports are included.
-  int port = origin.EffectiveIntPort();
+  int port = scheme_host_port.port();
 #if defined(OS_WIN)
   static const char kSpnSeparator = '/';
 #elif defined(OS_POSIX)
@@ -346,16 +349,15 @@
   // TODO(cbentzel): Add reverse DNS lookup for numeric addresses.
   HostResolver::ResolveHostParameters parameters;
   parameters.include_canonical_name = true;
-  resolve_host_request_ =
-      resolver_->CreateRequest(HostPortPair(origin_.host(), 0),
-                               network_isolation_key_, net_log(), parameters);
+  resolve_host_request_ = resolver_->CreateRequest(
+      scheme_host_port_, network_isolation_key_, net_log(), parameters);
   return resolve_host_request_->Start(base::BindOnce(
       &HttpAuthHandlerNegotiate::OnIOComplete, base::Unretained(this)));
 }
 
 int HttpAuthHandlerNegotiate::DoResolveCanonicalNameComplete(int rv) {
   DCHECK_NE(ERR_IO_PENDING, rv);
-  std::string server = origin_.host();
+  std::string server = scheme_host_port_.host();
   if (resolve_host_request_) {
     if (rv == OK) {
       DCHECK(resolve_host_request_->GetAddressResults());
@@ -367,13 +369,13 @@
       // Even in the error case, try to use origin_.host instead of
       // passing the failure on to the caller.
       VLOG(1) << "Problem finding canonical name for SPN for host "
-              << origin_.host() << ": " << ErrorToString(rv);
+              << scheme_host_port_.host() << ": " << ErrorToString(rv);
       rv = OK;
     }
   }
 
   next_state_ = STATE_GENERATE_AUTH_TOKEN;
-  spn_ = CreateSPN(server, origin_);
+  spn_ = CreateSPN(server, scheme_host_port_);
   resolve_host_request_ = nullptr;
   return rv;
 }
@@ -401,7 +403,7 @@
   if (target_ == HttpAuth::AUTH_PROXY)
     return DelegationType::kNone;
 
-  return http_auth_preferences_->GetDelegationType(origin_);
+  return http_auth_preferences_->GetDelegationType(scheme_host_port_);
 }
 
 }  // namespace net
diff --git a/net/http/http_auth_handler_negotiate.h b/net/http/http_auth_handler_negotiate.h
index 05193dd0..e808079 100644
--- a/net/http/http_auth_handler_negotiate.h
+++ b/net/http/http_auth_handler_negotiate.h
@@ -27,6 +27,10 @@
 #include "net/http/http_auth_gssapi_posix.h"
 #endif
 
+namespace url {
+class SchemeHostPort;
+}
+
 namespace net {
 
 class HttpAuthPreferences;
@@ -66,7 +70,7 @@
                           HttpAuth::Target target,
                           const SSLInfo& ssl_info,
                           const NetworkIsolationKey& network_isolation_key,
-                          const GURL& origin,
+                          const url::SchemeHostPort& scheme_host_port,
                           CreateReason reason,
                           int digest_nonce_count,
                           const NetLogWithSource& net_log,
@@ -115,7 +119,8 @@
     STATE_NONE,
   };
 
-  std::string CreateSPN(const std::string& server, const GURL& orign);
+  std::string CreateSPN(const std::string& server,
+                        const url::SchemeHostPort& scheme_host_port);
 
   void OnIOComplete(int result);
   void DoCallback(int result);
diff --git a/net/http/http_auth_handler_negotiate_unittest.cc b/net/http/http_auth_handler_negotiate_unittest.cc
index 12dd49725..7452f67 100644
--- a/net/http/http_auth_handler_negotiate_unittest.cc
+++ b/net/http/http_auth_handler_negotiate_unittest.cc
@@ -31,6 +31,8 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 #if !BUILDFLAG(USE_KERBEROS)
 #error "use_kerberos should be true to use Negotiate authentication scheme."
@@ -227,7 +229,7 @@
         disable_cname_lookup);
     http_auth_preferences_->set_negotiate_enable_port(use_port);
     resolver_->set_synchronous_mode(synchronous_resolve_mode);
-    GURL gurl(url_string);
+    url::SchemeHostPort scheme_host_port{GURL(url_string)};
 
     // Note: This is a little tricky because CreateAuthHandlerFromString
     // expects a std::unique_ptr<HttpAuthHandler>* rather than a
@@ -238,8 +240,8 @@
     SSLInfo null_ssl_info;
     int rv = factory_->CreateAuthHandlerFromString(
         "Negotiate", HttpAuth::AUTH_SERVER, null_ssl_info,
-        network_isolation_key(), gurl, NetLogWithSource(), resolver_.get(),
-        &generic_handler);
+        network_isolation_key(), scheme_host_port, NetLogWithSource(),
+        resolver_.get(), &generic_handler);
     if (rv != OK)
       return rv;
     HttpAuthHandlerNegotiate* negotiate_handler =
@@ -349,12 +351,12 @@
 
   // Make sure a cache-only lookup with the wrong NetworkIsolationKey (an empty
   // one) fails, to make sure the right NetworkIsolationKey was used.
-  HostPortPair host_port_pair = HostPortPair::FromURL(GURL(url_string));
+  url::SchemeHostPort scheme_host_port{GURL(url_string)};
   HostResolver::ResolveHostParameters resolve_params;
   resolve_params.include_canonical_name = true;
   resolve_params.source = HostResolverSource::LOCAL_ONLY;
   std::unique_ptr<HostResolver::ResolveHostRequest> host_request1 =
-      resolver()->CreateRequest(host_port_pair, NetworkIsolationKey(),
+      resolver()->CreateRequest(scheme_host_port, NetworkIsolationKey(),
                                 NetLogWithSource(), resolve_params);
   TestCompletionCallback callback2;
   int result = host_request1->Start(callback2.callback());
@@ -363,7 +365,7 @@
   // Make sure a cache-only lookup with the same NetworkIsolationKey succeeds,
   // to make sure the right NetworkIsolationKey was used.
   std::unique_ptr<HostResolver::ResolveHostRequest> host_request2 =
-      resolver()->CreateRequest(host_port_pair, network_isolation_key(),
+      resolver()->CreateRequest(scheme_host_port, network_isolation_key(),
                                 NetLogWithSource(), resolve_params);
   TestCompletionCallback callback3;
   result = host_request2->Start(callback3.callback());
@@ -391,12 +393,12 @@
 
   // Make sure a cache-only lookup with the wrong NetworkIsolationKey (an empty
   // one) fails, to make sure the right NetworkIsolationKey was used.
-  HostPortPair host_port_pair = HostPortPair::FromURL(GURL(url_string));
+  url::SchemeHostPort scheme_host_port{GURL(url_string)};
   HostResolver::ResolveHostParameters resolve_params;
   resolve_params.include_canonical_name = true;
   resolve_params.source = HostResolverSource::LOCAL_ONLY;
   std::unique_ptr<HostResolver::ResolveHostRequest> host_request1 =
-      resolver()->CreateRequest(host_port_pair, NetworkIsolationKey(),
+      resolver()->CreateRequest(scheme_host_port, NetworkIsolationKey(),
                                 NetLogWithSource(), resolve_params);
   TestCompletionCallback callback2;
   int result = host_request1->Start(callback2.callback());
@@ -405,7 +407,7 @@
   // Make sure a cache-only lookup with the same NetworkIsolationKey succeeds,
   // to make sure the right NetworkIsolationKey was used.
   std::unique_ptr<HostResolver::ResolveHostRequest> host_request2 =
-      resolver()->CreateRequest(host_port_pair, network_isolation_key(),
+      resolver()->CreateRequest(scheme_host_port, network_isolation_key(),
                                 NetLogWithSource(), resolve_params);
   TestCompletionCallback callback3;
   result = host_request2->Start(callback3.callback());
@@ -457,11 +459,11 @@
   negotiate_factory->set_library(
       std::make_unique<GSSAPISharedLibrary>("/this/library/does/not/exist"));
 
-  GURL gurl("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   std::unique_ptr<HttpAuthHandler> generic_handler;
   int rv = negotiate_factory->CreateAuthHandlerFromString(
       "Negotiate", HttpAuth::AUTH_SERVER, SSLInfo(), NetworkIsolationKey(),
-      gurl, NetLogWithSource(), resolver(), &generic_handler);
+      scheme_host_port, NetLogWithSource(), resolver(), &generic_handler);
   EXPECT_THAT(rv, IsError(ERR_UNSUPPORTED_AUTH_SCHEME));
   EXPECT_TRUE(generic_handler.get() == nullptr);
 }
@@ -530,12 +532,12 @@
   negotiate_factory->set_library(std::make_unique<MockAuthLibrary>());
 #endif
 
-  GURL gurl("http://www.example.com");
+  url::SchemeHostPort scheme_host_port{GURL("http://www.example.com")};
   std::unique_ptr<HttpAuthHandler> handler;
   EXPECT_EQ(OK, negotiate_factory->CreateAuthHandlerFromString(
                     "Negotiate", HttpAuth::AUTH_SERVER, SSLInfo(),
-                    NetworkIsolationKey(), gurl, NetLogWithSource(), resolver(),
-                    &handler));
+                    NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
+                    resolver(), &handler));
   EXPECT_TRUE(handler);
 
   TestCompletionCallback callback;
diff --git a/net/http/http_auth_handler_ntlm.cc b/net/http/http_auth_handler_ntlm.cc
index 5ea166d..4861513 100644
--- a/net/http/http_auth_handler_ntlm.cc
+++ b/net/http/http_auth_handler_ntlm.cc
@@ -36,11 +36,12 @@
 }
 
 // static
-std::string HttpAuthHandlerNTLM::CreateSPN(const GURL& origin) {
+std::string HttpAuthHandlerNTLM::CreateSPN(
+    const url::SchemeHostPort& scheme_host_port) {
   // The service principal name of the destination server.  See
   // http://msdn.microsoft.com/en-us/library/ms677949%28VS.85%29.aspx
   std::string target("HTTP/");
-  target.append(GetHostAndOptionalPort(origin));
+  target.append(GetHostAndOptionalPort(scheme_host_port));
   return target;
 }
 
diff --git a/net/http/http_auth_handler_ntlm.h b/net/http/http_auth_handler_ntlm.h
index 264e5eb..0147ee7a 100644
--- a/net/http/http_auth_handler_ntlm.h
+++ b/net/http/http_auth_handler_ntlm.h
@@ -34,6 +34,10 @@
 #include "net/http/http_auth_handler.h"
 #include "net/http/http_auth_handler_factory.h"
 
+namespace url {
+class SchemeHostPort;
+}
+
 namespace net {
 
 class HttpAuthPreferences;
@@ -54,7 +58,7 @@
                           HttpAuth::Target target,
                           const SSLInfo& ssl_info,
                           const NetworkIsolationKey& network_isolation_key,
-                          const GURL& origin,
+                          const url::SchemeHostPort& scheme_host_port,
                           CreateReason reason,
                           int digest_nonce_count,
                           const NetLogWithSource& net_log,
@@ -110,8 +114,8 @@
   // Parse the challenge, saving the results into this instance.
   HttpAuth::AuthorizationResult ParseChallenge(HttpAuthChallengeTokenizer* tok);
 
-  // Create an NTLM SPN to identify the |origin| server.
-  static std::string CreateSPN(const GURL& origin);
+  // Create an NTLM SPN to identify the |scheme_host_port| server.
+  static std::string CreateSPN(const url::SchemeHostPort& scheme_host_port);
 
 #if defined(NTLM_SSPI)
   HttpAuthSSPI mechanism_;
diff --git a/net/http/http_auth_handler_ntlm_portable.cc b/net/http/http_auth_handler_ntlm_portable.cc
index 5f932f9..2063e5ea 100644
--- a/net/http/http_auth_handler_ntlm_portable.cc
+++ b/net/http/http_auth_handler_ntlm_portable.cc
@@ -8,6 +8,7 @@
 #include "net/base/completion_once_callback.h"
 #include "net/base/net_errors.h"
 #include "net/http/http_auth_mechanism.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -16,7 +17,7 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     CreateReason reason,
     int digest_nonce_count,
     const NetLogWithSource& net_log,
@@ -31,8 +32,10 @@
   std::unique_ptr<HttpAuthHandler> tmp_handler(
       new HttpAuthHandlerNTLM(http_auth_preferences()));
   if (!tmp_handler->InitFromChallenge(challenge, target, ssl_info,
-                                      network_isolation_key, origin, net_log))
+                                      network_isolation_key, scheme_host_port,
+                                      net_log)) {
     return ERR_INVALID_RESPONSE;
+  }
   handler->swap(tmp_handler);
   return OK;
 }
@@ -56,7 +59,7 @@
     const HttpRequestInfo* request,
     CompletionOnceCallback callback,
     std::string* auth_token) {
-  return mechanism_.GenerateAuthToken(credentials, CreateSPN(origin_),
+  return mechanism_.GenerateAuthToken(credentials, CreateSPN(scheme_host_port_),
                                       channel_bindings_, auth_token, net_log(),
                                       std::move(callback));
 }
diff --git a/net/http/http_auth_handler_ntlm_portable_unittest.cc b/net/http/http_auth_handler_ntlm_portable_unittest.cc
index e6cf4bb..f34a02a 100644
--- a/net/http/http_auth_handler_ntlm_portable_unittest.cc
+++ b/net/http/http_auth_handler_ntlm_portable_unittest.cc
@@ -30,6 +30,8 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -51,12 +53,12 @@
   }
 
   int CreateHandler() {
-    GURL gurl("https://foo.com");
+    url::SchemeHostPort scheme_host_port(GURL("https://foo.com"));
     SSLInfo null_ssl_info;
 
     return factory_->CreateAuthHandlerFromString(
         "NTLM", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-        gurl, NetLogWithSource(), nullptr, &auth_handler_);
+        scheme_host_port, NetLogWithSource(), nullptr, &auth_handler_);
   }
 
   std::string CreateNtlmAuthHeader(base::span<const uint8_t> buffer) {
diff --git a/net/http/http_auth_handler_ntlm_win.cc b/net/http/http_auth_handler_ntlm_win.cc
index 0fdae59a..f54183a 100644
--- a/net/http/http_auth_handler_ntlm_win.cc
+++ b/net/http/http_auth_handler_ntlm_win.cc
@@ -23,7 +23,7 @@
     HttpAuth::Target target,
     const SSLInfo& ssl_info,
     const NetworkIsolationKey& network_isolation_key,
-    const GURL& origin,
+    const url::SchemeHostPort& scheme_host_port,
     CreateReason reason,
     int digest_nonce_count,
     const NetLogWithSource& net_log,
@@ -36,7 +36,8 @@
   std::unique_ptr<HttpAuthHandler> tmp_handler(
       new HttpAuthHandlerNTLM(sspi_library_.get(), http_auth_preferences()));
   if (!tmp_handler->InitFromChallenge(challenge, target, ssl_info,
-                                      network_isolation_key, origin, net_log))
+                                      network_isolation_key, scheme_host_port,
+                                      net_log))
     return ERR_INVALID_RESPONSE;
   handler->swap(tmp_handler);
   return OK;
@@ -53,7 +54,7 @@
     const HttpRequestInfo* request,
     CompletionOnceCallback callback,
     std::string* auth_token) {
-  return mechanism_.GenerateAuthToken(credentials, CreateSPN(origin_),
+  return mechanism_.GenerateAuthToken(credentials, CreateSPN(scheme_host_port_),
                                       channel_bindings_, auth_token, net_log(),
                                       std::move(callback));
 }
@@ -70,7 +71,7 @@
     return true;
   if (!http_auth_preferences_)
     return false;
-  return http_auth_preferences_->CanUseDefaultCredentials(origin_);
+  return http_auth_preferences_->CanUseDefaultCredentials(scheme_host_port_);
 }
 
 HttpAuth::AuthorizationResult HttpAuthHandlerNTLM::ParseChallenge(
diff --git a/net/http/http_auth_handler_unittest.cc b/net/http/http_auth_handler_unittest.cc
index ce30c14..3d0e5f2 100644
--- a/net/http/http_auth_handler_unittest.cc
+++ b/net/http/http_auth_handler_unittest.cc
@@ -19,13 +19,15 @@
 #include "net/log/test_net_log_util.h"
 #include "net/ssl/ssl_info.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
 TEST(HttpAuthHandlerTest, NetLog) {
   base::test::TaskEnvironment task_environment;
 
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   std::string challenge = "Mock asdf";
   AuthCredentials credentials(u"user", u"pass");
   std::string auth_token;
@@ -43,8 +45,8 @@
       // AUTHORIZATION_RESULT_REJECT.
       mock_handler.set_connection_based(true);
       mock_handler.InitFromChallenge(
-          &tokenizer, target, SSLInfo(), NetworkIsolationKey(), origin,
-          NetLogWithSource::Make(NetLogSourceType::NONE));
+          &tokenizer, target, SSLInfo(), NetworkIsolationKey(),
+          scheme_host_port, NetLogWithSource::Make(NetLogSourceType::NONE));
       mock_handler.SetGenerateExpectation(async, OK);
       mock_handler.GenerateAuthToken(&credentials, &request,
                                      test_callback.callback(), &auth_token);
diff --git a/net/http/http_auth_preferences.cc b/net/http/http_auth_preferences.cc
index 64fdf4ae..e84a194 100644
--- a/net/http/http_auth_preferences.cc
+++ b/net/http/http_auth_preferences.cc
@@ -46,16 +46,16 @@
 #endif
 
 bool HttpAuthPreferences::CanUseDefaultCredentials(
-    const GURL& auth_origin) const {
+    const url::SchemeHostPort& auth_scheme_host_port) const {
   return allow_default_credentials_ == ALLOW_DEFAULT_CREDENTIALS &&
-         security_manager_->CanUseDefaultCredentials(auth_origin);
+         security_manager_->CanUseDefaultCredentials(auth_scheme_host_port);
 }
 
 using DelegationType = HttpAuth::DelegationType;
 
 DelegationType HttpAuthPreferences::GetDelegationType(
-    const GURL& auth_origin) const {
-  if (!security_manager_->CanDelegate(auth_origin))
+    const url::SchemeHostPort& auth_scheme_host_port) const {
+  if (!security_manager_->CanDelegate(auth_scheme_host_port))
     return DelegationType::kNone;
 
   if (delegate_by_kdc_policy())
diff --git a/net/http/http_auth_preferences.h b/net/http/http_auth_preferences.h
index acf5ff6..e69512b 100644
--- a/net/http/http_auth_preferences.h
+++ b/net/http/http_auth_preferences.h
@@ -14,7 +14,10 @@
 #include "build/chromeos_buildflags.h"
 #include "net/base/net_export.h"
 #include "net/http/http_auth.h"
-#include "url/gurl.h"
+
+namespace url {
+class SchemeHostPort;
+}
 
 namespace net {
 
@@ -49,9 +52,10 @@
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   virtual bool AllowGssapiLibraryLoad() const;
 #endif
-  virtual bool CanUseDefaultCredentials(const GURL& auth_origin) const;
+  virtual bool CanUseDefaultCredentials(
+      const url::SchemeHostPort& auth_scheme_host_port) const;
   virtual HttpAuth::DelegationType GetDelegationType(
-      const GURL& auth_origin) const;
+      const url::SchemeHostPort& auth_scheme_host_port) const;
 
   void set_delegate_by_kdc_policy(bool delegate_by_kdc_policy) {
     delegate_by_kdc_policy_ = delegate_by_kdc_policy;
diff --git a/net/http/http_auth_preferences_unittest.cc b/net/http/http_auth_preferences_unittest.cc
index 1c74a65..1ee1610 100644
--- a/net/http/http_auth_preferences_unittest.cc
+++ b/net/http/http_auth_preferences_unittest.cc
@@ -14,6 +14,8 @@
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -63,29 +65,33 @@
 TEST(HttpAuthPreferencesTest, AuthServerAllowlist) {
   HttpAuthPreferences http_auth_preferences;
   // Check initial value
-  EXPECT_FALSE(http_auth_preferences.CanUseDefaultCredentials(GURL("abc")));
+  EXPECT_FALSE(http_auth_preferences.CanUseDefaultCredentials(
+      url::SchemeHostPort(GURL("abc"))));
   http_auth_preferences.SetServerAllowlist("*");
-  EXPECT_TRUE(http_auth_preferences.CanUseDefaultCredentials(GURL("abc")));
+  EXPECT_TRUE(http_auth_preferences.CanUseDefaultCredentials(
+      url::SchemeHostPort(GURL("abc"))));
 }
 
 TEST(HttpAuthPreferencesTest, DelegationType) {
   using DelegationType = HttpAuth::DelegationType;
   HttpAuthPreferences http_auth_preferences;
   // Check initial value
-  EXPECT_EQ(DelegationType::kNone,
-            http_auth_preferences.GetDelegationType(GURL("abc")));
+  EXPECT_EQ(DelegationType::kNone, http_auth_preferences.GetDelegationType(
+                                       url::SchemeHostPort(GURL("abc"))));
 
   http_auth_preferences.SetDelegateAllowlist("*");
   EXPECT_EQ(DelegationType::kUnconstrained,
-            http_auth_preferences.GetDelegationType(GURL("abc")));
+            http_auth_preferences.GetDelegationType(
+                url::SchemeHostPort(GURL("abc"))));
 
   http_auth_preferences.set_delegate_by_kdc_policy(true);
   EXPECT_EQ(DelegationType::kByKdcPolicy,
-            http_auth_preferences.GetDelegationType(GURL("abc")));
+            http_auth_preferences.GetDelegationType(
+                url::SchemeHostPort(GURL("abc"))));
 
   http_auth_preferences.SetDelegateAllowlist("");
-  EXPECT_EQ(DelegationType::kNone,
-            http_auth_preferences.GetDelegationType(GURL("abc")));
+  EXPECT_EQ(DelegationType::kNone, http_auth_preferences.GetDelegationType(
+                                       url::SchemeHostPort(GURL("abc"))));
 }
 
 }  // namespace net
diff --git a/net/http/http_auth_unittest.cc b/net/http/http_auth_unittest.cc
index 06f2295a..4fc9d72 100644
--- a/net/http/http_auth_unittest.cc
+++ b/net/http/http_auth_unittest.cc
@@ -28,6 +28,8 @@
 #include "net/net_buildflags.h"
 #include "net/ssl/ssl_info.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
@@ -40,11 +42,11 @@
   std::string challenge_text = "Basic";
   HttpAuthChallengeTokenizer challenge(challenge_text.begin(),
                                          challenge_text.end());
-  GURL origin("www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("https://www.example.com"));
   SSLInfo null_ssl_info;
   EXPECT_TRUE(auth_handler->InitFromChallenge(
       &challenge, HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-      origin, NetLogWithSource()));
+      scheme_host_port, NetLogWithSource()));
   return auth_handler;
 }
 
@@ -123,7 +125,7 @@
 #endif  // BUILDFLAG(USE_KERBEROS)
           "",
       }};
-  GURL origin("http://www.example.com");
+  url::SchemeHostPort scheme_host_port(GURL("http://www.example.com"));
   std::set<HttpAuth::Scheme> disabled_schemes;
   MockAllowHttpAuthPreferences http_auth_preferences;
   std::unique_ptr<HostResolver> host_resolver(new MockHostResolver());
@@ -143,8 +145,8 @@
     std::unique_ptr<HttpAuthHandler> handler;
     HttpAuth::ChooseBestChallenge(
         http_auth_handler_factory.get(), *headers, null_ssl_info,
-        NetworkIsolationKey(), HttpAuth::AUTH_SERVER, origin, disabled_schemes,
-        NetLogWithSource(), host_resolver.get(), &handler);
+        NetworkIsolationKey(), HttpAuth::AUTH_SERVER, scheme_host_port,
+        disabled_schemes, NetLogWithSource(), host_resolver.get(), &handler);
 
     if (handler.get()) {
       EXPECT_EQ(tests[i].challenge_scheme, handler->auth_scheme());
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 7a9e5eb..aadbb4e 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -15809,12 +15809,12 @@
       for (int n = 0; n < 3; n++) {
         HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock());
         std::string auth_challenge = "Mock realm=proxy";
-        GURL origin(test_config.proxy_url);
+        url::SchemeHostPort scheme_host_port(GURL(test_config.proxy_url));
         HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(),
                                              auth_challenge.end());
         auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_PROXY,
                                         empty_ssl_info, NetworkIsolationKey(),
-                                        origin, NetLogWithSource());
+                                        scheme_host_port, NetLogWithSource());
         auth_handler->SetGenerateExpectation(
             test_config.proxy_auth_timing == AUTH_ASYNC,
             n == 0 ? test_config.first_generate_proxy_token_rv : OK);
@@ -15824,12 +15824,12 @@
     if (test_config.server_auth_timing != AUTH_NONE) {
       HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock());
       std::string auth_challenge = "Mock realm=server";
-      GURL origin(test_config.server_url);
+      url::SchemeHostPort scheme_host_port(GURL(test_config.server_url));
       HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(),
                                            auth_challenge.end());
       auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER,
                                       empty_ssl_info, NetworkIsolationKey(),
-                                      origin, NetLogWithSource());
+                                      scheme_host_port, NetLogWithSource());
       auth_handler->SetGenerateExpectation(
           test_config.server_auth_timing == AUTH_ASYNC,
           test_config.first_generate_server_token_rv);
@@ -15842,7 +15842,7 @@
           std::make_unique<HttpAuthHandlerMock>();
       second_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER,
                                         empty_ssl_info, NetworkIsolationKey(),
-                                        origin, NetLogWithSource());
+                                        scheme_host_port, NetLogWithSource());
       second_handler->SetGenerateExpectation(true, OK);
       auth_factory->AddMockHandler(second_handler.release(),
                                    HttpAuth::AUTH_SERVER);
@@ -15952,20 +15952,20 @@
   HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock());
   auth_handler->set_connection_based(true);
   std::string auth_challenge = "Mock realm=server";
-  GURL origin("http://www.example.com");
+  GURL url("http://www.example.com");
   HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(),
                                        auth_challenge.end());
   SSLInfo empty_ssl_info;
   auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER,
-                                  empty_ssl_info, NetworkIsolationKey(), origin,
-                                  NetLogWithSource());
+                                  empty_ssl_info, NetworkIsolationKey(),
+                                  url::SchemeHostPort(url), NetLogWithSource());
   auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_SERVER);
 
   int rv = OK;
   const HttpResponseInfo* response = nullptr;
   HttpRequestInfo request;
   request.method = "GET";
-  request.url = origin;
+  request.url = url;
   request.traffic_annotation =
       net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS);
 
diff --git a/net/http/mock_allow_http_auth_preferences.cc b/net/http/mock_allow_http_auth_preferences.cc
index 688f10e..4e7f2cf 100644
--- a/net/http/mock_allow_http_auth_preferences.cc
+++ b/net/http/mock_allow_http_auth_preferences.cc
@@ -12,12 +12,12 @@
 MockAllowHttpAuthPreferences::~MockAllowHttpAuthPreferences() = default;
 
 bool MockAllowHttpAuthPreferences::CanUseDefaultCredentials(
-    const GURL& auth_origin) const {
+    const url::SchemeHostPort& auth_scheme_host_port) const {
   return true;
 }
 
 HttpAuth::DelegationType MockAllowHttpAuthPreferences::GetDelegationType(
-    const GURL& auth_origin) const {
+    const url::SchemeHostPort& auth_scheme_host_port) const {
   return HttpAuth::DelegationType::kUnconstrained;
 }
 
diff --git a/net/http/mock_allow_http_auth_preferences.h b/net/http/mock_allow_http_auth_preferences.h
index e1cc4d0..5820c73 100644
--- a/net/http/mock_allow_http_auth_preferences.h
+++ b/net/http/mock_allow_http_auth_preferences.h
@@ -7,6 +7,10 @@
 
 #include "net/http/http_auth_preferences.h"
 
+namespace url {
+class SchemeHostPort;
+}
+
 namespace net {
 
 // An HttpAuthPreferences class which allows all origins to use default
@@ -21,9 +25,10 @@
 
   ~MockAllowHttpAuthPreferences() override;
 
-  bool CanUseDefaultCredentials(const GURL& auth_origin) const override;
+  bool CanUseDefaultCredentials(
+      const url::SchemeHostPort& auth_scheme_host_port) const override;
   HttpAuth::DelegationType GetDelegationType(
-      const GURL& auth_origin) const override;
+      const url::SchemeHostPort& auth_scheme_host_port) const override;
 };
 
 }  // namespace net
diff --git a/net/http/url_security_manager.cc b/net/http/url_security_manager.cc
index c7cbc4c..ece7f04 100644
--- a/net/http/url_security_manager.cc
+++ b/net/http/url_security_manager.cc
@@ -15,15 +15,18 @@
 URLSecurityManagerAllowlist::~URLSecurityManagerAllowlist() = default;
 
 bool URLSecurityManagerAllowlist::CanUseDefaultCredentials(
-    const GURL& auth_origin) const {
+    const url::SchemeHostPort& auth_scheme_host_port) const {
   if (allowlist_default_.get())
-    return allowlist_default_->IsValid(auth_origin, HttpAuth::AUTH_SERVER);
+    return allowlist_default_->IsValid(auth_scheme_host_port,
+                                       HttpAuth::AUTH_SERVER);
   return false;
 }
 
-bool URLSecurityManagerAllowlist::CanDelegate(const GURL& auth_origin) const {
+bool URLSecurityManagerAllowlist::CanDelegate(
+    const url::SchemeHostPort& auth_scheme_host_port) const {
   if (allowlist_delegate_.get())
-    return allowlist_delegate_->IsValid(auth_origin, HttpAuth::AUTH_SERVER);
+    return allowlist_delegate_->IsValid(auth_scheme_host_port,
+                                        HttpAuth::AUTH_SERVER);
   return false;
 }
 
diff --git a/net/http/url_security_manager.h b/net/http/url_security_manager.h
index 0f7e8d5..85dfba3 100644
--- a/net/http/url_security_manager.h
+++ b/net/http/url_security_manager.h
@@ -9,7 +9,9 @@
 
 #include "net/base/net_export.h"
 
-class GURL;
+namespace url {
+class SchemeHostPort;
+}
 
 namespace net {
 
@@ -47,12 +49,14 @@
   static std::unique_ptr<URLSecurityManager> Create();
 
   // Returns true if we can send the default credentials to the server at
-  // |auth_origin| for HTTP NTLM or Negotiate authentication.
-  virtual bool CanUseDefaultCredentials(const GURL& auth_origin) const = 0;
+  // |auth_scheme_host_port| for HTTP NTLM or Negotiate authentication.
+  virtual bool CanUseDefaultCredentials(
+      const url::SchemeHostPort& auth_scheme_host_port) const = 0;
 
   // Returns true if Kerberos delegation is allowed for the server at
-  // |auth_origin| for HTTP Negotiate authentication.
-  virtual bool CanDelegate(const GURL& auth_origin) const = 0;
+  // |auth_scheme_host_port| for HTTP Negotiate authentication.
+  virtual bool CanDelegate(
+      const url::SchemeHostPort& auth_scheme_host_port) const = 0;
 
   virtual void SetDefaultAllowlist(
       std::unique_ptr<HttpAuthFilter> allowlist_default) = 0;
@@ -71,8 +75,10 @@
   ~URLSecurityManagerAllowlist() override;
 
   // URLSecurityManager methods.
-  bool CanUseDefaultCredentials(const GURL& auth_origin) const override;
-  bool CanDelegate(const GURL& auth_origin) const override;
+  bool CanUseDefaultCredentials(
+      const url::SchemeHostPort& auth_scheme_host_port) const override;
+  bool CanDelegate(
+      const url::SchemeHostPort& auth_scheme_host_port) const override;
   void SetDefaultAllowlist(
       std::unique_ptr<HttpAuthFilter> allowlist_default) override;
   void SetDelegateAllowlist(
diff --git a/net/http/url_security_manager_unittest.cc b/net/http/url_security_manager_unittest.cc
index f4e16e73..834f559 100644
--- a/net/http/url_security_manager_unittest.cc
+++ b/net/http/url_security_manager_unittest.cc
@@ -11,13 +11,14 @@
 #include "net/http/http_auth_filter.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 namespace net {
 
 namespace {
 
 struct TestData {
-  const char* const url;
+  const char* const scheme_host_port;
   bool succeds_in_windows_default;
   bool succeeds_in_allowlist;
 };
@@ -56,12 +57,14 @@
   ASSERT_TRUE(url_security_manager.get());
 
   for (size_t i = 0; i < base::size(kTestDataList); ++i) {
-    GURL gurl(kTestDataList[i].url);
+    url::SchemeHostPort scheme_host_port(
+        GURL(kTestDataList[i].scheme_host_port));
     bool can_use_default =
-        url_security_manager->CanUseDefaultCredentials(gurl);
+        url_security_manager->CanUseDefaultCredentials(scheme_host_port);
 
     EXPECT_EQ(kTestDataList[i].succeeds_in_allowlist, can_use_default)
-        << " Run: " << i << " URL: '" << gurl << "'";
+        << " Run: " << i << " scheme_host_port: '"
+        << scheme_host_port.Serialize() << "'";
   }
 }
 
@@ -76,10 +79,12 @@
   ASSERT_TRUE(url_security_manager.get());
 
   for (size_t i = 0; i < base::size(kTestDataList); ++i) {
-    GURL gurl(kTestDataList[i].url);
-    bool can_delegate = url_security_manager->CanDelegate(gurl);
+    url::SchemeHostPort scheme_host_port(
+        GURL(kTestDataList[i].scheme_host_port));
+    bool can_delegate = url_security_manager->CanDelegate(scheme_host_port);
     EXPECT_EQ(kTestDataList[i].succeeds_in_allowlist, can_delegate)
-        << " Run: " << i << " URL: '" << gurl << "'";
+        << " Run: " << i << " scheme_host_port: '"
+        << scheme_host_port.Serialize() << "'";
   }
 }
 
@@ -90,8 +95,9 @@
   ASSERT_TRUE(url_security_manager.get());
 
   for (size_t i = 0; i < base::size(kTestDataList); ++i) {
-    GURL gurl(kTestDataList[i].url);
-    bool can_delegate = url_security_manager->CanDelegate(gurl);
+    url::SchemeHostPort scheme_host_port(
+        GURL(kTestDataList[i].scheme_host_port));
+    bool can_delegate = url_security_manager->CanDelegate(scheme_host_port);
     EXPECT_FALSE(can_delegate);
   }
 }
diff --git a/net/http/url_security_manager_win.cc b/net/http/url_security_manager_win.cc
index 42f03d1..d79327c 100644
--- a/net/http/url_security_manager_win.cc
+++ b/net/http/url_security_manager_win.cc
@@ -12,7 +12,7 @@
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "net/http/http_auth_filter.h"
-#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 // The Windows implementation of URLSecurityManager uses WinINet/IE's
 // URL security zone manager.  See the MSDN page "URL Security Zones" at
@@ -37,7 +37,8 @@
   ~URLSecurityManagerWin() override;
 
   // URLSecurityManager methods:
-  bool CanUseDefaultCredentials(const GURL& auth_origin) const override;
+  bool CanUseDefaultCredentials(
+      const url::SchemeHostPort& auth_scheme_host_port) const override;
 
  private:
   bool EnsureSystemSecurityManager();
@@ -49,13 +50,14 @@
 URLSecurityManagerWin::~URLSecurityManagerWin() {}
 
 bool URLSecurityManagerWin::CanUseDefaultCredentials(
-    const GURL& auth_origin) const {
+    const url::SchemeHostPort& auth_scheme_host_port) const {
   if (HasDefaultAllowlist())
-    return URLSecurityManagerAllowlist::CanUseDefaultCredentials(auth_origin);
+    return URLSecurityManagerAllowlist::CanUseDefaultCredentials(
+        auth_scheme_host_port);
   if (!const_cast<URLSecurityManagerWin*>(this)->EnsureSystemSecurityManager())
     return false;
 
-  std::u16string url16 = base::ASCIIToUTF16(auth_origin.spec());
+  std::u16string url16 = base::ASCIIToUTF16(auth_scheme_host_port.Serialize());
   DWORD policy = 0;
   HRESULT hr;
   hr = security_manager_->ProcessUrlAction(
diff --git a/net/tools/ev_store_tool/BUILD.gn b/net/tools/ev_store_tool/BUILD.gn
new file mode 100644
index 0000000..3a89cb95
--- /dev/null
+++ b/net/tools/ev_store_tool/BUILD.gn
@@ -0,0 +1,15 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/protobuf/proto_library.gni")
+
+executable("ev_store_tool") {
+  sources = [ "ev_store_tool.cc" ]
+  deps = [
+    "//base",
+    "//crypto",
+    "//net/tools/root_store_tool:root_store_proto_full",
+    "//third_party/boringssl",
+  ]
+}
diff --git a/net/tools/ev_store_tool/README.md b/net/tools/ev_store_tool/README.md
new file mode 100644
index 0000000..baa6e08f8
--- /dev/null
+++ b/net/tools/ev_store_tool/README.md
@@ -0,0 +1,8 @@
+# EV store tool
+
+This directory contains tools for processing the EV Store data in
+[`//net/data/ssl/ev_store`](/net/data/ssl/ev_store). It is heavily based on the
+Chrome Root Store tool in
+[`//net/tools/root_store_tool/`](/net/tools/root_store_tool/).
+
+TODO(https://crbug.com/1271177): merge this tool with the chrome root store tool
diff --git a/net/tools/ev_store_tool/ev_store_tool.cc b/net/tools/ev_store_tool/ev_store_tool.cc
new file mode 100644
index 0000000..5d98ad0
--- /dev/null
+++ b/net/tools/ev_store_tool/ev_store_tool.cc
@@ -0,0 +1,245 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <iostream>
+#include <string>
+
+#include "base/at_exit.h"
+#include "base/base_paths.h"
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/logging.h"
+#include "base/path_service.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
+#include "crypto/openssl_util.h"
+#include "crypto/sha2.h"
+#include "net/tools/root_store_tool/root_store.pb.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+#include "third_party/boringssl/src/include/openssl/bio.h"
+#include "third_party/boringssl/src/include/openssl/pem.h"
+#include "third_party/protobuf/src/google/protobuf/text_format.h"
+
+using chrome_root_store::RootStore;
+
+// Tool used to generate the EV root certificate store. Similar to the
+// root_store_tool in net/tools/root_store_tool.
+//
+// TODO(hchao): Look into combining all of these codegen use cases as more tools
+// get added. At a minimum, look into sharing more of the code.
+
+namespace {
+
+absl::optional<std::string> DecodePEM(base::StringPiece pem) {
+  // TODO(https://crbug.com/1216547): net/cert/pem.h has a much nicer API, but
+  // it would require some build refactoring to avoid a circular dependency.
+  // This is assuming that the chrome trust store code goes in
+  // net/cert/internal, which it may not.
+  bssl::UniquePtr<BIO> bio(BIO_new_mem_buf(pem.data(), pem.size()));
+  if (!bio) {
+    return absl::nullopt;
+  }
+  char* name;
+  char* header;
+  unsigned char* data;
+  long len;
+  if (!PEM_read_bio(bio.get(), &name, &header, &data, &len)) {
+    LOG(ERROR) << "Could not find PEM block.";
+    return absl::nullopt;
+  }
+  bssl::UniquePtr<char> scoped_name(name);
+  bssl::UniquePtr<char> scoped_header(header);
+  bssl::UniquePtr<unsigned char> scoped_data(data);
+  if (strcmp(name, "CERTIFICATE") != 0) {
+    LOG(ERROR) << "Found PEM block of type " << name
+               << " instead of CERTIFICATE";
+    return absl::nullopt;
+  }
+  return std::string(data, data + len);
+}
+
+absl::optional<RootStore> ReadTextEvStore(const base::FilePath& ev_store_dir) {
+  base::FilePath ev_store_path =
+      ev_store_dir.AppendASCII("root_store.textproto");
+  std::string ev_store_text;
+  if (!base::ReadFileToString(ev_store_path, &ev_store_text)) {
+    LOG(ERROR) << "Could not read " << ev_store_path;
+    return absl::nullopt;
+  }
+
+  RootStore ev_store;
+  if (!google::protobuf::TextFormat::ParseFromString(ev_store_text,
+                                                     &ev_store)) {
+    LOG(ERROR) << "Could not parse " << ev_store_path;
+    return absl::nullopt;
+  }
+
+  // Replace the filenames with the actual certificate contents.
+  base::FilePath certs_dir = ev_store_dir.AppendASCII("certs");
+  for (auto& anchor : *ev_store.mutable_trust_anchors()) {
+    base::FilePath pem_path = certs_dir.AppendASCII(anchor.filename());
+
+    if (!base::PathExists(pem_path)) {
+      LOG(ERROR) << "Error file does not exist: " << pem_path;
+      return absl::nullopt;
+    }
+
+    if (base::DirectoryExists(pem_path)) {
+      LOG(ERROR) << "Error path is a directory: " << pem_path;
+      return absl::nullopt;
+    }
+
+    if (!base::PathIsReadable(pem_path)) {
+      LOG(ERROR) << "Error file is not readable: " << pem_path;
+      return absl::nullopt;
+    }
+
+    std::string pem;
+    if (!base::ReadFileToString(pem_path, &pem)) {
+      LOG(ERROR) << "Error reading " << pem_path;
+      return absl::nullopt;
+    }
+    absl::optional<std::string> der = DecodePEM(pem);
+    if (!der) {
+      LOG(ERROR) << "Error decoding " << pem_path;
+      return absl::nullopt;
+    }
+    anchor.clear_filename();
+    anchor.set_der(*der);
+  }
+  return std::move(ev_store);
+}
+
+}  // namespace
+
+int main(int argc, char** argv) {
+  base::AtExitManager at_exit_manager;
+  base::CommandLine::Init(argc, argv);
+
+  logging::LoggingSettings settings;
+  settings.logging_dest =
+      logging::LOG_TO_SYSTEM_DEBUG_LOG | logging::LOG_TO_STDERR;
+  logging::InitLogging(settings);
+
+  crypto::EnsureOpenSSLInit();
+
+  base::CommandLine& command_line = *base::CommandLine::ForCurrentProcess();
+  base::FilePath proto_path = command_line.GetSwitchValuePath("write-proto");
+  base::FilePath cpp_path = command_line.GetSwitchValuePath("write-cpp");
+  // Get EV root store directory. Assumptions:
+  //  - $(ROOT_STORE_DIR)/ev_store.textproto contains the textproto definition
+  //    of the EV root store
+  //
+  //  - Any certificate files referenced in
+  //    $(ROOT_STORE_DIR)/ev_store.textproto exist in the
+  //    $(ROOT_STORE_DIR)/certs/ subdirectory.
+  base::FilePath root_store_dir =
+      command_line.GetSwitchValuePath("root-store-dir");
+
+  if ((proto_path.empty() && cpp_path.empty()) || root_store_dir.empty() ||
+      command_line.HasSwitch("help")) {
+    std::cerr << "Usage: ev_store_tool "
+              << "--root-store-dir=<path> "
+              << "[--write-proto=PROTO_FILE] "
+              << "[--write-cpp=CPP_FILE]" << std::endl;
+    return 1;
+  }
+
+  root_store_dir = base::MakeAbsoluteFilePath(root_store_dir);
+  absl::optional<RootStore> ev_store = ReadTextEvStore(root_store_dir);
+  if (!ev_store) {
+    return 1;
+  }
+
+  if (!proto_path.empty()) {
+    std::string serialized;
+    if (!ev_store->SerializeToString(&serialized)) {
+      LOG(ERROR) << "Error serializing root store proto"
+                 << ev_store->DebugString();
+      return 1;
+    }
+    if (!base::WriteFile(proto_path, serialized)) {
+      PLOG(ERROR) << "Error writing serialized proto root store";
+      return 1;
+    }
+  }
+
+  if (!cpp_path.empty()) {
+    // There should be at leas one EV root.
+    CHECK_GT(ev_store->trust_anchors_size(), 0);
+
+    std::string string_to_write =
+        "// This file is auto-generated, DO NOT EDIT.\n\n"
+        "static const EVMetadata kEvRootCaMetadata[] = {\n";
+
+    for (auto& anchor : ev_store->trust_anchors()) {
+      // Every trust anchor at this point should have a DER.
+      CHECK(!anchor.der().empty());
+
+      std::string sha256_hash = crypto::SHA256HashString(anchor.der());
+
+      // Begin struct. Assumed type of EVMetadata:
+      //
+      // struct EVMetadata {
+      //  static const size_t kMaxOIDsPerCA = 2;
+      //  SHA256HashValue fingerprint;
+      //  const base::StringPiece policy_oids[kMaxOIDsPerCA];
+      // };
+      string_to_write += "    {\n";
+      string_to_write += "        {{";
+
+      int wrap_count = 0;
+      for (auto c : sha256_hash) {
+        if (wrap_count != 0) {
+          if (wrap_count % 11 == 0) {
+            string_to_write += ",\n          ";
+          } else {
+            string_to_write += ", ";
+          }
+        }
+        base::StringAppendF(&string_to_write, "0x%02x",
+                            static_cast<uint8_t>(c));
+        wrap_count++;
+      }
+
+      string_to_write += "}},\n";
+      string_to_write += "        {\n";
+
+      // struct expects exactly two policy oids, and we can only support 1 or 2
+      // policy OIDs.
+      const int kMaxPolicyOids = 2;
+      int oids_size = anchor.ev_policy_oids_size();
+      std::string hexencode_hash =
+          base::HexEncode(sha256_hash.data(), sha256_hash.size());
+      if (oids_size > kMaxPolicyOids) {
+        PLOG(ERROR) << hexencode_hash << " has too many OIDs!";
+        return 1;
+      } else if (oids_size < 1) {
+        PLOG(ERROR) << hexencode_hash << " has no OIDs!";
+        return 1;
+      }
+      for (int i = 0; i < kMaxPolicyOids; i++) {
+        std::string oid;
+        if (i < oids_size) {
+          oid = anchor.ev_policy_oids(i);
+        }
+        string_to_write += "            \"" + oid + "\",\n";
+      }
+
+      // End struct
+      string_to_write += "        },\n";
+      string_to_write += "    },\n";
+    }
+    string_to_write += "};\n";
+    if (!base::WriteFile(cpp_path, string_to_write)) {
+      PLOG(ERROR) << "Error writing cpp include file";
+      return 1;
+    }
+  }
+
+  return 0;
+}
diff --git a/net/tools/root_store_tool/BUILD.gn b/net/tools/root_store_tool/BUILD.gn
index bbb0d11..8c90f466 100644
--- a/net/tools/root_store_tool/BUILD.gn
+++ b/net/tools/root_store_tool/BUILD.gn
@@ -11,7 +11,10 @@
   # should not be linked into the browser. If the browser needs this protobuf in
   # the future, make a separate target with cc_generator_options = "lite".
   use_protobuf_full = true
-  visibility = [ ":root_store_tool" ]
+  visibility = [
+    ":root_store_tool",
+    "//net/tools/ev_store_tool:ev_store_tool",
+  ]
 }
 
 # TODO(https://crbug.com/1216547): add unit tests
diff --git a/net/tools/root_store_tool/root_store.proto b/net/tools/root_store_tool/root_store.proto
index bbefffe4..4fc5103 100644
--- a/net/tools/root_store_tool/root_store.proto
+++ b/net/tools/root_store_tool/root_store.proto
@@ -20,6 +20,9 @@
     // certificate.
     string filename = 2;
   }
+
+  // OID should be expressed as dotted-decimal text (e.g. "1.3.159.1.17.1")
+  repeated string ev_policy_oids = 3;
 }
 
 message RootStore {
diff --git a/net/url_request/url_request_context_builder_unittest.cc b/net/url_request/url_request_context_builder_unittest.cc
index 87ccee5f..8e2174bc0 100644
--- a/net/url_request/url_request_context_builder_unittest.cc
+++ b/net/url_request/url_request_context_builder_unittest.cc
@@ -28,6 +28,8 @@
 #include "net/url_request/url_request_test_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
+#include "url/gurl.h"
+#include "url/scheme_host_port.h"
 
 #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "net/proxy_resolution/proxy_config.h"
@@ -59,7 +61,7 @@
                         HttpAuth::Target target,
                         const SSLInfo& ssl_info,
                         const NetworkIsolationKey& network_isolation_key,
-                        const GURL& origin,
+                        const url::SchemeHostPort& scheme_host_port,
                         CreateReason reason,
                         int nonce_count,
                         const NetLogWithSource& net_log,
@@ -126,21 +128,21 @@
 }
 
 TEST_F(URLRequestContextBuilderTest, DefaultHttpAuthHandlerFactory) {
-  GURL gurl("www.google.com");
+  url::SchemeHostPort scheme_host_port(GURL("https://www.google.com"));
   std::unique_ptr<HttpAuthHandler> handler;
   std::unique_ptr<URLRequestContext> context(builder_.Build());
   SSLInfo null_ssl_info;
 
   // Verify that the default basic handler is present
-  EXPECT_EQ(
-      OK,
-      context->http_auth_handler_factory()->CreateAuthHandlerFromString(
-          "basic", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resolver_.get(), &handler));
+  EXPECT_EQ(OK,
+            context->http_auth_handler_factory()->CreateAuthHandlerFromString(
+                "basic", HttpAuth::AUTH_SERVER, null_ssl_info,
+                NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
+                host_resolver_.get(), &handler));
 }
 
 TEST_F(URLRequestContextBuilderTest, CustomHttpAuthHandlerFactory) {
-  GURL gurl("www.google.com");
+  url::SchemeHostPort scheme_host_port(GURL("https://www.google.com"));
   const int kBasicReturnCode = OK;
   std::unique_ptr<HttpAuthHandler> handler;
   builder_.SetHttpAuthHandlerFactory(
@@ -152,22 +154,22 @@
   EXPECT_EQ(kBasicReturnCode,
             context->http_auth_handler_factory()->CreateAuthHandlerFromString(
                 "ExtraScheme", HttpAuth::AUTH_SERVER, null_ssl_info,
-                NetworkIsolationKey(), gurl, NetLogWithSource(),
+                NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
                 host_resolver_.get(), &handler));
 
   // Verify that the default basic handler isn't present
-  EXPECT_EQ(
-      ERR_UNSUPPORTED_AUTH_SCHEME,
-      context->http_auth_handler_factory()->CreateAuthHandlerFromString(
-          "basic", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resolver_.get(), &handler));
+  EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME,
+            context->http_auth_handler_factory()->CreateAuthHandlerFromString(
+                "basic", HttpAuth::AUTH_SERVER, null_ssl_info,
+                NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
+                host_resolver_.get(), &handler));
 
   // Verify that a handler isn't returned for a bogus scheme.
-  EXPECT_EQ(
-      ERR_UNSUPPORTED_AUTH_SCHEME,
-      context->http_auth_handler_factory()->CreateAuthHandlerFromString(
-          "Bogus", HttpAuth::AUTH_SERVER, null_ssl_info, NetworkIsolationKey(),
-          gurl, NetLogWithSource(), host_resolver_.get(), &handler));
+  EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME,
+            context->http_auth_handler_factory()->CreateAuthHandlerFromString(
+                "Bogus", HttpAuth::AUTH_SERVER, null_ssl_info,
+                NetworkIsolationKey(), scheme_host_port, NetLogWithSource(),
+                host_resolver_.get(), &handler));
 }
 
 #if BUILDFLAG(ENABLE_REPORTING)
diff --git a/remoting/BUILD.gn b/remoting/BUILD.gn
index 41f89595..df6b28d 100644
--- a/remoting/BUILD.gn
+++ b/remoting/BUILD.gn
@@ -45,18 +45,18 @@
       deps += [
         "//remoting/host:remoting_native_messaging_manifests",
         "//remoting/host:remoting_start_host",
-        "//remoting/host/it2me:remote_assistance_host",
       ]
+      if (!is_ios) {
+        deps += [ "//remoting/host:remoting_native_messaging_host" ]
+      }
 
+      # it2me.
+      deps += [ "//remoting/host/it2me:remote_assistance_host" ]
       if (is_win) {
         deps += [ "//remoting/host/it2me:remote_assistance_host_uiaccess" ]
       }
     }
 
-    if (is_win || (!is_chromeos_ash && !is_android && !is_ios)) {
-      deps += [ "//remoting/host:remoting_native_messaging_host" ]
-    }
-
     if (is_linux && !is_chromeos_lacros) {
       deps += [
         "//remoting/host/linux:remoting_dev_me2me_host",
diff --git a/remoting/host/chromeos/BUILD.gn b/remoting/host/chromeos/BUILD.gn
index b77446c..07b1d21c 100644
--- a/remoting/host/chromeos/BUILD.gn
+++ b/remoting/host/chromeos/BUILD.gn
@@ -6,6 +6,8 @@
 
 source_set("chromeos") {
   sources = [
+    "ash_display_util.cc",
+    "ash_display_util.h",
     "aura_desktop_capturer.cc",
     "aura_desktop_capturer.h",
     "clipboard_aura.cc",
@@ -41,6 +43,7 @@
     "//remoting/host:clipboard",
     "//ui/aura/cursor",
     "//ui/base/cursor/mojom:cursor_type",
+    "//ui/display/manager",
   ]
 }
 
diff --git a/remoting/host/chromeos/DEPS b/remoting/host/chromeos/DEPS
index ca7508a..b340195 100644
--- a/remoting/host/chromeos/DEPS
+++ b/remoting/host/chromeos/DEPS
@@ -1,3 +1,7 @@
+include_rules = [
+  "+ui/display",
+]
+
 specific_include_rules = {
   "remoting_service.cc": [
     "+chrome/browser/browser_process.h",
@@ -5,4 +9,4 @@
     "+content/public/browser/browser_thread.h",
     "+content/public/browser/storage_partition.h",
   ],
-}
\ No newline at end of file
+}
diff --git a/remoting/host/chromeos/ash_display_util.cc b/remoting/host/chromeos/ash_display_util.cc
new file mode 100644
index 0000000..4a3d928
--- /dev/null
+++ b/remoting/host/chromeos/ash_display_util.cc
@@ -0,0 +1,121 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/host/chromeos/ash_display_util.h"
+
+#include "ash/shell.h"
+#include "base/no_destructor.h"
+#include "components/viz/common/frame_sinks/copy_output_request.h"
+#include "remoting/base/constants.h"
+#include "ui/compositor/layer.h"
+#include "ui/display/manager/display_manager.h"
+#include "ui/display/screen.h"
+#include "ui/display/types/display_constants.h"
+
+namespace remoting {
+
+namespace {
+
+absl::optional<SkBitmap> ToSkBitmap(
+    std::unique_ptr<viz::CopyOutputResult> result) {
+  if (result->IsEmpty())
+    return absl::nullopt;
+
+  auto scoped_bitmap = result->ScopedAccessSkBitmap();
+  return scoped_bitmap.GetOutScopedBitmap();
+}
+
+class DefaultAshDisplayUtil : public AshDisplayUtil {
+ public:
+  DefaultAshDisplayUtil() = default;
+  DefaultAshDisplayUtil(const DefaultAshDisplayUtil&) = delete;
+  DefaultAshDisplayUtil& operator=(const DefaultAshDisplayUtil&) = delete;
+  ~DefaultAshDisplayUtil() override = default;
+
+  // AshDisplayUtil implementation:
+  DisplayId GetPrimaryDisplayId() const override {
+    if (!screen())
+      return display::kDefaultDisplayId;
+
+    return screen()->GetPrimaryDisplay().id();
+  }
+
+  const std::vector<display::Display>& GetActiveDisplays() const override {
+    if (!display_manager())
+      return empty_display_list_;
+
+    return display_manager()->active_display_list();
+  }
+
+  const display::Display* GetDisplayForId(DisplayId display_id) const override {
+    if (!display_manager())
+      return nullptr;
+
+    if (!display_manager()->IsActiveDisplayId(display_id))
+      return nullptr;
+
+    return &display_manager()->GetDisplayForId(display_id);
+  }
+
+  void TakeScreenshotOfDisplay(DisplayId display_id,
+                               ScreenshotCallback callback) override {
+    aura::Window* root_window = GetRootWindowForId(display_id);
+    if (!root_window) {
+      std::move(callback).Run(absl::nullopt);
+      return;
+    }
+
+    auto request = std::make_unique<viz::CopyOutputRequest>(
+        viz::CopyOutputRequest::ResultFormat::RGBA,
+        viz::CopyOutputRequest::ResultDestination::kSystemMemory,
+        base::BindOnce(&ToSkBitmap).Then(std::move(callback)));
+
+    request->set_area(gfx::Rect(root_window->bounds().size()));
+    root_window->layer()->RequestCopyOfOutput(std::move(request));
+  }
+
+ private:
+  const display::Screen* screen() const { return display::Screen::GetScreen(); }
+  // We can not return a const pointer, as the ash shell has no const getter for
+  // the display manager :/
+  ash::Shell* shell() const { return ash::Shell::Get(); }
+  const display::DisplayManager* display_manager() const {
+    if (!shell())
+      return nullptr;
+    return shell()->display_manager();
+  }
+  aura::Window* GetRootWindowForId(DisplayId id) {
+    if (!shell())
+      return nullptr;
+
+    return shell()->GetRootWindowForDisplayId(id);
+  }
+
+  const std::vector<display::Display> empty_display_list_;
+};
+
+AshDisplayUtil* g_instance_for_testing_ = nullptr;
+
+}  // namespace
+
+// static
+AshDisplayUtil& AshDisplayUtil::Get() {
+  static base::NoDestructor<DefaultAshDisplayUtil> instance_;
+
+  if (g_instance_for_testing_)
+    return *g_instance_for_testing_;
+
+  return *instance_;
+}
+
+// static
+void AshDisplayUtil::SetInstanceForTesting(AshDisplayUtil* instance) {
+  if (instance)
+    DCHECK(!g_instance_for_testing_);
+  g_instance_for_testing_ = instance;
+}
+
+AshDisplayUtil::~AshDisplayUtil() = default;
+
+}  // namespace remoting
diff --git a/remoting/host/chromeos/ash_display_util.h b/remoting/host/chromeos/ash_display_util.h
new file mode 100644
index 0000000..1b280641
--- /dev/null
+++ b/remoting/host/chromeos/ash_display_util.h
@@ -0,0 +1,47 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef REMOTING_HOST_CHROMEOS_ASH_DISPLAY_UTIL_H_
+#define REMOTING_HOST_CHROMEOS_ASH_DISPLAY_UTIL_H_
+
+#include <cstdint>
+#include <vector>
+
+#include "base/callback_forward.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+#include "ui/display/display.h"
+
+class SkBitmap;
+
+namespace remoting {
+
+using DisplayId = int64_t;
+
+// Utility class that abstracts away all display related actions on ChromeOs,
+// allowing us to inject a fake instance during unittests.
+class AshDisplayUtil {
+ public:
+  static AshDisplayUtil& Get();
+
+  // The caller is responsible to ensure this given instance lives long enough.
+  // To unset call this method again with nullptr.
+  static void SetInstanceForTesting(AshDisplayUtil* instance);
+
+  virtual ~AshDisplayUtil();
+
+  virtual DisplayId GetPrimaryDisplayId() const = 0;
+
+  virtual const std::vector<display::Display>& GetActiveDisplays() const = 0;
+
+  virtual const display::Display* GetDisplayForId(
+      DisplayId display_id) const = 0;
+
+  using ScreenshotCallback = base::OnceCallback<void(absl::optional<SkBitmap>)>;
+  virtual void TakeScreenshotOfDisplay(DisplayId display_id,
+                                       ScreenshotCallback callback) = 0;
+};
+
+}  // namespace remoting
+
+#endif  // REMOTING_HOST_CHROMEOS_ASH_DISPLAY_UTIL_H_
diff --git a/remoting/host/chromeos/aura_desktop_capturer.cc b/remoting/host/chromeos/aura_desktop_capturer.cc
index 9f56487..a6bfed0 100644
--- a/remoting/host/chromeos/aura_desktop_capturer.cc
+++ b/remoting/host/chromeos/aura_desktop_capturer.cc
@@ -7,74 +7,64 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "build/chromeos_buildflags.h"
-#include "components/viz/common/frame_sinks/copy_output_request.h"
-#include "components/viz/common/frame_sinks/copy_output_result.h"
+#include "base/callback.h"
+#include "remoting/host/chromeos/ash_display_util.h"
 #include "remoting/host/chromeos/skia_bitmap_desktop_frame.h"
-#include "ui/aura/window.h"
-#include "ui/aura/window_tree_host.h"
-#include "ui/compositor/layer.h"
-
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "ash/shell.h"
-#endif
 
 namespace remoting {
 
-AuraDesktopCapturer::AuraDesktopCapturer()
-    : callback_(nullptr), desktop_window_(nullptr) {}
+namespace {
 
-AuraDesktopCapturer::~AuraDesktopCapturer() = default;
+std::unique_ptr<webrtc::DesktopFrame> ToDesktopFrame(
+    absl::optional<SkBitmap> bitmap) {
+  if (!bitmap)
+    return nullptr;
 
-void AuraDesktopCapturer::Start(webrtc::DesktopCapturer::Callback* callback) {
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  if (ash::Shell::HasInstance()) {
-    // TODO(kelvinp): Use ash::Shell::GetAllRootWindows() when multiple monitor
-    // support is implemented.
-    desktop_window_ = ash::Shell::GetPrimaryRootWindow();
-    DCHECK(desktop_window_) << "Failed to retrieve the Aura Shell root window";
-  }
-#endif
-
-  DCHECK(!callback_) << "Start() can only be called once";
-  callback_ = callback;
-  DCHECK(callback_);
-}
-
-void AuraDesktopCapturer::CaptureFrame() {
-  std::unique_ptr<viz::CopyOutputRequest> request =
-      std::make_unique<viz::CopyOutputRequest>(
-          viz::CopyOutputRequest::ResultFormat::RGBA,
-          viz::CopyOutputRequest::ResultDestination::kSystemMemory,
-          base::BindOnce(&AuraDesktopCapturer::OnFrameCaptured,
-                         weak_factory_.GetWeakPtr()));
-
-  gfx::Rect window_rect(desktop_window_->bounds().size());
-
-  request->set_area(window_rect);
-  desktop_window_->layer()->RequestCopyOfOutput(std::move(request));
-}
-
-void AuraDesktopCapturer::OnFrameCaptured(
-    std::unique_ptr<viz::CopyOutputResult> result) {
-  if (result->IsEmpty()) {
-    callback_->OnCaptureResult(DesktopCapturer::Result::ERROR_TEMPORARY,
-                               nullptr);
-    return;
-  }
-
-  auto scoped_bitmap = result->ScopedAccessSkBitmap();
   std::unique_ptr<webrtc::DesktopFrame> frame(SkiaBitmapDesktopFrame::Create(
-      std::make_unique<SkBitmap>(scoped_bitmap.GetOutScopedBitmap())));
+      std::make_unique<SkBitmap>(std::move(bitmap.value()))));
 
   // |VideoFramePump| will not encode the frame if |updated_region| is empty.
   const webrtc::DesktopRect& rect = webrtc::DesktopRect::MakeWH(
       frame->size().width(), frame->size().height());
-
-  // TODO(kelvinp): Set Frame DPI according to the screen resolution.
-  // See cc::Layer::contents_scale_(x|y)() and frame->set_depi().
   frame->mutable_updated_region()->SetRect(rect);
 
+  return frame;
+}
+
+}  // namespace
+
+AuraDesktopCapturer::AuraDesktopCapturer()
+    : AuraDesktopCapturer(AshDisplayUtil::Get()) {}
+
+AuraDesktopCapturer::AuraDesktopCapturer(AshDisplayUtil& util) : util_(util) {}
+
+AuraDesktopCapturer::~AuraDesktopCapturer() = default;
+
+void AuraDesktopCapturer::Start(webrtc::DesktopCapturer::Callback* callback) {
+  DCHECK(!callback_) << "Start() can only be called once";
+  callback_ = callback;
+  DCHECK(callback_);
+
+  source_display_id_ = util_.GetPrimaryDisplayId();
+}
+
+void AuraDesktopCapturer::CaptureFrame() {
+  DCHECK(callback_) << "Call Start() first";
+  util_.TakeScreenshotOfDisplay(
+      source_display_id_,
+      base::BindOnce(ToDesktopFrame)
+          .Then(base::BindOnce(&AuraDesktopCapturer::OnFrameCaptured,
+                               weak_factory_.GetWeakPtr())));
+}
+
+void AuraDesktopCapturer::OnFrameCaptured(
+    std::unique_ptr<webrtc::DesktopFrame> frame) {
+  if (!frame) {
+    callback_->OnCaptureResult(DesktopCapturer::Result::ERROR_TEMPORARY,
+                               nullptr);
+    return;
+  }
+
   callback_->OnCaptureResult(DesktopCapturer::Result::SUCCESS,
                              std::move(frame));
 }
diff --git a/remoting/host/chromeos/aura_desktop_capturer.h b/remoting/host/chromeos/aura_desktop_capturer.h
index 089da92..798df1a 100644
--- a/remoting/host/chromeos/aura_desktop_capturer.h
+++ b/remoting/host/chromeos/aura_desktop_capturer.h
@@ -8,25 +8,20 @@
 #include <memory>
 
 #include "base/memory/weak_ptr.h"
+#include "remoting/host/chromeos/ash_display_util.h"
 #include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
 
-namespace viz {
-class CopyOutputResult;
-}  // namespace cc
-
-namespace aura {
-class Window;
-}  // namespace aura
-
 namespace remoting {
 
-// A webrtc::DesktopCapturer that captures pixels from the root window of the
-// Aura Shell.  This is implemented by requesting the layer and its substree to
-// be rendered to a given data structure.  Start() and Capture() must be called
-// on the Browser UI thread.
+// A webrtc::DesktopCapturer that captures pixels from the primary display.
+// The resulting screen capture will use the display's native resolution.
+// This is implemented through the abstractions provided by |AshDisplayUtil|,
+// allowing us to mock display interactions during unittests.
+// Start() and CaptureFrame() must be called on the Browser UI thread.
 class AuraDesktopCapturer : public webrtc::DesktopCapturer {
  public:
   AuraDesktopCapturer();
+  explicit AuraDesktopCapturer(AshDisplayUtil& display_util);
 
   AuraDesktopCapturer(const AuraDesktopCapturer&) = delete;
   AuraDesktopCapturer& operator=(const AuraDesktopCapturer&) = delete;
@@ -40,16 +35,16 @@
   bool SelectSource(SourceId id) override;
 
  private:
-  friend class AuraDesktopCapturerTest;
-
   // Called when a copy of the layer is captured.
-  void OnFrameCaptured(std::unique_ptr<viz::CopyOutputResult> result);
+  void OnFrameCaptured(std::unique_ptr<webrtc::DesktopFrame> frame);
+
+  AshDisplayUtil& util_;
 
   // Points to the callback passed to webrtc::DesktopCapturer::Start().
-  webrtc::DesktopCapturer::Callback* callback_;
+  webrtc::DesktopCapturer::Callback* callback_ = nullptr;
 
-  // The root window of the Aura Shell.
-  aura::Window* desktop_window_;
+  // The id of the display we're currently capturing.
+  DisplayId source_display_id_;
 
   base::WeakPtrFactory<AuraDesktopCapturer> weak_factory_{this};
 };
diff --git a/remoting/host/chromeos/aura_desktop_capturer_unittest.cc b/remoting/host/chromeos/aura_desktop_capturer_unittest.cc
index a2b94b7..c03da51f 100644
--- a/remoting/host/chromeos/aura_desktop_capturer_unittest.cc
+++ b/remoting/host/chromeos/aura_desktop_capturer_unittest.cc
@@ -10,20 +10,39 @@
 #include <memory>
 #include <utility>
 
-#include "components/viz/common/frame_sinks/copy_output_result.h"
+#include "base/logging.h"
+#include "base/test/task_environment.h"
+#include "base/test/test_future.h"
+#include "remoting/host/chromeos/ash_display_util.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
+#include "ui/display/display.h"
 
 using testing::_;
+using testing::Eq;
+using testing::IsNull;
+using testing::NotNull;
 
 namespace remoting {
 
 namespace {
 
+const DisplayId kDefaultPrimaryDisplayId = (0xFFl << 33);
+
+struct ScreenshotRequest {
+  DisplayId display;
+  AshDisplayUtil::ScreenshotCallback callback;
+};
+
+struct CaptureResult {
+  webrtc::DesktopCapturer::Result result;
+  std::unique_ptr<webrtc::DesktopFrame> frame;
+};
+
 // Test frame data.
-const unsigned char frame_data[] = {
+const unsigned char expected_frame[] = {
     0x00, 0x00, 0x00, 0x9a, 0x65, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
     0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x90,
     0x24, 0x71, 0xf8, 0xf2, 0xe5, 0xdf, 0x7f, 0x81, 0xc7, 0x49, 0xc4, 0xa3,
@@ -35,62 +54,169 @@
     0x05, 0x75, 0x1d, 0x13, 0x6e, 0xb3, 0x6b, 0x1d, 0x29, 0xae, 0xd3, 0x43,
     0xe6, 0x84, 0x8f, 0xa3, 0x9d, 0x65, 0x4e, 0x2f, 0x57, 0xe3, 0xf6, 0xe6,
     0x20, 0x3c, 0x00, 0xc6, 0xe1, 0x73, 0x34, 0xe2, 0x23, 0x99, 0xc4, 0xfa,
-    0x91, 0xc2, 0xd5, 0x97, 0xc1, 0x8b, 0xd0, 0x3c, 0x13, 0xba, 0xf0, 0xd7
-  };
+    0x91, 0xc2, 0xd5, 0x97, 0xc1, 0x8b, 0xd0, 0x3c, 0x13, 0xba, 0xf0, 0xd7};
+
+SkBitmap TestBitmap() {
+  SkBitmap bitmap;
+  const SkImageInfo& info =
+      SkImageInfo::Make(3, 4, kBGRA_8888_SkColorType, kPremul_SkAlphaType,
+                        SkColorSpace::MakeSRGB());
+  bitmap.installPixels(info, const_cast<unsigned char*>(expected_frame), 12);
+  return bitmap;
+}
+
+size_t SizeInBits(const SkBitmap& bitmap) {
+  return bitmap.computeByteSize() * 8;
+}
 
 ACTION_P(SaveUniquePtrArg, dest) {
   *dest = std::move(*arg1);
 }
 
+// Simple basic implementation of |AshDisplayUtil|.
+// Will automatically register itself as the global version in the constructor,
+// and deregister in the destructor.
+// It allows setting the display_id of the primary display (which will then
+// be created as the only display in the system).
+class ScopedAshDisplayUtil : public AshDisplayUtil {
+ public:
+  ScopedAshDisplayUtil() { AshDisplayUtil::SetInstanceForTesting(this); }
+  ScopedAshDisplayUtil(const ScopedAshDisplayUtil&) = delete;
+  ScopedAshDisplayUtil& operator=(const ScopedAshDisplayUtil&) = delete;
+  ~ScopedAshDisplayUtil() override {
+    AshDisplayUtil::SetInstanceForTesting(nullptr);
+  }
+
+  void SetPrimaryDisplayId(DisplayId new_id) {
+    GetPrimaryDisplay().set_id(new_id);
+  }
+
+  ScreenshotRequest WaitForScreenshotRequest() {
+    EXPECT_TRUE(screenshot_request_.Wait());
+    return screenshot_request_.Take();
+  }
+
+  void ReplyWithScreenshot(const absl::optional<SkBitmap>& screenshot) {
+    ScreenshotRequest request = WaitForScreenshotRequest();
+    std::move(request.callback).Run(screenshot);
+  }
+
+  const display::Display& GetPrimaryDisplay() const { return displays_[0]; }
+  display::Display& GetPrimaryDisplay() { return displays_[0]; }
+
+  // AshDisplayUtil implementation:
+  DisplayId GetPrimaryDisplayId() const override {
+    return GetPrimaryDisplay().id();
+  }
+
+  const std::vector<display::Display>& GetActiveDisplays() const override {
+    return displays_;
+  }
+
+  const display::Display* GetDisplayForId(DisplayId display_id) const override {
+    if (display_id == displays_[0].id())
+      return &displays_[0];
+    return nullptr;
+  }
+
+  void TakeScreenshotOfDisplay(DisplayId display_id,
+                               ScreenshotCallback callback) override {
+    screenshot_request_.SetValue(
+        ScreenshotRequest{display_id, std::move(callback)});
+  }
+
+ private:
+  std::vector<display::Display> displays_{
+      display::Display{kDefaultPrimaryDisplayId}};
+
+  base::test::TestFuture<ScreenshotRequest> screenshot_request_;
+};
+
+class DesktopCapturerCallback : public webrtc::DesktopCapturer::Callback {
+ public:
+  DesktopCapturerCallback() = default;
+  DesktopCapturerCallback(const DesktopCapturerCallback&) = delete;
+  DesktopCapturerCallback& operator=(const DesktopCapturerCallback&) = delete;
+  ~DesktopCapturerCallback() override = default;
+
+  CaptureResult WaitForResult() {
+    EXPECT_TRUE(result_.Wait());
+    return result_.Take();
+  }
+
+  // webrtc::DesktopCapturer::Callback implementation:
+  void OnCaptureResult(webrtc::DesktopCapturer::Result result,
+                       std::unique_ptr<webrtc::DesktopFrame> frame) override {
+    result_.SetValue(CaptureResult{result, std::move(frame)});
+  }
+
+ private:
+  base::test::TestFuture<CaptureResult> result_;
+};
+
 }  // namespace
 
-class AuraDesktopCapturerTest : public testing::Test,
-                                public webrtc::DesktopCapturer::Callback {
+class AuraDesktopCapturerTest : public testing::Test {
  public:
   AuraDesktopCapturerTest() = default;
 
-  void SetUp() override;
+  ScopedAshDisplayUtil& display_util() { return display_util_; }
 
-  MOCK_METHOD2(OnCaptureResultPtr,
-               void(webrtc::DesktopCapturer::Result result,
-                    std::unique_ptr<webrtc::DesktopFrame>* frame));
-  void OnCaptureResult(webrtc::DesktopCapturer::Result result,
-                       std::unique_ptr<webrtc::DesktopFrame> frame) override {
-    OnCaptureResultPtr(result, &frame);
-  }
+  DesktopCapturerCallback& desktop_capturer_callback() { return callback_; }
 
  protected:
-  void SimulateFrameCapture() {
-    SkBitmap bitmap;
-    const SkImageInfo& info =
-        SkImageInfo::Make(3, 4, kBGRA_8888_SkColorType, kPremul_SkAlphaType,
-                          SkColorSpace::MakeSRGB());
-    bitmap.installPixels(info, const_cast<unsigned char*>(frame_data), 12);
-
-    capturer_->OnFrameCaptured(std::make_unique<viz::CopyOutputSkBitmapResult>(
-        gfx::Rect(0, 0, bitmap.width(), bitmap.height()), std::move(bitmap)));
-  }
-
-  std::unique_ptr<AuraDesktopCapturer> capturer_;
+  base::test::SingleThreadTaskEnvironment environment_;
+  ScopedAshDisplayUtil display_util_;
+  DesktopCapturerCallback callback_;
+  AuraDesktopCapturer capturer_{display_util_};
 };
 
-void AuraDesktopCapturerTest::SetUp() {
-  capturer_ = std::make_unique<AuraDesktopCapturer>();
+TEST_F(AuraDesktopCapturerTest, ShouldSendScreenshotRequestForPrimaryDisplay) {
+  display_util().SetPrimaryDisplayId(111);
+
+  capturer_.Start(&desktop_capturer_callback());
+  capturer_.CaptureFrame();
+
+  ScreenshotRequest request = display_util().WaitForScreenshotRequest();
+
+  EXPECT_THAT(request.display, Eq(111));
 }
 
-TEST_F(AuraDesktopCapturerTest, ConvertSkBitmapToDesktopFrame) {
-  std::unique_ptr<webrtc::DesktopFrame> captured_frame;
+TEST_F(AuraDesktopCapturerTest, ShouldSendScreenshotToCapturer) {
+  capturer_.Start(&desktop_capturer_callback());
+  capturer_.CaptureFrame();
 
-  EXPECT_CALL(*this,
-              OnCaptureResultPtr(webrtc::DesktopCapturer::Result::SUCCESS, _))
-      .Times(1)
-      .WillOnce(SaveUniquePtrArg(&captured_frame));
-  capturer_->Start(this);
+  const SkBitmap expected_bitmap = TestBitmap();
+  display_util().ReplyWithScreenshot(expected_bitmap);
 
-  SimulateFrameCapture();
+  CaptureResult result = desktop_capturer_callback().WaitForResult();
+  EXPECT_THAT(result.result, Eq(webrtc::DesktopCapturer::Result::SUCCESS));
+  ASSERT_THAT(result.frame, NotNull());
+  EXPECT_EQ(0, memcmp(expected_bitmap.getPixels(), result.frame->data(),
+                      SizeInBits(expected_bitmap)));
+}
 
-  ASSERT_TRUE(captured_frame);
-  EXPECT_EQ(0, memcmp(frame_data, captured_frame->data(), sizeof(frame_data)));
+TEST_F(AuraDesktopCapturerTest, ShouldSetUpdatedRegion) {
+  capturer_.Start(&desktop_capturer_callback());
+  capturer_.CaptureFrame();
+
+  display_util().ReplyWithScreenshot(TestBitmap());
+
+  CaptureResult result = desktop_capturer_callback().WaitForResult();
+  ASSERT_THAT(result.frame, NotNull());
+  EXPECT_FALSE(result.frame->updated_region().is_empty());
+}
+
+TEST_F(AuraDesktopCapturerTest, ShouldReturnTemporaryErrorIfScreenshotFails) {
+  capturer_.Start(&desktop_capturer_callback());
+  capturer_.CaptureFrame();
+
+  display_util().ReplyWithScreenshot(absl::nullopt);
+
+  CaptureResult result = desktop_capturer_callback().WaitForResult();
+  EXPECT_THAT(result.result,
+              Eq(webrtc::DesktopCapturer::Result::ERROR_TEMPORARY));
+  EXPECT_THAT(result.frame, IsNull());
 }
 
 }  // namespace remoting
diff --git a/services/device/fingerprint/fingerprint_chromeos.cc b/services/device/fingerprint/fingerprint_chromeos.cc
index 04f7e344..b25d7f7 100644
--- a/services/device/fingerprint/fingerprint_chromeos.cc
+++ b/services/device/fingerprint/fingerprint_chromeos.cc
@@ -65,6 +65,29 @@
   return device::mojom::ScanResult::INSUFFICIENT;
 }
 
+device::mojom::FingerprintError ToMojom(biod::FingerprintError type) {
+  switch (type) {
+    case biod::ERROR_HW_UNAVAILABLE:
+      return device::mojom::FingerprintError::HW_UNAVAILABLE;
+    case biod::ERROR_UNABLE_TO_PROCESS:
+      return device::mojom::FingerprintError::UNABLE_TO_PROCESS;
+    case biod::ERROR_TIMEOUT:
+      return device::mojom::FingerprintError::TIMEOUT;
+    case biod::ERROR_NO_SPACE:
+      return device::mojom::FingerprintError::NO_SPACE;
+    case biod::ERROR_CANCELED:
+      return device::mojom::FingerprintError::CANCELED;
+    case biod::ERROR_UNABLE_TO_REMOVE:
+      return device::mojom::FingerprintError::UNABLE_TO_REMOVE;
+    case biod::ERROR_LOCKOUT:
+      return device::mojom::FingerprintError::LOCKOUT;
+    case biod::ERROR_NO_TEMPLATES:
+      return device::mojom::FingerprintError::NO_TEMPLATES;
+  }
+  NOTREACHED();
+  return device::mojom::FingerprintError::UNKNOWN;
+}
+
 }  // namespace
 
 FingerprintChromeOS::FingerprintChromeOS() {
@@ -233,7 +256,7 @@
 }
 
 void FingerprintChromeOS::BiodAuthScanDoneReceived(
-    biod::ScanResult scan_result,
+    const biod::FingerprintMessage& msg,
     const chromeos::AuthScanMatches& matches) {
   // Convert ObjectPath to string, since mojom doesn't know definition of
   // dbus ObjectPath.
@@ -246,12 +269,28 @@
     entries.emplace_back(std::move(item.first), std::move(paths));
   }
 
-  auto mojom_scan_result = ToMojom(scan_result);
-  CHECK(device::mojom::IsKnownEnumValue(mojom_scan_result));
+  device::mojom::FingerprintMessage converted_msg;
+
+  switch (msg.msg_case()) {
+    case biod::FingerprintMessage::MsgCase::kScanResult:
+      converted_msg.set_scan_result(ToMojom(msg.scan_result()));
+      CHECK(device::mojom::IsKnownEnumValue(converted_msg.get_scan_result()));
+      break;
+    case biod::FingerprintMessage::MsgCase::kError:
+      converted_msg.set_fingerprint_error(ToMojom(msg.error()));
+      CHECK(device::mojom::IsKnownEnumValue(
+          converted_msg.get_fingerprint_error()));
+      break;
+    default:
+      LOG(ERROR) << "Unsupported fingerprint message received";
+      NOTREACHED();
+      return;
+  }
 
   for (auto& observer : observers_) {
     observer->OnAuthScanDone(
-        mojom_scan_result,
+        {base::in_place, converted_msg},
+        // TODO(patrykd): Construct the map at the beginning of this function.
         base::flat_map<std::string, std::vector<std::string>>(entries));
   }
 }
diff --git a/services/device/fingerprint/fingerprint_chromeos.h b/services/device/fingerprint/fingerprint_chromeos.h
index e52b5fc..a50da495b 100644
--- a/services/device/fingerprint/fingerprint_chromeos.h
+++ b/services/device/fingerprint/fingerprint_chromeos.h
@@ -72,7 +72,7 @@
                                   bool enroll_session_complete,
                                   int percent_complete) override;
   void BiodAuthScanDoneReceived(
-      biod::ScanResult scan_result,
+      const biod::FingerprintMessage& msg,
       const chromeos::AuthScanMatches& matches) override;
   void BiodSessionFailedReceived() override;
 
diff --git a/services/device/fingerprint/fingerprint_chromeos_unittest.cc b/services/device/fingerprint/fingerprint_chromeos_unittest.cc
index 34152fb..3f9fb2a 100644
--- a/services/device/fingerprint/fingerprint_chromeos_unittest.cc
+++ b/services/device/fingerprint/fingerprint_chromeos_unittest.cc
@@ -37,11 +37,11 @@
   }
 
   void OnAuthScanDone(
-      device::mojom::ScanResult scan_result,
+      const device::mojom::FingerprintMessagePtr msg,
       const base::flat_map<std::string, std::vector<std::string>>& matches)
       override {
     auth_scan_dones_++;
-    last_scan_result_ = scan_result;
+    last_message_ = *msg;
   }
 
   void OnSessionFailed() override { session_failures_++; }
@@ -52,8 +52,8 @@
   int restarts() { return restarts_; }
   int session_failures() { return session_failures_; }
 
-  device::mojom::ScanResult last_scan_result() const {
-    return last_scan_result_;
+  const device::mojom::FingerprintMessage& last_message() const {
+    return last_message_;
   }
 
  private:
@@ -63,7 +63,8 @@
   int restarts_ = 0;           // Count of restart signal received.
   int session_failures_ = 0;   // Count of session failed signal received.
 
-  device::mojom::ScanResult last_scan_result_;  // Last received ScanResult.
+  device::mojom::FingerprintMessage
+      last_message_;  // Last received FingerprintMessage.
 };
 
 class FingerprintChromeOSTest : public testing::Test {
@@ -96,10 +97,10 @@
         -1 /* percent_complete */);
   }
 
-  void GenerateAuthScanDoneSignal(biod::ScanResult scan_result) {
+  void GenerateAuthScanDoneSignal(const biod::FingerprintMessage& msg) {
     std::string fake_fingerprint_data;
     chromeos::FakeBiodClient::Get()->SendAuthScanDone(fake_fingerprint_data,
-                                                      scan_result);
+                                                      msg);
   }
 
   void GenerateSessionFailedSignal() {
@@ -166,10 +167,12 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(observer.enroll_scan_dones(), 1);
 
+  biod::FingerprintMessage msg;
   chromeos::FakeBiodClient::Get()->StartAuthSession(base::BindOnce(
       &FingerprintChromeOSTest::onStartSession, base::Unretained(this)));
   base::RunLoop().RunUntilIdle();
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_SUCCESS);
+  msg.set_scan_result(biod::SCAN_RESULT_SUCCESS);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(observer.auth_scan_dones(), 1);
 
@@ -212,43 +215,78 @@
       &FingerprintChromeOSTest::onStartSession, base::Unretained(this)));
   base::RunLoop().RunUntilIdle();
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_SUCCESS);
+  biod::FingerprintMessage msg;
+  msg.set_scan_result(biod::SCAN_RESULT_SUCCESS);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(), device::mojom::ScanResult::SUCCESS);
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
+            device::mojom::ScanResult::SUCCESS);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_PARTIAL);
+  msg.set_scan_result(biod::SCAN_RESULT_PARTIAL);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(), device::mojom::ScanResult::PARTIAL);
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
+            device::mojom::ScanResult::PARTIAL);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_INSUFFICIENT);
+  msg.set_scan_result(biod::SCAN_RESULT_INSUFFICIENT);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(),
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
             device::mojom::ScanResult::INSUFFICIENT);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_SENSOR_DIRTY);
+  msg.set_scan_result(biod::SCAN_RESULT_SENSOR_DIRTY);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(),
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
             device::mojom::ScanResult::SENSOR_DIRTY);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_TOO_SLOW);
+  msg.set_scan_result(biod::SCAN_RESULT_TOO_SLOW);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(), device::mojom::ScanResult::TOO_SLOW);
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
+            device::mojom::ScanResult::TOO_SLOW);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_TOO_FAST);
+  msg.set_scan_result(biod::SCAN_RESULT_TOO_FAST);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(), device::mojom::ScanResult::TOO_FAST);
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
+            device::mojom::ScanResult::TOO_FAST);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_IMMOBILE);
+  msg.set_scan_result(biod::SCAN_RESULT_IMMOBILE);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(), device::mojom::ScanResult::IMMOBILE);
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
+            device::mojom::ScanResult::IMMOBILE);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_NO_MATCH);
+  msg.set_scan_result(biod::SCAN_RESULT_NO_MATCH);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(), device::mojom::ScanResult::NO_MATCH);
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
+            device::mojom::ScanResult::NO_MATCH);
 
-  GenerateAuthScanDoneSignal(biod::SCAN_RESULT_MAX);
+  msg.set_scan_result(biod::SCAN_RESULT_MAX);
+  GenerateAuthScanDoneSignal(msg);
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(observer.last_scan_result(), device::mojom::ScanResult::kMaxValue);
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kScanResult);
+  EXPECT_EQ(observer.last_message().get_scan_result(),
+            device::mojom::ScanResult::kMaxValue);
 }
 
 // Make sure that compilation fails if a new value is added and this assert is
@@ -257,4 +295,86 @@
 static_assert(device::mojom::ScanResult::kMaxValue ==
               device::mojom::ScanResult::NO_MATCH);
 
+TEST_F(FingerprintChromeOSTest, FingerprintErrorConvertTest) {
+  mojo::PendingRemote<mojom::FingerprintObserver> pending_observer;
+  FakeFingerprintObserver observer(
+      pending_observer.InitWithNewPipeAndPassReceiver());
+  fingerprint()->AddFingerprintObserver(std::move(pending_observer));
+
+  chromeos::FakeBiodClient::Get()->StartAuthSession(base::BindOnce(
+      &FingerprintChromeOSTest::onStartSession, base::Unretained(this)));
+  base::RunLoop().RunUntilIdle();
+
+  biod::FingerprintMessage msg;
+  msg.set_error(biod::ERROR_HW_UNAVAILABLE);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::HW_UNAVAILABLE);
+
+  msg.set_error(biod::ERROR_UNABLE_TO_PROCESS);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::UNABLE_TO_PROCESS);
+
+  msg.set_error(biod::ERROR_TIMEOUT);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::TIMEOUT);
+
+  msg.set_error(biod::ERROR_NO_SPACE);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::NO_SPACE);
+
+  msg.set_error(biod::ERROR_CANCELED);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::CANCELED);
+
+  msg.set_error(biod::ERROR_UNABLE_TO_REMOVE);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::UNABLE_TO_REMOVE);
+
+  msg.set_error(biod::ERROR_LOCKOUT);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::LOCKOUT);
+
+  msg.set_error(biod::ERROR_NO_TEMPLATES);
+  GenerateAuthScanDoneSignal(msg);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(observer.last_message().which(),
+            device::mojom::FingerprintMessage::Tag::kFingerprintError);
+  EXPECT_EQ(observer.last_message().get_fingerprint_error(),
+            device::mojom::FingerprintError::NO_TEMPLATES);
+}
+
+// Make sure that compilation fails if a new value is added and this assert is
+// not updated. When updating this, please extend unit tests to check newly
+// added value.
+static_assert(device::mojom::FingerprintError::kMaxValue ==
+              device::mojom::FingerprintError::NO_TEMPLATES);
+
 }  // namespace device
diff --git a/services/device/public/mojom/fingerprint.mojom b/services/device/public/mojom/fingerprint.mojom
index cab35a1..49ca4d00 100644
--- a/services/device/public/mojom/fingerprint.mojom
+++ b/services/device/public/mojom/fingerprint.mojom
@@ -22,6 +22,26 @@
 };
 
 // Note: this needs to stay in sync with
+// src/platform2/system_api/dbus/biod/constants.proto in the ChromeOS repo.
+// Protobuf enum starts with 1 (0 is not used for compatibility with android),
+// but in this enum we add 'catch all' field at 0. It is required by enum
+// histogram guidelines.
+// Please modify tools/metrics/histograms/enums.xml when changing this.
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum FingerprintError {
+  UNKNOWN = 0,
+  HW_UNAVAILABLE = 1,
+  UNABLE_TO_PROCESS = 2,
+  TIMEOUT = 3,
+  NO_SPACE = 4,
+  CANCELED = 5,
+  UNABLE_TO_REMOVE = 6,
+  LOCKOUT = 7,
+  NO_TEMPLATES = 8,
+};
+
+// Note: this needs to stay in sync with
 // src/platform2/system_api/dbus/biod/dbus-constants.proto in the ChromeOS
 // repro.
 enum BiometricType {
@@ -29,6 +49,13 @@
   FINGERPRINT = 1,
 };
 
+// Note: this needs to stay in sync with
+// src/platform2/system_api/dbus/biod/messages.proto in the ChromeOS repo.
+union FingerprintMessage {
+  FingerprintError fingerprint_error;
+  ScanResult scan_result;
+};
+
 // This interface is ChromeOS-specific. If it is ever desired to support a more
 // general fingerprint service across more platforms, the interface would need
 // to be generalized. Interface for observing fingerprint daemon signals.
@@ -49,7 +76,7 @@
   // Called to indicate a bad scan of any kind, or a successful scan. If scan is
   // successful, |matches| is a map of user id keys to a vector of object path
   // values.
-  OnAuthScanDone(ScanResult scan_result, map<string, array<string>> matches);
+  OnAuthScanDone(FingerprintMessage msg, map<string, array<string>> matches);
 
   // Called during either mode to indicate a failure. Any EnrollSession record
   // that was underway is thrown away and AuthSession will no longer be
diff --git a/services/network/network_service_unittest.cc b/services/network/network_service_unittest.cc
index 1a156af..17748ba4 100644
--- a/services/network/network_service_unittest.cc
+++ b/services/network/network_service_unittest.cc
@@ -283,10 +283,10 @@
   ASSERT_TRUE(auth_handler_factory->http_auth_preferences());
   EXPECT_TRUE(
       auth_handler_factory->http_auth_preferences()->CanUseDefaultCredentials(
-          GURL("https://server1/")));
+          url::SchemeHostPort(GURL("https://server1/"))));
   EXPECT_FALSE(
       auth_handler_factory->http_auth_preferences()->CanUseDefaultCredentials(
-          GURL("https://server2/")));
+          url::SchemeHostPort(GURL("https://server2/"))));
 
   // Change allowlist to only have a different server on it. The pre-existing
   // NetworkContext should be using the new list.
@@ -295,10 +295,10 @@
   service()->ConfigureHttpAuthPrefs(std::move(auth_params));
   EXPECT_FALSE(
       auth_handler_factory->http_auth_preferences()->CanUseDefaultCredentials(
-          GURL("https://server1/")));
+          url::SchemeHostPort(GURL("https://server1/"))));
   EXPECT_TRUE(
       auth_handler_factory->http_auth_preferences()->CanUseDefaultCredentials(
-          GURL("https://server2/")));
+          url::SchemeHostPort(GURL("https://server2/"))));
 
   // Change allowlist to have multiple servers. The pre-existing NetworkContext
   // should be using the new list.
@@ -307,10 +307,10 @@
   service()->ConfigureHttpAuthPrefs(std::move(auth_params));
   EXPECT_TRUE(
       auth_handler_factory->http_auth_preferences()->CanUseDefaultCredentials(
-          GURL("https://server1/")));
+          url::SchemeHostPort(GURL("https://server1/"))));
   EXPECT_TRUE(
       auth_handler_factory->http_auth_preferences()->CanUseDefaultCredentials(
-          GURL("https://server2/")));
+          url::SchemeHostPort(GURL("https://server2/"))));
 }
 
 TEST_F(NetworkServiceTest, AuthDelegateAllowlist) {
@@ -334,9 +334,11 @@
       auth_handler_factory->http_auth_preferences();
   ASSERT_TRUE(auth_prefs);
   EXPECT_EQ(DelegationType::kUnconstrained,
-            auth_prefs->GetDelegationType(GURL("https://server1/")));
+            auth_prefs->GetDelegationType(
+                url::SchemeHostPort(GURL("https://server1/"))));
   EXPECT_EQ(DelegationType::kNone,
-            auth_prefs->GetDelegationType(GURL("https://server2/")));
+            auth_prefs->GetDelegationType(
+                url::SchemeHostPort(GURL("https://server2/"))));
 
   // Change allowlist to only have a different server on it. The pre-existing
   // NetworkContext should be using the new list.
@@ -344,9 +346,11 @@
   auth_params->delegate_allowlist = "server2";
   service()->ConfigureHttpAuthPrefs(std::move(auth_params));
   EXPECT_EQ(DelegationType::kNone,
-            auth_prefs->GetDelegationType(GURL("https://server1/")));
+            auth_prefs->GetDelegationType(
+                url::SchemeHostPort(GURL("https://server1/"))));
   EXPECT_EQ(DelegationType::kUnconstrained,
-            auth_prefs->GetDelegationType(GURL("https://server2/")));
+            auth_prefs->GetDelegationType(
+                url::SchemeHostPort(GURL("https://server2/"))));
 
   // Change allowlist to have multiple servers. The pre-existing NetworkContext
   // should be using the new list.
@@ -354,9 +358,11 @@
   auth_params->delegate_allowlist = "server1,server2";
   service()->ConfigureHttpAuthPrefs(std::move(auth_params));
   EXPECT_EQ(DelegationType::kUnconstrained,
-            auth_prefs->GetDelegationType(GURL("https://server1/")));
+            auth_prefs->GetDelegationType(
+                url::SchemeHostPort(GURL("https://server1/"))));
   EXPECT_EQ(DelegationType::kUnconstrained,
-            auth_prefs->GetDelegationType(GURL("https://server2/")));
+            auth_prefs->GetDelegationType(
+                url::SchemeHostPort(GURL("https://server2/"))));
 }
 
 TEST_F(NetworkServiceTest, DelegateByKdcPolicy) {
diff --git a/testing/test.gni b/testing/test.gni
index 5b27101..5fa8f39b 100644
--- a/testing/test.gni
+++ b/testing/test.gni
@@ -933,5 +933,11 @@
     configs += [ "//build/config/android:hide_all_but_jni" ]
   } else {
     configs = default_executable_configs
+    if (is_mac) {
+      # TODO(lgrey): Maybe restore this.
+      # Don't strip tests for visibility into test crashes/hangs.
+      # https://bugs.chromium.org/p/chromium/issues/detail?id=1244047#c49
+      configs -= [ "//build/config/mac:strip_all" ]
+    }
   }
 }
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/3pp/fetch.py b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/3pp/fetch.py
index 82d3ace..1889ef6 100755
--- a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/3pp/fetch.py
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/3pp/fetch.py
@@ -12,9 +12,9 @@
 import json
 import os
 
-_FILE_URL = 'https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.0/kotlin-stdlib-1.6.0.jar'
-_FILE_NAME = 'kotlin-stdlib-1.6.0.jar'
-_FILE_VERSION = '1.6.0'
+_FILE_URL = 'https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.10/kotlin-stdlib-1.6.10.jar'
+_FILE_NAME = 'kotlin-stdlib-1.6.10.jar'
+_FILE_VERSION = '1.6.10'
 
 
 def do_latest():
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/README.chromium b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/README.chromium
index d6d839a..3a8c40a 100644
--- a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/README.chromium
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/README.chromium
@@ -1,7 +1,7 @@
 Name: Kotlin Stdlib
 Short Name: kotlin-stdlib
 URL: https://kotlinlang.org/
-Version: 1.6.0
+Version: 1.6.10
 License: Apache Version 2.0
 License File: LICENSE
 Security Critical: yes
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/cipd.yaml b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/cipd.yaml
index d518be1..6823d92d 100644
--- a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/cipd.yaml
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib/cipd.yaml
@@ -3,8 +3,8 @@
 # found in the LICENSE file.
 
 # To create CIPD package run the following command.
-# cipd create --pkg-def cipd.yaml -tag version:2@1.6.0.cr0
+# cipd create --pkg-def cipd.yaml -tag version:2@1.6.10.cr0
 package: chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib
 description: "Kotlin Stdlib"
 data:
-- file: kotlin-stdlib-1.6.0.jar
+- file: kotlin-stdlib-1.6.10.jar
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/3pp/fetch.py b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/3pp/fetch.py
index c6c2295..8a814598 100755
--- a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/3pp/fetch.py
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/3pp/fetch.py
@@ -12,9 +12,9 @@
 import json
 import os
 
-_FILE_URL = 'https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.0/kotlin-stdlib-common-1.6.0.jar'
-_FILE_NAME = 'kotlin-stdlib-common-1.6.0.jar'
-_FILE_VERSION = '1.6.0'
+_FILE_URL = 'https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.10/kotlin-stdlib-common-1.6.10.jar'
+_FILE_NAME = 'kotlin-stdlib-common-1.6.10.jar'
+_FILE_VERSION = '1.6.10'
 
 
 def do_latest():
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/README.chromium b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/README.chromium
index c924213d..e632fc1c 100644
--- a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/README.chromium
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/README.chromium
@@ -1,7 +1,7 @@
 Name: Kotlin Stdlib Common
 Short Name: kotlin-stdlib-common
 URL: https://kotlinlang.org/
-Version: 1.6.0
+Version: 1.6.10
 License: Apache Version 2.0
 License File: LICENSE
 Security Critical: yes
diff --git a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/cipd.yaml b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/cipd.yaml
index 661ced8..7e79b57b 100644
--- a/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/cipd.yaml
+++ b/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common/cipd.yaml
@@ -3,8 +3,8 @@
 # found in the LICENSE file.
 
 # To create CIPD package run the following command.
-# cipd create --pkg-def cipd.yaml -tag version:2@1.6.0.cr0
+# cipd create --pkg-def cipd.yaml -tag version:2@1.6.10.cr0
 package: chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common
 description: "Kotlin Stdlib Common"
 data:
-- file: kotlin-stdlib-common-1.6.0.jar
+- file: kotlin-stdlib-common-1.6.10.jar
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index 5ede382..65ed9bf7 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -858,9 +858,10 @@
 // Only use per-process buffer limit and not per-request limt. When this flag is
 // on network requests can continue buffering data as long as it is under per
 // process limit.
+// TODO(crbug.com/1243600): Remove this flag eventually.
 const base::Feature kNetworkRequestUsesOnlyPerProcessBufferLimit{
     "NetworkRequestUsesOnlyPerProcessBufferLimit",
-    base::FEATURE_DISABLED_BY_DEFAULT};
+    base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Kill switch for the new behavior whereby anchors with target=_blank get
 // noopener behavior by default. TODO(crbug.com/898942): Remove in Chrome 95.
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index d66ede9..d671325 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -2049,6 +2049,10 @@
       scrollbar-corner
       resizer
       input-list-button
+      transition
+      transition-container
+      transition-old-content
+      transition-new-content
 
   # Shadow root type.
   type ShadowRootType extends string
diff --git a/third_party/blink/public/mojom/webid/federated_auth_request.mojom b/third_party/blink/public/mojom/webid/federated_auth_request.mojom
index 11ffe04..592699fa 100644
--- a/third_party/blink/public/mojom/webid/federated_auth_request.mojom
+++ b/third_party/blink/public/mojom/webid/federated_auth_request.mojom
@@ -43,9 +43,9 @@
 
 // The details of a single logout request from an identity provider.
 struct LogoutRequest {
-  // Endpoint to which the request will be sent. The origin is validated to
+  // URL to which the request will be sent. The origin is validated to
   // have an associated active session.
-  url.mojom.Url endpoint;
+  url.mojom.Url url;
 
   // Identifier for the account being logged out. This is used to verify that
   // the logout request correlates to a previous sign-in event, and will
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni
index dfe6954..d61c5c8 100644
--- a/third_party/blink/renderer/bindings/generated_in_modules.gni
+++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -943,8 +943,6 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_watch_advertisements_options.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_wave_shaper_options.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_wave_shaper_options.h",
-  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_web_id_logout_request.cc",
-  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_web_id_logout_request.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_web_transport_close_info.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_web_transport_close_info.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_web_transport_error_init.cc",
@@ -1669,6 +1667,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_face_detector.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_federated_credential.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_federated_credential.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_federated_credential_logout_request.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_federated_credential_logout_request.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_fetch_event.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_fetch_event.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_file_entry.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni
index 7314c3f..e52909ef 100644
--- a/third_party/blink/renderer/bindings/idl_in_modules.gni
+++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -158,6 +158,7 @@
           "//third_party/blink/renderer/modules/credentialmanager/credentials_container.idl",
           "//third_party/blink/renderer/modules/credentialmanager/federated_credential.idl",
           "//third_party/blink/renderer/modules/credentialmanager/federated_credential_init.idl",
+          "//third_party/blink/renderer/modules/credentialmanager/federated_credential_logout_request.idl",
           "//third_party/blink/renderer/modules/credentialmanager/federated_credential_request_options.idl",
           "//third_party/blink/renderer/modules/credentialmanager/federated_identity_provider.idl",
           "//third_party/blink/renderer/modules/credentialmanager/navigator_credentials.idl",
@@ -1029,7 +1030,6 @@
           "//third_party/blink/renderer/modules/webgpu/worker_navigator_gpu.idl",
           "//third_party/blink/renderer/modules/webid/navigator_web_id.idl",
           "//third_party/blink/renderer/modules/webid/web_id.idl",
-          "//third_party/blink/renderer/modules/webid/web_id_logout_request.idl",
           "//third_party/blink/renderer/modules/webmidi/midi_access.idl",
           "//third_party/blink/renderer/modules/webmidi/midi_connection_event.idl",
           "//third_party/blink/renderer/modules/webmidi/midi_connection_event_init.idl",
diff --git a/third_party/blink/renderer/core/css/css_selector.cc b/third_party/blink/renderer/core/css/css_selector.cc
index 3c77159b..1321970 100644
--- a/third_party/blink/renderer/core/css/css_selector.cc
+++ b/third_party/blink/renderer/core/css/css_selector.cc
@@ -251,6 +251,14 @@
       return kPseudoIdSpellingError;
     case kPseudoGrammarError:
       return kPseudoIdGrammarError;
+    case kPseudoTransition:
+      return kPseudoIdTransition;
+    case kPseudoTransitionContainer:
+      return kPseudoIdTransitionContainer;
+    case kPseudoTransitionOldContent:
+      return kPseudoIdTransitionOldContent;
+    case kPseudoTransitionNewContent:
+      return kPseudoIdTransitionNewContent;
     case kPseudoUnknown:
     case kPseudoEmpty:
     case kPseudoFirstChild:
@@ -462,6 +470,7 @@
     {"start", CSSSelector::kPseudoStart},
     {"target", CSSSelector::kPseudoTarget},
     {"target-text", CSSSelector::kPseudoTargetText},
+    {"transition", CSSSelector::kPseudoTransition},
     {"valid", CSSSelector::kPseudoValid},
     {"vertical", CSSSelector::kPseudoVertical},
     {"visited", CSSSelector::kPseudoVisited},
@@ -486,6 +495,9 @@
     {"nth-of-type", CSSSelector::kPseudoNthOfType},
     {"part", CSSSelector::kPseudoPart},
     {"slotted", CSSSelector::kPseudoSlotted},
+    {"transition-container", CSSSelector::kPseudoTransitionContainer},
+    {"transition-new-content", CSSSelector::kPseudoTransitionNewContent},
+    {"transition-old-content", CSSSelector::kPseudoTransitionOldContent},
     {"where", CSSSelector::kPseudoWhere},
 };
 
@@ -655,6 +667,10 @@
     case kPseudoHighlight:
     case kPseudoSpellingError:
     case kPseudoGrammarError:
+    case kPseudoTransition:
+    case kPseudoTransitionContainer:
+    case kPseudoTransitionOldContent:
+    case kPseudoTransitionNewContent:
       if (match_ != kPseudoElement)
         pseudo_type_ = kPseudoUnknown;
       break;
diff --git a/third_party/blink/renderer/core/css/css_selector.h b/third_party/blink/renderer/core/css/css_selector.h
index 5ccf698..85c7d64b 100644
--- a/third_party/blink/renderer/core/css/css_selector.h
+++ b/third_party/blink/renderer/core/css/css_selector.h
@@ -287,11 +287,22 @@
     kPseudoSpellingError,
     kPseudoGrammarError,
     kPseudoHas,
+
     // TODO(blee@igalia.com) Need to clarify the :scope dependency in relative
     // selector definition.
     // - spec : https://www.w3.org/TR/selectors-4/#relative
     // - csswg issue : https://github.com/w3c/csswg-drafts/issues/6399
     kPseudoRelativeLeftmost,
+
+    // The following selectors are used to target pseudo elements created for
+    // DocumentTransition.
+    // See
+    // https://github.com/WICG/shared-element-transitions/blob/main/explainer.md
+    // for details.
+    kPseudoTransition,
+    kPseudoTransitionContainer,
+    kPseudoTransitionOldContent,
+    kPseudoTransitionNewContent,
   };
 
   enum class AttributeMatchType {
diff --git a/third_party/blink/renderer/core/css/element_rule_collector.cc b/third_party/blink/renderer/core/css/element_rule_collector.cc
index 9b9d070..c21c397 100644
--- a/third_party/blink/renderer/core/css/element_rule_collector.cc
+++ b/third_party/blink/renderer/core/css/element_rule_collector.cc
@@ -533,7 +533,7 @@
         mode_ == SelectorChecker::kCollectingStyleRules)
       return;
     // FIXME: Matching should not modify the style directly.
-    if (!style_ || dynamic_pseudo >= kFirstInternalPseudoId)
+    if (!style_ || dynamic_pseudo > kLastTrackedPublicPseudoId)
       return;
     if ((dynamic_pseudo == kPseudoIdBefore ||
          dynamic_pseudo == kPseudoIdAfter) &&
diff --git a/third_party/blink/renderer/core/css/parser/css_selector_parser.cc b/third_party/blink/renderer/core/css/parser/css_selector_parser.cc
index ea07170..8c2f145 100644
--- a/third_party/blink/renderer/core/css/parser/css_selector_parser.cc
+++ b/third_party/blink/renderer/core/css/parser/css_selector_parser.cc
@@ -927,6 +927,25 @@
       selector->SetPartNames(std::make_unique<Vector<AtomicString>>(parts));
       return selector;
     }
+    case CSSSelector::kPseudoTransitionContainer:
+    case CSSSelector::kPseudoTransitionOldContent:
+    case CSSSelector::kPseudoTransitionNewContent: {
+      const CSSParserToken& ident = block.ConsumeIncludingWhitespace();
+      if (!block.AtEnd())
+        return nullptr;
+
+      absl::optional<AtomicString> argument;
+      if (ident.GetType() == kIdentToken)
+        argument = ident.Value().ToAtomicString();
+      else if (ident.GetType() == kDelimiterToken && ident.Delimiter() == '*')
+        argument = CSSSelector::UniversalSelectorAtom();
+
+      if (!argument)
+        return nullptr;
+
+      selector->SetArgument(*argument);
+      return selector;
+    }
     case CSSSelector::kPseudoSlotted: {
       DisallowPseudoElementsScope scope(this);
       base::AutoReset<bool> inside_compound(&inside_compound_pseudo_, true);
diff --git a/third_party/blink/renderer/core/css/parser/css_selector_parser_test.cc b/third_party/blink/renderer/core/css/parser/css_selector_parser_test.cc
index 946a1a6..dbf16b2 100644
--- a/third_party/blink/renderer/core/css/parser/css_selector_parser_test.cc
+++ b/third_party/blink/renderer/core/css/parser/css_selector_parser_test.cc
@@ -219,6 +219,57 @@
   }
 }
 
+TEST(CSSSelectorParserTest, TransitionPseudoStyles) {
+  struct TestCase {
+    const char* selector;
+    bool valid;
+    const char* argument;
+    CSSSelector::PseudoType type;
+  };
+
+  TestCase test_cases[] = {
+      {"html::transition-container(*)", true, nullptr,
+       CSSSelector::kPseudoTransitionContainer},
+      {"html::transition-container(foo)", true, "foo",
+       CSSSelector::kPseudoTransitionContainer},
+      {"html::transition-old-content(foo)", true, "foo",
+       CSSSelector::kPseudoTransitionOldContent},
+      {"html::transition-new-content(foo)", true, "foo",
+       CSSSelector::kPseudoTransitionNewContent},
+      {"::transition-container(foo)", true, "foo",
+       CSSSelector::kPseudoTransitionContainer},
+      {"div::transition-container(*)", true, nullptr,
+       CSSSelector::kPseudoTransitionContainer},
+      {"::transition-container(*)::before", false, nullptr,
+       CSSSelector::kPseudoUnknown},
+      {"::transition-container(*):hover", false, nullptr,
+       CSSSelector::kPseudoUnknown},
+  };
+
+  for (const auto& test_case : test_cases) {
+    CSSTokenizer tokenizer(test_case.selector);
+    const auto tokens = tokenizer.TokenizeToEOF();
+    CSSParserTokenRange range(tokens);
+    CSSSelectorList list = CSSSelectorParser::ParseSelector(
+        range,
+        MakeGarbageCollected<CSSParserContext>(
+            kHTMLStandardMode, SecureContextMode::kInsecureContext),
+        nullptr);
+    EXPECT_EQ(list.IsValid(), test_case.valid);
+    if (!test_case.valid)
+      continue;
+
+    EXPECT_TRUE(list.HasOneSelector());
+
+    auto* selector = list.First();
+    while (selector->TagHistory())
+      selector = selector->TagHistory();
+
+    EXPECT_EQ(selector->GetPseudoType(), test_case.type);
+    EXPECT_EQ(selector->Argument(), test_case.argument);
+  }
+}
+
 TEST(CSSSelectorParserTest, WorkaroundForInvalidCustomPseudoInUAStyle) {
   // See crbug.com/578131
   const char* test_cases[] = {
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 2b87434d..88c67a2 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set.cc
+++ b/third_party/blink/renderer/core/css/rule_feature_set.cc
@@ -187,6 +187,10 @@
     case CSSSelector::kPseudoSpellingError:
     case CSSSelector::kPseudoGrammarError:
     case CSSSelector::kPseudoHas:
+    case CSSSelector::kPseudoTransition:
+    case CSSSelector::kPseudoTransitionContainer:
+    case CSSSelector::kPseudoTransitionNewContent:
+    case CSSSelector::kPseudoTransitionOldContent:
       return true;
     case CSSSelector::kPseudoUnknown:
     case CSSSelector::kPseudoLeftPage:
diff --git a/third_party/blink/renderer/core/css/selector_checker.cc b/third_party/blink/renderer/core/css/selector_checker.cc
index 3fbba229..145ee2d 100644
--- a/third_party/blink/renderer/core/css/selector_checker.cc
+++ b/third_party/blink/renderer/core/css/selector_checker.cc
@@ -1378,6 +1378,17 @@
       }
       return false;
     }
+    case CSSSelector::kPseudoTransitionContainer:
+    case CSSSelector::kPseudoTransitionOldContent:
+    case CSSSelector::kPseudoTransitionNewContent: {
+      if (CSSSelector::GetPseudoId(selector.GetPseudoType()) !=
+          context.pseudo_id) {
+        return false;
+      }
+      result.dynamic_pseudo = context.pseudo_id;
+      return selector.Argument() == CSSSelector::UniversalSelectorAtom() ||
+             selector.Argument() == pseudo_argument_;
+    }
     case CSSSelector::kPseudoTargetText:
       if (!is_ua_rule_) {
         UseCounter::Count(context.element->GetDocument(),
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index 5aba3806..9b56f017 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -5838,7 +5838,7 @@
 
   const ComputedStyle* style = GetComputedStyle();
 
-  if (!style || (pseudo_id < kFirstInternalPseudoId &&
+  if (!style || (pseudo_id <= kLastTrackedPublicPseudoId &&
                  !style->HasPseudoElementStyle(pseudo_id))) {
     return nullptr;
   }
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc b/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc
index 362d893..fdba0507 100644
--- a/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc
+++ b/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc
@@ -178,10 +178,14 @@
       scope.GetScriptState(), underlying_source, 0);
   ASSERT_TRUE(stream);
 
-  underlying_source->Enqueue(
-      ScriptValue(scope.GetIsolate(), ToV8(chunk1, scope.GetScriptState())));
-  underlying_source->Enqueue(
-      ScriptValue(scope.GetIsolate(), ToV8(chunk2, scope.GetScriptState())));
+  underlying_source->Enqueue(ScriptValue(
+      scope.GetIsolate(),
+      ToV8Traits<DOMUint8Array>::ToV8(scope.GetScriptState(), chunk1)
+          .ToLocalChecked()));
+  underlying_source->Enqueue(ScriptValue(
+      scope.GetIsolate(),
+      ToV8Traits<DOMUint8Array>::ToV8(scope.GetScriptState(), chunk2)
+          .ToLocalChecked()));
   underlying_source->Close();
 
   Checkpoint checkpoint;
diff --git a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc
index 5fe5edb9..4873528 100644
--- a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc
+++ b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc
@@ -152,11 +152,17 @@
     chunk3->Data()[2] = 0x49;
     chunk3->Data()[3] = 0x4a;
     underlying_source->Enqueue(
-        ScriptValue(script_state->GetIsolate(), ToV8(chunk1, script_state)));
+        ScriptValue(script_state->GetIsolate(),
+                    ToV8Traits<DOMUint8Array>::ToV8(script_state, chunk1)
+                        .ToLocalChecked()));
     underlying_source->Enqueue(
-        ScriptValue(script_state->GetIsolate(), ToV8(chunk2, script_state)));
+        ScriptValue(script_state->GetIsolate(),
+                    ToV8Traits<DOMUint8Array>::ToV8(script_state, chunk2)
+                        .ToLocalChecked()));
     underlying_source->Enqueue(
-        ScriptValue(script_state->GetIsolate(), ToV8(chunk3, script_state)));
+        ScriptValue(script_state->GetIsolate(),
+                    ToV8Traits<DOMUint8Array>::ToV8(script_state, chunk3)
+                        .ToLocalChecked()));
     underlying_source->Close();
   }
 
@@ -253,8 +259,9 @@
   chunk->Data()[1] = 0x44;
   chunk->Data()[2] = 0x45;
   chunk->Data()[3] = 0x46;
-  underlying_source->Enqueue(
-      ScriptValue(script_state->GetIsolate(), ToV8(chunk, script_state)));
+  underlying_source->Enqueue(ScriptValue(
+      script_state->GetIsolate(),
+      ToV8Traits<DOMUint8Array>::ToV8(script_state, chunk).ToLocalChecked()));
   underlying_source->Close();
 
   Persistent<BytesConsumer> consumer =
@@ -304,8 +311,9 @@
   chunk->Data()[1] = 0x44;
   chunk->Data()[2] = 0x45;
   chunk->Data()[3] = 0x46;
-  underlying_source->Enqueue(
-      ScriptValue(script_state->GetIsolate(), ToV8(chunk, script_state)));
+  underlying_source->Enqueue(ScriptValue(
+      script_state->GetIsolate(),
+      ToV8Traits<DOMUint8Array>::ToV8(script_state, chunk).ToLocalChecked()));
   underlying_source->Close();
 
   Persistent<BytesConsumer> consumer =
diff --git a/third_party/blink/renderer/core/fileapi/file.cc b/third_party/blink/renderer/core/fileapi/file.cc
index 24844eee..57c1c28 100644
--- a/third_party/blink/renderer/core/fileapi/file.cc
+++ b/third_party/blink/renderer/core/fileapi/file.cc
@@ -29,6 +29,7 @@
 
 #include "third_party/blink/public/platform/file_path_conversion.h"
 #include "third_party/blink/public/platform/platform.h"
+#include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_file_property_bag.h"
 #include "third_party/blink/renderer/core/frame/web_feature.h"
 #include "third_party/blink/renderer/core/html/forms/form_controller.h"
@@ -313,8 +314,11 @@
 ScriptValue File::lastModifiedDate(ScriptState* script_state) const {
   // lastModifiedDate returns a Date instance,
   // http://www.w3.org/TR/FileAPI/#dfn-lastModifiedDate
-  return ScriptValue(script_state->GetIsolate(),
-                     ToV8(LastModifiedTime(), script_state));
+  return ScriptValue(
+      script_state->GetIsolate(),
+      ToV8Traits<IDLNullable<IDLDate>>::ToV8(
+          script_state, absl::optional<base::Time>(LastModifiedTime()))
+          .ToLocalChecked());
 }
 
 absl::optional<base::Time> File::LastModifiedTimeForSerialization() const {
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
index 2f2117f..88c6d46c 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
+++ b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
@@ -7,6 +7,7 @@
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+#include "third_party/blink/renderer/platform/graphics/graphics_types.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
@@ -23,11 +24,11 @@
 
   bool alpha = true;
   bool antialias = true;
-  String color_space = "srgb";
+  PredefinedColorSpace color_space = PredefinedColorSpace::kSRGB;
   bool depth = true;
   bool fail_if_major_performance_caveat = false;
   bool desynchronized = false;
-  String pixel_format = "uint8";
+  CanvasPixelFormat pixel_format = CanvasPixelFormat::kUint8;
   bool premultiplied_alpha = true;
   bool preserve_drawing_buffer = false;
   String power_preference = "default";
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index 20ebc8cb1..98f1587 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -337,12 +337,8 @@
         .Record(doc.UkmRecorder());
   }
 
-  {
-    PredefinedColorSpace color_space = PredefinedColorSpace::kSRGB;
-    ParsePredefinedColorSpace(attributes.color_space, color_space);
-    if (color_space != PredefinedColorSpace::kSRGB)
-      UseCounter::Count(doc, WebFeature::kCanvasUseColorSpace);
-  }
+  if (attributes.color_space != PredefinedColorSpace::kSRGB)
+    UseCounter::Count(doc, WebFeature::kCanvasUseColorSpace);
 
   if (RuntimeEnabledFeatures::NewCanvas2DAPIEnabled(GetExecutionContext()))
     UseCounter::Count(doc, WebFeature::kNewCanvas2DAPI);
diff --git a/third_party/blink/renderer/core/html/canvas/image_data.cc b/third_party/blink/renderer/core/html/canvas/image_data.cc
index e21e30a..84c6fdff 100644
--- a/third_party/blink/renderer/core/html/canvas/image_data.cc
+++ b/third_party/blink/renderer/core/html/canvas/image_data.cc
@@ -58,10 +58,6 @@
     exception_state.ThrowTypeError("Overload resolution failed.");
     return nullptr;
   }
-  if (settings && settings->hasColorSpace()) {
-    if (!ColorSpaceNameIsValid(settings->colorSpace(), exception_state))
-      return nullptr;
-  }
 
   if (!width) {
     exception_state.ThrowDOMException(
@@ -124,8 +120,11 @@
   PredefinedColorSpace color_space = params.default_color_space;
   ImageDataStorageFormat storage_format = ImageDataStorageFormat::kUint8;
   if (settings) {
-    if (settings->hasColorSpace())
-      ParsePredefinedColorSpace(settings->colorSpace(), color_space);
+    if (settings->hasColorSpace() &&
+        !ValidateAndConvertColorSpace(settings->colorSpace(), color_space,
+                                      exception_state)) {
+      return nullptr;
+    }
     if (settings->hasStorageFormat()) {
       switch (settings->storageFormat().AsEnum()) {
         case V8ImageDataStorageFormat::Enum::kUint8:
diff --git a/third_party/blink/renderer/core/html/canvas/predefined_color_space.cc b/third_party/blink/renderer/core/html/canvas/predefined_color_space.cc
index b7431b86..90deffe 100644
--- a/third_party/blink/renderer/core/html/canvas/predefined_color_space.cc
+++ b/third_party/blink/renderer/core/html/canvas/predefined_color_space.cc
@@ -4,28 +4,48 @@
 
 #include "third_party/blink/renderer/core/html/canvas/predefined_color_space.h"
 
+#include "third_party/blink/renderer/bindings/core/v8/v8_predefined_color_space.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 
 namespace blink {
 
-bool ColorSpaceNameIsValid(const String& color_space_name,
-                           ExceptionState& exception_state) {
-  bool color_space_name_valid = true;
-  if (color_space_name == "rec2020") {
-    color_space_name_valid =
-        RuntimeEnabledFeatures::CanvasColorManagementV2Enabled();
-  } else if (color_space_name == "rec2100-hlg" ||
-             color_space_name == "rec2100-pq" ||
-             color_space_name == "srgb-linear") {
-    color_space_name_valid = RuntimeEnabledFeatures::CanvasHDREnabled();
+bool ValidateAndConvertColorSpace(const V8PredefinedColorSpace& v8_color_space,
+                                  PredefinedColorSpace& color_space,
+                                  ExceptionState& exception_state) {
+  bool needs_v2 = false;
+  bool needs_hdr = false;
+  switch (v8_color_space.AsEnum()) {
+    case V8PredefinedColorSpace::Enum::kSRGB:
+      color_space = PredefinedColorSpace::kSRGB;
+      break;
+    case V8PredefinedColorSpace::Enum::kRec2020:
+      color_space = PredefinedColorSpace::kRec2020;
+      needs_v2 = true;
+      break;
+    case V8PredefinedColorSpace::Enum::kDisplayP3:
+      color_space = PredefinedColorSpace::kP3;
+      break;
+    case V8PredefinedColorSpace::Enum::kRec2100Hlg:
+      color_space = PredefinedColorSpace::kRec2100HLG;
+      needs_hdr = true;
+      break;
+    case V8PredefinedColorSpace::Enum::kRec2100Pq:
+      color_space = PredefinedColorSpace::kRec2100PQ;
+      needs_hdr = true;
+      break;
+    case V8PredefinedColorSpace::Enum::kSRGBLinear:
+      color_space = PredefinedColorSpace::kSRGBLinear;
+      needs_hdr = true;
+      break;
   }
-  if (color_space_name_valid)
-    return true;
-
-  exception_state.ThrowTypeError(
-      "The provided value '" + color_space_name +
-      "' is not a valid enum value of the type PredefinedColorSpace.");
-  return false;
-}  // namespace blink
+  if ((needs_v2 && !RuntimeEnabledFeatures::CanvasColorManagementV2Enabled()) ||
+      (needs_hdr && !RuntimeEnabledFeatures::CanvasHDREnabled())) {
+    exception_state.ThrowTypeError(
+        "The provided value '" + v8_color_space.AsString() +
+        "' is not a valid enum value of the type PredefinedColorSpace.");
+    return false;
+  }
+  return true;
+}
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/canvas/predefined_color_space.h b/third_party/blink/renderer/core/html/canvas/predefined_color_space.h
index 2a5db33..c292994 100644
--- a/third_party/blink/renderer/core/html/canvas/predefined_color_space.h
+++ b/third_party/blink/renderer/core/html/canvas/predefined_color_space.h
@@ -7,16 +7,23 @@
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
+#include "third_party/blink/renderer/platform/graphics/graphics_types.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
 namespace blink {
 
-// Some values for PredefinedColorSpace are specified in the IDL but are
-// supposed to be guarded behind the CanvasColorManagementV2 feature (e.g,
-// 'rec2020'). This function will throw the exception that the IDL would
-// have thrown, if CanvasColorManagementV2 is not enabled.
-bool CORE_EXPORT ColorSpaceNameIsValid(const String& color_space_name,
-                                       ExceptionState& exception_state);
+class V8PredefinedColorSpace;
+
+// Convert from a V8PredefinedColorSpace to a PredefinedColorSpace. Note that
+// some values for PredefinedColorSpace are specified in the IDL but are
+// supposed to be guarded behind the CanvasColorManagementV2 and
+// CanvasHDREnabled features. This function will return false and throw an
+// exception into `exception_state` if `color_space` is unsupported because
+// its runtime flag is not enabled.
+bool CORE_EXPORT
+ValidateAndConvertColorSpace(const V8PredefinedColorSpace& v8_color_space,
+                             PredefinedColorSpace& color_space,
+                             ExceptionState& exception_state);
 
 }  // namespace blink
 
diff --git a/third_party/blink/renderer/core/html/client_hints_util.cc b/third_party/blink/renderer/core/html/client_hints_util.cc
index 928c165..f50bf01 100644
--- a/third_party/blink/renderer/core/html/client_hints_util.cc
+++ b/third_party/blink/renderer/core/html/client_hints_util.cc
@@ -6,9 +6,9 @@
 
 #include "services/network/public/cpp/client_hints.h"
 #include "third_party/blink/public/common/client_hints/client_hints.h"
-#include "third_party/blink/public/common/permissions_policy/permissions_policy.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/core/inspector/inspector_audits_issue.h"
+#include "third_party/blink/renderer/core/permissions_policy/permissions_policy_parser.h"
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
 #include "url/gurl.h"
 #include "url/origin.h"
@@ -31,7 +31,7 @@
         local_dom_window, ClientHintIssueReason::kMetaTagModifiedHTML);
   }
 
-  // If no hints were set, this is an http-equiv tag, this tag was added by
+  // If no hints were set, this is a http-equiv tag, this tag was added by
   // javascript, the `local_dom_window` is missing, or the feature is disabled,
   // there's nothing more to do.
   if (!client_hints_preferences.UpdateFromMetaTagAcceptCH(
@@ -67,13 +67,10 @@
     std::set<url::Origin> origin_set(allow_list.AllowedOrigins().begin(),
                                      allow_list.AllowedOrigins().end());
     origin_set.insert(pair.second.begin(), pair.second.end());
-    std::vector<url::Origin> filtered_origins;
-    std::copy_if(origin_set.begin(), origin_set.end(),
-                 std::back_inserter(filtered_origins),
-                 [](const auto& origin) { return !origin.opaque(); });
     auto declaration = ParsedPermissionsPolicyDeclaration(
-        policy_name, filtered_origins, allow_list.MatchesAll(),
-        allow_list.MatchesOpaqueSrc());
+        policy_name,
+        std::vector<url::Origin>(origin_set.begin(), origin_set.end()),
+        allow_list.MatchesAll(), allow_list.MatchesOpaqueSrc());
     container_policy.push_back(declaration);
   }
   auto new_policy = PermissionsPolicy::CopyStateFrom(current_policy);
@@ -84,4 +81,68 @@
       std::move(new_policy));
 }
 
+void UpdateIFrameContainerPolicyWithDelegationSupportForClientHints(
+    ParsedPermissionsPolicy& container_policy,
+    LocalDOMWindow* local_dom_window) {
+  if (!RuntimeEnabledFeatures::ClientHintThirdPartyDelegationEnabled()) {
+    return;
+  }
+
+  // To avoid the following section from being consistently O(n^2) we need to
+  // break the container_policy vector into a map. We keep only the first policy
+  // seen for each feature per PermissionsPolicy::InheritedValueForFeature.
+  std::map<mojom::blink::PermissionsPolicyFeature,
+           ParsedPermissionsPolicyDeclaration>
+      feature_to_container_policy;
+  for (const auto& candidate_policy : container_policy) {
+    if (feature_to_container_policy.find(candidate_policy.feature) ==
+        feature_to_container_policy.end()) {
+      feature_to_container_policy[candidate_policy.feature] = candidate_policy;
+    }
+  }
+
+  // Promote client hint features to container policy so any modified by HTML
+  // via an accept-ch meta tag can propagate to the iframe.
+  for (const auto& feature_and_hint : GetPolicyFeatureToClientHintMap()) {
+    // This is the policy which may have been overridden by the meta tag via
+    // UpdateWindowPermissionsPolicyWithDelegationSupportForClientHints we want
+    // the iframe loader to use instead of the one it got earlier.
+    const auto& maybe_window_allow_list =
+        local_dom_window->GetSecurityContext()
+            .GetPermissionsPolicy()
+            ->GetAllowlistForFeatureIfExists(feature_and_hint.first);
+    if (!maybe_window_allow_list.has_value()) {
+      continue;
+    }
+
+    // If the container policy already has a parsed policy for the client hint
+    // then use the first instance found and remove the others since that's
+    // what `PermissionsPolicy::InheritedValueForFeature` pays attention to.
+    ParsedPermissionsPolicyDeclaration merged_policy(feature_and_hint.first);
+    auto it = feature_to_container_policy.find(feature_and_hint.first);
+    if (it != feature_to_container_policy.end()) {
+      merged_policy = it->second;
+      RemoveFeatureIfPresent(feature_and_hint.first, container_policy);
+    }
+
+    // Now we apply the changes from the parent policy to ensure any changes
+    // since it was set are respected;
+    merged_policy.matches_all_origins |=
+        maybe_window_allow_list.value().MatchesAll();
+    merged_policy.matches_opaque_src |=
+        maybe_window_allow_list.value().MatchesOpaqueSrc();
+    std::set<url::Origin> origin_set;
+    if (!merged_policy.matches_all_origins) {
+      origin_set.insert(merged_policy.allowed_origins.begin(),
+                        merged_policy.allowed_origins.end());
+      origin_set.insert(
+          maybe_window_allow_list.value().AllowedOrigins().begin(),
+          maybe_window_allow_list.value().AllowedOrigins().end());
+    }
+    merged_policy.allowed_origins =
+        std::vector<url::Origin>(origin_set.begin(), origin_set.end());
+    container_policy.push_back(merged_policy);
+  }
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/client_hints_util.h b/third_party/blink/renderer/core/html/client_hints_util.h
index 44cd0701..b030c4d 100644
--- a/third_party/blink/renderer/core/html/client_hints_util.h
+++ b/third_party/blink/renderer/core/html/client_hints_util.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_CLIENT_HINTS_UTIL_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_CLIENT_HINTS_UTIL_H_
 
+#include "third_party/blink/public/common/permissions_policy/permissions_policy.h"
 #include "third_party/blink/renderer/platform/loader/fetch/client_hints_preferences.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
@@ -29,6 +30,17 @@
     bool is_http_equiv,
     bool is_preload_or_sync_parser);
 
+// This modifies `container_policy` to reflect any changes to client hint
+// permissions which may have occurred via the named accept-ch meta tag.
+// The permissions policy the browser side has for the frame was set in stone
+// before HTML parsing began, so any updates must be sent via the container
+// policy. It's as if the meta tag content was copied into the allow attribute
+// of the iframe.
+// TODO(crbug.com/1278127): Replace w/ generic HTML policy modification.
+void UpdateIFrameContainerPolicyWithDelegationSupportForClientHints(
+    ParsedPermissionsPolicy& container_policy,
+    LocalDOMWindow* local_dom_window);
+
 }  // namespace blink
 
 #endif  // THIRD_PARTY_BLINK_RENDERER_CORE_HTML_CLIENT_HINTS_UTIL_H_
diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third_party/blink/renderer/core/html/html_iframe_element.cc
index fc8c4df3..6c629e9 100644
--- a/third_party/blink/renderer/core/html/html_iframe_element.cc
+++ b/third_party/blink/renderer/core/html/html_iframe_element.cc
@@ -37,6 +37,7 @@
 #include "third_party/blink/renderer/core/fetch/trust_token_issuance_authorization.h"
 #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
+#include "third_party/blink/renderer/core/html/client_hints_util.h"
 #include "third_party/blink/renderer/core/html/html_document.h"
 #include "third_party/blink/renderer/core/html/trust_token_attribute_parsing.h"
 #include "third_party/blink/renderer/core/html_names.h"
@@ -367,6 +368,10 @@
     }
   }
 
+  // Factor in changes in client hint permissions.
+  UpdateIFrameContainerPolicyWithDelegationSupportForClientHints(
+      container_policy, GetDocument().domWindow());
+
   // Update the JavaScript policy object associated with this iframe, if it
   // exists.
   if (policy_)
diff --git a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
index 89079c4..a707816 100644
--- a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
@@ -210,6 +210,14 @@
       return protocol::DOM::PseudoTypeEnum::Resizer;
     case kPseudoIdInputListButton:
       return protocol::DOM::PseudoTypeEnum::InputListButton;
+    case kPseudoIdTransition:
+      return protocol::DOM::PseudoTypeEnum::Transition;
+    case kPseudoIdTransitionContainer:
+      return protocol::DOM::PseudoTypeEnum::TransitionContainer;
+    case kPseudoIdTransitionNewContent:
+      return protocol::DOM::PseudoTypeEnum::TransitionNewContent;
+    case kPseudoIdTransitionOldContent:
+      return protocol::DOM::PseudoTypeEnum::TransitionOldContent;
     case kAfterLastInternalPseudoId:
     case kPseudoIdNone:
       CHECK(false);
diff --git a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
index a5820f4..b970a55 100644
--- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
@@ -434,6 +434,7 @@
   setShowScrollBottleneckRects(show_scroll_bottleneck_rects_.Get());
   setShowHitTestBorders(show_hit_test_borders_.Get());
   setShowViewportSizeOnResize(show_size_on_resize_.Get());
+  setShowWebVitals(show_web_vitals_.Get());
   PickTheRightTool();
 }
 
diff --git a/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc b/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc
index 9fd627e5..3168482 100644
--- a/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc
@@ -42,6 +42,12 @@
        pseudo_id = static_cast<PseudoId>(pseudo_id + 1)) {
     if (!PseudoElement::IsWebExposed(pseudo_id, element_))
       continue;
+
+    // TODO(khushalsagar) : Support querying rules for transition pseudo
+    // elements.
+    if (IsTransitionPseudoElement(pseudo_id))
+      continue;
+
     // If the pseudo-element doesn't exist, exclude UA rules to avoid cluttering
     // all elements.
     unsigned rules_to_include = element_->GetPseudoElement(pseudo_id)
diff --git a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
index 2230fa6..cf339cf 100644
--- a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
@@ -392,6 +392,10 @@
     DEFINE_STRING_MAPPING(PseudoGrammarError)
     DEFINE_STRING_MAPPING(PseudoHas)
     DEFINE_STRING_MAPPING(PseudoRelativeLeftmost)
+    DEFINE_STRING_MAPPING(PseudoTransition)
+    DEFINE_STRING_MAPPING(PseudoTransitionContainer);
+    DEFINE_STRING_MAPPING(PseudoTransitionNewContent);
+    DEFINE_STRING_MAPPING(PseudoTransitionOldContent);
 #undef DEFINE_STRING_MAPPING
   }
 
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc b/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc
index 43c280e..41d5173 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc
@@ -101,9 +101,10 @@
 
 PhysicalRect GetBoxBounds(const LayoutBox* box, bool use_overflow_clip_edge) {
   PhysicalRect bounds(box->PhysicalBorderBoxRect());
-  // OverflowClipMargin() should only apply if clipping occurs on both axis.
-  if (use_overflow_clip_edge && box->ShouldClipOverflowAlongBothAxis() &&
-      box->StyleRef().OverflowClipMargin() != LayoutUnit()) {
+  // Only use overflow clip rect if we need to use overflow clip edge and
+  // overflow clip margin may have an effect, meaning we clip to the overflow
+  // clip edge and not something else.
+  if (use_overflow_clip_edge && box->ShouldApplyOverflowClipMargin()) {
     // OverflowClipRect() may be smaller than PhysicalBorderBoxRect().
     bounds.Unite(box->OverflowClipRect(PhysicalOffset()));
   }
@@ -124,8 +125,7 @@
   } else if (target->IsBox()) {
     result.first =
         GetBoxBounds(To<LayoutBox>(target),
-                     (flags & IntersectionGeometry::kUseOverflowClipEdge) ==
-                         IntersectionGeometry::kUseOverflowClipEdge);
+                     flags & IntersectionGeometry::kUseOverflowClipEdge);
   } else if (target->IsLayoutInline()) {
     result.first = PhysicalRect::EnclosingRect(
         To<LayoutBoxModelObject>(target)->LocalBoundingBoxRectF());
diff --git a/third_party/blink/renderer/core/layout/layout_block.cc b/third_party/blink/renderer/core/layout/layout_block.cc
index c38b896..070a660 100644
--- a/third_party/blink/renderer/core/layout/layout_block.cc
+++ b/third_party/blink/renderer/core/layout/layout_block.cc
@@ -289,12 +289,9 @@
   NOT_DESTROYED();
   LayoutBox::UpdateFromStyle();
 
-  // OverflowClipMargin() is only set if overflow is 'clip' along both axis, or
-  // 'contain: paint'. The later implies clipping along both axis.
-  bool should_clip_overflow =
-      (!StyleRef().IsOverflowVisibleAlongBothAxes() ||
-       StyleRef().OverflowClipMargin() != LayoutUnit()) &&
-      AllowsNonVisibleOverflow();
+  bool should_clip_overflow = (!StyleRef().IsOverflowVisibleAlongBothAxes() ||
+                               ShouldApplyPaintContainment()) &&
+                              AllowsNonVisibleOverflow();
   if (should_clip_overflow != HasNonVisibleOverflow()) {
     if (GetScrollableArea())
       GetScrollableArea()->InvalidateAllStickyConstraints();
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc
index 9ac4f3f5..5757800 100644
--- a/third_party/blink/renderer/core/layout/layout_box.cc
+++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -1966,9 +1966,7 @@
 
 void LayoutBox::ApplyVisibleOverflowToClipRect(PhysicalRect& clip_rect) const {
   const OverflowClipAxes overflow_clip = GetOverflowClipAxes();
-  if (overflow_clip == kOverflowClipBothAxis) {
-    clip_rect.Inflate(StyleRef().OverflowClipMargin());
-  } else {
+  if (overflow_clip != kOverflowClipBothAxis) {
     const LayoutRect infinite_rect(LayoutRect::InfiniteIntRect());
     if ((overflow_clip & kOverflowClipX) == kNoOverflowClip) {
       clip_rect.offset.left = infinite_rect.X();
@@ -1978,6 +1976,8 @@
       clip_rect.offset.top = infinite_rect.Y();
       clip_rect.size.height = infinite_rect.Height();
     }
+  } else if (ShouldApplyOverflowClipMargin()) {
+    clip_rect.Inflate(StyleRef().OverflowClipMargin());
   }
 }
 
@@ -7716,19 +7716,17 @@
   LayoutRect rect = BorderBoxRect();
 
   if (!ShouldApplyLayoutContainment() &&
-      (!ShouldClipOverflowAlongBothAxis() ||
-       StyleRef().OverflowClipMargin() != LayoutUnit())) {
+      (!ShouldClipOverflowAlongBothAxis() || ShouldApplyOverflowClipMargin())) {
     LayoutRect overflow = LayoutOverflowRect();
     if (HasNonVisibleOverflow()) {
       const OverflowClipAxes overflow_clip_axes = GetOverflowClipAxes();
-      const LayoutUnit overflow_clip_margin = StyleRef().OverflowClipMargin();
       LayoutRect clip_rect = rect;
-      if (overflow_clip_margin != LayoutUnit()) {
-        // overflow_clip_margin should only be set if 'overflow' is 'clip' along
-        // both axis.
+      if (ShouldApplyOverflowClipMargin()) {
+        // We should apply overflow clip margin only if we clip overflow on both
+        // axes.
         DCHECK_EQ(overflow_clip_axes, kOverflowClipBothAxis);
         clip_rect.Contract(BorderBoxOutsets());
-        clip_rect.Inflate(overflow_clip_margin);
+        clip_rect.Inflate(StyleRef().OverflowClipMargin());
         overflow.Intersect(clip_rect);
       } else {
         ApplyOverflowClip(overflow_clip_axes, clip_rect, overflow);
@@ -7782,16 +7780,15 @@
     return self_visual_overflow_rect;
 
   const OverflowClipAxes overflow_clip_axes = GetOverflowClipAxes();
-  const LayoutUnit overflow_clip_margin = StyleRef().OverflowClipMargin();
-  if (overflow_clip_margin != LayoutUnit()) {
-    // overflow_clip_margin should only be set if 'overflow' is 'clip' along
-    // both axis.
+  if (ShouldApplyOverflowClipMargin()) {
+    // We should apply overflow clip margin only if we clip overflow on both
+    // axis.
     DCHECK_EQ(overflow_clip_axes, kOverflowClipBothAxis);
     const LayoutRect& contents_visual_overflow_rect =
         overflow_->visual_overflow->ContentsVisualOverflowRect();
     if (!contents_visual_overflow_rect.IsEmpty()) {
       LayoutRect result = BorderBoxRect();
-      result.Inflate(overflow_clip_margin);
+      result.Inflate(StyleRef().OverflowClipMargin());
       result.Intersect(contents_visual_overflow_rect);
       result.Unite(self_visual_overflow_rect);
       return result;
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h
index cf45c65..896de353 100644
--- a/third_party/blink/renderer/core/layout/layout_object.h
+++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -600,6 +600,25 @@
     return fragment_->UniqueId();
   }
 
+  inline bool ShouldApplyOverflowClipMargin() const {
+    NOT_DESTROYED();
+    // If the object is clipped by something other than overflow:clip (i.e. it's
+    // a scroll container), then we should not apply overflow-clip-margin.
+    if (IsScrollContainer())
+      return false;
+
+    const auto& style = StyleRef();
+    // Nothing to apply if there is no margin.
+    if (!style.OverflowClipMargin())
+      return false;
+
+    // In all other cases, we apply overflow-clip-margin when we clip to
+    // overflow clip edge, meaning we have overflow: clip or paint containment.
+    return (style.OverflowX() == EOverflow::kClip &&
+            style.OverflowY() == EOverflow::kClip) ||
+           ShouldApplyPaintContainment();
+  }
+
   inline bool IsEligibleForPaintOrLayoutContainment() const {
     NOT_DESTROYED();
     return (!IsInline() || IsAtomicInlineLevel()) && !IsRubyText() &&
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc
index 2830f20..abfb889 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc
@@ -291,7 +291,7 @@
       child_fragment.ShouldApplyLayoutContainment() ||
       child_fragment.IsInlineBox() ||
       (child_fragment.ShouldClipOverflowAlongBothAxis() &&
-       child_style.OverflowClipMargin() == LayoutUnit()) ||
+       !child_fragment.ShouldApplyOverflowClipMargin()) ||
       child_fragment.IsHiddenForPaint();
 
   if (!ignore_layout_overflow) {
@@ -299,14 +299,13 @@
     if (child_fragment.HasNonVisibleOverflow()) {
       const OverflowClipAxes overflow_clip_axes =
           child_fragment.GetOverflowClipAxes();
-      const LayoutUnit overflow_clip_margin = child_style.OverflowClipMargin();
-      if (overflow_clip_margin != LayoutUnit()) {
-        // overflow_clip_margin should only be set if 'overflow' is 'clip' along
-        // both axis.
+      if (child_fragment.ShouldApplyOverflowClipMargin()) {
+        // ShouldApplyOverflowClipMargin should only be true if we're clipping
+        // overflow in both axes.
         DCHECK_EQ(overflow_clip_axes, kOverflowClipBothAxis);
         PhysicalRect child_padding_rect({}, child_fragment.Size());
         child_padding_rect.Contract(child_fragment.Borders());
-        child_padding_rect.Inflate(overflow_clip_margin);
+        child_padding_rect.Inflate(child_style.OverflowClipMargin());
         child_overflow.Intersect(child_padding_rect);
       } else {
         if (overflow_clip_axes & kOverflowClipX) {
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
index 01f963c..ad8c08a 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
@@ -713,8 +713,7 @@
     return self_rect;
 
   const OverflowClipAxes overflow_clip_axes = GetOverflowClipAxes();
-  // overflow_clip_margin should only be set if 'overflow' is 'clip' along
-  // both axis.
+  // overflow_clip_margin should only be set if we clip both axes.
   DCHECK(overflow_clip_axes == kOverflowClipBothAxis ||
          !style.OverflowClipMargin());
   if (overflow_clip_axes == kNoOverflowClip) {
@@ -723,12 +722,12 @@
   }
 
   if (overflow_clip_axes == kOverflowClipBothAxis) {
-    if (const LayoutUnit overflow_clip_margin = style.OverflowClipMargin()) {
+    if (ShouldApplyOverflowClipMargin()) {
       const PhysicalRect& contents_rect =
           ink_overflow_.Contents(InkOverflowType(), Size());
       if (!contents_rect.IsEmpty()) {
         PhysicalRect result = LocalRect();
-        result.Inflate(overflow_clip_margin);
+        result.Inflate(style.OverflowClipMargin());
         result.Intersect(contents_rect);
         result.Unite(self_rect);
         return result;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
index 1ddc8aec..a9b9300 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
@@ -354,6 +354,10 @@
     return IsCSSBox() && layout_object_->ShouldClipOverflowAlongBothAxis();
   }
 
+  bool ShouldApplyOverflowClipMargin() const {
+    return IsCSSBox() && layout_object_->ShouldApplyOverflowClipMargin();
+  }
+
   // Return whether we can traverse this fragment and its children directly, for
   // painting, hit-testing and other layout read operations. If false is
   // returned, we need to traverse the layout object tree instead.
diff --git a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
index 3f48befe..584920a 100644
--- a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
+++ b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
@@ -305,12 +305,8 @@
     return nullptr;
 
   if (auto* window = DynamicTo<LocalDOMWindow>(GetExecutionContext())) {
-    {
-      PredefinedColorSpace color_space = PredefinedColorSpace::kSRGB;
-      ParsePredefinedColorSpace(attributes.color_space, color_space);
-      if (color_space != PredefinedColorSpace::kSRGB)
-        UseCounter::Count(window->document(), WebFeature::kCanvasUseColorSpace);
-    }
+    if (attributes.color_space != PredefinedColorSpace::kSRGB)
+      UseCounter::Count(window->document(), WebFeature::kCanvasUseColorSpace);
 
     if (RuntimeEnabledFeatures::NewCanvas2DAPIEnabled(GetTopExecutionContext()))
       UseCounter::Count(window->document(), WebFeature::kNewCanvas2DAPI);
diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc
index 3613ba8..f958463 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -1739,8 +1739,13 @@
     return true;
 
   // We need to look at z-depth to decide if this layer was hit.
-  if (z_offset) {
-    DCHECK(transform_state);
+  //
+  // See comment in PaintLayer::HitTestLayer regarding SVG
+  // foreignObject; if it weren't for that case we could test z_offset
+  // and then DCHECK(transform_state) inside of it.
+  DCHECK(!z_offset || transform_state ||
+         hit_layer->GetLayoutObject().IsSVGForeignObject());
+  if (z_offset && transform_state) {
     // This is actually computing our z, but that's OK because the hitLayer is
     // coplanar with us.
     double child_z_offset = ComputeZOffset(*transform_state);
diff --git a/third_party/blink/renderer/core/style/computed_style.cc b/third_party/blink/renderer/core/style/computed_style.cc
index d67f080..4a66636d 100644
--- a/third_party/blink/renderer/core/style/computed_style.cc
+++ b/third_party/blink/renderer/core/style/computed_style.cc
@@ -195,7 +195,7 @@
       !new_style.HasAnyPseudoElementStyles())
     return true;
   for (PseudoId pseudo_id = kFirstPublicPseudoId;
-       pseudo_id < kFirstInternalPseudoId;
+       pseudo_id <= kLastTrackedPublicPseudoId;
        pseudo_id = static_cast<PseudoId>(pseudo_id + 1)) {
     if (!old_style.HasPseudoElementStyle(pseudo_id) &&
         !new_style.HasPseudoElementStyle(pseudo_id))
diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h
index 6b08af9..85f4098 100644
--- a/third_party/blink/renderer/core/style/computed_style.h
+++ b/third_party/blink/renderer/core/style/computed_style.h
@@ -3141,13 +3141,13 @@
 
 inline bool ComputedStyle::HasPseudoElementStyle(PseudoId pseudo) const {
   DCHECK(pseudo >= kFirstPublicPseudoId);
-  DCHECK(pseudo < kFirstInternalPseudoId);
+  DCHECK(pseudo <= kLastTrackedPublicPseudoId);
   return (1 << (pseudo - kFirstPublicPseudoId)) & PseudoBitsInternal();
 }
 
 inline void ComputedStyle::SetHasPseudoElementStyle(PseudoId pseudo) {
   DCHECK(pseudo >= kFirstPublicPseudoId);
-  DCHECK(pseudo < kFirstInternalPseudoId);
+  DCHECK(pseudo <= kLastTrackedPublicPseudoId);
   // TODO: Fix up this code. It is hard to understand.
   SetPseudoBitsInternal(PseudoBitsInternal() |
                         1 << (pseudo - kFirstPublicPseudoId));
diff --git a/third_party/blink/renderer/core/style/computed_style_constants.h b/third_party/blink/renderer/core/style/computed_style_constants.h
index afd2e75..8f4fa0a 100644
--- a/third_party/blink/renderer/core/style/computed_style_constants.h
+++ b/third_party/blink/renderer/core/style/computed_style_constants.h
@@ -55,6 +55,10 @@
   // The order must be NOP ID, public IDs, and then internal IDs.
   // If you add or remove a public ID, you must update the field_size of
   // "PseudoBits" in computed_style_extra_fields.json5.
+  //
+  // The above is necessary because presence of a public pseudo element style
+  // for an element is tracked on the element's ComputedStyle. This is done for
+  // all public IDs until kLastTrackedPublicPseudoId.
   kPseudoIdNone,
   kPseudoIdFirstLine,
   kPseudoIdFirstLetter,
@@ -68,6 +72,11 @@
   kPseudoIdHighlight,
   kPseudoIdSpellingError,
   kPseudoIdGrammarError,
+  // The following IDs are public but not tracked.
+  kPseudoIdTransition,
+  kPseudoIdTransitionContainer,
+  kPseudoIdTransitionOldContent,
+  kPseudoIdTransitionNewContent,
   // Internal IDs follow:
   kPseudoIdFirstLineInherited,
   kPseudoIdScrollbarThumb,
@@ -80,6 +89,7 @@
   // Special values follow:
   kAfterLastInternalPseudoId,
   kFirstPublicPseudoId = kPseudoIdFirstLine,
+  kLastTrackedPublicPseudoId = kPseudoIdGrammarError,
   kFirstInternalPseudoId = kPseudoIdFirstLineInherited,
 };
 
@@ -96,6 +106,18 @@
   }
 }
 
+inline bool IsTransitionPseudoElement(PseudoId pseudo_id) {
+  switch (pseudo_id) {
+    case kPseudoIdTransition:
+    case kPseudoIdTransitionContainer:
+    case kPseudoIdTransitionOldContent:
+    case kPseudoIdTransitionNewContent:
+      return true;
+    default:
+      return false;
+  }
+}
+
 inline bool PseudoElementHasArguments(PseudoId pseudo_id) {
   switch (pseudo_id) {
     case kPseudoIdHighlight:
diff --git a/third_party/blink/renderer/core/style/computed_style_test.cc b/third_party/blink/renderer/core/style/computed_style_test.cc
index eb2d92df..5e2b15f6d 100644
--- a/third_party/blink/renderer/core/style/computed_style_test.cc
+++ b/third_party/blink/renderer/core/style/computed_style_test.cc
@@ -117,24 +117,15 @@
   EXPECT_FALSE(style->IsStackingContextWithoutContainment());
 }
 
-TEST_F(ComputedStyleTest, FirstPublicPseudoStyle) {
-  static_assert(kFirstPublicPseudoId == kPseudoIdFirstLine,
-                "Make sure we are testing the first public pseudo id");
-
-  scoped_refptr<ComputedStyle> style = CreateComputedStyle();
-  style->SetHasPseudoElementStyle(kPseudoIdFirstLine);
-  EXPECT_TRUE(style->HasPseudoElementStyle(kPseudoIdFirstLine));
-  EXPECT_TRUE(style->HasAnyPseudoElementStyles());
-}
-
-TEST_F(ComputedStyleTest, LastPublicPseudoElementStyle) {
-  static_assert(kFirstInternalPseudoId - 1 == kPseudoIdGrammarError,
-                "Make sure we are testing the last public pseudo id");
-
-  scoped_refptr<ComputedStyle> style = CreateComputedStyle();
-  style->SetHasPseudoElementStyle(kPseudoIdGrammarError);
-  EXPECT_TRUE(style->HasPseudoElementStyle(kPseudoIdGrammarError));
-  EXPECT_TRUE(style->HasAnyPseudoElementStyles());
+TEST_F(ComputedStyleTest, TrackedPseudoStyle) {
+  for (uint8_t pseudo_id_int = kFirstPublicPseudoId;
+       pseudo_id_int <= kLastTrackedPublicPseudoId; pseudo_id_int++) {
+    PseudoId pseudo_id = static_cast<PseudoId>(pseudo_id_int);
+    scoped_refptr<ComputedStyle> style = CreateComputedStyle();
+    style->SetHasPseudoElementStyle(pseudo_id);
+    EXPECT_TRUE(style->HasPseudoElementStyle(pseudo_id));
+    EXPECT_TRUE(style->HasAnyPseudoElementStyles());
+  }
 }
 
 TEST_F(ComputedStyleTest,
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc
index 1f4b17a9..441a452 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc
@@ -983,15 +983,15 @@
 }
 
 static void TestDrawHighBitDepthPNGsOnWideGamutCanvas(
-    String canvas_color_space,
+    PredefinedColorSpace color_space,
     Document& document,
     Persistent<HTMLCanvasElement> canvas,
     ScriptState* script_state) {
   // Prepare the wide gamut context with the given color space.
   CanvasContextCreationAttributesCore attributes;
   attributes.alpha = true;
-  attributes.color_space = canvas_color_space;
-  attributes.pixel_format = "float16";
+  attributes.color_space = color_space;
+  attributes.pixel_format = CanvasPixelFormat::kF16;
   CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(
       canvas->GetCanvasRenderingContext("2d", attributes));
 
@@ -1007,7 +1007,7 @@
   ImageDataSettings* color_setting = ImageDataSettings::Create();
   color_setting->setStorageFormat(
       ImageDataStorageFormatName(ImageDataStorageFormat::kFloat32));
-  color_setting->setColorSpace(canvas_color_space);
+  color_setting->setColorSpace(PredefinedColorSpaceName(color_space));
   for (auto interlace : interlace_status) {
     for (auto color_profile : color_profiles) {
       for (auto alpha : alpha_status) {
@@ -1028,14 +1028,14 @@
 
 TEST_P(CanvasRenderingContext2DTest, DrawHighBitDepthPngOnP3Canvas) {
   TestDrawHighBitDepthPNGsOnWideGamutCanvas(
-      "display-p3", GetDocument(),
+      PredefinedColorSpace::kP3, GetDocument(),
       Persistent<HTMLCanvasElement>(CanvasElement()), GetScriptState());
 }
 
 TEST_P(CanvasRenderingContext2DTest, DrawHighBitDepthPngOnRec2020Canvas) {
   TestDrawHighBitDepthPNGsOnWideGamutCanvas(
-      "rec2020", GetDocument(), Persistent<HTMLCanvasElement>(CanvasElement()),
-      GetScriptState());
+      PredefinedColorSpace::kRec2020, GetDocument(),
+      Persistent<HTMLCanvasElement>(CanvasElement()), GetScriptState());
 }
 
 // The color settings of the surface of the canvas always remaines loyal to the
@@ -1069,7 +1069,7 @@
       ImageDataStorageFormat::kFloat32,
   };
 
-  PredefinedColorSpace canvas_color_spaces[] = {
+  PredefinedColorSpace predefined_color_spaces[] = {
       PredefinedColorSpace::kSRGB,
       PredefinedColorSpace::kSRGB,
       PredefinedColorSpace::kRec2020,
@@ -1083,11 +1083,6 @@
       CanvasPixelFormat::kF16,
   };
 
-  String canvas_pixel_format_names[] = {
-      kUint8CanvasPixelFormatName, kF16CanvasPixelFormatName,
-      kF16CanvasPixelFormatName, kF16CanvasPixelFormatName,
-      kF16CanvasPixelFormatName};
-
   // Source pixels in RGBA32
   uint8_t u8_pixels[] = {255, 0,   0,   255,  // Red
                          0,   0,   0,   0,    // Transparent
@@ -1148,7 +1143,7 @@
       unsigned k = static_cast<unsigned>(canvas_colorspace_setting);
       ImageDataSettings* canvas_color_setting = ImageDataSettings::Create();
       canvas_color_setting->setColorSpace(
-          PredefinedColorSpaceName(canvas_color_spaces[k]));
+          PredefinedColorSpaceName(predefined_color_spaces[k]));
       switch (canvas_pixel_formats[k]) {
         case CanvasPixelFormat::kUint8:
           canvas_color_setting->setStorageFormat(
@@ -1169,15 +1164,15 @@
               ConvertPixelsToColorSpaceAndPixelFormatForTest(
                   data_array->BaseAddress(), data_length,
                   image_data_color_spaces[i], image_data_storage_formats[j],
-                  canvas_color_spaces[k], canvas_pixel_formats[k],
+                  predefined_color_spaces[k], canvas_pixel_formats[k],
                   pixels_converted_manually, kPixelFormat_ffff));
 
       // Create a canvas and call putImageData and getImageData to make sure
       // the conversion is done correctly.
       CanvasContextCreationAttributesCore attributes;
       attributes.alpha = true;
-      attributes.color_space = PredefinedColorSpaceName(canvas_color_spaces[k]);
-      attributes.pixel_format = canvas_pixel_format_names[k];
+      attributes.color_space = predefined_color_spaces[k];
+      attributes.pixel_format = canvas_pixel_formats[k];
       CanvasRenderingContext2D* context =
           static_cast<CanvasRenderingContext2D*>(
               canvas_element.GetCanvasRenderingContext("2d", attributes));
diff --git a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_helpers.cc b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_helpers.cc
index 6f771825..da97439 100644
--- a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_helpers.cc
+++ b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_helpers.cc
@@ -15,11 +15,12 @@
     const CanvasContextCreationAttributesModule* attrs,
     CanvasContextCreationAttributesCore& result,
     ExceptionState& exception_state) {
-  if (!ColorSpaceNameIsValid(attrs->colorSpace(), exception_state))
-    return false;
   result.alpha = attrs->alpha();
   result.antialias = attrs->antialias();
-  result.color_space = attrs->colorSpace();
+  if (!ValidateAndConvertColorSpace(attrs->colorSpace(), result.color_space,
+                                    exception_state)) {
+    return false;
+  }
   result.depth = attrs->depth();
   result.fail_if_major_performance_caveat =
       attrs->failIfMajorPerformanceCaveat();
@@ -29,7 +30,14 @@
 #else
   result.desynchronized = attrs->desynchronized();
 #endif
-  result.pixel_format = attrs->pixelFormat();
+  switch (attrs->pixelFormat().AsEnum()) {
+    case V8CanvasPixelFormat::Enum::kUint8:
+      result.pixel_format = CanvasPixelFormat::kUint8;
+      break;
+    case V8CanvasPixelFormat::Enum::kFloat16:
+      result.pixel_format = CanvasPixelFormat::kF16;
+      break;
+  }
   result.premultiplied_alpha = attrs->premultipliedAlpha();
   result.preserve_drawing_buffer = attrs->preserveDrawingBuffer();
   result.power_preference = attrs->powerPreference();
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc
index a37b37d..18b058b 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc
@@ -17,7 +17,8 @@
       credential_manager_(window.GetExecutionContext()),
       webotp_service_(window.GetExecutionContext()),
       payment_credential_(window.GetExecutionContext()),
-      fedcm_get_request_(window.GetExecutionContext()) {
+      fedcm_get_request_(window.GetExecutionContext()),
+      fedcm_logout_request_(window.GetExecutionContext()) {
   LocalFrame* frame = window.GetFrame();
   DCHECK(frame);
   frame->GetBrowserInterfaceBroker().GetInterface(
@@ -55,7 +56,8 @@
 
 template <typename Interface>
 void CredentialManagerProxy::BindRemoteForFedCm(
-    HeapMojoRemote<Interface>& remote) {
+    HeapMojoRemote<Interface>& remote,
+    base::OnceClosure disconnect_closure) {
   if (remote.is_bound())
     return;
 
@@ -65,17 +67,36 @@
   frame->GetBrowserInterfaceBroker().GetInterface(
       remote.BindNewPipeAndPassReceiver(
           frame->GetTaskRunner(TaskType::kUserInteraction)));
-  remote.set_disconnect_handler(WTF::Bind(
-      &CredentialManagerProxy::OnConnectionError, WrapWeakPersistent(this)));
+  remote.set_disconnect_handler(std::move(disconnect_closure));
 }
 
 mojom::blink::FederatedAuthRequest* CredentialManagerProxy::FedCmGetRequest() {
-  BindRemoteForFedCm(fedcm_get_request_);
+  BindRemoteForFedCm(
+      fedcm_get_request_,
+      WTF::Bind(&CredentialManagerProxy::OnFedCmGetConnectionError,
+                WrapWeakPersistent(this)));
   return fedcm_get_request_.get();
 }
 
-void CredentialManagerProxy::OnConnectionError() {
+mojom::blink::FederatedAuthRequest*
+CredentialManagerProxy::FedCmLogoutRequest() {
+  BindRemoteForFedCm(
+      fedcm_logout_request_,
+      WTF::Bind(&CredentialManagerProxy::OnFedCmLogoutConnectionError,
+                WrapWeakPersistent(this)));
+  return fedcm_logout_request_.get();
+}
+
+void CredentialManagerProxy::OnFedCmGetConnectionError() {
   fedcm_get_request_.reset();
+  // TODO(crbug.com/1275769): Cache the resolver and resolve the promise with an
+  // appropriate error message.
+}
+
+void CredentialManagerProxy::OnFedCmLogoutConnectionError() {
+  fedcm_logout_request_.reset();
+  // TODO(crbug.com/1275769): Cache the resolver and resolve the promise with an
+  // appropriate error message.
 }
 
 // static
@@ -98,6 +119,7 @@
   visitor->Trace(webotp_service_);
   visitor->Trace(payment_credential_);
   visitor->Trace(fedcm_get_request_);
+  visitor->Trace(fedcm_logout_request_);
   Supplement<LocalDOMWindow>::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h
index 69206fbf..34997ecf 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h
+++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_
 
+#include "base/callback_forward.h"
 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom-blink.h"
 #include "third_party/blink/public/mojom/payments/payment_credential.mojom-blink.h"
 #include "third_party/blink/public/mojom/sms/webotp_service.mojom-blink.h"
@@ -54,6 +55,8 @@
 
   mojom::blink::FederatedAuthRequest* FedCmGetRequest();
 
+  mojom::blink::FederatedAuthRequest* FedCmLogoutRequest();
+
   void Trace(Visitor*) const override;
 
   // Must be called only with argument representing a valid
@@ -62,14 +65,17 @@
 
  private:
   template <typename Interface>
-  void BindRemoteForFedCm(HeapMojoRemote<Interface>& remote);
-  void OnConnectionError();
+  void BindRemoteForFedCm(HeapMojoRemote<Interface>& remote,
+                          base::OnceClosure disconnect_closure);
+  void OnFedCmGetConnectionError();
+  void OnFedCmLogoutConnectionError();
 
   HeapMojoRemote<mojom::blink::Authenticator> authenticator_;
   HeapMojoRemote<mojom::blink::CredentialManager> credential_manager_;
   HeapMojoRemote<mojom::blink::WebOTPService> webotp_service_;
   HeapMojoRemote<payments::mojom::blink::PaymentCredential> payment_credential_;
   HeapMojoRemote<mojom::blink::FederatedAuthRequest> fedcm_get_request_;
+  HeapMojoRemote<mojom::blink::FederatedAuthRequest> fedcm_logout_request_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc
index 246e1f8f..653ea02 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc
@@ -10,6 +10,7 @@
 #include "base/numerics/safe_conversions.h"
 #include "build/build_config.h"
 #include "third_party/blink/public/mojom/webauthn/authenticator.mojom-blink.h"
+#include "third_party/blink/public/mojom/webid/federated_auth_request.mojom-blink.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_typedefs.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_union_arraybuffer_arraybufferview.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_authentication_extensions_client_inputs.h"
@@ -18,6 +19,7 @@
 #include "third_party/blink/renderer/bindings/modules/v8/v8_authenticator_selection_criteria.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_cable_authentication_data.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_cable_registration_data.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_federated_credential_logout_request.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_creation_options.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_descriptor.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_parameters.h"
@@ -49,6 +51,8 @@
 using blink::mojom::blink::CredentialManagerError;
 using blink::mojom::blink::CredentialType;
 using blink::mojom::blink::LargeBlobSupport;
+using blink::mojom::blink::LogoutRequest;
+using blink::mojom::blink::LogoutRequestPtr;
 using blink::mojom::blink::PublicKeyCredentialCreationOptionsPtr;
 using blink::mojom::blink::PublicKeyCredentialDescriptor;
 using blink::mojom::blink::PublicKeyCredentialDescriptorPtr;
@@ -368,6 +372,17 @@
 }
 
 // static
+LogoutRequestPtr
+TypeConverter<LogoutRequestPtr, blink::FederatedCredentialLogoutRequest>::
+    Convert(const blink::FederatedCredentialLogoutRequest& request) {
+  auto mojo_request = LogoutRequest::New();
+
+  mojo_request->url = blink::KURL(request.url());
+  mojo_request->account_id = request.accountId();
+  return mojo_request;
+}
+
+// static
 PublicKeyCredentialUserEntityPtr
 TypeConverter<PublicKeyCredentialUserEntityPtr,
               blink::PublicKeyCredentialUserEntity>::
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h
index f8090fc..717f0ff 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h
+++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h
@@ -7,8 +7,10 @@
 
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
+#include "mojo/public/cpp/bindings/type_converter.h"
 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom-blink.h"
 #include "third_party/blink/public/mojom/webauthn/authenticator.mojom-blink-forward.h"
+#include "third_party/blink/public/mojom/webid/federated_auth_request.mojom-blink-forward.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
@@ -17,6 +19,7 @@
 class CableAuthenticationData;
 class CableRegistrationData;
 class Credential;
+class FederatedCredentialLogoutRequest;
 class PublicKeyCredentialCreationOptions;
 class PublicKeyCredentialDescriptor;
 class PublicKeyCredentialParameters;
@@ -122,6 +125,13 @@
 };
 
 template <>
+struct TypeConverter<blink::mojom::blink::LogoutRequestPtr,
+                     blink::FederatedCredentialLogoutRequest> {
+  static blink::mojom::blink::LogoutRequestPtr Convert(
+      const blink::FederatedCredentialLogoutRequest&);
+};
+
+template <>
 struct TypeConverter<blink::mojom::blink::PublicKeyCredentialUserEntityPtr,
                      blink::PublicKeyCredentialUserEntity> {
   static blink::mojom::blink::PublicKeyCredentialUserEntityPtr Convert(
diff --git a/third_party/blink/renderer/modules/credentialmanager/federated_credential.cc b/third_party/blink/renderer/modules/credentialmanager/federated_credential.cc
index 26d7e2f..69b2054 100644
--- a/third_party/blink/renderer/modules/credentialmanager/federated_credential.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/federated_credential.cc
@@ -7,18 +7,36 @@
 #include "third_party/blink/public/mojom/webid/federated_auth_request.mojom-blink.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_federated_credential_init.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_federated_credential_logout_request.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_federated_identity_provider.h"
 #include "third_party/blink/renderer/core/dom/dom_exception.h"
+#include "third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h"
+#include "third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
 
 namespace blink {
 
 namespace {
+using mojom::blink::LogoutStatus;
 using mojom::blink::RevokeStatus;
 
 constexpr char kFederatedCredentialType[] = "federated";
 
+void OnLogoutResponse(ScriptPromiseResolver* resolver, LogoutStatus status) {
+  // TODO(kenrb); There should be more thought put into how this API works.
+  // Returning success or failure doesn't have a lot of meaning. If some
+  // logout attempts fail and others succeed, and even different attempts
+  // fail for different reasons, how does that get conveyed to the caller?
+  if (status != LogoutStatus::kSuccess) {
+    resolver->Reject(MakeGarbageCollected<DOMException>(
+        DOMExceptionCode::kNetworkError, "Error logging out endpoints."));
+
+    return;
+  }
+  resolver->Resolve();
+}
+
 void OnRevoke(ScriptPromiseResolver* resolver, RevokeStatus status) {
   if (status != RevokeStatus::kSuccess) {
     resolver->Reject(MakeGarbageCollected<DOMException>(
@@ -88,12 +106,48 @@
 
 ScriptPromise FederatedCredential::logout(
     ScriptState* script_state,
-    const HeapVector<Member<WebIdLogoutRequest>>&) {
-  // TODO(goto): actually implement this.
-  return ScriptPromise::RejectWithDOMException(
-      script_state,
-      MakeGarbageCollected<DOMException>(DOMExceptionCode::kNotSupportedError,
-                                         "Logout API not yet implemented"));
+    const HeapVector<Member<FederatedCredentialLogoutRequest>>&
+        logout_endpoints) {
+  if (!RuntimeEnabledFeatures::WebIDEnabled()) {
+    return ScriptPromise::RejectWithDOMException(
+        script_state, MakeGarbageCollected<DOMException>(
+                          DOMExceptionCode::kNotSupportedError,
+                          "FedCM flag in about:flags not enabled."));
+  }
+
+  if (logout_endpoints.IsEmpty()) {
+    return ScriptPromise();
+  }
+
+  Vector<mojom::blink::LogoutRequestPtr> logout_requests;
+  for (auto& request : logout_endpoints) {
+    auto logout_request = mojom::blink::LogoutRequest::From(*request);
+    if (!logout_request->url.IsValid()) {
+      ScriptPromise::RejectWithDOMException(
+          script_state,
+          MakeGarbageCollected<DOMException>(DOMExceptionCode::kSyntaxError,
+                                             "Invalid logout endpoint URL."));
+      return ScriptPromise();
+    }
+    if (logout_request->account_id.IsEmpty()) {
+      ScriptPromise::RejectWithDOMException(
+          script_state,
+          MakeGarbageCollected<DOMException>(DOMExceptionCode::kSyntaxError,
+                                             "Account ID cannot be empty."));
+      return ScriptPromise();
+    }
+    logout_requests.push_back(std::move(logout_request));
+  }
+
+  auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
+  ScriptPromise promise = resolver->Promise();
+
+  auto* fedcm_logout_request =
+      CredentialManagerProxy::From(script_state)->FedCmLogoutRequest();
+  fedcm_logout_request->Logout(
+      std::move(logout_requests),
+      WTF::Bind(&OnLogoutResponse, WrapPersistent(resolver)));
+  return promise;
 }
 
 ScriptPromise FederatedCredential::revoke(ScriptState* script_state,
diff --git a/third_party/blink/renderer/modules/credentialmanager/federated_credential.h b/third_party/blink/renderer/modules/credentialmanager/federated_credential.h
index 9f76d06..1092e619f 100644
--- a/third_party/blink/renderer/modules/credentialmanager/federated_credential.h
+++ b/third_party/blink/renderer/modules/credentialmanager/federated_credential.h
@@ -6,7 +6,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_FEDERATED_CREDENTIAL_H_
 
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
-#include "third_party/blink/renderer/bindings/modules/v8/v8_web_id_logout_request.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_federated_credential_logout_request.h"
 #include "third_party/blink/renderer/modules/credentialmanager/credential.h"
 #include "third_party/blink/renderer/modules/modules_export.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
@@ -68,8 +68,9 @@
     return g_empty_string;
   }
 
-  static ScriptPromise logout(ScriptState*,
-                              const HeapVector<Member<WebIdLogoutRequest>>&);
+  static ScriptPromise logout(
+      ScriptState*,
+      const HeapVector<Member<FederatedCredentialLogoutRequest>>&);
   static ScriptPromise revoke(ScriptState*,
                               const String&,
                               FederatedIdentityProvider*,
diff --git a/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl b/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl
index d6de7a92..ee532ecc 100644
--- a/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl
+++ b/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl
@@ -16,7 +16,7 @@
     [RaisesException] constructor(FederatedCredentialInit data);
     readonly attribute USVString provider;
 
-    // https://github.com/WICG/WebID
+    // https://github.com/WICG/FedCM
     [RuntimeEnabled=WebID] readonly attribute USVString idToken;
 
     // Allows the RP to distinguish whether an "auto" sign-in [1] happened or an
@@ -27,7 +27,7 @@
 
     // Allows IDPs to logout the user out of all of the logged in RPs.
     [RuntimeEnabled=WebID, CallWith=ScriptState]
-    static Promise<void> logout(optional sequence<WebIdLogoutRequest> logout_requests = []);
+    static Promise<void> logout(optional sequence<FederatedCredentialLogoutRequest> logout_requests = []);
 
     [RuntimeEnabled=WebID, CallWith=ScriptState, RaisesException]
     static Promise<void> revoke(USVString account_id, FederatedIdentityProvider provider);
diff --git a/third_party/blink/renderer/modules/credentialmanager/federated_credential_logout_request.idl b/third_party/blink/renderer/modules/credentialmanager/federated_credential_logout_request.idl
new file mode 100644
index 0000000..ab50b4e
--- /dev/null
+++ b/third_party/blink/renderer/modules/credentialmanager/federated_credential_logout_request.idl
@@ -0,0 +1,10 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://github.com/WICG/FedCm
+
+dictionary FederatedCredentialLogoutRequest {
+    required USVString url;
+    required USVString accountId;
+};
diff --git a/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.cc b/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.cc
index 69d8970..578e0cc 100644
--- a/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.cc
+++ b/third_party/blink/renderer/modules/file_system_access/file_system_directory_iterator.cc
@@ -48,10 +48,12 @@
         break;
       case Mode::kKeyValue:
         HeapVector<ScriptValue, 2> keyvalue;
-        keyvalue.push_back(ScriptValue(script_state->GetIsolate(),
-                                       ToV8(handle->name(), script_state)));
-        keyvalue.push_back(ScriptValue(script_state->GetIsolate(),
-                                       ToV8(handle, script_state)));
+        keyvalue.push_back(ScriptValue(
+            script_state->GetIsolate(),
+            ToV8Traits<IDLString>::ToV8(script_state, handle->name())));
+        keyvalue.push_back(ScriptValue(
+            script_state->GetIsolate(),
+            ToV8Traits<FileSystemHandle>::ToV8(script_state, handle)));
         result = V8IteratorResult(script_state, keyvalue);
         break;
     }
diff --git a/third_party/blink/renderer/modules/filesystem/metadata.cc b/third_party/blink/renderer/modules/filesystem/metadata.cc
index ab9a743..182cce8 100644
--- a/third_party/blink/renderer/modules/filesystem/metadata.cc
+++ b/third_party/blink/renderer/modules/filesystem/metadata.cc
@@ -5,7 +5,7 @@
 #include "third_party/blink/renderer/modules/filesystem/metadata.h"
 
 #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
-#include "third_party/blink/renderer/platform/bindings/to_v8.h"
+#include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h"
 
 namespace blink {
 
@@ -15,7 +15,9 @@
   // Passing Time::Max() here creates such a Date object.
   base::Time time =
       platform_metadata_.modification_time.value_or(base::Time::Max());
-  return ScriptValue(script_state->GetIsolate(), ToV8(time, script_state));
+  return ScriptValue(script_state->GetIsolate(),
+                     ToV8Traits<IDLNullable<IDLDate>>::ToV8(
+                         script_state, absl::optional<base::Time>(time)));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/webid/BUILD.gn b/third_party/blink/renderer/modules/webid/BUILD.gn
index 1bdd9a1..5f39580 100644
--- a/third_party/blink/renderer/modules/webid/BUILD.gn
+++ b/third_party/blink/renderer/modules/webid/BUILD.gn
@@ -10,7 +10,5 @@
     "navigator_web_id.h",
     "web_id.cc",
     "web_id.h",
-    "web_id_type_converters.cc",
-    "web_id_type_converters.h",
   ]
 }
diff --git a/third_party/blink/renderer/modules/webid/web_id.cc b/third_party/blink/renderer/modules/webid/web_id.cc
index 4d71f0d..a6b5949 100644
--- a/third_party/blink/renderer/modules/webid/web_id.cc
+++ b/third_party/blink/renderer/modules/webid/web_id.cc
@@ -7,9 +7,7 @@
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
-#include "third_party/blink/renderer/bindings/modules/v8/v8_web_id_logout_request.h"
 #include "third_party/blink/renderer/core/dom/dom_exception.h"
-#include "third_party/blink/renderer/modules/webid/web_id_type_converters.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/name_client.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
@@ -19,24 +17,10 @@
 
 namespace {
 
-using mojom::blink::LogoutStatus;
 using mojom::blink::ProvideIdTokenStatus;
 using mojom::blink::RequestIdTokenStatus;
 using mojom::blink::RequestMode;
 
-void OnLogout(ScriptPromiseResolver* resolver, LogoutStatus status) {
-  // TODO(kenrb); There should be more thought put into how this API works.
-  // Returning success or failure doesn't have a lot of meaning. If some
-  // logout attempts fail and others succeed, and even different attempts
-  // fail for different reasons, how does that get conveyed to the caller?
-  if (status != LogoutStatus::kSuccess) {
-    resolver->Reject(MakeGarbageCollected<DOMException>(
-        DOMExceptionCode::kNetworkError, "Error logging out endpoints."));
-    return;
-  }
-  resolver->Resolve();
-}
-
 void OnProvideIdToken(ScriptPromiseResolver* resolver,
                       ProvideIdTokenStatus status) {
   // TODO(kenrb): Provide better messages for different error codes.
@@ -51,9 +35,7 @@
 }  // namespace
 
 WebId::WebId(ExecutionContext& context)
-    : ExecutionContextClient(&context),
-      auth_request_(&context),
-      auth_response_(&context) {}
+    : ExecutionContextClient(&context), auth_response_(&context) {}
 
 ScriptPromise WebId::provide(ScriptState* script_state, String id_token) {
   BindRemote(auth_response_);
@@ -67,41 +49,6 @@
   return promise;
 }
 
-ScriptPromise WebId::logout(
-    ScriptState* script_state,
-    const HeapVector<Member<WebIdLogoutRequest>>& logout_endpoints,
-    ExceptionState& exception_state) {
-  if (logout_endpoints.IsEmpty()) {
-    return ScriptPromise();
-  }
-
-  Vector<mojom::blink::LogoutRequestPtr> logout_requests;
-  for (auto& request : logout_endpoints) {
-    auto logout_request = mojom::blink::LogoutRequest::From(*request);
-    if (!logout_request->endpoint.IsValid()) {
-      exception_state.ThrowDOMException(DOMExceptionCode::kSyntaxError,
-                                        "Invalid logout endpoint URL.");
-      return ScriptPromise();
-    }
-    if (logout_request->account_id.length() == 0) {
-      exception_state.ThrowDOMException(DOMExceptionCode::kSyntaxError,
-                                        "Account ID cannot be empty.");
-      return ScriptPromise();
-    }
-    logout_requests.push_back(std::move(logout_request));
-  }
-
-  BindRemote(auth_request_);
-
-  auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
-  ScriptPromise promise = resolver->Promise();
-
-  auth_request_->Logout(std::move(logout_requests),
-                        WTF::Bind(&OnLogout, WrapPersistent(resolver)));
-
-  return promise;
-}
-
 template <typename Interface>
 void WebId::BindRemote(HeapMojoRemote<Interface>& remote) {
   auto* context = GetExecutionContext();
@@ -121,14 +68,10 @@
 void WebId::Trace(blink::Visitor* visitor) const {
   ScriptWrappable::Trace(visitor);
   ExecutionContextClient::Trace(visitor);
-  visitor->Trace(auth_request_);
   visitor->Trace(auth_response_);
 }
 
 void WebId::OnConnectionError() {
-  auth_request_.reset();
-  // TODO(majidvp): We should handle connection errors for request and response
-  // separately.
   auth_response_.reset();
 
   // TODO(kenrb): Cache the resolver and resolve the promise with an
diff --git a/third_party/blink/renderer/modules/webid/web_id.h b/third_party/blink/renderer/modules/webid/web_id.h
index 5ca81b43..532b83b 100644
--- a/third_party/blink/renderer/modules/webid/web_id.h
+++ b/third_party/blink/renderer/modules/webid/web_id.h
@@ -14,8 +14,6 @@
 
 namespace blink {
 
-class WebIdLogoutRequest;
-class ExceptionState;
 class ExecutionContext;
 class ScriptPromise;
 class ScriptState;
@@ -28,9 +26,6 @@
 
   // WebID IDL interface.
   ScriptPromise provide(ScriptState*, String id_token);
-  ScriptPromise logout(ScriptState*,
-                       const HeapVector<Member<WebIdLogoutRequest>>&,
-                       ExceptionState&);
 
   void Trace(blink::Visitor*) const override;
 
@@ -39,11 +34,6 @@
   void BindRemote(HeapMojoRemote<Interface>& remote);
   void OnConnectionError();
 
-  // TODO(yigu): This request is for logout only at the moment. When migrating
-  // logout to use CredentialManagement API, we should differentiate it with
-  // the existing fedcm_get_request_ to avoid potential resource contention in
-  // the browser process.
-  HeapMojoRemote<mojom::blink::FederatedAuthRequest> auth_request_;
   HeapMojoRemote<mojom::blink::FederatedAuthResponse> auth_response_;
 };
 
diff --git a/third_party/blink/renderer/modules/webid/web_id.idl b/third_party/blink/renderer/modules/webid/web_id.idl
index 3205de9..6bf801c 100644
--- a/third_party/blink/renderer/modules/webid/web_id.idl
+++ b/third_party/blink/renderer/modules/webid/web_id.idl
@@ -11,6 +11,4 @@
 ] interface WebId {
   [CallWith=ScriptState]
   Promise<void> provide(optional DOMString id_token = "");
-  [CallWith=ScriptState, RaisesException]
-  Promise<void> logout(optional sequence<WebIdLogoutRequest> logout_requests = []);
 };
diff --git a/third_party/blink/renderer/modules/webid/web_id_logout_request.idl b/third_party/blink/renderer/modules/webid/web_id_logout_request.idl
deleted file mode 100644
index b1ed890..0000000
--- a/third_party/blink/renderer/modules/webid/web_id_logout_request.idl
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://github.com/WICG/WebID
-
-dictionary WebIdLogoutRequest {
-    required USVString endpoint;
-    required USVString account_id;
-};
diff --git a/third_party/blink/renderer/modules/webid/web_id_type_converters.cc b/third_party/blink/renderer/modules/webid/web_id_type_converters.cc
deleted file mode 100644
index 1b18f850..0000000
--- a/third_party/blink/renderer/modules/webid/web_id_type_converters.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/blink/renderer/modules/webid/web_id_type_converters.h"
-
-#include "third_party/blink/public/mojom/webid/federated_auth_request.mojom-blink.h"
-#include "third_party/blink/renderer/bindings/modules/v8/v8_web_id_logout_request.h"
-#include "third_party/blink/renderer/platform/weborigin/kurl.h"
-
-namespace mojo {
-
-using blink::mojom::blink::LogoutRequest;
-using blink::mojom::blink::LogoutRequestPtr;
-
-// static
-LogoutRequestPtr
-TypeConverter<LogoutRequestPtr, blink::WebIdLogoutRequest>::Convert(
-    const blink::WebIdLogoutRequest& request) {
-  auto mojo_request = LogoutRequest::New();
-
-  mojo_request->endpoint = blink::KURL(request.endpoint());
-  mojo_request->account_id = request.accountId();
-  return mojo_request;
-}
-
-}  // namespace mojo
diff --git a/third_party/blink/renderer/modules/webid/web_id_type_converters.h b/third_party/blink/renderer/modules/webid/web_id_type_converters.h
deleted file mode 100644
index 9a685cc..0000000
--- a/third_party/blink/renderer/modules/webid/web_id_type_converters.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBID_WEB_ID_TYPE_CONVERTERS_H_
-#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBID_WEB_ID_TYPE_CONVERTERS_H_
-
-#include "mojo/public/cpp/bindings/type_converter.h"
-#include "third_party/blink/public/mojom/webid/federated_auth_request.mojom-blink-forward.h"
-
-namespace blink {
-class WebIdLogoutRequest;
-}  // namespace blink
-
-namespace mojo {
-
-template <>
-struct TypeConverter<blink::mojom::blink::LogoutRequestPtr,
-                     blink::WebIdLogoutRequest> {
-  static blink::mojom::blink::LogoutRequestPtr Convert(
-      const blink::WebIdLogoutRequest&);
-};
-
-}  // namespace mojo
-
-#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBID_WEB_ID_TYPE_CONVERTERS_H_
diff --git a/third_party/blink/renderer/platform/graphics/canvas_color_params.cc b/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
index f4d6686..dc11759 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
@@ -78,17 +78,13 @@
       pixel_format_(pixel_format),
       opacity_mode_(opacity_mode) {}
 
-CanvasColorParams::CanvasColorParams(const WTF::String& color_space,
-                                     const WTF::String& pixel_format,
-                                     bool has_alpha) {
-  base::IgnoreResult(ParsePredefinedColorSpace(color_space, color_space_));
-
-  if (pixel_format == kF16CanvasPixelFormatName)
-    pixel_format_ = CanvasPixelFormat::kF16;
-
-  if (!has_alpha)
-    opacity_mode_ = kOpaque;
-}
+CanvasColorParams::CanvasColorParams(PredefinedColorSpace color_space,
+                                     CanvasPixelFormat pixel_format,
+                                     bool has_alpha)
+    : color_space_(color_space),
+      pixel_format_(pixel_format),
+      opacity_mode_(has_alpha ? OpacityMode::kNonOpaque
+                              : OpacityMode::kOpaque) {}
 
 SkColorInfo CanvasColorParams::GetSkColorInfo() const {
   return SkColorInfo(
@@ -101,15 +97,8 @@
   return PredefinedColorSpaceName(color_space_);
 }
 
-const char* CanvasColorParams::GetPixelFormatAsString() const {
-  switch (pixel_format_) {
-    case CanvasPixelFormat::kF16:
-      return kF16CanvasPixelFormatName;
-    case CanvasPixelFormat::kUint8:
-      return kUint8CanvasPixelFormatName;
-  };
-  CHECK(false);
-  return "";
+String CanvasColorParams::GetPixelFormatAsString() const {
+  return CanvasPixelFormatName(pixel_format_);
 }
 
 SkColorType CanvasColorParams::GetSkColorType() const {
diff --git a/third_party/blink/renderer/platform/graphics/canvas_color_params.h b/third_party/blink/renderer/platform/graphics/canvas_color_params.h
index bce028b..c977ad1 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_color_params.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_color_params.h
@@ -19,14 +19,6 @@
 
 namespace blink {
 
-enum class CanvasPixelFormat {
-  kUint8,
-  kF16,
-};
-
-constexpr const char* kUint8CanvasPixelFormatName = "uint8";
-constexpr const char* kF16CanvasPixelFormatName = "float16";
-
 // Return the SkColorSpace for the specified |color_space|.
 sk_sp<SkColorSpace> PLATFORM_EXPORT
 PredefinedColorSpaceToSkColorSpace(PredefinedColorSpace color_space);
@@ -42,16 +34,14 @@
   // The default constructor will create an output-blended 8-bit surface.
   CanvasColorParams();
   CanvasColorParams(PredefinedColorSpace, CanvasPixelFormat, OpacityMode);
-  CanvasColorParams(const WTF::String& color_space,
-                    const WTF::String& pixel_format,
-                    bool has_alpha);
+  CanvasColorParams(PredefinedColorSpace, CanvasPixelFormat, bool has_alpha);
 
   PredefinedColorSpace ColorSpace() const { return color_space_; }
   CanvasPixelFormat PixelFormat() const { return pixel_format_; }
   OpacityMode GetOpacityMode() const { return opacity_mode_; }
 
   String GetColorSpaceAsString() const;
-  const char* GetPixelFormatAsString() const;
+  String GetPixelFormatAsString() const;
 
   SkColorInfo GetSkColorInfo() const;
 
diff --git a/third_party/blink/renderer/platform/graphics/graphics_types.cc b/third_party/blink/renderer/platform/graphics/graphics_types.cc
index 4bf5aa1..f7e6ed9b 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_types.cc
+++ b/third_party/blink/renderer/platform/graphics/graphics_types.cc
@@ -250,32 +250,15 @@
   return String();
 }
 
-bool ParsePredefinedColorSpace(const String& s, PredefinedColorSpace& format) {
-  if (s == "srgb") {
-    format = PredefinedColorSpace::kSRGB;
-    return true;
+String CanvasPixelFormatName(CanvasPixelFormat pixel_format) {
+  switch (pixel_format) {
+    case CanvasPixelFormat::kUint8:
+      return "uint8";
+    case CanvasPixelFormat::kF16:
+      return "float16";
   }
-  if (s == "rec2020") {
-    format = PredefinedColorSpace::kRec2020;
-    return true;
-  }
-  if (s == "display-p3") {
-    format = PredefinedColorSpace::kP3;
-    return true;
-  }
-  if (s == "rec2100-hlg") {
-    format = PredefinedColorSpace::kRec2100HLG;
-    return true;
-  }
-  if (s == "rec2100-pq") {
-    format = PredefinedColorSpace::kRec2100PQ;
-    return true;
-  }
-  if (s == "srgb-linear") {
-    format = PredefinedColorSpace::kSRGBLinear;
-    return true;
-  }
-  return false;
+  NOTREACHED();
+  return String();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/graphics_types.h b/third_party/blink/renderer/platform/graphics/graphics_types.h
index 80f065d8..faf8eb3 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_types.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_types.h
@@ -52,9 +52,9 @@
   kSRGBLinear,
 };
 
-enum DataU8ColorType {
-  kRGBAColorType,
-  kN32ColorType,
+enum class CanvasPixelFormat {
+  kUint8,
+  kF16,
 };
 
 enum class ImageDataStorageFormat {
@@ -231,9 +231,7 @@
 
 PLATFORM_EXPORT String PredefinedColorSpaceName(PredefinedColorSpace);
 
-// TODO(https://crbug.com/1274220): Remove the need for this function.
-PLATFORM_EXPORT bool ParsePredefinedColorSpace(const String&,
-                                               PredefinedColorSpace&);
+PLATFORM_EXPORT String CanvasPixelFormatName(CanvasPixelFormat);
 
 PLATFORM_EXPORT String ImageDataStorageFormatName(ImageDataStorageFormat);
 
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 47c8f08..2cffe2e 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -2812,12 +2812,156 @@
 crbug.com/626703 [ Fuchsia ] external/wpt/dom/historical.html [ Skip ]
 
 # ====== New tests from wpt-importer added here ======
-crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/CSS2/normal-flow/width-081.xht [ Failure Crash ]
-crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-contain/contain-layout-ignored-cases-no-principal-box-002.html [ Failure Crash ]
-crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-writing-modes/margin-collapse-vrl-014.xht [ Failure Crash ]
-crbug.com/626703 [ Mac11-arm64 ] virtual/not-site-per-process/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-no-child-yes-port.sub.https.html [ Failure Crash ]
-crbug.com/626703 [ Mac11 ] virtual/threaded/external/wpt/scroll-animations/css/at-scroll-timeline-paused-animations.html [ Failure Crash ]
-crbug.com/626703 [ Mac11-arm64 ] virtual/threaded/external/wpt/scroll-animations/css/at-scroll-timeline-responsiveness-from-endpoint.html [ Failure Crash ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-attachment-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-clip-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-image-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-origin-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-size-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-color-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-style-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-width-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-style-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-color-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-right-radius-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-style-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-end-radius-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-outset-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-repeat-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Failure ]
+crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html [ Crash Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-color-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-style-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-color-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-color-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-color-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-style-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-end-radius-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html [ Timeout Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-color-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-left-radius-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.12 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.13 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.14 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html [ Failure ]
+crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html [ Failure ]
+crbug.com/626703 [ Mac11 ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html [ Failure ]
+crbug.com/626703 [ Win ] external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html [ Failure ]
+crbug.com/626703 external/wpt/css/css-ui/compute-kind-widget-no-fallback-props-001.html [ Failure ]
+crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/CSS2/normal-flow/width-081.xht [ Crash Failure ]
+crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-contain/contain-layout-ignored-cases-no-principal-box-002.html [ Crash Failure ]
+crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-writing-modes/margin-collapse-vrl-014.xht [ Crash Failure ]
+crbug.com/626703 [ Mac11-arm64 ] virtual/not-site-per-process/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-no-child-yes-port.sub.https.html [ Crash Failure ]
+crbug.com/626703 [ Mac11 ] virtual/threaded/external/wpt/scroll-animations/css/at-scroll-timeline-paused-animations.html [ Crash Failure ]
+crbug.com/626703 [ Mac11-arm64 ] virtual/threaded/external/wpt/scroll-animations/css/at-scroll-timeline-responsiveness-from-endpoint.html [ Crash Failure ]
 crbug.com/626703 external/wpt/css/css-color/display-p3-001.html [ Failure ]
 crbug.com/626703 external/wpt/css/css-color/display-p3-002.html [ Failure ]
 crbug.com/626703 external/wpt/css/css-color/display-p3-003.html [ Failure ]
@@ -7857,10 +8001,6 @@
 
 # Sheriff 2021-10-29
 crbug.com/1264670 [ Linux ] http/tests/devtools/resource-tree/resource-tree-frame-add.js [ Failure Pass ]
-crbug.com/1264753 [ Mac10.12 ] external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/iframe-tag.http.html [ Failure ]
-crbug.com/1264753 [ Mac10.13 ] external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/iframe-tag.http.html [ Failure ]
-crbug.com/1264753 [ Mac10.12 ] virtual/plz-dedicated-worker/external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/iframe-tag.http.html [ Failure ]
-crbug.com/1264753 [ Mac10.13 ] virtual/plz-dedicated-worker/external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/iframe-tag.http.html [ Failure ]
 crbug.com/1264775 [ Mac11-arm64 ] external/wpt/webrtc-stats/supported-stats.html [ Failure ]
 crbug.com/1264802 [ Win7 ] fast/forms/suggestion-picker/date-suggestion-picker-appearance.html [ Failure Pass ]
 crbug.com/1264802 [ Win7 ] fast/forms/suggestion-picker/month-suggestion-picker-appearance.html [ Failure Pass ]
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 1453035..87d65c7 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
@@ -1092,6 +1092,13 @@
        {}
       ]
      ],
+     "nested-with-overflowing-padding-crash.html": [
+      "de29a7137403697b683eed2acd7aacf9f3f25302",
+      [
+       null,
+       {}
+      ]
+     ],
      "overflow-scroll-in-multicol-crash.html": [
       "ed1f5b6da9b4e164d29072a13a30c42e10a31429",
       [
@@ -139159,6 +139166,19 @@
        {}
       ]
      ],
+     "position-fixed-scroll-overlap.html": [
+      "3bfcf83761f3fec82589374ee4e3daa220a69e2c",
+      [
+       null,
+       [
+        [
+         "/css/css-position/position-fixed-scroll-overlap-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "position-relative-001.html": [
       "7ec9e4f767b4548e52e92b358b59e51376dea389",
       [
@@ -183649,6 +183669,606 @@
        {}
       ]
      ],
+     "compute-kind-widget-fallback-props-revert-001.html": [
+      "a91d2a736ada242058b8fa30b575a2a37e19b36d",
+      [
+       null,
+       [
+        [
+         "/css/css-ui/compute-kind-widget-no-fallback-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
+     "compute-kind-widget-generated": {
+      "kind-of-widget-fallback-background-attachment-001.html": [
+       "dfdb30764a05ff43a90c456ee7370a4b44915057",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-background-clip-001.html": [
+       "cf6862fa69a0d73a879376d67404436b30b591ac",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-background-color-001.html": [
+       "f080bae232ab9bbf8361f3771bf3050be8dc76c8",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-background-image-001.html": [
+       "b5b5231eb165faf451a83e2cd383206b703f55b0",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-background-origin-001.html": [
+       "d826c0b1669196c8ad3f1ecd5f3ca634ee6efb14",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-background-position-001.html": [
+       "290d12356f87551e2f946b51ba1686750f9df806",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-background-size-001.html": [
+       "105a439aa9ff61ec553d29a61dad30ff6c030a16",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-block-end-color-001.html": [
+       "480a2926cba9f70fa4065f17bbc1fe02195fa0b8",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-block-end-style-001.html": [
+       "a6fac1a09821f852cb3ad8abc77eb93efcce43f2",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-block-end-width-001.html": [
+       "a73d5b52d3905f49f2d6c09195b350dc03227a59",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-block-start-color-001.html": [
+       "c7be4f45cb06c8790906a54470e731ee0411f41d",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-block-start-style-001.html": [
+       "6670cb671bebd9f4307b66d84fc3f319fc818de2",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-block-start-width-001.html": [
+       "13b932a84855521f5bf6e3de4d5a934e923ef23e",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-bottom-color-001.html": [
+       "8cb1ed7a985719498f5b7e6aeefa9e1d8752d0c6",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-bottom-left-radius-001.html": [
+       "6f9af43c4710ab3d2e69b20e3b345abd8ada3c9c",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-bottom-right-radius-001.html": [
+       "356457f3b06de0a51644af7aad6fb1743b9441a3",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-bottom-style-001.html": [
+       "0173f0209103e274bdd1379b71eb5e247e35ef31",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-bottom-width-001.html": [
+       "f8d2f84ff614645f3e41d64399f8df89b060ecec",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-end-end-radius-001.html": [
+       "9fa13b481eb12871bf4bf8527ff32446e199df42",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-end-start-radius-001.html": [
+       "7f3667e2852651cf27828e09faafd3ac6aca3c7c",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-image-outset-001.html": [
+       "dc3c8722400a1da35f0153714d18f298822fd758",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-image-repeat-001.html": [
+       "388ad9acd3ff54d591d70ab8f7ff8b4a83a84cbf",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-image-slice-001.html": [
+       "971239c7d75d3c92b8f14bdac781630c2ed56286",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-image-source-001.html": [
+       "96795ed435b86b611d82a5b4456e771586991dc1",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-image-width-001.html": [
+       "ca57002d6ee186cb51c768579935d11d2fcb5c35",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-inline-end-color-001.html": [
+       "9ecfdfbeb3b51640a8383e87ba2335c867195505",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-inline-end-style-001.html": [
+       "2a5496ecd5a6d076b81c74ff4f3b5407936a5d03",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-inline-end-width-001.html": [
+       "62694106e484d2cf375cc3d435ebcb997bffb5f3",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-inline-start-color-001.html": [
+       "eee53b109c907a2bf13d4972f218889971e742ef",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-inline-start-style-001.html": [
+       "b8e980eb18b63ba03e219e3768d00de91c766f66",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-inline-start-width-001.html": [
+       "999028eecd45bd8763c337e04e354441479ccbd3",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-left-color-001.html": [
+       "9d35d5a67d5342dca7f7e60f9f8165e53895bc4f",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-left-style-001.html": [
+       "0c3834ae80a0bdf4a5eef34cadf742006d07d3cf",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-left-width-001.html": [
+       "b9db35da822b8e7cfe9f3f51d986b5308d4b4107",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-right-color-001.html": [
+       "4be6ac5969c5eadd4f119ec01ada771dcfd9e769",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-right-style-001.html": [
+       "0bb296c65cf93a10fb69d59642870112cd00c988",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-right-width-001.html": [
+       "8a0436d2638df615cdfe21b43f73c18fb87c7efe",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-start-end-radius-001.html": [
+       "27c8a5e33ba516246f800c4d1cbec5b910d0895d",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-start-start-radius-001.html": [
+       "8f1369d505c5bb9baf7f828943d22e8a840febc1",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-top-color-001.html": [
+       "b967850562c50a0c69dd7359f32d1d8766f58421",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-top-left-radius-001.html": [
+       "937cb0226ad4a3149f1cd10feed24d9f4b5480d9",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-top-right-radius-001.html": [
+       "f2abad91c9d64536d035656020d7df9995647e4f",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-top-style-001.html": [
+       "921933c283e974e46f56076d531b9a236e66180e",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ],
+      "kind-of-widget-fallback-border-top-width-001.html": [
+       "ff0fecf6983ae742f5bcb7b71916dec2ec68c9c2",
+       [
+        null,
+        [
+         [
+          "/css/css-ui/compute-kind-widget-fallback-ref.html",
+          "=="
+         ]
+        ],
+        {}
+       ]
+      ]
+     },
+     "compute-kind-widget-no-fallback-props-001.html": [
+      "e688ab8a9d91b910fba31964874bba336bf91ff7",
+      [
+       null,
+       [
+        [
+         "/css/css-ui/compute-kind-widget-no-fallback-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "input-security-auto-sensitive-text-input.html": [
       "3031094055aecf7d3306037d0d40cff1c1cb48a2",
       [
@@ -237914,7 +238534,7 @@
      []
     ],
     "README.md": [
-     "fc7c2a230ea55e481a4d6869a9636889409d9818",
+     "6ce0dd33303526980a361b7c091a982f3ee8730c",
      []
     ],
     "build-css-testsuites.sh": [
@@ -258900,6 +259520,10 @@
       "024bf032d770c4c2a47b14715c279557dfaefefc",
       []
      ],
+     "position-fixed-scroll-overlap-ref.html": [
+      "b9535e04e89d2b30089da6a2a79b152401f0af0c",
+      []
+     ],
      "position-relative-table-left-ref.html": [
       "7c1193b80007d8e7f89b35400a6d2ea2266cb3ac",
       []
@@ -268504,6 +269128,14 @@
       "b5ea559b9e7c158e254f2a7e047b56487ad8f281",
       []
      ],
+     "compute-kind-widget-fallback-ref.html": [
+      "cc6d1029b51033e8d983cc9c9bb520792b8285c1",
+      []
+     ],
+     "compute-kind-widget-no-fallback-ref.html": [
+      "241ecf93751bc3db73c4c586a6d695e0cdc51e7a",
+      []
+     ],
      "inheritance-expected.txt": [
       "548a76a3407ac8a48f9f108559957cf061f20a19",
       []
@@ -269690,6 +270322,10 @@
       "appearance-build-webkit-reftests.py": [
        "010635dddc80817eb9ce06cd21b1c22de9171eeb",
        []
+      ],
+      "build-compute-kind-widget-fallback-props.py": [
+       "a768e4e23aad18eb515acf0fc353fbcc95bd496e",
+       []
       ]
      },
      "translucent-outline-ref.html": [
@@ -300557,7 +301193,7 @@
     ]
    },
    "lint.ignore": [
-    "cffb1f1e3fa1e7ae1616749eccdc996068012bf0",
+    "8078f2622c5ab831a2afb428505f9f03bb79fc7f",
     []
    ],
    "loading": {
@@ -316780,6 +317416,10 @@
       "c8cd341e51f0274ff19000a16c3ac8c693c79e49",
       []
      ],
+     "rtx-codecs.https-expected.txt": [
+      "a7a7c2ae4f7eb0931bd54f1d424479d2955dae33",
+      []
+     ],
      "vp8-fmtp-expected.txt": [
       "812fedeeb10405b2948d70825e901e1581886e9b",
       []
@@ -334472,7 +335112,7 @@
      ]
     ],
     "Accelerometer.https.html": [
-     "e8af0393fc5691b486df43bb32fbc4942a3ad9bb",
+     "0db87d2efc3dd1a299898ec566b9c81458363b99",
      [
       null,
       {
@@ -334487,6 +335127,24 @@
       {}
      ]
     ],
+    "GravitySensor.https.html": [
+     "6fb21e5572813ea6384a4ad5c679d161fceceb7b",
+     [
+      null,
+      {
+       "timeout": "long"
+      }
+     ]
+    ],
+    "LinearAccelerationSensor.https.html": [
+     "8dd3446f409169c044543b65f79a19f48fc5d1c0",
+     [
+      null,
+      {
+       "timeout": "long"
+      }
+     ]
+    ],
     "idlharness.https.window.js": [
      "1e041e9a23bfb960e19e9737f7221ac5171af647",
      [
@@ -342391,31 +343049,106 @@
      }
     },
     "service": {
-     "device-same-from-2-services.https.html": [
-      "4c479dda90b3d5685e7e340fefa5204877e82e9c",
+     "device-same-from-2-services.https.window.js": [
+      "4870105d5cf221c42c985a6015b17422aa6a0043",
       [
-       null,
+       "bluetooth/service/device-same-from-2-services.https.window.html",
        {
-        "testdriver": true
+        "script_metadata": [
+         [
+          "script",
+          "/resources/testharness.js"
+         ],
+         [
+          "script",
+          "/resources/testharnessreport.js"
+         ],
+         [
+          "script",
+          "/resources/testdriver.js"
+         ],
+         [
+          "script",
+          "/resources/testdriver-vendor.js"
+         ],
+         [
+          "script",
+          "/bluetooth/resources/bluetooth-test.js"
+         ],
+         [
+          "script",
+          "/bluetooth/resources/bluetooth-fake-devices.js"
+         ]
+        ]
        }
       ]
      ],
-     "device-same-object.https.html": [
-      "d9590b17dc23fe67a7aed39e1bae7eb6a25e4f45",
+     "device-same-object.https.window.js": [
+      "cca0b344eae86ca5d2b09bee168eff58ebfddb7b",
       [
-       null,
+       "bluetooth/service/device-same-object.https.window.html",
        {
-        "testdriver": true
+        "script_metadata": [
+         [
+          "script",
+          "/resources/testharness.js"
+         ],
+         [
+          "script",
+          "/resources/testharnessreport.js"
+         ],
+         [
+          "script",
+          "/resources/testdriver.js"
+         ],
+         [
+          "script",
+          "/resources/testdriver-vendor.js"
+         ],
+         [
+          "script",
+          "/bluetooth/resources/bluetooth-test.js"
+         ],
+         [
+          "script",
+          "/bluetooth/resources/bluetooth-fake-devices.js"
+         ]
+        ]
        }
       ]
      ],
      "getCharacteristic": {
-      "characteristic-found.https.html": [
-       "0fb2ff3532f050f41b5929ed65357233fa1e6744",
+      "characteristic-found.https.window.js": [
+       "699f9938a5e118a73fe53e5b4519ab085ad5b6d6",
        [
-        null,
+        "bluetooth/service/getCharacteristic/characteristic-found.https.window.html",
         {
-         "testdriver": true
+         "script_metadata": [
+          [
+           "script",
+           "/resources/testharness.js"
+          ],
+          [
+           "script",
+           "/resources/testharnessreport.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver-vendor.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-test.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-fake-devices.js"
+          ]
+         ]
         }
        ]
       ],
@@ -342603,39 +343336,139 @@
       ]
      },
      "getCharacteristics": {
-      "blocklisted-characteristics.https.html": [
-       "3298f5fd3d054c6bcdace31db0fdcf13e3214f89",
+      "blocklisted-characteristics.https.window.js": [
+       "7458c56a1755556793996bbeb81f13f276d31ec9",
        [
-        null,
+        "bluetooth/service/getCharacteristics/blocklisted-characteristics.https.window.html",
         {
-         "testdriver": true
+         "script_metadata": [
+          [
+           "script",
+           "/resources/testharness.js"
+          ],
+          [
+           "script",
+           "/resources/testharnessreport.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver-vendor.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-test.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-fake-devices.js"
+          ]
+         ]
         }
        ]
       ],
-      "characteristics-found-with-uuid.https.html": [
-       "6188adbafb9d66574e444daa8c6e296c559b5b4b",
+      "characteristics-found-with-uuid.https.window.js": [
+       "8778807b93b2cd9599ed49bfcd838a5ac53b3dcd",
        [
-        null,
+        "bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.window.html",
         {
-         "testdriver": true
+         "script_metadata": [
+          [
+           "script",
+           "/resources/testharness.js"
+          ],
+          [
+           "script",
+           "/resources/testharnessreport.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver-vendor.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-test.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-fake-devices.js"
+          ]
+         ]
         }
        ]
       ],
-      "characteristics-found.https.html": [
-       "6812cd977f2e5439b1fc135ec7ede321489cbe33",
+      "characteristics-found.https.window.js": [
+       "f1b9ecd176a91c99f7d89aeae33cde16eefdd45f",
        [
-        null,
+        "bluetooth/service/getCharacteristics/characteristics-found.https.window.html",
         {
-         "testdriver": true
+         "script_metadata": [
+          [
+           "script",
+           "/resources/testharness.js"
+          ],
+          [
+           "script",
+           "/resources/testharnessreport.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver-vendor.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-test.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-fake-devices.js"
+          ]
+         ]
         }
        ]
       ],
-      "characteristics-not-found.https.html": [
-       "a629b5e1c11bf35ea44af510b643953674973573",
+      "characteristics-not-found.https.window.js": [
+       "93048fce2a5e64cd357683391266e194972a81d6",
        [
-        null,
+        "bluetooth/service/getCharacteristics/characteristics-not-found.https.window.html",
         {
-         "testdriver": true
+         "script_metadata": [
+          [
+           "script",
+           "/resources/testharness.js"
+          ],
+          [
+           "script",
+           "/resources/testharnessreport.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver.js"
+          ],
+          [
+           "script",
+           "/resources/testdriver-vendor.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-test.js"
+          ],
+          [
+           "script",
+           "/bluetooth/resources/bluetooth-fake-devices.js"
+          ]
+         ]
         }
        ]
       ],
@@ -525210,6 +526043,13 @@
        {}
       ]
      ],
+     "rtx-codecs.https.html": [
+      "78519c75cc42c87b26f65da5ea6f259e60c8e643",
+      [
+       null,
+       {}
+      ]
+     ],
      "sctp-format.html": [
       "207e51d4c3aaaaa8bc749fb06760cd7da26fd0d5",
       [
@@ -558814,7 +559654,7 @@
       ]
      ],
      "table-child-percentage-height-with-border-box-expected.html": [
-      "2b0a2f451c59b21471d5b2984c2c01aae2cfa5ce",
+      "b9d2418b18b5d7d604b8846a09e917903cc12aa2",
       [
        null,
        {}
diff --git a/third_party/blink/web_tests/external/wpt/credential-management/fedcm-logout.https.html b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-logout.https.html
new file mode 100644
index 0000000..e4f83b0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-logout.https.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>FederatedCredential.logout() promise resolution</title>
+<link rel="author" title="Peter Kotwicz" href="mailto:pkotwicz@chromium.org">
+<link rel="help" href="https://wicg.github.io/FedCM/#browser-api-idp-sign-out">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script type="module">
+  import {fedcm_test} from './support/fedcm-helper.js';
+
+  fedcm_test(async (t, mock) => {
+    mock.logoutReturn("kError");
+    return promise_rejects_dom(t, "NetworkError",
+      FederatedCredential.logout([{
+        accountId: "1234",
+        url: "https://rp.example/logout.php"
+      }])
+    );
+  }, "FederatedCredential.logout() error.");
+
+  fedcm_test(async (t, mock) => {
+    mock.logoutReturn("kSuccess");
+    await FederatedCredential.logout([{
+      accountId: "1234",
+      url: "https://rp.example/logout.php"
+    }]);
+  }, "FederatedCredential.logout() success.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/credential-management/fedcm.https.html b/third_party/blink/web_tests/external/wpt/credential-management/fedcm.https.html
index 71ff0ab..618f0ec 100644
--- a/third_party/blink/web_tests/external/wpt/credential-management/fedcm.https.html
+++ b/third_party/blink/web_tests/external/wpt/credential-management/fedcm.https.html
@@ -152,14 +152,4 @@
     const token = await navigator.credentials.get(test_options);
     assert_equals(token, "a_token");
   }, "get after abort should work");
-
-  promise_test(function(t) {
-    // Logout API not supported yet.
-    return promise_rejects_dom(t, "NotSupportedError",
-      FederatedCredential.logout([{
-        account_id: "1234",
-        endpoint: "https://rp.example/logout.php"
-      }])
-    );
-  }, "navigator.credentials.logout() basic.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/credential-management/support/fedcm-mock.js b/third_party/blink/web_tests/external/wpt/credential-management/support/fedcm-mock.js
index 2fa3514..407ca8d7 100644
--- a/third_party/blink/web_tests/external/wpt/credential-management/support/fedcm-mock.js
+++ b/third_party/blink/web_tests/external/wpt/credential-management/support/fedcm-mock.js
@@ -43,6 +43,13 @@
     this.returnPending_ = true;
   }
 
+  logoutReturn(status) {
+    let validated = LogoutStatus[status];
+    if (validated === undefined)
+      throw new Error("Invalid status: " + status);
+    this.logoutStatus_ = validated;
+  }
+
   // Causes the subsequent `FederatedCredential.revoke` to reject with this
   // status.
   revokeReturn(status) {
diff --git a/third_party/blink/web_tests/external/wpt/css/README.md b/third_party/blink/web_tests/external/wpt/css/README.md
index fc7c2a2..6ce0dd3 100644
--- a/third_party/blink/web_tests/external/wpt/css/README.md
+++ b/third_party/blink/web_tests/external/wpt/css/README.md
@@ -22,15 +22,6 @@
    `css` directory.
 
 
-vendor-imports/ Directory
--------------------------
-
-vendor-imports/ is the remains of a legacy directory where third parties
-historically imported their tests. These tests should be moved into the correct
-directory under css/, see
-[#8615](https://github.com/web-platform-tests/wpt/issues/8615). In the meantime,
-feel free to fix any test bugs in the usual way.
-
 Importing Old Branches
 ----------------------
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-clip-margin-008-ref.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-clip-margin-008-ref.html
new file mode 100644
index 0000000..3af9e4e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-clip-margin-008-ref.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<html class="reftest">
+<meta charset="utf-8">
+<title>Overflow-clip-margin has no effect with overflow:scroll and paint containment (ref)</title>
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#propdef-overflow-clip-margin">
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<style>
+.container {
+  width: 100px;
+  height: 100px;
+  contain: paint;
+  overflow: scroll;
+}
+.child {
+  width: 200px;
+  height: 200px;
+  background: lightblue;
+}
+</style>
+<div class=container>
+  <div class=child></div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-clip-margin-008.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-clip-margin-008.html
new file mode 100644
index 0000000..fabe669
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-clip-margin-008.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<html class="reftest">
+<meta charset="utf-8">
+<title>Overflow-clip-margin has no effect with overflow:scroll and paint containment </title>
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#propdef-overflow-clip-margin">
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="match" href="overflow-clip-margin-008-ref.html">
+<style>
+.container {
+  width: 100px;
+  height: 100px;
+  overflow-clip-margin: 20px;
+  contain: paint;
+  overflow: scroll;
+}
+.child {
+  width: 200px;
+  height: 200px;
+  background: lightblue;
+}
+</style>
+<div class=container>
+  <div class=child></div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/crashtests/preserve3d-svg-foreign-object-hit-test.svg b/third_party/blink/web_tests/external/wpt/css/css-transforms/crashtests/preserve3d-svg-foreign-object-hit-test.svg
new file mode 100644
index 0000000..14c772c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/crashtests/preserve3d-svg-foreign-object-hit-test.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
+<g id="testmeta">
+  <title>CSS Test (Transforms): preserve-3d on foreignObject and hit test</title>
+  <html:link rel="help" href="https://drafts.csswg.org/css-transforms-2/#transform-style-property" />
+  <html:link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1277221" />
+  <html:meta name="assert" content="This should not crash." />
+</g>
+
+<style>
+foreignObject {
+  display:table;
+  overflow:auto;
+  transform-style:preserve-3d;
+}
+</style>
+<foreignObject width="200" height="200"></foreignObject>
+<script>
+document.elementFromPoint(100, 100);
+</script>
+</svg>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html
new file mode 100644
index 0000000..a91d2a73
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-fallback-props-revert-001.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: 'revert' keyword for properties that disable native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes the tested property with value 'revert'.">
+<link rel="match" href="compute-kind-widget-no-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > * {
+      background-color: revert;
+      border-top-color: revert;
+      border-top-style: revert;
+      border-top-width: revert;
+      border-right-color: revert;
+      border-right-style: revert;
+      border-right-width: revert;
+      border-bottom-color: revert;
+      border-bottom-style: revert;
+      border-bottom-width: revert;
+      border-left-color: revert;
+      border-left-style: revert;
+      border-left-width: revert;
+      border-block-start-color: revert;
+      border-block-end-color: revert;
+      border-inline-start-color: revert;
+      border-inline-end-color: revert;
+      border-block-start-style: revert;
+      border-block-end-style: revert;
+      border-inline-start-style: revert;
+      border-inline-end-style: revert;
+      border-block-start-width: revert;
+      border-block-end-width: revert;
+      border-inline-start-width: revert;
+      border-inline-end-width: revert;
+      background-image: revert;
+      background-attachment: revert;
+      background-position: revert;
+      background-clip: revert;
+      background-origin: revert;
+      background-size: revert;
+      border-image-source: revert;
+      border-image-slice: revert;
+      border-image-width: revert;
+      border-image-outset: revert;
+      border-image-repeat: revert;
+      border-top-left-radius: revert;
+      border-top-right-radius: revert;
+      border-bottom-right-radius: revert;
+      border-bottom-left-radius: revert;
+      border-start-start-radius: revert;
+      border-start-end-radius: revert;
+      border-end-start-radius: revert;
+      border-end-end-radius: revert;
+    }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-fallback-ref.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-fallback-ref.html
new file mode 100644
index 0000000..cc6d102
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-fallback-ref.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Reference: Compute kind of widget - fallback</title>
+<style>
+    #container { width: 500px; }
+    button,
+    input[type=button],
+    input[type=submit],
+    input[type=reset],
+    input[type=text],
+    input[type=search],
+    textarea,
+    input[type=color],
+    #select-listbox,
+    meter,
+    progress {
+        appearance: none;
+    }
+    #select-dropdown-box,
+    #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+<div id="container">
+    <a>a</a>
+    <button>button</button>
+    <input type="button" value="input-button">
+    <input type="submit" value="input-submit">
+    <input type="reset" value="input-reset">
+
+    <input type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input type="search" value="input-search">
+
+    <input type="range">
+    <input type="checkbox">
+    <input type="radio">
+    <input type="color">
+
+    <textarea>textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter value=0.5></meter>
+    <progress value=0.5></progress>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-attachment-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-attachment-001.html
new file mode 100644
index 0000000..dfdb3076
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-attachment-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: background-attachment disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes background-attachment.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "background-attachment";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-clip-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-clip-001.html
new file mode 100644
index 0000000..cf6862f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-clip-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: background-clip disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes background-clip.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "background-clip";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html
new file mode 100644
index 0000000..f080bae2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: background-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes background-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "background-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-image-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-image-001.html
new file mode 100644
index 0000000..b5b5231
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-image-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: background-image disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes background-image.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "background-image";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-origin-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-origin-001.html
new file mode 100644
index 0000000..d826c0b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-origin-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: background-origin disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes background-origin.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "background-origin";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html
new file mode 100644
index 0000000..290d12356
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-position-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: background-position disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes background-position.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "background-position";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-size-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-size-001.html
new file mode 100644
index 0000000..105a439
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-background-size-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: background-size disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes background-size.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "background-size";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-color-001.html
new file mode 100644
index 0000000..480a292
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-block-end-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-block-end-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-block-end-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-style-001.html
new file mode 100644
index 0000000..a6fac1a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-block-end-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-block-end-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-block-end-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-width-001.html
new file mode 100644
index 0000000..a73d5b5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-end-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-block-end-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-block-end-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-block-end-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html
new file mode 100644
index 0000000..c7be4f45
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-block-start-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-block-start-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-block-start-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-style-001.html
new file mode 100644
index 0000000..6670cb6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-block-start-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-block-start-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-block-start-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-width-001.html
new file mode 100644
index 0000000..13b932a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-block-start-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-block-start-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-block-start-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-block-start-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-color-001.html
new file mode 100644
index 0000000..8cb1ed7a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-bottom-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-bottom-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-bottom-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html
new file mode 100644
index 0000000..6f9af43
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-left-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-bottom-left-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-bottom-left-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-bottom-left-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-right-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-right-radius-001.html
new file mode 100644
index 0000000..356457f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-right-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-bottom-right-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-bottom-right-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-bottom-right-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-style-001.html
new file mode 100644
index 0000000..0173f020
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-bottom-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-bottom-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-bottom-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html
new file mode 100644
index 0000000..f8d2f84
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-bottom-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-bottom-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-bottom-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-bottom-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-end-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-end-radius-001.html
new file mode 100644
index 0000000..9fa13b4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-end-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-end-end-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-end-end-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-end-end-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html
new file mode 100644
index 0000000..7f3667e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-end-start-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-end-start-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-end-start-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-end-start-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-outset-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-outset-001.html
new file mode 100644
index 0000000..dc3c872
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-outset-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-image-outset disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-image-outset.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-image-outset";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-repeat-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-repeat-001.html
new file mode 100644
index 0000000..388ad9a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-repeat-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-image-repeat disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-image-repeat.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-image-repeat";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html
new file mode 100644
index 0000000..971239c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-slice-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-image-slice disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-image-slice.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-image-slice";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html
new file mode 100644
index 0000000..96795ed
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-source-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-image-source disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-image-source.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-image-source";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-width-001.html
new file mode 100644
index 0000000..ca57002
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-image-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-image-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-image-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-image-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-color-001.html
new file mode 100644
index 0000000..9ecfdfbe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-inline-end-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-inline-end-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-inline-end-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-style-001.html
new file mode 100644
index 0000000..2a5496e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-inline-end-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-inline-end-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-inline-end-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html
new file mode 100644
index 0000000..6269410
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-end-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-inline-end-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-inline-end-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-inline-end-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-color-001.html
new file mode 100644
index 0000000..eee53b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-inline-start-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-inline-start-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-inline-start-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html
new file mode 100644
index 0000000..b8e980e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-inline-start-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-inline-start-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-inline-start-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-width-001.html
new file mode 100644
index 0000000..999028e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-inline-start-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-inline-start-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-inline-start-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-inline-start-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-color-001.html
new file mode 100644
index 0000000..9d35d5a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-left-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-left-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-left-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html
new file mode 100644
index 0000000..0c3834a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-left-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-left-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-left-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-width-001.html
new file mode 100644
index 0000000..b9db35d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-left-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-left-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-left-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-left-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-color-001.html
new file mode 100644
index 0000000..4be6ac5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-right-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-right-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-right-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-style-001.html
new file mode 100644
index 0000000..0bb296c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-right-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-right-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-right-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-width-001.html
new file mode 100644
index 0000000..8a0436d2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-right-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-right-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-right-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-right-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-end-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-end-radius-001.html
new file mode 100644
index 0000000..27c8a5e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-end-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-start-end-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-start-end-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-start-end-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html
new file mode 100644
index 0000000..8f1369d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-start-start-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-start-start-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-start-start-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-start-start-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-color-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-color-001.html
new file mode 100644
index 0000000..b967850
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-color-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-top-color disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-top-color.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-top-color";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-left-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-left-radius-001.html
new file mode 100644
index 0000000..937cb02
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-left-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-top-left-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-top-left-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-top-left-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html
new file mode 100644
index 0000000..f2abad9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-right-radius-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-top-right-radius disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-top-right-radius.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-top-right-radius";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html
new file mode 100644
index 0000000..921933c28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-style-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-top-style disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-top-style.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-top-style";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html
new file mode 100644
index 0000000..ff0fecf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-border-top-width-001.html
@@ -0,0 +1,47 @@
+<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: border-top-width disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes border-top-width.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "border-top-width";
+for (const el of elements) {
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-no-fallback-props-001.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-no-fallback-props-001.html
new file mode 100644
index 0000000..e688ab8a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-no-fallback-props-001.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: properties that DO NOT disable native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes properties that don't disable native appearance.">
+<link rel="match" href="compute-kind-widget-no-fallback-ref.html">
+
+<style>
+    #container { width: 500px; }
+    #container > #search-text-input { appearance: textfield; }
+    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const fallbackProps = [
+  'background-color',
+  'border-top-color',
+  'border-top-style',
+  'border-top-width',
+  'border-right-color',
+  'border-right-style',
+  'border-right-width',
+  'border-bottom-color',
+  'border-bottom-style',
+  'border-bottom-width',
+  'border-left-color',
+  'border-left-style',
+  'border-left-width',
+  'border-block-start-color',
+  'border-block-end-color',
+  'border-inline-start-color',
+  'border-inline-end-color',
+  'border-block-start-style',
+  'border-block-end-style',
+  'border-inline-start-style',
+  'border-inline-end-style',
+  'border-block-start-width',
+  'border-block-end-width',
+  'border-inline-start-width',
+  'border-inline-end-width',
+  'background-image',
+  'background-attachment',
+  'background-position',
+  'background-clip',
+  'background-origin',
+  'background-size',
+  'border-image-source',
+  'border-image-slice',
+  'border-image-width',
+  'border-image-outset',
+  'border-image-repeat',
+  'border-top-left-radius',
+  'border-top-right-radius',
+  'border-bottom-right-radius',
+  'border-bottom-left-radius',
+  'border-start-start-radius',
+  'border-start-end-radius',
+  'border-end-start-radius',
+  'border-end-end-radius',
+];
+
+// Make sure that any supported property that is not in the above list
+// does not affect the widget type.
+const declarations = getComputedStyle(document.documentElement);
+for (const prop of declarations) {
+  if (fallbackProps.includes(prop)) {
+    continue;
+  }
+  for (const el of elements) {
+    el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+  }
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-no-fallback-ref.html b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-no-fallback-ref.html
new file mode 100644
index 0000000..241ecf9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-no-fallback-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Reference: Compute kind of widget - no fallback</title>
+<style>
+    #container { width: 500px; }
+</style>
+<div id="container">
+    <a>a</a>
+    <button>button</button>
+    <input type="button" value="input-button">
+    <input type="submit" value="input-submit">
+    <input type="reset" value="input-reset">
+
+    <input type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input type="search" value="input-search">
+
+    <input type="range">
+    <input type="checkbox">
+    <input type="radio">
+    <input type="color">
+
+    <textarea>textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter value=0.5></meter>
+    <progress value=0.5></progress>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/tools/build-compute-kind-widget-fallback-props.py b/third_party/blink/web_tests/external/wpt/css/css-ui/tools/build-compute-kind-widget-fallback-props.py
new file mode 100755
index 0000000..a768e4e2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/tools/build-compute-kind-widget-fallback-props.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python3
+import os, shutil
+
+target_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/compute-kind-widget-generated"
+
+props = [
+  u"background-color",
+  u"border-top-color",
+  u"border-top-style",
+  u"border-top-width",
+  u"border-right-color",
+  u"border-right-style",
+  u"border-right-width",
+  u"border-bottom-color",
+  u"border-bottom-style",
+  u"border-bottom-width",
+  u"border-left-color",
+  u"border-left-style",
+  u"border-left-width",
+  u"border-block-start-color",
+  u"border-block-end-color",
+  u"border-inline-start-color",
+  u"border-inline-end-color",
+  u"border-block-start-style",
+  u"border-block-end-style",
+  u"border-inline-start-style",
+  u"border-inline-end-style",
+  u"border-block-start-width",
+  u"border-block-end-width",
+  u"border-inline-start-width",
+  u"border-inline-end-width",
+  u"background-image",
+  u"background-attachment",
+  u"background-position",
+  u"background-clip",
+  u"background-origin",
+  u"background-size",
+  u"border-image-source",
+  u"border-image-slice",
+  u"border-image-width",
+  u"border-image-outset",
+  u"border-image-repeat",
+  u"border-top-left-radius",
+  u"border-top-right-radius",
+  u"border-bottom-right-radius",
+  u"border-bottom-left-radius",
+  u"border-start-start-radius",
+  u"border-start-end-radius",
+  u"border-end-start-radius",
+  u"border-end-end-radius",
+]
+
+template = u"""<!-- DO NOT EDIT. This file has been generated. Source:
+    ./tools/build-compute-kind-widget-fallback-props.py
+-->
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: Compute kind of widget: {prop} disables native appearance for widgets</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-4/#computing-kind-widget">
+<meta name="assert" content="appropriate widget is returned when authorProps includes {prop}.">
+<link rel="match" href="../compute-kind-widget-fallback-ref.html">
+<style>
+    #container {{ width: 500px; }}
+    #container > #search-text-input {{ appearance: textfield; }}
+    #container > #select-menulist-button {{ appearance: none; appearance: menulist-button; }}
+</style>
+
+<div id="container">
+    <a>a</a>
+    <button id="button">button</button>
+    <input id="button-input" type="button" value="input-button">
+    <input id="submit-input" type="submit" value="input-submit">
+    <input id="reset-input" type="reset" value="input-reset">
+
+    <input id="text-input" type="text" value="input-text">
+    <input id="search-text-input" type="search" value="input-search-text">
+    <input id="search-input" type="search" value="input-search">
+
+    <input id="range-input" type="range">
+    <input id="checkbox-input" type="checkbox">
+    <input id="radio-input" type="radio">
+    <input id="color-input" type="color">
+
+    <textarea id="textarea">textarea</textarea>
+    <select multiple id="select-listbox"><option>select-listbox</option></select>
+    <select id="select-dropdown-box"><option>select-dropdown-box</option></select>
+    <select id="select-menulist-button"><option>select-menulist-button</option></select>
+    <meter id="meter" value=0.5></meter>
+    <progress id="progress" value=0.5></progress>
+</div>
+
+<script>
+// Set author-level CSS that matches UA style, but don't use the 'revert' value.
+const elements = document.querySelectorAll('#container > *');
+const prop = "{prop}";
+for (const el of elements) {{
+  el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
+}}
+</script>
+"""
+
+# Generate tests
+
+# wipe target_dir
+if os.path.isdir(target_dir):
+    shutil.rmtree(target_dir)
+
+def write_file(path, content):
+    path = os.path.join(target_dir, path)
+    os.makedirs(os.path.dirname(path), exist_ok=True)
+    file = open(os.path.join(target_dir, path), 'w')
+    file.write(content)
+    file.close()
+
+def generate_tests(prop):
+    test = template.format(prop=prop)
+    write_file(f"kind-of-widget-fallback-{prop}-001.html", test)
+
+for prop in props:
+    generate_tests(prop)
diff --git a/third_party/blink/web_tests/external/wpt/lint.ignore b/third_party/blink/web_tests/external/wpt/lint.ignore
index cffb1f1..8078f262 100644
--- a/third_party/blink/web_tests/external/wpt/lint.ignore
+++ b/third_party/blink/web_tests/external/wpt/lint.ignore
@@ -384,10 +384,6 @@
 SUPPORT-WRONG-DIR: css/CSS2/other-formats/xml/background-18.css
 SUPPORT-WRONG-DIR: css/CSS2/other-formats/xml/background-19-alt.xml
 SUPPORT-WRONG-DIR: css/CSS2/other-formats/xml/background-19.css
-SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/check-for-references.sh
-SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests-filter
-SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh
-SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/masking/blank.html
 SUPPORT-WRONG-DIR: css/WOFF2/testcaseindex.xht
 
 
@@ -413,7 +409,6 @@
 INDENT TABS: css/filter-effects/*
 INDENT TABS: css/mediaqueries/*
 INDENT TABS: css/selectors/*
-INDENT TABS: css/vendor-imports/*
 INDENT TABS: css/WOFF2/*
 
 
@@ -424,12 +419,6 @@
 CONSOLE: css/css-writing-modes/tools/generators/gulpfile.js
 
 TRAILING WHITESPACE: css/css-fonts/support/fonts/gsubtest-lookup3.ufo/features.fea
-TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-7.html
-TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-7-ref.html
-TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-8.html
-TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-8-ref.html
-TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9.html
-TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9-ref.html
 
 SET TIMEOUT: css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html
 SET TIMEOUT: css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index 03b5a03..6f4f43ee 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -10581,7 +10581,6 @@
 interface WebId
     attribute @@toStringTag
     method constructor
-    method logout
     method provide
 interface WebKitCSSMatrix : DOMMatrixReadOnly
     attribute @@toStringTag
diff --git a/third_party/crashpad/crashpad/tools/crashpad_http_upload.md b/third_party/crashpad/crashpad/tools/crashpad_http_upload.md
index 93b87522..43e1943 100644
--- a/third_party/crashpad/crashpad/tools/crashpad_http_upload.md
+++ b/third_party/crashpad/crashpad/tools/crashpad_http_upload.md
@@ -22,7 +22,7 @@
 
 ## Synopsis
 
-**crashpad_http_uplaod** [_OPTION…_]
+**crashpad_http_upload** [_OPTION…_]
 
 ## Description
 
diff --git a/third_party/flatbuffers/BUILD.gn b/third_party/flatbuffers/BUILD.gn
index ef79499..f43f44b 100644
--- a/third_party/flatbuffers/BUILD.gn
+++ b/third_party/flatbuffers/BUILD.gn
@@ -54,6 +54,7 @@
     "src/grpc/src/compiler/swift_generator.h",
     "src/grpc/src/compiler/ts_generator.cc",
     "src/grpc/src/compiler/ts_generator.h",
+    "src/include/flatbuffers/bfbs_generator.h",
     "src/include/flatbuffers/code_generators.h",
     "src/include/flatbuffers/flatc.h",
     "src/include/flatbuffers/grpc.h",
@@ -63,6 +64,9 @@
     "src/include/flatbuffers/reflection.h",
     "src/include/flatbuffers/reflection_generated.h",
     "src/include/flatbuffers/registry.h",
+    "src/src/bfbs_gen.h",
+    "src/src/bfbs_gen_lua.cpp",
+    "src/src/bfbs_gen_lua.h",
     "src/src/code_generators.cpp",
     "src/src/flatc.cpp",
     "src/src/idl_gen_cpp.cpp",
diff --git a/third_party/flatbuffers/README.chromium b/third_party/flatbuffers/README.chromium
index 4fc8031a..b1b81af 100644
--- a/third_party/flatbuffers/README.chromium
+++ b/third_party/flatbuffers/README.chromium
@@ -1,8 +1,8 @@
 Name: FlatBuffers
 Short Name: flatbuffers
 URL: https://github.com/google/flatbuffers
-Version: 4f7f6dc301f5ffb9765b055d48324dc7629abd5a
-Date: 2021-11-30
+Version: b8aaccee8248059b2af032cca0eb1d2ddbdb6cdc
+Date: 2021-12-16
 License: Apache 2.0
 License File: LICENSE
 Security Critical: yes
diff --git a/tools/android/build_speed/benchmark.py b/tools/android/build_speed/benchmark.py
index cf9c544..7d1ed89c 100755
--- a/tools/android/build_speed/benchmark.py
+++ b/tools/android/build_speed/benchmark.py
@@ -33,7 +33,7 @@
 import time
 import shutil
 
-from typing import Dict, Iterator, List, Tuple
+from typing import Dict, Callable, Iterator, List, Tuple
 
 USE_PYTHON_3 = f'{__file__} will only run under python3.'
 
@@ -50,7 +50,7 @@
 _AVD_SCRIPT = _EMULATOR_AVD_DIR / 'avd.py'
 # Use API 28 as it's the highest API version that monochrome supports.
 _AVD_CONFIG = _EMULATOR_AVD_DIR / 'proto' / 'generic_android28.textpb'
-_SECONDS_TO_WAIT_FOR_EMULATOR_STARTUP = 30
+_SECONDS_TO_POLL_FOR_EMULATOR = 30
 
 _GN_ARGS = [
     'target_os="android"',
@@ -202,14 +202,32 @@
         server_proc.wait()
 
 
-def _detect_emulators():
-    return [d for d in adb_wrapper.AdbWrapper.Devices() if d.is_emulator]
+def _detect_emulators() -> List[device_utils.DeviceUtils]:
+    return [
+        device_utils.DeviceUtils(d) for d in adb_wrapper.AdbWrapper.Devices()
+        if d.is_emulator
+    ]
+
+
+def _poll_for_emulators(
+        condition: Callable[[List[device_utils.DeviceUtils]], bool], *,
+        expected: str):
+    for sec in range(_SECONDS_TO_POLL_FOR_EMULATOR):
+        emulators = _detect_emulators()
+        if condition(emulators):
+            break
+        logging.debug(f'Waited {sec}s for emulator to become ready...')
+        time.sleep(1)
+    else:
+        raise Exception(
+            f'Emulator is not ready after {_SECONDS_TO_POLL_FOR_EMULATOR}s. '
+            f'Expected {expected}.')
 
 
 @contextlib.contextmanager
 def _emulator():
-    emulators = _detect_emulators()
-    assert len(emulators) == 0, 'There must be no existing emulators running.'
+    _poll_for_emulators(lambda emulators: len(emulators) == 0,
+                        expected='no running emulators')
     try:
         cmd = [_AVD_SCRIPT, 'start', '-q', '--avd-config', _AVD_CONFIG]
         subprocess.run(cmd, check=True, capture_output=True)
@@ -217,17 +235,9 @@
         print('Unable to start the emulator. Perhaps you need to install it:')
         print(f'{_AVD_SCRIPT} install --avd-config {_AVD_CONFIG}')
         raise
-    for sec in range(_SECONDS_TO_WAIT_FOR_EMULATOR_STARTUP):
-        emulators = _detect_emulators()
-        if len(emulators) >= 1:
-            break
-        logging.debug(f'Waited {sec}s for emulator to become ready...')
-        time.sleep(1)
-    else:
-        raise Exception('Emulator does not seem to be ready after waiting '
-                        f'{_SECONDS_TO_WAIT_FOR_EMULATOR_STARTUP} seconds.')
-    assert len(emulators) == 1, 'There are too many emulators running.'
-    device = device_utils.DeviceUtils(emulators[0])
+    _poll_for_emulators(lambda emulators: len(emulators) == 1,
+                        expected='exactly one emulator started successfully')
+    device = _detect_emulators()[0]
     logging.debug(f'Started: {device.serial}.')
     try:
         # Ensure the emulator and its disk are fully set up.
@@ -237,6 +247,8 @@
         yield
     finally:
         device.adb.Emu('kill')
+        _poll_for_emulators(lambda emulators: len(emulators) == 0,
+                            expected='no running emulators')
 
 
 def _run_and_time_cmd(cmd: List[str]) -> float:
@@ -274,14 +286,65 @@
     ])
 
 
+def _remove_deleted_files():
+    # This is necessary to terminate all non-chrome processes still holding
+    # file descriptors open for deleted chrome apk files. Otherwise the
+    # emulator will run out of space.
+    emulator = _detect_emulators()[0]
+    find_holders_of_deleted_fds_cmd = 'lsof | grep "(deleted)" | grep ".apk" | grep chrome | sed "s/  */ /g"'
+    # Example output:
+    # COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
+    # gle.android.gms 2492 u0_a10 94r REG 252,1 652841428 172035 /data/app/org.chromium.chrome-UDsQx3j_rw_6nevertBVeQ==/base.apk (deleted)
+    # s.nexuslauncher 2679 u0_a7 64r REG 252,1 652841428 172035 /data/app/org.chromium.chrome-UDsQx3j_rw_6nevertBVeQ==/base.apk (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes8.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes8.dex (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes7.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes7.dex (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes6.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes6.dex (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes5.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes5.dex (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes4.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes4.dex (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes3.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes3.dex (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes2.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes2.dex (deleted)
+    # chromium.chrome 7091 u0_a85 mem unknown /dev/ashmem/dalvik-classes.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk (deleted)
+    # dboxed_process0 7288 u0_i21 mem unknown /dev/ashmem/dalvik-classes2.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk!classes2.dex (deleted)
+    # dboxed_process0 7288 u0_i21 mem unknown /dev/ashmem/dalvik-classes.dex extracted in memory from /data/app/org.chromium.chrome-tFnAbRy3utLLuLwXxXYtxw==/base.apk (deleted)
+    output = emulator.RunShellCommand(find_holders_of_deleted_fds_cmd,
+                                      shell=True,
+                                      as_root=True,
+                                      check_return=True)
+    pids = set()
+    for line in output:
+        command, pid, user, *_ = line.split()
+        # Avoid killing chrome or system processes as that can lead to pm failures like:
+        # Unexpected pm path output: 'cmd: Failure calling service package: Broken pipe (32)'
+        if 'chrome' in command or 'boxed_process' in command:
+            continue
+        if user == 'system':
+            continue
+        if pid in pids:
+            continue
+        logging.debug('Terminating command=%s pid=%s user=%s', command, pid,
+                      user)
+        pids.add(pid)
+    if pids:
+        emulator.RunShellCommand('kill ' + ' '.join(pids),
+                                 shell=True,
+                                 as_root=True,
+                                 check_return=True)
+
+
 def _run_and_maybe_install(out_dir: str, target: str,
                            use_emulator: bool) -> float:
     total_time = _run_autoninja(out_dir, target)
     if use_emulator:
         total_time += _run_install(out_dir, target)
+        _remove_deleted_files()
     return total_time
 
 
+def _maybe_uninstall(out_dir: str, target: str, use_emulator: bool):
+    if use_emulator:
+        _run_and_time_cmd([os.path.join(out_dir, 'bin', target), 'uninstall'])
+
+
 def _run_incremental_benchmark(*, out_dir: str, target: str, from_string: str,
                                to_string: str, change_file: str,
                                use_emulator: bool) -> Iterator[float]:
@@ -302,7 +365,11 @@
     # change, just reversed, so do a second run to save on prep time. This
     # ensures a minimum of two runs.
     pathlib.Path(change_file_path).touch()
-    yield _run_and_maybe_install(out_dir, target, use_emulator)
+    second_run_time = _run_and_maybe_install(out_dir, target, use_emulator)
+    # Ensure that we clean-up before the last yield so that the emulator does
+    # not run out of space for the next benchmark.
+    _maybe_uninstall(out_dir, target, use_emulator)
+    yield second_run_time
 
 
 def _run_benchmark(*, kind: str, use_emulator: bool,
diff --git a/tools/android/infobar_deprecation/PRESUBMIT.py b/tools/android/infobar_deprecation/PRESUBMIT.py
new file mode 100644
index 0000000..a2b2e66
--- /dev/null
+++ b/tools/android/infobar_deprecation/PRESUBMIT.py
@@ -0,0 +1,17 @@
+# Copyright (c) 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Presubmit tests for /tools/android/infobar_deprecation.
+
+Runs Python unit tests in /tools/android/infobar_deprecation on upload.
+"""
+
+USE_PYTHON3 = True
+
+
+def CheckChangeOnUpload(input_api, output_api):
+  result = []
+  result.extend(
+      input_api.canned_checks.RunUnitTests(input_api, output_api,
+                                           ['./infobar_deprecation_test.py']))
+  return result
diff --git a/tools/android/infobar_deprecation/infobar_deprecation.py b/tools/android/infobar_deprecation/infobar_deprecation.py
new file mode 100644
index 0000000..8ea90b0
--- /dev/null
+++ b/tools/android/infobar_deprecation/infobar_deprecation.py
@@ -0,0 +1,87 @@
+# Lint as: python3
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Script that is used by PRESUBMIT.py to check Android new infobar files.
+
+This file checks for the following:
+  - whether new infobar identifier targeting Android is appended
+  - whether new infobar related files are introduced in Android related folder.
+"""
+
+import re
+import os
+import pathlib
+
+USE_PYTHON3 = True
+
+INFOBAR_DELEGATE_H = 'components/infobars/core/infobar_delegate.h'
+INFOBAR_ANDROID_FOLDERS = (
+    'chrome/browser/ui/android/infobars',
+    'chrome/android/java/src/org/chromium/chrome/browser/infobar')
+
+
+def CheckDeprecationOnUpload(input_api, output_api):
+  """
+  Returns result for all the presubmit upload checks for newly added infobars.
+  """
+  result = []
+  result.extend(_CheckNewInfobar(input_api, output_api))
+  # Add more checks here
+  return result
+
+
+def _IncludeFiles(f):
+  return pathlib.Path(f.LocalPath()).suffix in ('.h', '.cc', '.java')
+
+
+def _CheckNewInfobar(input_api, output_api):
+  warnings = []
+  for f in input_api.AffectedFiles(include_deletes=False,
+                                   file_filter=_IncludeFiles):
+
+    # Consider only newly added files.
+    if f.Action() == 'A' and (os.path.dirname(
+        f.LocalPath()) in INFOBAR_ANDROID_FOLDERS) and (
+            'infobar' in os.path.basename(f.LocalPath()).lower()):
+      warnings.append('  %s' % f.LocalPath())
+
+    if (f.LocalPath() == INFOBAR_DELEGATE_H):
+      contents = input_api.ReadFile(f)
+
+      # Capture current identifiers.
+      p = re.compile('enum InfoBarIdentifier {(.*?)}',
+                     re.IGNORECASE | re.DOTALL | re.MULTILINE)
+      ids = p.search(contents).group(1)
+
+      find_id = re.compile('(.*) =')
+
+      for line_number, line in f.ChangedContents():
+        # Ignore comments and unchanged identifiers.
+        if line not in ids:
+          continue
+        if line.strip().startswith('//'):
+          continue
+        match = find_id.search(line)
+        if not match:
+          continue
+        infobar_id = match.group(1)
+        if infobar_id.endswith("_ANDROID") or infobar_id.endswith("_MOBILE"):
+          warnings.append('  %s:%d\n    \t%s' %
+                          (f.LocalPath(), line_number, line.strip()))
+
+  if warnings:
+    return [
+        output_api.PresubmitPromptWarning(
+            '''
+Android InfoBar Deprecation Check failed:
+  Your new code appears to add a new infobar on Android.
+
+  On Android, InfoBar UI will be deprecated in favor of the new Message UI.
+  All Android infobars are being migrated or have been migrated to Message UI.
+
+  See components/messages/README.md or reach out to components/messages/OWNERS
+  for more information.
+''', warnings)
+    ]
+  return []
diff --git a/tools/android/infobar_deprecation/infobar_deprecation_test.py b/tools/android/infobar_deprecation/infobar_deprecation_test.py
new file mode 100755
index 0000000..c7457c8e
--- /dev/null
+++ b/tools/android/infobar_deprecation/infobar_deprecation_test.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python3
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import os
+import sys
+import unittest
+import infobar_deprecation
+
+sys.path.append(
+    os.path.dirname(
+        os.path.dirname(
+            os.path.dirname(os.path.dirname(os.path.abspath(__file__))))))
+from PRESUBMIT_test_mocks import MockFile, MockInputApi, MockOutputApi
+
+_MOCK_INFOBAR_DELEGATE_H_CONTENTS = '''
+// random comments
+enum InfoBarIdentifier {
+  A_INFOBAR_ANDROID = 1,
+  B_INFOBAR_MOBILE = 2,
+  // OBSOLETE_INFOBAR_ANDROID obsolete infobar,
+  C_INFOBAR_IOS = 3,
+  D_INFOBAR = 4,
+  E_INFOBAR = 5,
+  F_INFOBAR_ANDROID = 6,
+  F_INFOBAR_MOBILE = 7,
+  F_INFOBAR_IOS = 8,
+  // G_INFOBAR_ANDROID = 9,
+};
+// random comments
+
+'''
+
+
+class InfobarDeprecationMockInputApi(MockInputApi):
+  def ReadFile(self, filename, mode='rU'):
+    return _MOCK_INFOBAR_DELEGATE_H_CONTENTS
+
+
+class InfobarDeprecationMockInputFile(MockFile):
+  def ChangedContents(self):
+    return [
+        (6, '  E_INFOBAR = 5,'),
+        (7, '  F_INFOBAR_ANDROID = 6,'),
+        (8, '  F_INFOBAR_MOBILE = 7,'),
+        (9, '  F_INFOBAR_IOS = 8,'),
+        (10, '  // G_INFOBAR_ANDROID = 9,'),
+    ]
+
+
+class TestInfobarDeprecation(unittest.TestCase):
+  def testInfoBarIdentifier(self):
+    lines = []
+
+    mock_input_api = MockInputApi()
+    mock_input_api.files = [
+        MockFile(
+            os.path.join(infobar_deprecation.INFOBAR_ANDROID_FOLDERS[0],
+                         'TestInfobarDelegate.java'), lines),
+        MockFile(
+            os.path.join(infobar_deprecation.INFOBAR_ANDROID_FOLDERS[1],
+                         'test_infobar_delegate.cc'), lines),
+
+        # Add un-related file for testing.
+        MockFile(
+            os.path.join(infobar_deprecation.INFOBAR_ANDROID_FOLDERS[1],
+                         'README.md'), lines),
+    ]
+    warnings = infobar_deprecation._CheckNewInfobar(mock_input_api,
+                                                    MockOutputApi())
+    self.assertEqual(1, len(warnings))
+    self.assertEqual(2, len(warnings[0].items))
+
+  def testInfobarFiles(self):
+    mock_input_api = InfobarDeprecationMockInputApi()
+    mock_input_api.files = [
+        InfobarDeprecationMockInputFile(infobar_deprecation.INFOBAR_DELEGATE_H,
+                                        []),
+    ]
+    warnings = infobar_deprecation._CheckNewInfobar(mock_input_api,
+                                                    MockOutputApi())
+    self.assertEqual(1, len(warnings))
+    self.assertEqual(2, len(warnings[0].items))
+
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/tools/clang/scripts/package.py b/tools/clang/scripts/package.py
index 567168b..f2c2121 100755
--- a/tools/clang/scripts/package.py
+++ b/tools/clang/scripts/package.py
@@ -546,6 +546,33 @@
   PackageInArchive(clang_tidy_dir, clang_tidy_dir + '.tgz')
   MaybeUpload(args.upload, clang_tidy_dir + '.tgz', gcs_platform)
 
+  # Zip up clang-libs for users who opt into it. We want the clang
+  # headers as well as the static libraries.
+  clang_libs_dir = 'clang-libs-' + stamp
+  shutil.rmtree(clang_libs_dir, ignore_errors=True)
+  os.makedirs(os.path.join(clang_libs_dir, 'include'))
+  # TODO(danakj): It's possible we need to also include headers from
+  # LLVM_DIR/clang/lib/AST/ and other subdirs of lib, but we won't include them
+  # unless we see it's needed, and we can document why.
+  shutil.copytree(os.path.join(LLVM_DIR, 'clang', 'include', 'clang'),
+                  os.path.join(clang_libs_dir, 'include', 'clang'))
+  os.makedirs(os.path.join(clang_libs_dir, 'lib'))
+  if sys.platform == 'win32':
+    clang_libs_want = [
+        '*.lib',
+    ]
+  else:
+    clang_libs_want = [
+        '*.a',
+    ]
+  for lib_path in os.listdir(os.path.join(LLVM_RELEASE_DIR, 'lib')):
+    for lib_want in clang_libs_want:
+      if fnmatch.fnmatch(lib_path, lib_want):
+        shutil.copy(os.path.join(LLVM_RELEASE_DIR, 'lib', lib_path),
+                    os.path.join(clang_libs_dir, 'lib'))
+  PackageInArchive(clang_libs_dir, clang_libs_dir + '.tgz')
+  MaybeUpload(args.upload, clang_libs_dir + '.tgz', gcs_platform)
+
   if sys.platform == 'darwin':
     # dsymutil isn't part of the main zip, and it gets periodically
     # deployed to CIPD (manually, not as part of clang rolls) for use in the
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index c92d570..afc5a5d 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -219,6 +219,8 @@
     package_file = 'clang'
   elif package_name == 'clang-tidy':
     package_file = 'clang-tidy'
+  elif package_name == 'clang-libs':
+    package_file = 'clang-libs'
   elif package_name == 'objdump':
     package_file = 'llvmobjdump'
   elif package_name == 'translation_unit':
diff --git a/tools/mac/power/power_sampler/power_sampler_main.cc b/tools/mac/power/power_sampler/power_sampler_main.cc
index b60bf23..9250d2b5 100644
--- a/tools/mac/power/power_sampler/power_sampler_main.cc
+++ b/tools/mac/power/power_sampler/power_sampler_main.cc
@@ -196,12 +196,12 @@
     }
   }
 
-  std::unique_ptr<power_sampler::SamplingEventSource> event_source;
+  std::unique_ptr<power_metrics::SamplingEventSource> event_source;
   if (command_line.HasSwitch(kSwitchSampleOnNotification)) {
     event_source =
-        std::make_unique<power_sampler::IOPMPowerSourceSamplingEventSource>();
+        std::make_unique<power_metrics::IOPMPowerSourceSamplingEventSource>();
   } else {
-    event_source = std::make_unique<power_sampler::TimerSamplingEventSource>(
+    event_source = std::make_unique<power_metrics::TimerSamplingEventSource>(
         sampling_interval);
   }
 
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 325ffd2..5eb9ffc 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -31450,6 +31450,12 @@
   <int value="4" label="Regular User"/>
 </enum>
 
+<enum name="FastPairAccountKeyFailure">
+  <int value="0" label="Failed to find the Account Key GATT characteristic"/>
+  <int value="1"
+      label="Failed to write to the Account Key GATT characteristic"/>
+</enum>
+
 <enum name="FastPairEngagementFlowEvent">
   <int value="1" label="Discovery UI Shown"/>
   <int value="11" label="Discovery UI Dismissed By OS"/>
@@ -31462,6 +31468,44 @@
   <int value="1213" label="Pairing Failed: Error UI Dismissed By User"/>
 </enum>
 
+<enum name="FastPairPairFailure">
+  <int value="0" label="Failed to create a GATT connection to the device"/>
+  <int value="1" label="Failed to find the expected GATT service"/>
+  <int value="2" label="Timed out while starting discovery of GATT service"/>
+  <int value="3" label="Failed to retrieve the data encryptor"/>
+  <int value="4"
+      label="Failed to find the Key-based pairing GATT characteristic"/>
+  <int value="5" label="Failed to find the Passkey GATT characteristic"/>
+  <int value="6" label="Failed to find the Account Key GATT characteristic"/>
+  <int value="7"
+      label="Failed to start a notify session on the Key-based pairing GATT
+             characteristic"/>
+  <int value="8"
+      label="Failed to start a notify session on the Passkey GATT
+             characteristic"/>
+  <int value="9"
+      label="Timed out while waiting to start a notify session on the
+             Key-based pairing GATT characteristic"/>
+  <int value="10"
+      label="Timed out while waiting to start a notify session on the Passkey
+             pairing GATT characteristic"/>
+  <int value="11"
+      label="Failed to write to the Key-based pairing GATT characteristic"/>
+  <int value="12" label="Failed to write to the Passkey GATT characteristic"/>
+  <int value="13"
+      label="Timed out while waiting for the Key-based Pairing response"/>
+  <int value="14" label="Timed out while waiting for the Passkey response"/>
+  <int value="15" label="Failed to decrypt Key-based response message"/>
+  <int value="16" label="Incorrect Key-based response message type"/>
+  <int value="17" label="Failed to decrypt Passkey response message"/>
+  <int value="18" label="Incorrect Passkey response message type"/>
+  <int value="19" label="Passkeys did not match"/>
+  <int value="20"
+      label="Potential pairing device lost during Passkey exchange"/>
+  <int value="21" label="Failed to bond to discovered device"/>
+  <int value="22" label="Failed to bond to device via public address"/>
+</enum>
+
 <enum name="FastPairPairingMethod">
   <int value="0" label="Fast Pair Pairing"/>
   <int value="1" label="System UI Pairing"/>
@@ -37693,6 +37737,18 @@
   <int value="2" label="Not found"/>
 </enum>
 
+<enum name="FingerprintError">
+  <int value="0" label="Unknown error"/>
+  <int value="1" label="Hardware unavailable"/>
+  <int value="2" label="Unable to process"/>
+  <int value="3" label="Timeout"/>
+  <int value="4" label="No space available for a template"/>
+  <int value="5" label="Canceled"/>
+  <int value="6" label="Unable to remove record"/>
+  <int value="7" label="Hardware is locked"/>
+  <int value="8" label="No templates"/>
+</enum>
+
 <enum name="FingerprintRecordFormatVersion">
   <int value="0" label="None"/>
   <int value="1" label="Record format version without validation value"/>
@@ -58661,6 +58717,7 @@
   <int value="22" label="TestMessage"/>
   <int value="23" label="TailoredSecurityEnabled"/>
   <int value="24" label="VrServicesUpgrade"/>
+  <int value="26" label="ArCoreUpgrade"/>
 </enum>
 
 <enum name="MessageLoopProblems">
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml
index 1737514..c63a195 100644
--- a/tools/metrics/histograms/metadata/android/histograms.xml
+++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -82,6 +82,7 @@
 <variants name="MessageIdentifiers">
   <variant name=".AddToHomescreenIPH"/>
   <variant name=".AdsBlocked"/>
+  <variant name=".ArCoreUpgrade"/>
   <variant name=".AutoDarkWebContents"/>
   <variant name=".ChromeSurvey"/>
   <variant name=".DownloadProgress"/>
diff --git a/tools/metrics/histograms/metadata/bluetooth/histograms.xml b/tools/metrics/histograms/metadata/bluetooth/histograms.xml
index 869661c7..8c62c8a 100644
--- a/tools/metrics/histograms/metadata/bluetooth/histograms.xml
+++ b/tools/metrics/histograms/metadata/bluetooth/histograms.xml
@@ -189,6 +189,44 @@
 </histogram>
 
 <histogram
+    name="Bluetooth.ChromeOS.FastPair.AccountKeyFailure.{FastPairPairingProtocol}"
+    enum="FastPairAccountKeyFailure" expires_after="2022-09-20">
+  <owner>shanefitz@google.com</owner>
+  <owner>julietlevesque@google.com</owner>
+  <owner>chromeos-cross-device-eng@google.com</owner>
+  <summary>
+    Breaks down why a account key write attempt to a device failed (see
+    'Bluetooth.ChromeOS.FastPair.AccountKey.Result'). Suffixed by FastPair
+    pairing protocol type. Emitted on the OnWriteAccountKey event in the Fast
+    Pair flow.
+  </summary>
+  <token key="FastPairPairingProtocol">
+    <variant name="InitialPairingProtocol" summary="initial pairing protocol"/>
+    <variant name="RetroactivePairingProtocol"
+        summary="retroactive pairing protocol"/>
+  </token>
+</histogram>
+
+<histogram
+    name="Bluetooth.ChromeOS.FastPair.AccountKeyWrite.Result.{FastPairPairingProtocol}"
+    enum="BooleanSuccess" expires_after="2022-09-20">
+  <owner>shanefitz@google.com</owner>
+  <owner>julietlevesque@google.com</owner>
+  <owner>chromeos-cross-device-eng@google.com</owner>
+  <summary>
+    Records success or failure of writing an account key to a device. Emitted on
+    the OnPairFailure event and the OnDevicePaired event in the Fast Pair flow.
+  </summary>
+  <token key="FastPairPairingProtocol">
+    <variant name="InitialPairingProtocol" summary="initial pairing protocol"/>
+    <variant name="RetroactivePairingProtocol"
+        summary="retroactive pairing protocol"/>
+    <variant name="SubsequentPairingProtocol"
+        summary="subsequent pairing protocol"/>
+  </token>
+</histogram>
+
+<histogram
     name="Bluetooth.ChromeOS.FastPair.EngagementFunnel.Steps.{FastPairPairingProtocol}"
     enum="FastPairEngagementFlowEvent" expires_after="2022-09-20">
   <owner>shanefitz@google.com</owner>
@@ -207,6 +245,59 @@
   </token>
 </histogram>
 
+<histogram name="Bluetooth.ChromeOS.FastPair.KeyGenerationResult"
+    enum="BooleanSuccess" expires_after="2022-06-20">
+  <owner>shanefitz@google.com</owner>
+  <owner>julietlevesque@google.com</owner>
+  <owner>chromeos-cross-device-eng@google.com</owner>
+  <summary>
+    Records success or failure of key pair generation during the Fast Pair
+    pairing encryption process. Emitted following the creation of the data
+    encryptor.
+  </summary>
+</histogram>
+
+<histogram
+    name="Bluetooth.ChromeOS.FastPair.PairFailure.{FastPairPairingProtocol}"
+    enum="FastPairPairFailure" expires_after="2022-09-20">
+  <owner>shanefitz@google.com</owner>
+  <owner>julietlevesque@google.com</owner>
+  <owner>chromeos-cross-device-eng@google.com</owner>
+  <summary>
+    Breaks down why a pairing attempt to a device failed (see
+    'Bluetooth.ChromeOS.FastPair.Pairing.Result'). Suffixed by FastPair pairing
+    protocol type. Emitted on the OnPairFailure event in the Fast Pair flow.
+  </summary>
+  <token key="FastPairPairingProtocol">
+    <variant name="InitialPairingProtocol" summary="initial pairing protocol"/>
+    <variant name="RetroactivePairingProtocol"
+        summary="retroactive pairing protocol"/>
+    <variant name="SubsequentPairingProtocol"
+        summary="subsequent pairing protocol"/>
+  </token>
+</histogram>
+
+<histogram
+    name="Bluetooth.ChromeOS.FastPair.Pairing.Result.{FastPairPairingProtocol}"
+    enum="BooleanSuccess" expires_after="2022-09-20">
+  <owner>shanefitz@google.com</owner>
+  <owner>julietlevesque@google.com</owner>
+  <owner>chromeos-cross-device-eng@google.com</owner>
+  <summary>
+    Records success or failure of a pairing attempt (initiated in the UI) to a
+    device after the user elects to begin the pairing process on the UI. Emitted
+    on the OnPairFailure event and the OnDevicePaired event in the Fast Pair
+    flow.
+  </summary>
+  <token key="FastPairPairingProtocol">
+    <variant name="InitialPairingProtocol" summary="initial pairing protocol"/>
+    <variant name="RetroactivePairingProtocol"
+        summary="retroactive pairing protocol"/>
+    <variant name="SubsequentPairingProtocol"
+        summary="subsequent pairing protocol"/>
+  </token>
+</histogram>
+
 <histogram name="Bluetooth.ChromeOS.FastPair.PairingMethod"
     enum="FastPairPairingMethod" expires_after="2022-09-20">
   <owner>shanefitz@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/compositing/histograms.xml b/tools/metrics/histograms/metadata/compositing/histograms.xml
index a333246..c815f65e 100644
--- a/tools/metrics/histograms/metadata/compositing/histograms.xml
+++ b/tools/metrics/histograms/metadata/compositing/histograms.xml
@@ -177,13 +177,8 @@
   <owner>kylechar@chromium.org</owner>
   <summary>
     Time spent processing quads to see which can be replaced with overlays. This
-    is logged once per frame, when a frame should be drawn.
-
-    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.
+    is logged once per frame, when a frame should be drawn. Only reported for
+    platforms supporting high resolution clocks.
   </summary>
 </histogram>
 
@@ -344,6 +339,27 @@
   </summary>
 </histogram>
 
+<histogram name="Compositing.Display.DrmOverlayManager.TestPageFlipCount"
+    units="units" expires_after="2022-06-30">
+  <owner>khaslett@chromium.org</owner>
+  <owner>kylechar@chromium.org</owner>
+  <summary>
+    Logged zero or more times per frame, the number of times TestPageFlip is
+    called on the HardwareDisplayController.
+  </summary>
+</histogram>
+
+<histogram name="Compositing.Display.DrmOverlayManager.TestPageFlipUs"
+    units="microseconds" expires_after="2022-06-30">
+  <owner>khaslett@chromium.org</owner>
+  <owner>kylechar@chromium.org</owner>
+  <summary>
+    Logged zero or more times per frame, the duration of calling TestPageFlip on
+    the HardwareDisplayController. Only reported for platforms supporting high
+    resolution clocks.
+  </summary>
+</histogram>
+
 <histogram
     name="Compositing.Display.DrmOverlayManager.TotalTestBufferMemorySize"
     units="KB" expires_after="2020-09-01">
@@ -356,6 +372,18 @@
   </summary>
 </histogram>
 
+<histogram name="Compositing.Display.DrmThread.CheckOverlayCapabilitiesSyncUs"
+    units="microseconds" expires_after="2022-06-30">
+  <owner>khaslett@chromium.org</owner>
+  <owner>kylechar@chromium.org</owner>
+  <summary>
+    Logged zero or more times per frame, the duration of
+    DrmThread::CheckOverlayCapabilitiesSync(). This is the total time spent on
+    the DRM thread to check a set of overlay candidates. Only reported for
+    platforms supporting high resolution clocks.
+  </summary>
+</histogram>
+
 <histogram name="Compositing.Display.FlattenedRenderPassCount" units="units"
     expires_after="2022-04-24">
   <owner>backer@chromium.org</owner>
@@ -391,6 +419,29 @@
   </summary>
 </histogram>
 
+<histogram
+    name="Compositing.Display.OverlayProcessorUsingStrategy.CheckOverlaySupportCallCount"
+    units="units" expires_after="2022-06-30">
+  <owner>khaslett@chromium.org</owner>
+  <owner>kylechar@chromium.org</owner>
+  <summary>
+    This is logged once per frame, the number of times CheckOverlaySupport is
+    called this frame.
+  </summary>
+</histogram>
+
+<histogram
+    name="Compositing.Display.OverlayProcessorUsingStrategy.CheckOverlaySupportUs"
+    units="microseconds" expires_after="2022-06-30">
+  <owner>khaslett@chromium.org</owner>
+  <owner>kylechar@chromium.org</owner>
+  <summary>
+    Logged zero or more times per frame, the time spent checking if a set of
+    candidates can be promoted to overlay. Only reported for platforms
+    supporting high resolution clocks.
+  </summary>
+</histogram>
+
 <histogram name="Compositing.Display.VizDependencyResolvedToGpuStartedDrawUs"
     units="microseconds" expires_after="2022-06-12">
   <owner>vasilyt@chromium.org</owner>
@@ -777,6 +828,102 @@
   </summary>
 </histogram>
 
+<histogram base="true" name="CompositorLatency" units="microseconds"
+    expires_after="2022-05-22">
+  <owner>sadrul@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    Tracks the duration of various stages in the pipeline as a single frame goes
+    through the various stages in the compositor. This is reported for frames
+    that went through all the compositor stages in chromium, and was presented
+    to the user.
+
+    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 base="true" name="CompositorLatency.CompositorOnlyFrame"
+    units="microseconds" expires_after="2022-04-17">
+  <owner>sadrul@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    Tracks the duration of various stages in the pipeline as a single frame goes
+    through the various stages in the compositor in the cases that there is no
+    damage from main thread.
+
+    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="CompositorLatency.Diagnostic.PresentationTimeDeltaFromDeadline"
+    units="ms" expires_after="M87">
+  <obsolete>
+    Removed in M88.
+  </obsolete>
+  <owner>behdadb@chromium.org</owner>
+  <owner>sadrul@chromium.org</owner>
+  <summary>
+    For the compositor pipeline, measures how far the presentation time of a
+    compositor frame is from the frame deadline (i.e. vsync time).
+  </summary>
+</histogram>
+
+<histogram base="true" name="CompositorLatency.DroppedFrame"
+    units="microseconds" expires_after="2022-04-24">
+  <owner>sadrul@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    Tracks the duration of various stages in the pipeline as a single frame goes
+    through the various stages in the compositor. This is reported for frames
+    that the user did not see: this includes frames that are dropped in various
+    stages inside chromium, or even frames that went through all stages in
+    chromium, but ultimately was not presented to the user.
+
+    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 base="true" name="CompositorLatency.MissedDeadlineFrame"
+    units="microseconds" expires_after="2022-06-12">
+  <owner>sadrul@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    Tracks the duration of various stages in the pipeline as a single frame goes
+    through the various stages in the compositor. This is reported for frames
+    that went through all the compositor stages in chromium, and was presented
+    to the user, but were delayed and missed their deadline.
+
+    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="CompositorLatency.Type" enum="FrameReportType"
+    expires_after="2022-06-12">
+  <owner>sadrul@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    Whether frame is dropped or presented meeting or missing the deadline or is
+    a compositor only frame.
+  </summary>
+</histogram>
+
 <histogram name="Graphics.PresentationTimestamp.InvalidBeforeSwap" units="ms"
     expires_after="2022-05-01">
   <owner>sadrul@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/extensions/histograms.xml b/tools/metrics/histograms/metadata/extensions/histograms.xml
index d6854b1..8aceccd5 100644
--- a/tools/metrics/histograms/metadata/extensions/histograms.xml
+++ b/tools/metrics/histograms/metadata/extensions/histograms.xml
@@ -1256,7 +1256,7 @@
 </histogram>
 
 <histogram name="Extensions.Events.DispatchWithServiceWorkerBackground"
-    enum="ExtensionEvents" expires_after="2021-12-05">
+    enum="ExtensionEvents" expires_after="2022-12-05">
   <owner>lazyboy@chromium.org</owner>
   <owner>dbertoni@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/fingerprint/histograms.xml b/tools/metrics/histograms/metadata/fingerprint/histograms.xml
index 8ab4b3a5..3253643 100644
--- a/tools/metrics/histograms/metadata/fingerprint/histograms.xml
+++ b/tools/metrics/histograms/metadata/fingerprint/histograms.xml
@@ -22,6 +22,19 @@
 
 <histograms>
 
+<histogram name="Fingerprint.Auth.Error" enum="FingerprintError"
+    expires_after="2022-04-10">
+  <owner>patrykd@google.com</owner>
+  <owner>tomhughes@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
+  <owner>chromeos-fingerprint@google.com</owner>
+  <summary>
+    Tracks the error during fingerprint authentication session. It is recorded
+    every time authentication session (unlock screen, web auth, etc.) ends with
+    error.
+  </summary>
+</histogram>
+
 <histogram name="Fingerprint.Auth.ScanResult" enum="FingerprintScanResult"
     expires_after="2022-04-10">
   <owner>rsorokin@chromium.org</owner>
@@ -31,7 +44,7 @@
   <summary>
     Tracks the scan result during fingerprint authentication session. It is
     recorded every time user touches the fingerprint sensor while authenticating
-    (unlock screen, web auth, etc.).
+    (unlock screen, web auth, etc.) and session is not finished with error.
   </summary>
 </histogram>
 
diff --git a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
index cb728fa5..907bccb 100644
--- a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
@@ -11994,20 +11994,8 @@
   <affected-histogram name="PasswordManager.AccountsPerSite"/>
   <affected-histogram name="PasswordManager.AccountsPerSite.AutoGenerated"/>
   <affected-histogram name="PasswordManager.AccountsPerSite.UserCreated"/>
-  <affected-histogram
-      name="PasswordManager.AccountStore.BlacklistedSitesHiRes"/>
-  <affected-histogram
-      name="PasswordManager.AccountStore.TimesPasswordUsed.AutoGenerated"/>
-  <affected-histogram
-      name="PasswordManager.AccountStore.TimesPasswordUsed.Overall"/>
-  <affected-histogram
-      name="PasswordManager.AccountStore.TimesPasswordUsed.UserCreated"/>
   <affected-histogram name="PasswordManager.BlacklistedSites"/>
-  <affected-histogram name="PasswordManager.BlacklistedSitesHiRes"/>
   <affected-histogram name="PasswordManager.TimesGeneratedPasswordUsed"/>
-  <affected-histogram name="PasswordManager.TimesPasswordUsed.AutoGenerated"/>
-  <affected-histogram name="PasswordManager.TimesPasswordUsed.Overall"/>
-  <affected-histogram name="PasswordManager.TimesPasswordUsed.UserCreated"/>
   <affected-histogram name="PasswordManager.TotalAccounts.AutoGenerated"/>
   <affected-histogram name="PasswordManager.TotalAccounts.UserCreated"/>
 </histogram_suffixes>
@@ -12017,8 +12005,6 @@
   <suffix base="true" name="Overall" label=""/>
   <suffix base="true" name="UserCreated" label=""/>
   <affected-histogram name="PasswordManager.AccountsPerSite"/>
-  <affected-histogram name="PasswordManager.AccountStore.TimesPasswordUsed"/>
-  <affected-histogram name="PasswordManager.TimesPasswordUsed"/>
   <affected-histogram name="PasswordManager.TotalAccounts"/>
 </histogram_suffixes>
 
@@ -12208,17 +12194,6 @@
       name="PasswordManager.AccountsReusingPassword.FromHttpsRealm"/>
 </histogram_suffixes>
 
-<histogram_suffixes name="PasswordScheme" separator=".">
-  <suffix name="Android" label="The password is for an Android app."/>
-  <suffix name="Ftp" label="The scheme of the origin is FTP."/>
-  <suffix name="Http" label="The scheme of the origin is HTTP."/>
-  <suffix name="Https" label="The scheme of the origin is HTTPS."/>
-  <suffix name="Other" label="The scheme of the origin is something else."/>
-  <affected-histogram
-      name="PasswordManager.AccountStore.TotalAccountsHiRes.WithScheme"/>
-  <affected-histogram name="PasswordManager.TotalAccountsHiRes.WithScheme"/>
-</histogram_suffixes>
-
 <histogram_suffixes name="PasswordSecurityOrigin" separator=".">
   <suffix name="InsecureOrigin"
       label="The recording took place on an insecure origin."/>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml
index fbe2e85..c64f5dad 100644
--- a/tools/metrics/histograms/metadata/others/histograms.xml
+++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -3476,102 +3476,6 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="CompositorLatency" units="microseconds"
-    expires_after="2022-05-22">
-  <owner>sadrul@chromium.org</owner>
-  <owner>graphics-dev@chromium.org</owner>
-  <summary>
-    Tracks the duration of various stages in the pipeline as a single frame goes
-    through the various stages in the compositor. This is reported for frames
-    that went through all the compositor stages in chromium, and was presented
-    to the user.
-
-    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 base="true" name="CompositorLatency.CompositorOnlyFrame"
-    units="microseconds" expires_after="2022-04-17">
-  <owner>sadrul@chromium.org</owner>
-  <owner>graphics-dev@chromium.org</owner>
-  <summary>
-    Tracks the duration of various stages in the pipeline as a single frame goes
-    through the various stages in the compositor in the cases that there is no
-    damage from main thread.
-
-    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="CompositorLatency.Diagnostic.PresentationTimeDeltaFromDeadline"
-    units="ms" expires_after="M87">
-  <obsolete>
-    Removed in M88.
-  </obsolete>
-  <owner>behdadb@chromium.org</owner>
-  <owner>sadrul@chromium.org</owner>
-  <summary>
-    For the compositor pipeline, measures how far the presentation time of a
-    compositor frame is from the frame deadline (i.e. vsync time).
-  </summary>
-</histogram>
-
-<histogram base="true" name="CompositorLatency.DroppedFrame"
-    units="microseconds" expires_after="2022-04-24">
-  <owner>sadrul@chromium.org</owner>
-  <owner>graphics-dev@chromium.org</owner>
-  <summary>
-    Tracks the duration of various stages in the pipeline as a single frame goes
-    through the various stages in the compositor. This is reported for frames
-    that the user did not see: this includes frames that are dropped in various
-    stages inside chromium, or even frames that went through all stages in
-    chromium, but ultimately was not presented to the user.
-
-    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 base="true" name="CompositorLatency.MissedDeadlineFrame"
-    units="microseconds" expires_after="2022-06-12">
-  <owner>sadrul@chromium.org</owner>
-  <owner>graphics-dev@chromium.org</owner>
-  <summary>
-    Tracks the duration of various stages in the pipeline as a single frame goes
-    through the various stages in the compositor. This is reported for frames
-    that went through all the compositor stages in chromium, and was presented
-    to the user, but were delayed and missed their deadline.
-
-    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="CompositorLatency.Type" enum="FrameReportType"
-    expires_after="2022-06-12">
-  <owner>sadrul@chromium.org</owner>
-  <owner>graphics-dev@chromium.org</owner>
-  <summary>
-    Whether frame is dropped or presented meeting or missing the deadline or is
-    a compositor only frame.
-  </summary>
-</histogram>
-
 <histogram name="Conflicts.ConfirmedBadModules" units="modules"
     expires_after="2018-08-30">
   <owner>chrisha@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/password/histograms.xml b/tools/metrics/histograms/metadata/password/histograms.xml
index b16cdee..f30db13 100644
--- a/tools/metrics/histograms/metadata/password/histograms.xml
+++ b/tools/metrics/histograms/metadata/password/histograms.xml
@@ -45,6 +45,15 @@
   <variant name="LocalProfile"/>
 </variants>
 
+<variants name="Scheme">
+  <variant name=""/>
+  <variant name=".Android" summary="The password is for an Android app."/>
+  <variant name=".Ftp" summary="The scheme of the origin is FTP."/>
+  <variant name=".Http" summary="The scheme of the origin is HTTP."/>
+  <variant name=".Https" summary="The scheme of the origin is HTTPS."/>
+  <variant name=".Other" summary="The scheme of the origin is something else."/>
+</variants>
+
 <histogram name="KeyboardAccessory.AccessoryActionImpression"
     enum="AccessoryAction" expires_after="2022-04-17">
   <owner>fhorschig@chromium.org</owner>
@@ -478,19 +487,6 @@
   </summary>
 </histogram>
 
-<histogram base="true"
-    name="PasswordManager.AccountStore.BlacklistedSitesHiRes" units="sites"
-    expires_after="2022-05-01">
-  <owner>mamir@chromium.org</owner>
-  <owner>treib@chromium.org</owner>
-  <owner>vasilii@chromium.org</owner>
-  <summary>
-    The total number of sites that the user has blacklisted in the password
-    manager's account-scoped store. Recorded by iterating over stored passwords
-    once per run of Chrome.
-  </summary>
-</histogram>
-
 <histogram name="PasswordManager.AccountStore.EmptyUsernames.CountInDatabase"
     units="units" expires_after="M95">
   <obsolete>
@@ -516,36 +512,6 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="PasswordManager.AccountStore.TimesPasswordUsed"
-    units="PasswordUses" expires_after="2022-05-31">
-  <owner>battre@chromium.org</owner>
-  <owner>mamir@chromium.org</owner>
-  <owner>treib@chromium.org</owner>
-  <summary>
-    The number of times each saved password from the account-scoped storage has
-    been used to log in. Split by whether created by the user or generated by
-    Chrome, and further by whether the user used sync with custom passphrase or
-    not. Recorded by iterating over stored passwords once per browser run, soon
-    after startup.
-  </summary>
-</histogram>
-
-<histogram base="true"
-    name="PasswordManager.AccountStore.TotalAccountsHiRes.WithScheme"
-    units="accounts" expires_after="2022-05-31">
-  <owner>battre@chromium.org</owner>
-  <owner>mamir@chromium.org</owner>
-  <owner>treib@chromium.org</owner>
-  <owner>vasilii@chromium.org</owner>
-  <summary>
-    The number of accounts stored in the password manager's account-scoped store
-    (across all sites) for origins with the scheme (e.g., HTTP, HTTPS, FTP) as
-    given in the histogram suffix. For each scheme, the count is recorded once
-    per browser start-up. (In case of multiple profiles, the counts are for the
-    profile that first has a WebContents created.)
-  </summary>
-</histogram>
-
 <histogram name="PasswordManager.AccountStoreBlocklistedEntriesAfterOptIn"
     units="credentials" expires_after="2022-05-31">
   <owner>treib@chromium.org</owner>
@@ -918,16 +884,6 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="PasswordManager.BlacklistedSitesHiRes"
-    units="sites" expires_after="2022-05-01">
-  <owner>kazinova@google.com</owner>
-  <owner>vasilii@chromium.org</owner>
-  <summary>
-    The total number of sites that the user has blacklisted. Recorded by
-    iterating over stored passwords once per run of Chrome.
-  </summary>
-</histogram>
-
 <histogram name="PasswordManager.BubbleSuppression.AccountsInStatisticsTable"
     units="accounts" expires_after="2022-05-31">
   <owner>kazinova@google.com</owner>
@@ -1172,33 +1128,18 @@
   </summary>
 </histogram>
 
-<histogram name="PasswordManager.CompromisedCredentials.CountLeaked"
+<histogram name="PasswordManager.CompromisedCredentials.{Issue}"
     units="credentials" expires_after="2022-06-12">
   <owner>vasilii@chromium.org</owner>
   <owner>vsemeniuk@google.com</owner>
-  <summary>
-    Count of known leaked credentials in the database on start-up.
-  </summary>
-</histogram>
-
-<histogram
-    name="PasswordManager.CompromisedCredentials.CountLeakedAfterBulkCheck"
-    units="credentials" expires_after="2022-06-12">
-  <owner>vasilii@chromium.org</owner>
-  <owner>vsemeniuk@google.com</owner>
-  <summary>
-    Count of known leaked credentials in the database on start-up if the
-    password bulk check was executed at least once.
-  </summary>
-</histogram>
-
-<histogram name="PasswordManager.CompromisedCredentials.CountPhished"
-    units="credentials" expires_after="2022-04-17">
-  <owner>vasilii@chromium.org</owner>
-  <owner>vsemeniuk@google.com</owner>
-  <summary>
-    Count of known phished credentials in the database on start-up.
-  </summary>
+  <summary>Count of known {Issue}. Recorded on start-up.</summary>
+  <token key="Issue">
+    <variant name="CountLeaked" summary="leaked credentials in the database"/>
+    <variant name="CountLeakedAfterBulkCheck"
+        summary="leaked credentials in the database if password bulk check
+                 was executed at least once"/>
+    <variant name="CountPhished" summary="phished credentials in the database"/>
+  </token>
 </histogram>
 
 <histogram name="PasswordManager.CredentialEditError"
@@ -2300,6 +2241,10 @@
     <variant name="GetLoginsAsync"
         summary="retrieve logins filtered by signon realm from"/>
     <variant name="RemoveLoginAsync" summary="remove a login from"/>
+    <variant name="RemoveLoginsByURLAndTimeAsync"
+        summary="remove logins filtered by URL and creation time from"/>
+    <variant name="RemoveLoginsCreatedBetweenAsync"
+        summary="remove logins filtered by creation time from"/>
     <variant name="UpdateLoginAsync" summary="update a login in"/>
   </token>
 </histogram>
@@ -2328,6 +2273,12 @@
         summary="succeeded in retrieving logins filtered by signon realm from"/>
     <variant name="RemoveLoginAsync"
         summary="RemoveLoginAsync() succeeded in removing a login from"/>
+    <variant name="RemoveLoginsByURLAndTimeAsync"
+        summary="RemoveLoginsByURLAndTimeAsync() succeeded in removing logins
+                 filtered by URL and creation time from"/>
+    <variant name="RemoveLoginsCreatedBetweenAsync"
+        summary="RemoveLoginsCreatedBetweenAsync() succeeded in removing
+                 logins filtered by creation time from"/>
     <variant name="UpdateLoginAsync"
         summary="UpdateLoginAsync() succeeded in updating a login in"/>
   </token>
@@ -2345,9 +2296,9 @@
   <token key="Function">
     <variant name=""/>
     <variant name=".AddLoginAsync" summary="for AddLoginAsync"/>
-    <variant name=".FillMatchingLoginsAsync"
-        summary="for FillMatchingLoginsAsync"/>
     <variant name=".GetAllLoginsAsync" summary="for GetAllLoginsAsync"/>
+    <variant name=".GetAutofillableLoginsAsync"
+        summary="for GetAutofillableLoginsAsync"/>
     <variant name=".GetLoginsAsync" summary="for GetLoginsAsync"/>
     <variant name=".RemoveLoginAsync" summary="for RemoveLoginAsync"/>
     <variant name=".UpdateLoginAsync" summary="for UpdateLoginAsync"/>
@@ -2367,9 +2318,9 @@
     <variant name=""
         summary="retrieving/adding/updating or removing logins from"/>
     <variant name=".AddLoginAsync" summary="adding a login to"/>
-    <variant name=".FillMatchingLoginsAsync"
-        summary="filling matching logins from"/>
     <variant name=".GetAllLoginsAsync" summary="retrieving all logins from"/>
+    <variant name=".GetAutofillableLoginsAsync"
+        summary="retrieving autofillable logins from"/>
     <variant name=".GetLoginsAsync"
         summary="retrieving logins filtered by signon realm from"/>
     <variant name=".RemoveLoginAsync" summary="removing a login from"/>
@@ -2749,32 +2700,6 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="PasswordManager.TimesPasswordUsed"
-    units="PasswordUses" expires_after="2022-04-28">
-  <owner>kazinova@google.com</owner>
-  <owner>battre@chromium.org</owner>
-  <summary>
-    The number of times each saved password from the profile-scoped storage has
-    been used to log in. Split by whether created by the user or generated by
-    Chrome, and further by whether the user used sync with custom passphrase or
-    not. Recorded by iterating over stored passwords once per run. This
-    information is persisted and synced.
-  </summary>
-</histogram>
-
-<histogram base="true" name="PasswordManager.TotalAccountsHiRes.WithScheme"
-    units="accounts" expires_after="2022-04-17">
-  <owner>battre@chromium.org</owner>
-  <owner>vasilii@chromium.org</owner>
-  <summary>
-    The number of accounts stored in the password manager's profile-scoped store
-    (across all sites) for origins with the scheme (e.g., HTTP, HTTPS, FTP) as
-    given in the histogram suffix. For each scheme, the count is recorded once
-    per browser start-up. (In case of multiple profiles, the counts are for the
-    profile that first has a WebContents created.)
-  </summary>
-</histogram>
-
 <histogram name="PasswordManager.TouchToFill.CredentialIndex" units="index"
     expires_after="2022-04-17">
   <owner>ioanap@chromium.org</owner>
@@ -2978,6 +2903,86 @@
   <summary>Logs the loading time for the gstatic file request.</summary>
 </histogram>
 
+<histogram
+    name="PasswordManager.{Store}BlacklistedSitesHiRes{CustomPassphraseStatus}"
+    units="sites" expires_after="2022-05-01">
+  <owner>kazinova@google.com</owner>
+  <owner>mamir@chromium.org</owner>
+  <owner>treib@chromium.org</owner>
+  <owner>vasilii@chromium.org</owner>
+  <summary>
+    The total number of sites that the user has blacklisted in the password
+    manager's {Store}. Recorded by iterating over stored passwords once per run
+    of Chrome.
+  </summary>
+  <token key="Store">
+    <variant name="" summary="for profile-scoped store"/>
+    <variant name="AccountStore." summary="for account-scoped store"/>
+  </token>
+  <token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
+</histogram>
+
+<histogram name="PasswordManager.{Store}TimesPasswordUsed" units="PasswordUses"
+    expires_after="2022-05-31">
+  <owner>kazinova@google.com</owner>
+  <owner>battre@chromium.org</owner>
+  <owner>mamir@chromium.org</owner>
+  <owner>treib@chromium.org</owner>
+  <summary>
+    The number of times each saved password from the {Store} has been used to
+    log in. Split by whether created by the user or generated by Chrome, and
+    further by whether the user used sync with custom passphrase or not.
+    Recorded by iterating over stored passwords once per browser run, soon after
+    startup.
+  </summary>
+  <token key="Store">
+    <variant name="" summary="for profile-scoped store"/>
+    <variant name="AccountStore." summary="for account-scoped store"/>
+  </token>
+</histogram>
+
+<histogram
+    name="PasswordManager.{Store}TimesPasswordUsed.{PasswordType}{CustomPassphraseStatus}"
+    units="PasswordUses" expires_after="2022-05-31">
+  <owner>kazinova@google.com</owner>
+  <owner>battre@chromium.org</owner>
+  <owner>mamir@chromium.org</owner>
+  <owner>treib@chromium.org</owner>
+  <summary>
+    The number of times each saved password from the {Store} has been used to
+    log in. Split by whether created by the user or generated by Chrome, and
+    further by whether the user used sync with custom passphrase or not.
+    Recorded by iterating over stored passwords once per browser run, soon after
+    startup.
+  </summary>
+  <token key="Store">
+    <variant name="" summary="for profile-scoped store"/>
+    <variant name="AccountStore." summary="for account-scoped store"/>
+  </token>
+  <token key="PasswordType" variants="PasswordType"/>
+  <token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
+</histogram>
+
+<histogram name="PasswordManager.{Store}TotalAccountsHiRes.WithScheme{Scheme}"
+    units="accounts" expires_after="2022-05-31">
+  <owner>battre@chromium.org</owner>
+  <owner>mamir@chromium.org</owner>
+  <owner>treib@chromium.org</owner>
+  <owner>vasilii@chromium.org</owner>
+  <summary>
+    The number of accounts stored in the password manager's {Store} (across all
+    sites) for origins with the scheme (e.g., HTTP, HTTPS, FTP) as given in the
+    histogram suffix. For each scheme, the count is recorded once per browser
+    start-up. (In case of multiple profiles, the counts are for the profile that
+    first has a WebContents created.)
+  </summary>
+  <token key="Store">
+    <variant name="" summary="for profile-scoped store"/>
+    <variant name="AccountStore." summary="for account-scoped store"/>
+  </token>
+  <token key="Scheme" variants="Scheme"/>
+</histogram>
+
 <histogram name="PasswordManager.{Store}{Metric}" units="units"
     expires_after="2022-04-24">
   <owner>kazinova@google.com</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 6fedd2b6..e56ee27 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,8 +5,8 @@
             "remote_path": "perfetto_binaries/trace_processor_shell/linux_arm/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell"
         },
         "win": {
-            "hash": "6cd3704685eb81ad27d4246180ee629c1c6d9488",
-            "remote_path": "perfetto_binaries/trace_processor_shell/win/15e3467297c3877d090e92940a04b085318ab933/trace_processor_shell.exe"
+            "hash": "868d915a84fb4661b6fcb2c374cc270ba5578370",
+            "remote_path": "perfetto_binaries/trace_processor_shell/win/9c674c8ed6844fb88b545a8df9282a9405f8a072/trace_processor_shell.exe"
         },
         "mac": {
             "hash": "0b89b9b7de51b70e2218120061b62f9011bfcd08",
diff --git a/tools/perf/core/results_dashboard.py b/tools/perf/core/results_dashboard.py
index 84a998a3..6a44ce48 100755
--- a/tools/perf/core/results_dashboard.py
+++ b/tools/perf/core/results_dashboard.py
@@ -62,7 +62,7 @@
   args = ['luci-auth', 'token']
   p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   if p.wait() == 0:
-    return p.stdout.read()
+    return p.stdout.read().strip()
   else:
     raise RuntimeError(
         'Error generating authentication token.\nStdout: %s\nStder:%s' %
diff --git a/tools/traffic_annotation/scripts/auditor/auditor.py b/tools/traffic_annotation/scripts/auditor/auditor.py
index 621ad77..de11a6d 100755
--- a/tools/traffic_annotation/scripts/auditor/auditor.py
+++ b/tools/traffic_annotation/scripts/auditor/auditor.py
@@ -1932,8 +1932,12 @@
 
     # Update annotations.xml if everything else is OK and the auditor is not
     # in test-only mode.
-    if not self.test_only and not errors:
-      self.auditor.exporter.save_annotations_xml()
+    if not self.test_only:
+      if not errors:
+        self.auditor.exporter.save_annotations_xml()
+      else:
+        logger.warning("Not updating {} due to errors in annotations.".format(
+            Exporter.ANNOTATIONS_XML_PATH.relative_to(SRC_DIR)))
 
     # Postprocess errors and dump to stdout.
     if errors:
diff --git a/ui/aura/client/aura_constants.cc b/ui/aura/client/aura_constants.cc
index 0a51cd7..bea5795 100644
--- a/ui/aura/client/aura_constants.cc
+++ b/ui/aura/client/aura_constants.cc
@@ -79,6 +79,7 @@
 DEFINE_UI_CLASS_PROPERTY_KEY(ui::WindowShowState,
                              kShowStateKey,
                              ui::SHOW_STATE_DEFAULT)
+DEFINE_UI_CLASS_PROPERTY_KEY(bool, kIsRestoringKey, false)
 DEFINE_UI_CLASS_PROPERTY_KEY(bool, kSkipImeProcessing, false)
 DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::u16string, kTitleKey, nullptr)
 DEFINE_UI_CLASS_PROPERTY_KEY(int, kTopViewInset, 0)
diff --git a/ui/aura/client/aura_constants.h b/ui/aura/client/aura_constants.h
index b3ed5b0..932f168 100644
--- a/ui/aura/client/aura_constants.h
+++ b/ui/aura/client/aura_constants.h
@@ -160,6 +160,15 @@
 AURA_EXPORT extern const WindowProperty<ui::WindowShowState>* const
     kShowStateKey;
 
+// A property key to indicate if a window is currently being restored. Normally
+// restoring a window equals to changing window's state to normal window state.
+// This property will be used in ash to decide if we should use window state
+// restore stack to decide which window state the window should restore back to,
+// and it's not unnecessarily always the normal window state. As an example,
+// unminimizing a window will restore the window back to its pre-minimized
+// window state.
+AURA_EXPORT extern const WindowProperty<bool>* const kIsRestoringKey;
+
 // A property key to store key event dispatch policy. The default value is
 // false, which means IME receives a key event in PREDISPATCH phace before a
 // window receives it. If it's true, a window receives a key event before IME.
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
index 9018d3b..24d5869 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
@@ -311,6 +311,7 @@
 <translation id="3691184985318546178">Singhalais</translation>
 <translation id="3726463242007121105">Impossible d'ouvrir cet appareil, car son système de fichiers n'est pas compatible.</translation>
 <translation id="3727148787322499904">La modification de ce paramètre aura des conséquences sur tous les réseaux partagés</translation>
+<translation id="3737576078404241332">Retirer de la barre latérale</translation>
 <translation id="3741243925913727067">Sauvegarder les photos et les vidéos de votre appareil de stockage multimédia dans Google Disque.</translation>
 <translation id="3749289110408117711">Nom du fichier</translation>
 <translation id="3780536599611287598">Vous n'êtes pas autorisé à déplacer des fichiers dans « <ph name="FOLDER_NAME" /> ».</translation>
@@ -371,6 +372,7 @@
 <translation id="4326142238881453352">Botaniste</translation>
 <translation id="4326192123064055915">Café</translation>
 <translation id="4336032328163998280">La copie a échoué. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="4340491671558548972">Ajouter à la barre latérale</translation>
 <translation id="4348495354623233847">Kurde sorani avec clavier arabe</translation>
 <translation id="4363958938297989186">Russe avec clavier phonétique</translation>
 <translation id="4364327530094270451">Melon</translation>
diff --git a/ui/chromeos/user_activity_power_manager_notifier.cc b/ui/chromeos/user_activity_power_manager_notifier.cc
index 87f780ae..4911083 100644
--- a/ui/chromeos/user_activity_power_manager_notifier.cc
+++ b/ui/chromeos/user_activity_power_manager_notifier.cc
@@ -73,7 +73,7 @@
 }
 
 void UserActivityPowerManagerNotifier::OnAuthScanDone(
-    device::mojom::ScanResult scan_result,
+    const device::mojom::FingerprintMessagePtr msg,
     const base::flat_map<std::string, std::vector<std::string>>& matches) {
   MaybeNotifyUserActivity(power_manager::USER_ACTIVITY_OTHER);
 }
diff --git a/ui/chromeos/user_activity_power_manager_notifier.h b/ui/chromeos/user_activity_power_manager_notifier.h
index 0e7bf68..3b5cdced 100644
--- a/ui/chromeos/user_activity_power_manager_notifier.h
+++ b/ui/chromeos/user_activity_power_manager_notifier.h
@@ -48,7 +48,7 @@
 
   // fingerprint::mojom::FingerprintObserver:
   void OnAuthScanDone(
-      device::mojom::ScanResult scan_result,
+      const device::mojom::FingerprintMessagePtr msg,
       const base::flat_map<std::string, std::vector<std::string>>& matches)
       override;
   void OnSessionFailed() override;
diff --git a/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc b/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
index 348cba7..6e339c7 100644
--- a/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
+++ b/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
@@ -10,6 +10,7 @@
 
 #include "base/files/platform_file.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/timer/elapsed_timer.h"
 #include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/gfx/geometry/size_conversions.h"
 #include "ui/gfx/gpu_fence.h"
@@ -109,6 +110,7 @@
     reusable_buffers.push_back(plane.buffer);
 
   size_t total_allocated_memory_size = 0;
+  int test_page_flip_count = 0;
 
   for (size_t i = 0; i < params.size(); ++i) {
     if (!params[i].overlay_handled) {
@@ -125,7 +127,23 @@
                           /*gpu_fence=*/nullptr);
     test_list.push_back(std::move(plane));
 
-    if (buffer && controller->TestPageFlip(test_list)) {
+    bool result = false;
+    if (buffer) {
+      test_page_flip_count++;
+      base::ElapsedTimer timer;
+
+      result = controller->TestPageFlip(test_list);
+
+      auto time = timer.Elapsed();
+      static constexpr base::TimeDelta kMinTime = base::Microseconds(1);
+      static constexpr base::TimeDelta kMaxTime = base::Milliseconds(10);
+      static constexpr int kTimeBuckets = 50;
+      UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+          "Compositing.Display.DrmOverlayManager.TestPageFlipUs", time,
+          kMinTime, kMaxTime, kTimeBuckets);
+    }
+
+    if (result) {
       returns[i] = OVERLAY_STATUS_ABLE;
     } else {
       // If test failed here, platform cannot support this configuration
@@ -142,6 +160,9 @@
   UMA_HISTOGRAM_MEMORY_KB(
       "Compositing.Display.DrmOverlayManager.TotalTestBufferMemorySize",
       total_allocated_memory_size / 1024);
+  UMA_HISTOGRAM_COUNTS_100(
+      "Compositing.Display.DrmOverlayManager.TestPageFlipCount",
+      test_page_flip_count);
 
   return returns;
 }
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.cc b/ui/ozone/platform/drm/gpu/drm_thread.cc
index 30640b6..805e82b8 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread.cc
@@ -12,8 +12,10 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/message_loop/message_pump_type.h"
+#include "base/metrics/histogram_macros.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
+#include "base/timer/elapsed_timer.h"
 #include "base/trace_event/trace_event.h"
 #include "ui/display/types/display_mode.h"
 #include "ui/display/types/display_snapshot.h"
@@ -316,6 +318,7 @@
     const OverlaySurfaceCandidateList& overlays,
     std::vector<OverlayStatus>* result) {
   TRACE_EVENT0("drm,hwoverlays", "DrmThread::CheckOverlayCapabilitiesSync");
+  base::ElapsedTimer timer;
 
   DrmWindow* window = screen_manager_->GetWindow(widget);
   if (!window) {
@@ -324,6 +327,14 @@
     return;
   }
   *result = window->TestPageFlip(overlays);
+
+  base::TimeDelta time = timer.Elapsed();
+  static constexpr base::TimeDelta kMinTime = base::Microseconds(1);
+  static constexpr base::TimeDelta kMaxTime = base::Milliseconds(10);
+  static constexpr int kTimeBuckets = 50;
+  UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+      "Compositing.Display.DrmThread.CheckOverlayCapabilitiesSyncUs", time,
+      kMinTime, kMaxTime, kTimeBuckets);
 }
 
 void DrmThread::GetDeviceCursor(
diff --git a/ui/strings/translations/ui_strings_fr-CA.xtb b/ui/strings/translations/ui_strings_fr-CA.xtb
index 9554b8a..24ce174 100644
--- a/ui/strings/translations/ui_strings_fr-CA.xtb
+++ b/ui/strings/translations/ui_strings_fr-CA.xtb
@@ -105,6 +105,7 @@
 <translation id="4565377596337484307">Masquer le mot de passe</translation>
 <translation id="4588090240171750605">Défilement vers la droite</translation>
 <translation id="4724120544754982507">Centre de notification, <ph name="UNREAD_NOTIFICATION_COUNT" /> notifications non lues</translation>
+<translation id="4746179598275229723">Épinglage de l'extension annulée</translation>
 <translation id="4788285488841504513">{MONTHS,plural, =1{Un mois restant}one{# mois restant}other{# mois restants}}</translation>
 <translation id="4888938634149558681">Faire un appel</translation>
 <translation id="4968171027979920686">{SECONDS,plural, =1{1 seconde}one{# seconde}other{# secondes}}</translation>
@@ -130,6 +131,7 @@
 <translation id="5906667377645263094">{SECONDS,plural, =1{1 seconde restante}one{# seconde restante}other{# secondes restantes}}</translation>
 <translation id="5941711191222866238">Réduire</translation>
 <translation id="5943826764092288734">{HOURS,plural, =1{1 heure}one{# heure}other{# heures}}</translation>
+<translation id="6007284015834422026">Extension épinglée</translation>
 <translation id="6040143037577758943">Fermer</translation>
 <translation id="6117103120090651229">Bouton central</translation>
 <translation id="6129953537138746214">Espace</translation>
diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc
index 70809b7..3d70ff878 100644
--- a/ui/views/widget/native_widget_aura.cc
+++ b/ui/views/widget/native_widget_aura.cc
@@ -710,7 +710,7 @@
 
 void NativeWidgetAura::Restore() {
   if (window_)
-    window_->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
+    wm::Restore(window_);
 }
 
 void NativeWidgetAura::SetFullscreen(bool fullscreen,
diff --git a/ui/webui/resources/cr_elements/cr_view_manager/cr_view_manager.js b/ui/webui/resources/cr_elements/cr_view_manager/cr_view_manager.js
index a366aca..950ecbe 100644
--- a/ui/webui/resources/cr_elements/cr_view_manager/cr_view_manager.js
+++ b/ui/webui/resources/cr_elements/cr_view_manager/cr_view_manager.js
@@ -19,9 +19,25 @@
   });
 }
 
+/**
+ * @param {!Element} element
+ * @return {!Element}
+ */
+function getEffectiveView(element) {
+  return element.matches('cr-lazy-render') ? element.get() : element;
+}
+
+/**
+ * @param {!Element} element
+ * @param {!string} eventType
+ */
+function dispatchCustomEvent(element, eventType) {
+  element.dispatchEvent(
+      new CustomEvent(eventType, {bubbles: true, composed: true}));
+}
+
 /** @type {!Map<string, function(!Element): !Promise>} */
 const viewAnimations = new Map();
-viewAnimations.set('no-animation', () => Promise.resolve());
 viewAnimations.set('fade-in', element => {
   // The call to animate can have 2 methods of passing the keyframes, however as
   // of the current closure version, only one of them is supported. See
@@ -69,16 +85,18 @@
    */
   exit_(element, animation) {
     const animationFunction = viewAnimations.get(animation);
-    assert(animationFunction);
-
     element.classList.remove('active');
     element.classList.add('closing');
-    element.dispatchEvent(
-        new CustomEvent('view-exit-start', {bubbles: true, composed: true}));
-    return animationFunction(element).then(function() {
+    dispatchCustomEvent(element, 'view-exit-start');
+    if (!animationFunction) {
+      // Nothing to animate. Immediately resolve.
       element.classList.remove('closing');
-      element.dispatchEvent(
-          new CustomEvent('view-exit-finish', {bubbles: true, composed: true}));
+      dispatchCustomEvent(element, 'view-exit-finish');
+      return Promise.resolve();
+    }
+    return animationFunction(element).then(() => {
+      element.classList.remove('closing');
+      dispatchCustomEvent(element, 'view-exit-finish');
     });
   }
 
@@ -90,16 +108,16 @@
    */
   enter_(view, animation) {
     const animationFunction = viewAnimations.get(animation);
-    assert(animationFunction);
-
-    const effectiveView = view.matches('cr-lazy-render') ? view.get() : view;
-
+    const effectiveView = getEffectiveView(view);
     effectiveView.classList.add('active');
-    effectiveView.dispatchEvent(
-        new CustomEvent('view-enter-start', {bubbles: true, composed: true}));
+    dispatchCustomEvent(effectiveView, 'view-enter-start');
+    if (!animationFunction) {
+      // Nothing to animate. Immediately resolve.
+      dispatchCustomEvent(effectiveView, 'view-enter-finish');
+      return Promise.resolve();
+    }
     return animationFunction(effectiveView).then(() => {
-      effectiveView.dispatchEvent(new CustomEvent(
-          'view-enter-finish', {bubbles: true, composed: true}));
+      dispatchCustomEvent(effectiveView, 'view-enter-finish');
     });
   }
 
diff --git a/ui/wm/core/window_util.cc b/ui/wm/core/window_util.cc
index 19ed217..8df91937 100644
--- a/ui/wm/core/window_util.cc
+++ b/ui/wm/core/window_util.cc
@@ -110,6 +110,9 @@
     }
     window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
   } else {
+    // TODO: change to call into Restore() function and remove
+    // kPreFullscreenShowStateKey key.
+
     ui::WindowShowState pre_fullscreen_show_state =
         window->GetProperty(aura::client::kPreFullscreenShowStateKey);
     DCHECK_NE(pre_fullscreen_show_state, ui::SHOW_STATE_MINIMIZED);
@@ -126,7 +129,15 @@
   window->SetProperty(aura::client::kShowStateKey, state);
 }
 
+void Restore(aura::Window* window) {
+  window->SetProperty(aura::client::kIsRestoringKey, true);
+  window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
+  window->ClearProperty(aura::client::kIsRestoringKey);
+}
+
 void Unminimize(aura::Window* window) {
+  // TODO: change to call into Restore() function and remove
+  // kPreMinimizedShowStateKey key.
   DCHECK_EQ(window->GetProperty(aura::client::kShowStateKey),
             ui::SHOW_STATE_MINIMIZED);
   window->SetProperty(
diff --git a/ui/wm/core/window_util.h b/ui/wm/core/window_util.h
index 6c8bd30..33b0b96 100644
--- a/ui/wm/core/window_util.h
+++ b/ui/wm/core/window_util.h
@@ -21,7 +21,7 @@
 class Layer;
 class LayerOwner;
 class LayerTreeOwner;
-}
+}  // namespace ui
 
 namespace wm {
 
@@ -39,6 +39,12 @@
 WM_CORE_EXPORT void SetWindowState(aura::Window* window,
                                    ui::WindowShowState state);
 
+// Restores the window state from the current state to its previous applicable
+// state. As an example, if the current state is minimized, Restore() will
+// change the window's sate to its applicable pre-minimized state, which is the
+// same as calling Unminimize() function.
+WM_CORE_EXPORT void Restore(aura::Window* window);
+
 // Changes a window's state to its pre-minimized state.
 WM_CORE_EXPORT void Unminimize(aura::Window* window);
 
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/ExternalNavigationTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/ExternalNavigationTest.java
index cab8908..0c2685a 100644
--- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/ExternalNavigationTest.java
+++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/ExternalNavigationTest.java
@@ -66,8 +66,7 @@
     // The package is not specified in the intent that gets created when navigating to the special
     // scheme.
     private static final String INTENT_TO_DUMMY_ACTIVITY_FOR_SPECIAL_SCHEME_PACKAGE = null;
-    private static final String INTENT_TO_SELF_DATA_CONTENT =
-            "play.google.com/store/apps/details?id=com.facebook.katana/";
+    private static final String INTENT_TO_SELF_DATA_CONTENT = "example.test";
     private static final String INTENT_TO_SELF_SCHEME = "https";
     private static final String INTENT_TO_SELF_DATA_STRING =
             INTENT_TO_SELF_SCHEME + "://" + INTENT_TO_SELF_DATA_CONTENT;
@@ -118,6 +117,8 @@
             NON_RESOLVABLE_INTENT + "S.browser_fallback_url="
             + android.net.Uri.encode(mRedirectToIntentToSelfURL) + ";end";
 
+    private static final String SPECIALIZED_DATA_URL = "data://externalnavtest";
+
     private class IntentInterceptor implements InstrumentationActivity.IntentInterceptor {
         public Intent mLastIntent;
         private CallbackHelper mCallbackHelper = new CallbackHelper();
@@ -1554,4 +1555,22 @@
         // The current URL should not have changed.
         Assert.assertEquals(url, mActivityTestRule.getCurrentDisplayUrl());
     }
+
+    /**
+     * Verifies that for an intent with multiple matching apps that weblayer can handle, we avoid
+     * the disambiguation dialog and stay in weblayer.
+     */
+    @Test
+    @SmallTest
+    public void testAvoidDisambiguationDialog() throws Throwable {
+        InstrumentationActivity activity = mActivityTestRule.launchShellWithUrl(ABOUT_BLANK_URL);
+        IntentInterceptor intentInterceptor = new IntentInterceptor();
+        activity.setIntentInterceptor(intentInterceptor);
+
+        // The data URL isn't valid and will fail the navigation.
+        mActivityTestRule.navigateAndWaitForFailure(SPECIALIZED_DATA_URL);
+
+        Assert.assertNull(intentInterceptor.mLastIntent);
+        Assert.assertEquals(SPECIALIZED_DATA_URL, mActivityTestRule.getCurrentDisplayUrl());
+    }
 }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/ExternalNavigationDelegateImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/ExternalNavigationDelegateImpl.java
index 967dab2..72c3b39 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/ExternalNavigationDelegateImpl.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/ExternalNavigationDelegateImpl.java
@@ -6,16 +6,14 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.ResolveInfo;
 import android.os.RemoteException;
 
 import androidx.annotation.Nullable;
 
 import org.chromium.base.Callback;
 import org.chromium.base.Function;
-import org.chromium.base.PackageManagerUtils;
+import org.chromium.components.embedder_support.util.UrlUtilities;
 import org.chromium.components.external_intents.ExternalNavigationDelegate;
-import org.chromium.components.external_intents.ExternalNavigationDelegate.StartActivityIfNeededResult;
 import org.chromium.components.external_intents.ExternalNavigationParams;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.content_public.browser.WebContents;
@@ -82,6 +80,12 @@
     }
 
     @Override
+    public boolean shouldAvoidDisambiguationDialog(Intent intent) {
+        // Don't show the disambiguation dialog if WebLayer can handle the intent.
+        return UrlUtilities.isAcceptedScheme(intent.toUri(0));
+    }
+
+    @Override
     public void loadUrlIfPossible(LoadUrlParams loadUrlParams) {
         if (!hasValidTab()) return;
         mTab.loadUrl(loadUrlParams);
@@ -217,13 +221,8 @@
         return false;
     }
 
-    /**
-     * Resolve the default external handler of an intent.
-     * @return Whether the default external handler is found.
-     */
-    private boolean hasDefaultHandler(Intent intent) {
-        ResolveInfo info = PackageManagerUtils.resolveActivity(intent, 0);
-        if (info == null) return false;
-        return info.match != 0;
+    @Override
+    public boolean maybeSetTargetPackage(Intent intent) {
+        return false;
     }
 }
diff --git a/weblayer/shell/android/shell_apk/AndroidManifest.xml b/weblayer/shell/android/shell_apk/AndroidManifest.xml
index 35457b3..bd8cb598 100644
--- a/weblayer/shell/android/shell_apk/AndroidManifest.xml
+++ b/weblayer/shell/android/shell_apk/AndroidManifest.xml
@@ -62,9 +62,18 @@
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
-                <data android:scheme="http" />
-                <data android:scheme="https" />
-                <data android:scheme="about" />
+                <data android:scheme="data" />
+                <data android:host="externalnavtest" />
+                <category android:name="android.intent.category.BROWSABLE" />
+            </intent-filter>
+        </activity>
+        <activity android:name="org.chromium.weblayer.test.ExternalNavigationTest$SecondDummyActivity"
+                  android:exported="true" >
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="data" />
+                <data android:host="externalnavtest" />
                 <category android:name="android.intent.category.BROWSABLE" />
             </intent-filter>
         </activity>
diff --git a/weblayer/test/data/link_with_intent_to_package_in_new_tab.html b/weblayer/test/data/link_with_intent_to_package_in_new_tab.html
index 5fc9711..f5741bc 100644
--- a/weblayer/test/data/link_with_intent_to_package_in_new_tab.html
+++ b/weblayer/test/data/link_with_intent_to_package_in_new_tab.html
@@ -9,7 +9,7 @@
     Click to intent to the package specified in the URL hash in a new tab
   </a>
   <script type="text/javascript">
-    document.getElementById('link').href = 'intent://play.google.com/store/apps/details?id=com.facebook.katana/#Intent;scheme=https;action=android.intent.action.VIEW;package=' + window.location.href.split('#')[1] + ';end';
+    document.getElementById('link').href = 'intent://example.test#Intent;scheme=https;action=android.intent.action.VIEW;package=' + window.location.href.split('#')[1] + ';end';
   </script>
 </body>
 </html>
diff --git a/weblayer/test/data/link_with_intent_to_package_in_same_tab.html b/weblayer/test/data/link_with_intent_to_package_in_same_tab.html
index 0a9a240..c6b8592 100644
--- a/weblayer/test/data/link_with_intent_to_package_in_same_tab.html
+++ b/weblayer/test/data/link_with_intent_to_package_in_same_tab.html
@@ -9,7 +9,7 @@
     Click to intent to the package specified in the URL hash in this tab
   </a>
   <script type="text/javascript">
-    document.getElementById('link').href = 'intent://play.google.com/store/apps/details?id=com.facebook.katana/#Intent;scheme=https;action=android.intent.action.VIEW;package=' + window.location.href.split('#')[1] + ';end';
+    document.getElementById('link').href = 'intent://example.test#Intent;scheme=https;action=android.intent.action.VIEW;package=' + window.location.href.split('#')[1] + ';end';
   </script>
 </body>
 </html>
diff --git a/weblayer/test/data/page_that_intents_to_package_on_load.html b/weblayer/test/data/page_that_intents_to_package_on_load.html
index 4875c03..e46dfe1 100644
--- a/weblayer/test/data/page_that_intents_to_package_on_load.html
+++ b/weblayer/test/data/page_that_intents_to_package_on_load.html
@@ -9,7 +9,7 @@
     Click to intent to the package specified in the URL hash in this tab
   </a>
 <script>
-    document.getElementById('link').href = 'intent://play.google.com/store/apps/details?id=com.facebook.katana/#Intent;scheme=https;action=android.intent.action.VIEW;package=' + window.location.href.split('#')[1] + ';end';
+    document.getElementById('link').href = 'intent://example.test#Intent;scheme=https;action=android.intent.action.VIEW;package=' + window.location.href.split('#')[1] + ';end';
     window.addEventListener("load", function() {
       document.getElementById("link").click();
     }, false);